refactor: update branding from HarifSport to FortuneBets across the application
This commit is contained in:
parent
1a1361ee7f
commit
7d994e253b
|
|
@ -128,7 +128,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* HarifSport odds button animation */
|
/* FortuneBets odds button animation */
|
||||||
@keyframes odds-flash {
|
@keyframes odds-flash {
|
||||||
0% {
|
0% {
|
||||||
background-color: oklch(0.55 0.18 145);
|
background-color: oklch(0.55 0.18 145);
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,8 @@ const geistMono = Geist_Mono({
|
||||||
})
|
})
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
title: "Harifsport - Sports Betting",
|
title: "Fortune Bets - Sports Betting",
|
||||||
description: "Harifsport sportsbook - Live betting, in-play events, and more",
|
description: "Fortune Bets sportsbook - Ethiopian online casiono, sports betting, in-play events, and more",
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function RootLayout({
|
export default function RootLayout({
|
||||||
|
|
|
||||||
|
|
@ -41,15 +41,15 @@ export default function LoginPage() {
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
{/* HARIF box */}
|
{/* FORTUNE box */}
|
||||||
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[38px]">
|
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[38px]">
|
||||||
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">
|
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">
|
||||||
HARIF
|
FORTUNE
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{/* SPORT text */}
|
{/* BETS text */}
|
||||||
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
||||||
SPORT
|
BETS
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -43,15 +43,15 @@ export default function RegisterPage() {
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
{/* HARIF box */}
|
{/* FORTUNE box */}
|
||||||
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[38px]">
|
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[38px]">
|
||||||
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">
|
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">
|
||||||
HARIF
|
FORTUNE
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{/* SPORT text */}
|
{/* BETS text */}
|
||||||
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
||||||
SPORT
|
BETS
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
const rules = [
|
const rules = [
|
||||||
{
|
{
|
||||||
title: "General Betting Rules",
|
title: "General Betting Rules",
|
||||||
content: "All bets are subject to Harifsport terms and conditions. By placing a bet, you agree to abide by these rules. The minimum bet amount is 5 ETB and the maximum payout is 500,000 ETB per bet.",
|
content: "All bets are subject to Fortune's terms and conditions. By placing a bet, you agree to abide by these rules. The minimum bet amount is 5 ETB and the maximum payout is 500,000 ETB per bet.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Live Betting",
|
title: "Live Betting",
|
||||||
|
|
@ -13,7 +13,7 @@ const rules = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Responsible Gambling",
|
title: "Responsible Gambling",
|
||||||
content: "Harifsport is committed to responsible gambling. Users may set deposit limits, loss limits, or self-exclude at any time. Gambling should be entertaining, not a source of income.",
|
content: "Fortune's is committed to responsible gambling. Users may set deposit limits, loss limits, or self-exclude at any time. Gambling should be entertaining, not a source of income.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "Account Rules",
|
title: "Account Rules",
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ export type GameCategory =
|
||||||
| "favourite"
|
| "favourite"
|
||||||
| "recently-played"
|
| "recently-played"
|
||||||
| "most-popular"
|
| "most-popular"
|
||||||
| "harif-special"
|
| "fortune-special"
|
||||||
| "for-you"
|
| "for-you"
|
||||||
| "slots"
|
| "slots"
|
||||||
| "crash-games"
|
| "crash-games"
|
||||||
|
|
@ -30,7 +30,7 @@ const categories = [
|
||||||
{ id: "favourite", name: "Favourite", icon: Heart },
|
{ id: "favourite", name: "Favourite", icon: Heart },
|
||||||
{ id: "recently-played", name: "Recently Played", icon: Clock },
|
{ id: "recently-played", name: "Recently Played", icon: Clock },
|
||||||
{ id: "most-popular", name: "Most Popular", icon: Star },
|
{ id: "most-popular", name: "Most Popular", icon: Star },
|
||||||
{ id: "harif-special", name: "Harif Special", icon: Zap },
|
{ id: "fortune-special", name: "Fortune Special", icon: Star },
|
||||||
{ id: "for-you", name: "For You", icon: Star },
|
{ id: "for-you", name: "For You", icon: Star },
|
||||||
{ id: "slots", name: "Slots", icon: Star },
|
{ id: "slots", name: "Slots", icon: Star },
|
||||||
{ id: "crash-games", name: "Crash Games", icon: Star },
|
{ id: "crash-games", name: "Crash Games", icon: Star },
|
||||||
|
|
|
||||||
|
|
@ -14,15 +14,15 @@ function Logo() {
|
||||||
<div key={i} className="w-[5px] h-[38px] bg-[#cc2222] -skew-x-12" />
|
<div key={i} className="w-[5px] h-[38px] bg-[#cc2222] -skew-x-12" />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
{/* HARIF box */}
|
{/* FORTUNE box */}
|
||||||
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[38px]">
|
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[38px]">
|
||||||
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">
|
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">
|
||||||
HARIF
|
FORTUNE
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{/* SPORT text */}
|
{/* BETS text */}
|
||||||
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
||||||
SPORT
|
BETS
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -54,9 +54,9 @@ export function SiteFooter() {
|
||||||
<div className="flex flex-col items-center justify-center py-16 border-t border-white/5 mt-12 bg-brand-surface-light">
|
<div className="flex flex-col items-center justify-center py-16 border-t border-white/5 mt-12 bg-brand-surface-light">
|
||||||
<div className="flex items-center bg-brand-surface px-5 py-2">
|
<div className="flex items-center bg-brand-surface px-5 py-2">
|
||||||
<div className="bg-brand-accent px-3 py-1 -skew-x-12">
|
<div className="bg-brand-accent px-3 py-1 -skew-x-12">
|
||||||
<span className="text-3xl font-black text-white italic tracking-tighter skew-x-12 inline-block">HARIF</span>
|
<span className="text-3xl font-black text-white italic tracking-tighter skew-x-12 inline-block">FORTUNE</span>
|
||||||
</div>
|
</div>
|
||||||
<span className="text-3xl font-black text-brand-primary italic tracking-tighter ml-1">SPORT</span>
|
<span className="text-3xl font-black text-brand-primary italic tracking-tighter ml-1">BETS</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Footer Links */}
|
{/* Footer Links */}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import { Input } from "@/components/ui/input"
|
||||||
import Image from "next/image"
|
import Image from "next/image"
|
||||||
|
|
||||||
const allNavItems = [
|
const allNavItems = [
|
||||||
{ href: "/", label: "ALL SPORTS" },
|
{ href: "/", label: "ALL BETSS" },
|
||||||
{ href: "/live", label: "LIVE" },
|
{ href: "/live", label: "LIVE" },
|
||||||
{ href: "/virtual", label: "VIRTUAL" },
|
{ href: "/virtual", label: "VIRTUAL" },
|
||||||
{ href: "/special-games", label: "SPECIAL Games" },
|
{ href: "/special-games", label: "SPECIAL Games" },
|
||||||
|
|
@ -21,7 +21,7 @@ const allNavItems = [
|
||||||
]
|
]
|
||||||
|
|
||||||
const drawerLinks = [
|
const drawerLinks = [
|
||||||
{ href: "/", label: "All Sports" },
|
{ href: "/", label: "All BETSs" },
|
||||||
{ href: "/live", label: "Live Betting" },
|
{ href: "/live", label: "Live Betting" },
|
||||||
{ href: "/virtual", label: "Virtual" },
|
{ href: "/virtual", label: "Virtual" },
|
||||||
{ href: "/special-games", label: "Special Games" },
|
{ href: "/special-games", label: "Special Games" },
|
||||||
|
|
@ -118,9 +118,9 @@ export function SiteHeader({ onLoginClick, onRegisterClick }: SiteHeaderProps) {
|
||||||
<Link href="/" className="flex-1 flex items-center justify-center">
|
<Link href="/" className="flex-1 flex items-center justify-center">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<div className="bg-brand-accent px-2 py-0.5 -skew-x-12 flex items-center h-[28px]">
|
<div className="bg-brand-accent px-2 py-0.5 -skew-x-12 flex items-center h-[28px]">
|
||||||
<span className="text-xl font-black text-white italic tracking-tighter skew-x-12 leading-none">HARIF</span>
|
<span className="text-xl font-black text-white italic tracking-tighter skew-x-12 leading-none">FORTUNE</span>
|
||||||
</div>
|
</div>
|
||||||
<span className="text-xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">SPORT</span>
|
<span className="text-xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">BETS</span>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
|
|
@ -146,9 +146,9 @@ export function SiteHeader({ onLoginClick, onRegisterClick }: SiteHeaderProps) {
|
||||||
<Link href="/" className="flex items-center shrink-0">
|
<Link href="/" className="flex items-center shrink-0">
|
||||||
<div className="flex items-center bg-brand-surface h-[60px] px-4 w-[280px] shrink-0 border-r border-white/5">
|
<div className="flex items-center bg-brand-surface h-[60px] px-4 w-[280px] shrink-0 border-r border-white/5">
|
||||||
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[34px]">
|
<div className="bg-brand-accent px-3 py-1 -skew-x-12 flex items-center h-[34px]">
|
||||||
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">HARIF</span>
|
<span className="text-2xl font-black text-white italic tracking-tighter skew-x-12 inline-block leading-none">FORTUNE</span>
|
||||||
</div>
|
</div>
|
||||||
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">SPORT</span>
|
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">BETS</span>
|
||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
<div className="flex items-center flex-1 justify-end px-4 h-full gap-0 bg-brand-surface">
|
<div className="flex items-center flex-1 justify-end px-4 h-full gap-0 bg-brand-surface">
|
||||||
|
|
@ -232,7 +232,7 @@ export function SiteHeader({ onLoginClick, onRegisterClick }: SiteHeaderProps) {
|
||||||
})}
|
})}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* ===== MOBILE: Sport Category Icons Row ===== */}
|
{/* ===== MOBILE: BETS Category Icons Row ===== */}
|
||||||
<div className="flex md:hidden overflow-x-auto scrollbar-none bg-brand-surface-light border-t border-white/5 py-2 px-2 gap-4">
|
<div className="flex md:hidden overflow-x-auto scrollbar-none bg-brand-surface-light border-t border-white/5 py-2 px-2 gap-4">
|
||||||
{[
|
{[
|
||||||
{ label: "Check Bet", icon: (active: boolean) => <svg viewBox="0 0 24 24" className="size-5 fill-white/80"><path d="M20 4H4c-1.11 0-2 .89-2 2v12c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"/></svg>, count: 99 },
|
{ label: "Check Bet", icon: (active: boolean) => <svg viewBox="0 0 24 24" className="size-5 fill-white/80"><path d="M20 4H4c-1.11 0-2 .89-2 2v12c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V6c0-1.11-.89-2-2-2zm0 14H4v-6h16v6zm0-10H4V6h16v2z"/></svg>, count: 99 },
|
||||||
|
|
@ -255,7 +255,7 @@ export function SiteHeader({ onLoginClick, onRegisterClick }: SiteHeaderProps) {
|
||||||
{pathname !== "/virtual" && pathname !== "/special-games" && (
|
{pathname !== "/virtual" && pathname !== "/special-games" && (
|
||||||
<div className="hidden md:flex bg-brand-surface-light border-t border-white/5 h-8 px-3 items-center gap-6 text-[11px]">
|
<div className="hidden md:flex bg-brand-surface-light border-t border-white/5 h-8 px-3 items-center gap-6 text-[11px]">
|
||||||
{[
|
{[
|
||||||
{ label: "Sport Home", href: "/" },
|
{ label: "BETS Home", href: "/" },
|
||||||
{ label: "Live View", href: "/live", forceActive: isLivePage },
|
{ label: "Live View", href: "/live", forceActive: isLivePage },
|
||||||
].map((tab) => {
|
].map((tab) => {
|
||||||
const isActive = tab.forceActive || pathname === tab.href
|
const isActive = tab.forceActive || pathname === tab.href
|
||||||
|
|
@ -267,7 +267,7 @@ export function SiteHeader({ onLoginClick, onRegisterClick }: SiteHeaderProps) {
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{tab.label}
|
{tab.label}
|
||||||
{isActive && tab.label !== "Sport Home" && (
|
{isActive && tab.label !== "BETS Home" && (
|
||||||
<div className="absolute bottom-0 left-0 right-0 h-[2px] bg-brand-primary" />
|
<div className="absolute bottom-0 left-0 right-0 h-[2px] bg-brand-primary" />
|
||||||
)}
|
)}
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -288,9 +288,9 @@ export function SiteHeader({ onLoginClick, onRegisterClick }: SiteHeaderProps) {
|
||||||
<div className="flex items-center justify-between px-4 py-3 bg-brand-surface border-b border-white/10">
|
<div className="flex items-center justify-between px-4 py-3 bg-brand-surface border-b border-white/10">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<div className="bg-brand-accent px-2 py-0.5 -skew-x-12 flex items-center h-[24px]">
|
<div className="bg-brand-accent px-2 py-0.5 -skew-x-12 flex items-center h-[24px]">
|
||||||
<span className="text-base font-black text-white italic tracking-tighter skew-x-12 leading-none">HARIF</span>
|
<span className="text-base font-black text-white italic tracking-tighter skew-x-12 leading-none">FORTUNE</span>
|
||||||
</div>
|
</div>
|
||||||
<span className="text-base font-black text-brand-primary italic tracking-tighter ml-1 leading-none">SPORT</span>
|
<span className="text-base font-black text-brand-primary italic tracking-tighter ml-1 leading-none">BETS</span>
|
||||||
</div>
|
</div>
|
||||||
<button onClick={() => setDrawerOpen(false)} className="text-white/60 hover:text-white text-2xl leading-none">×</button>
|
<button onClick={() => setDrawerOpen(false)} className="text-white/60 hover:text-white text-2xl leading-none">×</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ export type {
|
||||||
TabColumnCell,
|
TabColumnCell,
|
||||||
} from "./betting-types"
|
} from "./betting-types"
|
||||||
|
|
||||||
const BASE_URL = (process.env.NEXT_PUBLIC_BETTING_API_BASE_URL || "http://localhost:8080/api/v1").replace(/\/$/, "")
|
const BASE_URL = (process.env.NEXT_PUBLIC_BETTING_API_BASE_URL || "http://localhost:8080").replace(/\/$/, "")
|
||||||
const TENANT_SLUG = process.env.NEXT_PUBLIC_TENANT_SLUG || "fortunebets"
|
const TENANT_SLUG = process.env.NEXT_PUBLIC_TENANT_SLUG || "fortunebets"
|
||||||
|
|
||||||
const DEFAULT_PAGE_SIZE = 20
|
const DEFAULT_PAGE_SIZE = 20
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user