From cfb6b61120c610506a667cbd303831ac5e769a51 Mon Sep 17 00:00:00 2001 From: brooktewabe Date: Fri, 20 Feb 2026 12:21:00 +0300 Subject: [PATCH] feat: Add layout components including header, footer, sidebar, and tabs for improved navigation and user experience --- components/betting/home-tabs.tsx | 24 +++ components/layout/layout-client-wrapper.tsx | 24 +++ components/layout/right-panel.tsx | 71 ++++++-- components/layout/site-footer.tsx | 82 +++++++++ components/layout/site-header.tsx | 179 ++++++++++++++++---- 5 files changed, 334 insertions(+), 46 deletions(-) create mode 100644 components/betting/home-tabs.tsx create mode 100644 components/layout/layout-client-wrapper.tsx create mode 100644 components/layout/site-footer.tsx diff --git a/components/betting/home-tabs.tsx b/components/betting/home-tabs.tsx new file mode 100644 index 0000000..9d44003 --- /dev/null +++ b/components/betting/home-tabs.tsx @@ -0,0 +1,24 @@ +import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs" + +const tabs = [ + { id: "today", label: "Today Events" }, + { id: "upcoming", label: "Upcoming Events" }, + { id: "most-played", label: "Most Played" }, + { id: "top-occurrences", label: "Top Occurrences" }, +] + +export function HomeTabs() { + return ( +
+ + + {tabs.map((tab) => ( + + {tab.label} + + ))} + + +
+ ) +} diff --git a/components/layout/layout-client-wrapper.tsx b/components/layout/layout-client-wrapper.tsx new file mode 100644 index 0000000..9159684 --- /dev/null +++ b/components/layout/layout-client-wrapper.tsx @@ -0,0 +1,24 @@ +"use client" + +import { usePathname } from "next/navigation" +import { SiteHeader } from "@/components/layout/site-header" +import { SportsSidebar } from "@/components/layout/sports-sidebar" +import { RightPanel } from "@/components/layout/right-panel" +import { SiteFooter } from "@/components/layout/site-footer" + +export default function LayoutClientWrapper({ children }: { children: React.ReactNode }) { + const pathname = usePathname() + const isLivePage = pathname === "/live" + + return ( +
+ +
+ {!isLivePage && } +
{children}
+ +
+ +
+ ) +} diff --git a/components/layout/right-panel.tsx b/components/layout/right-panel.tsx index 1bfd3d7..a1b1ed8 100644 --- a/components/layout/right-panel.tsx +++ b/components/layout/right-panel.tsx @@ -1,24 +1,61 @@ +"use client" + import { Betslip } from "@/components/betting/betslip" import { ReloadTicket } from "@/components/betting/reload-ticket" import { CheckYourBet } from "@/components/betting/check-your-bet" -import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" +import { useState } from "react" + +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" export function RightPanel() { + const [activeTab, setActiveTab] = useState<"betslip" | "myBets">("betslip") + return ( -