From 26e97a0c4478304a2678ae150627deaba5804b49 Mon Sep 17 00:00:00 2001 From: Mitchell Magro Date: Fri, 27 Jun 2025 16:47:13 +0200 Subject: [PATCH 1/2] Adding routing to navigate to --- .../app/components/PageLinks/PageLinks.tsx | 41 +++ .../components/dashboard/header/DropDown.tsx | 42 --- .../components/dashboard/sidebar/Sidebar.tsx | 55 --- .../app/components/sidebar/SideBarLink.tsx | 41 --- payment-iq/app/dashboard/approve/page.tsx | 4 +- payment-iq/app/dashboard/layout.tsx | 18 +- payment-iq/app/dashboard/page.tsx | 8 +- .../AccountIQ/AccountIQ.tsx | 0 .../DateRangePicker/DateRangePicker.tsx | 0 .../Documentation/Documentation.tsx | 0 .../FetchReports/FetchReports.tsx | 0 .../GeneralHealthCard/GeneralHealthCard.tsx | 0 .../Pages/Approve/Approve.tsx | 0 .../DashboardHomePage/DashboardHomePage.tsx | 0 .../Pages}/transactions/Transactions.tsx | 0 .../Pages}/transactions/constants.ts | 0 .../Pages}/transactions/mockData.ts | 0 .../PieCharts/PieCharts.tsx | 0 .../SectionCard/SectionCard.tsx | 0 .../SectionCard/types.ts | 0 .../TransactionsOverViewTable.tsx | 0 .../TransactionsOverview.tsx | 0 .../TransactionsWaitingApproval.tsx | 0 .../WhatsNew/WhatsNew.tsx | 0 .../dashboard/header/Header.tsx | 20 +- .../header/dropDown/DropDown.styled.ts | 8 + .../dashboard/header/dropDown/DropDown.tsx | 60 ++++ .../dashboard/layout/layoutWrapper.ts | 0 .../dashboard/layout/mainContent.ts | 0 .../features/dashboard/sidebar/Sidebar.tsx | 57 +++ .../sidebar/SideBarLink.tsx | 0 .../sidebar/SidebarLayout.tsx | 0 payment-iq/constants/SidebarLink.constants.ts | 59 ++- payment-iq/yarn.lock | 340 ++++++++++++++++-- 34 files changed, 530 insertions(+), 223 deletions(-) create mode 100644 payment-iq/app/components/PageLinks/PageLinks.tsx delete mode 100644 payment-iq/app/components/dashboard/header/DropDown.tsx delete mode 100644 payment-iq/app/components/dashboard/sidebar/Sidebar.tsx delete mode 100644 payment-iq/app/components/sidebar/SideBarLink.tsx rename payment-iq/app/{components => features}/AccountIQ/AccountIQ.tsx (100%) rename payment-iq/app/{components => features}/DateRangePicker/DateRangePicker.tsx (100%) rename payment-iq/app/{components => features}/Documentation/Documentation.tsx (100%) rename payment-iq/app/{components => features}/FetchReports/FetchReports.tsx (100%) rename payment-iq/app/{components => features}/GeneralHealthCard/GeneralHealthCard.tsx (100%) rename payment-iq/app/{components => features}/Pages/Approve/Approve.tsx (100%) rename payment-iq/app/{components/pages => features/Pages}/DashboardHomePage/DashboardHomePage.tsx (100%) rename payment-iq/app/{components/pages => features/Pages}/transactions/Transactions.tsx (100%) rename payment-iq/app/{components/pages => features/Pages}/transactions/constants.ts (100%) rename payment-iq/app/{components/pages => features/Pages}/transactions/mockData.ts (100%) rename payment-iq/app/{components => features}/PieCharts/PieCharts.tsx (100%) rename payment-iq/app/{components => features}/SectionCard/SectionCard.tsx (100%) rename payment-iq/app/{components => features}/SectionCard/types.ts (100%) rename payment-iq/app/{components => features}/TransactionsOverview/TransactionsOverViewTable.tsx (100%) rename payment-iq/app/{components => features}/TransactionsOverview/TransactionsOverview.tsx (100%) rename payment-iq/app/{components => features}/TransactionsWaitingApproval/TransactionsWaitingApproval.tsx (100%) rename payment-iq/app/{components => features}/WhatsNew/WhatsNew.tsx (100%) rename payment-iq/app/{components => features}/dashboard/header/Header.tsx (68%) create mode 100644 payment-iq/app/features/dashboard/header/dropDown/DropDown.styled.ts create mode 100644 payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx rename payment-iq/app/{components => features}/dashboard/layout/layoutWrapper.ts (100%) rename payment-iq/app/{components => features}/dashboard/layout/mainContent.ts (100%) create mode 100644 payment-iq/app/features/dashboard/sidebar/Sidebar.tsx rename payment-iq/app/{components/dashboard => features}/sidebar/SideBarLink.tsx (100%) rename payment-iq/app/{components => features}/sidebar/SidebarLayout.tsx (100%) diff --git a/payment-iq/app/components/PageLinks/PageLinks.tsx b/payment-iq/app/components/PageLinks/PageLinks.tsx new file mode 100644 index 0000000..12962d8 --- /dev/null +++ b/payment-iq/app/components/PageLinks/PageLinks.tsx @@ -0,0 +1,41 @@ +"use client"; + +import Link from "next/link"; +import { styled } from "@mui/system"; +import { ISidebarLink } from "@/interfaces/SidebarLink.interfaces"; + +const LinkContainer = styled("div")(({ theme }) => ({ + display: "flex", + alignItems: "center", + padding: "12px 1px", + borderRadius: "4px", + color: theme.palette.text.tertiary, + textDecoration: "none", + transition: "background 0.2s ease-in-out", + + "&:hover": { + color: "rgb(255, 255, 255)", + background: "rgba(255, 255, 255, 0.08)", + backgroundColor: theme.palette.action.hover, + cursor: "pointer", + }, +})); + +const LinkText = styled("span")(({ theme }) => ({ + color: theme.palette.text.tertiary, + marginLeft: "12px", + fontWeight: 500, +})); + +export default function PageLinks({ title, path, icon: Icon }: ISidebarLink) { + return ( + + + + {Icon && } + {title} + + + + ); +} diff --git a/payment-iq/app/components/dashboard/header/DropDown.tsx b/payment-iq/app/components/dashboard/header/DropDown.tsx deleted file mode 100644 index aaff10d..0000000 --- a/payment-iq/app/components/dashboard/header/DropDown.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import React from 'react'; -import { - FormControl, - InputLabel, - Select, - MenuItem, - SelectChangeEvent, - ListItemIcon, - ListItemText, -} from '@mui/material'; -import { SIDEBAR_LINKS } from '@/constants/SidebarLink.constants'; - -interface Props { - onChange?: (event: SelectChangeEvent) => void; -} - -export default function SidebarDropdown({ onChange }: Props) { - const [value, setValue] = React.useState(''); - - const handleChange = (event: SelectChangeEvent) => { - setValue(event.target.value); - onChange?.(event); - }; - - return ( - - Navigate To - - - ); -} diff --git a/payment-iq/app/components/dashboard/sidebar/Sidebar.tsx b/payment-iq/app/components/dashboard/sidebar/Sidebar.tsx deleted file mode 100644 index 512714d..0000000 --- a/payment-iq/app/components/dashboard/sidebar/Sidebar.tsx +++ /dev/null @@ -1,55 +0,0 @@ -'use client'; - -import React from 'react'; -import DashboardIcon from '@mui/icons-material/Dashboard'; -import { styled } from '@mui/system'; -import { SIDEBAR_LINKS } from '@/constants/SidebarLink.constants'; -import SidebarLink from './SideBarLink'; - -const SideBarContainer = styled('aside')(({ theme }) => ({ - position: 'fixed', - top: 0, - left: 0, - width: 240, - height: '100vh', - backgroundColor: theme.palette.background.primary, - color: theme.palette.text.primary, - display: 'flex', - flexDirection: 'column', - padding: theme.spacing(2), - zIndex: 1100, - borderRight: `1px solid ${theme.palette.divider}`, -})); - -const SidebarHeader = styled('div')(({ theme }) => ({ - fontSize: '20px', - fontWeight: 600, - marginBottom: theme.spacing(3), - display: 'flex', - alignItems: 'center', - color: theme.palette.text.primary, -})); - -const IconSpacing = styled(DashboardIcon)(({ theme }) => ({ - marginLeft: theme.spacing(1), -})); - -const SideBar = () => { - return ( - - - Betrise cashir - - {SIDEBAR_LINKS.map((link) => ( - - ))} - - ); -}; - -export default SideBar; diff --git a/payment-iq/app/components/sidebar/SideBarLink.tsx b/payment-iq/app/components/sidebar/SideBarLink.tsx deleted file mode 100644 index 17601cf..0000000 --- a/payment-iq/app/components/sidebar/SideBarLink.tsx +++ /dev/null @@ -1,41 +0,0 @@ -'use client'; - -import Link from 'next/link'; -import { styled } from '@mui/system'; -import { ISidebarLink } from '@/interfaces/SidebarLink.interfaces'; - -const LinkContainer = styled('div')(({ theme }) => ({ - display: 'flex', - alignItems: 'center', - padding: '12px 1px', - borderRadius: '4px', - color: theme.palette.text.tertiary, - textDecoration: 'none', - transition: 'background 0.2s ease-in-out', - - '&:hover': { - color: 'rgb(255, 255, 255)', - background: 'rgba(255, 255, 255, 0.08)', - backgroundColor: theme.palette.action.hover, - cursor: 'pointer', - }, -})); - -const LinkText = styled('span')(({ theme }) => ({ - color: theme.palette.text.tertiary, - marginLeft: '12px', - fontWeight: 500, -})); - -export default function SidebarLink({ title, path, icon: Icon }: ISidebarLink) { - return ( - - - - {Icon && } - {title} - - - - ); -} diff --git a/payment-iq/app/dashboard/approve/page.tsx b/payment-iq/app/dashboard/approve/page.tsx index e71ddaf..dab8077 100644 --- a/payment-iq/app/dashboard/approve/page.tsx +++ b/payment-iq/app/dashboard/approve/page.tsx @@ -1,7 +1,7 @@ // This ensures this component is rendered only on the client side -'use client'; +"use client"; -import { Approve } from '@/app/components/Pages/Approve/Approve'; +import { Approve } from "@/app/features/Pages/Approve/Approve"; export default function ApprovePage() { return ( diff --git a/payment-iq/app/dashboard/layout.tsx b/payment-iq/app/dashboard/layout.tsx index 333b9d1..31835d6 100644 --- a/payment-iq/app/dashboard/layout.tsx +++ b/payment-iq/app/dashboard/layout.tsx @@ -1,16 +1,18 @@ -'use client'; +"use client"; -import React from 'react'; -import { LayoutWrapper } from '../components/dashboard/layout/layoutWrapper'; -import { MainContent } from '../components/dashboard/layout/mainContent'; -import SideBar from '../components/dashboard/sidebar/Sidebar'; -import Header from '../components/dashboard/header/Header'; +import React from "react"; +import { LayoutWrapper } from "../features/dashboard/layout/layoutWrapper"; +import { MainContent } from "../features/dashboard/layout/mainContent"; +import SideBar from "../features/dashboard/sidebar/Sidebar"; +import Header from "../features/dashboard/header/Header"; -const DashboardLayout: React.FC<{ children: React.ReactNode }> = ({ children }) => { +const DashboardLayout: React.FC<{ children: React.ReactNode }> = ({ + children, +}) => { return ( -
+
{children} diff --git a/payment-iq/app/dashboard/page.tsx b/payment-iq/app/dashboard/page.tsx index 37d5286..707967c 100644 --- a/payment-iq/app/dashboard/page.tsx +++ b/payment-iq/app/dashboard/page.tsx @@ -1,11 +1,9 @@ -'use client'; +"use client"; -import { DashboardHomePage } from "../components/Pages/DashboardHomePage/DashboardHomePage"; +import { DashboardHomePage } from "../features/Pages/DashboardHomePage/DashboardHomePage"; const DashboardPage = () => { - return ( - - ); + return ; }; export default DashboardPage; diff --git a/payment-iq/app/components/AccountIQ/AccountIQ.tsx b/payment-iq/app/features/AccountIQ/AccountIQ.tsx similarity index 100% rename from payment-iq/app/components/AccountIQ/AccountIQ.tsx rename to payment-iq/app/features/AccountIQ/AccountIQ.tsx diff --git a/payment-iq/app/components/DateRangePicker/DateRangePicker.tsx b/payment-iq/app/features/DateRangePicker/DateRangePicker.tsx similarity index 100% rename from payment-iq/app/components/DateRangePicker/DateRangePicker.tsx rename to payment-iq/app/features/DateRangePicker/DateRangePicker.tsx diff --git a/payment-iq/app/components/Documentation/Documentation.tsx b/payment-iq/app/features/Documentation/Documentation.tsx similarity index 100% rename from payment-iq/app/components/Documentation/Documentation.tsx rename to payment-iq/app/features/Documentation/Documentation.tsx diff --git a/payment-iq/app/components/FetchReports/FetchReports.tsx b/payment-iq/app/features/FetchReports/FetchReports.tsx similarity index 100% rename from payment-iq/app/components/FetchReports/FetchReports.tsx rename to payment-iq/app/features/FetchReports/FetchReports.tsx diff --git a/payment-iq/app/components/GeneralHealthCard/GeneralHealthCard.tsx b/payment-iq/app/features/GeneralHealthCard/GeneralHealthCard.tsx similarity index 100% rename from payment-iq/app/components/GeneralHealthCard/GeneralHealthCard.tsx rename to payment-iq/app/features/GeneralHealthCard/GeneralHealthCard.tsx diff --git a/payment-iq/app/components/Pages/Approve/Approve.tsx b/payment-iq/app/features/Pages/Approve/Approve.tsx similarity index 100% rename from payment-iq/app/components/Pages/Approve/Approve.tsx rename to payment-iq/app/features/Pages/Approve/Approve.tsx diff --git a/payment-iq/app/components/pages/DashboardHomePage/DashboardHomePage.tsx b/payment-iq/app/features/Pages/DashboardHomePage/DashboardHomePage.tsx similarity index 100% rename from payment-iq/app/components/pages/DashboardHomePage/DashboardHomePage.tsx rename to payment-iq/app/features/Pages/DashboardHomePage/DashboardHomePage.tsx diff --git a/payment-iq/app/components/pages/transactions/Transactions.tsx b/payment-iq/app/features/Pages/transactions/Transactions.tsx similarity index 100% rename from payment-iq/app/components/pages/transactions/Transactions.tsx rename to payment-iq/app/features/Pages/transactions/Transactions.tsx diff --git a/payment-iq/app/components/pages/transactions/constants.ts b/payment-iq/app/features/Pages/transactions/constants.ts similarity index 100% rename from payment-iq/app/components/pages/transactions/constants.ts rename to payment-iq/app/features/Pages/transactions/constants.ts diff --git a/payment-iq/app/components/pages/transactions/mockData.ts b/payment-iq/app/features/Pages/transactions/mockData.ts similarity index 100% rename from payment-iq/app/components/pages/transactions/mockData.ts rename to payment-iq/app/features/Pages/transactions/mockData.ts diff --git a/payment-iq/app/components/PieCharts/PieCharts.tsx b/payment-iq/app/features/PieCharts/PieCharts.tsx similarity index 100% rename from payment-iq/app/components/PieCharts/PieCharts.tsx rename to payment-iq/app/features/PieCharts/PieCharts.tsx diff --git a/payment-iq/app/components/SectionCard/SectionCard.tsx b/payment-iq/app/features/SectionCard/SectionCard.tsx similarity index 100% rename from payment-iq/app/components/SectionCard/SectionCard.tsx rename to payment-iq/app/features/SectionCard/SectionCard.tsx diff --git a/payment-iq/app/components/SectionCard/types.ts b/payment-iq/app/features/SectionCard/types.ts similarity index 100% rename from payment-iq/app/components/SectionCard/types.ts rename to payment-iq/app/features/SectionCard/types.ts diff --git a/payment-iq/app/components/TransactionsOverview/TransactionsOverViewTable.tsx b/payment-iq/app/features/TransactionsOverview/TransactionsOverViewTable.tsx similarity index 100% rename from payment-iq/app/components/TransactionsOverview/TransactionsOverViewTable.tsx rename to payment-iq/app/features/TransactionsOverview/TransactionsOverViewTable.tsx diff --git a/payment-iq/app/components/TransactionsOverview/TransactionsOverview.tsx b/payment-iq/app/features/TransactionsOverview/TransactionsOverview.tsx similarity index 100% rename from payment-iq/app/components/TransactionsOverview/TransactionsOverview.tsx rename to payment-iq/app/features/TransactionsOverview/TransactionsOverview.tsx diff --git a/payment-iq/app/components/TransactionsWaitingApproval/TransactionsWaitingApproval.tsx b/payment-iq/app/features/TransactionsWaitingApproval/TransactionsWaitingApproval.tsx similarity index 100% rename from payment-iq/app/components/TransactionsWaitingApproval/TransactionsWaitingApproval.tsx rename to payment-iq/app/features/TransactionsWaitingApproval/TransactionsWaitingApproval.tsx diff --git a/payment-iq/app/components/WhatsNew/WhatsNew.tsx b/payment-iq/app/features/WhatsNew/WhatsNew.tsx similarity index 100% rename from payment-iq/app/components/WhatsNew/WhatsNew.tsx rename to payment-iq/app/features/WhatsNew/WhatsNew.tsx diff --git a/payment-iq/app/components/dashboard/header/Header.tsx b/payment-iq/app/features/dashboard/header/Header.tsx similarity index 68% rename from payment-iq/app/components/dashboard/header/Header.tsx rename to payment-iq/app/features/dashboard/header/Header.tsx index 875a926..6c40362 100644 --- a/payment-iq/app/components/dashboard/header/Header.tsx +++ b/payment-iq/app/features/dashboard/header/Header.tsx @@ -1,7 +1,7 @@ -import React, { useState } from 'react'; -import { AppBar, Toolbar, IconButton, Menu, MenuItem, Button } from '@mui/material'; -import MenuIcon from '@mui/icons-material/Menu'; -import Dropdown from './DropDown'; +import React, { useState } from "react"; +import { AppBar, Toolbar, IconButton, Menu, MenuItem } from "@mui/material"; +import MenuIcon from "@mui/icons-material/Menu"; +import Dropdown from "./dropDown/DropDown"; const Header = () => { const [anchorEl, setAnchorEl] = useState(null); @@ -16,11 +16,15 @@ const Header = () => { setAnchorEl(null); }; - const handleChange = (e:any) => { - }; + const handleChange = (e: any) => {}; return ( - + {/* Burger Menu */} @@ -28,7 +32,7 @@ const Header = () => { {/* Dropdown Button */} - + {/* Dropdown Menu */} ({ + display: "flex", + alignItems: "center", + opacity: 0.7, + fontStyle: "normal", +})); diff --git a/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx b/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx new file mode 100644 index 0000000..adb6138 --- /dev/null +++ b/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx @@ -0,0 +1,60 @@ +import React from "react"; +import { + FormControl, + InputLabel, + Select, + MenuItem, + SelectChangeEvent, +} from "@mui/material"; +import ChevronRightIcon from "@mui/icons-material/ChevronRight"; +import { SIDEBAR_LINKS } from "@/constants/SidebarLink.constants"; +import { ISidebarLink } from "@/interfaces/SidebarLink.interfaces"; +import { Em } from "./DropDown.styled"; +import PageLinks from "../../../../components/PageLinks/PageLinks"; + +interface Props { + onChange?: (event: SelectChangeEvent) => void; +} + +export default function SidebarDropdown({ onChange }: Props) { + const [value, setValue] = React.useState(""); + + const handleChange = (event: SelectChangeEvent) => { + setValue(event.target.value); + onChange?.(event); + }; + + return ( + + Navigate To + + + ); +} diff --git a/payment-iq/app/components/dashboard/layout/layoutWrapper.ts b/payment-iq/app/features/dashboard/layout/layoutWrapper.ts similarity index 100% rename from payment-iq/app/components/dashboard/layout/layoutWrapper.ts rename to payment-iq/app/features/dashboard/layout/layoutWrapper.ts diff --git a/payment-iq/app/components/dashboard/layout/mainContent.ts b/payment-iq/app/features/dashboard/layout/mainContent.ts similarity index 100% rename from payment-iq/app/components/dashboard/layout/mainContent.ts rename to payment-iq/app/features/dashboard/layout/mainContent.ts diff --git a/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx b/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx new file mode 100644 index 0000000..11fcd40 --- /dev/null +++ b/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx @@ -0,0 +1,57 @@ +"use client"; + +import React from "react"; +import DashboardIcon from "@mui/icons-material/Dashboard"; +import { styled } from "@mui/system"; +import { SIDEBAR_LINKS } from "@/constants/SidebarLink.constants"; +import PageLinks from "../../../components/PageLinks/PageLinks"; + +const SideBarContainer = styled("aside")(({ theme }) => ({ + position: "fixed", + top: 0, + left: 0, + width: 240, + height: "100vh", + backgroundColor: theme.palette.background.primary, + color: theme.palette.text.primary, + display: "flex", + flexDirection: "column", + padding: theme.spacing(2), + zIndex: 1100, + borderRight: `1px solid ${theme.palette.divider}`, +})); + +const SidebarHeader = styled("div")(({ theme }) => ({ + fontSize: "20px", + fontWeight: 600, + marginBottom: theme.spacing(3), + display: "flex", + alignItems: "center", + color: theme.palette.text.primary, +})); + +const IconSpacing = styled(DashboardIcon)(({ theme }) => ({ + marginLeft: theme.spacing(1), +})); + +const SideBar = () => { + return ( + + + + Betrise cashir + + + {SIDEBAR_LINKS.map((link) => ( + + ))} + + ); +}; + +export default SideBar; diff --git a/payment-iq/app/components/dashboard/sidebar/SideBarLink.tsx b/payment-iq/app/features/sidebar/SideBarLink.tsx similarity index 100% rename from payment-iq/app/components/dashboard/sidebar/SideBarLink.tsx rename to payment-iq/app/features/sidebar/SideBarLink.tsx diff --git a/payment-iq/app/components/sidebar/SidebarLayout.tsx b/payment-iq/app/features/sidebar/SidebarLayout.tsx similarity index 100% rename from payment-iq/app/components/sidebar/SidebarLayout.tsx rename to payment-iq/app/features/sidebar/SidebarLayout.tsx diff --git a/payment-iq/constants/SidebarLink.constants.ts b/payment-iq/constants/SidebarLink.constants.ts index d30dacd..2fadf07 100644 --- a/payment-iq/constants/SidebarLink.constants.ts +++ b/payment-iq/constants/SidebarLink.constants.ts @@ -1,33 +1,32 @@ -import HomeIcon from '@mui/icons-material/Home'; -import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet'; -import CheckCircleIcon from '@mui/icons-material/CheckCircle'; -import SearchIcon from '@mui/icons-material/Search'; -import VerifiedUserIcon from '@mui/icons-material/VerifiedUser'; -import PeopleIcon from '@mui/icons-material/People'; -import BarChartIcon from '@mui/icons-material/BarChart'; -import GavelIcon from '@mui/icons-material/Gavel'; -import HubIcon from '@mui/icons-material/Hub'; -import AdminPanelSettingsIcon from '@mui/icons-material/AdminPanelSettings'; -import InsightsIcon from '@mui/icons-material/Insights'; -import DescriptionIcon from '@mui/icons-material/Description'; -import SupportAgentIcon from '@mui/icons-material/SupportAgent'; -import WarningAmberIcon from '@mui/icons-material/WarningAmber'; -import { ISidebarLink } from '@/interfaces/SidebarLink.interfaces'; - +import HomeIcon from "@mui/icons-material/Home"; +import AccountBalanceWalletIcon from "@mui/icons-material/AccountBalanceWallet"; +import CheckCircleIcon from "@mui/icons-material/CheckCircle"; +import SearchIcon from "@mui/icons-material/Search"; +import VerifiedUserIcon from "@mui/icons-material/VerifiedUser"; +import PeopleIcon from "@mui/icons-material/People"; +import GavelIcon from "@mui/icons-material/Gavel"; +import HubIcon from "@mui/icons-material/Hub"; +import AdminPanelSettingsIcon from "@mui/icons-material/AdminPanelSettings"; +import InsightsIcon from "@mui/icons-material/Insights"; +import { ISidebarLink } from "@/interfaces/SidebarLink.interfaces"; 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: '/dashboard/investigate', icon: SearchIcon }, - { title: 'KYC', path: '/kyc', icon: VerifiedUserIcon }, - { title: 'User Accounts', path: '/user-accounts', icon: PeopleIcon }, - { title: 'Analytics', path: '/analytics', icon: BarChartIcon }, - { title: 'Rules', path: '/rules', icon: GavelIcon }, - { title: 'Rules Hub', path: '/rules-hub', icon: HubIcon }, - { title: 'Admin', path: '/admin', icon: AdminPanelSettingsIcon }, - { title: 'Account IQ', path: '/account-iq', icon: InsightsIcon }, - { title: 'Documentation', path: '/documentation', icon: DescriptionIcon }, - { title: 'Support', path: '/support', icon: SupportAgentIcon }, - { title: 'System Status', path: '/system-status', icon: WarningAmberIcon }, + { title: "Home", path: "/dashboard", icon: HomeIcon }, + { + title: "Transaction", + path: "/dashboard/transactions", + icon: AccountBalanceWalletIcon, + }, + { title: "Approve", path: "/dashboard/approve", icon: CheckCircleIcon }, + { 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 }, + { title: "Rules", path: "/rules", icon: GavelIcon }, + { title: "Rules Hub", path: "/rules-hub", icon: HubIcon }, + { title: "Admin", path: "/admin", icon: AdminPanelSettingsIcon }, + { title: "Account IQ", path: "/account-iq", icon: InsightsIcon }, + // { title: 'Documentation', path: '/documentation', icon: DescriptionIcon }, + // { title: 'Support', path: '/support', icon: SupportAgentIcon }, + // { title: 'System Status', path: '/system-status', icon: WarningAmberIcon }, ]; diff --git a/payment-iq/yarn.lock b/payment-iq/yarn.lock index cf6b981..691cc21 100644 --- a/payment-iq/yarn.lock +++ b/payment-iq/yarn.lock @@ -82,6 +82,28 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" +"@emnapi/core@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6" + integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g== + dependencies: + "@emnapi/wasi-threads" "1.0.2" + tslib "^2.4.0" + +"@emnapi/runtime@^1.4.3": + version "1.4.3" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d" + integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ== + dependencies: + tslib "^2.4.0" + +"@emnapi/wasi-threads@1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c" + integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA== + dependencies: + tslib "^2.4.0" + "@emotion/babel-plugin@^11.13.5": version "11.13.5" resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz" @@ -127,7 +149,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.14.0", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0", "@emotion/react@^11.9.0": +"@emotion/react@^11.14.0": version "11.14.0" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz" integrity sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA== @@ -157,7 +179,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.14.0", "@emotion/styled@^11.3.0", "@emotion/styled@^11.8.1": +"@emotion/styled@^11.14.0": version "11.14.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz" integrity sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA== @@ -297,11 +319,122 @@ optionalDependencies: "@img/sharp-libvips-darwin-arm64" "1.1.0" +"@img/sharp-darwin-x64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz#d37ff7c75c46d5a68a3756e3f1924ef7ca7b285e" + integrity sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.1.0" + "@img/sharp-libvips-darwin-arm64@1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz" integrity sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA== +"@img/sharp-libvips-darwin-x64@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz#1239c24426c06a8e833815562f78047a3bfbaaf8" + integrity sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ== + +"@img/sharp-libvips-linux-arm64@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz#20d276cefd903ee483f0441ba35961679c286315" + integrity sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew== + +"@img/sharp-libvips-linux-arm@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz#067c0b566eae8063738cf1b1db8f8a8573b5465c" + integrity sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA== + +"@img/sharp-libvips-linux-ppc64@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz#682334595f2ca00e0a07a675ba170af165162802" + integrity sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ== + +"@img/sharp-libvips-linux-s390x@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz#82fcd68444b3666384235279c145c2b28d8ee302" + integrity sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA== + +"@img/sharp-libvips-linux-x64@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz#65b2b908bf47156b0724fde9095676c83a18cf5a" + integrity sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q== + +"@img/sharp-libvips-linuxmusl-arm64@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz#72accf924e80b081c8db83b900b444a67c203f01" + integrity sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w== + +"@img/sharp-libvips-linuxmusl-x64@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz#1fa052737e203f46bf44192acd01f9faf11522d7" + integrity sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A== + +"@img/sharp-linux-arm64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz#c9690fac5f3137eaab3f7ad6065390d10f66f1fa" + integrity sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.1.0" + +"@img/sharp-linux-arm@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz#771dd2ec645f85f98441359bfc118afaf38cbd8b" + integrity sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.1.0" + +"@img/sharp-linux-s390x@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz#82132d158abff57bd90b53574f2865f72f94e6c8" + integrity sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.1.0" + +"@img/sharp-linux-x64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz#d815fb87899d462b28b62a9252ad127f02fe0740" + integrity sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.1.0" + +"@img/sharp-linuxmusl-arm64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz#cfac45b2abbc04628f676e123bfe3aeb300266c7" + integrity sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.1.0" + +"@img/sharp-linuxmusl-x64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz#b876c23ff51d0fb6d9f3b0a07e2f4d1436c203ad" + integrity sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.1.0" + +"@img/sharp-wasm32@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz#b1dd0bab547dccf517586eb1fa5852160bba3b82" + integrity sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ== + dependencies: + "@emnapi/runtime" "^1.4.3" + +"@img/sharp-win32-arm64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz#f37bee0f60c167f825a09d2b8de6849b823e8b30" + integrity sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ== + +"@img/sharp-win32-ia32@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz#8fc30b6655bc6ff8910344a2020d334aa6361672" + integrity sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw== + +"@img/sharp-win32-x64@0.34.2": + version "0.34.2" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz#ecf19250f8fe35de684aa2b0ec6f773b3447247b" + integrity sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw== + "@jridgewell/gen-mapping@^0.3.5": version "0.3.8" resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz" @@ -346,7 +479,7 @@ dependencies: "@babel/runtime" "^7.27.1" -"@mui/material@^5.15.14 || ^6.0.0 || ^7.0.0", "@mui/material@^7.1.2": +"@mui/material@^7.1.2": version "7.1.2" resolved "https://registry.npmjs.org/@mui/material/-/material-7.1.2.tgz" integrity sha512-Z5PYKkA6Kd8vS04zKxJNpwuvt6IoMwqpbidV7RCrRQQKwczIwcNcS8L6GnN4pzFYfEs+N9v6co27DmG07rcnoA== @@ -385,7 +518,7 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/system@^5.15.14 || ^6.0.0 || ^7.0.0", "@mui/system@^7.1.1": +"@mui/system@^7.1.1": version "7.1.1" resolved "https://registry.npmjs.org/@mui/system/-/system-7.1.1.tgz" integrity sha512-Kj1uhiqnj4Zo7PDjAOghtXJtNABunWvhcRU0O7RQJ7WOxeynoH6wXPcilphV8QTFtkKaip8EiNJRiCD+B3eROA== @@ -452,6 +585,15 @@ "@mui/utils" "^7.1.1" reselect "^5.1.1" +"@napi-rs/wasm-runtime@^0.2.11": + version "0.2.11" + resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz#192c1610e1625048089ab4e35bc0649ce478500e" + integrity sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA== + dependencies: + "@emnapi/core" "^1.4.3" + "@emnapi/runtime" "^1.4.3" + "@tybys/wasm-util" "^0.9.0" + "@next/env@15.3.3": version "15.3.3" resolved "https://registry.npmjs.org/@next/env/-/env-15.3.3.tgz" @@ -469,6 +611,41 @@ resolved "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.3.tgz" integrity sha512-WRJERLuH+O3oYB4yZNVahSVFmtxRNjNF1I1c34tYMoJb0Pve+7/RaLAJJizyYiFhjYNGHRAE1Ri2Fd23zgDqhg== +"@next/swc-darwin-x64@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.3.tgz#71588bad245180ffd1af1e1f894477287e739eb0" + integrity sha512-XHdzH/yBc55lu78k/XwtuFR/ZXUTcflpRXcsu0nKmF45U96jt1tsOZhVrn5YH+paw66zOANpOnFQ9i6/j+UYvw== + +"@next/swc-linux-arm64-gnu@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.3.tgz#66a15f749c14f04a89f8c7e21c7a8d343fc34e6e" + integrity sha512-VZ3sYL2LXB8znNGcjhocikEkag/8xiLgnvQts41tq6i+wql63SMS1Q6N8RVXHw5pEUjiof+II3HkDd7GFcgkzw== + +"@next/swc-linux-arm64-musl@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.3.tgz#14bd66213f7f33d6909574750bcb05037221a2ac" + integrity sha512-h6Y1fLU4RWAp1HPNJWDYBQ+e3G7sLckyBXhmH9ajn8l/RSMnhbuPBV/fXmy3muMcVwoJdHL+UtzRzs0nXOf9SA== + +"@next/swc-linux-x64-gnu@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.3.tgz#4a19434545e5e752d9a3ed71f9b34982725f6293" + integrity sha512-jJ8HRiF3N8Zw6hGlytCj5BiHyG/K+fnTKVDEKvUCyiQ/0r5tgwO7OgaRiOjjRoIx2vwLR+Rz8hQoPrnmFbJdfw== + +"@next/swc-linux-x64-musl@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.3.tgz#41ab140dd0a04ab7291adbec5836c1ce251a588c" + integrity sha512-HrUcTr4N+RgiiGn3jjeT6Oo208UT/7BuTr7K0mdKRBtTbT4v9zJqCDKO97DUqqoBK1qyzP1RwvrWTvU6EPh/Cw== + +"@next/swc-win32-arm64-msvc@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.3.tgz#fcd1d7e0007b7b73d1acdbf0ad6d91f7aa2deb15" + integrity sha512-SxorONgi6K7ZUysMtRF3mIeHC5aA3IQLmKFQzU0OuhuUYwpOBc1ypaLJLP5Bf3M9k53KUUUj4vTPwzGvl/NwlQ== + +"@next/swc-win32-x64-msvc@15.3.3": + version "15.3.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.3.tgz#c0e33e069d7922dd0546cac77a0247ad81d4a1aa" + integrity sha512-4QZG6F8enl9/S2+yIiOiju0iCTFd93d8VC1q9LZS4p/Xuk81W2QDjCFeoogmrWWkAD59z8ZxepBQap2dKS5ruw== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" @@ -477,7 +654,7 @@ "@nodelib/fs.stat" "2.0.5" run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": version "2.0.5" resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== @@ -522,6 +699,13 @@ dependencies: tslib "^2.8.0" +"@tybys/wasm-util@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355" + integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw== + dependencies: + tslib "^2.4.0" + "@types/d3-array@^3.0.3": version "3.2.1" resolved "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz" @@ -628,7 +812,7 @@ resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz" integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== -"@types/react@*", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^19", "@types/react@^19.0.0": +"@types/react@*", "@types/react@^19": version "19.1.8" resolved "https://registry.npmjs.org/@types/react/-/react-19.1.8.tgz" integrity sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g== @@ -650,7 +834,7 @@ natural-compare "^1.4.0" ts-api-utils "^2.1.0" -"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser@^8.34.1": +"@typescript-eslint/parser@^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0": version "8.34.1" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.34.1.tgz" integrity sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA== @@ -678,7 +862,7 @@ "@typescript-eslint/types" "8.34.1" "@typescript-eslint/visitor-keys" "8.34.1" -"@typescript-eslint/tsconfig-utils@^8.34.1", "@typescript-eslint/tsconfig-utils@8.34.1": +"@typescript-eslint/tsconfig-utils@8.34.1", "@typescript-eslint/tsconfig-utils@^8.34.1": version "8.34.1" resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz" integrity sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg== @@ -693,7 +877,7 @@ debug "^4.3.4" ts-api-utils "^2.1.0" -"@typescript-eslint/types@^8.34.1", "@typescript-eslint/types@8.34.1": +"@typescript-eslint/types@8.34.1", "@typescript-eslint/types@^8.34.1": version "8.34.1" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz" integrity sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA== @@ -732,17 +916,109 @@ "@typescript-eslint/types" "8.34.1" eslint-visitor-keys "^4.2.1" +"@unrs/resolver-binding-android-arm-eabi@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.0.tgz#e91317973356eb845c9186db5f9ec43e8d0002eb" + integrity sha512-h1T2c2Di49ekF2TE8ZCoJkb+jwETKUIPDJ/nO3tJBKlLFPu+fyd93f0rGP/BvArKx2k2HlRM4kqkNarj3dvZlg== + +"@unrs/resolver-binding-android-arm64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.0.tgz#fbdd79b2a8e478e02e1c0751dfbc100017522161" + integrity sha512-sG1NHtgXtX8owEkJ11yn34vt0Xqzi3k9TJ8zppDmyG8GZV4kVWw44FHwKwHeEFl07uKPeC4ZoyuQaGh5ruJYPA== + "@unrs/resolver-binding-darwin-arm64@1.9.0": version "1.9.0" resolved "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.0.tgz" integrity sha512-nJ9z47kfFnCxN1z/oYZS7HSNsFh43y2asePzTEZpEvK7kGyuShSl3RRXnm/1QaqFL+iP+BjMwuB+DYUymOkA5A== +"@unrs/resolver-binding-darwin-x64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.0.tgz#4a205940ec311ac8396c3f25043644b78cc98a20" + integrity sha512-TK+UA1TTa0qS53rjWn7cVlEKVGz2B6JYe0C++TdQjvWYIyx83ruwh0wd4LRxYBM5HeuAzXcylA9BH2trARXJTw== + +"@unrs/resolver-binding-freebsd-x64@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.0.tgz#ed82e000f7248011696ecc8894f574caa197b0be" + integrity sha512-6uZwzMRFcD7CcCd0vz3Hp+9qIL2jseE/bx3ZjaLwn8t714nYGwiE84WpaMCYjU+IQET8Vu/+BNAGtYD7BG/0yA== + +"@unrs/resolver-binding-linux-arm-gnueabihf@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.0.tgz#534a8b32118590f7fb9edd21c6576243a89a8aad" + integrity sha512-bPUBksQfrgcfv2+mm+AZinaKq8LCFvt5PThYqRotqSuuZK1TVKkhbVMS/jvSRfYl7jr3AoZLYbDkItxgqMKRkg== + +"@unrs/resolver-binding-linux-arm-musleabihf@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.0.tgz#b31718752e77cecbbcf7ba1e01dea97c1a5ee7e0" + integrity sha512-uT6E7UBIrTdCsFQ+y0tQd3g5oudmrS/hds5pbU3h4s2t/1vsGWbbSKhBSCD9mcqaqkBwoqlECpUrRJCmldl8PA== + +"@unrs/resolver-binding-linux-arm64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.0.tgz#0f11ba195020cfa869533fb74733d68162349d14" + integrity sha512-vdqBh911wc5awE2bX2zx3eflbyv8U9xbE/jVKAm425eRoOVv/VseGZsqi3A3SykckSpF4wSROkbQPvbQFn8EsA== + +"@unrs/resolver-binding-linux-arm64-musl@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.0.tgz#8b6bc086cf9efaa22e8f2fef381786d6636b8e19" + integrity sha512-/8JFZ/SnuDr1lLEVsxsuVwrsGquTvT51RZGvyDB/dOK3oYK2UqeXzgeyq6Otp8FZXQcEYqJwxb9v+gtdXn03eQ== + +"@unrs/resolver-binding-linux-ppc64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.0.tgz#5cd15899af31c2bbf90bfca5f798f64a16770e23" + integrity sha512-FkJjybtrl+rajTw4loI3L6YqSOpeZfDls4SstL/5lsP2bka9TiHUjgMBjygeZEis1oC8LfJTS8FSgpKPaQx2tQ== + +"@unrs/resolver-binding-linux-riscv64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.0.tgz#4f2c75af52437eb10b48ea5b72750fb65fb174be" + integrity sha512-w/NZfHNeDusbqSZ8r/hp8iL4S39h4+vQMc9/vvzuIKMWKppyUGKm3IST0Qv0aOZ1rzIbl9SrDeIqK86ZpUK37w== + +"@unrs/resolver-binding-linux-riscv64-musl@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.0.tgz#6a87e82e0dd39d34ff37ddba6accf73cdb396e86" + integrity sha512-bEPBosut8/8KQbUixPry8zg/fOzVOWyvwzOfz0C0Rw6dp+wIBseyiHKjkcSyZKv/98edrbMknBaMNJfA/UEdqw== + +"@unrs/resolver-binding-linux-s390x-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.0.tgz#6524cc3c01309022de86c4a7317fe7d9f9fb855c" + integrity sha512-LDtMT7moE3gK753gG4pc31AAqGUC86j3AplaFusc717EUGF9ZFJ356sdQzzZzkBk1XzMdxFyZ4f/i35NKM/lFA== + +"@unrs/resolver-binding-linux-x64-gnu@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.0.tgz#85fb8a45dccf3823cd73ea4b61b2c3f2e8ab6653" + integrity sha512-WmFd5KINHIXj8o1mPaT8QRjA9HgSXhN1gl9Da4IZihARihEnOylu4co7i/yeaIpcfsI6sYs33cNZKyHYDh0lrA== + +"@unrs/resolver-binding-linux-x64-musl@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.0.tgz#235e539da5872df51c03e0e050a1c715e25044ca" + integrity sha512-CYuXbANW+WgzVRIl8/QvZmDaZxrqvOldOwlbUjIM4pQ46FJ0W5cinJ/Ghwa/Ng1ZPMJMk1VFdsD/XwmCGIXBWg== + +"@unrs/resolver-binding-wasm32-wasi@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.0.tgz#1bc614ce2ba61330c16bffa1e50f41d95d25c0a6" + integrity sha512-6Rp2WH0OoitMYR57Z6VE8Y6corX8C6QEMWLgOV6qXiJIeZ1F9WGXY/yQ8yDC4iTraotyLOeJ2Asea0urWj2fKQ== + dependencies: + "@napi-rs/wasm-runtime" "^0.2.11" + +"@unrs/resolver-binding-win32-arm64-msvc@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.0.tgz#0d8704275a9f2634d81b35d8a00a2f4bd8dec7fa" + integrity sha512-rknkrTRuvujprrbPmGeHi8wYWxmNVlBoNW8+4XF2hXUnASOjmuC9FNF1tGbDiRQWn264q9U/oGtixyO3BT8adQ== + +"@unrs/resolver-binding-win32-ia32-msvc@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.0.tgz#46909cbeb9a38b3f31a64833fe03aa1aebb8da2b" + integrity sha512-Ceymm+iBl+bgAICtgiHyMLz6hjxmLJKqBim8tDzpX61wpZOx2bPK6Gjuor7I2RiUynVjvvkoRIkrPyMwzBzF3A== + +"@unrs/resolver-binding-win32-x64-msvc@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.0.tgz#708b957d5d66543c45240b4c6b45ee63ed59b6b7" + integrity sha512-k59o9ZyeyS0hAlcaKFezYSH2agQeRFEB7KoQLXl3Nb3rgkqT1NY9Vwy+SqODiLmYnEjxWJVRE/yq2jFVqdIxZw== + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.15.0: +acorn@^8.15.0: version "8.15.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== @@ -1080,7 +1356,7 @@ csstype@^3.0.2, csstype@^3.1.3: resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d3-array@^3.1.6, "d3-array@2 - 3", "d3-array@2.10.0 - 3": +"d3-array@2 - 3", "d3-array@2.10.0 - 3", d3-array@^3.1.6: version "3.2.4" resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== @@ -1102,7 +1378,7 @@ d3-ease@^3.0.1: resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== -d3-interpolate@^3.0.1, "d3-interpolate@1.2.0 - 3": +"d3-interpolate@1.2.0 - 3", d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -1139,7 +1415,7 @@ d3-shape@^3.1.0: dependencies: d3-time "1 - 3" -d3-time@^3.0.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3": +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== @@ -1190,12 +1466,12 @@ date-fns@^2.16.1: dependencies: "@babel/runtime" "^7.21.0" -"date-fns@^2.25.0 || ^3.2.0 || ^4.0.0", date-fns@^4.1.0, "date-fns@3.0.6 || >=3.0.0": +date-fns@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz" integrity sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg== -dayjs@^1.10.7, dayjs@^1.11.13: +dayjs@^1.11.13: version "1.11.13" resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz" integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== @@ -1458,7 +1734,7 @@ eslint-module-utils@^2.12.0: dependencies: debug "^3.2.7" -eslint-plugin-import@*, eslint-plugin-import@^2.31.0: +eslint-plugin-import@^2.31.0: version "2.31.0" resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz" integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== @@ -1551,7 +1827,7 @@ eslint-visitor-keys@^4.2.1: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz" integrity sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ== -eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.23.0 || ^8.0.0 || ^9.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9: +eslint@^9: version "9.29.0" resolved "https://registry.npmjs.org/eslint/-/eslint-9.29.0.tgz" integrity sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ== @@ -1640,17 +1916,6 @@ fast-equals@^5.0.1: resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz" integrity sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw== -fast-glob@^3.3.2: - version "3.3.3" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" - integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.8" - fast-glob@3.3.1: version "3.3.1" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz" @@ -1662,6 +1927,17 @@ fast-glob@3.3.1: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.2: + version "3.3.3" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" @@ -2491,7 +2767,7 @@ picomatch@^2.3.1: resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -"picomatch@^3 || ^4", picomatch@^4.0.2: +picomatch@^4.0.2: version "4.0.2" resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== @@ -2544,7 +2820,7 @@ react-date-range@^2.0.1: react-list "^0.8.13" shallow-equal "^1.2.1" -"react-dom@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react-dom@^19.0.0, react-dom@>=16.6.0: +react-dom@^19.0.0: version "19.1.0" resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz" integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g== @@ -2590,7 +2866,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -"react@^0.14 || ^15.0.0-rc || >=15.0", "react@^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", react@^19.0.0, react@^19.1.0, "react@>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0", react@>=16.6.0, react@>=16.8.0, "react@0.14 || 15 - 19": +react@^19.0.0: version "19.1.0" resolved "https://registry.npmjs.org/react/-/react-19.1.0.tgz" integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg== @@ -3085,7 +3361,7 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript@^5, typescript@>=3.3.1, typescript@>=4.8.4, "typescript@>=4.8.4 <5.9.0": +typescript@^5: version "5.8.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz" integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== From c4692e22228048b47cea338be745eceefcac56fb Mon Sep 17 00:00:00 2001 From: Mitchell Magro Date: Sun, 29 Jun 2025 08:49:58 +0200 Subject: [PATCH 2/2] Fixed a bunch of stuff --- .../app/components/PageLinks/PageLinks.tsx | 2 +- payment-iq/app/dashboard/loading.tsx | 20 ++ .../app/dashboard/transactions/page.tsx | 8 +- .../GeneralHealthCard/GeneralHealthCard.tsx | 5 +- .../Pages/transactions/Transactions.tsx | 209 ++++++++++-------- .../app/features/SectionCard/SectionCard.tsx | 2 +- .../TransactionsOverViewTable.tsx | 4 +- .../TransactionsWaitingApproval.tsx | 4 +- .../header/dropDown/DropDown.styled.ts | 1 + .../dashboard/header/dropDown/DropDown.tsx | 5 +- .../dashboard/layout/layoutWrapper.ts | 11 +- .../features/dashboard/sidebar/Sidebar.tsx | 2 +- .../sidebar}/SidebarLink.constants.ts | 2 +- .../sidebar}/SidebarLink.interfaces.ts | 0 .../app/features/sidebar/SideBarLink.tsx | 41 ---- .../app/features/sidebar/SidebarLayout.tsx | 73 ------ payment-iq/app/utils/defineStyles.ts | 11 + payment-iq/config/ThemeRegistry.tsx | 13 +- 18 files changed, 177 insertions(+), 236 deletions(-) create mode 100644 payment-iq/app/dashboard/loading.tsx rename payment-iq/{constants => app/features/dashboard/sidebar}/SidebarLink.constants.ts (94%) rename payment-iq/{interfaces => app/features/dashboard/sidebar}/SidebarLink.interfaces.ts (100%) delete mode 100644 payment-iq/app/features/sidebar/SideBarLink.tsx delete mode 100644 payment-iq/app/features/sidebar/SidebarLayout.tsx create mode 100644 payment-iq/app/utils/defineStyles.ts diff --git a/payment-iq/app/components/PageLinks/PageLinks.tsx b/payment-iq/app/components/PageLinks/PageLinks.tsx index 12962d8..4f8f670 100644 --- a/payment-iq/app/components/PageLinks/PageLinks.tsx +++ b/payment-iq/app/components/PageLinks/PageLinks.tsx @@ -2,7 +2,7 @@ import Link from "next/link"; import { styled } from "@mui/system"; -import { ISidebarLink } from "@/interfaces/SidebarLink.interfaces"; +import { ISidebarLink } from "@/app/features/dashboard/sidebar/SidebarLink.interfaces"; const LinkContainer = styled("div")(({ theme }) => ({ display: "flex", diff --git a/payment-iq/app/dashboard/loading.tsx b/payment-iq/app/dashboard/loading.tsx new file mode 100644 index 0000000..eab1584 --- /dev/null +++ b/payment-iq/app/dashboard/loading.tsx @@ -0,0 +1,20 @@ +// app/dashboard/loading.tsx +"use client"; + +import CircularProgress from "@mui/material/CircularProgress"; +import { styled } from "@mui/system"; + +const LoaderWrapper = styled("div")({ + height: "100vh", + display: "flex", + alignItems: "center", + justifyContent: "center", +}); + +export default function Loading() { + return ( + + + + ); +} diff --git a/payment-iq/app/dashboard/transactions/page.tsx b/payment-iq/app/dashboard/transactions/page.tsx index 796f0c0..cd6af40 100644 --- a/payment-iq/app/dashboard/transactions/page.tsx +++ b/payment-iq/app/dashboard/transactions/page.tsx @@ -1,13 +1,13 @@ // This ensures this component is rendered only on the client side -'use client'; +"use client"; -import TransactionTable from '@/app/components/Pages/Transactions/Transactions'; +import TransactionTable from "@/app/features/Pages/transactions/Transactions"; export default function TransactionPage() { return ( -
+
{/* This page will now be rendered on the client-side */}
); -} \ No newline at end of file +} diff --git a/payment-iq/app/features/GeneralHealthCard/GeneralHealthCard.tsx b/payment-iq/app/features/GeneralHealthCard/GeneralHealthCard.tsx index fc9a446..df4778c 100644 --- a/payment-iq/app/features/GeneralHealthCard/GeneralHealthCard.tsx +++ b/payment-iq/app/features/GeneralHealthCard/GeneralHealthCard.tsx @@ -3,7 +3,6 @@ import MoreVertIcon from "@mui/icons-material/MoreVert"; import CalendarTodayIcon from "@mui/icons-material/CalendarToday"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; import { DateRangePicker } from "../DateRangePicker/DateRangePicker"; -// import { ArrowDropUp } from '@mui/icons-material'; const stats = [ { label: "TOTAL", value: 5, change: "-84.85%" }, @@ -63,8 +62,8 @@ export const GeneralHealthCard = () => { - {stats.map((item) => ( - + {stats.map((item, i) => ( + ))} diff --git a/payment-iq/app/features/Pages/transactions/Transactions.tsx b/payment-iq/app/features/Pages/transactions/Transactions.tsx index 43ad416..58f7deb 100644 --- a/payment-iq/app/features/Pages/transactions/Transactions.tsx +++ b/payment-iq/app/features/Pages/transactions/Transactions.tsx @@ -1,110 +1,131 @@ -'use client'; -import { useState } from 'react'; +"use client"; +import { useState } from "react"; import { - Button, Dialog, DialogTitle, DialogContent, DialogActions, - FormControl, Select, MenuItem, FormControlLabel, Checkbox, - Stack, Paper, styled, - TextField -} from '@mui/material'; -import FileUploadIcon from '@mui/icons-material/FileUpload'; -import * as XLSX from 'xlsx'; -import { saveAs } from 'file-saver'; -import { DataGrid } from '@mui/x-data-grid'; -import { columns } from './constants'; -import { rows } from './mockData'; + Button, + Dialog, + DialogTitle, + DialogContent, + DialogActions, + FormControl, + Select, + MenuItem, + FormControlLabel, + Checkbox, + Stack, + Paper, + styled, + TextField, +} from "@mui/material"; +import FileUploadIcon from "@mui/icons-material/FileUpload"; +import * as XLSX from "xlsx"; +import { saveAs } from "file-saver"; +import { DataGrid } from "@mui/x-data-grid"; +import { columns } from "./constants"; +import { rows } from "./mockData"; const paginationModel = { page: 0, pageSize: 50 }; export default function TransactionTable() { - const [open, setOpen] = useState(false); - const [fileType, setFileType] = useState<'csv' | 'xls' | 'xlsx'>('csv'); - const [onlyCurrentTable, setOnlyCurrentTable] = useState(false); + const [open, setOpen] = useState(false); + const [fileType, setFileType] = useState<"csv" | "xls" | "xlsx">("csv"); + const [onlyCurrentTable, setOnlyCurrentTable] = useState(false); - const handleExport = () => { - const exportRows = onlyCurrentTable ? rows.slice(0, 5) : rows; - const exportData = [ - columns.map(col => col.headerName), - // @ts-expect-error - Dynamic field access from DataGrid columns - ...exportRows.map(row => columns.map(col => row[col.field] ?? '')), - ]; + const handleExport = () => { + const exportRows = onlyCurrentTable ? rows.slice(0, 5) : rows; + const exportData = [ + columns.map((col) => col.headerName), + // @ts-expect-error - Dynamic field access from DataGrid columns + ...exportRows.map((row) => columns.map((col) => row[col.field] ?? "")), + ]; - const worksheet = XLSX.utils.aoa_to_sheet(exportData); - const workbook = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(workbook, worksheet, 'Transactions'); + const worksheet = XLSX.utils.aoa_to_sheet(exportData); + const workbook = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(workbook, worksheet, "Transactions"); - if (fileType === 'csv') { - const csv = XLSX.utils.sheet_to_csv(worksheet); - const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' }); - saveAs(blob, 'transactions.csv'); - } else { - XLSX.writeFile(workbook, `transactions.${fileType}`, { bookType: fileType }); - } + if (fileType === "csv") { + const csv = XLSX.utils.sheet_to_csv(worksheet); + const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" }); + saveAs(blob, "transactions.csv"); + } else { + XLSX.writeFile(workbook, `transactions.${fileType}`, { + bookType: fileType, + }); + } - setOpen(false); - }; + setOpen(false); + }; - return ( - - - console.log(`setSearchQuery(${e.target.value})`)} - sx={{ width: 300 }} - /> - - + return ( + + + console.log(`setSearchQuery(${e.target.value})`)} + sx={{ width: 300 }} + /> + + - + - {/* Export Dialog */} - setOpen(false)}> - Export Transactions - - - - - setOnlyCurrentTable(e.target.checked)} - /> - } - label="Only export the results in the current table" - sx={{ mt: 2 }} - /> - - - - - - - - ); + {/* Export Dialog */} + setOpen(false)}> + Export Transactions + + + + + setOnlyCurrentTable(e.target.checked)} + /> + } + label="Only export the results in the current table" + sx={{ mt: 2 }} + /> + + + + + + + + ); } const StyledPaper = styled(Paper)(() => ({ - height: '90vh', + height: "90vh", })); diff --git a/payment-iq/app/features/SectionCard/SectionCard.tsx b/payment-iq/app/features/SectionCard/SectionCard.tsx index 7e08dda..add14c1 100644 --- a/payment-iq/app/features/SectionCard/SectionCard.tsx +++ b/payment-iq/app/features/SectionCard/SectionCard.tsx @@ -35,7 +35,7 @@ export const SectionCard = ({ title, icon, items }: ISectionCardProps) => ( {items.map((item, index) => ( - + { - {data1.map((row) => ( - + {data1.map((row, i) => ( + { - {transactions.map((tx) => ( - + {transactions.map((tx, i) => ( + {tx.id} {tx.user} {tx.created} diff --git a/payment-iq/app/features/dashboard/header/dropDown/DropDown.styled.ts b/payment-iq/app/features/dashboard/header/dropDown/DropDown.styled.ts index 8de5573..4c53e18 100644 --- a/payment-iq/app/features/dashboard/header/dropDown/DropDown.styled.ts +++ b/payment-iq/app/features/dashboard/header/dropDown/DropDown.styled.ts @@ -5,4 +5,5 @@ export const Em = styled("em")(() => ({ alignItems: "center", opacity: 0.7, fontStyle: "normal", + color: "white", })); diff --git a/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx b/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx index adb6138..baecdd4 100644 --- a/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx +++ b/payment-iq/app/features/dashboard/header/dropDown/DropDown.tsx @@ -7,8 +7,8 @@ import { SelectChangeEvent, } from "@mui/material"; import ChevronRightIcon from "@mui/icons-material/ChevronRight"; -import { SIDEBAR_LINKS } from "@/constants/SidebarLink.constants"; -import { ISidebarLink } from "@/interfaces/SidebarLink.interfaces"; +import { SIDEBAR_LINKS } from "@/app/features/dashboard/sidebar/SidebarLink.constants"; +import { ISidebarLink } from "@/app/features/dashboard/sidebar/SidebarLink.interfaces"; import { Em } from "./DropDown.styled"; import PageLinks from "../../../../components/PageLinks/PageLinks"; @@ -35,6 +35,7 @@ export default function SidebarDropdown({ onChange }: Props) { MenuProps={{ PaperProps: { style: { + backgroundColor: "rgba(30, 30, 30, 0.7)", // 0.9 opacity maxHeight: 200, }, }, diff --git a/payment-iq/app/features/dashboard/layout/layoutWrapper.ts b/payment-iq/app/features/dashboard/layout/layoutWrapper.ts index 3a9a999..f288979 100644 --- a/payment-iq/app/features/dashboard/layout/layoutWrapper.ts +++ b/payment-iq/app/features/dashboard/layout/layoutWrapper.ts @@ -1,8 +1,7 @@ -import { styled } from '@mui/system'; +import { styled } from "@mui/system"; -export const LayoutWrapper = styled('div')({ - display: 'flex', - width: '100%', - height: '100vh', - // overflow: 'hidden', +export const LayoutWrapper = styled("div")({ + display: "flex", + width: "100%", + height: "100vh", }); diff --git a/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx b/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx index 11fcd40..7271d47 100644 --- a/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx +++ b/payment-iq/app/features/dashboard/sidebar/Sidebar.tsx @@ -3,7 +3,7 @@ import React from "react"; import DashboardIcon from "@mui/icons-material/Dashboard"; import { styled } from "@mui/system"; -import { SIDEBAR_LINKS } from "@/constants/SidebarLink.constants"; +import { SIDEBAR_LINKS } from "@/app/features/dashboard/sidebar/SidebarLink.constants"; import PageLinks from "../../../components/PageLinks/PageLinks"; const SideBarContainer = styled("aside")(({ theme }) => ({ diff --git a/payment-iq/constants/SidebarLink.constants.ts b/payment-iq/app/features/dashboard/sidebar/SidebarLink.constants.ts similarity index 94% rename from payment-iq/constants/SidebarLink.constants.ts rename to payment-iq/app/features/dashboard/sidebar/SidebarLink.constants.ts index 2fadf07..38b6a59 100644 --- a/payment-iq/constants/SidebarLink.constants.ts +++ b/payment-iq/app/features/dashboard/sidebar/SidebarLink.constants.ts @@ -8,7 +8,7 @@ import GavelIcon from "@mui/icons-material/Gavel"; import HubIcon from "@mui/icons-material/Hub"; import AdminPanelSettingsIcon from "@mui/icons-material/AdminPanelSettings"; import InsightsIcon from "@mui/icons-material/Insights"; -import { ISidebarLink } from "@/interfaces/SidebarLink.interfaces"; +import { ISidebarLink } from "@/app/features/dashboard/sidebar/SidebarLink.interfaces"; export const SIDEBAR_LINKS: ISidebarLink[] = [ { title: "Home", path: "/dashboard", icon: HomeIcon }, diff --git a/payment-iq/interfaces/SidebarLink.interfaces.ts b/payment-iq/app/features/dashboard/sidebar/SidebarLink.interfaces.ts similarity index 100% rename from payment-iq/interfaces/SidebarLink.interfaces.ts rename to payment-iq/app/features/dashboard/sidebar/SidebarLink.interfaces.ts diff --git a/payment-iq/app/features/sidebar/SideBarLink.tsx b/payment-iq/app/features/sidebar/SideBarLink.tsx deleted file mode 100644 index 17601cf..0000000 --- a/payment-iq/app/features/sidebar/SideBarLink.tsx +++ /dev/null @@ -1,41 +0,0 @@ -'use client'; - -import Link from 'next/link'; -import { styled } from '@mui/system'; -import { ISidebarLink } from '@/interfaces/SidebarLink.interfaces'; - -const LinkContainer = styled('div')(({ theme }) => ({ - display: 'flex', - alignItems: 'center', - padding: '12px 1px', - borderRadius: '4px', - color: theme.palette.text.tertiary, - textDecoration: 'none', - transition: 'background 0.2s ease-in-out', - - '&:hover': { - color: 'rgb(255, 255, 255)', - background: 'rgba(255, 255, 255, 0.08)', - backgroundColor: theme.palette.action.hover, - cursor: 'pointer', - }, -})); - -const LinkText = styled('span')(({ theme }) => ({ - color: theme.palette.text.tertiary, - marginLeft: '12px', - fontWeight: 500, -})); - -export default function SidebarLink({ title, path, icon: Icon }: ISidebarLink) { - return ( - - - - {Icon && } - {title} - - - - ); -} diff --git a/payment-iq/app/features/sidebar/SidebarLayout.tsx b/payment-iq/app/features/sidebar/SidebarLayout.tsx deleted file mode 100644 index 1d5e544..0000000 --- a/payment-iq/app/features/sidebar/SidebarLayout.tsx +++ /dev/null @@ -1,73 +0,0 @@ -'use client'; - -import React from 'react'; -import { styled } from '@mui/system'; -import DashboardIcon from '@mui/icons-material/Dashboard'; -import { SIDEBAR_LINKS } from '@/constants/SidebarLink.constants'; -import SideBarLink from './SideBarLink'; - -// SideBar Container (styled using MUI System) -export const SideBar = styled('div')(({ theme }) => ({ - width: '240px', - backgroundColor: theme.palette.background.primary, - color: 'white', - padding: theme.spacing(2), - height: '100vh', - display: 'flex', - flexDirection: 'column', - justifyContent: 'space-between', - transition: 'width 0.3s ease', // Transition for resizing -})); - -// Main Content Area -export const MainContent = styled('div')(({ theme }) => ({ - flexGrow: 1, - padding: theme.spacing(4), - backgroundColor: theme.palette.background.default, - minHeight: '100vh', - overflowY: 'auto', -})); - -// SideBar Header -export const SideBarHeader = styled('div')(({ theme }) => ({ - marginBottom: theme.spacing(2), - fontSize: '20px', - fontWeight: 600, - display: 'flex', - alignItems: 'center', -})); - -// Page Wrapper that holds SideBar and Content -export const LayoutWrapper = styled('div')({ - display: 'flex', - flexDirection: 'row', - height: '100vh', -}); - -interface SideBarLayoutProps { - children: React.ReactNode; // Add children to accept passed content -} - -const SideBarLayout: React.FC = ({ children }) => { - return ( - - - - PaymentIQ - - - {SIDEBAR_LINKS.map((link) => ( - - ))} - - {children} {/* Render children here */} - - ); -}; - -export default SideBarLayout; diff --git a/payment-iq/app/utils/defineStyles.ts b/payment-iq/app/utils/defineStyles.ts new file mode 100644 index 0000000..3df26c0 --- /dev/null +++ b/payment-iq/app/utils/defineStyles.ts @@ -0,0 +1,11 @@ +// utils/defineStyles.ts +import type { SxProps, Theme } from "@mui/material/styles"; + +/** + * Helper to define style objects with full key/type inference as SxProps + */ +export function defineStyles>>( + styles: T +): T { + return styles; +} diff --git a/payment-iq/config/ThemeRegistry.tsx b/payment-iq/config/ThemeRegistry.tsx index 19ddc63..6c2b953 100644 --- a/payment-iq/config/ThemeRegistry.tsx +++ b/payment-iq/config/ThemeRegistry.tsx @@ -1,10 +1,13 @@ +"use client"; -'use client'; +import { ThemeProvider, CssBaseline } from "@mui/material"; +import theme from "./theme"; -import { ThemeProvider, CssBaseline } from '@mui/material'; -import theme from './theme'; - -export default function ThemeRegistry({ children }: { children: React.ReactNode }) { +export default function ThemeRegistry({ + children, +}: { + children: React.ReactNode; +}) { return (