feat(web): add remote start transaction feature and QR code scanning for charging

This commit is contained in:
2026-03-11 18:09:00 +08:00
parent 8ee2378c78
commit 73f0c6243a
6 changed files with 822 additions and 2 deletions

View File

@@ -10,12 +10,17 @@ import {
Person,
PlugConnection,
Thunderbolt,
ThunderboltFill,
Xmark,
Bars,
} from "@gravity-ui/icons";
import SidebarFooter from "@/components/sidebar-footer";
import { useSession } from "@/lib/auth-client";
const chargeItems = [
{ href: "/dashboard/charge", label: "立即充电", icon: ThunderboltFill, adminOnly: false },
];
const navItems = [
{ href: "/dashboard", label: "概览", icon: Thunderbolt, exact: true, adminOnly: false },
{ href: "/dashboard/charge-points", label: "充电桩", icon: PlugConnection, adminOnly: false },
@@ -49,7 +54,32 @@ function NavContent({
{/* Navigation */}
<nav className="flex flex-1 flex-col gap-0.5 overflow-y-auto p-3">
{/* Primary: Charge */}
<p className="mb-1 px-2 text-[11px] font-semibold uppercase tracking-widest text-muted">
</p>
{chargeItems.map((item) => {
const isActive = pathname === item.href || pathname.startsWith(item.href + "/");
const Icon = item.icon;
return (
<Link
key={item.href}
href={item.href}
onClick={onNavigate}
className={[
"flex items-center gap-3 rounded-lg px-3 py-2 text-sm font-medium transition-colors",
isActive
? "bg-accent/10 text-accent"
: "text-muted hover:bg-surface-tertiary hover:text-foreground",
].join(" ")}
>
<Icon className="size-4 shrink-0" />
<span>{item.label}</span>
{isActive && <span className="ml-auto h-1.5 w-1.5 rounded-full bg-accent" />}
</Link>
);
})}
<p className="mb-1 mt-3 px-2 text-[11px] font-semibold uppercase tracking-widest text-muted">
</p>
{navItems