From f861e6a269ba9f62700776d3cd13b644a9e836d4 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Wed, 20 Sep 2023 16:38:54 +0200 Subject: refactor: use named export for everything except pages Next expect a default export for pages so only those components should use default exports. Everything else should use named exports to reduce the number of import statements. --- src/components/atoms/lists/description-list.tsx | 38 ++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'src/components/atoms/lists/description-list.tsx') diff --git a/src/components/atoms/lists/description-list.tsx b/src/components/atoms/lists/description-list.tsx index a8e2d53..d97e505 100644 --- a/src/components/atoms/lists/description-list.tsx +++ b/src/components/atoms/lists/description-list.tsx @@ -1,7 +1,8 @@ -import { FC } from 'react'; -import DescriptionListItem, { - type DescriptionListItemProps, -} from './description-list-item'; +import { FC, HTMLAttributes } from 'react'; +import { + DescriptionListGroup, + type DescriptionListGroupProps, +} from './description-list-group'; import styles from './description-list.module.scss'; export type DescriptionListItem = { @@ -12,22 +13,21 @@ export type DescriptionListItem = { /** * The list item layout. */ - layout?: DescriptionListItemProps['layout']; + layout?: DescriptionListGroupProps['layout']; /** * A list label. */ - label: DescriptionListItemProps['label']; + label: DescriptionListGroupProps['label']; /** * An array of values for the list item. */ - value: DescriptionListItemProps['value']; + value: DescriptionListGroupProps['value']; }; -export type DescriptionListProps = { - /** - * Set additional classnames to the list wrapper. - */ - className?: string; +export type DescriptionListProps = Omit< + HTMLAttributes, + 'children' +> & { /** * Set additional classnames to the `dt`/`dd` couple wrapper. */ @@ -51,7 +51,7 @@ export type DescriptionListProps = { /** * If true, use a slash to delimitate multiple values. */ - withSeparator?: DescriptionListItemProps['withSeparator']; + withSeparator?: DescriptionListGroupProps['withSeparator']; }; /** @@ -59,7 +59,7 @@ export type DescriptionListProps = { * * Render a description list. */ -const DescriptionList: FC = ({ +export const DescriptionList: FC = ({ className = '', groupClassName = '', items, @@ -67,19 +67,21 @@ const DescriptionList: FC = ({ layout = 'column', valueClassName = '', withSeparator, + ...props }) => { const layoutModifier = `list--${layout}`; + const listClass = `${styles.list} ${styles[layoutModifier]} ${className}`; /** * Retrieve the description list items. * - * @param {DescriptionListItem[]} listItems - An array of items. + * @param {DescriptionListGroup[]} listItems - An array of items. * @returns {JSX.Element[]} The description list items. */ const getItems = (listItems: DescriptionListItem[]): JSX.Element[] => { return listItems.map(({ id, layout: itemLayout, label, value }) => { return ( - = ({ }; return ( -
+
{getItems(items)}
); }; - -export default DescriptionList; -- cgit v1.2.3