@amsterdam/design-system-react 3.0.0 → 3.2.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/dist/Accordion/Accordion.js +3 -3
- package/dist/Accordion/AccordionContext.d.ts +1 -2
- package/dist/Accordion/AccordionContext.js +3 -4
- package/dist/Accordion/AccordionSection.js +1 -1
- package/dist/Badge/Badge.d.ts +5 -0
- package/dist/Badge/Badge.js +3 -2
- package/dist/Checkbox/Checkbox.d.ts +5 -4
- package/dist/ErrorMessage/ErrorMessage.js +1 -1
- package/dist/Heading/Heading.d.ts +4 -4
- package/dist/Heading/Heading.js +1 -1
- package/dist/ImageSlider/ImageSlider.d.ts +5 -20
- package/dist/ImageSlider/ImageSlider.js +30 -87
- package/dist/ImageSlider/ImageSliderControl.d.ts +2 -0
- package/dist/ImageSlider/ImageSliderControl.js +5 -0
- package/dist/ImageSlider/ImageSliderSlide.d.ts +14 -0
- package/dist/ImageSlider/ImageSliderSlide.js +19 -0
- package/dist/ImageSlider/ImageSliderThumbnails.d.ts +5 -6
- package/dist/ImageSlider/ImageSliderThumbnails.js +7 -12
- package/dist/ImageSlider/index.d.ts +0 -1
- package/dist/ImageSlider/utils/debounce.d.ts +1 -0
- package/dist/ImageSlider/utils/debounce.js +8 -0
- package/dist/ImageSlider/utils/index.d.ts +4 -0
- package/dist/ImageSlider/utils/index.js +4 -0
- package/dist/ImageSlider/utils/scrollToCurrentSlideOnResize.d.ts +7 -0
- package/dist/ImageSlider/utils/scrollToCurrentSlideOnResize.js +11 -0
- package/dist/ImageSlider/utils/scrollToSlide.d.ts +2 -0
- package/dist/ImageSlider/utils/scrollToSlide.js +9 -0
- package/dist/ImageSlider/utils/setCurrentSlideIdToVisibleSlide.d.ts +8 -0
- package/dist/ImageSlider/utils/setCurrentSlideIdToVisibleSlide.js +10 -0
- package/dist/Logo/Logo.d.ts +1 -1
- package/dist/Logo/Logo.js +6 -1
- package/dist/Logo/brand/LogoAmsterdamEnglish.d.ts +7 -0
- package/dist/Logo/brand/LogoAmsterdamEnglish.js +6 -0
- package/dist/Logo/brand/index.d.ts +1 -0
- package/dist/Logo/brand/index.js +1 -0
- package/dist/Menu/Menu.js +3 -2
- package/dist/PageHeader/LogoLinkContent.d.ts +13 -0
- package/dist/PageHeader/LogoLinkContent.js +8 -0
- package/dist/PageHeader/PageHeader.d.ts +16 -1
- package/dist/PageHeader/PageHeader.js +16 -12
- package/dist/ProgressList/AccessibleStatusText.d.ts +10 -0
- package/dist/ProgressList/AccessibleStatusText.js +13 -0
- package/dist/ProgressList/ProgressList.d.ts +63 -0
- package/dist/ProgressList/ProgressList.js +23 -0
- package/dist/ProgressList/ProgressListContext.d.ts +12 -0
- package/dist/ProgressList/ProgressListContext.js +11 -0
- package/dist/ProgressList/ProgressListStep.d.ts +23 -0
- package/dist/ProgressList/ProgressListStep.js +13 -0
- package/dist/ProgressList/ProgressListSubstep.d.ts +16 -0
- package/dist/ProgressList/ProgressListSubstep.js +8 -0
- package/dist/ProgressList/ProgressListSubsteps.d.ts +9 -0
- package/dist/ProgressList/ProgressListSubsteps.js +5 -0
- package/dist/ProgressList/index.d.ts +9 -0
- package/dist/{PageHeader/matchMedia.mock.d.ts → ProgressList/index.js} +1 -0
- package/dist/Radio/Radio.d.ts +5 -4
- package/dist/SearchField/SearchFieldInput.js +3 -3
- package/dist/common/useViewportHasMinWidth.d.ts +22 -0
- package/dist/common/{useIsAfterBreakpoint.js → useViewportHasMinWidth.js} +13 -2
- package/dist/index.cjs.js +2122 -2389
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +144 -60
- package/dist/index.esm.js +2124 -2392
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +17 -19
- package/dist/ImageSlider/ImageSliderContext.d.ts +0 -13
- package/dist/ImageSlider/ImageSliderContext.js +0 -14
- package/dist/ImageSlider/ImageSliderControls.d.ts +0 -17
- package/dist/ImageSlider/ImageSliderControls.js +0 -13
- package/dist/ImageSlider/ImageSliderItem.d.ts +0 -15
- package/dist/ImageSlider/ImageSliderItem.js +0 -11
- package/dist/ImageSlider/ImageSliderScroller.d.ts +0 -9
- package/dist/ImageSlider/ImageSliderScroller.js +0 -5
- package/dist/PageHeader/matchMedia.mock.js +0 -19
- package/dist/common/useIsAfterBreakpoint.d.ts +0 -11
|
@@ -2,9 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { forwardRef, useImperativeHandle, useRef } from 'react';
|
|
4
4
|
import { useKeyboardFocus } from '../common/useKeyboardFocus';
|
|
5
|
-
import AccordionContext from './AccordionContext';
|
|
5
|
+
import { AccordionContext } from './AccordionContext';
|
|
6
6
|
import { AccordionSection } from './AccordionSection';
|
|
7
|
-
const AccordionRoot = forwardRef(({ children, className, headingLevel, sectionAs = 'section' }, ref) => {
|
|
7
|
+
const AccordionRoot = forwardRef(({ children, className, headingLevel, sectionAs = 'section', ...restProps }, ref) => {
|
|
8
8
|
const innerRef = useRef(null);
|
|
9
9
|
// use a passed ref if it's there, otherwise use innerRef
|
|
10
10
|
useImperativeHandle(ref, () => innerRef.current);
|
|
@@ -12,7 +12,7 @@ const AccordionRoot = forwardRef(({ children, className, headingLevel, sectionAs
|
|
|
12
12
|
focusableElements: ['.ams-accordion__button:not([disabled])'],
|
|
13
13
|
rotating: true,
|
|
14
14
|
});
|
|
15
|
-
return (_jsx(AccordionContext.Provider, { value: { headingLevel: headingLevel, sectionAs: sectionAs }, children: _jsx("div", { className: clsx('ams-accordion', className), onKeyDown: keyDown, ref: innerRef, children: children }) }));
|
|
15
|
+
return (_jsx(AccordionContext.Provider, { value: { headingLevel: headingLevel, sectionAs: sectionAs }, children: _jsx("div", { ...restProps, className: clsx('ams-accordion', className), onKeyDown: keyDown, ref: innerRef, children: children }) }));
|
|
16
16
|
});
|
|
17
17
|
AccordionRoot.displayName = 'Accordion';
|
|
18
18
|
/**
|
|
@@ -7,5 +7,4 @@ export type AccordionContextValue = {
|
|
|
7
7
|
headingLevel: AccordionProps['headingLevel'];
|
|
8
8
|
sectionAs?: AccordionProps['sectionAs'];
|
|
9
9
|
};
|
|
10
|
-
declare const AccordionContext: import("react").Context<AccordionContextValue>;
|
|
11
|
-
export default AccordionContext;
|
|
10
|
+
export declare const AccordionContext: import("react").Context<AccordionContextValue>;
|
|
@@ -4,9 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { createContext } from 'react';
|
|
6
6
|
const defaultValues = {
|
|
7
|
-
//
|
|
8
|
-
//
|
|
7
|
+
// Default value for type safety.
|
|
8
|
+
// The actual value is always provided via Accordion’s required headingLevel prop.
|
|
9
9
|
headingLevel: 2,
|
|
10
10
|
};
|
|
11
|
-
const AccordionContext = createContext(defaultValues);
|
|
12
|
-
export default AccordionContext;
|
|
11
|
+
export const AccordionContext = createContext(defaultValues);
|
|
@@ -4,7 +4,7 @@ import { clsx } from 'clsx';
|
|
|
4
4
|
import { forwardRef, useContext, useId, useState } from 'react';
|
|
5
5
|
import { Heading } from '../Heading';
|
|
6
6
|
import { Icon } from '../Icon/Icon';
|
|
7
|
-
import AccordionContext from './AccordionContext';
|
|
7
|
+
import { AccordionContext } from './AccordionContext';
|
|
8
8
|
// The 'ams-accordion__header' class is @deprecated and will be removed in a future release.
|
|
9
9
|
export const AccordionSection = forwardRef(({ children, className, expanded = false, label, ...restProps }, ref) => {
|
|
10
10
|
const { headingLevel, sectionAs } = useContext(AccordionContext);
|
package/dist/Badge/Badge.d.ts
CHANGED
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes } from 'react';
|
|
6
|
+
import type { IconProps } from '../Icon';
|
|
6
7
|
export declare const badgeColors: readonly ["azure", "lime", "magenta", "orange", "purple", "red", "yellow"];
|
|
7
8
|
type BadgeColor = (typeof badgeColors)[number];
|
|
8
9
|
export type BadgeProps = {
|
|
9
10
|
/** The background colour. */
|
|
10
11
|
color?: BadgeColor;
|
|
12
|
+
/** The icon to show before the badge text. */
|
|
13
|
+
icon?: IconProps['svg'];
|
|
11
14
|
/** The text content. */
|
|
12
15
|
label: string | number;
|
|
13
16
|
} & HTMLAttributes<HTMLElement>;
|
|
@@ -17,6 +20,8 @@ export type BadgeProps = {
|
|
|
17
20
|
export declare const Badge: import("react").ForwardRefExoticComponent<{
|
|
18
21
|
/** The background colour. */
|
|
19
22
|
color?: BadgeColor;
|
|
23
|
+
/** The icon to show before the badge text. */
|
|
24
|
+
icon?: IconProps["svg"];
|
|
20
25
|
/** The text content. */
|
|
21
26
|
label: string | number;
|
|
22
27
|
} & HTMLAttributes<HTMLElement> & import("react").RefAttributes<HTMLElement>>;
|
package/dist/Badge/Badge.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
|
+
import { Icon } from '../Icon';
|
|
4
5
|
export const badgeColors = ['azure', 'lime', 'magenta', 'orange', 'purple', 'red', 'yellow'];
|
|
5
6
|
/**
|
|
6
7
|
* @see {@link https://designsystem.amsterdam/?path=/docs/components-feedback-badge--docs Badge docs at Amsterdam Design System}
|
|
7
8
|
*/
|
|
8
|
-
export const Badge = forwardRef(({ className, color, label, ...restProps }, ref) => (
|
|
9
|
+
export const Badge = forwardRef(({ className, color, icon, label, ...restProps }, ref) => (_jsxs("span", { ...restProps, className: clsx('ams-badge', color && `ams-badge--${color}`, className), ref: ref, children: [icon && _jsx(Icon, { svg: icon }), label] })));
|
|
9
10
|
Badge.displayName = 'Badge';
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
* @license EUPL-1.2+
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
|
-
import type { InputHTMLAttributes, PropsWithChildren
|
|
5
|
+
import type { InputHTMLAttributes, PropsWithChildren } from 'react';
|
|
6
|
+
import type { IconProps } from '../Icon';
|
|
6
7
|
export type CheckboxProps = {
|
|
7
8
|
/**
|
|
8
9
|
* An icon to display instead of the default icon.
|
|
9
10
|
* @default CheckboxIcon
|
|
10
11
|
*/
|
|
11
|
-
icon?:
|
|
12
|
+
icon?: IconProps['svg'];
|
|
12
13
|
/** Allows being neither checked nor unchecked. */
|
|
13
14
|
indeterminate?: boolean;
|
|
14
15
|
/** Whether the value fails a validation rule. */
|
|
@@ -22,11 +23,11 @@ export declare const Checkbox: import("react").ForwardRefExoticComponent<{
|
|
|
22
23
|
* An icon to display instead of the default icon.
|
|
23
24
|
* @default CheckboxIcon
|
|
24
25
|
*/
|
|
25
|
-
icon?:
|
|
26
|
+
icon?: IconProps["svg"];
|
|
26
27
|
/** Allows being neither checked nor unchecked. */
|
|
27
28
|
indeterminate?: boolean;
|
|
28
29
|
/** Whether the value fails a validation rule. */
|
|
29
30
|
invalid?: boolean;
|
|
30
31
|
} & Omit<InputHTMLAttributes<HTMLInputElement>, "aria-invalid" | "type"> & {
|
|
31
|
-
children?: ReactNode | undefined;
|
|
32
|
+
children?: import("react").ReactNode | undefined;
|
|
32
33
|
} & import("react").RefAttributes<HTMLInputElement>>;
|
|
@@ -6,5 +6,5 @@ import { Icon } from '../Icon';
|
|
|
6
6
|
/**
|
|
7
7
|
* @see {@link https://designsystem.amsterdam/?path=/docs/components-forms-error-message--docs Error Message docs at Amsterdam Design System}
|
|
8
8
|
*/
|
|
9
|
-
export const ErrorMessage = forwardRef(({ children, className, icon = WarningIcon, prefix = 'Invoerfout', ...restProps }, ref) => (_jsxs("p", { ...restProps, className: clsx('ams-error-message', className), ref: ref, children: [_jsx(Icon, { svg: icon }), _jsx("span", { className: "ams-visually-hidden", children: `${prefix}: ` }), children] })));
|
|
9
|
+
export const ErrorMessage = forwardRef(({ children, className, icon = WarningIcon, prefix = 'Invoerfout', ...restProps }, ref) => (_jsxs("p", { ...restProps, className: clsx('ams-error-message', className), ref: ref, children: [_jsx(Icon, { svg: icon }), prefix && _jsx("span", { className: "ams-visually-hidden", children: `${prefix}: ` }), children] })));
|
|
10
10
|
ErrorMessage.displayName = 'ErrorMessage';
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
* Copyright Gemeente Amsterdam
|
|
5
5
|
*/
|
|
6
6
|
import type { HTMLAttributes, PropsWithChildren } from 'react';
|
|
7
|
-
export declare const
|
|
8
|
-
type
|
|
7
|
+
export declare const headingLevels: readonly [1, 2, 3, 4];
|
|
8
|
+
type HeadingLevel = (typeof headingLevels)[number];
|
|
9
9
|
export type HeadingProps = {
|
|
10
10
|
/** Changes the text colour for readability on a dark background. */
|
|
11
11
|
color?: 'inverse';
|
|
12
12
|
/** The hierarchical level within the document. */
|
|
13
|
-
level:
|
|
13
|
+
level: HeadingLevel;
|
|
14
14
|
/**
|
|
15
15
|
* Uses larger or smaller text without changing its position in the heading hierarchy.
|
|
16
16
|
* The value ‘level-6’ is deprecated. Use level 5 instead.
|
|
@@ -24,7 +24,7 @@ export declare const Heading: import("react").ForwardRefExoticComponent<{
|
|
|
24
24
|
/** Changes the text colour for readability on a dark background. */
|
|
25
25
|
color?: "inverse";
|
|
26
26
|
/** The hierarchical level within the document. */
|
|
27
|
-
level:
|
|
27
|
+
level: HeadingLevel;
|
|
28
28
|
/**
|
|
29
29
|
* Uses larger or smaller text without changing its position in the heading hierarchy.
|
|
30
30
|
* The value ‘level-6’ is deprecated. Use level 5 instead.
|
package/dist/Heading/Heading.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
4
|
import { getHeadingTag } from './getHeadingTag';
|
|
5
|
-
export const
|
|
5
|
+
export const headingLevels = [1, 2, 3, 4];
|
|
6
6
|
/**
|
|
7
7
|
* @see {@link https://designsystem.amsterdam/?path=/docs/components-text-heading--docs Heading docs at Amsterdam Design System}
|
|
8
8
|
*/
|
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes } from 'react';
|
|
6
6
|
import type { ImageProps } from '../Image/Image';
|
|
7
|
-
export type ImageSliderImageProps =
|
|
7
|
+
export type ImageSliderImageProps = {
|
|
8
|
+
/** An optional caption displayed below the image. */
|
|
9
|
+
caption?: string;
|
|
10
|
+
} & ImageProps;
|
|
8
11
|
export type ImageSliderProps = {
|
|
9
12
|
/** Display buttons to navigate to the previous or next image. */
|
|
10
13
|
controls?: boolean;
|
|
@@ -17,18 +20,6 @@ export type ImageSliderProps = {
|
|
|
17
20
|
/** The label for the ‘previous’ button */
|
|
18
21
|
previousLabel?: string;
|
|
19
22
|
} & HTMLAttributes<HTMLDivElement>;
|
|
20
|
-
export declare const ImageSliderRoot: import("react").ForwardRefExoticComponent<{
|
|
21
|
-
/** Display buttons to navigate to the previous or next image. */
|
|
22
|
-
controls?: boolean;
|
|
23
|
-
/** Label for the image if you need to translate the alt text. */
|
|
24
|
-
imageLabel?: string;
|
|
25
|
-
/** The set of images to display. */
|
|
26
|
-
images: ImageSliderImageProps[];
|
|
27
|
-
/** The label for the ‘next’ button */
|
|
28
|
-
nextLabel?: string;
|
|
29
|
-
/** The label for the ‘previous’ button */
|
|
30
|
-
previousLabel?: string;
|
|
31
|
-
} & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
32
23
|
/**
|
|
33
24
|
* @see {@link https://designsystem.amsterdam/?path=/docs/components-media-image-slider--docs Image Slider docs at Amsterdam Design System}
|
|
34
25
|
*/
|
|
@@ -43,10 +34,4 @@ export declare const ImageSlider: import("react").ForwardRefExoticComponent<{
|
|
|
43
34
|
nextLabel?: string;
|
|
44
35
|
/** The label for the ‘previous’ button */
|
|
45
36
|
previousLabel?: string;
|
|
46
|
-
} & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement
|
|
47
|
-
Item: import("react").ForwardRefExoticComponent<{
|
|
48
|
-
slideId: number;
|
|
49
|
-
} & HTMLAttributes<HTMLDivElement> & {
|
|
50
|
-
children?: import("react").ReactNode | undefined;
|
|
51
|
-
} & import("react").RefAttributes<HTMLDivElement>>;
|
|
52
|
-
};
|
|
37
|
+
} & HTMLAttributes<HTMLDivElement> & import("react").RefAttributes<HTMLDivElement>>;
|
|
@@ -1,97 +1,40 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronBackwardIcon, ChevronForwardIcon } from '@amsterdam/design-system-react-icons';
|
|
2
3
|
import { clsx } from 'clsx';
|
|
3
|
-
import { forwardRef,
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { ImageSliderControls } from './ImageSliderControls';
|
|
7
|
-
import { ImageSliderItem } from './ImageSliderItem';
|
|
8
|
-
import { ImageSliderScroller } from './ImageSliderScroller';
|
|
4
|
+
import { forwardRef, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { ImageSliderControl } from './ImageSliderControl';
|
|
6
|
+
import { ImageSliderSlide } from './ImageSliderSlide';
|
|
9
7
|
import { ImageSliderThumbnails } from './ImageSliderThumbnails';
|
|
10
|
-
|
|
8
|
+
import { debounce, scrollToCurrentSlideOnResize, scrollToSlide, setCurrentSlideIdToVisibleSlide } from './utils';
|
|
9
|
+
/**
|
|
10
|
+
* @see {@link https://designsystem.amsterdam/?path=/docs/components-media-image-slider--docs Image Slider docs at Amsterdam Design System}
|
|
11
|
+
*/
|
|
12
|
+
export const ImageSlider = forwardRef(({ className, controls, imageLabel = 'Afbeelding', images, nextLabel = 'Volgende', previousLabel = 'Vorige', ...restProps }, ref) => {
|
|
13
|
+
if (images.length === 0)
|
|
14
|
+
return null;
|
|
11
15
|
const [currentSlideId, setCurrentSlideId] = useState(0);
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const observerRef = useRef(null);
|
|
16
|
-
const inView = useCallback((observations) => {
|
|
17
|
-
const images = Array.from(targetRef.current?.children || []);
|
|
18
|
-
observations.forEach((observation) => {
|
|
19
|
-
if (observation.isIntersecting) {
|
|
20
|
-
setCurrentSlideId(images.indexOf(observation.target));
|
|
21
|
-
}
|
|
22
|
-
});
|
|
23
|
-
}, []);
|
|
24
|
-
const observerOptions = useMemo(() => ({
|
|
25
|
-
root: targetRef.current,
|
|
26
|
-
threshold: 0.6,
|
|
27
|
-
}), []);
|
|
28
|
-
const updateControls = useCallback(() => {
|
|
29
|
-
const sliderScrollerElement = targetRef.current;
|
|
30
|
-
if (!sliderScrollerElement)
|
|
31
|
-
return;
|
|
32
|
-
const { firstElementChild: firstElement, lastElementChild: lastElement } = sliderScrollerElement;
|
|
33
|
-
setIsAtStart(firstElement === sliderScrollerElement?.children[currentSlideId]);
|
|
34
|
-
setIsAtEnd(lastElement === sliderScrollerElement?.children[currentSlideId]);
|
|
35
|
-
}, [currentSlideId]);
|
|
16
|
+
const scrollerRef = useRef(null);
|
|
17
|
+
const isAtStart = currentSlideId === 0;
|
|
18
|
+
const isAtEnd = currentSlideId === images.length - 1;
|
|
36
19
|
useEffect(() => {
|
|
37
|
-
if (
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return undefined;
|
|
50
|
-
}, [inView, observerOptions, updateControls]);
|
|
51
|
-
const synchronise = useCallback(() => updateControls(), [updateControls]);
|
|
52
|
-
const goToSlide = useCallback((element) => {
|
|
53
|
-
const sliderScrollerElement = targetRef.current;
|
|
54
|
-
if (!sliderScrollerElement || !element)
|
|
55
|
-
return;
|
|
56
|
-
sliderScrollerElement.scrollTo({
|
|
57
|
-
left: element.offsetLeft,
|
|
58
|
-
});
|
|
20
|
+
if (!scrollerRef.current)
|
|
21
|
+
return undefined;
|
|
22
|
+
const observerOptions = {
|
|
23
|
+
root: scrollerRef.current,
|
|
24
|
+
threshold: 0.6,
|
|
25
|
+
};
|
|
26
|
+
const observer = new IntersectionObserver((observations) => setCurrentSlideIdToVisibleSlide({ observations, ref: scrollerRef, setCurrentSlideId }), observerOptions);
|
|
27
|
+
const slides = Array.from(scrollerRef.current.children);
|
|
28
|
+
slides.forEach((slide) => observer.observe(slide));
|
|
29
|
+
return () => observer.disconnect();
|
|
59
30
|
}, []);
|
|
60
|
-
const goToSlideId = useCallback((id) => {
|
|
61
|
-
const element = targetRef.current?.children[id];
|
|
62
|
-
if (element)
|
|
63
|
-
goToSlide(element);
|
|
64
|
-
}, [goToSlide]);
|
|
65
|
-
const goToNextSlide = useCallback(() => {
|
|
66
|
-
const element = targetRef.current?.children[currentSlideId];
|
|
67
|
-
const nextElement = element?.nextElementSibling;
|
|
68
|
-
if (nextElement)
|
|
69
|
-
goToSlide(nextElement);
|
|
70
|
-
}, [currentSlideId, goToSlide]);
|
|
71
|
-
const goToPreviousSlide = useCallback(() => {
|
|
72
|
-
const element = targetRef.current?.children[currentSlideId];
|
|
73
|
-
const previousElement = element?.previousElementSibling;
|
|
74
|
-
if (previousElement)
|
|
75
|
-
goToSlide(previousElement);
|
|
76
|
-
}, [currentSlideId, goToSlide]);
|
|
77
31
|
useEffect(() => {
|
|
78
|
-
const handleResize = () => {
|
|
79
|
-
const sliderScrollerElement = targetRef.current;
|
|
80
|
-
const currentSlideElement = targetRef.current?.children[currentSlideId];
|
|
81
|
-
if (!sliderScrollerElement || !currentSlideElement)
|
|
82
|
-
return;
|
|
83
|
-
const expectedScrollLeft = currentSlideElement.offsetLeft;
|
|
84
|
-
if (Math.abs(sliderScrollerElement.scrollLeft - expectedScrollLeft) < 1)
|
|
85
|
-
return;
|
|
86
|
-
goToSlide(currentSlideElement);
|
|
87
|
-
};
|
|
32
|
+
const handleResize = debounce(() => scrollToCurrentSlideOnResize({ currentSlideId, ref: scrollerRef }), 100);
|
|
88
33
|
window.addEventListener('resize', handleResize);
|
|
89
34
|
return () => window.removeEventListener('resize', handleResize);
|
|
90
|
-
}, [currentSlideId
|
|
91
|
-
return (
|
|
35
|
+
}, [currentSlideId]);
|
|
36
|
+
return (_jsxs("div", { ...restProps, "aria-roledescription": "carousel", className: clsx('ams-image-slider',
|
|
37
|
+
// The 'ams-image-slider--controls' class is @deprecated and will be removed in a future release.
|
|
38
|
+
controls && 'ams-image-slider--controls', className), ref: ref, children: [controls && (_jsxs("div", { className: "ams-image-slider__controls", children: [_jsx(ImageSliderControl, { disabled: isAtStart, icon: ChevronBackwardIcon, iconOnly: true, onClick: () => scrollToSlide(currentSlideId - 1, scrollerRef), children: previousLabel }), _jsx(ImageSliderControl, { disabled: isAtEnd, icon: ChevronForwardIcon, iconOnly: true, onClick: () => scrollToSlide(currentSlideId + 1, scrollerRef), children: nextLabel })] })), _jsx("div", { "aria-live": "polite", className: "ams-image-slider__scroller", ref: scrollerRef, role: "group", tabIndex: 0, children: images.map((image, index) => (_jsx(ImageSliderSlide, { ...image, currentSlideId: currentSlideId, index: index }, `${index}-${image.src}`))) }), _jsx(ImageSliderThumbnails, { currentSlideId: currentSlideId, imageLabel: imageLabel, scrollToSlide: (id) => scrollToSlide(id, scrollerRef), thumbnails: images })] }));
|
|
92
39
|
});
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* @see {@link https://designsystem.amsterdam/?path=/docs/components-media-image-slider--docs Image Slider docs at Amsterdam Design System}
|
|
96
|
-
*/
|
|
97
|
-
export const ImageSlider = Object.assign(ImageSliderRoot, { Item: ImageSliderItem });
|
|
40
|
+
ImageSlider.displayName = 'ImageSlider';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
import type { ImageSliderImageProps } from './ImageSlider';
|
|
6
|
+
type ImageSliderSlideProps = {
|
|
7
|
+
currentSlideId: number;
|
|
8
|
+
index: number;
|
|
9
|
+
} & ImageSliderImageProps;
|
|
10
|
+
export declare const ImageSliderSlide: {
|
|
11
|
+
({ alt, aspectRatio, caption, className, currentSlideId, index, sizes, src, srcSet, ...restProps }: ImageSliderSlideProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, 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 { Figure } from '../Figure/Figure';
|
|
8
|
+
import { Image } from '../Image/Image';
|
|
9
|
+
export const ImageSliderSlide = ({ alt, aspectRatio, caption, className, currentSlideId, index, sizes, src, srcSet, ...restProps }) => {
|
|
10
|
+
const isCurrentSlide = index === currentSlideId;
|
|
11
|
+
const slideProps = {
|
|
12
|
+
'aria-hidden': isCurrentSlide ? undefined : true,
|
|
13
|
+
// The `ams-image-slider__item` and `ams-image-slider__item--in-view` classes are @deprecated and will be removed in a future release.
|
|
14
|
+
className: clsx('ams-image-slider__slide ams-image-slider__item', isCurrentSlide && 'ams-image-slider__item--in-view', className),
|
|
15
|
+
};
|
|
16
|
+
const imageProps = { alt, aspectRatio, sizes, src, srcSet };
|
|
17
|
+
return caption ? (_jsxs(Figure, { ...restProps, ...slideProps, className: clsx(slideProps.className, 'ams-image-slider__figure'), children: [_jsx(Image, { ...imageProps }), _jsx(Figure.Caption, { className: "ams-image-slider__caption", children: caption })] })) : (_jsx(Image, { ...restProps, ...imageProps, ...slideProps }));
|
|
18
|
+
};
|
|
19
|
+
ImageSliderSlide.displayName = 'ImageSliderSlide';
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { HTMLAttributes } from 'react';
|
|
6
|
-
import type {
|
|
6
|
+
import type { ImageSliderProps } from './ImageSlider';
|
|
7
7
|
export type ImageSliderThumbnailsProps = {
|
|
8
|
+
currentSlideId: number;
|
|
8
9
|
imageLabel?: string;
|
|
9
|
-
|
|
10
|
+
scrollToSlide: (id: number) => void;
|
|
11
|
+
thumbnails: ImageSliderProps['images'];
|
|
10
12
|
} & HTMLAttributes<HTMLElement>;
|
|
11
|
-
export declare const ImageSliderThumbnails: import("react").
|
|
12
|
-
imageLabel?: string;
|
|
13
|
-
thumbnails: ImageSliderImageProps[];
|
|
14
|
-
} & HTMLAttributes<HTMLElement> & import("react").RefAttributes<HTMLElement>>;
|
|
13
|
+
export declare const ImageSliderThumbnails: ({ currentSlideId, imageLabel, scrollToSlide, thumbnails, ...restProps }: ImageSliderThumbnailsProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,28 +1,23 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
|
-
import { forwardRef, useCallback, useContext, useMemo } from 'react';
|
|
4
3
|
import { generateAspectRatioClass } from '../Image/generateAspectRatioClass';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const { currentSlideId, goToNextSlide, goToPreviousSlide, goToSlideId } = useContext(ImageSliderContext);
|
|
8
|
-
const handleKeyDown = useCallback((event) => {
|
|
4
|
+
export const ImageSliderThumbnails = ({ currentSlideId, imageLabel, scrollToSlide, thumbnails, ...restProps }) => {
|
|
5
|
+
const handleKeyDown = (event) => {
|
|
9
6
|
const element = event.currentTarget.children[currentSlideId];
|
|
10
7
|
if (event.key === 'ArrowRight') {
|
|
11
8
|
const nextElement = element?.nextElementSibling;
|
|
12
9
|
if (nextElement) {
|
|
13
10
|
nextElement.focus();
|
|
14
|
-
|
|
11
|
+
scrollToSlide(currentSlideId + 1);
|
|
15
12
|
}
|
|
16
13
|
}
|
|
17
14
|
if (event.key === 'ArrowLeft') {
|
|
18
15
|
const previousElement = element?.previousElementSibling;
|
|
19
16
|
if (previousElement) {
|
|
20
17
|
previousElement.focus();
|
|
21
|
-
|
|
18
|
+
scrollToSlide(currentSlideId - 1);
|
|
22
19
|
}
|
|
23
20
|
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
});
|
|
28
|
-
ImageSliderThumbnails.displayName = 'ImageSlider.Thumbnails';
|
|
21
|
+
};
|
|
22
|
+
return (_jsx("nav", { ...restProps, className: "ams-image-slider__thumbnails", onKeyDown: handleKeyDown, role: "tablist", children: thumbnails.map(({ alt, aspectRatio, src }, index) => (_jsx("button", { "aria-label": `${imageLabel} ${index + 1}: ${alt}`, "aria-posinset": index + 1, "aria-selected": currentSlideId === index ? 'true' : 'false', "aria-setsize": thumbnails.length, className: clsx('ams-image-slider__thumbnail', currentSlideId === index && 'ams-image-slider__thumbnail--in-view', generateAspectRatioClass(aspectRatio)), onClick: () => scrollToSlide(index), role: "tab", style: { backgroundImage: `url(${src})` }, tabIndex: currentSlideId === index ? 0 : -1, type: "button" }, `${index}-${src}`))) }));
|
|
23
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function debounce<F extends (...args: unknown[]) => void>(fn: F, delay: number): (...args: Parameters<F>) => void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { scrollToSlide } from './scrollToSlide';
|
|
2
|
+
export const scrollToCurrentSlideOnResize = ({ currentSlideId, ref }) => {
|
|
3
|
+
const scrollerElement = ref.current;
|
|
4
|
+
const currentSlideElement = ref.current?.children[currentSlideId];
|
|
5
|
+
if (!scrollerElement || !currentSlideElement)
|
|
6
|
+
return;
|
|
7
|
+
const expectedScrollLeft = currentSlideElement.offsetLeft;
|
|
8
|
+
if (Math.abs(scrollerElement.scrollLeft - expectedScrollLeft) < 1)
|
|
9
|
+
return;
|
|
10
|
+
scrollToSlide(currentSlideId, ref);
|
|
11
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
type Args = {
|
|
3
|
+
observations: IntersectionObserverEntry[];
|
|
4
|
+
ref: RefObject<HTMLDivElement>;
|
|
5
|
+
setCurrentSlideId: (id: number) => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const setCurrentSlideIdToVisibleSlide: ({ observations, ref, setCurrentSlideId }: Args) => void;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const setCurrentSlideIdToVisibleSlide = ({ observations, ref, setCurrentSlideId }) => {
|
|
2
|
+
const images = Array.from(ref.current?.children || []);
|
|
3
|
+
if (images.length === 0)
|
|
4
|
+
return;
|
|
5
|
+
observations.forEach((observation) => {
|
|
6
|
+
if (observation.isIntersecting) {
|
|
7
|
+
setCurrentSlideId(images.indexOf(observation.target));
|
|
8
|
+
}
|
|
9
|
+
});
|
|
10
|
+
};
|
package/dist/Logo/Logo.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
import type { ComponentType, SVGProps } from 'react';
|
|
6
|
-
export declare const logoBrands: readonly ["amsterdam", "ggd-amsterdam", "museum-weesp", "stadsarchief", "stadsbank-van-lening", "vga-verzekeringen"];
|
|
6
|
+
export declare const logoBrands: readonly ["amsterdam", "amsterdam-english", "ggd-amsterdam", "museum-weesp", "stadsarchief", "stadsbank-van-lening", "vga-verzekeringen"];
|
|
7
7
|
export type LogoBrand = (typeof logoBrands)[number];
|
|
8
8
|
export type LogoProps = {
|
|
9
9
|
/** The name of the brand for which to display the logo, or configuration for a custom logo. */
|
package/dist/Logo/Logo.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { clsx } from 'clsx';
|
|
3
3
|
import { forwardRef } from 'react';
|
|
4
|
-
import { LogoAmsterdam, LogoGgdAmsterdam, LogoMuseumWeesp, LogoStadsarchief, LogoStadsbankVanLening, LogoVgaVerzekeringen, } from './brand';
|
|
4
|
+
import { LogoAmsterdam, LogoAmsterdamEnglish, LogoGgdAmsterdam, LogoMuseumWeesp, LogoStadsarchief, LogoStadsbankVanLening, LogoVgaVerzekeringen, } from './brand';
|
|
5
5
|
export const logoBrands = [
|
|
6
6
|
'amsterdam',
|
|
7
|
+
'amsterdam-english',
|
|
7
8
|
'ggd-amsterdam',
|
|
8
9
|
'museum-weesp',
|
|
9
10
|
'stadsarchief',
|
|
@@ -15,6 +16,10 @@ const logoConfig = {
|
|
|
15
16
|
label: 'Gemeente Amsterdam logo',
|
|
16
17
|
svg: LogoAmsterdam,
|
|
17
18
|
},
|
|
19
|
+
'amsterdam-english': {
|
|
20
|
+
label: 'City of Amsterdam logo',
|
|
21
|
+
svg: LogoAmsterdamEnglish,
|
|
22
|
+
},
|
|
18
23
|
'ggd-amsterdam': {
|
|
19
24
|
label: 'GGD Amsterdam logo',
|
|
20
25
|
svg: LogoGgdAmsterdam,
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license EUPL-1.2+
|
|
3
|
+
* Copyright Gemeente Amsterdam
|
|
4
|
+
*/
|
|
5
|
+
import type { SVGProps } from 'react';
|
|
6
|
+
declare const LogoAmsterdamEnglish: import("react").ForwardRefExoticComponent<Omit<SVGProps<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
|
|
7
|
+
export default LogoAmsterdamEnglish;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
const LogoAmsterdamEnglish = forwardRef((props, ref) => (_jsxs("svg", { className: "ams-logo", focusable: "false", height: "2.5rem" // Height for when CSS does not load, gets overridden when it does
|
|
4
|
+
, ref: ref, role: "img", viewBox: "0 0 115 40", xmlns: "http://www.w3.org/2000/svg", ...props, children: [_jsx("path", { className: "ams-logo__emblem", d: "m0 37.683 3.532-3.532L0 30.62l2.355-2.355 3.532 3.532 3.532-3.532 2.355 2.355-3.532 3.532 3.532 3.532L9.419 40l-3.532-3.532-3.532 3.532zM0 9.406l3.532-3.532-3.532-3.532L2.355-0.013l3.532 3.532 3.532-3.532 2.355 2.354-3.532 3.532 3.532 3.532-2.355 2.355-3.532-3.532L2.355 11.76zM0 23.557l3.532-3.532L0 16.493l2.355-2.355 3.532 3.532 3.532-3.532 2.355 2.355-3.532 3.532 3.532 3.532-2.355 2.355-3.532-3.532L2.355 25.911z", fill: "#EC0000" }), _jsx("path", { className: "ams-logo__text-primary", d: "M16.456 8.579c0-3.795 2.613-6.408 6.389-6.408 1.812 0 3.376 0.648 4.558 1.869l-1.659 1.602c-0.706-0.801-1.717-1.24-2.88-1.24-2.251 0-3.815 1.717-3.815 4.196 0 2.46 1.583 4.196 3.834 4.196 1.183 0 2.27-0.458 2.956-1.24l1.64 1.583c-1.125 1.221-2.746 1.888-4.616 1.888-3.776 0-6.408-2.632-6.408-6.447M30.455 4.174c-0.82 0-1.411-0.572-1.411-1.373s0.591-1.373 1.411-1.373c0.82 0 1.411 0.572 1.411 1.373s-0.591 1.373-1.411 1.373m-1.183 1.202h2.365V14.797h-2.365zM34.803 11.421V7.34h-1.621v-1.965h0.858c0.782 0 1.087-0.305 1.087-1.087V2.819h2.022v2.556h2.289v1.965h-2.289v4.082c0 0.915 0.477 1.43 1.354 1.43 0.267 0 0.591-0.038 0.782-0.095v1.984c-0.286 0.076-0.82 0.133-1.24 0.133-2.136 0-3.242-1.182-3.242-3.452M40.983 17.048l1.488-1.488c0.534 0.629 1.335 0.954 2.346 0.954 1.392 0 2.213-0.801 2.213-2.155v-1.411h-0.038c-0.42 0.935-1.278 1.507-2.327 1.507-2.308 0-3.49-1.335-3.49-3.948V5.375h2.365v4.692c0 1.583 0.553 2.327 1.698 2.327 1.163 0 1.812-0.858 1.812-2.384V5.375h2.365V14.454c0 2.518-1.774 4.101-4.558 4.101-1.717 0-3.033-0.515-3.872-1.507M56.126 10.086c0-2.88 2.098-4.94 5.016-4.94 2.918 0 5.016 2.06 5.016 4.94S64.06 15.026 61.142 15.026c-2.918 0-5.016-2.06-5.016-4.94m5.016 2.88c1.526 0 2.594-1.182 2.594-2.88s-1.068-2.88-2.594-2.88c-1.526 0-2.594 1.183-2.594 2.88s1.068 2.88 2.594 2.88M68.676 7.34h-1.602v-1.965h1.602v-1.221c0-2.155 1.278-3.414 3.471-3.414 0.267 0 0.668 0.038 0.877 0.076v2.041c-0.229-0.057-0.553-0.095-0.82-0.095-0.744 0-1.163 0.496-1.163 1.392v1.221h2.289v1.965h-2.289v7.457h-2.365zM20.9 25.287h2.861l4.959 12.397h-2.651l-1.03-2.727H19.527l-1.03 2.727h-2.556zm-0.629 7.61h4.005l-1.984-5.226h-0.038zM30.284 28.262h2.212v1.278h0.038c0.477-0.973 1.316-1.507 2.403-1.507 1.221 0 2.136 0.534 2.708 1.602 0.572-1.03 1.621-1.602 2.956-1.602 2.327 0 3.452 1.297 3.452 3.948v5.703h-2.365v-5.302c0-1.545-0.534-2.289-1.64-2.289-1.106 0-1.697 0.82-1.697 2.365v5.226h-2.365v-5.302c0-1.564-0.515-2.289-1.64-2.289-1.087 0-1.697 0.839-1.697 2.365v5.226h-2.365zM48.402 33.736c-1.278-0.381-2.518-1.068-2.518-2.785 0-1.736 1.45-2.918 3.605-2.918 1.449 0 2.575 0.515 3.204 1.469l-1.354 1.354c-0.477-0.591-1.125-0.916-1.831-0.916-0.801 0-1.297 0.362-1.297 0.935 0 0.763 0.801 0.896 1.965 1.259 1.278 0.381 2.518 1.068 2.518 2.785 0 1.774-1.526 2.994-3.776 2.994-1.469 0-2.651-0.515-3.338-1.488l1.354-1.354c0.515 0.61 1.202 0.935 1.965 0.935 0.916 0 1.469-0.382 1.469-1.011 0-0.763-0.801-0.896-1.965-1.259M55.192 34.308v-4.082h-1.621v-1.965h0.858c0.782 0 1.087-0.305 1.087-1.087v-1.469h2.022v2.556h2.289v1.965h-2.289v4.082c0 0.916 0.477 1.43 1.354 1.43 0.267 0 0.591-0.038 0.782-0.095v1.984c-0.286 0.076-0.82 0.134-1.24 0.134-2.136 0-3.242-1.183-3.242-3.452M60.99 32.973c0-2.918 1.964-4.94 4.768-4.94s4.749 2.003 4.749 4.883c0 0.229-0.038 0.591-0.076 0.839h-7.057c0.172 1.278 1.259 2.136 2.651 2.136 1.03 0 1.926-0.381 2.518-1.068l1.43 1.392c-0.858 1.106-2.346 1.698-4.063 1.698-2.899 0-4.921-2.041-4.921-4.94m2.384-0.954h4.749c-0.153-1.24-1.106-2.079-2.384-2.079-1.278 0-2.231 0.839-2.365 2.079M72.472 28.262h2.231v1.564h0.038c0.458-1.068 1.297-1.64 2.403-1.64 0.286 0 0.687 0.038 0.839 0.095v2.251c-0.267-0.076-0.782-0.133-1.163-0.133-1.202 0-1.984 0.916-1.984 2.327v4.959h-2.365zM78.651 33.011c0-2.918 1.926-4.978 4.654-4.978 1.259 0 2.289 0.553 2.937 1.564h0.038V23.856h2.365v13.828h-2.232v-1.469h-0.038c-0.61 1.068-1.755 1.698-3.071 1.698-2.727 0-4.654-2.041-4.654-4.902m7.629-0.038c0-1.697-1.049-2.823-2.594-2.823-1.564 0-2.613 1.144-2.613 2.823s1.049 2.823 2.613 2.823c1.545 0 2.594-1.125 2.594-2.823M90.457 34.995c0-1.812 1.507-2.899 4.024-2.918l1.831-0.019v-0.305c0-1.106-0.706-1.678-1.984-1.678-0.839 0-1.583 0.324-2.098 0.915l-1.43-1.392c0.82-1.011 2.136-1.564 3.757-1.564 2.518 0 4.12 1.373 4.12 3.567v3.738c0 0.343 0.153 0.496 0.534 0.496h0.172v1.85h-1.106c-0.896 0-1.507-0.42-1.697-1.106h-0.038c-0.591 0.858-1.564 1.335-2.746 1.335-1.984 0-3.338-1.183-3.338-2.918m5.855-0.82v-0.534l-1.564 0.019c-1.24 0.019-1.907 0.458-1.907 1.278 0 0.725 0.572 1.24 1.373 1.24 1.24 0 2.098-0.82 2.098-2.003M101.233 28.262h2.212v1.278h0.038c0.477-0.973 1.316-1.507 2.403-1.507 1.221 0 2.136 0.534 2.708 1.602 0.572-1.03 1.621-1.602 2.956-1.602 2.327 0 3.452 1.297 3.452 3.948v5.703h-2.365v-5.302c0-1.545-0.534-2.289-1.64-2.289-1.106 0-1.698 0.82-1.698 2.365v5.226h-2.365v-5.302c0-1.564-0.515-2.289-1.64-2.289-1.087 0-1.697 0.839-1.697 2.365v5.226h-2.365z", fill: "#EC0000" })] })));
|
|
5
|
+
LogoAmsterdamEnglish.displayName = 'LogoAmsterdamEnglish';
|
|
6
|
+
export default LogoAmsterdamEnglish;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
export { default as LogoAmsterdam } from './LogoAmsterdam';
|
|
6
|
+
export { default as LogoAmsterdamEnglish } from './LogoAmsterdamEnglish';
|
|
6
7
|
export { default as LogoGgdAmsterdam } from './LogoGgdAmsterdam';
|
|
7
8
|
export { default as LogoMuseumWeesp } from './LogoMuseumWeesp';
|
|
8
9
|
export { default as LogoStadsarchief } from './LogoStadsarchief';
|
package/dist/Logo/brand/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright Gemeente Amsterdam
|
|
4
4
|
*/
|
|
5
5
|
export { default as LogoAmsterdam } from './LogoAmsterdam';
|
|
6
|
+
export { default as LogoAmsterdamEnglish } from './LogoAmsterdamEnglish';
|
|
6
7
|
export { default as LogoGgdAmsterdam } from './LogoGgdAmsterdam';
|
|
7
8
|
export { default as LogoMuseumWeesp } from './LogoMuseumWeesp';
|
|
8
9
|
export { default as LogoStadsarchief } from './LogoStadsarchief';
|