diff --git a/client/components/app/index.tsx b/client/components/app/index.tsx
index 3e68a12e..8504e8f4 100644
--- a/client/components/app/index.tsx
+++ b/client/components/app/index.tsx
@@ -26,7 +26,7 @@ const App = ({
accents_6: 'var(--darker-gray)',
accents_7: 'var(--darkest-gray)',
accents_8: 'var(--darkest-gray)',
- border: 'var(--lightest-gray)',
+ border: 'var(--light-gray)',
},
expressiveness: {
dropdownBoxShadow: '0 0 0 1px var(--light-gray)',
diff --git a/client/components/file-dropdown/dropdown.module.css b/client/components/file-dropdown/dropdown.module.css
index db133567..30dde7f8 100644
--- a/client/components/file-dropdown/dropdown.module.css
+++ b/client/components/file-dropdown/dropdown.module.css
@@ -47,7 +47,8 @@
}
.content li .fileTitle {
- font-size: 1rem;
+ /* from Geist */
+ font-size: calc(0.875 * 16px);
}
.content li::before {
diff --git a/client/components/post-page/index.tsx b/client/components/post-page/index.tsx
index bdb58e47..9f255043 100644
--- a/client/components/post-page/index.tsx
+++ b/client/components/post-page/index.tsx
@@ -12,6 +12,7 @@ import { useMemo, useState } from "react"
import timeAgo from "@lib/time-ago"
import Archive from '@geist-ui/icons/archive'
import FileDropdown from "@components/file-dropdown"
+import ScrollToTop from "@components/scroll-to-top"
type Props = {
post: Post
@@ -67,7 +68,6 @@ const PostPage = ({ post }: Props) => {
-
{/* {post.files.length > 1 && } */}
{post.files.map(({ id, content, title }: File) => (
@@ -79,6 +79,8 @@ const PostPage = ({ post }: Props) => {
content={content}
/>
))}
+
+
)
diff --git a/client/components/scroll-to-top/index.tsx b/client/components/scroll-to-top/index.tsx
new file mode 100644
index 00000000..3fd7c04b
--- /dev/null
+++ b/client/components/scroll-to-top/index.tsx
@@ -0,0 +1,33 @@
+import { Tooltip, Button, Spacer } from '@geist-ui/core'
+import ChevronUp from '@geist-ui/icons/chevronUpCircleFill'
+import { useEffect, useState } from 'react'
+import styles from './scroll.module.css'
+
+const ScrollToTop = () => {
+ const [shouldShow, setShouldShow] = useState(false)
+ useEffect(() => {
+ // if user is scrolled, set visible
+ const handleScroll = () => {
+ setShouldShow(window.scrollY > 100)
+ }
+ window.addEventListener('scroll', handleScroll)
+ return () => window.removeEventListener('scroll', handleScroll)
+ }, [])
+
+ const onClick = () => {
+ window.scrollTo({ top: 0, behavior: 'smooth' })
+ }
+
+ return (
+
+
+
+
+
+ )
+}
+
+export default ScrollToTop
\ No newline at end of file
diff --git a/client/components/scroll-to-top/scroll.module.css b/client/components/scroll-to-top/scroll.module.css
new file mode 100644
index 00000000..070e2cae
--- /dev/null
+++ b/client/components/scroll-to-top/scroll.module.css
@@ -0,0 +1,17 @@
+.scroll-up {
+ position: fixed;
+ z-index: 2;
+ pointer-events: none;
+ opacity: 0;
+ transform: translateY(16px);
+ transition: transform 0.2s, opacity 0.2s;
+ cursor: pointer;
+ bottom: var(--gap-double);
+ will-change: transform, opacity;
+}
+
+.scroll-up-shown {
+ opacity: 0.8;
+ transform: none;
+ pointer-events: auto;
+}