import React, { forwardRef } from 'react'; export type DescriptionListLayout = 'vertical' | 'inline'; export interface DescriptionListItem { term: React.ReactNode; detail: React.ReactNode; } export interface DescriptionListProps extends Omit< React.HTMLAttributes, 'children' > { items: DescriptionListItem[]; layout?: DescriptionListLayout; } export const DescriptionList = forwardRef< HTMLDListElement, DescriptionListProps >(({ items, layout = 'vertical', className = '', ...rest }, ref) => { const classes = ['dl', layout !== 'vertical' && `dl--${layout}`, className] .filter(Boolean) .join(' '); return (
{items.map((item, i) => (
{item.term}
{item.detail}
))}
); }); DescriptionList.displayName = 'DescriptionList';