From e1d168297cd891099d51498c86ab82ca9dd901cf Mon Sep 17 00:00:00 2001 From: "plebeius.eth" Date: Mon, 1 Jan 2024 13:29:19 +0100 Subject: [PATCH] feat(subplebbits): add responsive design, vote buttons, preferences button --- src/components/header/header.tsx | 6 +- src/views/subplebbits/subplebbits.module.css | 92 +++++++++++++++++--- src/views/subplebbits/subplebbits.tsx | 34 +++++++- 3 files changed, 115 insertions(+), 17 deletions(-) diff --git a/src/components/header/header.tsx b/src/components/header/header.tsx index 5ee528b4..9b201362 100644 --- a/src/components/header/header.tsx +++ b/src/components/header/header.tsx @@ -199,8 +199,8 @@ const SubplebbitsHeaderTabs = () => { return ( <>
  • - - {t('home')} + + approved
  • @@ -209,7 +209,7 @@ const SubplebbitsHeaderTabs = () => {
  • - + {t('my_communities')}
  • diff --git a/src/views/subplebbits/subplebbits.module.css b/src/views/subplebbits/subplebbits.module.css index 993538d3..bc98c6bc 100644 --- a/src/views/subplebbits/subplebbits.module.css +++ b/src/views/subplebbits/subplebbits.module.css @@ -1,11 +1,19 @@ @media (max-width: 768px) { .content { - padding: 7px 0px 0px 0px; + padding: 7px 0px 20px 0px; } .sidebar { display: none; } + + .infobar { + margin: 0px 5px; + } + + .subplebbit { + padding-right: 5px; + } } @media (min-width: 768px) { @@ -13,8 +21,8 @@ padding: 7px 5px 0px 5px; } - .stateString { - max-width: calc(100% - 305px); + .stateString, .infobar { + max-width: calc(100% - 327px); } } @@ -24,7 +32,7 @@ border-style: solid; border-width: 1px; font-size: small; - margin: 0 305px 5px 0px; + margin-bottom: 10px; padding: 6px 10px; color: var(--text); word-wrap: break-word; @@ -41,15 +49,51 @@ .subplebbit { margin-bottom: 10px; + height: auto; + overflow: hidden; } .midcol { - margin-right: 5px; - margin-top: 5px; - text-align: right; - width: 12em; + width: 37px; + font-weight: bold; + font-size: small; float: left; - margin-left: 7px; + padding-right: 7px; + background: transparent; + overflow: hidden; +} + +.arrowWrapper { + padding-left: 11px; + padding-top: 2px; +} + +.arrowCommon { + width: 15px; + height: 14px; + display: block; + cursor: pointer; +} + +.arrowUp { + background-image: url("/public/assets/buttons/arrow-up.png"); +} + +.upvoted { + background-image: url("/public/assets/buttons/arrow-upvoted.png") !important; +} + +.arrowDown { + background-image: url("/public/assets/buttons/arrow-down.png"); +} + +.downvoted { + background-image: url("/public/assets/buttons/arrow-downvoted.png") !important; +} + +.score { + text-align: center; + color: var(--icon); } .entry { @@ -58,14 +102,18 @@ } .title { - margin-bottom: 1px; + display: inline-flex; + flex-wrap: wrap; + align-items: center; font-size: medium; - margin-right: 5px; overflow: hidden; unicode-bidi: isolate; + margin-bottom: -2px; } .title a { + margin-right: 10px; + flex-grow: 1; color: var(--link); } @@ -73,8 +121,11 @@ color: var(--link-visited); } */ +.subscribeButton { + margin-top: 2px; +} + .description { - font-size: small; max-width: 60em; unicode-bidi: isolate; background-color: var(--background-markdown); @@ -83,4 +134,21 @@ padding: 2px 5px; border-radius: 7px; margin: 5px 0px; + word-wrap: break-word; + font-size: 14px; +} + +.subplebbitPreferences { + padding: 0 1px; + line-height: 1.6em; +} + +.subplebbitPreferences a { + color: var(--gray-contrast); + font-weight: bold; +} + +.subplebbitPreferences a:hover { + text-decoration: underline; + cursor: pointer; } \ No newline at end of file diff --git a/src/views/subplebbits/subplebbits.tsx b/src/views/subplebbits/subplebbits.tsx index ed735cb2..781b70f0 100644 --- a/src/views/subplebbits/subplebbits.tsx +++ b/src/views/subplebbits/subplebbits.tsx @@ -16,10 +16,26 @@ const Subplebbit = ({ subplebbit }: SubplebbitProps) => { const { address, createdAt, description, shortAddress, title } = subplebbit || {}; const { allActiveUserCount } = useSubplebbitStats({ subplebbitAddress: address }); + // TODO: make arrows functional when token voting is implemented in the API + const upvoted = false; + const downvoted = false; + const upvoteCount = 0; + const downvoteCount = 0; + + const postScore = upvoteCount === 0 && downvoteCount === 0 ? '•' : upvoteCount - downvoteCount || '•'; + return (
    - +
    +
    +
    +
    +
    {postScore}
    +
    +
    +
    +
    @@ -27,11 +43,25 @@ const Subplebbit = ({ subplebbit }: SubplebbitProps) => { p/{address.includes('.') ? address : shortAddress} {title && `: ${title}`} + + +
    {description &&
    {description}
    }
    - {t('readers_count', { count: allActiveUserCount })}, {t('community_for', { date: getFormattedDuration(createdAt) })} + {allActiveUserCount ? ( + <> + {t('members_count', { count: allActiveUserCount })}, {t('community_for', { date: getFormattedDuration(createdAt) })} +
    + e.preventDefault()}> + {t('preferences')} + +
    + + ) : ( + 'this community is offline' + )}