diff --git a/src/app/dashboard/settings/page.tsx b/src/app/dashboard/settings/page.tsx index 01e46f0..ba971a5 100644 --- a/src/app/dashboard/settings/page.tsx +++ b/src/app/dashboard/settings/page.tsx @@ -3,20 +3,13 @@ import * as React from "react" import { IconAdjustments, - IconBrain, IconPalette, IconPlug, - IconPuzzle, IconRobot, - IconTerminal2, IconUsers, } from "@tabler/icons-react" import { useIsMobile } from "@/hooks/use-mobile" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Label } from "@/components/ui/label" -import { Separator } from "@/components/ui/separator" import { Select, SelectContent, @@ -24,14 +17,13 @@ import { SelectTrigger, SelectValue, } from "@/components/ui/select" +import { Separator } from "@/components/ui/separator" import { cn } from "@/lib/utils" import { PreferencesTab } from "@/components/settings/preferences-tab" import { AppearanceTab } from "@/components/settings/appearance-tab" import { TeamTab } from "@/components/settings/team-tab" -import { AIModelTab } from "@/components/settings/ai-model-tab" -import { SkillsTab } from "@/components/settings/skills-tab" -import { ClaudeCodeTab } from "@/components/settings/claude-code-tab" +import { AgentTab } from "@/components/settings/agent-tab" import { NetSuiteConnectionStatus } from "@/components/netsuite/connection-status" import { SyncControls } from "@/components/netsuite/sync-controls" import { GoogleDriveConnectionStatus } from "@/components/google/connection-status" @@ -40,46 +32,17 @@ const SETTINGS_TABS = [ { value: "preferences", label: "Preferences", icon: IconAdjustments }, { value: "appearance", label: "Theme", icon: IconPalette }, { value: "team", label: "Team", icon: IconUsers }, - { value: "ai-model", label: "AI Model", icon: IconBrain }, { value: "agent", label: "Agent", icon: IconRobot }, - { value: "skills", label: "Skills", icon: IconPuzzle }, { value: "integrations", label: "Integrations", icon: IconPlug }, - { value: "claude-code", label: "Code Bridge", icon: IconTerminal2 }, ] as const type SectionValue = (typeof SETTINGS_TABS)[number]["value"] // wide sections get unconstrained width for tables/complex layouts const WIDE_SECTIONS = new Set([ - "appearance", "team", "ai-model", "claude-code", + "appearance", "team", "agent", ]) -function AgentSection() { - const [signetId, setSignetId] = React.useState("") - - return ( -
-
- - setSignetId(e.target.value)} - placeholder="0x..." - className="h-9 max-w-sm font-mono" - type="password" - /> -
- - -
- ) -} - function IntegrationsSection() { return (
@@ -106,16 +69,10 @@ export default function SettingsPage() { return case "team": return - case "ai-model": - return case "agent": - return - case "skills": - return + return case "integrations": return - case "claude-code": - return default: return null } diff --git a/src/components/settings-modal.tsx b/src/components/settings-modal.tsx index bd5de9d..318bb6e 100755 --- a/src/components/settings-modal.tsx +++ b/src/components/settings-modal.tsx @@ -29,10 +29,8 @@ import { Textarea } from "@/components/ui/textarea" import { NetSuiteConnectionStatus } from "@/components/netsuite/connection-status" import { SyncControls } from "@/components/netsuite/sync-controls" import { GoogleDriveConnectionStatus } from "@/components/google/connection-status" -import { SkillsTab } from "@/components/settings/skills-tab" -import { AIModelTab } from "@/components/settings/ai-model-tab" import { AppearanceTab } from "@/components/settings/appearance-tab" -import { ClaudeCodeTab } from "@/components/settings/claude-code-tab" +import { AgentTab } from "@/components/settings/agent-tab" import { TeamTab } from "@/components/settings/team-tab" import { useNative } from "@/hooks/use-native" import { useBiometricAuth } from "@/hooks/use-biometric-auth" @@ -44,9 +42,7 @@ const SETTINGS_TABS = [ { value: "notifications", label: "Notifications" }, { value: "appearance", label: "Theme" }, { value: "integrations", label: "Integrations" }, - { value: "ai-model", label: "AI Model" }, { value: "agent", label: "Agent" }, - { value: "skills", label: "Skills" }, ] as const const CREATE_SETTING_TAB = { @@ -91,7 +87,6 @@ export function SettingsModal({ const [pushNotifs, setPushNotifs] = React.useState(true) const [weeklyDigest, setWeeklyDigest] = React.useState(false) const [timezone, setTimezone] = React.useState("America/New_York") - const [signetId, setSignetId] = React.useState("") const [customTabs, setCustomTabs] = React.useState>([]) const [activeTab, setActiveTab] = React.useState("general") const [newSettingName, setNewSettingName] = React.useState("") @@ -263,41 +258,11 @@ export function SettingsModal({ - -
) - case "ai-model": - return
- case "agent": - return ( -
-
- - setSignetId(e.target.value)} - placeholder="0x..." - className="h-9 font-mono" - type="password" - /> -
- - - - -
- ) - - case "skills": - return
+ return
case CREATE_SETTING_TAB.value: return ( diff --git a/src/components/settings/agent-tab.tsx b/src/components/settings/agent-tab.tsx new file mode 100644 index 0000000..b1ba2d8 --- /dev/null +++ b/src/components/settings/agent-tab.tsx @@ -0,0 +1,96 @@ +"use client" + +import * as React from "react" +import { + BrainCircuit, + Blocks, + Cable, + Fingerprint, +} from "lucide-react" + +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Label } from "@/components/ui/label" +import { Separator } from "@/components/ui/separator" +import { AIModelTab } from "@/components/settings/ai-model-tab" +import { SkillsTab } from "@/components/settings/skills-tab" +import { ClaudeCodeTab } from "@/components/settings/claude-code-tab" +import { cn } from "@/lib/utils" + +const SUB_TABS = [ + { value: "model", label: "Model", icon: BrainCircuit }, + { value: "skills", label: "Skills", icon: Blocks }, + { value: "bridge", label: "Bridge", icon: Cable }, + { value: "identity", label: "Identity", icon: Fingerprint }, +] as const + +type SubTab = (typeof SUB_TABS)[number]["value"] + +export function AgentTab(): React.ReactElement { + const [activeSubTab, setActiveSubTab] = + React.useState("model") + const [signetId, setSignetId] = React.useState("") + + return ( +
+
+ {SUB_TABS.map((tab) => { + const isActive = activeSubTab === tab.value + const Icon = tab.icon + return ( + + ) + })} +
+ +
+ {activeSubTab === "model" && } + {activeSubTab === "skills" && } + {activeSubTab === "bridge" && } + {activeSubTab === "identity" && ( +
+
+ + setSignetId(e.target.value)} + placeholder="0x..." + className="h-9 font-mono" + type="password" + /> +
+ + + + +
+ )} +
+
+ ) +}