Style fixes

This commit is contained in:
kvakazyambra 2022-11-21 00:23:12 +03:00
parent 2457ae05ac
commit 94f9e77203
18 changed files with 331 additions and 322 deletions

View File

@ -29,13 +29,8 @@
display: flex;
flex-direction: column;
justify-content: center;
padding-left: 0;
padding-top: 1em;
@include media-breakpoint-up(sm) {
padding-left: $grid-gutter-width;
}
a {
display: inline-block;
margin: 0 1em 1em 0;

View File

@ -6,19 +6,21 @@ import { clsx } from 'clsx'
export default () => {
return (
<div class={styles.discoursBanner}>
<div class="wide-container row">
<div class={clsx(styles.discoursBannerContent, 'col-lg-5')}>
<h3>{t('Discours is created with our common effort')}</h3>
<p>
<a href="/about/help">{t('Support us')}</a>
<a href="/create">{t('Become an author')}</a>
<a href={''} onClick={() => showModal('auth')}>
{t('Join the community')}
</a>
</p>
</div>
<div class={clsx(styles.discoursBannerImage, 'col-lg-6 offset-lg-1')}>
<img src="/discours-banner.jpg" alt={t('Discours')} />
<div class="wide-container">
<div class="row">
<div class={clsx(styles.discoursBannerContent, 'col-lg-5')}>
<h3>{t('Discours is created with our common effort')}</h3>
<p>
<a href="/about/help">{t('Support us')}</a>
<a href="/create">{t('Become an author')}</a>
<a href={''} onClick={() => showModal('auth')}>
{t('Join the community')}
</a>
</p>
</div>
<div class={clsx(styles.discoursBannerImage, 'col-lg-6 offset-lg-1')}>
<img src="/discours-banner.jpg" alt={t('Discours')} />
</div>
</div>
</div>
</div>

View File

@ -34,12 +34,6 @@
margin-top: 0.8rem;
}
.wideContainer {
@include media-breakpoint-down(sm) {
padding: 0 $container-padding-x;
}
}
::selection {
background: #fff;
color: #000;

View File

@ -109,7 +109,7 @@ export const Footer = () => {
]
return (
<footer class={styles.discoursFooter}>
<div class={clsx('wide-container', styles.wideContainer)}>
<div class="wide-container">
<div class="row">
<For each={links()}>
{({ header, items }) => (

View File

@ -16,10 +16,6 @@
font-weight: inherit;
}
.wide-container {
padding: 0;
}
::selection {
background: #fff;
color: #000;

View File

@ -5,35 +5,37 @@ import { showModal } from '../../stores/ui'
export default () => {
return (
<div class="about-discours">
<div class="wide-container row">
<div class="col-lg-10 offset-lg-1 col-xl-8 offset-xl-2">
<h4>{t('Horizontal collaborative journalistic platform')}</h4>
<p>
{t(
'Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects'
)}
.
<br />
<em>
{t('We are convinced that one voice is good, but many is better') +
'. ' +
t('We create the most amazing stories together')}
<div class="wide-container">
<div class="row">
<div class="col-lg-10 offset-lg-1 col-xl-8 offset-xl-2">
<h4>{t('Horizontal collaborative journalistic platform')}</h4>
<p>
{t(
'Discours is an intellectual environment, a web space and tools that allows authors to collaborate with readers and come together to co-create publications and media projects'
)}
.
</em>
</p>
<div class="about-discours__actions">
<a class="button" onClick={() => showModal('auth')}>
{t('Join the community')}
</a>
<a class="button" href="/create">
{t('Become an author')}
</a>
<a class="button" href="/about/manifest">
{t('About the project')}
</a>
<a class="button" href="/about/help">
{t('Support us')}
</a>
<br />
<em>
{t('We are convinced that one voice is good, but many is better') +
'. ' +
t('We create the most amazing stories together')}
.
</em>
</p>
<div class="about-discours__actions">
<a class="button" onClick={() => showModal('auth')}>
{t('Join the community')}
</a>
<a class="button" href="/create">
{t('Become an author')}
</a>
<a class="button" href="/about/manifest">
{t('About the project')}
</a>
<a class="button" href="/about/help">
{t('Support us')}
</a>
</div>
</div>
</div>
</div>

View File

@ -2,6 +2,10 @@
display: flex;
width: 100%;
@include media-breakpoint-down(md) {
margin-bottom: 2.4rem;
}
@include media-breakpoint-between(md, xl) {
flex-direction: column;
}

View File

@ -26,67 +26,69 @@ export const Beside = (props: BesideProps) => {
return (
<Show when={!!props.beside?.slug && props.values?.length > 0}>
<div class="floor floor--9">
<div class="wide-container row">
<Show when={!!props.values}>
<div class="col-md-4">
<Show when={!!props.title}>
<div class={styles.besideColumnTitle}>
<h4>{props.title}</h4>
<div class="wide-container">
<div class="row">
<Show when={!!props.values}>
<div class="col-md-4">
<Show when={!!props.title}>
<div class={styles.besideColumnTitle}>
<h4>{props.title}</h4>
<Show when={props.wrapper === 'author'}>
<a href="/authors">
{t('All authors')}
<Icon name="arrow-right" class={styles.icon} />
</a>
</Show>
<Show when={props.wrapper === 'author'}>
<a href="/authors">
{t('All authors')}
<Icon name="arrow-right" class={styles.icon} />
</a>
</Show>
<Show when={props.wrapper === 'topic'}>
<a href="/topics">
{t('All topics')}
<Icon name="arrow-right" class={styles.icon} />
</a>
</Show>
</div>
</Show>
<ul class={styles.besideColumn}>
<For each={[...props.values]}>
{(value: Partial<Shout | User | Topic>) => (
<li classList={{ [styles.top]: props.wrapper.startsWith('top-') }}>
<Show when={props.wrapper === 'topic'}>
<TopicCard
topic={value as Topic}
compact={props.isTopicCompact}
shortDescription={props.topicShortDescription}
isTopicInRow={props.isTopicInRow}
iconButton={props.iconButton}
showPublications={true}
/>
</Show>
<Show when={props.wrapper === 'author'}>
<AuthorCard
author={value as Author}
compact={true}
hasLink={true}
truncateBio={true}
/>
</Show>
<Show when={props.wrapper === 'article' && value?.slug}>
<ArticleCard article={value as Shout} settings={{ noimage: true }} />
</Show>
<Show when={props.wrapper === 'top-article' && value?.slug}>
<ArticleCard
article={value as Shout}
settings={{ noimage: true, noauthor: true, nodate: true, isShort: true }}
/>
</Show>
</li>
)}
</For>
</ul>
<Show when={props.wrapper === 'topic'}>
<a href="/topics">
{t('All topics')}
<Icon name="arrow-right" class={styles.icon} />
</a>
</Show>
</div>
</Show>
<ul class={styles.besideColumn}>
<For each={[...props.values]}>
{(value: Partial<Shout | User | Topic>) => (
<li classList={{ [styles.top]: props.wrapper.startsWith('top-') }}>
<Show when={props.wrapper === 'topic'}>
<TopicCard
topic={value as Topic}
compact={props.isTopicCompact}
shortDescription={props.topicShortDescription}
isTopicInRow={props.isTopicInRow}
iconButton={props.iconButton}
showPublications={true}
/>
</Show>
<Show when={props.wrapper === 'author'}>
<AuthorCard
author={value as Author}
compact={true}
hasLink={true}
truncateBio={true}
/>
</Show>
<Show when={props.wrapper === 'article' && value?.slug}>
<ArticleCard article={value as Shout} settings={{ noimage: true }} />
</Show>
<Show when={props.wrapper === 'top-article' && value?.slug}>
<ArticleCard
article={value as Shout}
settings={{ noimage: true, noauthor: true, nodate: true, isShort: true }}
/>
</Show>
</li>
)}
</For>
</ul>
</div>
</Show>
<div class={clsx('col-md-8', styles.shoutCardContainer)}>
<ArticleCard article={props.beside} settings={{ isBigTitle: true, isBeside: true }} />
</div>
</Show>
<div class={clsx('col-md-8', styles.shoutCardContainer)}>
<ArticleCard article={props.beside} settings={{ isBigTitle: true, isBeside: true }} />
</div>
</div>
</div>

View File

@ -14,66 +14,68 @@ export default (props: GroupProps) => {
return (
<div class="floor floor--important floor--group">
<Show when={props.articles.length > 4}>
<div class="wide-container row">
<div class="group__header col-12">{props.header}</div>
<div class="wide-container">
<div class="row">
<div class="group__header col-12">{props.header}</div>
<div class="col-lg-6">
<ArticleCard
article={props.articles[0]}
settings={{ nosubtitle: false, noicon: true, isFloorImportant: true, isBigTitle: true }}
/>
</div>
<div class="col-lg-6">
<ArticleCard
article={props.articles[0]}
settings={{ nosubtitle: false, noicon: true, isFloorImportant: true, isBigTitle: true }}
/>
</div>
<div class="col-lg-6">
<div class="row">
<Show when={props.articles.length < 4}>
<For each={props.articles.slice(1, props.articles.length)}>
{(a) => (
<div class="row">
<div class="col-md-8">
<div class="col-lg-6">
<div class="row">
<Show when={props.articles.length < 4}>
<For each={props.articles.slice(1, props.articles.length)}>
{(a) => (
<div class="row">
<div class="col-md-8">
<ArticleCard
article={a}
settings={{ nosubtitle: false, noicon: true, isBigTitle: true }}
/>
</div>
</div>
)}
</For>
</Show>
<Show when={props.articles.length >= 4}>
<div class="col-md-6">
<For each={props.articles.slice(1, 3)}>
{(a) => (
<ArticleCard
article={a}
settings={{ nosubtitle: false, noicon: true, isBigTitle: true }}
settings={{
noicon: true,
noimage: true,
isBigTitle: true,
isCompact: true,
isFloorImportant: true
}}
/>
</div>
</div>
)}
</For>
</Show>
<Show when={props.articles.length >= 4}>
<div class="col-md-6">
<For each={props.articles.slice(1, 3)}>
{(a) => (
<ArticleCard
article={a}
settings={{
noicon: true,
noimage: true,
isBigTitle: true,
isCompact: true,
isFloorImportant: true
}}
/>
)}
</For>
</div>
<div class="col-md-6">
<For each={props.articles.slice(3, 5)}>
{(a) => (
<ArticleCard
article={a}
settings={{
noicon: true,
noimage: true,
isBigTitle: true,
isCompact: true,
isFloorImportant: true
}}
/>
)}
</For>
</div>
</Show>
)}
</For>
</div>
<div class="col-md-6">
<For each={props.articles.slice(3, 5)}>
{(a) => (
<ArticleCard
article={a}
settings={{
noicon: true,
noimage: true,
isBigTitle: true,
isCompact: true,
isFloorImportant: true
}}
/>
)}
</For>
</div>
</Show>
</div>
</div>
</div>
</div>

View File

@ -5,9 +5,11 @@ import { ArticleCard } from './Card'
export const Row1 = (props: { article: Shout }) => (
<Show when={!!props.article}>
<div class="floor floor--one-article">
<div class="wide-container row">
<div class="col-12">
<ArticleCard article={props.article} settings={{ isSingle: true }} />
<div class="wide-container">
<div class="row">
<div class="col-12">
<ArticleCard article={props.article} settings={{ isSingle: true }} />
</div>
</div>
</div>
</div>

View File

@ -15,21 +15,26 @@ export const Row2 = (props: { articles: Shout[]; isEqual?: boolean }) => {
return (
<div class="floor">
<div class="wide-container row">
<For each={props.articles}>
{(a, i) => {
return (
<Show when={!!a}>
<div class={`col-md-${props.isEqual ? '6' : x[y()][i()]}`}>
<ArticleCard
article={a}
settings={{ isWithCover: props.isEqual || x[y()][i()] === '8', nodate: props.isEqual }}
/>
</div>
</Show>
)
}}
</For>
<div class="wide-container">
<div class="row">
<For each={props.articles}>
{(a, i) => {
return (
<Show when={!!a}>
<div class={`col-md-${props.isEqual ? '6' : x[y()][i()]}`}>
<ArticleCard
article={a}
settings={{
isWithCover: props.isEqual || x[y()][i()] === '8',
nodate: props.isEqual
}}
/>
</div>
</Show>
)
}}
</For>
</div>
</div>
</div>
)

View File

@ -6,15 +6,17 @@ import { ArticleCard } from './Card'
export const Row3 = (props: { articles: Shout[]; header?: JSX.Element }) => {
return (
<div class="floor">
<div class="wide-container row">
<div class="floor-header">{props.header}</div>
<For each={props.articles}>
{(a) => (
<div class="col-md-4">
<ArticleCard article={a} />
</div>
)}
</For>
<div class="wide-container">
<div class="row">
<div class="floor-header">{props.header}</div>
<For each={props.articles}>
{(a) => (
<div class="col-md-4">
<ArticleCard article={a} />
</div>
)}
</For>
</div>
</div>
</div>
)

View File

@ -4,17 +4,19 @@ import { ArticleCard } from './Card'
export const Row5 = (props: { articles: Shout[] }) => {
return (
<div class="floor floor--1">
<div class="wide-container row">
<div class="col-md-3">
<ArticleCard article={props.articles[0]} />
<ArticleCard article={props.articles[1]} settings={{ noimage: true, withBorder: true }} />
</div>
<div class="col-md-6">
<ArticleCard article={props.articles[2]} settings={{ isBigTitle: true }} />
</div>
<div class="col-md-3">
<ArticleCard article={props.articles[3]} />
<ArticleCard article={props.articles[4]} settings={{ noimage: true, withBorder: true }} />
<div class="wide-container">
<div class="row">
<div class="col-md-3">
<ArticleCard article={props.articles[0]} />
<ArticleCard article={props.articles[1]} settings={{ noimage: true, withBorder: true }} />
</div>
<div class="col-md-6">
<ArticleCard article={props.articles[2]} settings={{ isBigTitle: true }} />
</div>
<div class="col-md-3">
<ArticleCard article={props.articles[3]} />
<ArticleCard article={props.articles[4]} settings={{ noimage: true, withBorder: true }} />
</div>
</div>
</div>
</div>

View File

@ -4,22 +4,24 @@ import { ArticleCard } from './Card'
export default (props: { articles: Shout[] }) => (
<div class="floor floor--7">
<div class="wide-container row">
<For each={props.articles}>
{(a) => (
<div class="col-md-6 col-lg-3">
<ArticleCard
article={a}
settings={{
additionalClass: 'shout-card--content-top',
isWithCover: true,
isBigTitle: true,
isVertical: true
}}
/>
</div>
)}
</For>
<div class="wide-container">
<div class="row">
<For each={props.articles}>
{(a) => (
<div class="col-md-6 col-lg-3">
<ArticleCard
article={a}
settings={{
additionalClass: 'shout-card--content-top',
isWithCover: true,
isBigTitle: true,
isVertical: true
}}
/>
</div>
)}
</For>
</div>
</div>
</div>
)

View File

@ -61,34 +61,36 @@ export default (props: SliderProps) => {
return (
<div class="floor floor--important">
<div class="wide-container row">
<h2 class="col-12">{props.title}</h2>
<Show when={!!articles()}>
<div class="swiper" classList={{ 'cards-with-cover': isCardsWithCover }} ref={el}>
<div class="swiper-wrapper">
<For each={articles()}>
{(a: Shout) => (
<ArticleCard
article={a}
settings={{
additionalClass: 'swiper-slide',
isFloorImportant: true,
isWithCover: isCardsWithCover,
nodate: true
}}
/>
)}
</For>
<div class="wide-container">
<div class="row">
<h2 class="col-12">{props.title}</h2>
<Show when={!!articles()}>
<div class="swiper" classList={{ 'cards-with-cover': isCardsWithCover }} ref={el}>
<div class="swiper-wrapper">
<For each={articles()}>
{(a: Shout) => (
<ArticleCard
article={a}
settings={{
additionalClass: 'swiper-slide',
isFloorImportant: true,
isWithCover: isCardsWithCover,
nodate: true
}}
/>
)}
</For>
</div>
<div class="slider-arrow-next" ref={nextEl} onClick={() => swiper()?.slideNext()}>
<Icon name="slider-arrow" class={'icon'} />
</div>
<div class="slider-arrow-prev" ref={prevEl} onClick={() => swiper()?.slidePrev()}>
<Icon name="slider-arrow" class={'icon'} />
</div>
<div class="slider-pagination" ref={pagEl} />
</div>
<div class="slider-arrow-next" ref={nextEl} onClick={() => swiper()?.slideNext()}>
<Icon name="slider-arrow" class={'icon'} />
</div>
<div class="slider-arrow-prev" ref={prevEl} onClick={() => swiper()?.slidePrev()}>
<Icon name="slider-arrow" class={'icon'} />
</div>
<div class="slider-pagination" ref={pagEl} />
</div>
</Show>
</Show>
</div>
</div>
</div>
)

View File

@ -151,7 +151,7 @@ export const AllAuthorsView = (props: Props) => {
<div class={clsx(styles.topic, 'topic col-sm-6 col-md-4')}>
<div class="topic-title">
<a href={`/author/${author.slug}`}>{author.name}</a>
<sup>{author.stat.shouts}</sup>
<span class={styles.articlesCounter}>{author.stat.shouts}</span>
</div>
</div>
)}
@ -165,53 +165,51 @@ export const AllAuthorsView = (props: Props) => {
</For>
</Show>
<div class={styles.stats}>
<Show when={searchResults().length > 0}>
<For each={searchResults().slice(0, limit())}>
{(author) => (
<AuthorCard
author={author}
compact={false}
hasLink={true}
subscribed={subscribed(author.slug)}
noSocialButtons={true}
isAuthorsList={true}
truncateBio={true}
/>
)}
</For>
</Show>
<Show when={searchResults().length > 0}>
<For each={searchResults().slice(0, limit())}>
{(author) => (
<AuthorCard
author={author}
compact={false}
hasLink={true}
subscribed={subscribed(author.slug)}
noSocialButtons={true}
isAuthorsList={true}
truncateBio={true}
/>
)}
</For>
</Show>
<Show when={searchParams().by && searchParams().by !== 'name'}>
<div class="row">
<div class="col-lg-10 col-xl-9">
<For each={sortedAuthors().slice(0, limit())}>
{(author) => (
<AuthorCard
author={author}
compact={false}
hasLink={true}
subscribed={subscribed(author.slug)}
noSocialButtons={true}
isAuthorsList={true}
truncateBio={true}
/>
)}
</For>
</div>
<Show when={searchParams().by && searchParams().by !== 'name'}>
<div class="row">
<div class="col-lg-10 col-xl-9">
<For each={sortedAuthors().slice(0, limit())}>
{(author) => (
<AuthorCard
author={author}
compact={false}
hasLink={true}
subscribed={subscribed(author.slug)}
noSocialButtons={true}
isAuthorsList={true}
truncateBio={true}
/>
)}
</For>
</div>
</Show>
</div>
</Show>
<Show when={sortedAuthors().length > limit()}>
<div class="row">
<div class={clsx(styles.loadMoreContainer, 'col-12 col-md-10')}>
<button class={clsx('button', styles.loadMoreButton)} onClick={showMore}>
{t('Load more')}
</button>
</div>
<Show when={sortedAuthors().length > limit()}>
<div class="row">
<div class={clsx(styles.loadMoreContainer, 'col-12 col-md-10')}>
<button class={clsx('button', styles.loadMoreButton)} onClick={showMore}>
{t('Load more')}
</button>
</div>
</Show>
</div>
</div>
</Show>
</div>
</Show>
</div>

View File

@ -92,24 +92,26 @@ export const AllTopicsView = (props: AllTopicsViewProps) => {
}
const AllTopicsHead = () => (
<div class={clsx(styles.pageHeader, 'col-lg-10 col-xl-9')}>
<h1>{t('Topics')}</h1>
<p>{t('Subscribe what you like to tune your personal feed')}</p>
<div class="row">
<div class={clsx(styles.pageHeader, 'col-lg-10 col-xl-9')}>
<h1>{t('Topics')}</h1>
<p>{t('Subscribe what you like to tune your personal feed')}</p>
<ul class={clsx(styles.viewSwitcher, 'view-switcher')}>
<li classList={{ selected: searchParams().by === 'shouts' }}>
<a href="/topics?by=shouts">{t('By shouts')}</a>
</li>
<li classList={{ selected: searchParams().by === 'authors' }}>
<a href="/topics?by=authors">{t('By authors')}</a>
</li>
<li classList={{ selected: searchParams().by === 'title' }}>
<a href="/topics?by=title">{t('By title')}</a>
</li>
<li class="view-switcher__search">
<SearchField onChange={searchTopics} />
</li>
</ul>
<ul class={clsx(styles.viewSwitcher, 'view-switcher')}>
<li classList={{ selected: searchParams().by === 'shouts' }}>
<a href="/topics?by=shouts">{t('By shouts')}</a>
</li>
<li classList={{ selected: searchParams().by === 'authors' }}>
<a href="/topics?by=authors">{t('By authors')}</a>
</li>
<li classList={{ selected: searchParams().by === 'title' }}>
<a href="/topics?by=title">{t('By title')}</a>
</li>
<li class="view-switcher__search">
<SearchField onChange={searchTopics} />
</li>
</ul>
</div>
</div>
)

View File

@ -550,10 +550,6 @@ figcaption {
margin-bottom: 6.4rem;
}
.wide-container {
padding: 0;
}
.container {
padding-left: $container-padding-x;
padding-right: $container-padding-x;
@ -617,14 +613,14 @@ figcaption {
}
}
.row > * {
.row {
@include media-breakpoint-down(sm) {
padding-left: divide($container-padding-x, 2);
padding-right: divide($container-padding-x, 2);
margin-left: divide(-$container-padding-x, 2);
margin-right: divide(-$container-padding-x, 2);
> .row {
margin-left: divide(-$container-padding-x, 2);
margin-right: divide(-$container-padding-x, 2);
> * {
padding-left: divide($container-padding-x, 2);
padding-right: divide($container-padding-x, 2);
}
}
}
@ -789,6 +785,7 @@ details {
.text-truncate {
display: -webkit-box !important;
overflow: hidden;
position: relative;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
white-space: normal;