@utrecht/components
Version:
Components for the Municipality of Utrecht based on the NL Design System architecture
89 lines (80 loc) • 2.29 kB
JSX
/**
* @license EUPL-1.2
* Copyright (c) 2020-2022 Gemeente Utrecht
* Copyright (c) 2020-2022 Frameless B.V.
*/
import clsx from 'clsx';
import React from 'react';
import { Paragraph } from '../../paragraph/src/story-template';
export const argTypes = {
aside: {
description: 'Aside',
control: { type: 'boolean' },
},
textContent: {
description: 'Content of the quote',
control: 'text',
},
caption: {
description: 'Caption of the quote',
control: 'text',
},
figure: {
description: 'Figure',
control: { type: 'boolean' },
},
lang: {
description: 'Language of the quoted text',
control: 'text',
},
};
export const defaultArgs = {
aside: false,
figure: false,
textContent: '',
caption: '',
lang: '',
};
export const exampleArgs = {
textContent: 'The Quick Brown Fox Jumps Over The Lazy Dog',
};
export const Blockquote = ({
aside = defaultArgs.aside,
children,
figure = defaultArgs.figure,
textContent = defaultArgs.textContent,
caption = defaultArgs.caption,
lang = defaultArgs.lang,
}) => {
const quote = children || (textContent ? <Paragraph>{textContent}</Paragraph> : null);
const captionElement = caption ? <figcaption className="utrecht-blockquote__caption">{caption}</figcaption> : null;
const blockquoteAttrs = { lang };
return aside && (figure || captionElement) ? (
<aside className={clsx('utrecht-blockquote')}>
<figure className={clsx('utrecht-blockquote__figure')}>
<blockquote className="utrecht-blockquote__quote" {...blockquoteAttrs}>
{quote}
</blockquote>
{captionElement}
</figure>
</aside>
) : aside ? (
<aside className={clsx('utrecht-blockquote')}>
<blockquote className="utrecht-blockquote__quote" {...blockquoteAttrs}>
{quote}
</blockquote>
</aside>
) : figure || captionElement ? (
<figure className={clsx('utrecht-blockquote')}>
<blockquote className="utrecht-blockquote__quote" {...blockquoteAttrs}>
{quote}
</blockquote>
{captionElement}
</figure>
) : (
<blockquote className={clsx('utrecht-blockquote', 'utrecht-blockquote--html-blockquote')} {...blockquoteAttrs}>
{quote}
</blockquote>
);
};
export default Blockquote;