feat: split AI Input Agent into Copy/Type Agent submenu with settings

Renames the sidebar entry to "AI Copy/Type Agent" with Copy Agent, Type
Agent, and Settings sub-pages. Settings shows the server's LAN IP
address (via a new /api/ai/network-info endpoint) since it changes
depending on which office the app is running in.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 16:40:24 -04:00
co-authored by Claude Sonnet 5
parent 802dbedbfb
commit 1190bc0494
6 changed files with 198 additions and 7 deletions
@@ -35,6 +35,8 @@ import {
ShoppingCart,
Search,
KeyRound,
Copy,
Keyboard,
} from "lucide-react";
import { cn } from "@/lib/utils";
import { useMemo, useState, useEffect } from "react";
@@ -68,6 +70,7 @@ export function Sidebar() {
if (location.startsWith("/chart")) s.add("/chart");
if (location.startsWith("/settings")) s.add("/settings");
if (location.startsWith("/dental-shopping")) s.add("/dental-shopping");
if (location.startsWith("/ai-input-agent")) s.add("/ai-input-agent");
return s;
});
@@ -81,6 +84,9 @@ export function Sidebar() {
if (location.startsWith("/dental-shopping")) {
setExpandedPaths((prev) => new Set([...prev, "/dental-shopping"]));
}
if (location.startsWith("/ai-input-agent")) {
setExpandedPaths((prev) => new Set([...prev, "/ai-input-agent"]));
}
}, [location]);
const togglePath = (path: string) => {
@@ -177,9 +183,26 @@ export function Sidebar() {
icon: <GraduationCap className="h-5 w-5 text-lime-600" />,
},
{
name: "AI Input Agent",
name: "AI Copy/Type Agent",
path: "/ai-input-agent",
icon: <Bot className="h-5 w-5 text-violet-500" />,
children: [
{
name: "Copy Agent",
path: "/ai-input-agent/copy-agent",
icon: <Copy className="h-4 w-4 text-violet-400" />,
},
{
name: "Type Agent",
path: "/ai-input-agent/type-agent",
icon: <Keyboard className="h-4 w-4 text-violet-400" />,
},
{
name: "Settings",
path: "/ai-input-agent/settings",
icon: <Settings className="h-4 w-4 text-violet-400" />,
},
],
},
{
name: "AI Dental Shopping",