diff --git a/src/app/(app)/explore/page.tsx b/src/app/(app)/explore/page.tsx index c1424f1..6c94c21 100644 --- a/src/app/(app)/explore/page.tsx +++ b/src/app/(app)/explore/page.tsx @@ -7,6 +7,7 @@ import { useInfiniteQuery, useQuery } from "@tanstack/react-query"; import { Loader2, TrendingUp } from "lucide-react"; import { useTRPC } from "@/trpc/client"; import { useActivePet } from "@/context/ActivePetContext"; +import { useHorizontalScroll } from "@/hooks/use-horizontal-scroll"; import { ExploreCard } from "@/components/explore/ExploreCard"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Badge } from "@/components/ui/badge"; @@ -32,6 +33,7 @@ export default function ExplorePage() { const [activeTab, setActiveTab] = useState("trending"); const [activeBreedId, setActiveBreedId] = useState(null); const [selectedPost, setSelectedPost] = useState(null); + const speciesTabsScroll = useHorizontalScroll(); const isTrending = activeTab === "trending"; const activeSpeciesId = @@ -94,7 +96,11 @@ export default function ExplorePage() {

{t("title")}

-
+
diff --git a/src/components/stories/StoryTray.tsx b/src/components/stories/StoryTray.tsx index 1e2c147..111e594 100644 --- a/src/components/stories/StoryTray.tsx +++ b/src/components/stories/StoryTray.tsx @@ -6,6 +6,7 @@ import { useTranslations } from "next-intl"; import { useQuery } from "@tanstack/react-query"; import { useTRPC } from "@/trpc/client"; import { useActivePet } from "@/context/ActivePetContext"; +import { useHorizontalScroll } from "@/hooks/use-horizontal-scroll"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; import { Dialog, @@ -34,6 +35,7 @@ export function StoryTray() { const trpc = useTRPC(); const { activePetId } = useActivePet(); + const trayScroll = useHorizontalScroll(); const [addStoryOpen, setAddStoryOpen] = useState(false); const [viewingPet, setViewingPet] = useState<{ id: string; @@ -53,6 +55,8 @@ export function StoryTray() { <> {/* Horizontal scroll tray */}
() { + const ref = useRef(null); + + const onWheel = useCallback((e: WheelEvent) => { + const el = ref.current; + if (!el || el.scrollWidth <= el.clientWidth) return; + if (Math.abs(e.deltaY) <= Math.abs(e.deltaX)) return; + + el.scrollLeft += e.deltaY; + e.preventDefault(); + }, []); + + return { ref, onWheel }; +}