import { capitalize } from '../../utils' import styles from './Card.module.scss' import { createMemo, createSignal, Show } from 'solid-js' import type { Topic } from '../../graphql/types.gen' import { FollowingEntity } from '../../graphql/types.gen' import { follow, unfollow } from '../../stores/zine/common' import { clsx } from 'clsx' import { useSession } from '../../context/session' import { ShowOnlyOnClient } from '../_shared/ShowOnlyOnClient' import { Icon } from '../_shared/Icon' import { useLocalize } from '../../context/localize' import { CardTopic } from '../Feed/CardTopic' interface TopicProps { topic: Topic compact?: boolean subscribed?: boolean shortDescription?: boolean subscribeButtonBottom?: boolean additionalClass?: string isTopicInRow?: boolean iconButton?: boolean showPublications?: boolean showDescription?: boolean isCardMode?: boolean } export const TopicCard = (props: TopicProps) => { const { t } = useLocalize() const { session, isSessionLoaded, actions: { loadSession } } = useSession() const [isSubscribing, setIsSubscribing] = createSignal(false) const subscribed = createMemo(() => { if (!session()?.user?.slug || !session()?.news?.topics) { return false } return session()?.news.topics.includes(props.topic.slug) }) const subscribe = async (really = true) => { setIsSubscribing(true) await (really ? follow({ what: FollowingEntity.Topic, slug: props.topic.slug }) : unfollow({ what: FollowingEntity.Topic, slug: props.topic.slug })) await loadSession() setIsSubscribing(false) } return (

{capitalize(props.topic.title || '')}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec porta gravida urna, et vestibulum dolor fermentum malesuada. Aenean est arcu, imperdiet vel aliquet quis, egestas ac justo. Maecenas viverra enim a efficitur accumsan. Donec eu iaculis purus. Sed malesuada arcu sed nisl luctus ultrices. Maecenas eget odio vitae turpis sollicitudin rutrum. Fusce rutrum urna felis, id efficitur lacus faucibus et. Duis at libero dui. Quisque vitae pretium mi. Etiam non leo ut nisi ornare auctor sit amet et enim. Aenean tempor ullamcorper augue, et mattis augue vestibulum sed. Curabitur nec luctus sem. Phasellus imperdiet rhoncus lacus, in ultrices elit mollis ac. Donec luctus dignissim cursus. Pellentesque sed risus sodales, tincidunt urna a, cursus ligula. Curabitur nec nibh urna. Integer hendrerit quam eget diam malesuada, ac sagittis eros efficitur. Sed ut orci eu quam mattis commodo. Nullam elementum nulla massa. Morbi placerat, lorem vitae venenatis mollis, arcu erat sodales sapien, sit amet vehicula nunc tellus eget eros. Sed arcu massa, vehicula sit amet viverra ut, eleifend ac leo. Mauris volutpat ex at orci tempor sodales.
{props.topic.body}
) }