- {`${widgetsRole?.role?.label || 'Users'}'s widgets`}
-
- )}
-
- {(isFetchingQuery || loading) && (
-
-
{' '}
- Loading widgets...
+
+
+
+
O Teu Saldo
+
- )}
-
- { rolesWidgets &&
- rolesWidgets.map((widget) => (
-
+
+ {loadingWallet ? '...' : `${Number(wallet?.balance || 0).toLocaleString('pt-PT', { minimumFractionDigits: 2 })}€`}
+
+ Créditos Disponíveis
+
+
+
- ))}
+
+
+
+
+
+
Jogos Populares
+
+
+
+ {['Roleta', 'Blackjack', 'Slots Premium', 'Póquer', 'Baccarat', 'Crash Game'].map((game) => (
+
+ ))}
+
+
- {!!rolesWidgets.length &&
}
-
-
-
-
- {hasPermission(currentUser, 'READ_USERS') &&
-
-
-
-
- Users
-
-
- {users}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_ROLES') &&
-
-
-
-
- Roles
-
-
- {roles}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_PERMISSIONS') &&
-
-
-
-
- Permissions
-
-
- {permissions}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_WALLETS') &&
-
-
-
-
- Wallets
-
-
- {wallets}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_PAYMENT_METHODS') &&
-
-
-
-
- Payment methods
-
-
- {payment_methods}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_TRANSACTIONS') &&
-
-
-
-
- Transactions
-
-
- {transactions}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_GAMES') &&
-
-
-
-
- Games
-
-
- {games}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_GAME_SESSIONS') &&
-
-
-
-
- Game sessions
-
-
- {game_sessions}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_GAME_ROUNDS') &&
-
-
-
-
- Game rounds
-
-
- {game_rounds}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_BONUSES') &&
-
-
-
-
- Bonuses
-
-
- {bonuses}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_BONUS_CLAIMS') &&
-
-
-
-
- Bonus claims
-
-
- {bonus_claims}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_ADMIN_AUDIT_LOGS') &&
-
-
-
-
- Admin audit logs
-
-
- {admin_audit_logs}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_SUPPORT_TICKETS') &&
-
-
-
-
- Support tickets
-
-
- {support_tickets}
-
-
-
-
-
-
-
- }
-
- {hasPermission(currentUser, 'READ_SITE_SETTINGS') &&
-
-
-
-
- Site settings
-
-
- {site_settings}
-
-
-
-
-
-
-
- }
-
-
-
+
+
+
+
+
+
+ Sem atividade recente para mostrar.
+
+
+
>
)
@@ -552,4 +136,4 @@ Dashboard.getLayout = function getLayout(page: ReactElement) {
return
{page}
}
-export default Dashboard
+export default Dashboard
\ No newline at end of file
diff --git a/frontend/src/pages/index.tsx b/frontend/src/pages/index.tsx
index 698486b..fb5c43c 100644
--- a/frontend/src/pages/index.tsx
+++ b/frontend/src/pages/index.tsx
@@ -1,160 +1,118 @@
-
-import React, { useEffect, useState } from 'react';
+import React from 'react';
import type { ReactElement } from 'react';
import Head from 'next/head';
import Link from 'next/link';
import BaseButton from '../components/BaseButton';
-import CardBox from '../components/CardBox';
import SectionFullScreen from '../components/SectionFullScreen';
import LayoutGuest from '../layouts/Guest';
-import BaseDivider from '../components/BaseDivider';
-import BaseButtons from '../components/BaseButtons';
import { getPageTitle } from '../config';
import { useAppSelector } from '../stores/hooks';
-import CardBoxComponentTitle from "../components/CardBoxComponentTitle";
-import { getPexelsImage, getPexelsVideo } from '../helpers/pexels';
-
export default function Starter() {
- const [illustrationImage, setIllustrationImage] = useState({
- src: undefined,
- photographer: undefined,
- photographer_url: undefined,
- })
- const [illustrationVideo, setIllustrationVideo] = useState({video_files: []})
- const [contentType, setContentType] = useState('video');
- const [contentPosition, setContentPosition] = useState('left');
+ const title = 'BCasino'
const textColor = useAppSelector((state) => state.style.linkColor);
- const title = 'BCasino'
-
- // Fetch Pexels image/video
- useEffect(() => {
- async function fetchData() {
- const image = await getPexelsImage();
- const video = await getPexelsVideo();
- setIllustrationImage(image);
- setIllustrationVideo(video);
- }
- fetchData();
- }, []);
-
- const imageBlock = (image) => (
-
- );
-
- const videoBlock = (video) => {
- if (video?.video_files?.length > 0) {
- return (
-
-
-
-
)
- }
- };
-
return (
-
+
-
{getPageTitle('Starter Page')}
+
{getPageTitle('Home')}
-
-
- {contentType === 'image' && contentPosition !== 'background'
- ? imageBlock(illustrationImage)
- : null}
- {contentType === 'video' && contentPosition !== 'background'
- ? videoBlock(illustrationVideo)
- : null}
-
-
-
-
-
-
-
-
+
-
-
-
-
+
+
+
+
+ A Tua Casa de Apostas Online
+
+
+ Experimenta a emoção do BCasino. Centenas de jogos, bónus exclusivos e depósitos instantâneos. Começa hoje mesmo!
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
Casino Ao Vivo
+
+
+
+ 2
+
+
Slots Exclusivas
+
+
+
+ 3
+
+
Apostas Desportivas
+
+
+
+ Bónus de Boas-Vindas até 1000€
+
+
+
+
-
-
© 2026 {title}. All rights reserved
-
- Privacy Policy
-
-
+
+
);
@@ -162,5 +120,4 @@ export default function Starter() {
Starter.getLayout = function getLayout(page: ReactElement) {
return
{page};
-};
-
+};
\ No newline at end of file
diff --git a/frontend/src/styles.ts b/frontend/src/styles.ts
index 8eecb3a..7ae7e5c 100644
--- a/frontend/src/styles.ts
+++ b/frontend/src/styles.ts
@@ -53,31 +53,31 @@ export const white: StyleObject = {
export const midnightBlueTheme: StyleObject = {
- aside: 'bg-midnightBlueTheme-800 text-midnightBlueTheme-text dark:text-white lg:rounded-lg',
- asideScrollbars: 'aside-scrollbars-blue',
- asideBrand: 'text-blue-500 bg-white',
+ aside: 'bg-slate-950 text-white dark:text-white',
+ asideScrollbars: 'aside-scrollbars-red',
+ asideBrand: 'text-red-600 bg-slate-950',
asideMenuItem:
- 'text-midnightBlueTheme-text hover:text-white dark:text-dark-500 dark:hover:text-white dark:hover:bg-dark-800 dark:text-white',
- asideMenuItemActive: 'font-bold text-white dark:text-white',
- activeLinkColor: 'bg-midnightBlueTheme-buttonColor rounded-lg',
- asideMenuDropdown: 'bg-blue-700/50',
- navBarItemLabel: 'text-primaryText',
- iconsColor: 'text-midnightBlueTheme-iconsColor dark:text-blue-500',
- navBarItemLabelHover: 'hover:text-stone-400',
- navBarItemLabelActiveColor: 'text-midnightBlueTheme-800',
- overlay: 'bg-midnightBlueTheme-mainBG',
- bgLayoutColor: 'bg-midnightBlueTheme-mainBG',
- cardsColor: 'bg-midnightBlueTheme-cardColor',
+ 'text-gray-400 hover:text-white dark:text-dark-500 dark:hover:text-white dark:hover:bg-dark-800 dark:text-white',
+ asideMenuItemActive: 'font-bold text-red-500 dark:text-white',
+ activeLinkColor: 'bg-red-600/10 rounded-lg',
+ asideMenuDropdown: 'bg-slate-900',
+ navBarItemLabel: 'text-white',
+ iconsColor: 'text-red-600 dark:text-red-500',
+ navBarItemLabelHover: 'hover:text-red-400',
+ navBarItemLabelActiveColor: 'text-red-600',
+ overlay: 'bg-slate-950',
+ bgLayoutColor: 'bg-slate-950',
+ cardsColor: 'bg-slate-900',
focusRingColor:
- 'focus:ring focus:ring-midnightBlueTheme-800 focus:border-midnightBlueTheme-800 focus:outline-none border border-gray-600 dark:focus:ring-blue-600 dark:focus:border-blue-600',
- corners: 'rounded-lg',
- cardsStyle: 'bg-midnightBlueTheme-outsideCardColor border border-midnightBlueTheme-outsideCardColor shadow-xl',
- linkColor: 'text-midnightBlueTheme-buttonColor',
- websiteHeder: 'border-b border-white border-opacity-10 shadow-md',
+ 'focus:ring focus:ring-red-600 focus:border-red-600 focus:outline-none border border-slate-800 dark:focus:ring-red-600 dark:focus:border-red-600',
+ corners: 'rounded-xl',
+ cardsStyle: 'bg-slate-900 border border-slate-800 shadow-2xl',
+ linkColor: 'text-red-600',
+ websiteHeder: 'border-b border-white border-opacity-10 shadow-lg',
borders: 'border-white border-opacity-10',
- shadow: 'shadow-md',
- websiteSectionStyle: ' bg-midnightBlueTheme-webSiteComponentBg text-white',
- textSecondary: 'text-gray-300',
+ shadow: 'shadow-2xl',
+ websiteSectionStyle: 'bg-slate-950 text-white',
+ textSecondary: 'text-slate-400',
};
@@ -132,4 +132,4 @@ export const basic: StyleObject = {
shadow: '',
websiteSectionStyle: '',
textSecondary: '',
-}
+}
\ No newline at end of file