diff --git a/package.json b/package.json index f95e834b..19dccd04 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "lucide-react": "^0.509.0", "mammoth": "^1.9.1", "monaco-editor": "^0.52.2", - "motion": "^12.23.23", + "motion": "^12.23.24", "next-themes": "^0.4.6", "papaparse": "^5.5.3", "postprocessing": "^6.37.8", diff --git a/src/components/animate-ui/icons/compass.tsx b/src/components/animate-ui/icons/compass.tsx new file mode 100644 index 00000000..73e75346 --- /dev/null +++ b/src/components/animate-ui/icons/compass.tsx @@ -0,0 +1,93 @@ +'use client'; + +import * as React from 'react'; +import { motion, type Variants } from 'motion/react'; + +import { + getVariants, + useAnimateIconContext, + IconWrapper, + type IconProps, +} from '@/components/animate-ui/icons/icon'; + +type CompassProps = IconProps; + +const animations = { + default: { + path: { + initial: { + rotate: 0, + }, + animate: { + rotate: [0, 95, 75], + transition: { + duration: 0.7, + ease: 'easeInOut', + }, + }, + }, + circle: {}, + } satisfies Record, + 'default-loop': { + path: { + initial: { + rotate: 0, + }, + animate: { + rotate: [0, 95, 75, -20, 0], + transition: { + duration: 1.4, + ease: 'easeInOut', + }, + }, + }, + circle: {}, + } satisfies Record, +} as const; + +function IconComponent({ size, ...props }: CompassProps) { + const { controls } = useAnimateIconContext(); + const variants = getVariants(animations); + + return ( + + + + + ); +} + +function Compass(props: CompassProps) { + return ; +} + +export { + animations, + Compass, + Compass as CompassIcon, + type CompassProps, + type CompassProps as CompassIconProps, +}; \ No newline at end of file diff --git a/src/components/ui/alertDialog.tsx b/src/components/ui/alertDialog.tsx index dfc5c605..76674c99 100644 --- a/src/components/ui/alertDialog.tsx +++ b/src/components/ui/alertDialog.tsx @@ -1,6 +1,8 @@ import { Button } from "@/components/ui/button"; import { motion, AnimatePresence } from "framer-motion"; +type ButtonVariant = "primary" | "secondary" | "outline" | "ghost" | "success" | "cuation" | "information" | "warning"; + interface ConfirmModalProps { isOpen: boolean; onClose: () => void; @@ -9,6 +11,7 @@ interface ConfirmModalProps { message?: string; confirmText?: string; cancelText?: string; + confirmVariant?: ButtonVariant; } export default function ConfirmModal({ @@ -19,6 +22,7 @@ export default function ConfirmModal({ message = "Confirm content?", confirmText = "Confirm", cancelText = "Cancel", + confirmVariant = "cuation", }: ConfirmModalProps) { return ( @@ -29,7 +33,7 @@ export default function ConfirmModal({ initial={{ opacity: 0 }} animate={{ opacity: 1 }} exit={{ opacity: 0 }} - className="fixed inset-0 bg-black/50 z-100 alert-dialog" + className="fixed inset-0 bg-white/5 backdrop-blur-sm z-100 alert-dialog" onClick={onClose} /> @@ -51,7 +55,7 @@ export default function ConfirmModal({ {cancelText} - - -
- {/* Browser Login Card */} -
-
-
- + {/* Header Section */} +
+
+
+
+
{t("layout.browser-management")}
+

+ {t("layout.browser-management-description")}.

-
-

- Browser Login -

-

- Open a dedicated browser for website logins. Your login sessions will be saved and reused by Eigent agents. -

-
-
-
-
+
+ + {/* Content Section */} +
+
- {/* Cookies Card */} -
-
-
- -
-
-

- Cookies -

-

- View and manage cookies from your browser login sessions. -

-
-
-
- - {cookieDomains.length > 0 && ( - +
+ {hasUnsavedChanges && ( +
+ +
)} -
- {cookieDomains.length > 0 && ( -
-

- Cookie Domains ({groupDomainsByMain(cookieDomains).length}): -

-
- {groupDomainsByMain(cookieDomains).map((group, index) => ( -
-
- - {group.mainDomain} - - - {group.totalCookies} cookie{group.totalCookies !== 1 ? 's' : ''} - +
{t("layout.browser-cookies")}
+

{t("layout.browser-cookies-description")} +

+ {/* Cookies Section */} +
+ +
+
+
+ {t("layout.cookie-domains")} +
+ {cookieDomains.length > 0 && ( +
+ {groupDomainsByMain(cookieDomains).length}
+ )} +
+ +
+ {cookieDomains.length > 0 && ( + )} + + +
+
+ + {cookieDomains.length > 0 ? ( +
+ {groupDomainsByMain(cookieDomains).map((group, index) => ( +
+
+ + {group.mainDomain} + + + {group.totalCookies} Cookie{group.totalCookies !== 1 ? 's' : ''} + +
+ +
+ ))} +
+ ) : ( +
+ +
+ {t("layout.no-cookies-saved-yet")}
- ))} -
+

+ {t("layout.no-cookies-saved-yet-description")} +

+
+ )}
- )} +
+ +
+ For more information, check out our + {t("layout.privacy-policy")} +
+
diff --git a/src/pages/Dashboard/Project.tsx b/src/pages/Dashboard/Project.tsx index 0153c795..35f3ce8e 100644 --- a/src/pages/Dashboard/Project.tsx +++ b/src/pages/Dashboard/Project.tsx @@ -218,7 +218,7 @@ export default function Project() { const TABLE_VIEW_ENABLED = false; return ( -
+
{/* alert dialog */} -
+ + {/* Header Section */} +
+
+
+
+
{t("layout.projects-hub")}
+
+
+
+
+ +
+
+
{t("dashboard.ongoing-tasks")}
{TABLE_VIEW_ENABLED && ( @@ -255,7 +269,7 @@ export default function Project() {
{TABLE_VIEW_ENABLED && history_type === "table" ? ( // Table -
+
{Object.keys(chatStore.tasks).map((taskId) => { const task = chatStore.tasks[taskId]; return task.status != "finished" && !task.type ? ( @@ -350,7 +364,7 @@ export default function Project() {
) : ( // List -
+
{Object.keys(chatStore.tasks).map((taskId) => { const task = chatStore.tasks[taskId]; return task.status != "finished" && !task.type ? ( @@ -489,7 +503,7 @@ export default function Project() { })}
)} -
+
{t("dashboard.project-archives")}
{historyTasks.length === 0 && TABLE_VIEW_ENABLED && ( @@ -517,7 +531,7 @@ export default function Project() {
{TABLE_VIEW_ENABLED && history_type === "table" ? ( // Table -
+
{historyTasks.map((task) => { return (
) : ( // List -
+
{historyTasks.map((task) => { return (
)}
- +
+
); } \ No newline at end of file diff --git a/src/pages/History.tsx b/src/pages/History.tsx index d5df6783..ce6ff33c 100644 --- a/src/pages/History.tsx +++ b/src/pages/History.tsx @@ -9,10 +9,9 @@ import { MenuToggleGroup, MenuToggleItem } from "@/components/MenuButton/MenuBut import Project from "@/pages/Dashboard/Project"; import Trigger from "@/pages/Dashboard/Trigger"; import AlertDialog from "@/components/ui/alertDialog"; -import { Bot } from "@/components/animate-ui/icons/bot"; import { Settings } from "@/components/animate-ui/icons/settings"; import { Pin } from "@/components/animate-ui/icons/pin"; -import { AlarmClock } from "@/components/animate-ui/icons/alarm-clock"; +import { Compass } from "@/components/animate-ui/icons/compass"; import Setting from "@/pages/Setting"; import { cn } from "@/lib/utils"; import { Hammer } from "@/components/animate-ui/icons/hammer"; @@ -21,7 +20,6 @@ import Browser from "./Dashboard/Browser"; import folderIcon from "@/assets/Folder.svg"; import SplitText from "@/components/ui/SplitText/SplitText"; import WordCarousel from "@/components/ui/WordCarousel"; -import { Globe } from "lucide-react"; @@ -118,10 +116,8 @@ export default function Home() { v && setActiveTab(v as typeof activeTab)}> }>{t("layout.projects")} }>{t("layout.mcp-tools")} - }>{t("layout.browser")} + }>{t("layout.browser")} }>{t("layout.settings")} - } disabled>{t("layout.workers")} - } disabled>{t("layout.triggers")}
); diff --git a/src/pages/Setting/MCP.tsx b/src/pages/Setting/MCP.tsx index 01cbb9da..157d32b7 100644 --- a/src/pages/Setting/MCP.tsx +++ b/src/pages/Setting/MCP.tsx @@ -502,48 +502,58 @@ const [showSearchEngineConfig, setShowSearchEngineConfig] = useState(false); }; return ( -
-
- {showMarket ? ( -
- -
- {t("setting.mcp-market")} -
-
-
- setMarketKeyword(e.target.value)} /> +
+ {/* Header Section */} +
+
+
+ {showMarket ? ( +
+ +
+ {t("setting.mcp-market")} +
+
+
+ setMarketKeyword(e.target.value)} /> +
+
-
+ ) : ( +
+
+ {t("setting.mcp-and-tools")} +
+
+ + +
+
+ )}
- ) : ( -
-
- {t("setting.mcp-and-tools")} -
-
- - -
-
- )} +
-
+ + {/* Content Section */} +
+
+ +
{showMarket ? (
setShowMarket(false)} keyword={marketKeyword} />
) : ( <> -
+
)}
+ +
+
); } diff --git a/src/pages/Setting/components/IntegrationList.tsx b/src/pages/Setting/components/IntegrationList.tsx index 365893e5..0187e2f2 100644 --- a/src/pages/Setting/components/IntegrationList.tsx +++ b/src/pages/Setting/components/IntegrationList.tsx @@ -358,7 +358,7 @@ export default function IntegrationList({ ); return ( -
+
diff --git a/utils/__pycache__/__init__.cpython-310.pyc b/utils/__pycache__/__init__.cpython-310.pyc index a49b8fe7..57ecb1ad 100644 Binary files a/utils/__pycache__/__init__.cpython-310.pyc and b/utils/__pycache__/__init__.cpython-310.pyc differ diff --git a/utils/__pycache__/traceroot_wrapper.cpython-310.pyc b/utils/__pycache__/traceroot_wrapper.cpython-310.pyc index f5219e18..b8d9747f 100644 Binary files a/utils/__pycache__/traceroot_wrapper.cpython-310.pyc and b/utils/__pycache__/traceroot_wrapper.cpython-310.pyc differ