diff --git a/payment-iq/app/components/AccountIQ/AccountIQ.tsx b/payment-iq/app/components/AccountIQ/AccountIQ.tsx new file mode 100644 index 0000000..bc5e5df --- /dev/null +++ b/payment-iq/app/components/AccountIQ/AccountIQ.tsx @@ -0,0 +1,26 @@ +import { styled } from "@mui/material" +import { SectionCard } from "../SectionCard/SectionCard" + +const AccountIQIcon = styled('div')(({ theme }) => ({ + fontWeight: 'bold', + color: '#4ecdc4', + fontSize: '1rem', + marginRight: theme.spacing(1), +})); + +export const AccountIQ = () => { + + return ( + AIQ + } + items={[ + { title: 'Automatically reconcile your transactions' }, + { title: 'Live wallet balances from providers' }, + { title: 'Gaming provider financial overviews' }, + { title: 'Learn more' }, + ]} + /> + ) +} diff --git a/payment-iq/app/components/Documentation/Documentation.tsx b/payment-iq/app/components/Documentation/Documentation.tsx new file mode 100644 index 0000000..74c98e7 --- /dev/null +++ b/payment-iq/app/components/Documentation/Documentation.tsx @@ -0,0 +1,18 @@ +import React from 'react'; +import DescriptionIcon from '@mui/icons-material/Description'; +import { SectionCard } from '../SectionCard/SectionCard'; + +export const Documentation = () => { + return ( + } + items={[ + { title: 'Provider Integration Overview' }, + { title: 'APIs Introduction' }, + { title: 'Documentation Overview' }, + { title: 'How-Tos' }, + ]} + /> + ); +}; diff --git a/payment-iq/app/components/FetchReports/FetchReports.tsx b/payment-iq/app/components/FetchReports/FetchReports.tsx new file mode 100644 index 0000000..5f46031 --- /dev/null +++ b/payment-iq/app/components/FetchReports/FetchReports.tsx @@ -0,0 +1,155 @@ +import React, { useState } from 'react'; +import { + Typography, + FormControl, + InputLabel, + Select, + MenuItem, + Button, + Stack, + Box, + Paper, + IconButton, +} from '@mui/material'; +import CalendarTodayIcon from '@mui/icons-material/CalendarToday'; + +import MoreVertIcon from '@mui/icons-material/MoreVert'; + +export const FetchReport = () => { + const [state, setState] = useState(''); + const [psp, setPsp] = useState(''); + const [reportType, setReportType] = useState(''); + + const handleDownload = () => { + // Download logic goes here + alert('Report downloaded'); + }; + + const isDownloadEnabled = state && psp && reportType; + + return ( + + + + Fetch Report + + + + Last 30 days + + + + + + + + + + + + Select state (defaults to All) + + + + + Select PSPs (defaults to All) + + + + + Select report type + + + + + + + + + ); +}; + diff --git a/payment-iq/app/components/Pages/Approve/Approve.tsx b/payment-iq/app/components/Pages/Approve/Approve.tsx new file mode 100644 index 0000000..374bb1b --- /dev/null +++ b/payment-iq/app/components/Pages/Approve/Approve.tsx @@ -0,0 +1,162 @@ +import React, { useState } from 'react'; +import { + Box, + TextField, + IconButton, + InputAdornment, + Table, + TableBody, + TableCell, + TableContainer, + TableHead, + TableRow, + Checkbox, + Paper, + MenuItem, + InputLabel, + Select, + FormControl, + SelectChangeEvent +} from '@mui/material'; +import SearchIcon from '@mui/icons-material/Search'; + +const rows = [ + { + merchantId: '100987998', + txId: '1049078821', + userId: 17, + userEmail: 'dhkheni1@yopmail.com', + kycStatus: 'N/A', + }, + { + merchantId: '100987998', + txId: '1049078821', + userId: 18, + userEmail: 'dhkheni1@yopmail.com', + kycStatus: 'N/A', + }, + { + merchantId: '100987998', + txId: '1049078821', + userId: 19, + userEmail: 'dhkheni1@yopmail.com', + kycStatus: 'N/A', + }, +]; + +export const Approve = () => { + const [age, setAge] = useState(''); + const [selectedRows, setSelectedRows] = useState([]); + + + + const handleCheckboxChange = (userId: number) => (event: React.ChangeEvent) => { + const isChecked = event.target.checked; + setSelectedRows((prevSelected: number[]) => + isChecked + ? [...prevSelected, userId] + : prevSelected.filter((id) => id !== userId) + ); + console.log('Selected IDs:', isChecked + ? [...selectedRows, userId] + : selectedRows.filter((id) => id !== userId)); + }; + + const handleChangeAge = (event: SelectChangeEvent) => { + setAge(event.target.value as string); + }; + + return ( + + + + + + + + ), + }} + /> + + {/* */} + {/* */} + {/* */} + {/* */} + {/* Action 1 */} + {/* Action 2 */} + {/* */} + + Action + + + + + + + + + + + Merchant-id + Tx-id + User + User email + KYC Status + KYC PSP + KYC PSP status + KYC ID status + KYC address status + KYC liveness status + KYC age status + KYC peps and sanctions + Suspected + + + + {rows.map((row, idx) => ( + + + + {row.merchantId} + {row.txId} + + + {row.userId} + + + {row.userEmail} + {row.kycStatus} + + + + + + + + + + ))} + +
+
+
+ ); +} + diff --git a/payment-iq/app/components/SectionCard/SectionCard.tsx b/payment-iq/app/components/SectionCard/SectionCard.tsx new file mode 100644 index 0000000..5f1ce79 --- /dev/null +++ b/payment-iq/app/components/SectionCard/SectionCard.tsx @@ -0,0 +1,37 @@ +import { CardContent, Typography, Divider, List, ListItem, ListItemText, Paper, Box, IconButton } from "@mui/material"; + + +import MoreVertIcon from '@mui/icons-material/MoreVert'; + +export const SectionCard = ({ title, icon, items }) => ( + + + + + {icon} + {title} + + + + + + + + + + {items.map((item, index) => ( + + + + ))} + + + +); + + diff --git a/payment-iq/app/components/WhatsNew/WhatsNew.tsx b/payment-iq/app/components/WhatsNew/WhatsNew.tsx new file mode 100644 index 0000000..30555f8 --- /dev/null +++ b/payment-iq/app/components/WhatsNew/WhatsNew.tsx @@ -0,0 +1,17 @@ +import { SectionCard } from "../SectionCard/SectionCard"; +import WifiIcon from '@mui/icons-material/Wifi'; + +export const WhatsNew = () => { + return ( + } + items={[ + { title: 'Sneak Peek – Discover the New Rules Hub Feature', date: '13 May 2025' }, + { title: 'New security measures for anonymizing sensitive configuration values, effective December 2nd', date: '31 Oct 2024' }, + { title: 'Introducing Our New Transactions and Rule Views', date: '23 Oct 2024' }, + { title: 'Introducing Our New Status Page', date: '09 Sept 2024' }, + ]} + /> + ); +}; diff --git a/payment-iq/app/components/pages/DashboardHomePage/DashboardHomePage.tsx b/payment-iq/app/components/pages/DashboardHomePage/DashboardHomePage.tsx index 635d135..5b1316f 100644 --- a/payment-iq/app/components/pages/DashboardHomePage/DashboardHomePage.tsx +++ b/payment-iq/app/components/pages/DashboardHomePage/DashboardHomePage.tsx @@ -2,6 +2,10 @@ import { Box } from "@mui/material" import { GeneralHealthCard } from "../../GeneralHealthCard/GeneralHealthCard" import { TransactionsOverview } from "../../TransactionsOverview/TransactionsOverview" import { TransactionsWaitingApproval } from "../../TransactionsWaitingApproval/TransactionsWaitingApproval" +import { FetchReport } from "../../FetchReports/FetchReports" +import { Documentation } from "../../Documentation/Documentation" +import { AccountIQ } from "../../AccountIQ/AccountIQ" +import { WhatsNew } from "../../WhatsNew/WhatsNew" @@ -13,6 +17,10 @@ export const DashboardHomePage = () => { + + + + ) } diff --git a/payment-iq/app/dashboard/approve/page.tsx b/payment-iq/app/dashboard/approve/page.tsx index c496001..e71ddaf 100644 --- a/payment-iq/app/dashboard/approve/page.tsx +++ b/payment-iq/app/dashboard/approve/page.tsx @@ -1,13 +1,13 @@ // This ensures this component is rendered only on the client side 'use client'; -import React from 'react'; +import { Approve } from '@/app/components/Pages/Approve/Approve'; export default function ApprovePage() { return (
{/* This page will now be rendered on the client-side */} -

