import React from 'react'; import { ChevronRightIcon } from '@heroicons/react/24/outline'; import { rdsFontSizes } from '../../../utils/tailwindClasses'; import { Badge } from '../../Badge'; import { Link } from '../../Link/Link'; // Set types for as props type BaseItemTypeProps = 'li' | 'div'; type TitleTypeProps = 'h2' | 'h3'; export interface FeedItemProps { children?: React.ReactNode; fontSize?: 'base' | 'lg' | 'xl'; title?: string; link?: string; date?: string; excerpt?: string; category?: string; } export interface ItemBaseProps { as?: keyof JSX.IntrinsicElements; } export interface BaseItemProps { as?: BaseItemTypeProps; } export interface TitleProps { as?: TitleTypeProps; } const FeedItemBase = ({ as: Component = 'div', children, link, }: ItemBaseProps & FeedItemProps) => { return (
{children}
); }; const Content = ({ children }: FeedItemProps) => { return
{children}
; }; const Title = ({ as = 'h3', fontSize = 'base', title, }: TitleProps & FeedItemProps) => { return React.createElement( as, { className: `text-sm font-semibold text-cu-black group-hover:text-cu-red ${rdsFontSizes[fontSize]}`, }, title ); }; const Date = ({ date }: FeedItemProps) => { return

{date}

; }; const Excerpt = ({ excerpt }: FeedItemProps) => { return

{excerpt}

; }; const Category = ({ category }: FeedItemProps) => { return (
{category}
); }; // Set default for base component as props FeedItemBase.defaultProps = { as: 'li', }; FeedItemBase.displayName = 'FeedItem'; Content.displayName = 'FeedItem.Content'; Title.displayName = 'FeedItem.Title'; Date.displayName = 'FeedItem.Date'; Excerpt.displayName = 'FeedItem.Excerpt'; Category.displayName = 'FeedItem.Category'; export const FeedItem = Object.assign(FeedItemBase, { Content, Title, Date, Excerpt, Category, });