@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.cjs +100 -102
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +100 -102
- package/dist/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -52403,77 +52403,77 @@ const FinancialImpact = ({ reportData }) => {
|
|
|
52403
52403
|
const dynamicCostBreakdown = createCostBreakdownFromSimulation(simulationData);
|
|
52404
52404
|
const calculatedCost = simulationData.use_calculated_downtime === false ? simulationData.total_cost : simulationData.adjusted_total_cost;
|
|
52405
52405
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
52406
|
-
/* @__PURE__ */ jsxRuntime.
|
|
52406
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
52407
52407
|
"section",
|
|
52408
52408
|
{
|
|
52409
52409
|
id: "financial-impact",
|
|
52410
52410
|
className: "report-page text-center space-y-6 pb-8 border-b border-slate-200",
|
|
52411
|
-
children:
|
|
52412
|
-
/* @__PURE__ */ jsxRuntime.
|
|
52413
|
-
|
|
52414
|
-
|
|
52411
|
+
children: [
|
|
52412
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
52413
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-4xl font-bold text-slate-900", children: "Cyber Financial Impact Analysis" }),
|
|
52414
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xl text-slate-600", children: "Quantifying Your Organization's Cyber Risk Exposure" })
|
|
52415
|
+
] }),
|
|
52416
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-red-600 rounded-lg p-6 text-white text-center", children: [
|
|
52417
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center space-x-2 mb-2", children: [
|
|
52418
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.DollarSign, { className: "w-8 h-8" }),
|
|
52419
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-bold", children: "TOTAL POTENTIAL IMPACT" })
|
|
52420
|
+
] }),
|
|
52421
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-4xl font-bold", children: formatCurrency(calculatedCost) }),
|
|
52422
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-75 mt-2", children: [
|
|
52423
|
+
"Cost Range: ",
|
|
52424
|
+
formatCurrency(calculatedCost * 0.8),
|
|
52425
|
+
" - ",
|
|
52426
|
+
formatCurrency(calculatedCost * 1.2)
|
|
52427
|
+
] })
|
|
52428
|
+
] }),
|
|
52429
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
52430
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Top Industry Threats" }),
|
|
52431
|
+
/* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs(
|
|
52432
|
+
"div",
|
|
52433
|
+
{
|
|
52434
|
+
className: "bg-red-50 border border-red-200 rounded-lg p-4 flex items-center space-x-3",
|
|
52435
|
+
children: [
|
|
52436
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "w-5 h-5 text-red-500" }) }),
|
|
52437
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-red-900", children: threat })
|
|
52438
|
+
]
|
|
52439
|
+
},
|
|
52440
|
+
index2
|
|
52441
|
+
)) })
|
|
52442
|
+
] }),
|
|
52443
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 print:grid-cols-2 gap-6", children: [
|
|
52444
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
52445
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Industry Risk Profile" }),
|
|
52446
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
52447
|
+
"div",
|
|
52448
|
+
{
|
|
52449
|
+
className: `inline-flex px-3 py-1 rounded-full text-sm font-medium ${riskLevel.color}`,
|
|
52450
|
+
children: [
|
|
52451
|
+
riskLevel.level,
|
|
52452
|
+
" Risk"
|
|
52453
|
+
]
|
|
52454
|
+
}
|
|
52455
|
+
),
|
|
52456
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-slate-600", children: [
|
|
52457
|
+
clientData.industry === "Healthcare" && "Healthcare organizations face elevated cyber risks due to valuable PHI data that commands high prices on dark web markets.",
|
|
52458
|
+
clientData.industry === "Financial Services" && "Financial institutions are prime targets due to direct access to funds and sensitive financial data.",
|
|
52459
|
+
clientData.industry === "Manufacturing" && "Manufacturing companies face operational technology risks that can halt production and supply chains.",
|
|
52460
|
+
!["Healthcare", "Financial Services", "Manufacturing"].includes(
|
|
52461
|
+
clientData.industry
|
|
52462
|
+
) && "Your industry faces specific cyber risks that require tailored protection strategies."
|
|
52463
|
+
] })
|
|
52464
|
+
] }),
|
|
52465
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
52466
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Key Risk Factors" }),
|
|
52467
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: getIndustryThreats(clientData.industry).map((threat, index2) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
52468
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "w-4 h-4 text-red-500" }),
|
|
52469
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: threat })
|
|
52470
|
+
] }, index2)) })
|
|
52471
|
+
] })
|
|
52472
|
+
] })
|
|
52473
|
+
]
|
|
52415
52474
|
}
|
|
52416
52475
|
),
|
|
52417
|
-
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "report-page space-y-6", children: [
|
|
52418
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-red-600 rounded-lg p-6 text-white text-center", children: [
|
|
52419
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-center space-x-2 mb-2", children: [
|
|
52420
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.DollarSign, { className: "w-8 h-8" }),
|
|
52421
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-bold", children: "TOTAL POTENTIAL IMPACT" })
|
|
52422
|
-
] }),
|
|
52423
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-4xl font-bold", children: formatCurrency(calculatedCost) }),
|
|
52424
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm opacity-75 mt-2", children: [
|
|
52425
|
-
"Cost Range: ",
|
|
52426
|
-
formatCurrency(calculatedCost * 0.8),
|
|
52427
|
-
" - ",
|
|
52428
|
-
formatCurrency(calculatedCost * 1.2)
|
|
52429
|
-
] })
|
|
52430
|
-
] }),
|
|
52431
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
52432
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Top Industry Threats" }),
|
|
52433
|
-
/* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs(
|
|
52434
|
-
"div",
|
|
52435
|
-
{
|
|
52436
|
-
className: "bg-red-50 border border-red-200 rounded-lg p-4 flex items-center space-x-3",
|
|
52437
|
-
children: [
|
|
52438
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "w-5 h-5 text-red-500" }) }),
|
|
52439
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium text-red-900", children: threat })
|
|
52440
|
-
]
|
|
52441
|
-
},
|
|
52442
|
-
index2
|
|
52443
|
-
)) })
|
|
52444
|
-
] }),
|
|
52445
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
52446
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
52447
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Industry Risk Profile" }),
|
|
52448
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
52449
|
-
"div",
|
|
52450
|
-
{
|
|
52451
|
-
className: `inline-flex px-3 py-1 rounded-full text-sm font-medium ${riskLevel.color}`,
|
|
52452
|
-
children: [
|
|
52453
|
-
riskLevel.level,
|
|
52454
|
-
" Risk"
|
|
52455
|
-
]
|
|
52456
|
-
}
|
|
52457
|
-
),
|
|
52458
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-slate-600", children: [
|
|
52459
|
-
clientData.industry === "Healthcare" && "Healthcare organizations face elevated cyber risks due to valuable PHI data that commands high prices on dark web markets.",
|
|
52460
|
-
clientData.industry === "Financial Services" && "Financial institutions are prime targets due to direct access to funds and sensitive financial data.",
|
|
52461
|
-
clientData.industry === "Manufacturing" && "Manufacturing companies face operational technology risks that can halt production and supply chains.",
|
|
52462
|
-
!["Healthcare", "Financial Services", "Manufacturing"].includes(
|
|
52463
|
-
clientData.industry
|
|
52464
|
-
) && "Your industry faces specific cyber risks that require tailored protection strategies."
|
|
52465
|
-
] })
|
|
52466
|
-
] }),
|
|
52467
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
52468
|
-
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "text-lg font-semibold text-slate-900", children: "Key Risk Factors" }),
|
|
52469
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: getIndustryThreats(clientData.industry).map((threat, index2) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-2", children: [
|
|
52470
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, { className: "w-4 h-4 text-red-500" }),
|
|
52471
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: threat })
|
|
52472
|
-
] }, index2)) })
|
|
52473
|
-
] })
|
|
52474
|
-
] })
|
|
52475
|
-
] }),
|
|
52476
|
-
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
|
|
52476
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "report-page space-y-6 border-b border-slate-200 pt-8", children: [
|
|
52477
52477
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
52478
52478
|
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Detailed Financial Breakdown" }),
|
|
52479
52479
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-slate-600", children: "Understanding the components of the total potential cost" })
|
|
@@ -52530,7 +52530,7 @@ const FinancialImpact = ({ reportData }) => {
|
|
|
52530
52530
|
}) })
|
|
52531
52531
|
] })
|
|
52532
52532
|
] }),
|
|
52533
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
|
|
52533
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 print:grid-cols-2 gap-6", children: [
|
|
52534
52534
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white border border-slate-200 rounded-lg p-6", children: [
|
|
52535
52535
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-slate-900 mb-4", children: "Attack Scenario" }),
|
|
52536
52536
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3 text-sm", children: [
|
|
@@ -52579,7 +52579,7 @@ const FinancialImpact = ({ reportData }) => {
|
|
|
52579
52579
|
] })
|
|
52580
52580
|
] })
|
|
52581
52581
|
] }),
|
|
52582
|
-
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "report-page space-y-6 border-
|
|
52582
|
+
/* @__PURE__ */ jsxRuntime.jsxs("section", { className: "report-page space-y-6 border-b border-slate-200 pt-8", children: [
|
|
52583
52583
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center space-x-3", children: [
|
|
52584
52584
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 h-8 bg-blue-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-white text-lg", children: "?" }) }),
|
|
52585
52585
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
@@ -52626,26 +52626,26 @@ const FinancialImpact = ({ reportData }) => {
|
|
|
52626
52626
|
] }) })
|
|
52627
52627
|
] }),
|
|
52628
52628
|
/* @__PURE__ */ jsxRuntime.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." })
|
|
52629
|
+
] })
|
|
52630
|
+
] })
|
|
52631
|
+
] }),
|
|
52632
|
+
/* @__PURE__ */ jsxRuntime.jsx("section", { className: "report-page space-y-6 pt-8", children: /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-yellow-50 border border-yellow-200 rounded-lg p-6", children: [
|
|
52633
|
+
/* @__PURE__ */ jsxRuntime.jsx("h4", { className: "font-semibold text-slate-900 mb-2", children: "Important Notes" }),
|
|
52634
|
+
/* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "text-slate-700 space-y-2", children: [
|
|
52635
|
+
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start space-x-2", children: [
|
|
52636
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
|
|
52637
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "This analysis is based on industry norms and common threat patterns." })
|
|
52629
52638
|
] }),
|
|
52630
|
-
/* @__PURE__ */ jsxRuntime.jsxs("
|
|
52631
|
-
/* @__PURE__ */ jsxRuntime.jsx("
|
|
52632
|
-
/* @__PURE__ */ jsxRuntime.
|
|
52633
|
-
|
|
52634
|
-
|
|
52635
|
-
|
|
52636
|
-
|
|
52637
|
-
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start space-x-2", children: [
|
|
52638
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
|
|
52639
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Actual breach outcomes and costs may vary based on the event's scope and response quality." })
|
|
52640
|
-
] }),
|
|
52641
|
-
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start space-x-2", children: [
|
|
52642
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
|
|
52643
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "This report is intended to guide investment and preparedness—not to predict specific future events." })
|
|
52644
|
-
] })
|
|
52645
|
-
] })
|
|
52639
|
+
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start space-x-2", children: [
|
|
52640
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
|
|
52641
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Actual breach outcomes and costs may vary based on the event's scope and response quality." })
|
|
52642
|
+
] }),
|
|
52643
|
+
/* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex items-start space-x-2", children: [
|
|
52644
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
|
|
52645
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "This report is intended to guide investment and preparedness—not to predict specific future events." })
|
|
52646
52646
|
] })
|
|
52647
52647
|
] })
|
|
52648
|
-
] })
|
|
52648
|
+
] }) }) })
|
|
52649
52649
|
] });
|
|
52650
52650
|
};
|
|
52651
52651
|
const ASSESSMENT_CATEGORIES = {
|
|
@@ -53296,23 +53296,21 @@ const ReportBuilder = ({
|
|
|
53296
53296
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-slate-900", children: (/* @__PURE__ */ new Date()).toLocaleDateString() })
|
|
53297
53297
|
] })
|
|
53298
53298
|
] }),
|
|
53299
|
-
/* @__PURE__ */ jsxRuntime.
|
|
53300
|
-
|
|
53301
|
-
|
|
53302
|
-
|
|
53303
|
-
|
|
53304
|
-
|
|
53305
|
-
|
|
53306
|
-
|
|
53307
|
-
|
|
53308
|
-
|
|
53309
|
-
|
|
53310
|
-
|
|
53311
|
-
|
|
53312
|
-
|
|
53313
|
-
|
|
53314
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-slate-700 leading-relaxed whitespace-pre-line text-sm", children: displayExecutiveSummary(clientData) }) })
|
|
53315
|
-
] })
|
|
53299
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "text-2xl font-bold text-slate-900 text-left mb-2", children: "Executive Summary" }),
|
|
53300
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-slate-900", children: "Why This Assessment Matters" }),
|
|
53301
|
+
editExecutiveSummary ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
53302
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
53303
|
+
Textarea,
|
|
53304
|
+
{
|
|
53305
|
+
value: displayExecutiveSummary(clientData),
|
|
53306
|
+
onChange: (e) => onConfigChange("executiveSummary", e.target.value),
|
|
53307
|
+
placeholder: "Executive summary content...",
|
|
53308
|
+
rows: 6,
|
|
53309
|
+
className: "resize-none"
|
|
53310
|
+
}
|
|
53311
|
+
),
|
|
53312
|
+
/* @__PURE__ */ jsxRuntime.jsx(Button$1, { onClick: () => setEditExecutiveSummary(false), children: "Save" })
|
|
53313
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-slate-700 leading-relaxed whitespace-pre-line text-sm", children: displayExecutiveSummary(clientData) }) })
|
|
53316
53314
|
] }),
|
|
53317
53315
|
showFinancialImpact && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: financialSimulationData && Object.keys(financialSimulationData).length > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
53318
53316
|
FinancialImpact,
|
|
@@ -53336,7 +53334,7 @@ const ReportBuilder = ({
|
|
|
53336
53334
|
reportData: { clientData, insuranceHealthData, mspInfo }
|
|
53337
53335
|
}
|
|
53338
53336
|
) : /* @__PURE__ */ jsxRuntime.jsx(Warning, { children: "We can't find an insurance assessment. Are you sure you ran this assessment?" }) }),
|
|
53339
|
-
/* @__PURE__ */ jsxRuntime.jsxs("footer", { className: "
|
|
53337
|
+
/* @__PURE__ */ jsxRuntime.jsxs("footer", { className: "text-center pt-8 border-t border-slate-200", children: [
|
|
53340
53338
|
/* @__PURE__ */ jsxRuntime.jsx("h4", { children: "Professional Recommendation" }),
|
|
53341
53339
|
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-sm text-slate-500", children: [
|
|
53342
53340
|
"This assessment uses ",
|