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 MarketplaceItemProps {
children?: React.ReactNode;
fontSize?: 'base' | 'lg' | 'xl';
title?: string;
link?: string;
image?: string;
alt?: string;
cost?: string;
condition?: string;
category?: string;
}
export interface ItemBaseProps {
as?: keyof JSX.IntrinsicElements;
}
export interface BaseItemProps {
as?: BaseItemTypeProps;
}
export interface TitleProps {
as?: TitleTypeProps;
}
const MarketplaceItemBase = ({
as: Component = 'div',
children,
link,
}: ItemBaseProps & MarketplaceItemProps) => {
return (
{children}
);
};
const Content = ({ children }: MarketplaceItemProps) => {
return
{children}
;
};
const Title = ({
as = 'h3',
fontSize = 'base',
title,
}: TitleProps & MarketplaceItemProps) => {
return React.createElement(
as,
{
className: `text-sm font-semibold text-cu-black group-hover:text-cu-red ${rdsFontSizes[fontSize]}`,
},
title
);
};
const Image = ({ image, alt }: MarketplaceItemProps) => {
return (
);
};
const Details = ({ cost, condition }: MarketplaceItemProps) => {
return (
-
{condition} condition for {cost}
);
};
const Category = ({ category }: MarketplaceItemProps) => {
return (
{category}
);
};
// Set default for base component as props
MarketplaceItemBase.defaultProps = {
as: 'li',
};
MarketplaceItemBase.displayName = 'MarketplaceItem';
Content.displayName = 'MarketplaceItem.Content';
Title.displayName = 'MarketplaceItem.Title';
Image.displayName = 'MarketplaceItem.Image';
Details.displayName = 'MarketplaceItem.Details';
Category.displayName = 'MarketplaceItem.Category';
export const MarketplaceItem = Object.assign(MarketplaceItemBase, {
Content,
Title,
Image,
Details,
Category,
});