add board buttons row for mobile and desktop, global styling for button

This commit is contained in:
plebeius.eth
2024-03-22 12:09:17 +01:00
parent 7e33a5de8e
commit 80c3a51328
9 changed files with 123 additions and 50 deletions
+4
View File
@@ -11,6 +11,8 @@ import BoardNav from './components/board-nav';
import BoardBanner from './components/board-banner';
import BoardStats from './components/board-stats';
import PostForm from './components/post-form';
import { MobileBoardButtons } from './components/board-buttons';
import { DesktopBoardButtons } from './components/board-buttons';
const BoardLayout = () => {
const { subplebbitAddress } = useParams<{ subplebbitAddress: string }>();
@@ -22,8 +24,10 @@ const BoardLayout = () => {
<>
<BoardNav address={subplebbitAddress} />
<BoardBanner title={subplebbit.title} address={subplebbitAddress} />
<MobileBoardButtons address={subplebbitAddress} />
<PostForm address={subplebbitAddress} />
<BoardStats address={subplebbitAddress} createdAt={subplebbit.createdAt} />
<DesktopBoardButtons address={subplebbitAddress} />
</>
)}
<Outlet />
@@ -0,0 +1,20 @@
.mobileBoardButtons {
text-align: center;
margin-top: 9px;
}
.mobileBoardButtons button {
margin: 0 2px;
}
@media (max-width: 640px) {
.desktopBoardButtons {
display: none;
}
}
@media (min-width: 640px) {
.mobileBoardButtons {
display: none;
}
}
@@ -0,0 +1,42 @@
import { useSubscribe } from '@plebbit/plebbit-react-hooks';
import styles from './board-buttons.module.css';
interface BoardButtonsProps {
address: string;
}
const OptionsButton = () => {
return <button className='button'>options</button>;
};
const CatalogButton = () => {
return <button className='button'>catalog</button>;
};
const SubscribeButton = ({ address }: BoardButtonsProps) => {
const { subscribed, subscribe, unsubscribe } = useSubscribe({ subplebbitAddress: address });
return (
<button className='button' onClick={subscribed ? unsubscribe : subscribe}>
{subscribed ? 'Unsubscribe' : 'Subscribe'}
</button>
);
};
export const MobileBoardButtons = ({ address }: BoardButtonsProps) => {
return (
<div className={styles.mobileBoardButtons}>
<OptionsButton />
<CatalogButton />
<SubscribeButton address={address} />
</div>
);
};
export const DesktopBoardButtons = ({ address }: BoardButtonsProps) => {
return (
<div className={styles.desktopBoardButtons}>
<SubscribeButton address={address} />
</div>
);
};
+1
View File
@@ -0,0 +1 @@
export { MobileBoardButtons, DesktopBoardButtons } from './board-buttons';
@@ -24,18 +24,18 @@
}
.hideButton {
color: var(--button-text-color);
color: var(--button-desktop-text-color);
text-decoration: var(--button-text-decoration);
text-transform: capitalize;
}
.hideButton:hover {
cursor: pointer;
color: var(--button-text-color-hover);
color: var(--button-desktop-text-color-hover);
}
.statValue {
color: var(--button-text-color);
color: var(--button-desktop-text-color);
}
.lowercase {
+1 -28
View File
@@ -4,36 +4,9 @@
text-align: center;
}
.postFormButtonDesktop span {
color: var(--button-text-color);
text-decoration: var(--button-text-decoration);
}
.postFormButtonDesktop span:hover {
cursor: pointer;
color: var(--button-text-color-hover);
}
.postFormButtonMobile {
text-align: center;
padding-top: 5px;
}
.postFormButtonMobile span {
font-size: var(--button-font-size-mobile);
font-weight: var(--button-font-weight-mobile);
font-family: var(--button-font-family-mobile);
border-radius: 3px;
padding: 5px 10px 5px;
background-color: var(--button-background-color-mobile);
color: var(--button-text-color-mobile);
border: var(--button-border-mobile);
background-image: var(--button-background-image-mobile);
background: var(--button-background-mobile);
background-repeat: var(--button-background-repeat-mobile);
text-decoration: var(--button-text-decoration-mobile);
user-select: none;
display: inline-block;
padding-top: 9px;
}
@media (max-width: 640px) {
+2 -2
View File
@@ -11,10 +11,10 @@ const PostForm = ({ address }: PostFormProps) => {
return (
<>
<div className={styles.postFormButtonDesktop}>
[<span>{t('start_new_thread')}</span>]
[<button className='button'>{t('start_new_thread')}</button>]
</div>
<div className={styles.postFormButtonMobile}>
<span>{t('start_new_thread')}</span>
<button className='button'>{t('start_new_thread')}</button>
</div>
</>
);
+33
View File
@@ -10,4 +10,37 @@ body {
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, textarea, p, blockquote, th, td, iframe {
margin: 0;
padding: 0;
}
@media (max-width: 640px) {
.button {
text-transform: capitalize;
font-size: var(--button-font-size-mobile);
font-weight: var(--button-font-weight-mobile);
font-family: var(--button-font-family-mobile);
border-radius: 3px;
padding: 5px 10px 5px;
background-color: var(--button-background-color-mobile);
color: var(--button-text-color-mobile);
border: var(--button-border-mobile);
background-image: var(--button-background-image-mobile);
background-repeat: var(--button-background-repeat-mobile);
text-decoration: var(--button-text-decoration-mobile);
user-select: none;
display: inline-block;
}
}
@media (min-width: 640px) {
.button {
all: unset;
text-transform: capitalize;
color: var(--button-desktop-text-color);
text-decoration: var(--button-text-decoration);
}
.button:hover {
color: var(--button-desktop-text-color-hover);
cursor: pointer;
}
}
+17 -17
View File
@@ -20,8 +20,8 @@
--body-font-size: 10pt;
/* desktop buttons */
--button-text-color: #00e;
--button-text-color-hover: red;
--button-desktop-text-color: #00e;
--button-desktop-text-color-hover: red;
/* mobile buttons */
--button-font-size-mobile: 10pt;
@@ -96,8 +96,8 @@
--homepage-box-bar-background-color: #98e;
/* desktop buttons */
--button-text-color: #34345c;
--button-text-color-hover: #d00;
--button-desktop-text-color: #34345c;
--button-desktop-text-color-hover: #d00;
/* mobile buttons */
--button-font-size-mobile: 10pt;
@@ -156,9 +156,9 @@
--board-title-font-size: 32px;
--board-address-font-size: 10pt;
/* buttons */
--button-text-color: #00e;
--button-text-color-hover: red;
/* desktop buttons */
--button-desktop-text-color: #00e;
--button-desktop-text-color-hover: red;
--button-text-decoration: underline;
/* mobile buttons */
@@ -218,10 +218,10 @@
--homepage-box-bar-background-color: #98e;
--homepage-box-bar-text-color-hover: #fff;
/* buttons */
--button-text-color: #34345c;
/* desktop buttons */
--button-desktop-text-color: #34345c;
--button-text-decoration: underline;
--button-text-color-hover: #d00;
--button-desktop-text-color-hover: #d00;
/* mobile buttons */
--button-font-size-mobile: 11pt;
@@ -277,9 +277,9 @@
--board-title-font-family: Tahoma, sans-serif;
--board-address-font-size: x-small;
/* buttons */
--button-text-color: #81a2be;
--button-text-color-hover: #5f89ac;
/* desktop buttons */
--button-desktop-text-color: #81a2be;
--button-desktop-text-color-hover: #5f89ac;
/* mobile buttons */
--button-font-size-mobile: 10pt;
@@ -329,15 +329,15 @@
--board-title-text-color: #004a99;
--board-address-font-size: x-small;
/* buttons */
--button-text-color: #f60;
--button-text-color-hover: #f30;
/* desktop buttons */
--button-desktop-text-color: #f60;
--button-desktop-text-color-hover: #f30;
/* mobile buttons */
--button-font-size-mobile: 10pt;
--button-font-weight-mobile: 700;
--button-text-color-mobile: #333;
--button-background-mobile: linear-gradient(to bottom, rgba(238, 238, 238, 1) 0%, rgba(224, 224, 224, 1) 100%);
--button-background-image-mobile: linear-gradient(to bottom, rgba(238, 238, 238, 1) 0%, rgba(224, 224, 224, 1) 100%);
--button-border-mobile: 1px solid #ccc;
/* horizontal rule */