@threatcaptain/tc-reports 0.2.20 → 0.2.21

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
@@ -52385,77 +52385,77 @@ const FinancialImpact = ({ reportData }) => {
52385
52385
  const dynamicCostBreakdown = createCostBreakdownFromSimulation(simulationData);
52386
52386
  const calculatedCost = simulationData.use_calculated_downtime === false ? simulationData.total_cost : simulationData.adjusted_total_cost;
52387
52387
  return /* @__PURE__ */ jsxs(Fragment, { children: [
52388
- /* @__PURE__ */ jsx(
52388
+ /* @__PURE__ */ jsxs(
52389
52389
  "section",
52390
52390
  {
52391
52391
  id: "financial-impact",
52392
52392
  className: "report-page text-center space-y-6 pb-8 border-b border-slate-200",
52393
- children: /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
52394
- /* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold text-slate-900", children: "Cyber Financial Impact Analysis" }),
52395
- /* @__PURE__ */ jsx("p", { className: "text-xl text-slate-600", children: "Quantifying Your Organization's Cyber Risk Exposure" })
52396
- ] })
52393
+ children: [
52394
+ /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
52395
+ /* @__PURE__ */ jsx("h1", { className: "text-4xl font-bold text-slate-900", children: "Cyber Financial Impact Analysis" }),
52396
+ /* @__PURE__ */ jsx("p", { className: "text-xl text-slate-600", children: "Quantifying Your Organization's Cyber Risk Exposure" })
52397
+ ] }),
52398
+ /* @__PURE__ */ jsxs("div", { className: "bg-red-600 rounded-lg p-6 text-white text-center", children: [
52399
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2 mb-2", children: [
52400
+ /* @__PURE__ */ jsx(DollarSign, { className: "w-8 h-8" }),
52401
+ /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold", children: "TOTAL POTENTIAL IMPACT" })
52402
+ ] }),
52403
+ /* @__PURE__ */ jsx("p", { className: "text-4xl font-bold", children: formatCurrency(calculatedCost) }),
52404
+ /* @__PURE__ */ jsxs("p", { className: "text-sm opacity-75 mt-2", children: [
52405
+ "Cost Range:  ",
52406
+ formatCurrency(calculatedCost * 0.8),
52407
+ " -  ",
52408
+ formatCurrency(calculatedCost * 1.2)
52409
+ ] })
52410
+ ] }),
52411
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
52412
+ /* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Top Industry Threats" }),
52413
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 print:grid-cols-3 gap-4", children: getIndustryThreats(clientData.industry).map((threat, index2) => /* @__PURE__ */ jsxs(
52414
+ "div",
52415
+ {
52416
+ className: "bg-red-50 border border-red-200 rounded-lg p-4 flex items-center space-x-3",
52417
+ children: [
52418
+ /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx(AlertTriangle, { className: "w-5 h-5 text-red-500" }) }),
52419
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-red-900", children: threat })
52420
+ ]
52421
+ },
52422
+ index2
52423
+ )) })
52424
+ ] }),
52425
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 print:grid-cols-2 gap-6", children: [
52426
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
52427
+ /* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Industry Risk Profile" }),
52428
+ /* @__PURE__ */ jsxs(
52429
+ "div",
52430
+ {
52431
+ className: `inline-flex px-3 py-1 rounded-full text-sm font-medium ${riskLevel.color}`,
52432
+ children: [
52433
+ riskLevel.level,
52434
+ " Risk"
52435
+ ]
52436
+ }
52437
+ ),
52438
+ /* @__PURE__ */ jsxs("p", { className: "text-slate-600", children: [
52439
+ clientData.industry === "Healthcare" && "Healthcare organizations face elevated cyber risks due to valuable PHI data that commands high prices on dark web markets.",
52440
+ clientData.industry === "Financial Services" && "Financial institutions are prime targets due to direct access to funds and sensitive financial data.",
52441
+ clientData.industry === "Manufacturing" && "Manufacturing companies face operational technology risks that can halt production and supply chains.",
52442
+ !["Healthcare", "Financial Services", "Manufacturing"].includes(
52443
+ clientData.industry
52444
+ ) && "Your industry faces specific cyber risks that require tailored protection strategies."
52445
+ ] })
52446
+ ] }),
52447
+ /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
52448
+ /* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Key Risk Factors" }),
52449
+ /* @__PURE__ */ jsx("div", { className: "space-y-1", children: getIndustryThreats(clientData.industry).map((threat, index2) => /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
52450
+ /* @__PURE__ */ jsx(AlertTriangle, { className: "w-4 h-4 text-red-500" }),
52451
+ /* @__PURE__ */ jsx("span", { className: "text-sm", children: threat })
52452
+ ] }, index2)) })
52453
+ ] })
52454
+ ] })
52455
+ ]
52397
52456
  }
52398
52457
  ),
