diff --git a/public/assets/buttonfade-blue.png b/public/assets/buttonfade-blue.png new file mode 100644 index 00000000..ebc5ffbe Binary files /dev/null and b/public/assets/buttonfade-blue.png differ diff --git a/public/assets/buttonfade-dark.png b/public/assets/buttonfade-dark.png new file mode 100644 index 00000000..06ff0211 Binary files /dev/null and b/public/assets/buttonfade-dark.png differ diff --git a/public/assets/buttonfade.png b/public/assets/buttonfade.png new file mode 100644 index 00000000..50bf793e Binary files /dev/null and b/public/assets/buttonfade.png differ diff --git a/src/components/Board.jsx b/src/components/Board.jsx index fb476c35..1c6dfd3b 100644 --- a/src/components/Board.jsx +++ b/src/components/Board.jsx @@ -130,7 +130,6 @@ const Board = ({ setBodyStyle }) => { } const handlePublishComment = async () => { - // Event.preventDefault(); try { const pendingComment = await publishComment({ content: comment, @@ -283,10 +282,17 @@ const Board = ({ setBodyStyle }) => { - - [ - event.target.style.cursor='pointer'}>Start a New Thread - ] + +
+ [ + event.target.style.cursor='pointer'}>Start a New Thread + ] +
+
+ + event.target.style.cursor='pointer'}>Start a New Thread + +
@@ -344,9 +350,16 @@ const Board = ({ setBodyStyle }) => { - [ - Catalog - ] +
+ [ + Catalog + ] +
+
+ + Catalog + +
diff --git a/src/components/Catalog.jsx b/src/components/Catalog.jsx index 31b3bbdc..15daddab 100644 --- a/src/components/Catalog.jsx +++ b/src/components/Catalog.jsx @@ -269,10 +269,17 @@ const Catalog = ({ setBodyStyle }) => { - - [ - event.target.style.cursor='pointer'}>Start a New Thread - ] + +
+ [ + event.target.style.cursor='pointer'}>Start a New Thread + ] +
+
+ + event.target.style.cursor='pointer'}>Start a New Thread + +
@@ -330,11 +337,16 @@ const Catalog = ({ setBodyStyle }) => { - +
[ Return ] - +
+
+ + Return + +

diff --git a/src/components/Thread.jsx b/src/components/Thread.jsx index 65ee3679..fabb443b 100644 --- a/src/components/Thread.jsx +++ b/src/components/Thread.jsx @@ -192,10 +192,32 @@ const Thread = ({ setBodyStyle }) => { - + +
+ + Return + +
+
+ + Catalog + +
+ +
[ event.target.style.cursor='pointer'}>Post a Reply ] +
+
+ + event.target.style.cursor='pointer'}>Post a Reply + +
@@ -251,17 +273,17 @@ const Thread = ({ setBodyStyle }) => {
- + [ Return ] - + [ Catalog ] - + [ event.target.style.cursor='pointer'} onTouchStart={handleClickBottom}>Bottom ] @@ -361,34 +383,86 @@ const Thread = ({ setBodyStyle }) => { }) })} -
- +
+
+ + [ + Return + ] + + + [ + Catalog + ] + + + [ + event.target.style.cursor='pointer'} onTouchStart={handleClickTop}>Top + ] + + [ - Return + event.target.style.cursor='pointer'}>Post a Reply ] - - - [ - Catalog - ] - - - [ - event.target.style.cursor='pointer'} onTouchStart={handleClickTop}>Top - ] - - - [ - event.target.style.cursor='pointer'}>Post a Reply - ] - - {comment.replyCount > 0 ? ( - {comment.replyCount} replies - ) : ( - No replies yet - )} -
+ + {comment.replyCount > 0 ? ( + {comment.replyCount} replies + ) : ( + No replies yet + )} +
+
+
+ +
+ + Style: +   + + + {comment ? ( + comment.replyCount > 0 ? ( + {comment.replyCount} replies + ) : ( + No replies yet + )) : ( + null + )} +
+
+ +
+ + event.target.style.cursor='pointer'}>Post a Reply + +
+
+
+ + Return + +
+
+ + Catalog + +
+ + + event.target.style.cursor='pointer'} onTouchStart={handleClickTop}>Top + + +
+
+
) : ( diff --git a/src/components/styles/Board.styled.jsx b/src/components/styles/Board.styled.jsx index 44a96a40..ffdcd2d0 100644 --- a/src/components/styles/Board.styled.jsx +++ b/src/components/styles/Board.styled.jsx @@ -1,14 +1,5 @@ import styled, { keyframes } from 'styled-components'; -const slideIn = keyframes` - 0% { - top: 0; - } - 100% { - top: -25px; - } -`; - export const Container = styled.div` font-size: 10pt; margin-left: 0; @@ -54,7 +45,6 @@ export const NavBar = styled.div` left: 0; right: 0; z-index: 9001; - /* animation: ${slideIn} 0.2s ease-in-out; */ display: block !important; clear: left !important; } @@ -90,8 +80,6 @@ export const NavBar = styled.div` case 'Yotsuba': return `font-size: 9pt; color: #b86; - display: block; - margin-top: 5px; a { font-weight: 400; @@ -120,7 +108,6 @@ export const NavBar = styled.div` case 'Yotsuba B': return `font-size: 9pt; color: #89a; - display: block; a { font-weight: 400; @@ -139,7 +126,6 @@ export const NavBar = styled.div` case 'Futaba': return `font-size: 11pt; - display: block; a, a:visited { font-weight: 400; @@ -165,7 +151,6 @@ export const NavBar = styled.div` case 'Burichan': return `font-size: 11pt; - display: block; a, a:visited { font-weight: 400; @@ -188,7 +173,6 @@ export const NavBar = styled.div` case 'Tomorrow': return `font-size: 9pt; color: #c5c8c6; - display: block; a, a:visited { font-weight: 400; @@ -209,7 +193,6 @@ export const NavBar = styled.div` case 'Photon': return `font-size: 9pt; color: #333; - display: block; a, a:visited { font-weight: 400; @@ -316,12 +299,12 @@ export const Header = styled.div` font-size: 24pt; font-weight: 700; margin-top: 0; + color: #af0a0f; } .board-address { - font-size: 9pt; margin-top: 5px; - font-size: 9pt; + font-size: 11pt; }`; case 'Burichan': @@ -348,9 +331,8 @@ export const Header = styled.div` } .board-address { - font-size: 9pt; margin-top: 5px; - font-size: 9pt; + font-size: 11pt; }`; case 'Tomorrow': @@ -457,7 +439,158 @@ export const Break = styled.hr` `; export const PostFormLink = styled.div` - display: ${props => (props.showPostFormLink ? 'block' : 'none')}; + @media (min-width: 480px) { + display: ${props => (props.showPostFormLink ? 'block' : 'none')}; + + #post-form-link-mobile { + display: none; + } + } + + @media (max-width: 480px) { + display: ${props => (props.showPostFormLink ? 'block' : 'none')}; + line-height: 30px; + + #post-form-link-desktop { + display: none; + } + + #post-form-link-mobile { + margin: 11px 0; + font-size: 10pt; + text-align: center; + font-weight: 700; + display: block !important; + } + } + + ${({ selectedStyle }) => { + switch (selectedStyle) { + case 'Yotsuba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Yotsuba B': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c !important; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #34345c !important; + white-space: nowrap; + }`; + + case 'Futaba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + }`; + + case 'Burichan': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Tomorrow': + return `.btn-wrap { + background-color: #1b1c1e; + background-image: url(/assets/buttonfade-dark.png); + border: 1px solid #282a2e; + color: #707070; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: #707070 !important; + white-space: nowrap; + }`; + + case 'Photon': + return `.btn-wrap { + background: linear-gradient(to bottom, rgba(238, 238, 238, 1) 0%, rgba(224, 224, 224, 1) 100%); + border: 1px solid #ccc; + color: #333; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #333 !important; + white-space: nowrap; + }`; + + } + }} `; export const PostFormTable = styled.table` @@ -1089,7 +1222,7 @@ export const TopBar = styled.div` ${({ selectedStyle }) => { switch (selectedStyle) { case 'Yotsuba': - return `lear: both; + return `clear: both; hr { border: none; border-top: 1px solid #d9bfb7; @@ -1228,6 +1361,164 @@ export const TopBar = styled.div` } }} + + @media (min-width: 480px) { + #catalog-button-mobile { + display: none; + } + + #catalog-button-desktop { + display: inline-block; + } + } + + @media (max-width: 480px) { + line-height: 30px; + + hr { + margin-left: calc((100% - 100vw) / 2); + margin-right: calc((100% - 100vw) / 2); + } + + #catalog-button-desktop { + display: none; + } + + #catalog-button-mobile { + position: absolute; + left: 50%; + display: inline-block; + transform: translateX(-50%); + font-size: 10pt; + } + } + +${({ selectedStyle }) => { + switch (selectedStyle) { + case 'Yotsuba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Yotsuba B': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c !important; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #34345c !important; + white-space: nowrap; + }`; + + case 'Futaba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + }`; + + case 'Burichan': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Tomorrow': + return `.btn-wrap { + background-color: #1b1c1e; + background-image: url(/assets/buttonfade-dark.png); + border: 1px solid #282a2e; + color: #707070; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #707070 !important; + white-space: nowrap; + }`; + + case 'Photon': + return `.btn-wrap { + background: linear-gradient(to bottom, rgba(238, 238, 238, 1) 0%, rgba(224, 224, 224, 1) 100%); + border: 1px solid #ccc; + color: #333; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #333 !important; + white-space: nowrap; + }`; + } + }} `; export const BoardForm = styled.div` @@ -1256,15 +1547,24 @@ export const BoardForm = styled.div` max-height: 250px; } - @media (min-width: 600px) { + @media (min-width: 480px) { .post-info { margin: 3px; display: block; width: 100%; } + + #bottombar-mobile { + display: none; + } } - @media (max-width: 600px) { + @media (max-width: 480px) { + hr { + margin-left: calc((100% - 100vw) / 2); + margin-right: calc((100% - 100vw) / 2); + } + .name-block { display: block; } @@ -1274,6 +1574,10 @@ export const BoardForm = styled.div` flex-wrap: wrap; margin: 4px; } + + #bottombar-desktop { + display: none; + } } ${({ selectedStyle }) => { diff --git a/src/components/styles/Thread.styled.jsx b/src/components/styles/Thread.styled.jsx index df4bb880..cde43b46 100644 --- a/src/components/styles/Thread.styled.jsx +++ b/src/components/styles/Thread.styled.jsx @@ -1,7 +1,171 @@ import styled from 'styled-components'; export const ReplyFormLink = styled.div` - display: ${props => (props.showReplyFormLink ? 'block' : 'none')}; + @media (min-width: 480px) { + display: ${props => (props.showReplyFormLink ? 'block' : 'none')}; + + #post-form-link-mobile, #return-button-mobile, #catalog-button-mobile, #bottom-button-mobile { + display: none; + } + } + + @media (max-width: 480px) { + display: ${props => (props.showReplyFormLink ? 'block' : 'none')}; + + #post-form-link-desktop { + display: none; + } + + #post-form-link-mobile { + margin: 11px 0; + font-size: 13px; + text-align: center; + font-weight: 700; + display: block !important; + padding-top: 10px; + } + + #return-button-mobile, #catalog-button-mobile, #bottom-button-mobile, #bottom-bar-top { + font-size: 10pt; + display: inline-block; + margin: 0 2px; + } + + .post-button-mobile { + padding-bottom: 10px; + } + + #btns-container { + text-align: center; + } + } + + ${({ selectedStyle }) => { + switch (selectedStyle) { + case 'Yotsuba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Yotsuba B': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c !important; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #34345c !important; + white-space: nowrap; + }`; + + case 'Futaba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + }`; + + case 'Burichan': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Tomorrow': + return `.btn-wrap { + background-color: #1b1c1e; + background-image: url(/assets/buttonfade-dark.png); + border: 1px solid #282a2e; + color: #707070; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: #707070 !important; + white-space: nowrap; + }`; + + case 'Photon': + return `.btn-wrap { + background: linear-gradient(to bottom, rgba(238, 238, 238, 1) 0%, rgba(224, 224, 224, 1) 100%); + border: 1px solid #ccc; + color: #333; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #333 !important; + white-space: nowrap; + }`; + } + }} `; export const ReplyFormTable = styled.table` @@ -471,15 +635,45 @@ export const ReplyFormTable = styled.table` `; export const TopBar = styled.div` + @media (min-width: 480px) { + #return-button-mobile { + display: none; + } + + .reply-stat { + margin-top: 5px; + } + } + + @media (max-width: 480px) { + line-height: 30px; + + #return-button-desktop, #catalog-button-desktop, #bottom-button-desktop { + display: none; + } + + #return-button-mobile { + position: absolute; + left: 50%; + display: inline-block; + transform: translateX(-50%); + font-size: 10pt; + } + + hr { + margin-left: calc((100% - 100vw) / 2); + margin-right: calc((100% - 100vw) / 2); + } + } + .return-button { - margin-top: 3px; + display: inline-block; } .reply-stat { position: relative; float: right; margin-right: 5px; - margin-top: 4px; } .catalog-button { @@ -656,6 +850,134 @@ export const TopBar = styled.div` } }} + + ${({ selectedStyle }) => { + switch (selectedStyle) { + case 'Yotsuba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Yotsuba B': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c !important; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #34345c !important; + white-space: nowrap; + }`; + + case 'Futaba': + return `.btn-wrap { + background-color: #f0e0d6; + background-image: url(/assets/buttonfade.png); + border: 1px solid #c0a69d; + color: #800; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + }`; + + case 'Burichan': + return `.btn-wrap { + background-color: #d6daf0; + background-image: url(/assets/buttonfade-blue.png); + border: 1px solid #b7c5d9; + color: #34345c; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + font-size: 16px; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: inherit !important; + white-space: nowrap; + } + }`; + + case 'Tomorrow': + return `.btn-wrap { + background-color: #1b1c1e; + background-image: url(/assets/buttonfade-dark.png); + border: 1px solid #282a2e; + color: #707070; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none !important; + border: none; + color: #707070 !important; + white-space: nowrap; + }`; + + case 'Photon': + return `.btn-wrap { + background: linear-gradient(to bottom, rgba(238, 238, 238, 1) 0%, rgba(224, 224, 224, 1) 100%); + border: 1px solid #ccc; + color: #333; + border-radius: 3px 3px 3px 3px; + font-weight: 700; + padding: 6px 10px 5px; + background-repeat: repeat-x; + cursor: pointer; + } + + .btn-wrap a { + text-decoration: none; + border: none; + color: #333 !important; + white-space: nowrap; + }`; + + } + }} `; export const BottomBar = styled.div`