new pages added
This commit is contained in:
parent
2c96be08bf
commit
5587dff57c
21
app/event/[id]/page.tsx
Normal file
21
app/event/[id]/page.tsx
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
import Link from "next/link"
|
||||||
|
import { getEventById } from "@/lib/mock-data"
|
||||||
|
import { MatchDetailView } from "@/components/betting/match-detail-view"
|
||||||
|
|
||||||
|
export default async function EventPage({ params }: { params: Promise<{ id: string }> }) {
|
||||||
|
const { id } = await params
|
||||||
|
const event = getEventById(id)
|
||||||
|
|
||||||
|
if (!event) {
|
||||||
|
return (
|
||||||
|
<div className="flex flex-col items-center justify-center min-h-[40vh] gap-4">
|
||||||
|
<p className="text-white/80">Match not found.</p>
|
||||||
|
<Link href="/" className="text-brand-primary font-bold hover:underline">
|
||||||
|
Back to home
|
||||||
|
</Link>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return <MatchDetailView event={event} />
|
||||||
|
}
|
||||||
|
|
@ -57,41 +57,39 @@
|
||||||
:root {
|
:root {
|
||||||
--radius: 0rem;
|
--radius: 0rem;
|
||||||
|
|
||||||
/* Brand Colors (Black, Yellow, White theme) */
|
/* Brand Colors (White and Green theme) - dark grey, not near-black */
|
||||||
--brand-primary: #ff9800;
|
--brand-primary: #22c55e;
|
||||||
--brand-primary-hover: #e68900;
|
--brand-primary-hover: #16a34a;
|
||||||
--brand-secondary: #ff9800;
|
--brand-secondary: #22c55e;
|
||||||
/* Usually same as primary for now */
|
--brand-bg: #252525;
|
||||||
--brand-bg: #121212;
|
--brand-surface: #2d2d2d;
|
||||||
--brand-surface: #1a1a1a;
|
--brand-surface-light: #353535;
|
||||||
--brand-surface-light: #2a2a2a;
|
--brand-accent: #15803d;
|
||||||
--brand-accent: #852222;
|
--brand-live: #22c55e;
|
||||||
/* Maroon */
|
|
||||||
--brand-live: #ff3b3b;
|
|
||||||
|
|
||||||
/* Shadcn default mappings */
|
/* Shadcn default mappings */
|
||||||
--background: var(--brand-bg);
|
--background: var(--brand-bg);
|
||||||
--foreground: #ffffff;
|
--foreground: #ffffff;
|
||||||
--card: #1e1e1e;
|
--card: #2a2a2a;
|
||||||
--card-foreground: #ffffff;
|
--card-foreground: #ffffff;
|
||||||
--popover: #1e1e1e;
|
--popover: #2a2a2a;
|
||||||
--popover-foreground: #ffffff;
|
--popover-foreground: #ffffff;
|
||||||
--primary: var(--brand-primary);
|
--primary: var(--brand-primary);
|
||||||
--primary-foreground: #ffffff;
|
--primary-foreground: #ffffff;
|
||||||
--secondary: #222222;
|
--secondary: #2d2d2d;
|
||||||
--secondary-foreground: #a0a0a0;
|
--secondary-foreground: #a0a0a0;
|
||||||
--muted: #1a1a1a;
|
--muted: #252525;
|
||||||
--muted-foreground: #808080;
|
--muted-foreground: #808080;
|
||||||
--accent: var(--brand-primary);
|
--accent: var(--brand-primary);
|
||||||
--accent-foreground: #121212;
|
--accent-foreground: #121212;
|
||||||
--destructive: #ef4444;
|
--destructive: #ef4444;
|
||||||
--border: #2a2a2a;
|
--border: #353535;
|
||||||
--input: #222222;
|
--input: #2d2d2d;
|
||||||
--ring: var(--brand-primary);
|
--ring: var(--brand-primary);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
--background: oklch(0.13 0.008 250);
|
--background: oklch(0.17 0.01 250);
|
||||||
--foreground: oklch(0.93 0.005 250);
|
--foreground: oklch(0.93 0.005 250);
|
||||||
--card: oklch(0.17 0.01 250);
|
--card: oklch(0.17 0.01 250);
|
||||||
--card-foreground: oklch(0.93 0.005 250);
|
--card-foreground: oklch(0.93 0.005 250);
|
||||||
|
|
|
||||||
|
|
@ -42,13 +42,13 @@ export default function LoginPage() {
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
{/* HARIF box */}
|
{/* HARIF box */}
|
||||||
<div className="bg-[#852222] 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
|
HARIF
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
{/* SPORT text */}
|
{/* SPORT text */}
|
||||||
<span className="text-2xl font-black text-[#ff9800] italic tracking-tighter ml-1 leading-none">
|
<span className="text-2xl font-black text-brand-primary italic tracking-tighter ml-1 leading-none">
|
||||||
SPORT
|
SPORT
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -76,7 +76,7 @@ export default function LoginPage() {
|
||||||
type="tel"
|
type="tel"
|
||||||
value={phone}
|
value={phone}
|
||||||
onChange={(e) => setPhone(e.target.value)}
|
onChange={(e) => setPhone(e.target.value)}
|
||||||
className="flex-1 bg-white border border-gray-300 px-3 py-2 text-sm text-[#333] placeholder:text-gray-400 focus:outline-none focus:border-[#ff9800]"
|
className="flex-1 bg-white border border-gray-300 px-3 py-2 text-sm text-[#333] placeholder:text-gray-400 focus:outline-none focus:border-brand-primary"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -91,7 +91,7 @@ export default function LoginPage() {
|
||||||
value={password}
|
value={password}
|
||||||
onChange={(e) => setPassword(e.target.value)}
|
onChange={(e) => setPassword(e.target.value)}
|
||||||
placeholder="Password"
|
placeholder="Password"
|
||||||
className="w-full bg-white border border-gray-300 px-3 py-2 text-sm text-[#333] placeholder:text-gray-400 focus:outline-none focus:border-[#ff9800]"
|
className="w-full bg-white border border-gray-300 px-3 py-2 text-sm text-[#333] placeholder:text-gray-400 focus:outline-none focus:border-brand-primary"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -99,7 +99,7 @@ export default function LoginPage() {
|
||||||
<div className="text-right">
|
<div className="text-right">
|
||||||
<Link
|
<Link
|
||||||
href="/reset-password"
|
href="/reset-password"
|
||||||
className="text-[11px] text-white/50 hover:text-[#ff9800] transition-colors"
|
className="text-[11px] text-white/50 hover:text-brand-primary transition-colors"
|
||||||
>
|
>
|
||||||
Forgot password?
|
Forgot password?
|
||||||
</Link>
|
</Link>
|
||||||
|
|
@ -120,7 +120,7 @@ export default function LoginPage() {
|
||||||
{/* Register link */}
|
{/* Register link */}
|
||||||
<p className="text-center text-[11px] text-white/50">
|
<p className="text-center text-[11px] text-white/50">
|
||||||
Don't have an account?{" "}
|
Don't have an account?{" "}
|
||||||
<Link href="/register" className="text-[#ff9800] hover:underline font-semibold">
|
<Link href="/register" className="text-brand-primary hover:underline font-semibold">
|
||||||
Register
|
Register
|
||||||
</Link>
|
</Link>
|
||||||
</p>
|
</p>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
|
import { Suspense } from "react"
|
||||||
import { SportHome } from "@/components/betting/sport-home"
|
import { SportHome } from "@/components/betting/sport-home"
|
||||||
|
|
||||||
export default function Home() {
|
export default function Home() {
|
||||||
return <SportHome />
|
return (
|
||||||
|
<Suspense fallback={<div>Loading...</div>}>
|
||||||
|
<SportHome />
|
||||||
|
</Suspense>
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
144
lib/mock-data.ts
144
lib/mock-data.ts
|
|
@ -220,6 +220,31 @@ export const mockEvents: Event[] = [
|
||||||
],
|
],
|
||||||
totalMarkets: 110,
|
totalMarkets: 110,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: "01890",
|
||||||
|
sport: "Soccer",
|
||||||
|
sportIcon: "⚽",
|
||||||
|
league: "Premier League",
|
||||||
|
country: "England",
|
||||||
|
homeTeam: "Burnley",
|
||||||
|
awayTeam: "Brentford",
|
||||||
|
time: "05:00",
|
||||||
|
date: "Feb 28, 26",
|
||||||
|
isLive: false,
|
||||||
|
markets: [
|
||||||
|
{ id: "1", label: "1", odds: 4.58 },
|
||||||
|
{ id: "x", label: "x", odds: 4.00 },
|
||||||
|
{ id: "2", label: "2", odds: 1.78 },
|
||||||
|
{ id: "o25", label: "Over (2.5)", odds: 1.80 },
|
||||||
|
{ id: "u25", label: "Under (2.5)", odds: 2.05 },
|
||||||
|
{ id: "1x", label: "1X", odds: 2.10 },
|
||||||
|
{ id: "12", label: "12", odds: 1.25 },
|
||||||
|
{ id: "x2", label: "X2", odds: 1.20 },
|
||||||
|
{ id: "yes", label: "Yes", odds: 1.71 },
|
||||||
|
{ id: "no", label: "No", odds: 2.15 },
|
||||||
|
],
|
||||||
|
totalMarkets: 112,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: "01124",
|
id: "01124",
|
||||||
sport: "Soccer",
|
sport: "Soccer",
|
||||||
|
|
@ -247,6 +272,125 @@ export const mockEvents: Event[] = [
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export function getEventById(id: string): Event | undefined {
|
||||||
|
return mockEvents.find((e) => e.id === id)
|
||||||
|
}
|
||||||
|
|
||||||
|
export type DetailMarketOutcome = { label: string; odds: number }
|
||||||
|
export type DetailMarketSection = {
|
||||||
|
id: string
|
||||||
|
title: string
|
||||||
|
outcomes: DetailMarketOutcome[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getEventDetailMarkets(eventId: string): DetailMarketSection[] {
|
||||||
|
const event = getEventById(eventId)
|
||||||
|
if (!event) return []
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
id: "1x2",
|
||||||
|
title: "1x2",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Home", odds: 4.58 },
|
||||||
|
{ label: "Draw", odds: 4.0 },
|
||||||
|
{ label: "Away", odds: 1.78 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "total",
|
||||||
|
title: "Total",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Over (2.5)", odds: 1.8 },
|
||||||
|
{ label: "Under (2.5)", odds: 2.05 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "draw-no-bet",
|
||||||
|
title: "Draw No Bet",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Home", odds: 3.25 },
|
||||||
|
{ label: "Away", odds: 1.35 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "asian-handicap",
|
||||||
|
title: "Asian Handicap 0.5",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Home (+0.5)", odds: 2.1 },
|
||||||
|
{ label: "Away (-0.5)", odds: 1.76 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "double-chance",
|
||||||
|
title: "Double Chance",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Home or Draw", odds: 1.96 },
|
||||||
|
{ label: "Home or Away", odds: 1.25 },
|
||||||
|
{ label: "Draw or Away", odds: 1.2 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "btts",
|
||||||
|
title: "Both teams to score",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Yes", odds: 1.71 },
|
||||||
|
{ label: "No", odds: 2.15 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "1st-half-1x2",
|
||||||
|
title: "1st Half - 1X2",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Home", odds: 4.8 },
|
||||||
|
{ label: "Draw", odds: 2.4 },
|
||||||
|
{ label: "Away", odds: 2.3 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Cards/Bookings markets: left column and right column of sections */
|
||||||
|
export function getCardsBookingsMarkets(eventId: string): {
|
||||||
|
left: DetailMarketSection[]
|
||||||
|
right: DetailMarketSection[]
|
||||||
|
} {
|
||||||
|
getEventById(eventId) // ensure event exists
|
||||||
|
return {
|
||||||
|
left: [
|
||||||
|
{ id: "bookings-1x2", title: "Bookings 1X2", outcomes: [{ label: "Home", odds: 2.2 }, { label: "Draw", odds: 3.7 }, { label: "Away", odds: 2.5 }] },
|
||||||
|
{ id: "bookings-ou", title: "Bookings - Over/Under", outcomes: [] },
|
||||||
|
{ id: "sending-off", title: "Sending Off", outcomes: [{ label: "Yes", odds: 5.4 }, { label: "No", odds: 1.12 }] },
|
||||||
|
{ id: "1st-half-bookings-ou", title: "1st Half Bookings - Over/Under", outcomes: [] },
|
||||||
|
{ id: "1st-booking", title: "1st Booking", outcomes: [{ label: "Home", odds: 1.79 }, { label: "None", odds: 28.11 }, { label: "Away", odds: 1.9 }] },
|
||||||
|
{ id: "home-exact-bookings", title: "Home Exact Bookings", outcomes: [] },
|
||||||
|
{ id: "1st-half-bookings-1x2", title: "1st Half - Bookings 1X2", outcomes: [{ label: "Home", odds: 2.95 }, { label: "Draw", odds: 2.15 }, { label: "Away", odds: 3.2 }] },
|
||||||
|
{ id: "1st-half-away-exact", title: "1st Half - Away Exact Bookings", outcomes: [] },
|
||||||
|
{ id: "away-sending-off", title: "Away Sending Off", outcomes: [] },
|
||||||
|
{ id: "1st-half-home-sending", title: "1st Half - Home Sending Off", outcomes: [] },
|
||||||
|
],
|
||||||
|
right: [
|
||||||
|
{
|
||||||
|
id: "booking-points-ou",
|
||||||
|
title: "Booking Points-Over/Under",
|
||||||
|
outcomes: [
|
||||||
|
{ label: "Over 35.5", odds: 1.85 }, { label: "Under 35.5", odds: 1.85 },
|
||||||
|
{ label: "Over 45.5", odds: 2.85 }, { label: "Under 45.5", odds: 1.38 },
|
||||||
|
{ label: "Over 55.5", odds: 4.6 }, { label: "Under 55.5", odds: 1.16 },
|
||||||
|
{ label: "Over 15.5", odds: 1.1 }, { label: "Under 15.5", odds: 5.8 },
|
||||||
|
{ label: "Over 25.5", odds: 1.35 }, { label: "Under 25.5", odds: 2.95 },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{ id: "exact-bookings", title: "Exact Bookings", outcomes: [] },
|
||||||
|
{ id: "1st-half-total-points", title: "1st Half - Total Booking Points", outcomes: [] },
|
||||||
|
{ id: "1st-half-exact-bookings", title: "1st Half - Exact Bookings", outcomes: [] },
|
||||||
|
{ id: "1st-half-1st-booking", title: "1st Half - 1st Booking", outcomes: [{ label: "Home", odds: 2.5 }, { label: "None", odds: 2.95 }, { label: "Away", odds: 2.65 }] },
|
||||||
|
{ id: "away-exact-bookings", title: "Away Exact Bookings", outcomes: [] },
|
||||||
|
{ id: "1st-half-home-exact", title: "1st Half - Home Exact Bookings", outcomes: [] },
|
||||||
|
{ id: "home-sending-off", title: "Home Sending Off", outcomes: [] },
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export const popularLeagues = [
|
export const popularLeagues = [
|
||||||
{ id: "ucl", name: "UEFA Champions League", logo: "https://upload.wikimedia.org/wikipedia/en/thumb/b/bf/UEFA_Champions_League_logo_2.svg/300px-UEFA_Champions_League_logo_2.svg.png" },
|
{ id: "ucl", name: "UEFA Champions League", logo: "https://upload.wikimedia.org/wikipedia/en/thumb/b/bf/UEFA_Champions_League_logo_2.svg/300px-UEFA_Champions_League_logo_2.svg.png" },
|
||||||
{ id: "uel", name: "UEFA Europa League", logo: "https://upload.wikimedia.org/wikipedia/en/thumb/0/0c/UEFA_Europa_League_logo_%282021%29.svg/300px-UEFA_Europa_League_logo_%282021%29.svg.png" },
|
{ id: "uel", name: "UEFA Europa League", logo: "https://upload.wikimedia.org/wikipedia/en/thumb/0/0c/UEFA_Europa_League_logo_%282021%29.svg/300px-UEFA_Europa_League_logo_%282021%29.svg.png" },
|
||||||
|
|
|
||||||
BIN
public/aviator-bannsser.jpg
Normal file
BIN
public/aviator-bannsser.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 193 KiB |
111
tenant.config.js
Normal file
111
tenant.config.js
Normal file
|
|
@ -0,0 +1,111 @@
|
||||||
|
module.exports = {
|
||||||
|
tenant: "fortunebets",
|
||||||
|
tenant_name: "FortuneBets",
|
||||||
|
tenant_email: "customer@fortunebets.net",
|
||||||
|
tenant_phone_number: "",
|
||||||
|
tenant_location: "Around Lem Hotel , Addis Ababa Ethiopia",
|
||||||
|
tenant_map_link: "https://maps.app.goo.gl/zvhxt8sh7JbsVpbc8",
|
||||||
|
tenant_telegram_link: "https://t.me/fortunebetts",
|
||||||
|
tenant_facebook_link: "https://www.facebook.com/profile.php?id=61565869044955",
|
||||||
|
tenant_bot_link: "",
|
||||||
|
app_title: "FortuneBets",
|
||||||
|
theme_color: "#ffffff",
|
||||||
|
robots_sitemap: "https://fortunebets.net/sitemap.xml",
|
||||||
|
root_url: "https://fortunebets.net",
|
||||||
|
tile_color: "#00a300",
|
||||||
|
theme: "/tenant/fortunebets/theme.json",
|
||||||
|
logo: "/tenant/fortunebets/Logo.webp",
|
||||||
|
favicon: "/tenant/fortunebets/favicon.ico",
|
||||||
|
favicon96: "/tenant/fortunebets/favicon-96x96.png",
|
||||||
|
favicon_svg: "/tenant/fortunebets/favicon.svg",
|
||||||
|
apple_touch_icon: "/tenant/fortunebets/apple-touch-icon.png",
|
||||||
|
logo_small: "/tenant/fortunebets/logo-small.webp",
|
||||||
|
logo_white: "/tenant/fortunebets/logo-white.webp",
|
||||||
|
site_manifest: "/tenant/fortunebets/site.webmanifest",
|
||||||
|
slider_1: "/tenant/fortunebets/fortunebet-image-1.webp",
|
||||||
|
slider_2: "/tenant/fortunebets/fortunebet-image-2.webp",
|
||||||
|
slider_3: "/tenant/fortunebets/fortunebet-image-3.webp",
|
||||||
|
home_page_canonical: "https://fortunebets.net",
|
||||||
|
homepage_title:
|
||||||
|
"FortuneBets - Premier Ethiopia Online Casino and Sports Betting",
|
||||||
|
homepage_desc:
|
||||||
|
"Discover Ethiopia's premier betting destination. Premier League, Champions League, MMA, Dog and Horse Racing and Virtual Games Betting!",
|
||||||
|
homepage_keywords:
|
||||||
|
"Casino, Sports Betting, Ethiopia, MMA, Keno, Spin to Win, Fire Crash, Aviator, Football, GoldenRace, Premier League, Champions League, Chapa, Telebirr, CBEBirr, Betika, Betking, QwickBirr, Anbessabet, Vamos bet, Habeshabet, Hulusport, ZuraPlay",
|
||||||
|
homepage_openGraph: {
|
||||||
|
images: [
|
||||||
|
"https://fortunebets.net/Logo.webp",
|
||||||
|
"https://demo.fortunebets.net/Logo.webp",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
jsonD: {
|
||||||
|
"@context": "https://schema.org",
|
||||||
|
"@type": "Organization",
|
||||||
|
name: "Fortunebets",
|
||||||
|
image: "https://fortunebets.net/Logo.webp",
|
||||||
|
"@id": "",
|
||||||
|
url: "https://fortunebets.net",
|
||||||
|
telephone: "",
|
||||||
|
address: {
|
||||||
|
"@type": "PostalAddress",
|
||||||
|
streetAddress: "Lem Hotel, Megenagna",
|
||||||
|
addressLocality: "Addis Ababa",
|
||||||
|
postalCode: "",
|
||||||
|
addressCountry: "ET",
|
||||||
|
},
|
||||||
|
geo: {
|
||||||
|
"@type": "GeoCoordinates",
|
||||||
|
latitude: 9.018046093660232,
|
||||||
|
longitude: 38.79564644773323,
|
||||||
|
},
|
||||||
|
sameAs: ["https://www.facebook.com/profile.php?id=61565869044955"],
|
||||||
|
},
|
||||||
|
|
||||||
|
deposit_title: "Deposit - FortuneBets",
|
||||||
|
deposit_description:
|
||||||
|
"Deposit cash into your FortuneBets Account so that you can start playing games for cash",
|
||||||
|
deposit_keyword:
|
||||||
|
"withdraw, Birr, Chapa, CBEBirr, TeleBirr, Deposit, FortuneBets, Ethiopia, Sports Betting",
|
||||||
|
deposit_alt_canonical: "https://fortunebets.net/deposit",
|
||||||
|
games_title: "FortuneBetss - Ethiopia Online Casino and Sports Betting",
|
||||||
|
games_desc:
|
||||||
|
"FortuneBetss is Ethiopia's premier betting destination. Win cash prizes by playing Number-Games like Spin To Win, roulette, online slots and Keno, as well as adrenaline-pumping Crash-Games including Fire Crash, Bank Run, and Meteoroid. You can preview or play the game. Join now and win your fortune!",
|
||||||
|
games_keywords:
|
||||||
|
"FortuneBetss, Casino, Sports Betting, Ethiopia, Addis Ababa, Hawassa, Fire Crash, Bank Run, Meteoroid, Keno, MMA, Spin to Win , Aviator , Virtual Football,Football, GoldenRace, Champions League, QwickBirr, Anbessabet, Vamos bet, Vamosbet, Habeshabet, Hulusport, ZuraPlay",
|
||||||
|
games_openGraph: {
|
||||||
|
images: ["https://fortunebets.net/Logo.webp"],
|
||||||
|
},
|
||||||
|
games_alt_canonical: "https://fortunebets.net/games",
|
||||||
|
login_title: "Login - FortuneBets",
|
||||||
|
login_desc:
|
||||||
|
"Login to FortuneBets Account so that you can start playing games for cash",
|
||||||
|
login_keywords:
|
||||||
|
"Sign Up, Register, Reset Password, Login, FortuneBets, Ethiopia, Sports Betting",
|
||||||
|
login_alt_canonical: "https://fortunebets.net/login",
|
||||||
|
register_title: "Register - FortuneBets",
|
||||||
|
register_desc:
|
||||||
|
"Create a new FortuneBets Account so that you can start playing games for cash",
|
||||||
|
register_keywords:
|
||||||
|
"Sign Up, Register, Reset Password, Login, FortuneBets, Ethiopia, Sports Betting",
|
||||||
|
register_alt_canonical: "https://fortunebets.net/register",
|
||||||
|
reset_title: "Reset Password - FortuneBets",
|
||||||
|
reset_desc:
|
||||||
|
"Did you forget your FortuneBets Password? Send a code to your account to create a new password",
|
||||||
|
reset_keywords:
|
||||||
|
"Sign Up, Register, Reset Password, Login, FortuneBets, Ethiopia, Sports Betting",
|
||||||
|
reset_alt_canonical: "https://fortunebets.net/reset-password",
|
||||||
|
rules_title: "Rules - FortuneBets",
|
||||||
|
rules_desc:
|
||||||
|
"Terms and Conditions, Responsible Gambling, FortuneBets is committed to providing a safe and responsible platform where Players can use the Services",
|
||||||
|
rules_keywords:
|
||||||
|
"FortuneBets, Ethiopia, Sports Betting, Terms and Conditions, Responsible Gambling, Account Suspension,",
|
||||||
|
rules_alt_canonical: "https://fortunebets.net/rules",
|
||||||
|
virtual_sports_title: "Virtual Sports - FortuneBets",
|
||||||
|
virtual_sports_desc:
|
||||||
|
"Win Cash Prizes by betting on FortuneBets Virtual Sports! Football tournaments like Premier League, Bundesliga, La Liga, Ligue 1, Series A, Champions League, World Cup. Mixed Martial Arts Betting. Racing sports like Motorcycle, Horse, Dog, Speedway Racing.",
|
||||||
|
virtual_sports_keywords:
|
||||||
|
"Virtual Sports Betting, Football Betting, QwickBirr Premier League, Bundesliga, La Liga, Ligue 1, Serie A, Champions League, World Cup, MMA, Motoracing, Horse Racing, Dog Racing, Basketball, Speedway Racing, Betika",
|
||||||
|
virtual_sports_alt_canonical: "https://fortunebets.net/virtual",
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue
Block a user