postmerge
This commit is contained in:
commit
9f557fb74a
|
@ -1,4 +1,5 @@
|
||||||
<svg width="10" height="12" viewBox="0 0 10 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="10" height="12" viewBox="0 0 10 12" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 7.29824L0.000122786 10.1051L2.77778 10.1053L0 7.29824ZM7.22222 0L0.659722 6.63158L3.4375 9.4386L10 2.80702L7.22222 0Z" fill="#696969"/>
|
<path fill-rule="evenodd" clip-rule="evenodd"
|
||||||
<path d="M0 10.7368H10V12H0V10.7368Z" fill="#696969"/>
|
d="M0 7.29824L0.000122786 10.1051L2.77778 10.1053L0 7.29824ZM7.22222 0L0.659722 6.63158L3.4375 9.4386L10 2.80702L7.22222 0Z" fill="#000"/>
|
||||||
|
<path d="M0 10.7368H10V12H0V10.7368Z" fill="#000"/>
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 346 B After Width: | Height: | Size: 346 B |
5
public/icons/user-link-default.svg
Normal file
5
public/icons/user-link-default.svg
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<svg width="12px" height="12px" viewBox="0 0 12 12"
|
||||||
|
enable-background="new 0 0 12 12" version="1.1"
|
||||||
|
xml:space="preserve" xmlns="http://www.w3.org/2000/svg"><path
|
||||||
|
d="M3.7796631,8.75C4.1953125,10.6790771,5.0326538,12,6,12s1.8046875-1.3209229,2.2203369-3.25H3.7796631z" fill="#fff"/><path d="M9.2371216,3.25h2.0916748c-0.664978-1.2857056-1.779541-2.2975464-3.1375122-2.8312378 C8.6710815,1.1671753,9.0209351,2.1549683,9.2371216,3.25z" fill="#fff"/><path d="M8.3912964,4.25H3.6087036C3.5383911,4.803833,3.5,5.3909912,3.5,6s0.0383911,1.196167,0.1087036,1.75 h4.7825928C8.4616089,7.196167,8.5,6.6090088,8.5,6S8.4616089,4.803833,8.3912964,4.25z" fill="#fff"/><path d="M9.5,6c0,0.5882568-0.0372925,1.1765137-0.1055298,1.75h2.3445435C11.9077148,7.196167,12,6.6090088,12,6 s-0.0922852-1.196167-0.2609863-1.75H9.3944702C9.4627075,4.8234863,9.5,5.4117432,9.5,6z" fill="#fff"/><path d="M8.2203369,3.25C7.8046875,1.3209229,6.9673462,0,6,0S4.1953125,1.3209229,3.7796631,3.25H8.2203369z" fill="#fff"/><path d="M2.7628784,8.75H0.6712036c0.664978,1.2857056,1.779541,2.2975464,3.1375122,2.8312378 C3.3289185,10.8328247,2.9790649,9.8450317,2.7628784,8.75z" fill="#fff"/><path d="M2.5,6c0-0.5882568,0.0372925-1.1765137,0.1055298-1.75H0.2609863C0.0922852,4.803833,0,5.3909912,0,6 s0.0922852,1.196167,0.2609863,1.75h2.3445435C2.5372925,7.1765137,2.5,6.5882568,2.5,6z" fill="#fff"/><path d="M9.2371216,8.75c-0.2161865,1.0950317-0.56604,2.0828247-1.0458374,2.8312378 C9.5492554,11.0475464,10.6638184,10.0357056,11.3287964,8.75H9.2371216z" fill="#fff"/><path d="M2.7628784,3.25c0.2161865-1.0950317,0.56604-2.0828247,1.0458374-2.8312378 C2.4507446,0.9524536,1.3361816,1.9642944,0.6712036,3.25H2.7628784z" fill="#fff"/></svg>
|
After Width: | Height: | Size: 1.7 KiB |
|
@ -3,6 +3,10 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-bottom: 2.4rem;
|
margin-bottom: 2.4rem;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
@include media-breakpoint-down(lg) {
|
@include media-breakpoint-down(lg) {
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
@ -32,6 +36,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.authorSubscribe {
|
.authorSubscribe {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
@include media-breakpoint-down(lg) {
|
@include media-breakpoint-down(lg) {
|
||||||
padding: 0 0 0 42px;
|
padding: 0 0 0 42px;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +55,7 @@
|
||||||
width: 32px;
|
width: 32px;
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
|
background-image: url(/icons/user-link-default.svg);
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: 50% 50%;
|
background-position: 50% 50%;
|
||||||
background-size: contain;
|
background-size: contain;
|
||||||
|
@ -106,6 +114,10 @@
|
||||||
background-image: url(/icons/instagram-white.svg);
|
background-image: url(/icons/instagram-white.svg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.buttonSubscribe {
|
.buttonSubscribe {
|
||||||
|
@ -129,15 +141,26 @@
|
||||||
background: #f7f7f7;
|
background: #f7f7f7;
|
||||||
color: #000;
|
color: #000;
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
|
transition: background-color 0.3s, color 0.3s;
|
||||||
|
|
||||||
@include font-size(1.5rem);
|
@include font-size(1.5rem);
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: #000;
|
||||||
|
color: #fff;
|
||||||
|
|
||||||
|
img {
|
||||||
|
filter: invert(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
margin-right: 0.5em;
|
margin-right: 0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
height: 15px;
|
height: 15px;
|
||||||
|
transition: filter 0.3s;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +178,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.authorSubscribe {
|
.authorSubscribe {
|
||||||
display: flex;
|
|
||||||
margin-top: 2rem;
|
margin-top: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ interface AuthorCardProps {
|
||||||
subscribed?: boolean
|
subscribed?: boolean
|
||||||
author: Author
|
author: Author
|
||||||
isAuthorPage?: boolean
|
isAuthorPage?: boolean
|
||||||
|
noSocialButtons?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export const AuthorCard = (props: AuthorCardProps) => {
|
export const AuthorCard = (props: AuthorCardProps) => {
|
||||||
|
@ -84,7 +85,9 @@ export const AuthorCard = (props: AuthorCardProps) => {
|
||||||
{t('Write')}
|
{t('Write')}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<For each={props.author.links}>{(link) => <a href={link} />}</For>
|
<Show when={!props.noSocialButtons}>
|
||||||
|
<For each={props.author.links}>{(link) => <a href={link} />}</For>
|
||||||
|
</Show>
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
</Show>
|
</Show>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.discours-footer {
|
.discoursFooter {
|
||||||
background: #000;
|
background: #000;
|
||||||
color: rgb(255 255 255 / 64%);
|
color: rgb(255 255 255 / 64%);
|
||||||
@include font-size(1.7rem);
|
@include font-size(1.7rem);
|
||||||
|
@ -34,21 +34,21 @@
|
||||||
margin-top: 0.8rem;
|
margin-top: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wide-container {
|
.wideContainer {
|
||||||
@include media-breakpoint-down(sm) {
|
@include media-breakpoint-down(sm) {
|
||||||
padding: 0 $container-padding-x;
|
padding: 0 $container-padding-x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.discours-footer__content {
|
.discoursFooterContent {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding-left: $grid-gutter-width;
|
padding-left: $grid-gutter-width;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-copyright {
|
.footerCopyright {
|
||||||
border-top: 5px solid #404040;
|
border-top: 5px solid #404040;
|
||||||
color: #696969;
|
color: #696969;
|
||||||
@include font-size(1.5rem);
|
@include font-size(1.5rem);
|
||||||
|
@ -56,7 +56,7 @@
|
||||||
padding-top: 1.6rem;
|
padding-top: 1.6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-copyright__social {
|
.footerCopyrightSocial {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
.icon {
|
.icon {
|
||||||
|
@ -75,12 +75,19 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.social__item {
|
.socialItem {
|
||||||
text-align: right;
|
margin-top: 1em;
|
||||||
|
text-align: center;
|
||||||
width: 25%;
|
width: 25%;
|
||||||
|
|
||||||
|
@include media-breakpoint-up(md) {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-left: 0.3em;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.social__item--vk {
|
.socialItemvk {
|
||||||
img {
|
img {
|
||||||
max-width: 25px;
|
max-width: 25px;
|
||||||
}
|
}
|
|
@ -1,9 +1,10 @@
|
||||||
import { createMemo, For } from 'solid-js'
|
import { createMemo, For } from 'solid-js'
|
||||||
import './Footer.scss'
|
import styles from './Footer.module.scss'
|
||||||
import { Icon } from '../Nav/Icon'
|
import { Icon } from '../Nav/Icon'
|
||||||
import Subscribe from './Subscribe'
|
import Subscribe from './Subscribe'
|
||||||
import { t } from '../../utils/intl'
|
import { t } from '../../utils/intl'
|
||||||
import { locale } from '../../stores/ui'
|
import { locale } from '../../stores/ui'
|
||||||
|
import {clsx} from "clsx";
|
||||||
|
|
||||||
export const Footer = () => {
|
export const Footer = () => {
|
||||||
const locale_title = createMemo(() => (locale() === 'ru' ? 'English' : 'Русский'))
|
const locale_title = createMemo(() => (locale() === 'ru' ? 'English' : 'Русский'))
|
||||||
|
@ -107,12 +108,12 @@ export const Footer = () => {
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
return (
|
return (
|
||||||
<footer class="discours-footer">
|
<footer class={styles.discoursFooter}>
|
||||||
<div class="wide-container">
|
<div class={clsx('wide-container', styles.wideContainer)}>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<For each={links()}>
|
<For each={links()}>
|
||||||
{({ header, items }) => (
|
{({ header, items }) => (
|
||||||
<div class="col-md-3">
|
<div class="col-sm-4 col-md-3">
|
||||||
<h5>{t(header)}</h5>
|
<h5>{t(header)}</h5>
|
||||||
<ul>
|
<ul>
|
||||||
<For each={items}>
|
<For each={items}>
|
||||||
|
@ -134,18 +135,18 @@ export const Footer = () => {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-copyright row">
|
<div class={clsx(styles.footerCopyright, 'row')}>
|
||||||
<div class="col-md-10">
|
<div class="col-md-9 col-lg-10">
|
||||||
Независимый журнал с открытой горизонтальной редакцией о культуре, науке
|
Независимый журнал с открытой горизонтальной редакцией о культуре, науке
|
||||||
и обществе. Дискурс © 2015–2022{' '}
|
и обществе. Дискурс © 2015–2022{' '}
|
||||||
<a href="/about/terms-of-use">{t('Terms of use')}</a>
|
<a href="/about/terms-of-use">{t('Terms of use')}</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer-copyright__social col-md-2">
|
<div class={clsx(styles.footerCopyrightSocial, 'col-md-3 col-lg-2')}>
|
||||||
<For each={[...SOCIAL]}>
|
<For each={[...SOCIAL]}>
|
||||||
{(social) => (
|
{(social) => (
|
||||||
<div class={`social__item social__item--${social.name}`}>
|
<div class={clsx(styles.socialItem, styles[`socialItem${social.name}`])}>
|
||||||
<a href={social.href}>
|
<a href={social.href}>
|
||||||
<Icon name={`${social.name}-white`} />
|
<Icon name={`${social.name}-white`} class={styles.icon} />
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -8,10 +8,6 @@
|
||||||
padding: 3.6rem 0;
|
padding: 3.6rem 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
@include media-breakpoint-up(md) {
|
|
||||||
margin-top: -6.4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
h4 {
|
||||||
margin-bottom: 4rem;
|
margin-bottom: 4rem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
.subscribe-form {
|
.subscribeForm {
|
||||||
display: flex;
|
display: flex;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
|
@include media-breakpoint-between(md, xl) {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
background: none;
|
background: none;
|
||||||
border: none;
|
border: none;
|
||||||
|
@ -30,6 +34,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
button {
|
button {
|
||||||
|
margin-top: 0;
|
||||||
padding-bottom: 0.8rem;
|
padding-bottom: 0.8rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
import { createSignal, onMount } from 'solid-js'
|
import { createSignal, onMount } from 'solid-js'
|
||||||
import './Subscribe.scss'
|
import styles from './Subscribe.module.scss'
|
||||||
import { t } from '../../utils/intl'
|
import { t } from '../../utils/intl'
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
|
@ -8,12 +8,12 @@ export default () => {
|
||||||
const subscribe = async () => {
|
const subscribe = async () => {
|
||||||
setTitle(t('...subscribing'))
|
setTitle(t('...subscribing'))
|
||||||
const r = await fetch(`/maillist?email=${emailElement?.value}`)
|
const r = await fetch(`/maillist?email=${emailElement?.value}`)
|
||||||
setTitle(r.ok ? t('You are subscribed') : t('Subscribe'))
|
setTitle(r.ok ? t('You are subscribed') : '')
|
||||||
}
|
}
|
||||||
onMount(() => setTitle(t('Subscribe')))
|
|
||||||
return (
|
return (
|
||||||
<div class="subscribe-form">
|
<div class={styles.subscribeForm}>
|
||||||
<input type="email" name="email" ref={emailElement} placeholder="email" value={title()} />
|
<input type="email" name="email" ref={emailElement} placeholder={t('Fill email')} value={title()} />
|
||||||
<button class="button--light" onClick={() => emailElement?.value && subscribe()}>
|
<button class="button--light" onClick={() => emailElement?.value && subscribe()}>
|
||||||
{t('Subscribe')}
|
{t('Subscribe')}
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -3,6 +3,10 @@
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
|
|
||||||
|
@include media-breakpoint-up(md) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
@ -16,6 +20,12 @@
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
border: none;
|
border: none;
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
|
||||||
|
.shoutCardContent {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
|
|
|
@ -42,7 +42,7 @@ export default (props: BesideProps) => {
|
||||||
</Show>
|
</Show>
|
||||||
<ul class={style.besideColumn}>
|
<ul class={style.besideColumn}>
|
||||||
<For each={[...props.values]}>
|
<For each={[...props.values]}>
|
||||||
{(value: Shout | User | Topic | Author) => (
|
{(value: Partial<Shout | User | Topic>) => (
|
||||||
<li classList={{ [style.top]: props.wrapper.startsWith('top-') }}>
|
<li classList={{ [style.top]: props.wrapper.startsWith('top-') }}>
|
||||||
<Show when={props.wrapper === 'topic'}>
|
<Show when={props.wrapper === 'topic'}>
|
||||||
<TopicCard
|
<TopicCard
|
||||||
|
|
|
@ -5,6 +5,12 @@
|
||||||
margin-bottom: 2.4rem;
|
margin-bottom: 2.4rem;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
@include media-breakpoint-up(md) {
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
.shoutCardCover img {
|
.shoutCardCover img {
|
||||||
transform: scale(1.05);
|
transform: scale(1.05);
|
||||||
|
@ -212,6 +218,10 @@
|
||||||
|
|
||||||
@include media-breakpoint-up(md) {
|
@include media-breakpoint-up(md) {
|
||||||
margin-bottom: 2em;
|
margin-bottom: 2em;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,7 +487,7 @@
|
||||||
.shoutCardVertical {
|
.shoutCardVertical {
|
||||||
aspect-ratio: auto;
|
aspect-ratio: auto;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
margin: 1.6rem 0;
|
margin: 0;
|
||||||
padding: 0 0 20%;
|
padding: 0 0 20%;
|
||||||
|
|
||||||
@include media-breakpoint-up(md) {
|
@include media-breakpoint-up(md) {
|
||||||
|
|
|
@ -8,9 +8,12 @@ import { Icon } from '../Nav/Icon'
|
||||||
import style from './Card.module.scss'
|
import style from './Card.module.scss'
|
||||||
import { locale } from '../../stores/ui'
|
import { locale } from '../../stores/ui'
|
||||||
import { handleClientRouteLinkClick } from '../../stores/router'
|
import { handleClientRouteLinkClick } from '../../stores/router'
|
||||||
|
import { getLogger } from '../../utils/logger'
|
||||||
import { clsx } from 'clsx'
|
import { clsx } from 'clsx'
|
||||||
import CardTopic from './CardTopic'
|
import CardTopic from './CardTopic'
|
||||||
|
|
||||||
|
const log = getLogger('card component')
|
||||||
|
|
||||||
interface ArticleCardProps {
|
interface ArticleCardProps {
|
||||||
settings?: {
|
settings?: {
|
||||||
noicon?: boolean
|
noicon?: boolean
|
||||||
|
|
|
@ -51,7 +51,7 @@ export const Header = (props: Props) => {
|
||||||
const isFixed = fixed() || (getModal() && getModal() !== 'share');
|
const isFixed = fixed() || (getModal() && getModal() !== 'share');
|
||||||
|
|
||||||
document.body.classList.toggle('fixed', isFixed);
|
document.body.classList.toggle('fixed', isFixed);
|
||||||
document.body.classList.toggle(styles.fixed, isFixed);
|
document.body.classList.toggle(styles.fixed, isFixed && !getModal());
|
||||||
}, [fixed(), getModal()])
|
}, [fixed(), getModal()])
|
||||||
|
|
||||||
// derived
|
// derived
|
||||||
|
|
|
@ -54,29 +54,28 @@ export const ManifestPage = () => {
|
||||||
|
|
||||||
<div class="col-lg-10 offset-md-1">
|
<div class="col-lg-10 offset-md-1">
|
||||||
<p>
|
<p>
|
||||||
Дискурс - независимый художественно-аналитический журнал с горизонтальной редакцией,
|
Дискурс — независимый художественно-аналитический журнал с горизонтальной редакцией,
|
||||||
основанный на принципах свободы слова, прямой демократии и совместного редактирования.
|
основанный на принципах свободы слова, прямой демократии и совместного редактирования.
|
||||||
Дискурс создаётся открытым медиасообществом ученых, журналистов, музыкантов, писателей,
|
Дискурс создаётся открытым медиасообществом ученых, журналистов, музыкантов, писателей,
|
||||||
предпринимателей, философов, инженеров, художников и специалистов со всего мира,
|
предпринимателей, философов, инженеров, художников и специалистов со всего мира,
|
||||||
объединившихся, чтобы вместе делать общий журнал и объяснять с разных точек зрения мозаичную
|
объединившихся, чтобы вместе делать общий журнал и объяснять с разных точек
|
||||||
картину современности.
|
зрения мозаичную картину современности.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Мы пишем о культуре, науке и обществе, рассказываем о новых идеях и современном искусстве,
|
Мы пишем о культуре, науке и обществе, рассказываем о новых идеях и современном искусстве,
|
||||||
публикуем статьи, исследования, репортажи, интервью людей, чью прямую речь стоит услышать, и
|
публикуем статьи, исследования, репортажи, интервью людей, чью прямую речь стоит услышать,
|
||||||
работы художников из разных стран - от фильмов и музыки до живописи и фотографии. Помогая
|
и работы художников из разных стран — от фильмов и музыки
|
||||||
друг другу делать публикации качественнее и общим голосованием выбирая лучшие материалы для
|
до живописи и фотографии. Помогая друг другу делать публикации качественнее
|
||||||
журнала, мы создаём новую горизонтальную журналистику, чтобы честно рассказывать о важном и
|
и общим голосованием выбирая лучшие материалы для журнала, мы создаём новую
|
||||||
интересном.
|
горизонтальную журналистику, чтобы честно рассказывать о важном и интересном.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Редакция Дискурса открыта для всех: у нас нет цензуры, запретных тем и идеологических рамок.
|
Редакция Дискурса открыта для всех: у нас нет цензуры, запретных тем и идеологических рамок.
|
||||||
Каждый может
|
Каждый может <a href="/create">прислать материал</a> в журнал
|
||||||
<a href="/create">прислать материал</a> в журнал и{' '}
|
и <a href="/about/guide">присоединиться к редакции</a>. Предоставляя трибуну
|
||||||
<a href="/about/guide">присоединиться к редакции</a>. Предоставляя трибуну для независимой
|
для независимой журналистики и художественных проектов, мы помогаем людям
|
||||||
журналистики и художественных проектов, мы помогаем людям рассказывать свои истории так,
|
рассказывать свои истории так, чтобы они были услышаны. Мы убеждены: чем больше
|
||||||
чтобы они были услышаны. Мы убеждены: чем больше голосов будет звучать на Дискурсе, тем
|
голосов будет звучать на Дискурсе, тем громче в полифонии мнений будет слышна истина.
|
||||||
громче в полифонии мнений будет слышна истина.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -87,56 +86,55 @@ export const ManifestPage = () => {
|
||||||
<div class="col-lg-10 offset-md-1">
|
<div class="col-lg-10 offset-md-1">
|
||||||
<p>
|
<p>
|
||||||
Дискурс создается <a href="/about/guide">открытым сообществом</a> энтузиастов новой
|
Дискурс создается <a href="/about/guide">открытым сообществом</a> энтузиастов новой
|
||||||
независимой журналистики. Участвовать в открытой редакции и помогать журналу можно
|
независимой журналистики. Участвовать в открытой редакции и помогать журналу можно
|
||||||
следующими способами:
|
следующими способами:
|
||||||
</p>
|
</p>
|
||||||
<h3 id="contribute">Предлагать материалы</h3>
|
<h3 id="contribute">Предлагать материалы</h3>
|
||||||
<p>
|
<p>
|
||||||
<a href="/create">Создавайте</a> свои статьи и художественные работы - лучшие из них будут
|
<a href="/create">Создавайте</a> свои статьи и художественные работы — лучшие из них будут
|
||||||
опубликованы в журнале. Дискурс - некоммерческое издание, авторы публикуются в журнале на
|
опубликованы в журнале. Дискурс — некоммерческое издание, авторы публикуются
|
||||||
общественных началах, получая при этом <a href="/create?collab=true">поддержку</a> редакции,
|
в журнале на общественных началах, получая при этом <a href="/create?collab=true">поддержку</a> редакции,
|
||||||
право голоса, множество других возможностей и читателей по всему миру.
|
право голоса, множество других возможностей и читателей по всему миру.
|
||||||
</p>
|
</p>
|
||||||
<h3 id="donate">Поддерживать проект</h3>
|
<h3 id="donate">Поддерживать проект</h3>
|
||||||
<p>Дискурс существует на пожертвования читателей. Если вам нравится журнал, пожалуйста,</p>
|
<p>Дискурс существует на пожертвования читателей. Если вам нравится журнал, пожалуйста,</p>
|
||||||
<p>
|
<p>
|
||||||
<a href="/about/help">поддержите</a> нашу работу. Ваши пожертвования пойдут на выпуск новых
|
<a href="/about/help">поддержите</a> нашу работу. Ваши пожертвования пойдут на выпуск новых
|
||||||
материалов, оплату серверов, труда программистов, дизайнеров и редакторов.
|
материалов, оплату серверов, труда программистов, дизайнеров и редакторов.
|
||||||
</p>
|
</p>
|
||||||
<h3 id="cooperation">Сотрудничать с журналом</h3>
|
<h3 id="cooperation">Сотрудничать с журналом</h3>
|
||||||
<p>
|
<p>
|
||||||
Мы всегда открыты для сотрудничества и рады единомышленникам. Если вы хотите помогать
|
Мы всегда открыты для сотрудничества и рады единомышленникам. Если вы хотите помогать
|
||||||
журналу с редактурой, корректурой, иллюстрациями, переводами, версткой, подкастами,
|
журналу с редактурой, корректурой, иллюстрациями, переводами, версткой, подкастами,
|
||||||
мероприятиями, фандрайзингом или как-то ещё - скорее пишите нам на{' '}
|
мероприятиями, фандрайзингом или как-то ещё — скорее пишите нам
|
||||||
<a href="mailto:welcome@discours.io">welcome@discours.io</a>.
|
на <a href="mailto:welcome@discours.io">welcome@discours.io</a>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Если вы представляете некоммерческую организацию и хотите сделать с нами совместный проект,
|
Если вы представляете некоммерческую организацию и хотите сделать с нами
|
||||||
получить информационную поддержку или предложить другую форму сотрудничества -
|
совместный проект, получить информационную поддержку или предложить другую форму
|
||||||
[пишите](mailto:welcome@discours.io).
|
сотрудничества — <a href="mailto:welcome@discours.io">пишите</a>.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Если вы разработчик и хотите помогать с развитием сайта Дискурса,
|
Если вы разработчик и хотите помогать с развитием сайта Дискурса,{' '}
|
||||||
<a href="mailto:services@discours.io">присоединяйтесь к IT-команде самиздата</a>. Открытый
|
<a href="mailto:services@discours.io">присоединяйтесь к IT-команде самиздата</a>. Открытый
|
||||||
код платформы для независимой журналистики, а также всех наших спецпроектов и
|
код платформы для независимой журналистики, а также всех наших спецпроектов
|
||||||
медиаинструментов находится
|
и медиаинструментов находится <a href="https://github.com/Discours">в свободном доступе на GitHub</a>.
|
||||||
<a href="https://github.com/Discours">в свободном доступе на GitHub</a>.
|
|
||||||
</p>
|
</p>
|
||||||
<h3 id="follow">Как еще можно помочь</h3>
|
<h3 id="follow">Как еще можно помочь</h3>
|
||||||
<p>
|
<p>
|
||||||
Советуйте Дискурс друзьям и знакомым. Обсуждайте и распространяйте наши публикации — все
|
Советуйте Дискурс друзьям и знакомым. Обсуждайте и распространяйте наши
|
||||||
материалы открытой редакции можно читать и перепечатывать бесплатно. Подпишитесь на самиздат
|
публикации — все материалы открытой редакции можно читать и перепечатывать
|
||||||
<a href="https://vk.com/discoursio">ВКонтакте</a>, в{' '}
|
бесплатно. Подпишитесь на самиздат{' '}
|
||||||
<a href="https://facebook.com/discoursio">Фейсбуке</a> и в
|
<a href="https://vk.com/discoursio">ВКонтакте</a>,
|
||||||
<a href="https://t.me/discoursio">Телеграме</a>, а также на{' '}
|
в <a href="https://facebook.com/discoursio">Фейсбуке</a>
|
||||||
<Opener name="subscribe">рассылку лучших материалов</Opener> , чтобы не пропустить ничего
|
и в <a href="https://t.me/discoursio">Телеграме</a>, а также
|
||||||
интересного.
|
на <Opener name="subscribe">рассылку лучших материалов</Opener>,
|
||||||
|
чтобы не пропустить ничего интересного.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<a href="https://forms.gle/9UnHBAz9Q3tjH5dAA">Рассказывайте о впечатлениях</a> от материалов
|
<a href="https://forms.gle/9UnHBAz9Q3tjH5dAA">Рассказывайте о впечатлениях</a>
|
||||||
открытой редакции,
|
от материалов открытой редакции, <Opener name="feedback">делитесь идеями</Opener>,
|
||||||
<Opener name="feedback">делитесь идеями</Opener>, интересными темами, о которых хотели бы
|
интересными темами, о которых хотели бы узнать больше, и историями, которые нужно рассказать.
|
||||||
узнать больше, и историями, которые нужно рассказать.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -145,11 +143,11 @@ export const ManifestPage = () => {
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="col-lg-10 offset-md-1">
|
<div class="col-lg-10 offset-md-1">
|
||||||
Если вы хотите предложить материал, сотрудничать, рассказать о проблеме, которую нужно
|
Если вы хотите предложить материал, сотрудничать, рассказать о проблеме, которую нужно
|
||||||
осветить, сообщить об ошибке или баге, что-то обсудить, уточнить или посоветовать, пожалуйста,{' '}
|
осветить, сообщить об ошибке или баге, что-то обсудить, уточнить или посоветовать,
|
||||||
<Opener name="feedback">напишите нам здесь</Opener>
|
пожалуйста, <Opener name="feedback">напишите нам здесь</Opener> или
|
||||||
или на почту <a href="mailto:welcome@discours.io">welcome@discours.io</a>. Мы обязательно
|
на почту <a href="mailto:welcome@discours.io">welcome@discours.io</a>. Мы обязательно
|
||||||
ответим и постараемся реализовать все хорошие задумки.
|
ответим и постараемся реализовать все хорошие задумки.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,6 +8,10 @@ import { t } from '../../utils/intl'
|
||||||
import { locale } from '../../stores/ui'
|
import { locale } from '../../stores/ui'
|
||||||
import { useAuthStore } from '../../stores/auth'
|
import { useAuthStore } from '../../stores/auth'
|
||||||
import { follow, unfollow } from '../../stores/zine/common'
|
import { follow, unfollow } from '../../stores/zine/common'
|
||||||
|
import { getLogger } from '../../utils/logger'
|
||||||
|
import { Icon } from '../Nav/Icon'
|
||||||
|
|
||||||
|
const log = getLogger('TopicCard')
|
||||||
|
|
||||||
interface TopicProps {
|
interface TopicProps {
|
||||||
topic: Topic
|
topic: Topic
|
||||||
|
|
|
@ -102,6 +102,7 @@ export const AllAuthorsView = (props: Props) => {
|
||||||
compact={false}
|
compact={false}
|
||||||
hasLink={true}
|
hasLink={true}
|
||||||
subscribed={subscribed(author.slug)}
|
subscribed={subscribed(author.slug)}
|
||||||
|
noSocialButtons={true}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</For>
|
</For>
|
||||||
|
|
29
src/graphql/query/article-reactions.ts.bak
Normal file
29
src/graphql/query/article-reactions.ts.bak
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
import { gql } from '@urql/core'
|
||||||
|
|
||||||
|
export default gql`
|
||||||
|
query ReactionsByShoutQuery($slug: String!, $limit: Int!, $offset: Int!) {
|
||||||
|
reactionsByShout(slug: $slug, limit: $limit, offset: $offset) {
|
||||||
|
id
|
||||||
|
body
|
||||||
|
createdAt
|
||||||
|
createdBy {
|
||||||
|
_id: slug
|
||||||
|
name
|
||||||
|
slug
|
||||||
|
userpic
|
||||||
|
}
|
||||||
|
updatedAt
|
||||||
|
replyTo {
|
||||||
|
id
|
||||||
|
}
|
||||||
|
kind
|
||||||
|
range
|
||||||
|
stat {
|
||||||
|
_id: viewed
|
||||||
|
viewed
|
||||||
|
reacted
|
||||||
|
rating
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
|
@ -38,6 +38,7 @@
|
||||||
"Favorite topics": "Избранные темы",
|
"Favorite topics": "Избранные темы",
|
||||||
"Feed settings": "Настройки ленты",
|
"Feed settings": "Настройки ленты",
|
||||||
"Feedback": "Обратная связь",
|
"Feedback": "Обратная связь",
|
||||||
|
"Fill email": "Введите почту",
|
||||||
"Follow": "Подписаться",
|
"Follow": "Подписаться",
|
||||||
"Follow the topic": "Подписаться на тему",
|
"Follow the topic": "Подписаться на тему",
|
||||||
"Forgot password?": "Забыли пароль?",
|
"Forgot password?": "Забыли пароль?",
|
||||||
|
|
|
@ -462,15 +462,19 @@ figcaption {
|
||||||
}
|
}
|
||||||
|
|
||||||
.floor--7 {
|
.floor--7 {
|
||||||
@include media-breakpoint-down(md) {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.col-md-6 {
|
.col-md-6 {
|
||||||
margin-bottom: 1.6em;
|
@include media-breakpoint-down(lg) {
|
||||||
|
&:nth-child(1),
|
||||||
|
&:nth-child(2) {
|
||||||
|
margin-bottom: 1.6em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@include media-breakpoint-down(md) {
|
@include media-breakpoint-down(md) {
|
||||||
margin-right: 0;
|
&:nth-child(3),
|
||||||
|
&:nth-child(4) {
|
||||||
|
margin-bottom: 1.6em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -592,7 +596,7 @@ astro-island {
|
||||||
|
|
||||||
@include media-breakpoint-up(md) {
|
@include media-breakpoint-up(md) {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 2rem;
|
top: 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul ul {
|
ul ul {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user