import { settings } from '@utils/config'; import { articleBySlugQuery, articlesCardQuery, articlesEndCursor, articlesQuery, articlesSlugQuery, totalArticlesQuery, } from './articles.query'; import { sendCommentMutation } from './comments.mutation'; import { commentsQuery } from './comments.query'; import { sendMailMutation } from './contact.mutation'; import { thematicBySlugQuery, thematicsListQuery, thematicsSlugQuery, totalThematicsQuery, } from './thematics.query'; import { topicBySlugQuery, topicsListQuery, topicsSlugQuery, totalTopicsQuery, } from './topics.query'; export type Mutations = typeof sendMailMutation | typeof sendCommentMutation; export type Queries = | typeof articlesQuery | typeof articleBySlugQuery | typeof articlesCardQuery | typeof articlesEndCursor | typeof articlesSlugQuery | typeof commentsQuery | typeof thematicBySlugQuery | typeof thematicsListQuery | typeof thematicsSlugQuery | typeof topicBySlugQuery | typeof topicsListQuery | typeof topicsSlugQuery | typeof totalArticlesQuery | typeof totalThematicsQuery | typeof totalTopicsQuery; export type ArticleResponse = { post: T; }; export type ArticlesResponse = { posts: T; }; export type CommentsResponse = { comments: T; }; export type SendCommentResponse = { createComment: T; }; export type SendMailResponse = { sendEmail: T; }; export type ThematicResponse = { thematic: T; }; export type ThematicsResponse = { thematics: T; }; export type TopicResponse = { topic: T; }; export type TopicsResponse = { topics: T; }; export type PageInfo = { endCursor: string; hasNextPage: boolean; total: number; }; export type Edges = { cursor: string; node: T; }; export type EdgesResponse = { edges: Edges[]; pageInfo: PageInfo; }; export type NodeResponse = { node: T; }; export type NodesResponse = { nodes: T[]; }; export type EndCursor = Pick< EdgesResponse>, 'pageInfo' >; export type ResponseMap = { [articleBySlugQuery]: ArticleResponse; [articlesCardQuery]: ArticlesResponse>; [articlesEndCursor]: ArticlesResponse; [articlesQuery]: ArticlesResponse>; [articlesSlugQuery]: ArticlesResponse>; [commentsQuery]: CommentsResponse>; [sendCommentMutation]: SendCommentResponse; [sendMailMutation]: SendMailResponse; [thematicBySlugQuery]: ThematicResponse; [thematicsListQuery]: ThematicsResponse>; [thematicsSlugQuery]: ThematicsResponse>; [topicBySlugQuery]: TopicResponse; [topicsListQuery]: TopicsResponse>; [topicsSlugQuery]: TopicsResponse>; [totalArticlesQuery]: ArticlesResponse; [totalThematicsQuery]: ThematicsResponse; [totalTopicsQuery]: TopicsResponse; }; export type GraphQLResponse< T extends keyof ResponseMap, U > = ResponseMap[T]; export type BySlugVar = { /** * A slug. */ slug: string; }; export type EdgesVars = { /** * A cursor. */ after?: string; /** * The number of items to return. */ first: number; /** * A search query. */ search?: string; }; export type ByContentIdVar = { /** * An article id. */ contentId: number; }; export type SearchVar = { /** * A search term. */ search?: string; }; export type SendCommentVars = { /** * The author name. */ author: string; /** * The author e-mail address. */ authorEmail: string; /** * The author website. */ authorUrl: string; /** * A mutation id. */ clientMutationId: string; /** * A post or page id. */ commentOn: number; /** * The comment body. */ content: string; /** * The comment parent. */ parent?: number; }; export type SendMailVars = { /** * The mail body. */ body: string; /** * A mutation id. */ clientMutationId: string; /** * The reply to e-mail address. */ replyTo: string; /** * The mail subject. */ subject: string; }; export type VariablesMap = { [articleBySlugQuery]: BySlugVar; [articlesCardQuery]: EdgesVars; [articlesEndCursor]: EdgesVars; [articlesQuery]: EdgesVars; [articlesSlugQuery]: EdgesVars;
@use "@styles/abstracts/functions" as fun;

.wrapper {
  padding: var(--spacing-sm) var(--spacing-md);
  border: fun.convert-px(1) solid var(--color-border);
}

.cover {
  max-height: fun.convert-px(150);
  margin: 0 auto var(--spacing-md);
  border: fun.convert-px(1) solid var(--color-border);
}