-
-
- Integrations
-
- }
- >
-
-
-
-
- {!detailItem ? (
-
- {
- setQuery(event.target.value);
- setVisibleCount(CONNECTION_CATALOG_PAGE_SIZE);
- }}
- aria-label={t`Search apps`}
- placeholder={t`Search apps`}
- className="h-11 rounded-xl px-4 md:text-ui-body"
- />
-
- ) : null}
-
-
)}
+ >
+ );
+
+ if (embedded) {
+ return (
+
+ {searchField}
+ {catalogBody}
+
+ );
+ }
+
+ return (
+
);
diff --git a/apps/web/src/pages/SettingsOverlay.tsx b/apps/web/src/pages/SettingsOverlay.tsx
index dc41e1c..97492ab 100644
--- a/apps/web/src/pages/SettingsOverlay.tsx
+++ b/apps/web/src/pages/SettingsOverlay.tsx
@@ -1,7 +1,17 @@
import { useLingui } from "@lingui/react/macro";
import type { AvatarStyle, SpaceMemoryConfig } from "@rakazo/contracts";
import { Button, Dialog, DialogClose, DialogContent, DialogTitle } from "@rakazo/ui-web";
-import { Brain, CloudDownload, Cpu, Gauge, Monitor, Settings, Volume2, XIcon } from "lucide-react";
+import {
+ Brain,
+ CloudDownload,
+ Cpu,
+ Gauge,
+ LayoutGrid,
+ Monitor,
+ Settings,
+ Volume2,
+ XIcon,
+} from "lucide-react";
import { type ComponentType, useEffect, useRef, useState } from "react";
import { computersAreUnavailable } from "../components/ComputersUnavailableHint";
import {
@@ -12,10 +22,12 @@ import {
} from "./AccountSettingsOverlay";
import { MemorySettingsOverlay } from "./MemorySettingsOverlay";
import { ModelSettingsOverlay } from "./ModelSettingsOverlay";
+import { PluginsOverlay } from "./PluginsOverlay";
import { VoiceSettingsOverlay } from "./VoiceSettingsOverlay";
export type SettingsSection =
| "general"
+ | "integrations"
| "models"
| "memory"
| "voice"
@@ -44,6 +56,10 @@ export function SettingsOverlay({
onMemoryConfigChange,
onClose,
onVoiceStatusMaybeChanged,
+ activeBotId,
+ onOpenMcp,
+ tradingMode,
+ onDiscoverLiveTrading,
}: {
email?: string | null;
name: string;
@@ -59,6 +75,10 @@ export function SettingsOverlay({
onMemoryConfigChange: (config: SpaceMemoryConfig | null) => void;
onClose: () => void;
onVoiceStatusMaybeChanged?: () => void | Promise
;
+ activeBotId?: string;
+ onOpenMcp?: () => void;
+ tradingMode?: "live" | "paper";
+ onDiscoverLiveTrading?: () => void;
}) {
const { t } = useLingui();
const panelRef = useRef(null);
@@ -81,6 +101,7 @@ export function SettingsOverlay({
const navItems: NavItem[] = [
{ id: "general", label: t`General`, icon: Settings },
+ { id: "integrations", label: t`Integrations`, icon: LayoutGrid },
{ id: "models", label: t`Models`, icon: Cpu },
{ id: "memory", label: t`Memory`, icon: Brain },
{ id: "voice", label: t`Voice`, icon: Volume2 },
@@ -100,7 +121,9 @@ export function SettingsOverlay({
? t`Close memory settings`
: section === "voice"
? t`Close voice settings`
- : t`Close user settings`;
+ : section === "integrations"
+ ? t`Close integrations settings`
+ : t`Close user settings`;
async function refreshVoiceStatus() {
await onVoiceStatusMaybeChanged?.();
@@ -115,7 +138,7 @@ export function SettingsOverlay({
leaveSettings(onClose);
}
- const widePane = section === "models" || section === "voice";
+ const widePane = section === "models" || section === "voice" || section === "integrations";
return (