From 598923661e7558b0036466343eb19559efba3a19 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Thu, 31 Jul 2025 23:19:05 +0530 Subject: [PATCH 01/18] feat: sponsor & cloud --- src/components/dashboard/MainMenu.tsx | 166 +++++++++++++------------- 1 file changed, 81 insertions(+), 85 deletions(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index 999b9a83..4de2edd5 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -1,12 +1,11 @@ -import React from 'react'; +import React, { useState } from 'react'; import Tabs from '@mui/material/Tabs'; import Tab from '@mui/material/Tab'; import Box from '@mui/material/Box'; import { useNavigate } from 'react-router-dom'; -import { Paper, Button, useTheme } from "@mui/material"; -import { AutoAwesome, FormatListBulleted, VpnKey, Usb, CloudQueue, Description } from "@mui/icons-material"; +import { Paper, Button, useTheme, Modal, Typography, Stack } from "@mui/material"; +import { AutoAwesome, FormatListBulleted, VpnKey, Usb, CloudQueue, Description, Favorite } from "@mui/icons-material"; import { useTranslation } from 'react-i18next'; -import i18n from '../../i18n'; interface MainMenuProps { value: string; @@ -18,19 +17,20 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp const { t } = useTranslation(); const navigate = useNavigate(); + const [cloudModalOpen, setCloudModalOpen] = useState(false); + const [sponsorModalOpen, setSponsorModalOpen] = useState(false); + const handleChange = (event: React.SyntheticEvent, newValue: string) => { navigate(`/${newValue}`); handleChangeContent(newValue); }; - // Define colors based on theme mode const defaultcolor = theme.palette.mode === 'light' ? 'black' : 'white'; const buttonStyles = { justifyContent: 'flex-start', textAlign: 'left', fontSize: '17px', - letterSpacing: '0.02857em', padding: '20px 16px 20px 22px', minHeight: '48px', minWidth: '100%', @@ -39,91 +39,87 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp textTransform: 'none', color: theme.palette.mode === 'light' ? '#6C6C6C' : 'inherit', '&:hover': { - color: theme.palette.mode === 'light' ? '#6C6C6C' : 'inherit', backgroundColor: theme.palette.mode === 'light' ? '#f5f5f5' : 'inherit', }, }; - return ( - - - - } - iconPosition="start" - /> - } - iconPosition="start" - /> - } - iconPosition="start" - /> - } - iconPosition="start" - /> - -
- - {/* */} - - + + + +
+
+ + {/* Maxun Cloud Modal */} + setCloudModalOpen(false)}> + + + Upgrade to Maxun Cloud + + + Hosting, scaling, and support — all done for you. No setup, no stress. + As a thank-you, OSS users get 5% off. + + - - + + + {/* Sponsor Modal */} + setSponsorModalOpen(false)}> + + + Support Maxun Open Source + + + Maxun is built with love and maintained by a small team. Help us keep it alive and growing 💙 + + + + + + + + ); }; From 72f01652b62cb74fb94e42385c1089c3600f7e5f Mon Sep 17 00:00:00 2001 From: amhsirak Date: Thu, 31 Jul 2025 23:21:50 +0530 Subject: [PATCH 02/18] fix: text --- src/components/dashboard/MainMenu.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index 4de2edd5..cf105ad2 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -76,7 +76,7 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Documentation - From 09870107ea5335cdb58bca2d996d00af9d5eb4c5 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Thu, 31 Jul 2025 23:31:29 +0530 Subject: [PATCH 04/18] feat: oss sponsor text --- src/components/dashboard/MainMenu.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index 6708e510..9b0d50b8 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -106,7 +106,10 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Support Maxun Open Source - Maxun is built with love and maintained by a small team. Help us keep it alive and growing 💙 + Maxun is built by a small, full-time team. Your donations directly contribute to making it better. +
+
+ Thank you for your support! 💙
From c8da160ec78741de19e6df592a18fd98f6e6507f Mon Sep 17 00:00:00 2001 From: amhsirak Date: Thu, 31 Jul 2025 23:40:22 +0530 Subject: [PATCH 09/18] feat: 8% --- src/components/dashboard/MainMenu.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index fc7dcb3e..395b4c9d 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -92,9 +92,9 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Extract web data without getting blocked on Maxun Cloud. - As a thank-you, OSS users get 5% off. + As a thank-you, OSS users get 8% off. - From 297e8463faeaf4c1b47236362f44432cfa1f763b Mon Sep 17 00:00:00 2001 From: amhsirak Date: Thu, 31 Jul 2025 23:48:09 +0530 Subject: [PATCH 10/18] feat: text --- src/components/dashboard/MainMenu.tsx | 49 +++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index 395b4c9d..dcf328c1 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -3,9 +3,10 @@ import Tabs from '@mui/material/Tabs'; import Tab from '@mui/material/Tab'; import Box from '@mui/material/Box'; import { useNavigate } from 'react-router-dom'; -import { Paper, Button, useTheme, Modal, Typography, Stack } from "@mui/material"; -import { AutoAwesome, FormatListBulleted, VpnKey, Usb, CloudQueue, Description, Favorite } from "@mui/icons-material"; +import { Paper, Button, useTheme, Modal, Typography, Stack, TextField, InputAdornment, IconButton } from "@mui/material"; // Added TextField, InputAdornment, IconButton +import { AutoAwesome, FormatListBulleted, VpnKey, Usb, CloudQueue, Description, Favorite, ContentCopy } from "@mui/icons-material"; // Added ContentCopy import { useTranslation } from 'react-i18next'; +import { useGlobalInfoStore } from "../../context/globalInfo"; interface MainMenuProps { value: string; @@ -16,15 +17,27 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp const theme = useTheme(); const { t } = useTranslation(); const navigate = useNavigate(); - + const { notify } = useGlobalInfoStore(); + const [cloudModalOpen, setCloudModalOpen] = useState(false); const [sponsorModalOpen, setSponsorModalOpen] = useState(false); + const ossDiscountCode = "MAXUNOSS8"; + const handleChange = (event: React.SyntheticEvent, newValue: string) => { navigate(`/${newValue}`); handleChangeContent(newValue); }; + const copyDiscountCode = () => { + navigator.clipboard.writeText(ossDiscountCode).then(() => { + notify("success", "Discount code copied to clipboard!"); + }).catch(err => { + console.error('Failed to copy text: ', err); + notify("error", "Failed to copy discount code."); + }); + }; + const defaultcolor = theme.palette.mode === 'light' ? 'black' : 'white'; const buttonStyles = { @@ -92,9 +105,31 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Extract web data without getting blocked on Maxun Cloud. - As a thank-you, OSS users get 8% off. - @@ -109,7 +144,7 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Maxun is built by a small, full-time team. Your donations directly contribute to making it better.