52399
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6", children: [
52400
- /* @__PURE__ */ jsxs("div", { className: "bg-red-600 rounded-lg p-6 text-white text-center", children: [
52401
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2 mb-2", children: [
52402
- /* @__PURE__ */ jsx(DollarSign, { className: "w-8 h-8" }),
52403
- /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold", children: "TOTAL POTENTIAL IMPACT" })
52404
- ] }),
52405
- /* @__PURE__ */ jsx("p", { className: "text-4xl font-bold", children: formatCurrency(calculatedCost) }),
52406
- /* @__PURE__ */ jsxs("p", { className: "text-sm opacity-75 mt-2", children: [
52407
- "Cost Range:  ",
52408
- formatCurrency(calculatedCost * 0.8),
52409
- " -  ",
52410
- formatCurrency(calculatedCost * 1.2)
52411
- ] })
52412
- ] }),
52413
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
52414
- /* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Top Industry Threats" }),
52415
- /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: getIndustryThreats(clientData.industry).map((threat, index2) => /* @__PURE__ */ jsxs(
52416
- "div",
52417
- {
52418
- className: "bg-red-50 border border-red-200 rounded-lg p-4 flex items-center space-x-3",
52419
- children: [
52420
- /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx(AlertTriangle, { className: "w-5 h-5 text-red-500" }) }),
52421
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-red-900", children: threat })
52422
- ]
52423
- },
52424
- index2
52425
- )) })
52426
- ] }),
52427
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
52428
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
52429
- /* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Industry Risk Profile" }),
52430
- /* @__PURE__ */ jsxs(
52431
- "div",
52432
- {
52433
- className: `inline-flex px-3 py-1 rounded-full text-sm font-medium ${riskLevel.color}`,
52434
- children: [
52435
- riskLevel.level,
52436
- " Risk"
52437
- ]
52438
- }
52439
- ),
52440
- /* @__PURE__ */ jsxs("p", { className: "text-slate-600", children: [
52441
- clientData.industry === "Healthcare" && "Healthcare organizations face elevated cyber risks due to valuable PHI data that commands high prices on dark web markets.",
52442
- clientData.industry === "Financial Services" && "Financial institutions are prime targets due to direct access to funds and sensitive financial data.",
52443
- clientData.industry === "Manufacturing" && "Manufacturing companies face operational technology risks that can halt production and supply chains.",
52444
- !["Healthcare", "Financial Services", "Manufacturing"].includes(
52445
- clientData.industry
52446
- ) && "Your industry faces specific cyber risks that require tailored protection strategies."
52447
- ] })
52448
- ] }),
52449
- /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
52450
- /* @__PURE__ */ jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Key Risk Factors" }),
52451
- /* @__PURE__ */ jsx("div", { className: "space-y-1", children: getIndustryThreats(clientData.industry).map((threat, index2) => /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-2", children: [
52452
- /* @__PURE__ */ jsx(AlertTriangle, { className: "w-4 h-4 text-red-500" }),
52453
- /* @__PURE__ */ jsx("span", { className: "text-sm", children: threat })
52454
- ] }, index2)) })
52455
- ] })
52456
- ] })
52457
- ] }),
52458
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
52458
+ /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-b border-slate-200 pt-8", children: [
52459
52459
  /* @__PURE__ */ jsxs("div", { children: [
52460
52460
  /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Detailed Financial Breakdown" }),
52461
52461
  /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Understanding the components of the total potential cost" })
@@ -52512,7 +52512,7 @@ const FinancialImpact = ({ reportData }) => {
52512
52512
  }) })
52513
52513
  ] })
52514
52514
  ] }),
52515
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
52515
+ /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 print:grid-cols-2 gap-6", children: [
52516
52516
  /* @__PURE__ */ jsxs("div", { className: "bg-white border border-slate-200 rounded-lg p-6", children: [
52517
52517
  /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-4", children: "Attack Scenario" }),
52518
52518
  /* @__PURE__ */ jsxs("div", { className: "space-y-3 text-sm", children: [
@@ -52561,7 +52561,7 @@ const FinancialImpact = ({ reportData }) => {
52561
52561
  ] })
52562
52562
  ] })
52563
52563
  ] }),
52564
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
52564
+ /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-b border-slate-200 pt-8", children: [
52565
52565
  /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
52566
52566
  /* @__PURE__ */ jsx("div", { className: "w-8 h-8 bg-blue-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "text-white text-lg", children: "?" }) }),
52567
52567
  /* @__PURE__ */ jsxs("div", { children: [
@@ -52608,26 +52608,26 @@ const FinancialImpact = ({ reportData }) => {
52608
52608
  ] }) })
52609
52609
  ] }),
52610
52610
  /* @__PURE__ */ jsx("p", { className: "text-slate-700 mt-4", children: "This ensures the analysis reflects both likelihood and financial impact, helping you prioritize the risks most relevant to your clients." })
52611
+ ] })
52612
+ ] })
52613
+ ] }),
52614
+ /* @__PURE__ */ jsx("section", { className: "report-page space-y-6 pt-8", children: /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", { className: "bg-yellow-50 border border-yellow-200 rounded-lg p-6", children: [
52615
+ /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-2", children: "Important Notes" }),
52616
+ /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2", children: [
52617
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
52618
+ /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
52619
+ /* @__PURE__ */ jsx("span", { children: "This analysis is based on industry norms and common threat patterns." })
52611
52620
  ] }),
