diff --git a/src/components/icon.jsx b/src/components/icon.jsx index 5301fe18..d9ab5008 100644 --- a/src/components/icon.jsx +++ b/src/components/icon.jsx @@ -18,6 +18,7 @@ const ICONS = { 'arrow-left': 'mingcute:arrow-left-line', 'arrow-right': 'mingcute:arrow-right-line', 'arrow-up': 'mingcute:arrow-up-line', + 'arrow-down': 'mingcute:arrow-down-line', earth: 'mingcute:earth-line', lock: 'mingcute:lock-line', unlock: 'mingcute:unlock-line', diff --git a/src/pages/status.css b/src/pages/status.css index 74ae38e0..fe827489 100644 --- a/src/pages/status.css +++ b/src/pages/status.css @@ -24,6 +24,10 @@ display: inline-block; margin-bottom: 0.25em; } +.hero-heading .icon { + vertical-align: middle; + color: var(--text-insignificant-color); +} .hero-heading .insignificant { font-weight: normal; } diff --git a/src/pages/status.jsx b/src/pages/status.jsx index eb5773a2..43463036 100644 --- a/src/pages/status.jsx +++ b/src/pages/status.jsx @@ -268,6 +268,12 @@ function StatusPage({ id }) { const [heroInView, setHeroInView] = useState(true); const onView = useDebouncedCallback(setHeroInView, 100); + const heroPointer = useMemo(() => { + // get top offset of heroStatus + if (!heroStatusRef.current) return null; + const { top } = heroStatusRef.current.getBoundingClientRect(); + return top > 0 ? 'down' : 'up'; + }, [heroInView]); return (
@@ -300,6 +306,13 @@ function StatusPage({ id }) {

{!heroInView && heroStatus ? ( + {!!heroPointer && ( + <> + {' '} + + )} {' '} •{' '}