()
| 37 | const firstImage = focused.attachments.filter(isImageAttachment).at(0); |
| 38 | |
| 39 | const MainContent = () => ( |
| 40 | <div className={'inner'}> |
| 41 | <div className="flex flex-col items-start gap-2 pb-2 text-xs sm:flex-row sm:items-center md:text-base"> |
| 42 | <Link |
| 43 | href={`/c/${server.id}`} |
| 44 | className={'flex items-center gap-2 hover:underline'} |
| 45 | > |
| 46 | <ServerIcon server={server} size={24} /> |
| 47 | <span>{server.name}</span> |
| 48 | </Link> |
| 49 | <div className={'flex flex-col gap-2 md:flex-row'}> |
| 50 | <span className={'hidden text-sm text-muted-foreground md:block'}> |
| 51 | • |
| 52 | </span> |
| 53 | <span className={'text-sm text-muted-foreground'}> |
| 54 | Created by {root.author.name} on {getSnowflakeUTCDate(root.id)} in{' '} |
| 55 | <Link |
| 56 | className={'hover:underline'} |
| 57 | href={`/c/${server.id}/${parent.id}`} |
| 58 | > |
| 59 | #{parent.name} |
| 60 | </Link> |
| 61 | </span> |
| 62 | </div> |
| 63 | </div> |
| 64 | <div className={'pb-2 font-semibold'}> |
| 65 | <span className={'text-lg'}>{thread.name}</span> |
| 66 | </div> |
| 67 | <div |
| 68 | className={ |
| 69 | 'max-h-[300px] overflow-hidden whitespace-break-spaces font-body text-primary' |
| 70 | } |
| 71 | > |
| 72 | {firstImage ? ( |
| 73 | <MessageImage attachment={firstImage} /> |
| 74 | ) : ( |
| 75 | <>{discordMarkdownAsHTML}</> |
| 76 | )} |
| 77 | </div> |
| 78 | <div className={'pt-2'}> |
| 79 | <div className={'flex items-center gap-2'}> |
| 80 | <FaRegMessage className={'size-4'} /> |
| 81 | <span>{count ?? 0} replies</span> |
| 82 | </div> |
| 83 | </div> |
| 84 | </div> |
| 85 | ); |
| 86 | |
| 87 | return ( |
| 88 | <div |
nothing calls this directly
no test coverage detected