Commit 9c312e33 by Arjun Jhukal

fixed the linting issue

parent 23741dbb
......@@ -3,7 +3,7 @@ name: getFirekirin Deployment Pipeline
on:
push:
branches:
- main
- fixes/linting
jobs:
build-and-deploy:
......
// import prettier from 'eslint-plugin-prettier';
import typescriptEslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import tseslint from '@typescript-eslint/eslint-plugin';
import tsParser from '@typescript-eslint/parser';
import reactHooks from 'eslint-plugin-react-hooks';
import globals from 'globals';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
import { FlatCompat } from '@eslint/eslintrc';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all
});
const eslintConfig = [
...compat.extends('next/core-web-vitals', 'next/typescript', 'prettier'),
/** @type {import("eslint").Linter.FlatConfig[]} */
export default [
// =========================
// Global ignores
// =========================
{
ignores: ['**/node_modules/*', '**/.next/*']
ignores: [
'**/node_modules/**',
'**/.next/**',
'dist/**',
'*.config.js',
'*.config.mjs',
'eslint.config.mjs',
'postcss.config.mjs',
'ecosystem.config.js',
],
},
// =========================
// Base JS rules (JS / MJS)
// =========================
{
plugins: {
// prettier,
'@typescript-eslint': typescriptEslint
files: ['**/*.{js,mjs}'],
languageOptions: {
ecmaVersion: 2020,
sourceType: 'module',
globals: globals.node,
},
rules: {
...js.configs.recommended.rules,
},
},
// =========================
// Next.js + TS + Prettier
// (spread FIRST, no extends)
// =========================
...compat.extends(
'next/core-web-vitals',
'next/typescript',
'prettier'
).map(config => ({
...config,
files: ['**/*.{ts,tsx}'],
})),
// =========================
// TypeScript rules
// =========================
{
files: ['**/*.{ts,tsx}'],
languageOptions: {
parser: tsParser,
ecmaVersion: 5,
ecmaVersion: 2020,
sourceType: 'module',
globals: globals.browser,
parserOptions: {
project: './tsconfig.json',
createDefaultProgram: true
}
},
},
settings: {
'import/resolver': {
node: {
moduleDirectory: ['node_modules', 'src/']
},
typescript: {
alwaysTryTypes: true
}
}
plugins: {
'@typescript-eslint': tseslint,
'react-hooks': reactHooks,
},
rules: {
'react/jsx-filename-extension': 'off',
'no-param-reassign': 'off',
'react/prop-types': 'off',
'react/require-default-props': 'off',
'react/no-array-index-key': 'off',
'react/react-in-jsx-scope': 'off',
'react/jsx-props-no-spreading': 'off',
'import/order': 'off',
'no-console': 'off',
'no-shadow': 'off',
'@typescript-eslint/naming-convention': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'import/no-cycle': 'off',
'prefer-destructuring': 'off',
'import/no-extraneous-dependencies': 'off',
'react/display-name': 'off',
'import/no-unresolved': ['off', { caseSensitive: false }],
'import/no-unresolved': [
'off',
{
caseSensitive: false
}
],
'no-restricted-imports': [
'error',
{
patterns: ['@mui/*/*/*', '!@mui/material/test-utils/*']
}
],
// Disable base rule
'no-unused-vars': 'off',
// TS unused vars (WORKING)
'@typescript-eslint/no-unused-vars': [
'error',
{
vars: 'all',
args: 'none'
}
args: 'after-used',
ignoreRestSiblings: true,
argsIgnorePattern: '^_',
varsIgnorePattern: '^React$|^_',
},
],
// 'prettier/prettier': [
// 'warn',
// {
// bracketSpacing: true,
// printWidth: 140,
// singleQuote: true,
// trailingComma: 'none',
// tabWidth: 2,
// useTabs: false,
// endOfLine: "lf"
// }
// ]
}
}
];
'@typescript-eslint/no-explicit-any': 'off',
export default eslintConfig;
// React
'react/react-in-jsx-scope': 'off',
'react/prop-types': 'off',
'react/no-unescaped-entities': 'off',
// Hooks
...reactHooks.configs.recommended.rules,
},
},
];
......@@ -51,6 +51,7 @@
"eslint": "^9",
"eslint-config-next": "15.5.3",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-react-refresh": "^0.4.26",
"tailwindcss": "^4",
"typescript": "^5"
}
......@@ -18541,6 +18542,16 @@
"eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
}
},
"node_modules/eslint-plugin-react-refresh": {
"version": "0.4.26",
"resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.26.tgz",
"integrity": "sha512-1RETEylht2O6FM/MvgnyvT+8K21wLqDNg4qD51Zj3guhjt433XbnnkVttHMyaVyAFD03QSV4LPS5iE3VQmO7XQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"eslint": ">=8.40"
}
},
"node_modules/eslint-plugin-react/node_modules/resolve": {
"version": "2.0.0-next.5",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
......@@ -52,6 +52,7 @@
"eslint": "^9",
"eslint-config-next": "15.5.3",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-react-refresh": "^0.4.26",
"tailwindcss": "^4",
"typescript": "^5"
}
......
import { SeonProvider } from '@/app/SeonProvider'
import LoginPage from '@/components/pages/auth/login'
import React from 'react'
export default function Login() {
return (
// <SeonProvider>
<LoginPage />
<LoginPage />
// </SeonProvider>
)
}
......@@ -18,10 +18,10 @@ function VerifyEmailContent() {
const id = searchParams.get("id");
const hash = searchParams.get("hash");
const [sendEmailVerificationAgain, { isLoading: sendingLink }] = useSendVerificationLinkAgainMutation();
const [verifyEmail, { isLoading }] = useVerifyEmailMutation();
const [verifyEmail] = useVerifyEmailMutation();
const dispatch = useAppDispatch();
const { deviceId, loading } = useSeon();
const { deviceId } = useSeon();
const handleLinkResend = async () => {
try {
......
......@@ -5,9 +5,9 @@ import { useGetAnalyticsQuery } from '@/services/dashboardApi';
import { AnalyticsProps } from '@/types/dashboard';
import { formatDateTime } from '@/utils/formatDateTime';
import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material';
import { ArrowLeft, More } from '@wandersonalwes/iconsax-react';
import { ArrowLeft } from '@wandersonalwes/iconsax-react';
import { ApexOptions } from 'apexcharts';
import React, { useRef, useState } from 'react';
import { useRef, useState } from 'react';
import Chart from "react-apexcharts";
type AnalyticsType = "today" | "this_week" | "this_month" | "this_year" | "all_time";
......
......@@ -21,29 +21,29 @@ const AdminDashboardTableWrapper = ({ title, cta, children }: { title?: string;
)
}
export default function AdminDashboardRoot() {
const [search, setSearch] = React.useState("");
const games = [
{
name: "Firekirin",
amount: 50,
percentage: 10
},
{
name: "Ultrapanda",
amount: "168k",
percentage: 10
},
{
name: "Panda Master",
amount: "268k",
percentage: 10
},
{
name: "Fish Master",
amount: "136k",
percentage: 10
},
]
const [search, _setSearch] = React.useState("");
// const games = [
// {
// name: "Firekirin",
// amount: 50,
// percentage: 10
// },
// {
// name: "Ultrapanda",
// amount: "168k",
// percentage: 10
// },
// {
// name: "Panda Master",
// amount: "268k",
// percentage: 10
// },
// {
// name: "Fish Master",
// amount: "136k",
// percentage: 10
// },
// ]
return (
<>
<h1 className="text-[24px] leading-[120%] mb-6">Dashboard</h1>
......
"use client";
import React from 'react';
import { useFormik } from 'formik';
import * as Yup from 'yup';
import { InputLabel, OutlinedInput, Button } from '@mui/material';
import PageHeader from '@/components/molecules/PageHeader';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { useAppDispatch } from '@/hooks/hook';
import { useCreatePaymentSetupMutation, useGetPaymentSetupQuery } from '@/services/paymentSetupApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Button, InputLabel, OutlinedInput } from '@mui/material';
import { useFormik } from 'formik';
import * as Yup from 'yup';
export default function PaymentSetup() {
const dispatch = useAppDispatch();
const { data } = useGetPaymentSetupQuery();
const [updatePaymentSetup, { isLoading }] = useCreatePaymentSetupMutation();
// const { data } = useGetPaymentSetupQuery();
// const [updatePaymentSetup, { isLoading }] = useCreatePaymentSetupMutation();
const formik = useFormik({
initialValues: {
idem_payment_uri: 'https://gateway.idem-club.info/idem/',
......@@ -30,7 +28,7 @@ export default function PaymentSetup() {
.matches(/^\d+$/, 'Merchant ID must be numeric'),
}),
onSubmit: (values) => {
// console.log('Submitting IDEM Payment Setup:', values);
console.log('Submitting IDEM Payment Setup:', values);
try {
......
"use client"
import TransactionTable from '@/components/pages/dashboard/adminDashboard/transaction/TransactionTable';
import { useAppSelector } from '@/hooks/hook'
import React from 'react'
import { useAppSelector } from '@/hooks/hook';
import React from 'react';
import AdminDashboardRoot from '../../(admin)/AdminDashboard';
export default function DashboardProvider({ children }: { children: React.ReactNode }) {
......
// components/Loading.tsx
"use client";
import React from "react";
import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() {
......
import BuyCoinSinlgeGame from '@/components/pages/dashboard/userDashboard/buyCoins/buyCoinSinlgeGame'
import React from 'react'
import BuyCoinSinlgeGame from '@/components/pages/dashboard/userDashboard/buyCoins/buyCoinSinlgeGame';
export default async function SingleGameCoinPacks(props: { params: Promise<{ slug: string }> }) {
const { slug } = await props.params;
......
// components/Loading.tsx
"use client";
import React from "react";
import LotifyLoading from "@/components/atom/LotifyLoading";
import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() {
......
......@@ -21,7 +21,7 @@ export default async function GeneralPage(props: { params: Promise<{ slug: strin
try {
pageData = await getPageDetail(slug);
} catch (err) {
// console.log("❌ Failed to fetch games:", err);
console.log("❌ Failed to fetch games:", err);
return notFound();
}
......
// components/Loading.tsx
import GlobalLoading from '@/components/organism/GlobalLoading';
import React from 'react';
export default function Loading() {
return (
......
// components/Loading.tsx
"use client";
import React from "react";
import LotifyLoading from "@/components/atom/LotifyLoading";
import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() {
......
import GlassWrapper from "@/components/molecules/GlassWrapper";
import { getSupportEmail } from "@/serverApi/game";
import React from "react";
export default async function Support() {
let supportEmails = {
......
import PageHeader from '@/components/molecules/PageHeader'
import VerifyKYCPage from '@/components/pages/dashboard/userDashboard/verifyKyc'
import React from 'react'
export default function VerfiyKYC() {
return (
......
// components/Loading.tsx
"use client";
import React from "react";
import LotifyLoading from "@/components/atom/LotifyLoading";
import GlobalLoading from "@/components/organism/GlobalLoading";
export default function Loading() {
......
import WithdrawlPage from '@/components/pages/dashboard/userDashboard/withdrawl'
import WithdrawlPage from '@/components/pages/dashboard/userDashboard/withdrawl';
import { getAllGames, getUserGameBalance } from '@/serverApi/game';
import React from 'react'
export default async function Withdrawl() {
const games = await getAllGames();
......
import TabController from '@/components/molecules/TabController';
import EditIcon from '@/icons/EditIcon';
import { Coin, User } from '@wandersonalwes/iconsax-react';
import React from 'react'
export default function AccountLayout({ children }: { children: React.ReactNode; }) {
return (
<section className="account__root">
......
"use client";
import React from "react";
import AccountTab from "./AccountTab";
import TabController from "@/components/molecules/TabController";
import { Tab } from "@mui/material";
import WithdrawnHistoryPage from "@/components/pages/dashboard/userDashboard/withdrawlHistory";
import Filter from "@/components/organism/Filter";
import DepositHistoryPage from "@/components/pages/dashboard/userDashboard/depositHistory";
import { useSearchParams } from "next/navigation";
import WithdrawnHistoryPage from "@/components/pages/dashboard/userDashboard/withdrawlHistory";
import { Coin, Coin1, User } from "@wandersonalwes/iconsax-react";
import SelectField from "@/components/atom/SelectField";
import Filter from "@/components/organism/Filter";
import { useSearchParams } from "next/navigation";
import React from "react";
import AccountTab from "./AccountTab";
type AccountTabProps = "account" | "deposit" | "withdraw"
......
import DashboardLayout from '@/components/layouts/DashboardLayout'
import Private from '@/routes/Private'
import ServerPrivate from '@/routes/ServerPrivate'
import React from 'react'
......
import React from 'react'
import Link from "next/link";
export default function NotFound() {
return (
......@@ -10,7 +10,7 @@ export default function NotFound() {
<p>Oops! The page you're looking for doesn’t exist or has been moved.</p>
<p>🔍 Try checking the URL or head back to the
<a href="/" className="text-secondary hover:underline ml-1">homepage</a>.
<Link href="/" className="text-secondary hover:underline ml-1">homepage</Link>.
</p>
<p>
......
import { styled, Theme } from '@mui/material/styles';
import MuiAvatar, { AvatarProps as MuiAvatarProps } from '@mui/material/Avatar';
import React from 'react';
import { styled, Theme } from '@mui/material/styles';
interface Props extends MuiAvatarProps {
color?: 'primary' | 'secondary' | string;
......@@ -10,7 +9,7 @@ interface Props extends MuiAvatarProps {
const AvatarStyle = styled(MuiAvatar, {
shouldForwardProp: (prop) => !['color', 'type', 'size'].includes(prop as string),
})<Props>(({ theme, type }: { theme: Theme } & Props) => ({
})<Props>(({ theme, type }: { theme: Theme } & Props) => ({
width: 40,
height: 40,
borderRadius: 8,
......
......@@ -49,8 +49,8 @@ export default function InputFile({
onChange(updatedFiles.length > 0 ? updatedFiles : null);
};
const fileChosen =
(Array.isArray(value) && value.length > 0) || value || serverFile;
// const fileChosen =
// (Array.isArray(value) && value.length > 0) || value || serverFile;
return (
<div className="input__field">
......
"use client";
import React from 'react'
import { DotLottieReact } from '@lottiefiles/dotlottie-react';
export default function LotifyLoading() {
......
"use client";
import { useThemeContext } from "@/context/ThemeContext";
import { InputLabel } from "@mui/material";
import React from "react";
......@@ -35,7 +34,7 @@ export default function SelectField({
touched,
placeholder
}: SelectFieldProps) {
const theme = useThemeContext();
// const theme = useThemeContext();
return (
<div className="input__field">
<InputLabel className="block text-sm font-semibold mb-2">
......
import { ArrowUp, ArrowDown } from '@wandersonalwes/iconsax-react';
import { ArrowDown, ArrowUp } from '@wandersonalwes/iconsax-react';
export default function SortableHeader({ column, label }: { column: any; label: string }) {
const sortState = column.getIsSorted(); // asc | desc | false
......
import { Switch } from '@mui/material'
import React from 'react'
import { Switch } from '@mui/material';
export default function CustomSwitch({ isSuspended, onClick }: { isSuspended?: boolean; onClick?: () => void }) {
return (
......
"use client";
import { Box } from '@mui/material'
import React from 'react'
import Sidebar from '../organism/Sidebar'
import Header from '../organism/Header'
import { Box } from '@mui/material';
import { styled } from '@mui/material/styles';
import { usePathname } from 'next/navigation';
import Breadcrumb from '../molecules/Breadcrumb';
import React from 'react';
import Header from '../organism/Header';
import Sidebar from '../organism/Sidebar';
export default function DashboardLayout({ children }: { children: React.ReactNode }) {
const [open, setOpen] = React.useState(true);
......@@ -26,9 +25,9 @@ export default function DashboardLayout({ children }: { children: React.ReactNod
const handleMobileMenuToggle = () => {
setOpenMobile((prev) => !prev);
}
const handleDrawerClose = () => {
setOpen(false);
};
// const handleDrawerClose = () => {
// setOpen(false);
// };
const DrawerHeader = styled('div')(({ theme }) => ({
display: 'flex',
alignItems: 'center',
......
import MoreIcon from '@/app/customIcons/MoreIcon';
import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material'
import { More } from '@wandersonalwes/iconsax-react'
import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material';
import Link from 'next/link';
import React, { useRef, useState } from 'react'
import { useRef, useState } from 'react';
export default function ActionGroup({
onView, onEdit, onDelete
......
import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material'
import { More } from '@wandersonalwes/iconsax-react'
import { Box, Button, ClickAwayListener, Dialog, DialogActions, DialogContent, DialogTitle, Fade, IconButton, List, ListItem, Paper, Popper } from '@mui/material';
import { More } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import React, { useRef, useState } from 'react'
import { useRef, useState } from 'react';
export default function AnalyticsAction({
onView, onEdit, onDelete
......
'use client';
import React from 'react';
import { Stack } from '@mui/material';
import { ArrowRight2 } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { Box, Typography, Stack } from '@mui/material';
import { ArrowRight2 } from '@wandersonalwes/iconsax-react';
import React from 'react';
export default function Breadcrumb() {
const pathname = usePathname();
......
"use client";
import React, { useState, useEffect, useRef } from "react";
import { motion } from "framer-motion";
import { useEffect, useRef, useState } from "react";
interface ScreenShotSliderProps {
screenshots: string[];
......
"use client";
import React, { useRef, useState } from "react";
import {
Box,
Button,
Popper,
Paper,
ClickAwayListener,
Fade,
List,
ListItem,
Fade,
Typography,
ListItemButton,
Paper,
Popper,
Typography,
} from "@mui/material";
import { ArrowDown2, Menu } from "@wandersonalwes/iconsax-react";
import { ArrowDown2 } from "@wandersonalwes/iconsax-react";
import React, { useRef, useState } from "react";
type TabLink = { label: string; value: string, icon?: React.ReactNode };
......
import { Button, Dialog, DialogContent, IconButton, InputAdornment, OutlinedInput, useMediaQuery } from "@mui/material";
import SelectField from "../atom/SelectField";
import { ArrowDown, DocumentDownload, SearchNormal } from "@wandersonalwes/iconsax-react";
import React from "react";
import Filter from "../organism/Filter";
import dayjs, { Dayjs } from "dayjs";
import React from "react";
import SelectField from "../atom/SelectField";
import DateRangePicker from "./DateRangePicker";
......
......@@ -17,7 +17,6 @@ export interface TransitionsProps extends React.HTMLAttributes<HTMLDivElement> {
export const Transitions = React.forwardRef<HTMLDivElement, TransitionsProps>(({
children,
type = 'grow',
position = 'top',
in: inProp = false,
...other
......
// "use client";
import { Box, FormControl, IconButton, InputAdornment, OutlinedInput } from "@mui/material";
import { SearchNormal, SearchNormal1 } from "@wandersonalwes/iconsax-react";
import React from 'react'
import { Box, FormControl, InputAdornment, OutlinedInput } from "@mui/material";
import { SearchNormal1 } from "@wandersonalwes/iconsax-react";
export default function AdminSearchBar() {
......
......@@ -14,8 +14,8 @@ export default function AdminHeader() {
// React.useEffect(() => {
// setMounted(true);
// }, []);
const [pageIndex, setPageIndex] = React.useState(1);
const [pageSize, setPageSize] = React.useState(10);
const [pageIndex, _setPageIndex] = React.useState(1);
const [pageSize, _setPageSize] = React.useState(10);
const { data } = useGetAllNotificationQuery({ pageIndex, pageSize });
return (
<Box className='flex items-center gap-4 justify-end w-full'>
......
import { PATH } from '@/routes/PATH';
import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, ListItemText, Paper, Popper, Typography } from '@mui/material'
import { Add } from '@wandersonalwes/iconsax-react'
import { Box, ClickAwayListener, Fade, IconButton, List, ListItem, ListItemText, Paper, Popper } from '@mui/material';
import { Add } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import React from 'react'
import React from 'react';
export default function CreatNewRecord() {
const [open, setOpen] = React.useState(false);
......
"use client";
import React, { useRef, useState } from 'react';
import { useAppDispatch } from '@/hooks/hook';
import { useReadAllNotificationMutation, useReadNotificationMutation } from '@/services/notificationApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Pagination } from '@/types/game';
import { NotificationProps } from '@/types/notification';
import { formatDateTime } from '@/utils/formatDateTime';
import {
Badge,
Box,
IconButton,
Popper,
Paper,
ClickAwayListener,
Typography,
IconButton,
List,
ListItem,
Paper,
Popper,
Typography,
} from '@mui/material';
import Fade from '@mui/material/Fade'; // ✅ Import Fade
import { Notification } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import { NotificationProps } from '@/types/notification';
import { Pagination } from '@/types/game';
import { useReadAllNotificationMutation, useReadNotificationMutation } from '@/services/notificationApi';
import { useAppDispatch } from '@/hooks/hook';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { formatDateTime } from '@/utils/formatDateTime';
import { useRef, useState } from 'react';
export default function NotificationPage({
......@@ -43,12 +43,12 @@ export default function NotificationPage({
const id = open ? 'popper' : undefined;
const dispatch = useAppDispatch();
const [readNotification, { isLoading }] = useReadNotificationMutation();
const [readAllNotification, { isLoading: readingAll }] = useReadAllNotificationMutation();
const [readNotification,] = useReadNotificationMutation();
const [readAllNotification,] = useReadAllNotificationMutation();
const handleNotificationClick = async (id?: string) => {
if (id) {
try {
const response = await readNotification({ id }).unwrap();
await readNotification({ id }).unwrap();
// dispatch(
// showToast({
// message: "Notification read successfully",
......@@ -67,7 +67,7 @@ export default function NotificationPage({
}
else {
try {
const response = await readAllNotification().unwrap();
await readAllNotification().unwrap();
setOpen(false);
}
catch (e: any) {
......@@ -130,7 +130,7 @@ export default function NotificationPage({
<List className='max-h-[320px] overflow-auto px-1'>
{
notifications.map((notification, index) => {
const { date, time } = formatDateTime(notification.created_at);
const { date } = formatDateTime(notification.created_at);
return (
<ListItem className={`border-b-solid border-b-gray-100 border-b-[1px] rounded-sm !p-2 cursor-pointer mb-2 ${notification.has_read ? "" : "bg-gray-100"} ${index > 0 ? " " : ""}`} key={notification.id} onClick={() => handleNotificationClick(notification.id)}>
<p className='text-[12px] lg:text-[12px] leading-[120%] text-title line-clamp-2'>{notification.message}</p>
......
import Avatar from '@/components/atom/Avatar';
import { Transitions } from '@/components/molecules/Transition';
import { useAppDispatch, useAppSelector } from '@/hooks/hook';
import { PATH } from '@/routes/PATH';
import { clearTokens } from '@/slice/authSlice';
import { Box, Button, ButtonBase, ClickAwayListener, Fade, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Paper, Popper, Stack, Typography } from '@mui/material'
import { Box, ClickAwayListener, Fade, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Paper, Popper } from '@mui/material';
import { ArrowDown2, Coin, Logout, MoneySend, Profile, Wallet2 } from "@wandersonalwes/iconsax-react";
import Link from 'next/link';
import { usePathname, useRouter, useSearchParams } from 'next/navigation';
import React, { useRef, useState } from 'react'
import React, { useRef, useState } from 'react';
const avataur1 = '/assets/images/avatar-6.png';
import { ArrowDown2, ArrowUp2, Coin, Logout, MoneySend, Profile, Wallet2 } from "@wandersonalwes/iconsax-react";
export default function ProfileBlock() {
......
import { PATH } from '@/routes/PATH'
import { CheckAuth } from '@/utils/checkAuth'
import { Box } from '@mui/material'
import React from 'react'
import Link from 'next/link'
import Profile from '../Profile'
import AdminSearchBar from '../AdminHeader/AdminSearchBar'
import CoinCard from '@/components/molecules/CoinCard'
import GoldCoinIcon from '@/icons/GoldCoinIcon'
import SilverCoinIcon from '@/icons/SilverCoinIcon'
import UserCoinCard from './UserCoinCard'
import Private from '@/routes/Private'
import { CheckAuth } from '@/utils/checkAuth'
import Link from 'next/link'
import { PATH } from '@/routes/PATH'
export default function UserHeader() {
const isAuth = CheckAuth();
......
"use client";
import { DRAWER_WIDTH } from '@/config';
import Toolbar from '@mui/material/Toolbar';
import IconButton from '@mui/material/IconButton';
import { useAppSelector } from '@/hooks/hook';
import { useMediaQuery } from '@mui/material';
import MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar';
import IconButton from '@mui/material/IconButton';
import { styled } from '@mui/material/styles';
import React from 'react'
import Toolbar from '@mui/material/Toolbar';
import { HambergerMenu } from '@wandersonalwes/iconsax-react';
import AdminHeader from './AdminHeader';
import UserHeader from './UserHeader';
import { OutlinedInput, useMediaQuery } from '@mui/material';
import { useAppSelector } from '@/hooks/hook';
interface AppBarProps extends MuiAppBarProps {
......
"use client";
import Image from "next/image";
import LightGallery from "lightgallery/react";
import lgZoom from "lightgallery/plugins/zoom";
import lgThumbnail from "lightgallery/plugins/thumbnail";
import lgZoom from "lightgallery/plugins/zoom";
import LightGallery from "lightgallery/react";
import Image from "next/image";
import "lightgallery/css/lightgallery.css";
import "lightgallery/css/lg-zoom.css";
import "lightgallery/css/lg-thumbnail.css";
import { FileResponse } from "@/types/game";
import "lightgallery/css/lg-zoom.css";
import "lightgallery/css/lightgallery.css";
interface CustomLightGalleryProps {
images: string[];
......
"use client";
import { PATH } from "@/routes/PATH";
import Link from "next/link";
import {
List,
ListItem,
......@@ -20,6 +19,7 @@ import {
StatusUp,
UserSearch,
} from "@wandersonalwes/iconsax-react";
import Link from "next/link";
import { usePathname } from "next/navigation";
import React from "react";
......
import React from "react";
import { List, ListItem, ListItemButton, ListItemIcon, ListItemText } from "@mui/material";
import { ReceiptEdit } from "@wandersonalwes/iconsax-react";
import { PATH } from "@/routes/PATH";
import { getAllMenus } from "@/serverApi/menu";
import SupportIcon from "@/app/customIcons/SupportIcon";
import { useGetAllUserMenuQuery } from "@/services/menuApi";
import { List, ListItem, ListItemIcon, ListItemText } from "@mui/material";
import { ReceiptEdit } from "@wandersonalwes/iconsax-react";
import Link from "next/link";
import { usePathname } from "next/navigation";
import SupportIcon from "@/app/customIcons/SupportIcon";
import React from "react";
export default function PrimaryMenu({ open }: { open: boolean }) {
const { data, isLoading } = useGetAllUserMenuQuery();
......
"use client";
import React from "react";
import BonusIcon from "@/app/customIcons/BonusIcon";
import FireIcon from "@/app/customIcons/FireIcon";
import HomeIcon from "@/app/customIcons/HomeIcon";
import { PATH } from "@/routes/PATH";
import Private from "@/routes/Private";
import {
Box,
List,
......@@ -9,23 +13,13 @@ import {
ListItemText,
} from "@mui/material";
import {
Home,
StatusUp,
MessageQuestion,
PasswordCheck,
Wallet2,
Coin,
CardPos,
Coin
} from "@wandersonalwes/iconsax-react";
import Link from "next/link";
import { usePathname } from "next/navigation";
import Private from "@/routes/Private";
import { PATH } from "@/routes/PATH";
import React from "react";
import PrimaryMenu from "./PrimaryMenu";
import SupportIcon from "@/app/customIcons/SupportIcon";
import HomeIcon from "@/app/customIcons/HomeIcon";
import FireIcon from "@/app/customIcons/FireIcon";
import BonusIcon from "@/app/customIcons/BonusIcon";
// ✅ Define menu array for static items
const staticMenus = [
......
"use client";
import * as React from 'react';
import { styled, Theme, CSSObject } from '@mui/material/styles';
import { DRAWER_WIDTH } from '@/config';
import { useAppSelector } from '@/hooks/hook';
import { useGetSeoDataQuery } from '@/services/menuApi';
import { IconButton } from '@mui/material';
import Box from '@mui/material/Box';
import MuiDrawer from '@mui/material/Drawer';
import { DRAWER_WIDTH } from '@/config';
import { CSSObject, styled, Theme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery';
import { Add } from '@wandersonalwes/iconsax-react';
import Image from 'next/image';
import Link from 'next/link';
import * as React from 'react';
import AdminMenu from './AdminSidebar';
import UserMenu from './UserSidebar';
import { useAppSelector } from '@/hooks/hook';
import useMediaQuery from '@mui/material/useMediaQuery';
import { useThemeContext } from '@/context/ThemeContext';
import { IconButton } from '@mui/material';
import { Add, CloseCircle } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import { usePathname } from 'next/navigation';
import { useGetSeoDataQuery } from '@/services/menuApi';
const drawerWidth = DRAWER_WIDTH;
const openedMixin = (theme: Theme): CSSObject => ({
......@@ -82,7 +80,7 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open'
}),
);
export default function Sidebar({ open, handleDrawerOpen, handleMobileMenuToggle, mobileMenuOpen }: {
export default function Sidebar({ open, handleMobileMenuToggle, mobileMenuOpen }: {
open: boolean,
handleDrawerOpen: () => void;
handleMobileMenuToggle: () => void;
......
......@@ -12,7 +12,7 @@ import * as Yup from "yup";
export default function UpdatePassword() {
const dispatch = useDispatch();
const { open, provider, hasChangedPassword } = useSelector((state: RootState) => state?.updatePasswordSlice);
const { open, provider } = useSelector((state: RootState) => state?.updatePasswordSlice);
const [updateNewPassword, { isLoading }] = useUpdateUserGamePasswordMutation();
console.log({
......
import { ImageProps } from '@/types/config'
import { List, ListItem } from '@mui/material'
import Box from '@mui/material/Box'
import Image from 'next/image'
import { ImageProps } from '@/types/config';
import Box from '@mui/material/Box';
import Image from 'next/image';
interface Props {
image?: ImageProps
......@@ -11,7 +10,7 @@ interface Props {
export default function AuthMessageBlock(props: Props) {
const { image, title, features } = props;
const { title, features } = props;
return (
<Box className="auth-image-wrapper relative hidden lg:block w-[50%] min-h-screen pl-9 pr-15 pb-15 rounded-[8px] overflow-hidden" >
<Image src={"/assets/images/auth-image.png"} alt="Auth Image" fill className="object-cover max-w-[100%] h-auto" />
......
'use client';
import Cookies from 'js-cookie';
import React from 'react'
import AuthMessageBlock from '../authMessageBlock'
import { Box, InputLabel, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik';
import Link from 'next/link';
import * as Yup from 'yup';
import { PATH } from '@/routes/PATH';
import { useRouter } from 'next/navigation';
import { useSeon } from '@/app/SeonProvider';
import PasswordField from '@/components/molecules/PasswordField';
import { useAppDispatch } from '@/hooks/hook';
import { PATH } from '@/routes/PATH';
import { useLoginMutation } from '@/services/authApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { clearTokens, setTokens } from '@/slice/authSlice';
import PasswordField from '@/components/molecules/PasswordField';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Box, InputLabel, OutlinedInput } from '@mui/material';
import { ArrowLeft } from '@wandersonalwes/iconsax-react';
import { useSeon } from '@/app/SeonProvider';
import { useFormik } from 'formik';
import Cookies from 'js-cookie';
import Link from 'next/link';
import { useRouter } from 'next/navigation';
import * as Yup from 'yup';
import AuthMessageBlock from '../authMessageBlock';
const validationSchema = Yup.object().shape({
emailAddress: Yup.string()
......@@ -39,7 +38,7 @@ export default function LoginPage() {
const router = useRouter();
const dispatch = useAppDispatch();
const [loginUser, { isLoading }] = useLoginMutation();
const { deviceId, loading } = useSeon();
const { deviceId } = useSeon();
const { handleSubmit, handleBlur, handleChange, errors, dirty, values, touched } = useFormik(
{
initialValues,
......
......@@ -118,7 +118,7 @@ export default function RegisterPage() {
pob: '',
agree: true
}
const { deviceId, loading } = useSeon();
const { deviceId } = useSeon();
const { handleSubmit, handleBlur, handleChange, errors, dirty, values, touched, setFieldValue, setFieldTouched } = useFormik(
{
initialValues,
......
......@@ -4,13 +4,11 @@ import { PATH } from '@/routes/PATH'
import { useResetPasswordMutation } from '@/services/authApi'
import { clearTokens } from '@/slice/authSlice'
import { showToast, ToastVariant } from '@/slice/toastSlice'
import { Box, InputLabel, OutlinedInput } from '@mui/material'
import { ArrowLeft } from '@wandersonalwes/iconsax-react'
import { InputLabel, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik'
import Link from 'next/link'
import { useRouter } from 'next/navigation'
import React from 'react'
import * as Yup from 'yup';
import * as Yup from 'yup'
const validationSchema = Yup.object().shape({
emailAddress: Yup.string()
......@@ -130,5 +128,5 @@ export default function ResetPasswordForm({ email }: { email?: string }) {
{!email ? <Link href={PATH.AUTH.LOGIN.ROOT} className='ss-btn bg-secondary-grad'>Back to Login</Link> : ""}
</div>
</form>
)
)
}
import React from 'react'
import ActivityAnalyticCard from './ActivityAnalyticCard'
import Activities from './Activities'
import PageHeader from '@/components/molecules/PageHeader'
import Activities from './Activities'
export default function ActivityLogPage() {
return (
......
......@@ -8,7 +8,7 @@ import { useAddGameMutation, useGetGameByIdQuery, useUpdateGameByIdMutation } fr
import { useGetAllProviderQuery } from "@/services/providerApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { gameInitialValues, GameProps } from "@/types/game";
import { Button, InputLabel, Input, OutlinedInput } from "@mui/material";
import { Button, InputLabel, OutlinedInput } from "@mui/material";
import { useFormik } from "formik";
import { useRouter } from "next/navigation";
import React from "react";
......@@ -32,7 +32,7 @@ export default function AddGameForm({ id }: AddGameFormProps) {
const router = useRouter();
const { data: gameProviders, isLoading } = useGetAllProviderQuery();
const [addGame, { isLoading: addingGame }] = useAddGameMutation();
const { data, isLoading: loadingGameData } = useGetGameByIdQuery({ id: Number(id) }, { skip: !id })
const { data } = useGetGameByIdQuery({ id: Number(id) }, { skip: !id })
const [updateGame, { isLoading: editing }] = useUpdateGameByIdMutation();
const [serverFiles, setServerFiles] = React.useState<{
......
......@@ -14,7 +14,7 @@ export default function GameDetailPage() {
const params = useParams();
const id = params.slug;
const [search, setSearch] = React.useState("");
const { data, isLoading } = useGetGameByIdQuery({ id: Number(id) })
const { data } = useGetGameByIdQuery({ id: Number(id) })
const screenshots = data?.data?.screenshots || [];
......
......@@ -2,12 +2,11 @@
import ActionGroup from '@/components/molecules/Action';
import { useAppDispatch } from '@/hooks/hook';
import { useDeleteGameByIdMutation, useGetAllGamesQuery } from '@/services/gameApi'
import { useDeleteGameByIdMutation, useGetAllGamesQuery } from '@/services/gameApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { GameItem } from '@/types/game';
import Image from 'next/image';
import Link from 'next/link';
import React from 'react'
function GameSkeleton() {
return (
......@@ -41,7 +40,7 @@ function GameSkeleton() {
}
export default function AdminGameList() {
const { data, isLoading } = useGetAllGamesQuery();
const [deleteGame, { isLoading: deleting }] = useDeleteGameByIdMutation();
const [deleteGame] = useDeleteGameByIdMutation();
const dispatch = useAppDispatch();
return (
<div className="admin__games grid md:grid-cols-2 lg:grid-cols-3 2xl:grid-cols-4 gap-6">
......@@ -73,12 +72,12 @@ export default function AdminGameList() {
)
)
}
catch (e) {
catch (e: any) {
dispatch(
showToast(
{
variant: ToastVariant.ERROR,
message: "Unable to Delete Game"
message: e?.data?.message || "Unable to Delete Game"
}
)
)
......
import PageHeader from '@/components/molecules/PageHeader'
import React from 'react'
import AddNotificationForm from './AddNotificationForm'
export default function NotificationFormRoot({ id }: { id?: string }) {
export default function NotificationFormRoot() {
return (
<>
<PageHeader
......
"use client";
import React, { useEffect, useState } from "react";
import { useFormik } from "formik";
import * as Yup from "yup";
import ReactQuillEditor from "@/components/molecules/ReactQuill";
import { useAppDispatch } from "@/hooks/hook";
import { useCreatePageMutation, useGetSinlgePageByIdQuery, useUpdatePageByIdMutation } from "@/services/pageApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { pageInitialData } from "@/types/page"; // should match your type
import {
Button,
InputLabel,
OutlinedInput,
FormHelperText,
IconButton,
InputLabel,
OutlinedInput,
} from "@mui/material";
import ReactQuillEditor from "@/components/molecules/ReactQuill";
import { pageInitialData } from "@/types/page"; // should match your type
import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useCreatePageMutation, useGetSinlgePageByIdQuery, useUpdatePageByIdMutation } from "@/services/pageApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { useAppDispatch } from "@/hooks/hook";
import { useFormik } from "formik";
import { useRouter } from "next/navigation";
import React, { useEffect, useState } from "react";
import * as Yup from "yup";
export default function AddPageForm({ id }: { id?: string }) {
const [createPage, { isLoading: creatingPage }
const [createPage,
] = useCreatePageMutation();
const { data, isLoading } = useGetSinlgePageByIdQuery({ id }, {
const { data } = useGetSinlgePageByIdQuery({ id }, {
skip: !id
})
const [updatedPage, { isLoading: updating }] = useUpdatePageByIdMutation();
const [updatedPage] = useUpdatePageByIdMutation();
const dispatch = useAppDispatch();
const router = useRouter();
......
......@@ -10,7 +10,7 @@ import { PageRequestProps } from '@/types/page';
import { formatDateTime } from '@/utils/formatDateTime';
import { Checkbox, Pagination } from '@mui/material';
import { ColumnDef, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';
import React, { useMemo, useState } from 'react'
import { useMemo, useState } from 'react';
export default function GeneralPageLiting() {
const dispatch = useAppDispatch();
......@@ -23,7 +23,7 @@ export default function GeneralPageLiting() {
pageSize: pageSize,
search: search || ""
});
const [deletePage, { isLoading: deleting }] = useDeletePageByIdMutation();
const [deletePage] = useDeletePageByIdMutation();
const filteredData = useMemo(() => data?.data?.data || [], [data]);
......@@ -73,7 +73,7 @@ export default function GeneralPageLiting() {
accessorKey: 'registeredDate',
header: 'Registered Date',
cell: ({ row }) => {
const { date, time } = formatDateTime(row.original.date)
const { date } = formatDateTime(row.original.date)
return (
<span className="text-[12px] font-[500] max-w-[380px]">{date}</span>
)
......
......@@ -8,8 +8,8 @@ import { ColumnDef, getCoreRowModel, useReactTable } from '@tanstack/react-table
import { useMemo, useState } from 'react';
export default function LatestRegisteredPlayer() {
const [pageIndex, setPageIndex] = useState(1);
const [pageSize, setPageSize] = useState(6);
const [pageIndex, _setPageIndex] = useState(1);
const [pageSize, _setPageSize] = useState(6);
const { data, isLoading: loadingPlayer } = useGetAllPlayerQuery({
pageIndex,
pageSize,
......
"use client";
import InputFile from '@/components/atom/InputFile'
import PasswordField from '@/components/molecules/PasswordField'
import { PATH } from '@/routes/PATH'
import { PlayerProps, SinlgePlayerResponseProps } from '@/types/player'
import { Button, InputLabel, OutlinedInput } from '@mui/material'
import { FormikProps } from 'formik'
import { useRouter } from 'next/navigation'
import React from 'react'
import InputFile from '@/components/atom/InputFile';
import PasswordField from '@/components/molecules/PasswordField';
import { PlayerProps, SinlgePlayerResponseProps } from '@/types/player';
import { Button, InputLabel, OutlinedInput } from '@mui/material';
import { FormikProps } from 'formik';
export default function AddPlayerForm({ formik, id, data, loading, buttonLabel }: { formik: FormikProps<PlayerProps>, id?: string, data?: SinlgePlayerResponseProps, loading?: boolean, buttonLabel?: string }) {
const router = useRouter();
return (
<form onSubmit={formik.handleSubmit}>
......
"use client"
import InputFile from '@/components/atom/InputFile'
import PasswordField from '@/components/molecules/PasswordField'
import { useAppDispatch } from '@/hooks/hook'
import { PATH } from '@/routes/PATH'
import { useCreatePlayerMutation, useGetPlayerByIdQuery, useUpdatePlayerByIdMutation } from '@/services/playerApi'
import { showToast, ToastVariant } from '@/slice/toastSlice'
import { initialPlayerValues } from '@/types/player'
import { Button, Input, InputLabel, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik'
import { useRouter } from 'next/navigation'
import React from 'react'
import * as Yup from "yup";
import * as Yup from "yup"
import AddPlayerForm from './AddPlayerForm'
export const PlayerValidationSchema = (isEdit: boolean) => Yup.object().shape({
......@@ -44,7 +39,7 @@ export default function AddPlayerPage({ id }: { id?: string }) {
const [createPlayer, { isLoading }] = useCreatePlayerMutation();
const [updatePlayer, { isLoading: updating }] = useUpdatePlayerByIdMutation();
const { data, isLoading: loadingPlayer } = useGetPlayerByIdQuery(
const { data, } = useGetPlayerByIdQuery(
id ? { id } : ({} as any),
{ skip: !id }
);
......
......@@ -3,23 +3,21 @@
import CustomSwitch from '@/components/atom/Switch';
import ActionGroup from '@/components/molecules/Action';
import TabController from '@/components/molecules/TabController';
import TableHeader from '@/components/molecules/TableHeader'
import TableHeader from '@/components/molecules/TableHeader';
import CustomTable from '@/components/organism/Table';
import { useAppDispatch } from '@/hooks/hook';
import { PATH } from '@/routes/PATH';
import { useDownloadUserMutation } from '@/services/downloadApi';
import { useDeletePlayerByIdMutation, useGetAllPlayerQuery, useSuspendPlayerByIdMutation } from '@/services/playerApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { PlayerItem, PlayerProps } from '@/types/player';
import { PlayerItem } from '@/types/player';
import { formatDateTime } from '@/utils/formatDateTime';
import { getInitials } from '@/utils/getInitials';
import { Box, Checkbox, Pagination } from '@mui/material';
import { ColumnDef, getCoreRowModel, getPaginationRowModel, getSortedRowModel, useReactTable } from '@tanstack/react-table';
import { useRouter } from 'next/navigation';
import React, { useMemo, useState } from 'react'
import React, { useMemo, useState } from 'react';
export default function PlayerListing() {
const router = useRouter();
const dispatch = useAppDispatch();
const [search, setSearch] = useState("");
const [sorting, setSorting] = useState<{ id: string; desc: boolean }[]>([]);
......@@ -33,10 +31,10 @@ export default function PlayerListing() {
status: currentTab || ""
});
const filteredData = useMemo(() => data?.data?.data || [], [data, currentTab, pageSize]);
// const filteredData = useMemo(() => data?.data?.data || [], [data, currentTab, pageSize]);
const [deletePlayer, { isLoading: deletingPlayer }] = useDeletePlayerByIdMutation();
const [suspendPlayer, { isLoading: suspendingPlayer }] = useSuspendPlayerByIdMutation();
const [deletePlayer] = useDeletePlayerByIdMutation();
const [suspendPlayer] = useSuspendPlayerByIdMutation();
const [downloadUser, { isLoading: downloading }] = useDownloadUserMutation();
const handlePlayerSuspend = async (id: string) => {
......@@ -199,10 +197,10 @@ export default function PlayerListing() {
columns,
state: {
sorting,
},
onSortingChange: setSorting,
getCoreRowModel: getCoreRowModel(),
getSortedRowModel: getSortedRowModel(),
getPaginationRowModel: getPaginationRowModel(),
......
"use client"
import CreditCard from '@/components/organism/Charts/CreditCard'
import EditIcon from '@/icons/EditIcon'
import { PATH } from '@/routes/PATH'
import { useGetPlayerBalanceByIdQuery, useGetPlayerByIdQuery } from '@/services/playerApi'
import { formatDateTime } from '@/utils/formatDateTime'
import Image from 'next/image'
import Link from 'next/link'
import React from 'react'
import TransactionTable from '../../transaction/TransactionTable'
import { useAppSelector } from '@/hooks/hook'
import { formatDateTime } from '@/utils/formatDateTime'
import { useGetPlayerBalanceByIdQuery, useGetPlayerByIdQuery } from '@/services/playerApi'
import TableHeader from '@/components/molecules/TableHeader'
// const games = [
// {
......@@ -63,7 +60,7 @@ const CreditCardShimmer = () => {
};
export default function PlayerDetailPage({ id }: { id: number }) {
const [search, setSearch] = React.useState("");
const { data, isLoading } = useGetPlayerByIdQuery({ id }, {
const { data } = useGetPlayerByIdQuery({ id }, {
skip: !id
})
const { data: userBalance, isLoading: loadingBalance } = useGetPlayerBalanceByIdQuery(
......
"use client";
import ProfileBlock from '@/components/organism/Header/Profile'
import { useAppSelector } from '@/hooks/hook';
import EditIcon from '@/icons/EditIcon';
import { formatDateTime } from '@/utils/formatDateTime';
import { UserTick } from '@wandersonalwes/iconsax-react'
import Image from 'next/image';
import React from 'react'
export default function AdminProfile() {
const user = useAppSelector(state => state.auth.user)
......
"use client";
import React from "react";
import { useFormik } from "formik";
import * as Yup from "yup";
import InputFile from "@/components/atom/InputFile";
import { useAppDispatch } from "@/hooks/hook";
import { useGetAllBannerQuery, useUpdateBannerMutation } from "@/services/settingApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import {
Button,
FormControlLabel,
IconButton,
InputLabel,
OutlinedInput,
IconButton,
FormControlLabel,
Typography,
Switch,
Switch
} from "@mui/material";
import InputFile from "@/components/atom/InputFile";
import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useAppDispatch } from "@/hooks/hook";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { useGetAllBannerQuery, useUpdateBannerMutation } from "@/services/settingApi";
import { useFormik } from "formik";
import React from "react";
import * as Yup from "yup";
const validationSchema = Yup.object({
banners: Yup.array().of(
......@@ -32,8 +31,8 @@ const validationSchema = Yup.object({
export default function BannerSlider() {
const dispatch = useAppDispatch();
const { data, isLoading } = useGetAllBannerQuery();
const [updateBanner, { isLoading: updating }] = useUpdateBannerMutation();
const { data } = useGetAllBannerQuery();
const [updateBanner] = useUpdateBannerMutation();
const formik = useFormik({
initialValues: {
......
"use client";
import React from "react";
import { useFormik } from "formik";
import * as Yup from "yup";
import { InputLabel, OutlinedInput, Button, IconButton } from "@mui/material";
import InputFile from "@/components/atom/InputFile";
import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useGetSettingsQuery, useUpdateSettingMutation } from "@/services/settingApi";
import { useAppDispatch } from "@/hooks/hook";
import { useGetSettingsQuery, useUpdateSettingMutation } from "@/services/settingApi";
import { showToast, ToastVariant } from "@/slice/toastSlice";
import { SiteInitialRequest } from "@/types/setting";
import { Button, IconButton, InputLabel, OutlinedInput } from "@mui/material";
import { CloseCircle } from "@wandersonalwes/iconsax-react";
import { useFormik } from "formik";
import React from "react";
import * as Yup from "yup";
export default function SiteSetting() {
const dispatch = useAppDispatch();
const [updateSetting, { isLoading }] = useUpdateSettingMutation();
const [updateSetting] = useUpdateSettingMutation();
const { data } = useGetSettingsQuery();
const [serverFiles, setServerFiles] = React.useState({
......
......@@ -31,7 +31,7 @@ export default function TransactionTable({ user_id, game_id, search, setSearch }
const [sorting, setSorting] = useState<{ id: string; desc: boolean }[]>([]);
const [pageIndex, setPageIndex] = useState(1);
const [pageSize, setPageSize] = useState(10);
const [rowSelection, setRowSelection] = useState({});
// const [rowSelection, setRowSelection] = useState({});
const [status, setStatus] = React.useState<TransactionStatusProps | undefined>();
const [selectedGame, setSelectedGame] = React.useState("");
const [selectedTransactionType, setSelectedTransationType] = React.useState<TransactionTypeProps | string>("");
......@@ -144,7 +144,7 @@ export default function TransactionTable({ user_id, game_id, search, setSearch }
// onRowSelectionChange: setRowSelection,
});
const { data: games, isLoading } = useGetAllGamesQuery();
const { data: games } = useGetAllGamesQuery();
......
......@@ -5,15 +5,12 @@ import { useAppDispatch, useAppSelector } from '@/hooks/hook';
import { useUpdateUserProfileMutation } from '@/services/userApi';
import { setTokens } from '@/slice/authSlice';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { initialPlayerValues, PlayerItem, SinlgePlayerResponseProps } from '@/types/player';
import { initialPlayerValues, PlayerItem } from '@/types/player';
import { useFormik } from 'formik';
import { useRouter } from 'next/navigation';
import React from 'react'
export default function EditUserProfile({ id, buttonLabel }: { id: string, buttonLabel?: string; }) {
const dispatch = useAppDispatch();
const router = useRouter();
const [updateUserProfile, { isLoading }] = useUpdateUserProfileMutation();
const user = useAppSelector((state) => state?.auth.user);
const access_token = useAppSelector((state) => state?.auth.access_token);
......
......@@ -3,11 +3,10 @@
import { useAppDispatch, useAppSelector } from '@/hooks/hook';
import { useAddUserWalletMutation } from '@/services/userApi';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Button, InputLabel, OutlinedInput } from '@mui/material'
import { InfoCircle, WalletCheck } from '@wandersonalwes/iconsax-react'
import { Button, InputLabel, OutlinedInput } from '@mui/material';
import { InfoCircle, WalletCheck } from '@wandersonalwes/iconsax-react';
import { useFormik } from 'formik';
import React from 'react'
import * as yup from 'yup'
import * as yup from 'yup';
const validationSchema = yup.object({
......@@ -16,7 +15,7 @@ const validationSchema = yup.object({
export default function EditUserWallet() {
const dispatch = useAppDispatch();
const user = useAppSelector((state) => state.auth.user);
const [connectWallet, { isLoading }] = useAddUserWalletMutation();
const [connectWallet] = useAddUserWalletMutation();
const formik = useFormik({
initialValues: {
wallet_address: user?.wallet_address || "",
......
......@@ -4,14 +4,13 @@ import GlassWrapper from '@/components/molecules/GlassWrapper';
import GoldCoinIcon from '@/icons/GoldCoinIcon';
import { Box, Button, OutlinedInput } from '@mui/material';
import { Coin } from '@wandersonalwes/iconsax-react';
import Link from 'next/link';
import { useRouter } from 'next/navigation';
import React, { useState } from 'react';
import { useState } from 'react';
export default function CoinCalculator({ slug }: { slug: string }) {
const [amount, setAmount] = useState<number | "">("");
const [baseCoins, setBaseCoins] = useState<number | null>(null);
const [bonusCoins, setBonusCoins] = useState<number | null>(null);
const [_bonusCoins, setBonusCoins] = useState<number | null>(null);
const router = useRouter();
......
......@@ -7,10 +7,10 @@ import GoldCoinIcon from '@/icons/GoldCoinIcon';
import { useDepositMutation } from '@/services/transaction';
import { showToast, ToastVariant } from '@/slice/toastSlice';
import { Box, Button } from '@mui/material';
import { BitcoinRefresh, Check, TickCircle } from '@wandersonalwes/iconsax-react';
import { TickCircle } from '@wandersonalwes/iconsax-react';
import Image from 'next/image';
import { usePathname, useRouter } from 'next/navigation';
import React from 'react'
import { useRouter } from 'next/navigation';
import React from 'react';
type PaymentModeProps = "crypto" | "idem"
export default function CheckoutPage({ amount, slug, bonus }: {
......@@ -18,7 +18,6 @@ export default function CheckoutPage({ amount, slug, bonus }: {
slug: string;
bonus: number
}) {
const pathname = usePathname();
const dispatch = useAppDispatch();
const router = useRouter();
const [getPaymentLink, { isLoading: gettingLink }] = useDepositMutation();
......
import GlassWrapper from '@/components/molecules/GlassWrapper'
import GoldCoinIcon from '@/icons/GoldCoinIcon'
import { Box, Button, OutlinedInput } from '@mui/material'
import { Box } from '@mui/material'
import { Coin } from '@wandersonalwes/iconsax-react'
import Link from 'next/link'
import React from 'react'
import CoinCalculator from './CoinCalculator'
import GlassWrapper from '@/components/molecules/GlassWrapper'
export default function BuyCoinSinlgeGame({ slug }: { slug: string }) {
const packs = [
......
......@@ -5,7 +5,6 @@ import { useAddUserWalletMutation } from '@/services/userApi'
import { showToast, ToastVariant } from '@/slice/toastSlice'
import { Button, OutlinedInput } from '@mui/material'
import { useFormik } from 'formik'
import React from 'react'
import * as yup from 'yup'
......
import { Box, Typography } from '@mui/material'
import GlassWrapper from '@/components/molecules/GlassWrapper'
import { SecuritySafe } from '@wandersonalwes/iconsax-react'
import Image from 'next/image'
import React from 'react'
import ConnectWalletForm from './ConnectWalletForm'
import GlassWrapper from '@/components/molecules/GlassWrapper'
export default function ConnectWalletPage() {
return (
......
"use client";
import React from 'react'
import BalanceRefresh from './BalanceRefresh';
import { Eye, EyeSlash } from '@wandersonalwes/iconsax-react';
import { Tooltip } from '@mui/material';
import { Eye, EyeSlash } from '@wandersonalwes/iconsax-react';
import React from 'react';
import CopyToClipboard from './CopyToClipboard';
export const CardPasswordField = ({ password }: { password: string }) => {
......
"use client";
import { useGetUserBalanceBySlugQuery } from '@/services/userApi';
import React from 'react'
import CopyToClipboard from './CopyToClipboard';
import { CardPasswordField } from './CardPasswordHandler';
import CopyToClipboard from './CopyToClipboard';
export default function SingleGameCred({ username, password }: { username: string; password: string }) {
......
"use client";
import React from 'react'
import SingleGameCred from '../../../gameCredentials/SingleGameCred'
import { useAppSelector } from '@/hooks/hook';
import { useRouter } from 'next/navigation';
import SingleGameCred from '../../../gameCredentials/SingleGameCred';
export default function GameCredentialsBlock({ game }: { game: any }) {
const user = useAppSelector((s) => s ? s.auth.user : "");
if (!user) {
return "";
}
}
return (
<div className="game_cred ">
......
......@@ -3,17 +3,15 @@
import { useAppSelector } from '@/hooks/hook'
import GoldCoinIcon from '@/icons/GoldCoinIcon'
import SilverCoinIcon from '@/icons/SilverCoinIcon'
import { useGetUserBalanceBySlugQuery } from '@/services/userApi'
import { Box } from '@mui/material'
export default function UserCoin({ slug }: { slug: string }) {
const { data } = useGetUserBalanceBySlugQuery({ slug });
const user = useAppSelector((s) => s ? s.auth.user : "");
const user = useAppSelector((s) => s.auth.user);
const newBalance = useAppSelector((state) => state.userBalanceSlice);
if (!user) {
return "";
}
const newBalance = useAppSelector((state) => state.userBalanceSlice);
const providerBalance = newBalance.providerAndBalance.find(
(item: any) => item.provider === slug
);
......
import { PATH } from '@/routes/PATH';
import ProtectedLink from '@/routes/ProtectedLink';
import { getAllGames } from '@/serverApi/game';
import { Tooltip } from '@mui/material';
import Image from 'next/image';
import Link from 'next/link';
import React from 'react'
export default async function ExclusiveGamePage() {
let games = null;
......@@ -12,7 +9,7 @@ export default async function ExclusiveGamePage() {
try {
games = await getAllGames();
} catch (err) {
// console.log("❌ Failed to fetch games:", err);
console.log("❌ Failed to fetch games:", err);
return <p className="text-red-500">Failed to load games.</p>;
}
......
'use client';
import GlassWrapper from "@/components/molecules/GlassWrapper";
import { Box, Button, Stack, Typography } from "@mui/material";
import { Typography } from "@mui/material";
import Link from "next/link";
export default function KycBanner() {
......
'use client';
import React from 'react';
import { Button, InputLabel, OutlinedInput, Stack } from '@mui/material';
import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import dayjs from 'dayjs';
import { useFormik } from 'formik';
import * as Yup from 'yup';
import dayjs from 'dayjs';
import { LocalizationProvider, DatePicker } from '@mui/x-date-pickers';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { InputLabel, OutlinedInput, Stack, Button, TextField } from '@mui/material';
// Reuse your MUI styles
const formFieldSx = {
......@@ -75,7 +74,7 @@ export default function VerifyKYCPage() {
},
validationSchema,
onSubmit: (values) => {
// console.log('Form submitted:', values);
console.log('Form submitted:', values);
},
});
......
......@@ -46,7 +46,7 @@ export default function WithdrawlPage({
const gameInfo = coins?.data?.game_information || {};
const dispatch = useAppDispatch();
const [withdrawMoney, { isLoading: widthdrawing }] =
const [withdrawMoney] =
useWithdrawlMutation();
const formik = useFormik<WithdrawlFormValues>({
......
"use client";
import CustomTable from '@/components/organism/Table';
import { useGetAllDepositQuery, useGetAllWithdrawlQuery } from '@/services/transaction';
import { useGetAllWithdrawlQuery } from '@/services/transaction';
import { SingleDepositProps } from '@/types/transaction';
import { Pagination } from '@mui/material';
import { ColumnDef, getCoreRowModel, getPaginationRowModel, useReactTable } from '@tanstack/react-table';
import React, { useState } from 'react'
import { useState } from 'react';
export default function WithdrawnHistoryPage({ currentFilter,
customRange
......@@ -18,7 +18,7 @@ export default function WithdrawnHistoryPage({ currentFilter,
const { data, isLoading } = useGetAllWithdrawlQuery({
pageIndex,
pageSize,
days:currentFilter,
days: currentFilter,
customRange
});
const columns: ColumnDef<SingleDepositProps>[] = [
......
......@@ -13,7 +13,7 @@ export default function MenuPage() {
const { data, isLoading } = useGetAllPageQuery({ pageIndex: 1, pageSize: 30 });
const [createMenu, { isLoading: updatingMenu }] = useCreateMenuMutation();
const { data: menus, isLoading: loadingMenu } = useGetAllMenuQuery();
const { data: menus } = useGetAllMenuQuery();
const dispatch = useAppDispatch();
const [selectedMenus, setSelectedMenus] = React.useState<any[]>([]);
......@@ -37,7 +37,7 @@ export default function MenuPage() {
const handleMenuSave = async () => {
try {
const menuIds = selectedMenus.map((menu) => menu.id);
const response = await createMenu({ pages: menuIds }).unwrap();
await createMenu({ pages: menuIds }).unwrap();
dispatch(
showToast({
......
......@@ -2,9 +2,9 @@
import { useAppDispatch, useAppSelector } from "@/hooks/hook";
import { clearTokens, setTokens } from "@/slice/authSlice";
import Cookies from "js-cookie";
import { useRouter } from "next/navigation";
import React, { useEffect } from "react";
import Cookies from "js-cookie";
function isTokenExpired(token: string): boolean {
try {
......@@ -27,7 +27,7 @@ export default function Private({ children }: { children: React.ReactNode }) {
const token = useAppSelector((state) => state.auth.access_token);
useEffect(() => {
let accessToken = token || Cookies.get("access_token");
const accessToken = token || Cookies.get("access_token");
if (!accessToken || isTokenExpired(accessToken)) {
dispatch(clearTokens());
......@@ -43,7 +43,7 @@ export default function Private({ children }: { children: React.ReactNode }) {
// if (!user) {
// router.replace("/");
// }
}, [token, user, dispatch, router]);
if (!user) return null;
......
......@@ -19,7 +19,7 @@ export default function ProtectedLink({ href, className, children, target, rel,
const dispatch = useAppDispatch();
const router = useRouter();
const { data, isLoading } = useGetGamesPasswordStatusQuery({ provider: provider || "" }, { skip: !provider });
const { data } = useGetGamesPasswordStatusQuery({ provider: provider || "" }, { skip: !provider });
console.log("user data", { data, provider });
......
"use client";
import { useEffect } from "react";
import { useAppDispatch } from "@/hooks/hook";
import { setTokens } from "@/slice/authSlice";
export default function ReduxHydrator({ token }: { token: string; }) {
const dispatch = useAppDispatch();
console.log(token);
// useEffect(() => {
// dispatch(setTokens({ access_token: token, user }));
......
// routes/Private.tsx
import { cookies } from "next/headers";
import { redirect } from "next/navigation";
import React from "react";
import ReduxHydrator from "./ReduxHydrator";
function decodeJwt(token: string) {
try {
return JSON.parse(atob(token.split(".")[1]));
} catch {
return null;
}
}
// function decodeJwt(token: string) {
// try {
// return JSON.parse(atob(token.split(".")[1]));
// } catch {
// return null;
// }
// }
export default async function ServerPrivate({ children }: { children: React.ReactNode }) {
// ✅ Read cookie server-side
......@@ -24,7 +23,7 @@ export default async function ServerPrivate({ children }: { children: React.Reac
// redirect("/");
// }
// const user = payload;
return (
......
import { PageRequestProps, PageResponseProps } from "@/types/page";
import { cookies } from "next/headers";
import { serverBaseQuery } from "./serverBaseQuery";
import { PageResponseProps } from "@/types/page";
import { BannerResponseProps } from "@/types/setting";
import { serverBaseQuery } from "./serverBaseQuery";
export async function getPageDetail(slug: string): Promise<PageResponseProps | undefined> {
return serverBaseQuery(`/api/general/page/${slug}`);
......
// lib/baseQuery.ts
import { RootState } from "@/hooks/store";
export async function serverBaseQuery<T>(
endpoint: string,
......@@ -9,7 +8,6 @@ export async function serverBaseQuery<T>(
token,
body,
cache = "no-store",
withAuth = false,
}: {
method?: string;
token?: string;
......
......@@ -25,9 +25,8 @@
// export const { useDownloadTransactionMutation } = downloadApi;
// src/services/downloadApi.ts
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery"; // your custom base query
import { GlobalResponse } from "@/types/config";
export const downloadApi = createApi({
reducerPath: "downloadApi",
......
import { GlobalResponse } from "@/types/config";
import { GameItem, GameResponseProps, SingleGameResponse } from "@/types/game";
import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
import { GameItem, GameProps, GameResponseProps, SingleGameResponse } from "@/types/game";
import { GlobalResponse } from "@/types/config";
export const gameApi = createApi({
reducerPath: "gameApi",
......
......@@ -17,7 +17,7 @@ export const pageApi = createApi({
invalidatesTags: ['pages']
}),
getAllPage: builder.query<PageListResponse, QueryParams>({
query: (body) => ({
query: () => ({
url: "/api/admin/page/list",
method: "GET",
}),
......
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
import { GlobalResponse } from "@/types/config";
import { MenuResponse } from "@/types/menu";
import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
type PaymentRequestProps = {
idem_payment_uri: string,
......
// services/playerApi.ts
import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
import { GlobalResponse, QueryParams } from "@/types/config";
import {
PlayerListResponse,
PlayerProps,
SinlgePlayerResponseProps,
SinlgePlayerResponseProps
} from "@/types/player";
import { GlobalResponse, QueryParams } from "@/types/config";
import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
export const playerApi = createApi({
reducerPath: "playerApi",
......
import { TransactionStatusProps } from "@/components/pages/dashboard/adminDashboard/transaction/TransactionTable";
import { QueryParams } from "@/types/config";
import { DepositListProps, DepositProps, DepositResponseProps } from "@/types/transaction";
import { createApi } from "@reduxjs/toolkit/query/react";
import { baseQuery } from "./baseQuery";
import { DepositListProps, DepositProps, DepositResponseProps, DepositUrlProps } from "@/types/transaction";
import { QueryParams } from "@/types/config";
import { TransactionStatusProps } from "@/components/pages/dashboard/adminDashboard/transaction/TransactionTable";
export const transactionApi = createApi({
reducerPath: "transactionApi",
......
import { RoleProps, User } from "@/types/auth";
import { PlayerProps } from "@/types/player";
import { createSlice } from "@reduxjs/toolkit";
import Cookies from "js-cookie";
......@@ -11,14 +10,14 @@ const isBrowser = typeof window !== "undefined";
const tokens = isBrowser ? localStorage.getItem("token") : null;
let localStorageAccessToken = "";
let localStorageRefreshToken = "";
// let localStorageRefreshToken = "";
let localStorageUser = null;
if (tokens) {
try {
const parsedTokens = JSON.parse(tokens);
localStorageAccessToken = parsedTokens.access_token || "";
localStorageRefreshToken = parsedTokens.refreshToken || "";
// localStorageRefreshToken = parsedTokens.refreshToken || "";
localStorageUser = parsedTokens.user || "";
} catch (error) {
console.error("Error parsing tokens from localStorage:", error);
......
// src/theme/Palette.ts
import { createTheme, PaletteMode } from "@mui/material/styles";
import { ThemeMode } from "@/config";
import { PaletteThemeProps } from "@/types/theme";
import { createTheme, PaletteMode } from "@mui/material/styles";
export default function Palette(mode: ThemeMode) {
const contrastText = "#fff";
......@@ -11,8 +11,8 @@ export default function Palette(mode: ThemeMode) {
let secondaryColors = ["#93E0D8", "#69A29D", "#4A7D78"];
let grayColors = ["#E0E0E3", '#F3F4F6'];
let titleColors = ["#0E0E11", "rgba(0, 0, 0, 0.80)", "rgba(0, 0, 0, 0.90)"];
let primaryGradColors = ['linear-gradient(90deg, #B100B8 0%, #F335ED 100%)'];
let secondaryGradColors = ['linear-gradient(90deg, #69A29D 0%, #93E0D9 100%)'];
const primaryGradColors = ['linear-gradient(90deg, #B100B8 0%, #F335ED 100%)'];
const secondaryGradColors = ['linear-gradient(90deg, #69A29D 0%, #93E0D9 100%)'];
if (mode === ThemeMode.DARK) {
......
"use client";
import { CssBaseline, GlobalStyles } from '@mui/material'
import { StyledEngineProvider, ThemeProvider } from '@mui/material/styles'
import React from 'react'
import Palette from './palette';
import AdminPalette from './adminPalette';
import { ThemeMode } from '@/config';
import { NextAppDirEmotionCacheProvider } from './emotionCache';
import { useAppSelector } from '@/hooks/hook';
import { CssBaseline, GlobalStyles } from '@mui/material';
import { StyledEngineProvider, ThemeProvider } from '@mui/material/styles';
import React from 'react';
import AdminPalette from './adminPalette';
import { NextAppDirEmotionCacheProvider } from './emotionCache';
import Palette from './palette';
export default function ThemeCustomization({ children }: { children: React.ReactNode }) {
......@@ -33,6 +33,7 @@ export default function ThemeCustomization({ children }: { children: React.React
}, [user]);
console.log(theme)
return (
<StyledEngineProvider injectFirst>
<NextAppDirEmotionCacheProvider options={{ key: 'mui' }}>
......
// // src/theme/Palette.ts
// import { createTheme, PaletteMode } from "@mui/material/styles";
// import { ThemeMode } from "@/config";
// import { PaletteThemeProps } from "@/types/theme";
// export default function Palette(mode: ThemeMode) {
// const contrastText = "#fff";
// let primaryColors = ['#71717A', '#B801C0', '#3A013F'];
// let secondaryColors = ["#93E0D8", "#69A29D", "#4A7D78"];
// let grayColors = ["#E0E0E3", '#F3F4F6'];
// let titleColors = ["#0E0E11", "rgba(0, 0, 0, 0.80)", "rgba(0, 0, 0, 0.90)"];
// let primaryGradColors = ['linear-gradient(90deg, #B100B8 0%, #F335ED 100%)'];
// let secondaryGradColors = ['linear-gradient(90deg, #69A29D 0%, #93E0D9 100%)'];
// if (mode === ThemeMode.DARK) {
// primaryColors = ['#A0A0A7', '#D958DF', '#7D0182'];
// secondaryColors = ["#93E0D8", "#69A29D", "#4A7D78"];
// grayColors = ["#2D2D30", '#1F1F23'];
// titleColors = ["#F0F0F0", "rgba(0, 0, 0, 0.80)", "rgba(0, 0, 0, 0.90)"];
// }
// const paletteColor: PaletteThemeProps = {
// primary: {
// light: primaryColors[0],
// main: primaryColors[1],
// dark: primaryColors[2],
// contrastText
// },
// secondary: {
// light: secondaryColors[0],
// main: secondaryColors[0],
// dark: secondaryColors[0],
// contrastText
// },
// title: {
// main: titleColors[0],
// contrastText
// },
// lightGray: {
// light: grayColors[1],
// main: grayColors[0],
// contrastText
// },
// };
// // Final MUI Theme
// return createTheme({
// typography: {
// fontFamily: "Inter, sans-serif",
// },
// palette: {
// mode: mode as PaletteMode,
// common: {
// black: "#000",
// white: "#fff",
// },
// ...paletteColor,
// background: {
// default: mode === ThemeMode.DARK ? "#11011E" : "#fff",
// paper: mode === ThemeMode.DARK ? "rgba(41, 1, 57, 0.81)" : "#fff"
// },
// text: {
// primary: mode === ThemeMode.DARK ? titleColors[0] : titleColors[0],
// secondary: mode === ThemeMode.DARK ? grayColors[0] : grayColors[1]
// },
// },
// components: {
// MuiPaper: {
// styleOverrides: {
// root: {
// ...(mode === ThemeMode.DARK && {
// backdropFilter: "blur(10px)",
// WebkitBackdropFilter: "blur(10px)",
// }),
// },
// },
// },
// MuiInputLabel: {
// styleOverrides: {
// root: {
// // color: 'rgba(255, 255, 255, 0.80)',
// color: titleColors[0],
// fontSize: '12px',
// fontWeight: 400,
// lineHeight: 'normal',
// display: 'block',
// marginBottom: '4px',
// },
// },
// },
// MuiOutlinedInput: {
// styleOverrides: {
// root: {
// width: "100%",
// borderRadius: '27px',
// background: 'rgba(118, 107, 120, 0.55)',
// border: '0.576px solid rgba(255, 255, 255, 0.04)',
// color: '#fff',
// '&:hover .MuiOutlinedInput-notchedOutline': {
// borderColor: 'rgba(255,255,255,0.2)',
// },
// '&.Mui-focused .MuiOutlinedInput-notchedOutline': {
// borderColor: '#B801C0',
// },
// },
// input: {
// padding: '12px 16px',
// '&::placeholder': {
// color: 'rgba(255, 255, 255, 0.2)',
// fontWeight: 300,
// fontSize: '12px',
// },
// },
// },
// },
// MuiButton: {
// styleOverrides: {
// root: {
// borderRadius: '27px',
// padding: '12px 24px',
// textAlign: 'center',
// textTransform: 'capitalize',
// width: '100%',
// '&:disabled': {
// opacity: 0.5,
// cursor: 'not-allowed',
// },
// },
// [theme.breakpoints.down("md")]: {
// padding: "8px 16px", // or "8px 6px" as you mentioned
// },
// },
// variants: [
// {
// props: { variant: "contained", color: "primary" },
// style: {
// background: primaryGradColors[0],
// color: "#fff",
// "&:hover": {
// opacity: 0.9,
// },
// },
// },
// {
// props: { variant: "contained", color: "secondary" },
// style: {
// background: secondaryGradColors[0],
// color: "#fff",
// "&:hover": {
// opacity: 0.9,
// },
// },
// },
// ],
// },
// MuiList: {
// styleOverrides: {
// root: {
// padding: 0
// }
// }
// },
// MuiListItem: {
// styleOverrides: {
// root: {
// display: "block",
// padding: 0
// }
// }
// },
// MuiListItemButton: {
// styleOverrides: {
// root: {
// padding: "12px 12px 12px 16px",
// transition: "justify-content 0.2s ease",
// "&.collapsed": {
// justifyContent: "center"
// },
// "&.expanded": {
// justifyContent: "flex-start"
// },
// "&.active": {
// backgroundColor: "#FEEFFF",
// color: primaryColors[1],
// "& .MuiListItemIcon-root": {
// color: primaryColors[1],
// }
// }
// },
// }
// },
// MuiListItemIcon: {
// styleOverrides: {
// root: {
// minWidth: 0,
// justifyContent: "center",
// transition: "margin 0.2s ease",
// "&.collapsed": {
// marginRight: "auto"
// },
// "&.expanded": {
// marginRight: "12px"
// }
// }
// }
// },
// MuiListItemText: {
// styleOverrides: {
// root: {
// transition: "opacity 0.2s ease",
// "&.collapsed": {
// opacity: 0
// },
// "&.expanded": {
// opacity: 1
// }
// }
// }
// }
// },
// });
// }
// src/theme/Palette.ts
import { createTheme, PaletteMode } from "@mui/material/styles";
import { ThemeMode } from "@/config";
import { PaletteThemeProps } from "@/types/theme";
import { createTheme, PaletteMode } from "@mui/material/styles";
export default function Palette(mode: ThemeMode) {
const contrastText = "#fff";
......@@ -243,10 +14,10 @@ export default function Palette(mode: ThemeMode) {
"rgba(0, 0, 0, 0.80)",
"rgba(0, 0, 0, 0.90)",
];
let primaryGradColors = [
const primaryGradColors = [
"linear-gradient(90deg, #B100B8 0%, #F335ED 100%)",
];
let secondaryGradColors = [
const secondaryGradColors = [
"linear-gradient(90deg, #69A29D 0%, #93E0D9 100%)",
];
......
interface GameProviderResponseProps {
export interface GameProviderResponseProps {
success: true,
data: {
id: 1,
name: string,
value: string
}[],
message: String
message: stringtring
}
......@@ -14,6 +14,7 @@ export async function getServerAuth() {
return { isAuthenticated: true, user: payload };
} catch (err) {
console.error(err);
return { isAuthenticated: false, user: null };
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment