From 3526a1a49a73285fe9805bae48e57632fcb8a131 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:30:10 +0530 Subject: [PATCH 01/22] feat: decouple menu components --- src/pages/PageWrapper.tsx | 71 ++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/src/pages/PageWrapper.tsx b/src/pages/PageWrapper.tsx index e257367b..83004fcc 100644 --- a/src/pages/PageWrapper.tsx +++ b/src/pages/PageWrapper.tsx @@ -13,6 +13,7 @@ import UserRoute from '../routes/userRoute'; import { Routes, Route, useNavigate, Navigate } from 'react-router-dom'; import { NotFoundPage } from '../components/dashboard/NotFound'; import RobotCreate from '../components/robot/pages/RobotCreate'; +import { Box } from '@mui/material'; export const PageWrapper = () => { const [open, setOpen] = useState(false); @@ -90,34 +91,48 @@ export const PageWrapper = () => { - {/* {!browserId && location.pathname !== '/recording' && } */} - {location.pathname !== '/recording' && } - - }> - } /> - } /> - } /> - } /> - } /> - } /> - - }> - - - - } /> - - } - /> - } - /> - } /> - + {/* Sticky NavBar - only show on non-recording pages */} + {location.pathname !== '/recording' && ( + + + + )} + + + }> + } /> + } /> + } /> + } /> + } /> + } /> + + }> + + + + } /> + + } + /> + } + /> + } /> + + From a515c9046a529f69a299db1975bfc47e82ef1241 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:30:24 +0530 Subject: [PATCH 02/22] feat: decouple menu components --- src/pages/MainPage.tsx | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx index bf628fa6..65647182 100644 --- a/src/pages/MainPage.tsx +++ b/src/pages/MainPage.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useContext, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; import { MainMenu } from "../components/dashboard/MainMenu"; -import { Stack } from "@mui/material"; +import { Stack, Box } from "@mui/material"; import { Recordings } from "../components/robot/Recordings"; import { Runs } from "../components/run/Runs"; import ProxyForm from '../components/proxy/ProxyForm'; @@ -318,12 +318,31 @@ export const MainPage = ({ handleEditRecording, initialContent }: MainPageProps) } } - return ( - - +return ( + + {/* Sticky Sidebar */} + - + + + {/* Scrollable Content Area - Fills remaining space */} + {DisplayContent()} - - ); -}; + + +) +} From fb7c37dab963141c9c7429dd6519259100b9c468 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:39:35 +0530 Subject: [PATCH 03/22] feat: match proxy layout w new menu layout --- src/components/proxy/ProxyForm.tsx | 88 ++++++++++++++++++------------ 1 file changed, 53 insertions(+), 35 deletions(-) diff --git a/src/components/proxy/ProxyForm.tsx b/src/components/proxy/ProxyForm.tsx index 9b1e8ba5..c0902f41 100644 --- a/src/components/proxy/ProxyForm.tsx +++ b/src/components/proxy/ProxyForm.tsx @@ -156,19 +156,30 @@ const ProxyForm: React.FC = () => { }, []); return ( - <> - - + + + {t('proxy.title')} - + {tabIndex === 0 && ( isProxyConfigured ? ( - - + + @@ -187,13 +198,13 @@ const ProxyForm: React.FC = () => { - ) : ( - - + + { } /> - - + + } label={t('proxy.requires_auth')} /> - + {requiresAuth && ( <> - + { error={!!errors.username} helperText={errors.username || ''} /> - - + + { error={!!errors.password} helperText={errors.password || ''} /> - + )} ))} - + - - {t('proxy.alert.title')} -
- {t('proxy.alert.right_way')} -
- {t('proxy.alert.proxy_url')} http://proxy.com:1337 -
- {t('proxy.alert.username')} myusername -
- {t('proxy.alert.password')} mypassword -
-
- {t('proxy.alert.wrong_way')} -
- - {t('proxy.alert.proxy_url')} http://myusername:mypassword@proxy.com:1337 -
- + {/* Instructions Section */} + + + {t('proxy.alert.title')} +
+ {t('proxy.alert.right_way')} +
+ {t('proxy.alert.proxy_url')} http://proxy.com:1337 +
+ {t('proxy.alert.username')} myusername +
+ {t('proxy.alert.password')} mypassword +
+
+ {t('proxy.alert.wrong_way')} +
+ {t('proxy.alert.proxy_url')} http://myusername:mypassword@proxy.com:1337 +
+
+ ); }; + export default ProxyForm; \ No newline at end of file From e1d10042d75c4f552e537fcb7e6b168dd9f233d3 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:39:48 +0530 Subject: [PATCH 04/22] fix: format --- src/components/proxy/ProxyForm.tsx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/components/proxy/ProxyForm.tsx b/src/components/proxy/ProxyForm.tsx index c0902f41..b9e60b86 100644 --- a/src/components/proxy/ProxyForm.tsx +++ b/src/components/proxy/ProxyForm.tsx @@ -156,17 +156,17 @@ const ProxyForm: React.FC = () => { }, []); return ( - - @@ -269,9 +269,9 @@ const ProxyForm: React.FC = () => { {/* Instructions Section */} - From 2aa4aff6089d43075ce47d95cba4c004d857eb74 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:54:35 +0530 Subject: [PATCH 05/22] feat: match api layout w new menu layout --- src/components/api/ApiKey.tsx | 137 +++++++++++++++++----------------- 1 file changed, 68 insertions(+), 69 deletions(-) diff --git a/src/components/api/ApiKey.tsx b/src/components/api/ApiKey.tsx index 9feb9551..2da3502f 100644 --- a/src/components/api/ApiKey.tsx +++ b/src/components/api/ApiKey.tsx @@ -107,73 +107,72 @@ const ApiKeyManager = () => { } return ( - - - Start by creating an API key below. Then, - - test your API - - or read the - API documentation - for setup instructions. - - - {t('apikey.title')} - - {apiKey ? ( - -
- - - {t('apikey.table.name')} - {t('apikey.table.key')} - {t('apikey.table.actions')} - - - - - {apiKeyName} - - - {showKey ? `${apiKey?.substring(0, 10)}...` : '**********'} - - - - - - - - - - setShowKey(!showKey)}> - {showKey ? : } - - - - - - - - - - -
-
- ) : ( - <> - {t('apikey.no_key_message')} - - - )} - - ); -}; - + + + Start by creating an API key below. Then, + + test your API + + or read the + API documentation + for setup instructions. + + + {t('apikey.title')} + + {apiKey ? ( + + + + + {t('apikey.table.name')} + {t('apikey.table.key')} + {t('apikey.table.actions')} + + + + + {apiKeyName} + + + {showKey ? `${apiKey?.substring(0, 10)}...` : '**********'} + + + + + + + + + + setShowKey(!showKey)}> + {showKey ? : } + + + + + + + + + + +
+
+ ) : ( + <> + {t('apikey.no_key_message')} + + + )} +
+); +} export default ApiKeyManager; \ No newline at end of file From 95ac9ce91343dd20035d39dfc39a66e41862066b Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:54:48 +0530 Subject: [PATCH 06/22] chore: lint --- src/components/api/ApiKey.tsx | 134 +++++++++++++++++----------------- 1 file changed, 67 insertions(+), 67 deletions(-) diff --git a/src/components/api/ApiKey.tsx b/src/components/api/ApiKey.tsx index 2da3502f..c29f4ec8 100644 --- a/src/components/api/ApiKey.tsx +++ b/src/components/api/ApiKey.tsx @@ -107,72 +107,72 @@ const ApiKeyManager = () => { } return ( - - - Start by creating an API key below. Then, - - test your API - - or read the - API documentation - for setup instructions. - - - {t('apikey.title')} - - {apiKey ? ( - - - - - {t('apikey.table.name')} - {t('apikey.table.key')} - {t('apikey.table.actions')} - - - - - {apiKeyName} - - - {showKey ? `${apiKey?.substring(0, 10)}...` : '**********'} - - - - - - - - - - setShowKey(!showKey)}> - {showKey ? : } - - - - - - - - - - -
-
- ) : ( - <> - {t('apikey.no_key_message')} - - - )} -
-); + + + Start by creating an API key below. Then, + + test your API + + or read the + API documentation + for setup instructions. + + + {t('apikey.title')} + + {apiKey ? ( + + + + + {t('apikey.table.name')} + {t('apikey.table.key')} + {t('apikey.table.actions')} + + + + + {apiKeyName} + + + {showKey ? `${apiKey?.substring(0, 10)}...` : '**********'} + + + + + + + + + + setShowKey(!showKey)}> + {showKey ? : } + + + + + + + + + + +
+
+ ) : ( + <> + {t('apikey.no_key_message')} + + + )} +
+ ); } export default ApiKeyManager; \ No newline at end of file From 11fa50f727f1fbb272dd8034e2770849819acdad Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 20:55:51 +0530 Subject: [PATCH 07/22] chore: hidden api key --- src/components/api/ApiKey.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/api/ApiKey.tsx b/src/components/api/ApiKey.tsx index c29f4ec8..1e0386c9 100644 --- a/src/components/api/ApiKey.tsx +++ b/src/components/api/ApiKey.tsx @@ -140,7 +140,7 @@ const ApiKeyManager = () => { {apiKeyName} - {showKey ? `${apiKey?.substring(0, 10)}...` : '**********'} + {showKey ? `${apiKey?.substring(0, 20)}...` : '***************'} From c394198321c38829ff57f5f7d825fd021b6c7cd1 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 21:09:30 +0530 Subject: [PATCH 08/22] feat: match robot config layout w new menu layout --- .../robot/pages/RobotConfigPage.tsx | 238 +++++++++--------- 1 file changed, 117 insertions(+), 121 deletions(-) diff --git a/src/components/robot/pages/RobotConfigPage.tsx b/src/components/robot/pages/RobotConfigPage.tsx index d52b985e..ac841f0b 100644 --- a/src/components/robot/pages/RobotConfigPage.tsx +++ b/src/components/robot/pages/RobotConfigPage.tsx @@ -59,142 +59,138 @@ export const RobotConfigPage: React.FC = ({ }; return ( + + + + + {icon && ( + + {icon} + + )} + + {title} + + + + + - {/* Header Section - Fixed Position */} - - - - - {icon && ( - - {icon} - + {children} + + + {(showSaveButton || showCancelButton || onBackToSelection) && ( + + {onBackToSelection && ( + )} - - {title} - - - - {/* Content Section */} - - {children} - - - {/* Action Buttons */} - {(showSaveButton || showCancelButton || onBackToSelection) && ( - - {/* Left side - Back to Selection button */} - {onBackToSelection && ( + + {showCancelButton && ( )} - - {/* Right side - Save/Cancel buttons */} - - {showCancelButton && ( - - )} - {showSaveButton && onSave && ( - - )} - + }, + textTransform: 'none', + fontWeight: 500, + px: 3, + boxShadow: 'none', + }} + > + {isLoading ? t("buttons.saving") : (saveButtonText || t("buttons.save"))} + + )} - )} - - ); -}; + + )} + +); +} From 75bb63d19423eaea908063e337d02542c844e158 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 21:09:38 +0530 Subject: [PATCH 09/22] chore: lint --- .../robot/pages/RobotConfigPage.tsx | 232 +++++++++--------- 1 file changed, 116 insertions(+), 116 deletions(-) diff --git a/src/components/robot/pages/RobotConfigPage.tsx b/src/components/robot/pages/RobotConfigPage.tsx index ac841f0b..ccf6452b 100644 --- a/src/components/robot/pages/RobotConfigPage.tsx +++ b/src/components/robot/pages/RobotConfigPage.tsx @@ -59,138 +59,138 @@ export const RobotConfigPage: React.FC = ({ }; return ( - - - - - {icon && ( - - {icon} - - )} - - {title} - - - - - - {children} - - - {(showSaveButton || showCancelButton || onBackToSelection) && ( - - {onBackToSelection && ( - + + + + + {icon && ( + + {icon} + )} + + {title} + + + - - {showCancelButton && ( + + {children} + + + {(showSaveButton || showCancelButton || onBackToSelection) && ( + + {onBackToSelection && ( )} - {showSaveButton && onSave && ( - + )} + {showSaveButton && onSave && ( + - )} + }} + > + {isLoading ? t("buttons.saving") : (saveButtonText || t("buttons.save"))} + + )} + - - )} - -); + )} +
+ ); } From fbaf588169b3a1abbc91e80e390a4c8fa030374d Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 21:53:51 +0530 Subject: [PATCH 10/22] fix: remove minHeight --- src/components/robot/pages/RobotConfigPage.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/robot/pages/RobotConfigPage.tsx b/src/components/robot/pages/RobotConfigPage.tsx index ccf6452b..e87c552c 100644 --- a/src/components/robot/pages/RobotConfigPage.tsx +++ b/src/components/robot/pages/RobotConfigPage.tsx @@ -66,7 +66,6 @@ export const RobotConfigPage: React.FC = ({ flexDirection: 'column', width: '100%', height: 'auto', - minHeight: 'calc(100vh - 64px)', boxSizing: 'border-box' }}> Date: Wed, 5 Nov 2025 21:57:14 +0530 Subject: [PATCH 11/22] fix: margins --- src/components/robot/pages/RobotConfigPage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/robot/pages/RobotConfigPage.tsx b/src/components/robot/pages/RobotConfigPage.tsx index e87c552c..a5435ca3 100644 --- a/src/components/robot/pages/RobotConfigPage.tsx +++ b/src/components/robot/pages/RobotConfigPage.tsx @@ -122,7 +122,7 @@ export const RobotConfigPage: React.FC = ({ flexDirection: 'column', minHeight: 0, mt: 2, - mb: 3, + mb: 5, }}> {children} From c235ac240e55bd1e81d110105edd59b8cb258a52 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 22:01:34 +0530 Subject: [PATCH 12/22] fix: inherit bg for cancel button --- src/components/robot/pages/RobotConfigPage.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/components/robot/pages/RobotConfigPage.tsx b/src/components/robot/pages/RobotConfigPage.tsx index a5435ca3..6675aa3d 100644 --- a/src/components/robot/pages/RobotConfigPage.tsx +++ b/src/components/robot/pages/RobotConfigPage.tsx @@ -121,7 +121,7 @@ export const RobotConfigPage: React.FC = ({ display: 'flex', flexDirection: 'column', minHeight: 0, - mt: 2, + mt: 1.8, mb: 5, }}> {children} @@ -160,9 +160,7 @@ export const RobotConfigPage: React.FC = ({ onClick={handleBack} disabled={isLoading} sx={{ - color: '#ff00c3 !important', - borderColor: '#ff00c3 !important', - backgroundColor: 'white !important', + backgroundColor: 'inherit !important', }} > {cancelButtonText || t("buttons.cancel")} From 56467d5560c8a1632d0b9a1801f5dd6c0822aa75 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Wed, 5 Nov 2025 22:01:58 +0530 Subject: [PATCH 13/22] feat: cleaner UI --- .../robot/pages/ScheduleSettingsPage.tsx | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/robot/pages/ScheduleSettingsPage.tsx b/src/components/robot/pages/ScheduleSettingsPage.tsx index e386cfec..9f308487 100644 --- a/src/components/robot/pages/ScheduleSettingsPage.tsx +++ b/src/components/robot/pages/ScheduleSettingsPage.tsx @@ -188,8 +188,8 @@ export const ScheduleSettingsPage = ({ display: "flex", flexDirection: "column", alignItems: "flex-start", - "& > *": { marginBottom: "20px" }, - marginTop: "-20px", + gap: 3, + width: "100%", }} > <> @@ -215,7 +215,7 @@ export const ScheduleSettingsPage = ({ {t("schedule_settings.at_around")}: {schedule.atTimeStart},{" "} {schedule.timezone} {t("schedule_settings.timezone")}
- +