import { FormattedMessage } from 'react-intl'; import classNames from 'classnames'; import { ListItemLink, ListItemWrapper } from '@/mastodon/components/list_item'; import WarningIcon from '@/material-icons/400-24px/warning.svg?react'; import type { ApiCollectionJSON } from 'mastodon/api_types/collections'; import { AvatarById } from 'mastodon/components/avatar'; import { useAccountHandle } from 'mastodon/components/display_name/default'; import { RelativeTimestamp } from 'mastodon/components/relative_timestamp'; import { useAccount } from 'mastodon/hooks/useAccount'; import { domain } from 'mastodon/initial_state'; import { getCollectionPath } from '../utils'; import classes from './collection_lockup.module.scss'; export const AvatarGrid: React.FC<{ accountIds: (string | undefined)[]; sensitive?: boolean; }> = ({ accountIds: ids, sensitive }) => { const avatarIds = [ids[0], ids[1], ids[2], ids[3]]; return (
{avatarIds.map((id, index) => ( ))} {sensitive && }
); }; export interface CollectionLockupProps { collection: ApiCollectionJSON; withAuthorHandle?: boolean; withTimestamp?: boolean; sideContent?: React.ReactNode; className?: string; headingLevel?: 'h2' | 'h3' | 'h4'; } export const CollectionLockup: React.FC = ({ collection, withAuthorHandle = true, withTimestamp, sideContent, headingLevel = 'h3', className, }) => { const { id, name } = collection; return ( item.account_id)} sensitive={collection.sensitive} /> } sideContent={sideContent} > } > {name} ); }; export const CollectionInfo: React.FC< Pick< CollectionLockupProps, 'collection' | 'withAuthorHandle' | 'withTimestamp' > > = ({ collection, withAuthorHandle, withTimestamp }) => { const authorAccount = useAccount(collection.account_id); const authorHandle = useAccountHandle(authorAccount, domain); return ( ); };