52612
- /* @__PURE__ */ jsxs("div", { className: "bg-yellow-50 border border-yellow-200 rounded-lg p-6", children: [
52613
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-2", children: "Important Notes" }),
52614
- /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2", children: [
52615
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
52616
- /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
52617
- /* @__PURE__ */ jsx("span", { children: "This analysis is based on industry norms and common threat patterns." })
52618
- ] }),
52619
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
52620
- /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
52621
- /* @__PURE__ */ jsx("span", { children: "Actual breach outcomes and costs may vary based on the event's scope and response quality." })
52622
- ] }),
52623
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
52624
- /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
52625
- /* @__PURE__ */ jsx("span", { children: "This report is intended to guide investment and preparedness—not to predict specific future events." })
52626
- ] })
52627
- ] })
52621
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
52622
+ /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "" }),
52623
+ /* @__PURE__ */ jsx("span", { children: "Actual breach outcomes and costs may vary based on the event's scope and response quality." })
52624
+ ] }),
52625
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
52626
+ /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
52627
+ /* @__PURE__ */ jsx("span", { children: "This report is intended to guide investment and preparedness—not to predict specific future events." })
52628
52628
  ] })
52629
52629
  ] })
52630
- ] })
52630
+ ] }) }) })
52631
52631
  ] });
52632
52632
  };
52633
52633
  const ASSESSMENT_CATEGORIES = {
@@ -53278,23 +53278,21 @@ const ReportBuilder = ({
53278
53278
  /* @__PURE__ */ jsx("span", { className: "text-slate-900", children: (/* @__PURE__ */ new Date()).toLocaleDateString() })
53279
53279
  ] })
53280
53280
  ] }),
53281
- /* @__PURE__ */ jsxs("div", { className: "p-4 text-left space-y-2", children: [
53282
- /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold text-slate-900 text-left", children: "Executive Summary" }),
53283
- /* @__PURE__ */ jsx("h3", { className: "text-base font-semibold text-slate-900", children: "Why This Assessment Matters" }),
53284
- editExecutiveSummary ? /* @__PURE__ */ jsxs(Fragment, { children: [
53285
- /* @__PURE__ */ jsx(
53286
- Textarea,
53287
- {
53288
- value: displayExecutiveSummary(clientData),
53289
- onChange: (e) => onConfigChange("executiveSummary", e.target.value),
53290
- placeholder: "Executive summary content...",
53291
- rows: 6,
53292
- className: "resize-none"
53293
- }
53294
- ),
53295
- /* @__PURE__ */ jsx(Button$1, { onClick: () => setEditExecutiveSummary(false), children: "Save" })
53296
- ] }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("p", { className: "text-slate-700 leading-relaxed whitespace-pre-line text-sm", children: displayExecutiveSummary(clientData) }) })
53297
- ] })
53281
+ /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold text-slate-900 text-left mb-2", children: "Executive Summary" }),
53282
+ /* @__PURE__ */ jsx("h3", { className: "text-base font-semibold text-slate-900", children: "Why This Assessment Matters" }),
53283
+ editExecutiveSummary ? /* @__PURE__ */ jsxs(Fragment, { children: [
53284
+ /* @__PURE__ */ jsx(
53285
+ Textarea,
53286
+ {
53287
+ value: displayExecutiveSummary(clientData),
53288
+ onChange: (e) => onConfigChange("executiveSummary", e.target.value),
53289
+ placeholder: "Executive summary content...",
53290
+ rows: 6,
53291
+ className: "resize-none"
53292
+ }
53293
+ ),
53294
+ /* @__PURE__ */ jsx(Button$1, { onClick: () => setEditExecutiveSummary(false), children: "Save" })
53295
+ ] }) : /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx("p", { className: "text-slate-700 leading-relaxed whitespace-pre-line text-sm", children: displayExecutiveSummary(clientData) }) })
53298
53296
  ] }),
53299
53297
  showFinancialImpact && /* @__PURE__ */ jsx(Fragment, { children: financialSimulationData && Object.keys(financialSimulationData).length > 0 ? /* @__PURE__ */ jsx(
53300
53298
  FinancialImpact,
@@ -53318,7 +53316,7 @@ const ReportBuilder = ({
53318
53316
  reportData: { clientData, insuranceHealthData, mspInfo }
53319
53317
  }
53320
53318
  ) : /* @__PURE__ */ jsx(Warning, { children: "We can't find an insurance assessment. Are you sure you ran this assessment?" }) }),
53321
- /* @__PURE__ */ jsxs("footer", { className: "report-page text-center pt-8 border-t border-slate-200", children: [
53319
+ /* @__PURE__ */ jsxs("footer", { className: "text-center pt-8 border-t border-slate-200", children: [
53322
53320
  /* @__PURE__ */ jsx("h4", { children: "Professional Recommendation" }),
53323
53321
  /* @__PURE__ */ jsxs("p", { className: "text-sm text-slate-500", children: [
53324
53322
  "This assessment uses ",