Approve

+
); -} \ No newline at end of file +} diff --git a/payment-iq/app/dashboard/investigate/page.tsx b/payment-iq/app/dashboard/investigate/page.tsx index 28fbef1..7decb87 100644 --- a/payment-iq/app/dashboard/investigate/page.tsx +++ b/payment-iq/app/dashboard/investigate/page.tsx @@ -10,4 +10,4 @@ export default function InvestigatePage() {

Investigate

); -} \ No newline at end of file +} diff --git a/payment-iq/constants/SidebarLink.constants.ts b/payment-iq/constants/SidebarLink.constants.ts index 2a0e9aa..d30dacd 100644 --- a/payment-iq/constants/SidebarLink.constants.ts +++ b/payment-iq/constants/SidebarLink.constants.ts @@ -19,7 +19,7 @@ export const SIDEBAR_LINKS: ISidebarLink[] = [ { title: 'Home', path: '/dashboard', icon: HomeIcon }, { title: 'Transaction', path: '/dashboard/transactions', icon: AccountBalanceWalletIcon }, { title: 'Approve', path: '/dashboard/approve', icon: CheckCircleIcon }, - { title: 'Investigate', path: '/investigate', icon: SearchIcon }, + { title: 'Investigate', path: '/dashboard/investigate', icon: SearchIcon }, { title: 'KYC', path: '/kyc', icon: VerifiedUserIcon }, { title: 'User Accounts', path: '/user-accounts', icon: PeopleIcon }, { title: 'Analytics', path: '/analytics', icon: BarChartIcon },