@greenarmor/ges-web-dashboard 1.2.7 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -190,7 +190,7 @@ export function collectDashboardData(projectPath) {
190
190
  projectName: config?.project_name || "Unknown Project",
191
191
  projectType: config?.project_type || "unknown",
192
192
  frameworks: allFrameworks,
193
- gesfVersion: "1.2.7",
193
+ gesfVersion: "1.3.0",
194
194
  score,
195
195
  controls,
196
196
  findings,
package/dist/template.js CHANGED
@@ -385,6 +385,42 @@ export function renderDashboard(data) {
385
385
  </div>
386
386
  </div>
387
387
 
388
+ ${(() => {
389
+ const installedPacks = packs.filter(p => p.installed);
390
+ if (installedPacks.length === 0)
391
+ return '';
392
+ return `<div class="card" style="margin-top:16px;">
393
+ <div class="card-title">Installed Policy Packs (${installedPacks.length})</div>
394
+ <div class="grid grid-2" style="gap:12px;margin-top:8px;">
395
+ ${installedPacks.map(p => {
396
+ const pct = p.score;
397
+ const color = pct >= 80 ? '#22c55e' : pct >= 60 ? '#eab308' : pct >= 40 ? '#f97316' : '#ef4444';
398
+ const isImplemented = p.notImplementedCount < p.controlCount;
399
+ const statusBadge = isImplemented
400
+ ? '<span style="background:#d1fae5;color:#065f46;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600;">Implemented</span>'
401
+ : '<span style="background:#fef3c7;color:#92400e;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:600;">Not Implemented</span>';
402
+ const borderStyle = isImplemented ? '1px solid #e5e7eb' : '1px dashed #d1d5db;opacity:0.85;';
403
+ return `<div class="pack-mini" onclick="loadPackDetail('${p.id}')" style="cursor:pointer;padding:12px;border:${borderStyle};border-radius:8px;">
404
+ <div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;">
405
+ <div style="font-size:13px;font-weight:600;">${escapeHtml(p.name)}</div>
406
+ <div style="display:flex;align-items:center;gap:8px;">
407
+ ${statusBadge}
408
+ <div style="font-size:16px;font-weight:700;color:${color};">${pct}%</div>
409
+ </div>
410
+ </div>
411
+ ${scoreBarHtml(pct)}
412
+ <div style="margin-top:6px;font-size:11px;color:#6b7280;">
413
+ ${p.controlCount} controls &middot;
414
+ <span style="color:#22c55e;">${p.passedCount - p.notApplicableCount} pass</span> &middot;
415
+ <span style="color:#ef4444;">${p.failedCount} fail</span> &middot;
416
+ <span style="color:#6b7280;">${p.notImplementedCount} not impl</span>
417
+ </div>
418
+ </div>`;
419
+ }).join('')}
420
+ </div>
421
+ </div>`;
422
+ })()}
423
+
388
424
  <div class="grid grid-2">
389
425
  <div class="card">
390
426
  <div class="card-title">Security Findings Detail (${findings.length})</div>
@@ -425,9 +461,16 @@ export function renderDashboard(data) {
425
461
  </div>
426
462
 
427
463
  <div class="card">
428
- <div class="card-title">Active Frameworks</div>
464
+ <div class="card-title">Active Frameworks &amp; Installed Packs</div>
429
465
  <div style="display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;">
430
- ${data.frameworks.map(fw => `<span class="tag" style="background:#d1fae5;color:#065f46;">${escapeHtml(fw)}</span>`).join('') || '<span style="color:#9ca3af;">No frameworks configured</span>'}
466
+ ${data.frameworks.map(fw => `<span class="tag" style="background:#d1fae5;color:#065f46;">${escapeHtml(fw)}</span>`).join('')}
467
+ ${packs.filter(p => p.installed).map(p => {
468
+ const isImpl = p.notImplementedCount < p.controlCount;
469
+ const bg = isImpl ? '#dbeafe' : '#fef3c7';
470
+ const cl = isImpl ? '#1e40af' : '#92400e';
471
+ return `<span class="tag" style="background:${bg};color:${cl};">${escapeHtml(p.name)}</span>`;
472
+ }).join('')}
473
+ ${data.frameworks.length === 0 && packs.filter(p => p.installed).length === 0 ? '<span style="color:#9ca3af;">No frameworks or packs installed</span>' : ''}
431
474
  </div>
432
475
  </div>
433
476
  </div>
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "dependencies": {
3
- "@greenarmor/ges-audit-engine": "1.2.7",
4
- "@greenarmor/ges-core": "1.2.7",
5
- "@greenarmor/ges-policy-engine": "1.2.7",
6
- "@greenarmor/ges-scoring-engine": "1.2.7"
3
+ "@greenarmor/ges-audit-engine": "1.3.0",
4
+ "@greenarmor/ges-core": "1.3.0",
5
+ "@greenarmor/ges-policy-engine": "1.3.0",
6
+ "@greenarmor/ges-scoring-engine": "1.3.0"
7
7
  },
8
8
  "description": "GESF Web Dashboard - Visual compliance dashboard for teams",
9
9
  "devDependencies": {
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "type": "module",
42
42
  "types": "./dist/index.d.ts",
43
- "version": "1.2.7",
43
+ "version": "1.3.0",
44
44
  "scripts": {
45
45
  "build": "tsc",
46
46
  "clean": "rm -rf dist tsconfig.tsbuildinfo",