// Dashboard — the workspace home screen. Formal, information-dense.
const MODULES = [
{ key: 'draw', name: 'ChitraKar Draw', tag: 'DRAW', icon: I.vector, desc: 'Vector graphics · Illustration', color: 'var(--ink)' },
{ key: 'photo', name: 'ChitraKar Photo', tag: 'PHOTO', icon: I.photo, desc: 'Raster editing · Retouch', color: 'var(--ink)' },
{ key: 'publish', name: 'ChitraKar Publisher', tag: 'PUB', icon: I.publish,desc: 'Layout · Print · Prepress', color: 'var(--ink)' },
{ key: 'ui', name: 'ChitraKar UI', tag: 'UI', icon: I.ui, desc: 'Interface · Prototype', color: 'var(--ink)' },
{ key: 'ai', name: 'ChitraKar AI Studio', tag: 'AI', icon: I.ai, desc: 'Generative · Assist', color: 'var(--gold)' },
{ key: 'brand', name: 'ChitraKar Brand Hub', tag: 'BRAND', icon: I.brand, desc: 'Kits · Assets · Governance', color: 'var(--ink)' },
{ key: 'collab', name: 'ChitraKar Collaborate',tag: 'COLLAB', icon: I.collab, desc: 'Review · Approval workflow', color: 'var(--ink)' },
{ key: 'print', name: 'ChitraKar Print', tag: 'PRINT', icon: I.print, desc: 'Preflight · Production', color: 'var(--ink)' },
{ key: 'cloud', name: 'ChitraKar Cloud', tag: 'CLOUD', icon: I.cloud, desc: 'Storage · Sync · Backup', color: 'var(--ink)' },
{ key: 'admin', name: 'ChitraKar Admin', tag: 'ADMIN', icon: I.admin, desc: 'Users · Security · Audit', color: 'var(--ink)' },
];
const RECENT = [
{ id: 'DGN-2864', title: 'Tender Notice — Rural Development', client: 'Ministry of Rural Development', updated: '14 min ago', status: 'draft', module: 'PUB', pages: '4 pages', size: 'A4' },
{ id: 'DGN-2851', title: 'Digital India — Awareness Poster', client: 'MeitY', updated: '2 hr ago', status: 'review', module: 'DRAW', pages: '1 artboard', size: 'A3 landscape' },
{ id: 'DGN-2847', title: 'Kisan Credit Card — Bilingual', client: 'NABARD', updated: 'Yesterday', status: 'approved', module: 'PUB', pages: '2 pages', size: '85×54 mm' },
{ id: 'DGN-2842', title: 'Annual Report — Cover · Section II', client: 'Bureau of Indian Standards', updated: '2 days ago', status: 'review', module: 'PUB', pages: '48 pages', size: 'A4' },
{ id: 'DGN-2838', title: 'Aarogya Setu — Kiosk Interface', client: 'NIC · GoI', updated: '3 days ago', status: 'draft', module: 'UI', pages: '12 screens', size: '1920×1080' },
{ id: 'DGN-2831', title: 'Swachh Bharat — Certificate Batch', client: 'MoHUA', updated: '5 days ago', status: 'published',module: 'PUB', pages: '1,247 gen.', size: 'A4' },
{ id: 'DGN-2825', title: 'Republic Day Greeting — Draft', client: 'Internal', updated: '1 wk ago', status: 'archived', module: 'DRAW', pages: '1 artboard', size: '1080×1080' },
];
const TEMPLATE_CATS = [
{ name: 'Government Notice', count: 148, hero: true },
{ name: 'Tender Cover', count: 42 },
{ name: 'Certificate', count: 96 },
{ name: 'Report · Annual', count: 31 },
{ name: 'ID Card', count: 58 },
{ name: 'Business Card', count: 74 },
{ name: 'Poster · Awareness', count: 112 },
{ name: 'Letterhead', count: 39 },
];
const STATUS_TONE = {
draft: 'neutral',
review: 'warn',
approved: 'ok',
published: 'info',
archived: 'neutral',
};
function Dashboard({ onOpenModule, onOpenProject }) {
return (
{/* Top brand bar */}
{/* Ministry / org header */}
On-Premises
v3.2.14 · LTS
Ministry of Rural Development
ग्रामीण विकास मंत्रालय
Design Cell · Krishi Bhavan, New Delhi · Registered Users 214 · Active Now 27
}>Search designs⌘K
}>Import
} onClick={() => onOpenModule('draw')}>New Design
{/* Section: Modules */}
{MODULES.map((m) => (
onOpenModule(m.key)} />
))}
{/* Two-col: Recent designs + Sidebar */}
);
}
function DashboardTopBar() {
return (
ChitraKar
Enterprise
Workspace
Assets
Reviews
Reports
Admin
SSO · KERBEROS · dev@mord.gov.in
} size={26} />
} size={26} />
);
}
function Logo({ size = 22 }) {
return (
च
);
}
function SectionHeader({ label, caption, right, style }) {
return (
{caption && · {caption}}
{right}
);
}
function ModuleTile({ mod, onClick }) {
const [hover, setHover] = React.useState(false);
return (
);
}
function RecentTable({ rows, onOpen }) {
return (
ID
Title
Client / Dept.
Updated
Status
{rows.map((r, i) => (
onOpen(r)}
style={{
display: 'grid',
gridTemplateColumns: '82px 1fr 200px 100px 110px 32px',
fontSize: 12.5,
padding: '10px 12px',
borderBottom: i < rows.length - 1 ? '1px solid var(--line)' : 'none',
cursor: 'pointer',
alignItems: 'center',
transition: 'background 80ms',
}}
onMouseEnter={(e) => e.currentTarget.style.background = 'var(--bg-elevated)'}
onMouseLeave={(e) => e.currentTarget.style.background = 'transparent'}
>
{r.id}
{r.title}
[{r.module}] · {r.pages} · {r.size}
{r.client}
{r.updated}
{r.status}
))}
);
}
function TemplateList({ items }) {
return (
{items.map((t, i) => (
e.currentTarget.style.background = 'var(--bg-elevated)'}
onMouseLeave={(e) => e.currentTarget.style.background = 'transparent'}
>
{t.name}
{String(t.count).padStart(3, '0')}
))}
} style={{ width: '100%', justifyContent: 'space-between' }}>Browse all 748
);
}
function ApprovalStack() {
const items = [
{ title: 'Tender Notice — MoRD', from: 'S. Iyer', role: 'Reviewer', stage: '2/4', ago: '17 min' },
{ title: 'BSNL Rebrand — Assets', from: 'R. Krishnan', role: 'Under Secretary', stage: '3/4', ago: '2 hr' },
{ title: 'Kisan Awareness — Set', from: 'M. Nair', role: 'Designer', stage: '1/4', ago: '4 hr' },
];
return (
{items.map((x, i) => (
{x.title}
from {x.from} · {x.role}
Stage {x.stage} · {x.ago}
))}
);
}
function SystemStack() {
const items = [
{ label: 'Storage · Cloud', value: '2.4 TB / 8 TB', pct: 30 },
{ label: 'Storage · Local', value: '412 GB / 2 TB', pct: 20 },
{ label: 'AI Inference · Q3', value: '18,244 / 50,000', pct: 36 },
{ label: 'Active Licenses', value: '214 / 300', pct: 71 },
];
return (
{items.map((x, i) => (
{x.label}
{x.value}
70 ? 'var(--status-warn)' : 'var(--ink)' }}/>
))}
);
}
Object.assign(window, { Dashboard, Logo });