- Thank you for your support! 💙 + Thank you for your support! 💙 - From 805e1095dc7b989a66f223597107ad3df5be694c Mon Sep 17 00:00:00 2001 From: amhsirak Date: Fri, 1 Aug 2025 00:04:09 +0530 Subject: [PATCH 17/18] fix: remove caps --- src/components/dashboard/MainMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index 686c6159..22734fb1 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -107,7 +107,7 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Unlock reliable web data extraction. Maxun Cloud ensures you bypass blocks and scale with ease. - As a thank-you to Open Source users, enjoy 8% off your subscription! + As a thank-you to open source users, enjoy 8% off your subscription! Use the discount code From 26de22ade055e23cb2753a34f85a8495dd640308 Mon Sep 17 00:00:00 2001 From: Karishma Shukla Date: Fri, 1 Aug 2025 00:39:31 +0530 Subject: [PATCH 18/18] fix: add rel noopener noreferrer --- src/components/dashboard/MainMenu.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/dashboard/MainMenu.tsx b/src/components/dashboard/MainMenu.tsx index 22734fb1..3dcf34d8 100644 --- a/src/components/dashboard/MainMenu.tsx +++ b/src/components/dashboard/MainMenu.tsx @@ -146,10 +146,10 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp Thank you for your support! 💙 - - @@ -157,4 +157,4 @@ export const MainMenu = ({ value = 'robots', handleChangeContent }: MainMenuProp ); -}; \ No newline at end of file +};