Refine dashboard hero, mobile nav, animations and touch polish
- Stack the /me dashboard hero (avatar + info) on small screens instead of crowding them side by side; center the avatar and info on mobile - Respect prefers-reduced-motion in the Reveal scroll animation - Make the desktop pitch-in (NavDropdown) and mobile menu more consistent; give the mobile menu a max-height with overscroll containment so long navs scroll instead of overflowing on small phones - Add safe-area insets for notched devices on header, nav and footer - Polish whole-link content-cards (community tiles) with hover lift and a visible focus ring - Enforce a comfortable min touch height on all .btn buttons
This commit is contained in:
1 parent
c17ef0e7ab
commit
d4677972cd
4 files changed
+38
-8
No files matched your search
@@ -63,7 +63,7 @@ export function MobileNav({
|
||||
<AnimatePresence>
|
||||
{open && (
|
||||
<motion.div
|
||||
className="absolute left-0 top-full mt-2 w-[min(86vw,320px)] z-50 origin-top-left"
|
||||
className="absolute left-0 top-full mt-2 w-[min(88vw,360px)] z-50 origin-top-left"
|
||||
style={{ backgroundColor: "transparent" }}
|
||||
variants={mobileMenuVariants}
|
||||
initial="hidden"
|
||||
@@ -71,7 +71,7 @@ export function MobileNav({
|
||||
exit="exit"
|
||||
>
|
||||
<div
|
||||
className="flex flex-col gap-y-1 p-2 rounded-2xl border shadow-xl
|
||||
className="flex flex-col gap-y-1 p-2 rounded-2xl border shadow-xl max-h-[calc(100dvh-5rem)] overflow-y-auto overscroll-contain
|
||||
bg-[var(--color-dropdown,var(--color-surface,#fff))]"
|
||||
style={{
|
||||
borderColor:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { motion } from "motion/react";
|
||||
import { motion, useReducedMotion } from "motion/react";
|
||||
import type { ReactNode } from "react";
|
||||
|
||||
interface RevealProps {
|
||||
@@ -10,12 +10,14 @@ interface RevealProps {
|
||||
}
|
||||
|
||||
export function Reveal({ children, className, delay = 0 }: RevealProps) {
|
||||
const prefersReducedMotion = useReducedMotion();
|
||||
|
||||
return (
|
||||
<motion.div
|
||||
className={className}
|
||||
initial={{ opacity: 0, y: 24 }}
|
||||
initial={{ opacity: 0, y: prefersReducedMotion ? 0 : 24 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
viewport={{ once: true, margin: "-50px" }}
|
||||
viewport={{ once: true, margin: "-40px" }}
|
||||
transition={{ duration: 0.45, delay, ease: [0.25, 0.1, 0.25, 1] }}
|
||||
>
|
||||
{children}
|
||||
|
||||
Reference in new issue
Block a user