import { clsx } from 'clsx' import { Show, createEffect, createMemo, createSignal, on } from 'solid-js' import { useFollowing } from '../../context/following' import { useLocalize } from '../../context/localize' import { useSession } from '../../context/session' import { FollowingEntity, type Topic } from '../../graphql/schema/core.gen' import { capitalize } from '../../utils/capitalize' import { CardTopic } from '../Feed/CardTopic' import { Button } from '../_shared/Button' import { CheckButton } from '../_shared/CheckButton' import { Icon } from '../_shared/Icon' import { ShowOnlyOnClient } from '../_shared/ShowOnlyOnClient' import stylesButton from '../_shared/Button/Button.module.scss' import styles from './Card.module.scss' interface TopicProps { topic: Topic compact?: boolean followed?: boolean shortDescription?: boolean subscribeButtonBottom?: boolean additionalClass?: string isTopicInRow?: boolean iconButton?: boolean showPublications?: boolean showDescription?: boolean isCardMode?: boolean minimize?: boolean isNarrow?: boolean withIcon?: boolean } export const TopicCard = (props: TopicProps) => { const { t, lang } = useLocalize() const title = createMemo(() => capitalize(lang() === 'en' ? props.topic.slug.replaceAll('-', ' ') : props.topic.title || ''), ) const { author, requireAuthentication } = useSession() const [isFollowed, setIsFollowed] = createSignal() const { follow, unfollow, follows, following } = useFollowing() createEffect( on( [() => follows, () => props.topic], ([flws, tpc]) => { if (flws && tpc) { const followed = flws.topics?.some((topics) => topics.id === props.topic?.id) setIsFollowed(followed) } }, { defer: true }, ), ) const handleFollowClick = () => { requireAuthentication(() => { isFollowed() ? unfollow(FollowingEntity.Topic, props.topic.slug) : follow(FollowingEntity.Topic, props.topic.slug) }, 'follow') } const subscribeValue = () => { return ( <> {t('Unfollow')} {t('Following')} ) } return (

{title()}

{props.topic.body}
} >
) }