Merge branch 'dev' into 'main'

markup fixes

See merge request discoursio/discoursio-webapp!84
This commit is contained in:
Igor 2023-05-11 11:52:56 +00:00
commit 5ab4d16c04
6 changed files with 95 additions and 41 deletions

View File

@ -28,6 +28,7 @@
.feedControlIcon { .feedControlIcon {
max-width: 2em; max-width: 2em;
vertical-align: text-bottom;
} }
} }

View File

@ -53,7 +53,7 @@
.settings { .settings {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin-bottom: 2em; margin: 2em 0;
} }
a { a {
@ -87,4 +87,34 @@
width: 100%; width: 100%;
} }
} }
h4 {
color: #9fa1a7;
cursor: pointer;
@include font-size(1.2rem);
letter-spacing: 0.05em;
text-transform: uppercase;
position: relative;
&:after {
content: '+';
font-size: 1.6em;
line-height: 1;
position: absolute;
right: 2.5rem;
top: -0.2em;
transition: transform 0.3s;
}
&.opened {
&:after {
right: 0.9rem;
transform: rotate(45deg);
}
}
}
.hidden {
display: none;
}
} }

View File

@ -1,4 +1,4 @@
import { For } from 'solid-js' import { createSignal, For } from 'solid-js'
import type { Author } from '../../../graphql/types.gen' import type { Author } from '../../../graphql/types.gen'
import { useAuthorsStore } from '../../../stores/zine/authors' import { useAuthorsStore } from '../../../stores/zine/authors'
import { Icon } from '../../_shared/Icon' import { Icon } from '../../_shared/Icon'
@ -28,6 +28,7 @@ export const Sidebar = (props: FeedSidebarProps) => {
const { authorEntities } = useAuthorsStore({ authors: props.authors }) const { authorEntities } = useAuthorsStore({ authors: props.authors })
const { articlesByTopic } = useArticlesStore() const { articlesByTopic } = useArticlesStore()
const { topicEntities } = useTopicsStore() const { topicEntities } = useTopicsStore()
const [isSubscriptionsVisible, setSubscriptionsVisible] = createSignal(false)
const checkTopicIsSeen = (topicSlug: string) => { const checkTopicIsSeen = (topicSlug: string) => {
return articlesByTopic()[topicSlug]?.every((article) => Boolean(seen()[article.slug])) return articlesByTopic()[topicSlug]?.every((article) => Boolean(seen()[article.slug]))
@ -68,11 +69,6 @@ export const Sidebar = (props: FeedSidebarProps) => {
{ {
icon: 'feed-notifications', icon: 'feed-notifications',
title: t('notifications') title: t('notifications')
},
{
href: '/feed?by=subscribed',
title: t('My subscriptions'),
isBold: true
} }
] ]
@ -92,29 +88,46 @@ export const Sidebar = (props: FeedSidebarProps) => {
</li> </li>
)} )}
</For> </For>
<For each={session()?.news?.authors}>
{(authorSlug: string) => (
<li>
<a
href={`/author/${authorSlug}`}
classList={{ [styles.unread]: checkAuthorIsSeen(authorSlug) }}
>
<small>@{authorSlug}</small>
{authorEntities()[authorSlug]?.name}
</a>
</li>
)}
</For>
<For each={session()?.news?.topics}>
{(topicSlug: string) => (
<li>
<a href={`/author/${topicSlug}`} classList={{ [styles.unread]: checkTopicIsSeen(topicSlug) }}>
{topicEntities()[topicSlug]?.title ?? topicSlug}
</a>
</li>
)}
</For>
</ul> </ul>
<Show when={session()?.news?.authors || session()?.news?.topics}>
<h4
classList={{ [styles.opened]: isSubscriptionsVisible() }}
onClick={() => {
setSubscriptionsVisible(!isSubscriptionsVisible())
}}
>
{t('My subscriptions')}
</h4>
<ul classList={{ [styles.hidden]: !isSubscriptionsVisible() }}>
<For each={session()?.news?.authors}>
{(authorSlug: string) => (
<li>
<a
href={`/author/${authorSlug}`}
classList={{ [styles.unread]: checkAuthorIsSeen(authorSlug) }}
>
<small>@{authorSlug}</small>
{authorEntities()[authorSlug]?.name}
</a>
</li>
)}
</For>
<For each={session()?.news?.topics}>
{(topicSlug: string) => (
<li>
<a
href={`/topic/${topicSlug}`}
classList={{ [styles.unread]: checkTopicIsSeen(topicSlug) }}
>
{topicEntities()[topicSlug]?.title ?? topicSlug}
</a>
</li>
)}
</For>
</ul>
</Show>
<div class={styles.settings}> <div class={styles.settings}>
<a href="/feed/settings"> <a href="/feed/settings">
<Icon name="settings" class={styles.icon} /> <Icon name="settings" class={styles.icon} />

View File

@ -117,20 +117,20 @@ export const EditView = (props: EditViewProps) => {
return ( return (
<> <>
<button
class={clsx(styles.scrollTopButton, {
[styles.visible]: isScrolled()
})}
onClick={scrollTop}
>
<Icon name="up-button" class={styles.icon} />
<span class={styles.scrollTopButtonLabel}>{t('Scroll up')}</span>
</button>
<div class={styles.container}> <div class={styles.container}>
<Title>{t('Write an article')}</Title> <Title>{t('Write an article')}</Title>
<form> <form>
<div class="wide-container"> <div class="wide-container">
<button
class={clsx(styles.scrollTopButton, {
[styles.visible]: isScrolled()
})}
onClick={scrollTop}
>
<Icon name="up-button" class={styles.icon} />
<span class={styles.scrollTopButtonLabel}>{t('Scroll up')}</span>
</button>
<div class="row"> <div class="row">
<div class="col-md-19 col-lg-18 col-xl-16 offset-md-5"> <div class="col-md-19 col-lg-18 col-xl-16 offset-md-5">
<div <div

View File

@ -4,8 +4,7 @@
font-weight: 500; font-weight: 500;
h4 { h4 {
font-size: inherit; margin-bottom: 0.8em;
margin-bottom: 1.6rem;
} }
ul, ul,

View File

@ -262,12 +262,23 @@ button {
background: #000; background: #000;
color: #fff; color: #fff;
opacity: 1; opacity: 1;
.icon {
filter: invert(1);
}
} }
&[disabled]:hover { &[disabled]:hover {
background: #fff; background: #fff;
color: #000; color: #000;
} }
.icon {
display: inline-block;
margin-right: 0.3em;
vertical-align: text-bottom;
width: 1.4em;
}
} }
.button--content-index { .button--content-index {