@amsterdam/design-system-react 2.2.0 → 3.0.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.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  # Amsterdam Design System: React components
4
4
 
5
5
  This package provides all React components from the [Amsterdam Design System](https://designsystem.amsterdam).
6
- Use it to compose pages in your website or application.
6
+ Use it to compose pages in your websites.
7
7
 
8
8
  ## Introduction
9
9
 
@@ -56,5 +56,5 @@ export declare const Column: import("react").ForwardRefExoticComponent<{
56
56
  gap?: ColumnGap;
57
57
  } & HTMLAttributes<HTMLElement> & {
58
58
  children?: import("react").ReactNode | undefined;
59
- } & import("react").RefAttributes<unknown>>;
59
+ } & import("react").RefAttributes<any>>;
60
60
  export {};
@@ -38,6 +38,6 @@ export type GridProps = {
38
38
  * @see {@link https://designsystem.amsterdam/?path=/docs/components-layout-grid--docs Grid docs at Amsterdam Design System}
39
39
  */
40
40
  export declare const Grid: import("react").ForwardRefExoticComponent<GridProps & import("react").RefAttributes<any>> & {
41
- Cell: import("react").ForwardRefExoticComponent<import("./GridCell").GridCellProps & import("react").RefAttributes<unknown>>;
41
+ Cell: import("react").ForwardRefExoticComponent<import("./GridCell").GridCellProps & import("react").RefAttributes<any>>;
42
42
  };
43
43
  export {};
@@ -21,5 +21,5 @@ export type GridCellProps = {
21
21
  /** The HTML tag to use. */
22
22
  as?: GridCellTag;
23
23
  } & PropsWithChildren<HTMLAttributes<HTMLElement>> & (GridCellSpanAllProp | GridCellSpanAndStartProps);
24
- export declare const GridCell: import("react").ForwardRefExoticComponent<GridCellProps & import("react").RefAttributes<unknown>>;
24
+ export declare const GridCell: import("react").ForwardRefExoticComponent<GridCellProps & import("react").RefAttributes<any>>;
25
25
  export {};
@@ -2,13 +2,18 @@
2
2
  * @license EUPL-1.2+
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
- import type { ForwardRefExoticComponent, RefAttributes, SVGProps } from 'react';
6
- export type LogoBrand = 'amsterdam' | 'ggd-amsterdam' | 'museum-weesp' | 'stadsarchief' | 'stadsbank-van-lening' | 'vga-verzekeringen';
5
+ import type { ComponentType, SVGProps } from 'react';
6
+ export declare const logoBrands: readonly ["amsterdam", "ggd-amsterdam", "museum-weesp", "stadsarchief", "stadsbank-van-lening", "vga-verzekeringen"];
7
+ export type LogoBrand = (typeof logoBrands)[number];
7
8
  export type LogoProps = {
8
- /** The name of the brand for which to display the logo. */
9
- brand?: LogoBrand;
9
+ /** The name of the brand for which to display the logo, or configuration for a custom logo. */
10
+ brand?: LogoBrand | LogoBrandConfig;
10
11
  } & SVGProps<SVGSVGElement>;
12
+ export type LogoBrandConfig = {
13
+ label: string;
14
+ svg: ComponentType<SVGProps<SVGSVGElement>>;
15
+ };
11
16
  /**
12
17
  * @see {@link https://designsystem.amsterdam/?path=/docs/components-media-logo--docs Logo docs at Amsterdam Design System}
13
18
  */
14
- export declare const Logo: ForwardRefExoticComponent<Omit<LogoProps, "ref"> & RefAttributes<SVGSVGElement>>;
19
+ export declare const Logo: import("react").ForwardRefExoticComponent<Omit<LogoProps, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
package/dist/Logo/Logo.js CHANGED
@@ -2,38 +2,46 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef } from 'react';
4
4
  import { LogoAmsterdam, LogoGgdAmsterdam, LogoMuseumWeesp, LogoStadsarchief, LogoStadsbankVanLening, LogoVgaVerzekeringen, } from './brand';
5
+ export const logoBrands = [
6
+ 'amsterdam',
7
+ 'ggd-amsterdam',
8
+ 'museum-weesp',
9
+ 'stadsarchief',
10
+ 'stadsbank-van-lening',
11
+ 'vga-verzekeringen',
12
+ ];
5
13
  const logoConfig = {
6
14
  amsterdam: {
7
15
  label: 'Gemeente Amsterdam logo',
8
- logo: LogoAmsterdam,
16
+ svg: LogoAmsterdam,
9
17
  },
10
18
  'ggd-amsterdam': {
11
19
  label: 'GGD Amsterdam logo',
12
- logo: LogoGgdAmsterdam,
20
+ svg: LogoGgdAmsterdam,
13
21
  },
14
22
  'museum-weesp': {
15
23
  label: 'Gemeente Amsterdam Museum Weesp logo',
16
- logo: LogoMuseumWeesp,
24
+ svg: LogoMuseumWeesp,
17
25
  },
18
26
  stadsarchief: {
19
27
  label: 'Gemeente Amsterdam Stadsarchief logo',
20
- logo: LogoStadsarchief,
28
+ svg: LogoStadsarchief,
21
29
  },
22
30
  'stadsbank-van-lening': {
23
31
  label: 'Gemeente Amsterdam Stadsbank van Lening logo',
24
- logo: LogoStadsbankVanLening,
32
+ svg: LogoStadsbankVanLening,
25
33
  },
26
34
  'vga-verzekeringen': {
27
35
  label: 'Gemeente Amsterdam VGA Verzekeringen logo',
28
- logo: LogoVgaVerzekeringen,
36
+ svg: LogoVgaVerzekeringen,
29
37
  },
30
38
  };
31
39
  /**
32
40
  * @see {@link https://designsystem.amsterdam/?path=/docs/components-media-logo--docs Logo docs at Amsterdam Design System}
33
41
  */
34
42
  export const Logo = forwardRef(({ 'aria-label': ariaLabel, brand = 'amsterdam', className, ...restProps }, ref) => {
35
- const LogoComponent = logoConfig[brand].logo;
36
- const logoLabel = logoConfig[brand].label;
37
- return (_jsx(LogoComponent, { ...restProps, "aria-label": ariaLabel || logoLabel, className: clsx('ams-logo', className), ref: ref }));
43
+ const config = typeof brand === 'string' ? logoConfig[brand] : brand;
44
+ const { label, svg: LogoComponent } = config;
45
+ return (_jsx(LogoComponent, { ...restProps, "aria-label": ariaLabel || label, className: clsx('ams-logo', className), ref: ref }));
38
46
  });
39
47
  Logo.displayName = 'Logo';
@@ -10,7 +10,10 @@ export type PageFooterProps = PropsWithChildren<HTMLAttributes<HTMLElement>>;
10
10
  export declare const PageFooter: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLElement> & {
11
11
  children?: import("react").ReactNode | undefined;
12
12
  } & import("react").RefAttributes<HTMLElement>> & {
13
- Menu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
13
+ Menu: import("react").ForwardRefExoticComponent<{
14
+ heading?: string;
15
+ headingLevel?: import("..").HeadingProps["level"];
16
+ } & HTMLAttributes<HTMLUListElement> & {
14
17
  children?: import("react").ReactNode | undefined;
15
18
  } & import("react").RefAttributes<HTMLUListElement>>;
16
19
  MenuLink: import("react").ForwardRefExoticComponent<import("react").AnchorHTMLAttributes<HTMLAnchorElement> & {
@@ -3,7 +3,32 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  import type { HTMLAttributes, PropsWithChildren } from 'react';
6
- export type PageFooterMenuProps = PropsWithChildren<HTMLAttributes<HTMLUListElement>>;
7
- export declare const PageFooterMenu: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & {
6
+ import type { HeadingProps } from '../Heading';
7
+ export type PageFooterMenuProps = {
8
+ /**
9
+ * Describes the menu for users of assistive technology.
10
+ * The heading gets visually hidden – sighted users can infer the meaning of the menu from its appearance.
11
+ * @default Over deze website
12
+ */
13
+ heading?: string;
14
+ /**
15
+ * The hierarchical level of the Footer Menu’s Heading within the document.
16
+ * The default value is 2. This will almost always be correct – but verify this yourself.
17
+ */
18
+ headingLevel?: HeadingProps['level'];
19
+ } & PropsWithChildren<HTMLAttributes<HTMLUListElement>>;
20
+ export declare const PageFooterMenu: import("react").ForwardRefExoticComponent<{
21
+ /**
22
+ * Describes the menu for users of assistive technology.
23
+ * The heading gets visually hidden – sighted users can infer the meaning of the menu from its appearance.
24
+ * @default Over deze website
25
+ */
26
+ heading?: string;
27
+ /**
28
+ * The hierarchical level of the Footer Menu’s Heading within the document.
29
+ * The default value is 2. This will almost always be correct – but verify this yourself.
30
+ */
31
+ headingLevel?: HeadingProps["level"];
32
+ } & HTMLAttributes<HTMLUListElement> & {
8
33
  children?: import("react").ReactNode | undefined;
9
34
  } & import("react").RefAttributes<HTMLUListElement>>;
@@ -1,5 +1,9 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef } from 'react';
4
- export const PageFooterMenu = forwardRef(({ children, className, ...restProps }, ref) => (_jsx("ul", { ...restProps, className: clsx('ams-page-footer__menu', className), ref: ref, children: children })));
4
+ import { getHeadingTag } from '../Heading/getHeadingTag';
5
+ export const PageFooterMenu = forwardRef(({ children, className, heading = 'Over deze website', headingLevel = 2, ...restProps }, ref) => {
6
+ const HeadingTag = getHeadingTag(headingLevel);
7
+ return (_jsxs(_Fragment, { children: [_jsx(HeadingTag, { className: "ams-visually-hidden", children: heading }), _jsx("ul", { ...restProps, className: clsx('ams-page-footer__menu', className), ref: ref, children: children })] }));
8
+ });
5
9
  PageFooterMenu.displayName = 'PageFooter.Menu';
@@ -4,21 +4,26 @@
4
4
  */
5
5
  import type { AnchorHTMLAttributes, ComponentType, HTMLAttributes, ReactNode } from 'react';
6
6
  import type { LogoBrand } from '../Logo';
7
+ import type { LogoBrandConfig } from '../Logo/Logo';
7
8
  export type PageHeaderProps = {
8
9
  /** The name of the application. */
9
10
  brandName?: string;
10
11
  /** The accessible name of the logo. */
11
12
  logoAccessibleName?: string;
12
13
  /** The name of the brand for which to display the logo. */
13
- logoBrand?: LogoBrand;
14
+ logoBrand?: LogoBrand | LogoBrandConfig;
14
15
  /** The url for the link on the logo. */
15
16
  logoLink?: string;
16
17
  /** The React component to use for the logo link. */
17
18
  logoLinkComponent?: ComponentType<AnchorHTMLAttributes<HTMLAnchorElement>>;
18
19
  /** The accessible text for the link on the logo. */
19
20
  logoLinkTitle?: string;
20
- /** The text for the menu button. */
21
+ /** The visible text for the menu button. */
21
22
  menuButtonText?: string;
23
+ /** The text for screen readers when the button hides the menu. */
24
+ menuButtonTextForHide?: string;
25
+ /** The text for screen readers when the button shows the menu. */
26
+ menuButtonTextForShow?: string;
22
27
  /** A slot for the menu items. Use PageHeader.MenuLink here. */
23
28
  menuItems?: ReactNode;
24
29
  /** The accessible label for the navigation section. */
@@ -35,15 +40,19 @@ export declare const PageHeader: import("react").ForwardRefExoticComponent<{
35
40
  /** The accessible name of the logo. */
36
41
  logoAccessibleName?: string;
37
42
  /** The name of the brand for which to display the logo. */
38
- logoBrand?: LogoBrand;
43
+ logoBrand?: LogoBrand | LogoBrandConfig;
39
44
  /** The url for the link on the logo. */
40
45
  logoLink?: string;
41
46
  /** The React component to use for the logo link. */
42
47
  logoLinkComponent?: ComponentType<AnchorHTMLAttributes<HTMLAnchorElement>>;
43
48
  /** The accessible text for the link on the logo. */
44
49
  logoLinkTitle?: string;
45
- /** The text for the menu button. */
50
+ /** The visible text for the menu button. */
46
51
  menuButtonText?: string;
52
+ /** The text for screen readers when the button hides the menu. */
53
+ menuButtonTextForHide?: string;
54
+ /** The text for screen readers when the button shows the menu. */
55
+ menuButtonTextForShow?: string;
47
56
  /** A slot for the menu items. Use PageHeader.MenuLink here. */
48
57
  menuItems?: ReactNode;
49
58
  /** The accessible label for the navigation section. */
@@ -8,7 +8,7 @@ import { PageHeaderGridCellNarrowWindowOnly } from './PageHeaderGridCellNarrowWi
8
8
  import { PageHeaderMenuIcon } from './PageHeaderMenuIcon';
9
9
  import { PageHeaderMenuLink } from './PageHeaderMenuLink';
10
10
  const LogoLinkContent = ({ brandName, logoAccessibleName, logoBrand, }) => (_jsxs(_Fragment, { children: [_jsx("span", { className: clsx(logoBrand === 'amsterdam' && Boolean(brandName) && 'ams-page-header__logo-container'), children: _jsx(Logo, { "aria-label": logoAccessibleName, brand: logoBrand }) }), brandName && (_jsx("span", { "aria-hidden": "true", className: "ams-page-header__brand-name", children: brandName }))] }));
11
- const PageHeaderRoot = forwardRef(({ brandName, children, className, logoAccessibleName, logoBrand = 'amsterdam', logoLink = '/', logoLinkComponent = (props) => _jsx("a", { ...props }), logoLinkTitle = `Ga naar de homepage${brandName ? ` van ${brandName}` : ''}`, menuButtonText = 'Menu', menuItems, navigationLabel = 'Hoofdnavigatie', noMenuButtonOnWideWindow, ...restProps }, ref) => {
11
+ const PageHeaderRoot = forwardRef(({ brandName, children, className, logoAccessibleName, logoBrand = 'amsterdam', logoLink = '/', logoLinkComponent = (props) => _jsx("a", { ...props }), logoLinkTitle = `Ga naar de homepage${brandName ? ` van ${brandName}` : ''}`, menuButtonText = 'Menu', menuButtonTextForHide = 'Verberg navigatiemenu', menuButtonTextForShow = 'Laat navigatiemenu zien', menuItems, navigationLabel = 'Hoofdnavigatie', noMenuButtonOnWideWindow, ...restProps }, ref) => {
12
12
  const [open, setOpen] = useState(false);
13
13
  const Link = logoLinkComponent;
14
14
  const hasMegaMenu = Boolean(children);
@@ -19,7 +19,8 @@ const PageHeaderRoot = forwardRef(({ brandName, children, className, logoAccessi
19
19
  setOpen(false);
20
20
  }
21
21
  }, [isWideWindow]);
22
- return (_jsxs("header", { ...restProps, className: clsx('ams-page-header', className), ref: ref, children: [_jsxs(Link, { className: "ams-page-header__logo-link", href: logoLink, children: [_jsx(LogoLinkContent, { brandName: brandName, logoAccessibleName: logoAccessibleName, logoBrand: logoBrand }), _jsx("span", { className: "ams-visually-hidden", children: ` ${logoLinkTitle}` })] }), (hasMegaMenu || menuItems) && (_jsxs("nav", { "aria-labelledby": "primary-navigation", className: "ams-page-header__navigation", children: [_jsx("h2", { "aria-hidden": true, className: "ams-visually-hidden", id: "primary-navigation", children: navigationLabel }), _jsx("div", { "aria-hidden": true, className: "ams-page-header__logo-link ams-page-header__logo-link--hidden", hidden: true, 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 }))] }))] }));
22
+ return (_jsxs("header", { ...restProps, className: clsx('ams-page-header', className), ref: ref, children: [_jsxs(Link, { className: "ams-page-header__logo-link", href: logoLink, children: [_jsx(LogoLinkContent, { brandName: brandName, logoAccessibleName: logoAccessibleName, logoBrand: logoBrand }), _jsx("span", { className: "ams-visually-hidden", children: ` ${logoLinkTitle}` })] }), (hasMegaMenu || menuItems) && (_jsxs("nav", { "aria-labelledby": "primary-navigation", className: "ams-page-header__navigation", children: [_jsx("h2", { "aria-hidden": true, className: "ams-visually-hidden", id: "primary-navigation", children: navigationLabel }), _jsx("div", { "aria-hidden": true, className: "ams-page-header__logo-link ams-page-header__logo-link--hidden", hidden: true, children: _jsx(LogoLinkContent, { brandName: brandName, logoBrand: logoBrand }) }), _jsxs("ul", { className: "ams-page-header__menu", children: [menuItems, hasMegaMenu && (_jsx("li", { className: clsx('ams-page-header__mega-menu-button-item', noMenuButtonOnWideWindow && 'ams-page-header__mega-menu-button-item--hide-on-wide-window'), hidden // Hide the list item containing the menu button until its CSS loads. If it doesn't load, the menu will always be visible.
23
+ : true, 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", { "aria-hidden": "true", className: "ams-page-header__mega-menu-button-label", children: menuButtonText }), _jsx("span", { className: "ams-visually-hidden", children: open ? menuButtonTextForHide : menuButtonTextForShow }), _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 }))] }))] }));
23
24
  });
24
25
  PageHeaderRoot.displayName = 'PageHeader';
25
26
  /**
@@ -2,5 +2,6 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef } from 'react';
4
4
  import { Grid } from '../Grid';
5
- export const PageHeaderGridCellNarrowWindowOnly = forwardRef(({ children, className, ...restProps }, ref) => (_jsx(Grid.Cell, { ...restProps, className: clsx('ams-page-header__grid-cell-narrow-window-only', className), ref: ref, children: children })));
5
+ export const PageHeaderGridCellNarrowWindowOnly = forwardRef(({ children, className, ...restProps }, ref) => (_jsx(Grid.Cell, { ...restProps, className: clsx('ams-page-header__grid-cell-narrow-window-only', className), hidden // Hide until its CSS loads; this cell duplicates the non-fixed links in the Page Header Menu.
6
+ : true, ref: ref, children: children })));
6
7
  PageHeaderGridCellNarrowWindowOnly.displayName = 'PageHeader.GridCellNarrowWindowOnly';
@@ -3,7 +3,7 @@
3
3
  * Copyright (c) 2021 Robbert Broersma
4
4
  * Copyright Gemeente Amsterdam
5
5
  */
6
- import type { HTMLAttributes, PropsWithChildren } from 'react';
6
+ import type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';
7
7
  export type ParagraphProps = {
8
8
  /** Changes the text colour for readability on a dark background. */
9
9
  color?: 'inverse';
@@ -19,5 +19,5 @@ export declare const Paragraph: import("react").ForwardRefExoticComponent<{
19
19
  /** The size of the text. */
20
20
  size?: "small" | "large";
21
21
  } & HTMLAttributes<HTMLParagraphElement> & {
22
- children?: import("react").ReactNode | undefined;
22
+ children?: ReactNode | undefined;
23
23
  } & import("react").RefAttributes<HTMLParagraphElement>>;
@@ -1,8 +1,15 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { clsx } from 'clsx';
3
3
  import { forwardRef } from 'react';
4
+ const wrapChildren = (size, children) => {
5
+ if (size === 'large')
6
+ return _jsx("b", { className: "ams-paragraph__b", children: children });
7
+ if (size === 'small')
8
+ return _jsx("small", { className: "ams-paragraph__small", children: children });
9
+ return children;
10
+ };
4
11
  /**
5
12
  * @see {@link https://designsystem.amsterdam/?path=/docs/components-text-paragraph--docs Paragraph docs at Amsterdam Design System}
6
13
  */
7
- export const Paragraph = forwardRef(({ children, className, color, size, ...restProps }, ref) => (_jsx("p", { className: clsx('ams-paragraph', color && `ams-paragraph--${color}`, size && `ams-paragraph--${size}`, className), ref: ref, ...restProps, children: children })));
14
+ export const Paragraph = forwardRef(({ children, className, color, size, ...restProps }, ref) => (_jsx("p", { className: clsx('ams-paragraph', color && `ams-paragraph--${color}`, size && `ams-paragraph--${size}`, className), ref: ref, ...restProps, children: wrapChildren(size, children) })));
8
15
  Paragraph.displayName = 'Paragraph';
package/dist/Row/Row.d.ts CHANGED
@@ -66,5 +66,5 @@ export declare const Row: import("react").ForwardRefExoticComponent<{
66
66
  wrap?: boolean;
67
67
  } & HTMLAttributes<HTMLElement> & {
68
68
  children?: import("react").ReactNode | undefined;
69
- } & import("react").RefAttributes<unknown>>;
69
+ } & import("react").RefAttributes<any>>;
70
70
  export {};
@@ -23,5 +23,5 @@ export declare const Spotlight: import("react").ForwardRefExoticComponent<{
23
23
  color?: SpotlightColor;
24
24
  } & HTMLAttributes<HTMLElement> & {
25
25
  children?: import("react").ReactNode | undefined;
26
- } & import("react").RefAttributes<unknown>>;
26
+ } & import("react").RefAttributes<any>>;
27
27
  export {};
@@ -3,9 +3,9 @@
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
5
  export declare const BREAKPOINTS: {
6
- medium: string;
7
- wide: string;
6
+ readonly medium: "37.5rem";
7
+ readonly wide: "72.5rem";
8
8
  };
9
- type useIsAfterBreakpointProps = 'medium' | 'wide';
10
- declare const useIsAfterBreakpoint: (breakpoint: useIsAfterBreakpointProps) => boolean;
9
+ type Breakpoint = keyof typeof BREAKPOINTS;
10
+ declare const useIsAfterBreakpoint: (breakpoint: Breakpoint) => boolean;
11
11
  export default useIsAfterBreakpoint;
@@ -2,7 +2,7 @@
2
2
  * @license EUPL-1.2+
3
3
  * Copyright Gemeente Amsterdam
4
4
  */
5
- import { useLayoutEffect, useState } from 'react';
5
+ import { useEffect, useState } from 'react';
6
6
  // TODO: we should set the breakpoint in JS somewhere and render this and the sass variables from that
7
7
  export const BREAKPOINTS = {
8
8
  medium: '37.5rem',
@@ -10,19 +10,18 @@ export const BREAKPOINTS = {
10
10
  };
11
11
  const useIsAfterBreakpoint = (breakpoint) => {
12
12
  const [matches, setMatches] = useState(false);
13
- useLayoutEffect(() => {
13
+ useEffect(() => {
14
14
  // Check for window object to avoid SSR issues
15
- if (breakpoint && typeof window !== 'undefined') {
16
- const media = window.matchMedia(`(min-width: ${BREAKPOINTS[breakpoint]})`);
17
- if (media.matches !== matches) {
18
- setMatches(media.matches);
19
- }
20
- const listener = () => setMatches(media.matches);
21
- window.addEventListener('resize', listener);
22
- return () => window.removeEventListener('resize', listener);
23
- }
24
- return undefined;
25
- }, [matches, breakpoint]);
15
+ if (typeof window === 'undefined')
16
+ return undefined;
17
+ const query = `(min-width: ${BREAKPOINTS[breakpoint]})`;
18
+ const media = window.matchMedia(query);
19
+ const listener = () => setMatches(media.matches);
20
+ // Set initial state
21
+ setMatches(media.matches);
22
+ media.addEventListener('change', listener);
23
+ return () => media.removeEventListener('change', listener);
24
+ }, [breakpoint]);
26
25
  return matches;
27
26
  };
28
27
  export default useIsAfterBreakpoint;
package/dist/index.cjs.js CHANGED
@@ -661,6 +661,17 @@ CardHeading.displayName = 'Card.Heading';
661
661
  var _excluded$1l = ["children", "className", "color", "size"];
662
662
  function ownKeys$1u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
663
663
  function _objectSpread$1u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1u(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
664
+ var wrapChildren = function wrapChildren(size, children) {
665
+ if (size === 'large') return jsxRuntime.jsx("b", {
666
+ className: "ams-paragraph__b",
667
+ children: children
668
+ });
669
+ if (size === 'small') return jsxRuntime.jsx("small", {
670
+ className: "ams-paragraph__small",
671
+ children: children
672
+ });
673
+ return children;
674
+ };
664
675
  /**
665
676
  * @see {@link https://designsystem.amsterdam/?path=/docs/components-text-paragraph--docs Paragraph docs at Amsterdam Design System}
666
677
  */
@@ -674,7 +685,7 @@ var Paragraph = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
674
685
  className: clsx.clsx('ams-paragraph', color && "ams-paragraph--".concat(color), size && "ams-paragraph--".concat(size), className),
675
686
  ref: ref
676
687
  }, restProps), {}, {
677
- children: children
688
+ children: wrapChildren(size, children)
678
689
  }));
679
690
  });
680
691
  Paragraph.displayName = 'Paragraph';
@@ -2107,27 +2118,27 @@ function _objectSpread$O(e) { for (var r = 1; r < arguments.length; r++) { var t
2107
2118
  var logoConfig = {
2108
2119
  amsterdam: {
2109
2120
  label: 'Gemeente Amsterdam logo',
2110
- logo: LogoAmsterdam
2121
+ svg: LogoAmsterdam
2111
2122
  },
2112
2123
  'ggd-amsterdam': {
2113
2124
  label: 'GGD Amsterdam logo',
2114
- logo: LogoGgdAmsterdam
2125
+ svg: LogoGgdAmsterdam
2115
2126
  },
2116
2127
  'museum-weesp': {
2117
2128
  label: 'Gemeente Amsterdam Museum Weesp logo',
2118
- logo: LogoMuseumWeesp
2129
+ svg: LogoMuseumWeesp
2119
2130
  },
2120
2131
  stadsarchief: {
2121
2132
  label: 'Gemeente Amsterdam Stadsarchief logo',
2122
- logo: LogoStadsarchief
2133
+ svg: LogoStadsarchief
2123
2134
  },
2124
2135
  'stadsbank-van-lening': {
2125
2136
  label: 'Gemeente Amsterdam Stadsbank van Lening logo',
2126
- logo: LogoStadsbankVanLening
2137
+ svg: LogoStadsbankVanLening
2127
2138
  },
2128
2139
  'vga-verzekeringen': {
2129
2140
  label: 'Gemeente Amsterdam VGA Verzekeringen logo',
2130
- logo: LogoVgaVerzekeringen
2141
+ svg: LogoVgaVerzekeringen
2131
2142
  }
2132
2143
  };
2133
2144
  /**
@@ -2139,10 +2150,11 @@ var Logo = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2139
2150
  brand = _ref$brand === void 0 ? 'amsterdam' : _ref$brand,
2140
2151
  className = _ref.className,
2141
2152
  restProps = _objectWithoutProperties(_ref, _excluded$M);
2142
- var LogoComponent = logoConfig[brand].logo;
2143
- var logoLabel = logoConfig[brand].label;
2153
+ var config = typeof brand === 'string' ? logoConfig[brand] : brand;
2154
+ var label = config.label,
2155
+ LogoComponent = config.svg;
2144
2156
  return jsxRuntime.jsx(LogoComponent, _objectSpread$O(_objectSpread$O({}, restProps), {}, {
2145
- "aria-label": ariaLabel || logoLabel,
2157
+ "aria-label": ariaLabel || label,
2146
2158
  className: clsx.clsx('ams-logo', className),
2147
2159
  ref: ref
2148
2160
  }));
@@ -2303,18 +2315,28 @@ var Page = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2303
2315
  });
2304
2316
  Page.displayName = 'Page';
2305
2317
 
2306
- var _excluded$E = ["children", "className"];
2318
+ var _excluded$E = ["children", "className", "heading", "headingLevel"];
2307
2319
  function ownKeys$G(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2308
2320
  function _objectSpread$G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$G(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2309
2321
  var PageFooterMenu = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2310
2322
  var children = _ref.children,
2311
2323
  className = _ref.className,
2324
+ _ref$heading = _ref.heading,
2325
+ heading = _ref$heading === void 0 ? 'Over deze website' : _ref$heading,
2326
+ _ref$headingLevel = _ref.headingLevel,
2327
+ headingLevel = _ref$headingLevel === void 0 ? 2 : _ref$headingLevel,
2312
2328
  restProps = _objectWithoutProperties(_ref, _excluded$E);
2313
- return jsxRuntime.jsx("ul", _objectSpread$G(_objectSpread$G({}, restProps), {}, {
2314
- className: clsx.clsx('ams-page-footer__menu', className),
2315
- ref: ref,
2316
- children: children
2317
- }));
2329
+ var HeadingTag = getHeadingTag(headingLevel);
2330
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, {
2331
+ children: [jsxRuntime.jsx(HeadingTag, {
2332
+ className: "ams-visually-hidden",
2333
+ children: heading
2334
+ }), jsxRuntime.jsx("ul", _objectSpread$G(_objectSpread$G({}, restProps), {}, {
2335
+ className: clsx.clsx('ams-page-footer__menu', className),
2336
+ ref: ref,
2337
+ children: children
2338
+ }))]
2339
+ });
2318
2340
  });
2319
2341
  PageFooterMenu.displayName = 'PageFooter.Menu';
2320
2342
 
@@ -2384,23 +2406,21 @@ var useIsAfterBreakpoint = function useIsAfterBreakpoint(breakpoint) {
2384
2406
  _useState2 = _slicedToArray(_useState, 2),
2385
2407
  matches = _useState2[0],
2386
2408
  setMatches = _useState2[1];
2387
- react.useLayoutEffect(function () {
2409
+ react.useEffect(function () {
2388
2410
  // Check for window object to avoid SSR issues
2389
- if (typeof window !== 'undefined') {
2390
- var media = window.matchMedia("(min-width: ".concat(BREAKPOINTS[breakpoint], ")"));
2391
- if (media.matches !== matches) {
2392
- setMatches(media.matches);
2393
- }
2394
- var listener = function listener() {
2395
- return setMatches(media.matches);
2396
- };
2397
- window.addEventListener('resize', listener);
2398
- return function () {
2399
- return window.removeEventListener('resize', listener);
2400
- };
2401
- }
2402
- return undefined;
2403
- }, [matches, breakpoint]);
2411
+ if (typeof window === 'undefined') return undefined;
2412
+ var query = "(min-width: ".concat(BREAKPOINTS[breakpoint], ")");
2413
+ var media = window.matchMedia(query);
2414
+ var listener = function listener() {
2415
+ return setMatches(media.matches);
2416
+ };
2417
+ // Set initial state
2418
+ setMatches(media.matches);
2419
+ media.addEventListener('change', listener);
2420
+ return function () {
2421
+ return media.removeEventListener('change', listener);
2422
+ };
2423
+ }, [breakpoint]);
2404
2424
  return matches;
2405
2425
  };
2406
2426
 
@@ -2413,6 +2433,8 @@ var PageHeaderGridCellNarrowWindowOnly = /*#__PURE__*/react.forwardRef(function
2413
2433
  restProps = _objectWithoutProperties(_ref, _excluded$A);
2414
2434
  return jsxRuntime.jsx(Grid.Cell, _objectSpread$C(_objectSpread$C({}, restProps), {}, {
2415
2435
  className: clsx.clsx('ams-page-header__grid-cell-narrow-window-only', className),
2436
+ hidden // Hide until its CSS loads; this cell duplicates the non-fixed links in the Page Header Menu.
2437
+ : true,
2416
2438
  ref: ref,
2417
2439
  children: children
2418
2440
  }));
@@ -2463,7 +2485,7 @@ var PageHeaderMenuLink = /*#__PURE__*/react.forwardRef(function (_ref, ref) {
2463
2485
  });
2464
2486
  PageHeaderMenuLink.displayName = 'PageHeader.MenuLink';
2465
2487
 
2466
- var _excluded$y = ["brandName", "children", "className", "logoAccessibleName", "logoBrand", "logoLink", "logoLinkComponent", "logoLinkTitle", "menuButtonText", "menuItems", "navigationLabel", "noMenuButtonOnWideWindow"];
2488
+ var _excluded$y = ["brandName", "children", "className", "logoAccessibleName", "logoBrand", "logoLink", "logoLinkComponent", "logoLinkTitle", "menuButtonText", "menuButtonTextForHide", "menuButtonTextForShow", "menuItems", "navigationLabel", "noMenuButtonOnWideWindow"];
2467
2489
  function ownKeys$z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2468
2490
  function _objectSpread$z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$z(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2469
2491
  var LogoLinkContent = function LogoLinkContent(_ref) {
@@ -2501,6 +2523,10 @@ var PageHeaderRoot = /*#__PURE__*/react.forwardRef(function (_ref2, ref) {
2501
2523
  logoLinkTitle = _ref2$logoLinkTitle === void 0 ? "Ga naar de homepage".concat(brandName ? " van ".concat(brandName) : '') : _ref2$logoLinkTitle,
2502
2524
  _ref2$menuButtonText = _ref2.menuButtonText,
2503
2525
  menuButtonText = _ref2$menuButtonText === void 0 ? 'Menu' : _ref2$menuButtonText,
2526
+ _ref2$menuButtonTextF = _ref2.menuButtonTextForHide,
2527
+ menuButtonTextForHide = _ref2$menuButtonTextF === void 0 ? 'Verberg navigatiemenu' : _ref2$menuButtonTextF,
2528
+ _ref2$menuButtonTextF2 = _ref2.menuButtonTextForShow,
2529
+ menuButtonTextForShow = _ref2$menuButtonTextF2 === void 0 ? 'Laat navigatiemenu zien' : _ref2$menuButtonTextF2,
2504
2530
  menuItems = _ref2.menuItems,
2505
2531
  _ref2$navigationLabel = _ref2.navigationLabel,
2506
2532
  navigationLabel = _ref2$navigationLabel === void 0 ? 'Hoofdnavigatie' : _ref2$navigationLabel,
@@ -2552,7 +2578,9 @@ var PageHeaderRoot = /*#__PURE__*/react.forwardRef(function (_ref2, ref) {
2552
2578
  }), jsxRuntime.jsxs("ul", {
2553
2579
  className: "ams-page-header__menu",
2554
2580
  children: [menuItems, hasMegaMenu && jsxRuntime.jsx("li", {
2555
- className: clsx.clsx(noMenuButtonOnWideWindow && 'ams-page-header__mega-menu-button-item--hide-on-wide-window'),
2581
+ className: clsx.clsx('ams-page-header__mega-menu-button-item', noMenuButtonOnWideWindow && 'ams-page-header__mega-menu-button-item--hide-on-wide-window'),
2582
+ hidden // Hide the list item containing the menu button until its CSS loads. If it doesn't load, the menu will always be visible.
2583
+ : true,
2556
2584
  children: jsxRuntime.jsxs("button", {
2557
2585
  "aria-controls": "ams-page-header-mega-menu",
2558
2586
  "aria-expanded": open,
@@ -2562,8 +2590,12 @@ var PageHeaderRoot = /*#__PURE__*/react.forwardRef(function (_ref2, ref) {
2562
2590
  },
2563
2591
  type: "button",
2564
2592
  children: [jsxRuntime.jsx("span", {
2593
+ "aria-hidden": "true",
2565
2594
  className: "ams-page-header__mega-menu-button-label",
2566
2595
  children: menuButtonText
2596
+ }), jsxRuntime.jsx("span", {
2597
+ className: "ams-visually-hidden",
2598
+ children: open ? menuButtonTextForHide : menuButtonTextForShow
2567
2599
  }), jsxRuntime.jsx("span", {
2568
2600
  "aria-hidden": "true",
2569
2601
  className: "ams-page-header__mega-menu-button-hidden-label",
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}