This document describes the design structure for ai_agent_dashboard.pen. Use these batch_design operations when the Pencil MCP server is connected.
#0F172A (deep slate – evaluation/analytics look)Run these operations via batch_design after opening ai_agent_dashboard.pen:
root=I("", {width: 393, height: 852, backgroundColor: "#0F172A"})
blob1=I("root", {type: "ellipse", width: 280, height: 280, x: -60, y: -80, fill: "linear-gradient(135deg, #7F00FF 0%, #00C6FF 100%)", opacity: 0.5, filter: "blur(80px)"})
blob2=I("root", {type: "ellipse", width: 200, height: 200, x: -50, y: 552, fill: "linear-gradient(225deg, #00C6FF 0%, #7F00FF 100%)", opacity: 0.5, filter: "blur(80px)"})
blob3=I("root", {type: "ellipse", width: 150, height: 150, x: 333, y: 400, fill: "linear-gradient(180deg, #7F00FF 0%, #00C6FF 50%)", opacity: 0.5, filter: "blur(80px)"})
dynamicIsland=I("root", {type: "rect", width: 126, height: 37, x: 133.5, y: 12, fill: "#000000", borderRadius: 20})
header=I("root", {type: "frame", layout: "row", y: 60, padding: 20})
title=I("header", {type: "text", content: "AI Insight", fontSize: 24, fontWeight: 600, color: "#FFFFFF"})
avatar=I("header", {type: "ellipse", width: 40, height: 40, fill: "linear-gradient(135deg, #7F00FF 0%, #00C6FF 100%)", border: "2px solid rgba(255,255,255,0.3)"})
heroCard=I("root", {type: "frame", y: 164, x: 20, width: 353, padding: 24, background: "rgba(30,41,59,0.7)", backdropFilter: "blur(20px)", border: "1px solid rgba(100,116,139,0.4)", borderRadius: 24})
heroLabel=I("heroCard", {type: "text", content: "Total Followers", fontSize: 14, color: "rgba(226,232,240,0.85)"})
heroValue=I("heroCard", {type: "text", content: "128.5K", fontSize: 36, fontWeight: 700, color: "#f8fafc"})
heroBadge=I("heroCard", {type: "frame", content: "+1.2K", background: "rgba(34,197,94,0.3)", color: "#22c55e", padding: "6px 12px", borderRadius: 12})
statsGrid=I("root", {type: "frame", layout: "row", y: 334, x: 20, gap: 12})
statPlays=I("statsGrid", {type: "frame", flex: 1, padding: 16, background: "rgba(30,41,59,0.7)", backdropFilter: "blur(20px)", border: "1px solid rgba(100,116,139,0.4)", borderRadius: 24})
statLikes=I("statsGrid", {type: "frame", flex: 1, padding: 16, background: "rgba(30,41,59,0.7)", backdropFilter: "blur(20px)", border: "1px solid rgba(100,116,139,0.4)", borderRadius: 24})
statShares=I("statsGrid", {type: "frame", flex: 1, padding: 16, background: "rgba(30,41,59,0.7)", backdropFilter: "blur(20px)", border: "1px solid rgba(100,116,139,0.4)", borderRadius: 24})
trendCard=I("root", {type: "frame", y: 434, x: 20, width: 353, padding: 20, background: "rgba(30,41,59,0.7)", backdropFilter: "blur(20px)", border: "1px solid rgba(100,116,139,0.4)", borderRadius: 24})
trendTitle=I("trendCard", {type: "text", content: "Fan Trend (7d)", fontSize: 16, fontWeight: 600, color: "#f8fafc"})
chartBars=I("trendCard", {type: "frame", layout: "row", gap: 8, height: 80})
genReportBtn=I("root", {type: "frame", y: 100, x: 20, width: 353, height: 48, layout: "row", justifyContent: "center", alignItems: "center", fill: "linear-gradient(135deg, #6366F1 0%, #8B5CF6 100%)", borderRadius: 16, name: "Generate Report"})
genReportLabel=I("genReportBtn", {type: "text", content: "Generate Report", fontSize: 16, fontWeight: 600, color: "#FFFFFF"})
videoSection=I("root", {type: "frame", y: 574, x: 20, width: 353})
videoTitle=I("videoSection", {type: "text", content: "Recent Videos", fontSize: 18, fontWeight: 600, marginBottom: 12, color: "#f8fafc"})
tabBar=I("root", {type: "frame", position: "fixed", bottom: 0, width: 393, height: 83, layout: "row", background: "rgba(15,23,42,0.9)", backdropFilter: "blur(20px)", borderTop: "1px solid rgba(100,116,139,0.3)"})
background: rgba(30,41,59,0.7), backdrop-filter: blur(20px), border: 1px solid rgba(100,116,139,0.4)borderRadius: 24 (equivalent to rounded-3xl)#f8fafc, secondary rgba(226,232,240,0.85) for accessible contrast on slateAn HTML prototype is available at designs/ai_agent_dashboard.html – open it in a browser to preview the design.