feat: add AI Dental Shopping section with sidebar nav and Login Info page
- Add AI Dental Shopping to sidebar with Search/Tag and Login Info sub-pages - Build full-stack Login Info CRUD: save vendor name, website, username, password per user - Add ShoppingVendor Prisma model, run db push, regenerate client and Zod schemas - Add storage layer, REST API at /api/shopping-vendors/, and frontend table with add/edit/delete modal Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -30,6 +30,9 @@ import {
|
||||
Building2,
|
||||
Timer,
|
||||
BookOpen,
|
||||
ShoppingCart,
|
||||
Search,
|
||||
KeyRound,
|
||||
} from "lucide-react";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useMemo, useState, useEffect } from "react";
|
||||
@@ -62,6 +65,7 @@ export function Sidebar() {
|
||||
const s = new Set<string>();
|
||||
if (location.startsWith("/chart")) s.add("/chart");
|
||||
if (location.startsWith("/settings")) s.add("/settings");
|
||||
if (location.startsWith("/dental-shopping")) s.add("/dental-shopping");
|
||||
return s;
|
||||
});
|
||||
|
||||
@@ -72,6 +76,9 @@ export function Sidebar() {
|
||||
if (location.startsWith("/settings")) {
|
||||
setExpandedPaths((prev) => new Set([...prev, "/settings"]));
|
||||
}
|
||||
if (location.startsWith("/dental-shopping")) {
|
||||
setExpandedPaths((prev) => new Set([...prev, "/dental-shopping"]));
|
||||
}
|
||||
}, [location]);
|
||||
|
||||
const togglePath = (path: string) => {
|
||||
@@ -162,6 +169,23 @@ export function Sidebar() {
|
||||
path: "/cloud-storage",
|
||||
icon: <Cloud className="h-5 w-5 text-sky-500" />,
|
||||
},
|
||||
{
|
||||
name: "AI Dental Shopping",
|
||||
path: "/dental-shopping",
|
||||
icon: <ShoppingCart className="h-5 w-5 text-cyan-500" />,
|
||||
children: [
|
||||
{
|
||||
name: "Search / Tag",
|
||||
path: "/dental-shopping/search-tag",
|
||||
icon: <Search className="h-4 w-4 text-cyan-400" />,
|
||||
},
|
||||
{
|
||||
name: "Login Info",
|
||||
path: "/dental-shopping/login-info",
|
||||
icon: <KeyRound className="h-4 w-4 text-cyan-400" />,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
name: "Database Management",
|
||||
path: "/database-management",
|
||||
|
||||
Reference in New Issue
Block a user