({question}: Props)
| 13 | } |
| 14 | |
| 15 | export default function QuestionCard({question}: Props) { |
| 16 | return ( |
| 17 | <div className='flex gap-6 px-6 w-full'> |
| 18 | <div className='flex flex-col items-end gap-4 text-sm font-light min-w-[6rem]'> |
| 19 | <div>{question.votes} {question.votes === 1 ? 'vote' : 'votes'}</div> |
| 20 | <div |
| 21 | className={clsx('flex justify-end rounded', { |
| 22 | 'border-2 border-success': question.answerCount > 0, |
| 23 | 'bg-success-600 text-default-50': question.hasAcceptedAnswer |
| 24 | })} |
| 25 | > |
| 26 | <span className={clsx('flex items-center gap-2', { |
| 27 | 'p-1': question.answerCount > 0 |
| 28 | })}> |
| 29 | {question.hasAcceptedAnswer && |
| 30 | <CheckIcon className="h-4 w-4" strokeWidth={4}/>} |
| 31 | {question.answerCount} {question.answerCount === 1 ? 'answer' : 'answers'} |
| 32 | </span> |
| 33 | </div> |
| 34 | <div>{question.viewCount} {question.viewCount === 1 ? 'view' : 'views'}</div> |
| 35 | </div> |
| 36 | <div className='flex flex-1 justify-between min-h-32'> |
| 37 | <div className='flex flex-col gap-2 w-full'> |
| 38 | <Link |
| 39 | href={`/questions/${question.id}`} |
| 40 | className='text-primary font-semibold hover:underline first-letter:uppercase' |
| 41 | > |
| 42 | {question.title} |
| 43 | </Link> |
| 44 | <div |
| 45 | className='line-clamp-2' |
| 46 | dangerouslySetInnerHTML={{__html: question.content}} |
| 47 | /> |
| 48 | <div className='flex justify-between pt-2'> |
| 49 | <div className='flex gap-2'> |
| 50 | {question.tagSlugs.map(tag => ( |
| 51 | <Chip key={tag} variant='bordered' as={Link} href={`/questions?tag=${tag}`}> |
| 52 | {tag} |
| 53 | </Chip> |
| 54 | ))} |
| 55 | </div> |
| 56 | |
| 57 | <div className='text-sm flex items-center gap-2'> |
| 58 | <Avatar className='h-6 w-6' color='secondary' |
| 59 | name={question.author?.displayName.charAt(0)}/> |
| 60 | <Link href={`/profiles/${question.askerId}`} className='text-secondary'> |
| 61 | {question.author?.displayName} |
| 62 | </Link> |
| 63 | <span>asked {timeAgo(question.createdAt)}</span> |
| 64 | </div> |
| 65 | </div> |
| 66 | </div> |
| 67 | |
| 68 | </div> |
| 69 | </div> |
| 70 | ); |
| 71 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…