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 (
{collection.sensitive && (
-
)}
{withAuthorHandle && authorAccount && (
)}
{withTimestamp && (
,
}}
tagName='li'
/>
)}
);
};