@threatcaptain/tc-reports 0.2.9 → 0.2.11

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
@@ -3,10 +3,8 @@ import * as React from "react";
3
3
  import React__default, { forwardRef, createElement, createContext, useContext, useRef, useState, useCallback, useEffect, useImperativeHandle, useMemo, cloneElement, useLayoutEffect, PureComponent, isValidElement } from "react";
4
4
  import * as ReactDOM from "react-dom";
5
5
  import ReactDOM__default from "react-dom";
6
- import { FileText, AlertTriangle, Shield, DollarSign, Target, CheckCircle, Eye, BarChart3, Building2 } from "lucide-react";
6
+ import { FileText, AlertTriangle, Shield, DollarSign, Target, CheckCircle, BarChart3, Building2 } from "lucide-react";
7
7
  import { useNavigate, useSearchParams } from "react-router-dom";
8
- import { faDoorOpen, faCrown, faEyeSlash } from "@fortawesome/free-solid-svg-icons";
9
- import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
10
8
  function createContext2(rootComponentName, defaultContext) {
11
9
  const Context = React.createContext(defaultContext);
12
10
  const Provider2 = (props2) => {
@@ -28641,33 +28639,16 @@ const ToggleGroupItem = React.forwardRef(({ className, children, variant, size:
28641
28639
  );
28642
28640
  });
28643
28641
  ToggleGroupItem.displayName = Item2.displayName;
28644
- const templates = [
28645
- {
28646
- id: "financial-impact",
28647
- name: "Financial Impact Analysis",
28648
- description: "Quantify the financial impact of potential cyber threats and breaches",
28649
- category: "Financial Analysis",
28650
- preview: "bg-gradient-to-br from-red-50 to-orange-50"
28651
- },
28652
- {
28653
- id: "insurance-health-score",
28654
- name: "Cyber Insurance Health Score",
28655
- description: "Assess readiness for cyber insurance coverage and identify gaps",
28656
- category: "Insurance Assessment",
28657
- preview: "bg-gradient-to-br from-green-50 to-emerald-50"
28658
- },
28659
- {
28660
- id: "breach-likelihood",
28661
- name: "Breach Likelihood Assessment",
28662
- description: "Evaluate the probability and impact of security incidents",
28663
- category: "Risk Assessment",
28664
- preview: "bg-gradient-to-br from-orange-50 to-red-50"
28665
- }
28666
- ];
28667
- const Dashboard = ({ clientId }) => {
28642
+ const Dashboard = ({
28643
+ children,
28644
+ clientId,
28645
+ assessmentData,
28646
+ simulationData
28647
+ }) => {
28668
28648
  const navigate = useNavigate();
28669
28649
  const [templateIds, setTemplateId] = useState([]);
28670
- const handleTemplateClick = (templateId) => {
28650
+ const handleTemplateClick = (templateId, available) => {
28651
+ if (!available) return;
28671
28652
  let updatedTemplateIds = [...templateIds];
28672
28653
  updatedTemplateIds = updatedTemplateIds.includes(templateId) ? updatedTemplateIds.filter((id) => id !== templateId) : [...updatedTemplateIds, templateId];
28673
28654
  setTemplateId(updatedTemplateIds);
@@ -28676,8 +28657,38 @@ const Dashboard = ({ clientId }) => {
28676
28657
  const templateParam = templateIds.join(",");
28677
28658
  navigate(`/clients/${clientId}/view-report?template=${templateParam}`);
28678
28659
  };
28660
+ const hasFinancialData = simulationData && Object.keys(simulationData).length > 0;
28661
+ const hasInsuranceData = assessmentData && assessmentData.insuranceAssessment && Object.keys(assessmentData.insuranceAssessment).length > 0;
28662
+ const hasSecurityData = assessmentData && assessmentData.securityAssessments && Object.keys(assessmentData.securityAssessments).length > 0;
28663
+ const templates = [
28664
+ {
28665
+ id: "financial-impact",
28666
+ name: "Financial Impact Analysis",
28667
+ description: "Quantify the financial impact of potential cyber threats and breaches",
28668
+ category: "Financial Analysis",
28669
+ preview: "bg-gradient-to-br from-red-50 to-orange-50",
28670
+ available: hasFinancialData
28671
+ },
28672
+ {
28673
+ id: "insurance-health-score",
28674
+ name: "Cyber Insurance Health Score",
28675
+ description: "Assess readiness for cyber insurance coverage and identify gaps",
28676
+ category: "Insurance Assessment",
28677
+ preview: "bg-gradient-to-br from-green-50 to-emerald-50",
28678
+ available: hasInsuranceData
28679
+ },
28680
+ {
28681
+ id: "breach-likelihood",
28682
+ name: "Breach Likelihood Assessment",
28683
+ description: "Evaluate the probability and impact of security incidents",
28684
+ category: "Risk Assessment",
28685
+ preview: "bg-gradient-to-br from-orange-50 to-red-50",
28686
+ available: hasSecurityData
28687
+ }
28688
+ ];
28679
28689
  return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs("div", { className: "bg-white rounded-xl border border-slate-200 shadow-sm p-6 mb-8", children: [
28680
28690
  /* @__PURE__ */ jsx("h3", { className: "text-xl font-semibold text-slate-900 mb-6", children: "Choose Your Report Template" }),
28691
+ children,
28681
28692
  false,
28682
28693
  /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6 ", children: templates.map((template) => {
28683
28694
  const getTemplateIcon = (id) => {
@@ -28697,8 +28708,8 @@ const Dashboard = ({ clientId }) => {
28697
28708
  return /* @__PURE__ */ jsxs(
28698
28709
  Card,
28699
28710
  {
28700
- className: `transition-all border-2 cursor-pointer hover:shadow-lg ${templateIds.includes(template.id) ? "border-blue-500 bg-blue-50" : "border-slate-200 hover:border-slate-300"}`,
28701
- onClick: () => handleTemplateClick(template.id),
28711
+ className: `transition-all border-2 hover:shadow-lg ${templateIds.includes(template.id) ? "border-blue-500 bg-blue-50" : "border-slate-200 hover:border-slate-300"} ${template.available ? "cursor-pointer" : "opacity-50 cursor-not-allowed"}`,
28712
+ onClick: () => handleTemplateClick(template.id, template.available),
28702
28713
  children: [
28703
28714
  /* @__PURE__ */ jsxs(CardHeader, { className: "pb-3", children: [
28704
28715
  /* @__PURE__ */ jsx(
@@ -28712,6 +28723,7 @@ const Dashboard = ({ clientId }) => {
28712
28723
  ] }),
28713
28724
  /* @__PURE__ */ jsxs(CardContent, { className: "pt-0", children: [
28714
28725
  /* @__PURE__ */ jsx("p", { className: "text-sm mb-3 text-slate-600", children: template.description }),
28726
+ !template.available && /* @__PURE__ */ jsx(Badge, { variant: "destructive", className: "text-xs", children: "No Assessment Data" }),
28715
28727
  /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: "text-xs", children: template.category })
28716
28728
  ] })
28717
28729
  ]
@@ -28734,7 +28746,7 @@ const Dashboard = ({ clientId }) => {
28734
28746
  };
28735
28747
  const BreachLikelihood = ({ reportData }) => {
28736
28748
  var _a;
28737
- const { clientData, securityAssessment, mspInfo } = reportData;
28749
+ const { clientData, securityAssessment } = reportData;
28738
28750
  const calculateBreachLikelihood = (protectionLevel) => {
28739
28751
  if ((securityAssessment == null ? void 0 : securityAssessment.overall_breach_likelihood) !== null && (securityAssessment == null ? void 0 : securityAssessment.overall_breach_likelihood) !== void 0) {
28740
28752
  return Math.round(securityAssessment.overall_breach_likelihood);
@@ -28777,24 +28789,14 @@ const BreachLikelihood = ({ reportData }) => {
28777
28789
  /* @__PURE__ */ jsx("h3", { className: "text-base font-semibold text-slate-900", children: "Why This Breach Likelihood Assessment Matters" }),
28778
28790
  /* @__PURE__ */ jsx("div", { className: "text-slate-700 leading-relaxed whitespace-pre-line text-sm", children: clientData.executiveSummary ? clientData.executiveSummary : "" })
28779
28791
  ] }),
28780
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-2 gap-4 mb-4", children: [
28781
- /* @__PURE__ */ jsxs("div", { className: "bg-red-600 text-white p-6 rounded-lg text-center", children: [
28782
- /* @__PURE__ */ jsx(AlertTriangle, { className: "w-8 h-8 mx-auto mb-3" }),
28783
- /* @__PURE__ */ jsxs("div", { className: "text-3xl font-bold mb-2", children: [
28784
- "$",
28785
- baseCost ? baseCost.toLocaleString() : "510,000"
28786
- ] }),
28787
- /* @__PURE__ */ jsx("div", { className: "text-xs opacity-90", children: "What an attack could cost your business" })
28792
+ /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 mb-4", children: /* @__PURE__ */ jsxs("div", { className: "bg-orange-600 text-white p-6 rounded-lg text-center", children: [
28793
+ /* @__PURE__ */ jsx(Target, { className: "w-8 h-8 mx-auto mb-3" }),
28794
+ /* @__PURE__ */ jsxs("div", { className: "text-3xl font-bold mb-2", children: [
28795
+ attackLikelihood,
28796
+ "%"
28788
28797
  ] }),
28789
- /* @__PURE__ */ jsxs("div", { className: "bg-orange-600 text-white p-6 rounded-lg text-center", children: [
28790
- /* @__PURE__ */ jsx(Target, { className: "w-8 h-8 mx-auto mb-3" }),
28791
- /* @__PURE__ */ jsxs("div", { className: "text-3xl font-bold mb-2", children: [
28792
- attackLikelihood,
28793
- "%"
28794
- ] }),
28795
- /* @__PURE__ */ jsx("div", { className: "text-xs opacity-90", children: "Chance criminals would succeed today" })
28796
- ] })
28797
- ] }),
28798
+ /* @__PURE__ */ jsx("div", { className: "text-xs opacity-90", children: "Chance criminals would succeed today" })
28799
+ ] }) }),
28798
28800
  /* @__PURE__ */ jsx("div", { className: "bg-slate-50 rounded-lg p-4 space-y-3", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-2 text-xs text-center", children: [
28799
28801
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-1", children: [
28800
28802
  /* @__PURE__ */ jsx(CheckCircle, { className: "w-4 h-4 text-green-600" }),
@@ -28832,451 +28834,6 @@ const BreachLikelihood = ({ reportData }) => {
28832
28834
  ] })
28833
28835
  ] })
28834
28836
  ] }),
28835
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
28836
- /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
28837
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Protection Analysis" }),
28838
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Understanding Your Business Protection Shield" })
28839
- ] }),
28840
- /* @__PURE__ */ jsxs("div", { className: "bg-slate-50 rounded-lg p-8 text-center", children: [
28841
- /* @__PURE__ */ jsx(Shield, { className: "w-20 h-20 mx-auto mb-4 text-slate-600" }),
28842
- /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold mb-4", children: "Your Business Protection Shield" }),
28843
- /* @__PURE__ */ jsxs("div", { className: "text-xl font-bold text-red-600 mb-4", children: [
28844
- "Shield Strength: ",
28845
- 100 - attackLikelihood,
28846
- "%"
28847
- ] }),
28848
- /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center space-x-1 mb-4", children: Array.from(
28849
- {
28850
- length: 10
28851
- },
28852
- (_, index2) => {
28853
- const shieldPercentage = 100 - attackLikelihood;
28854
- const threshold = (index2 + 1) * 10;
28855
- const isProtected = shieldPercentage >= threshold;
28856
- return /* @__PURE__ */ jsx(
28857
- "span",
28858
- {
28859
- className: `text-2xl font-bold ${isProtected ? "text-blue-600" : "text-slate-300"}`,
28860
- style: {
28861
- fontFamily: "Arial, sans-serif"
28862
- },
28863
- children: "●"
28864
- },
28865
- index2
28866
- );
28867
- }
28868
- ) }),
28869
- /* @__PURE__ */ jsx("div", { className: "text-center mb-4", children: /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center space-x-1 bg-slate-100 rounded-lg px-4 py-2", children: [
28870
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-slate-600", children: "Protection Level:" }),
28871
- /* @__PURE__ */ jsxs("span", { className: "text-lg font-bold text-blue-600", children: [
28872
- 100 - attackLikelihood,
28873
- "%"
28874
- ] }),
28875
- /* @__PURE__ */ jsxs("span", { className: "text-sm text-slate-500", children: [
28876
- "(",
28877
- attackLikelihood,
28878
- "% vulnerable)"
28879
- ] })
28880
- ] }) }),
28881
- /* @__PURE__ */ jsxs("div", { className: "text-lg font-bold", children: [
28882
- 100 - attackLikelihood,
28883
- "% Protected | ",
28884
- attackLikelihood,
28885
- "% Vulnerable"
28886
- ] }),
28887
- /* @__PURE__ */ jsx("p", { className: "text-slate-600 mt-4", children: "Your business has basic protection in a few areas, but most of your shield has serious gaps that criminals could easily exploit." })
28888
- ] }),
28889
- /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
28890
- /* @__PURE__ */ jsx("h3", { className: "text-xl font-bold text-center", children: "How Criminals Attack Your Business" }),
28891
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-4 gap-4", children: [
28892
- /* @__PURE__ */ jsxs("div", { className: "text-center border-2 border-slate-200 rounded-lg p-4", children: [
28893
- /* @__PURE__ */ jsx(
28894
- FontAwesomeIcon,
28895
- {
28896
- icon: faDoorOpen,
28897
- className: "text-2xl mb-2 text-slate-600"
28898
- }
28899
- ),
28900
- /* @__PURE__ */ jsx("h4", { className: "font-bold mb-2", children: "Step 1: Get In" }),
28901
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600 mb-2", children: "Find any weakness like emails, websites, or mistakes" }),
28902
- /* @__PURE__ */ jsx("div", { className: "text-xs font-bold text-red-600", children: "Protection: Minimal" })
28903
- ] }),
28904
- /* @__PURE__ */ jsxs("div", { className: "text-center border-2 border-slate-200 rounded-lg p-4", children: [
28905
- /* @__PURE__ */ jsx(Eye, { className: "w-8 h-8 mx-auto mb-2 text-slate-600" }),
28906
- /* @__PURE__ */ jsx("h4", { className: "font-bold mb-2", children: "Step 2: Sneak Around" }),
28907
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600 mb-2", children: "Move through systems quietly and find valuable information" }),
28908
- /* @__PURE__ */ jsx("div", { className: "text-xs font-bold text-red-600", children: "Protection: None" })
28909
- ] }),
28910
- /* @__PURE__ */ jsxs("div", { className: "text-center border-2 border-slate-200 rounded-lg p-4", children: [
28911
- /* @__PURE__ */ jsx(
28912
- FontAwesomeIcon,
28913
- {
28914
- icon: faCrown,
28915
- className: "text-2xl mb-2 text-slate-600"
28916
- }
28917
- ),
28918
- /* @__PURE__ */ jsx("h4", { className: "font-bold mb-2", children: "Step 3: Take Control" }),
28919
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600 mb-2", children: "Steal data, encrypt files, or take over your systems" }),
28920
- /* @__PURE__ */ jsx("div", { className: "text-xs font-bold text-red-600", children: "Protection: None" })
28921
- ] }),
28922
- /* @__PURE__ */ jsxs("div", { className: "text-center border-2 border-slate-200 rounded-lg p-4", children: [
28923
- /* @__PURE__ */ jsx(
28924
- FontAwesomeIcon,
28925
- {
28926
- icon: faEyeSlash,
28927
- className: "text-2xl mb-2 text-slate-600"
28928
- }
28929
- ),
28930
- /* @__PURE__ */ jsx("h4", { className: "font-bold mb-2", children: "Step 4: Stay Hidden" }),
28931
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600 mb-2", children: "Cover tracks so you don't notice for weeks/months" }),
28932
- /* @__PURE__ */ jsx("div", { className: "text-xs font-bold text-red-600", children: "Protection: None" })
28933
- ] })
28934
- ] }),
28935
- /* @__PURE__ */ jsx("div", { className: "text-center", children: /* @__PURE__ */ jsx("p", { className: "text-lg font-bold text-red-600", children: "Result: Criminals have a clear path to hurt your business with very little stopping them." }) })
28936
- ] })
28937
- ] }),
28938
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
28939
- /* @__PURE__ */ jsxs("div", { children: [
28940
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Control-Specific Financial Impact" }),
28941
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Multiple value streams for each control" })
28942
- ] }),
28943
- (() => {
28944
- var _a2;
28945
- const controlMappings = ((_a2 = clientData.securityAssessment) == null ? void 0 : _a2.control_mappings) || [];
28946
- const implementedControls = Array.isArray(controlMappings) ? controlMappings.filter((c2) => c2.implemented === true) : [];
28947
- const potentialControls = Array.isArray(controlMappings) ? controlMappings.filter((c2) => c2.implemented !== true) : [];
28948
- const renderControlRow = (control) => {
28949
- var _a3, _b, _c, _d;
28950
- const mitrePhases = Array.isArray(control.mitrePhases) ? control.mitrePhases.join(", ") : control.mitrePhases || "";
28951
- const breachValue = ((_a3 = control.financialValues) == null ? void 0 : _a3.proportionalBreachValue) || control.breach_protection || 0;
28952
- const complianceValue = ((_b = control.financialValues) == null ? void 0 : _b.complianceValue) || control.compliance_value || 0;
28953
- const operationalValue = ((_c = control.financialValues) == null ? void 0 : _c.operationalSavings) || control.operational_savings || 0;
28954
- const totalValue = ((_d = control.financialValues) == null ? void 0 : _d.totalValue) || breachValue + complianceValue + operationalValue || 0;
28955
- return /* @__PURE__ */ jsxs(
28956
- "tr",
28957
- {
28958
- className: "border-b transition-colors hover:bg-slate-50",
28959
- children: [
28960
- /* @__PURE__ */ jsx("td", { className: "p-4 align-top border border-slate-300", children: /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
28961
- /* @__PURE__ */ jsxs("div", { className: "font-semibold text-slate-900", children: [
28962
- "CIS ",
28963
- control.controlNumber || control.cis_control_number
28964
- ] }),
28965
- /* @__PURE__ */ jsx("div", { className: "font-medium text-slate-700", children: control.controlName || control.cis_control_name || control.name }),
28966
- /* @__PURE__ */ jsxs("div", { className: "text-xs text-slate-600 leading-tight", children: [
28967
- "MITRE: ",
28968
- mitrePhases
28969
- ] })
28970
- ] }) }),
28971
- /* @__PURE__ */ jsx("td", { className: "p-4 align-middle border border-slate-300 text-center", children: /* @__PURE__ */ jsxs("div", { className: "text-blue-600 font-semibold", children: [
28972
- "$",
28973
- breachValue.toLocaleString()
28974
- ] }) }),
28975
- /* @__PURE__ */ jsx("td", { className: "p-4 align-middle border border-slate-300 text-center", children: /* @__PURE__ */ jsxs("div", { className: "text-green-600 font-semibold", children: [
28976
- "$",
28977
- complianceValue.toLocaleString()
28978
- ] }) }),
28979
- /* @__PURE__ */ jsx("td", { className: "p-4 align-middle border border-slate-300 text-center", children: /* @__PURE__ */ jsxs("div", { className: "text-purple-600 font-semibold", children: [
28980
- "$",
28981
- operationalValue.toLocaleString()
28982
- ] }) }),
28983
- /* @__PURE__ */ jsx("td", { className: "p-4 align-middle border border-slate-300 text-center", children: /* @__PURE__ */ jsxs("div", { className: "text-slate-900 font-bold", children: [
28984
- "$",
28985
- totalValue.toLocaleString()
28986
- ] }) })
28987
- ]
28988
- },
28989
- control.controlNumber
28990
- );
28991
- };
28992
- return /* @__PURE__ */ jsx("div", { className: "space-y-6", children: (() => {
28993
- const renderControlTable = (controls, title, color, isPotential = false) => {
28994
- if (isPotential) {
28995
- return /* @__PURE__ */ jsxs("div", { children: [
28996
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3", children: [
28997
- /* @__PURE__ */ jsx(
28998
- "div",
28999
- {
29000
- className: `w-5 h-5 ${color === "green" ? "bg-green-600" : "bg-red-600"} rounded-full flex items-center justify-center`,
29001
- children: /* @__PURE__ */ jsx(
29002
- "svg",
29003
- {
29004
- className: "w-3 h-3 text-white",
29005
- fill: "currentColor",
29006
- viewBox: "0 0 20 20",
29007
- children: /* @__PURE__ */ jsx(
29008
- "path",
29009
- {
29010
- fillRule: "evenodd",
29011
- d: color === "green" ? "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" : "M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",
29012
- clipRule: "evenodd"
29013
- }
29014
- )
29015
- }
29016
- )
29017
- }
29018
- ),
29019
- /* @__PURE__ */ jsx(
29020
- "h3",
29021
- {
29022
- className: `text-lg font-semibold ${color === "green" ? "text-green-600" : "text-red-600"}`,
29023
- children: title
29024
- }
29025
- )
29026
- ] }),
29027
- /* @__PURE__ */ jsxs("table", { className: "w-full caption-bottom text-sm border-collapse border border-slate-300", children: [
29028
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs(
29029
- "tr",
29030
- {
29031
- className: color === "green" ? "bg-green-50" : "bg-red-50",
29032
- children: [
29033
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Control" }),
29034
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Breach Protection" }),
29035
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Compliance Value" }),
29036
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Operational Savings" }),
29037
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Total Value" })
29038
- ]
29039
- }
29040
- ) }),
29041
- /* @__PURE__ */ jsx("tbody", { children: controls.length > 0 ? controls.map(
29042
- (control) => renderControlRow(control)
29043
- ) : /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
29044
- "td",
29045
- {
29046
- colSpan: 5,
29047
- className: "p-8 text-center text-slate-500 border border-slate-300",
29048
- children: isPotential ? "No additional controls recommended" : "No controls currently implemented"
29049
- }
29050
- ) }) })
29051
- ] })
29052
- ] });
29053
- }
29054
- return /* @__PURE__ */ jsxs("div", { children: [
29055
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-3", children: [
29056
- /* @__PURE__ */ jsx(
29057
- "div",
29058
- {
29059
- className: `w-5 h-5 ${color === "green" ? "bg-green-600" : "bg-red-600"} rounded-full flex items-center justify-center`,
29060
- children: /* @__PURE__ */ jsx(
29061
- "svg",
29062
- {
29063
- className: "w-3 h-3 text-white",
29064
- fill: "currentColor",
29065
- viewBox: "0 0 20 20",
29066
- children: /* @__PURE__ */ jsx(
29067
- "path",
29068
- {
29069
- fillRule: "evenodd",
29070
- d: color === "green" ? "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" : "M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z",
29071
- clipRule: "evenodd"
29072
- }
29073
- )
29074
- }
29075
- )
29076
- }
29077
- ),
29078
- /* @__PURE__ */ jsx(
29079
- "h3",
29080
- {
29081
- className: `text-lg font-semibold ${color === "green" ? "text-green-600" : "text-red-600"}`,
29082
- children: title
29083
- }
29084
- )
29085
- ] }),
29086
- /* @__PURE__ */ jsxs("table", { className: "w-full caption-bottom text-sm border-collapse border border-slate-300", children: [
29087
- /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs(
29088
- "tr",
29089
- {
29090
- className: color === "green" ? "bg-green-50" : "bg-red-50",
29091
- children: [
29092
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Control" }),
29093
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Breach Protection" }),
29094
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Compliance Value" }),
29095
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Operational Savings" }),
29096
- /* @__PURE__ */ jsx("th", { className: "h-12 px-4 text-left align-middle font-medium text-slate-900 border border-slate-300", children: "Total Value" })
29097
- ]
29098
- }
29099
- ) }),
29100
- /* @__PURE__ */ jsx("tbody", { children: controls.length > 0 ? controls.map(
29101
- (control) => renderControlRow(control)
29102
- ) : /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(
29103
- "td",
29104
- {
29105
- colSpan: 5,
29106
- className: "p-8 text-center text-slate-500 border border-slate-300",
29107
- children: isPotential ? "No additional controls recommended" : "No controls currently implemented"
29108
- }
29109
- ) }) })
29110
- ] })
29111
- ] });
29112
- };
29113
- return /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
29114
- renderControlTable(
29115
- implementedControls,
29116
- "Controls Currently in Place",
29117
- "green"
29118
- ),
29119
- renderControlTable(
29120
- potentialControls,
29121
- "Recommended Additional Controls",
29122
- "red",
29123
- true
29124
- )
29125
- ] });
29126
- })() });
29127
- })(),
29128
- /* @__PURE__ */ jsxs("div", { className: "bg-slate-50 rounded-lg p-6", children: [
29129
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-slate-900 mb-4", children: "Control Implementation Impact" }),
29130
- (() => {
29131
- var _a2;
29132
- const controlMappings = ((_a2 = clientData.securityAssessment) == null ? void 0 : _a2.control_mappings) || [];
29133
- const implementedControls = Array.isArray(controlMappings) ? controlMappings.filter(
29134
- (control) => control.implemented === true
29135
- ) : [];
29136
- const potentialControls = Array.isArray(controlMappings) ? controlMappings.filter(
29137
- (control) => control.implemented === false
29138
- ) : [];
29139
- const implementedTotals = implementedControls.reduce(
29140
- (acc, control) => {
29141
- var _a3, _b, _c;
29142
- acc.breachProtection += ((_a3 = control.financialValues) == null ? void 0 : _a3.proportionalBreachValue) || control.breach_protection || 0;
29143
- acc.complianceValue += ((_b = control.financialValues) == null ? void 0 : _b.complianceValue) || control.compliance_value || 0;
29144
- acc.operationalSavings += ((_c = control.financialValues) == null ? void 0 : _c.operationalSavings) || control.operational_savings || 0;
29145
- return acc;
29146
- },
29147
- {
29148
- breachProtection: 0,
29149
- complianceValue: 0,
29150
- operationalSavings: 0
29151
- }
29152
- );
29153
- const potentialTotals = potentialControls.reduce(
29154
- (acc, control) => {
29155
- var _a3, _b, _c;
29156
- acc.breachProtection += ((_a3 = control.financialValues) == null ? void 0 : _a3.proportionalBreachValue) || control.breach_protection || 0;
29157
- acc.complianceValue += ((_b = control.financialValues) == null ? void 0 : _b.complianceValue) || control.compliance_value || 0;
29158
- acc.operationalSavings += ((_c = control.financialValues) == null ? void 0 : _c.operationalSavings) || control.operational_savings || 0;
29159
- acc.implementationCost += control.implementationCost || control.implementation_cost || 0;
29160
- return acc;
29161
- },
29162
- {
29163
- breachProtection: 0,
29164
- complianceValue: 0,
29165
- operationalSavings: 0,
29166
- implementationCost: 0
29167
- }
29168
- );
29169
- return /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 text-sm", children: [
29170
- /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
29171
- /* @__PURE__ */ jsxs("div", { className: "text-3xl font-bold text-green-600", children: [
29172
- "$",
29173
- implementedTotals.breachProtection.toLocaleString()
29174
- ] }),
29175
- /* @__PURE__ */ jsx("div", { className: "text-slate-600 mt-2", children: "Current Breach Protection" })
29176
- ] }),
29177
- /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
29178
- /* @__PURE__ */ jsxs("div", { className: "text-3xl font-bold text-red-600", children: [
29179
- "$",
29180
- potentialTotals.breachProtection.toLocaleString()
29181
- ] }),
29182
- /* @__PURE__ */ jsx("div", { className: "text-slate-600 mt-2", children: "Additional Protection Available" })
29183
- ] })
29184
- ] });
29185
- })()
29186
- ] })
29187
- ] }),
29188
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
29189
- /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
29190
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Next Steps & Action Options" }),
29191
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Choose Your Path Forward" })
29192
- ] }),
29193
- /* @__PURE__ */ jsxs("div", { className: "bg-slate-50 rounded-lg p-6 space-y-4", children: [
29194
- /* @__PURE__ */ jsx("h3", { className: "text-xl font-bold text-center", children: "Your Complete Business Risk Assessment" }),
29195
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-4 text-sm text-center", children: [
29196
- /* @__PURE__ */ jsxs("div", { children: [
29197
- /* @__PURE__ */ jsx("span", { className: "text-green-600", children: "✓" }),
29198
- " ",
29199
- /* @__PURE__ */ jsx("strong", { children: "Financial Impact:" }),
29200
- " $",
29201
- baseCost.toLocaleString(),
29202
- " ",
29203
- "potential cost"
29204
- ] }),
29205
- /* @__PURE__ */ jsxs("div", { children: [
29206
- /* @__PURE__ */ jsx("span", { className: "text-green-600", children: "✓" }),
29207
- " ",
29208
- /* @__PURE__ */ jsx("strong", { children: "Insurance Readiness:" }),
29209
- " ",
29210
- clientData.insuranceHealthScore || 490,
29211
- "/850 (",
29212
- clientData.insuranceScoreCategory || "Poor",
29213
- ")"
29214
- ] }),
29215
- /* @__PURE__ */ jsxs("div", { children: [
29216
- /* @__PURE__ */ jsx("span", { className: "text-green-600", children: "✓" }),
29217
- " ",
29218
- /* @__PURE__ */ jsx("strong", { children: "Attack Likelihood:" }),
29219
- " ",
29220
- attackLikelihood,
29221
- "% chance of success"
29222
- ] })
29223
- ] }),
29224
- /* @__PURE__ */ jsxs("div", { className: "text-center text-lg font-bold text-red-600", children: [
29225
- "Your Bottom Line: $",
29226
- realRiskExposure.toLocaleString(),
29227
- " at risk"
29228
- ] })
29229
- ] }),
29230
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-3 gap-6", children: [
29231
- /* @__PURE__ */ jsxs("div", { className: "border-2 border-green-500 bg-green-50 rounded-lg p-6 text-center", children: [
29232
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-bold mb-2", children: "Option 1: Start With Essentials" }),
29233
- /* @__PURE__ */ jsx("div", { className: "bg-green-600 text-white px-3 py-1 rounded-full text-sm font-bold mb-4 inline-block", children: "Recommended" }),
29234
- /* @__PURE__ */ jsxs("div", { className: "text-sm mb-4", children: [
29235
- /* @__PURE__ */ jsx("strong", { children: "Benefit:" }),
29236
- " Reduces risk by 73%"
29237
- ] }),
29238
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: "Get the most critical protections in place first. Covers the most common attack methods." })
29239
- ] }),
29240
- /* @__PURE__ */ jsxs("div", { className: "border-2 border-blue-500 rounded-lg p-6 text-center", children: [
29241
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-bold mb-4", children: "Option 2: Complete Protection Plan" }),
29242
- /* @__PURE__ */ jsxs("div", { className: "text-sm mb-4", children: [
29243
- /* @__PURE__ */ jsx("strong", { children: "Benefit:" }),
29244
- " Reduces risk by 87%"
29245
- ] }),
29246
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: "Full comprehensive security. Positions you well for insurance discounts and client requirements." })
29247
- ] }),
29248
- /* @__PURE__ */ jsxs("div", { className: "border-2 border-red-500 bg-red-50 rounded-lg p-6 text-center", children: [
29249
- /* @__PURE__ */ jsx("h3", { className: "text-lg font-bold mb-4", children: "Option 3: Do Nothing" }),
29250
- /* @__PURE__ */ jsxs("div", { className: "text-sm mb-2", children: [
29251
- /* @__PURE__ */ jsx("strong", { children: "Investment:" }),
29252
- " $0"
29253
- ] }),
29254
- /* @__PURE__ */ jsxs("div", { className: "text-sm mb-4 text-red-600", children: [
29255
- /* @__PURE__ */ jsx("strong", { children: "Risk:" }),
29256
- " 97% chance of losing $",
29257
- realRiskExposure.toLocaleString()
29258
- ] }),
29259
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: "Keep current protection and hope criminals don't target you." })
29260
- ] })
29261
- ] }),
29262
- /* @__PURE__ */ jsxs("div", { className: "bg-gradient-to-r from-blue-600 to-blue-800 text-white rounded-lg p-8 text-center", children: [
29263
- /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold mb-4", children: "Ready to Protect Your Business?" }),
29264
- /* @__PURE__ */ jsx("p", { className: "text-lg mb-6 opacity-90", children: "You know what you're facing and what it costs to fix. The question isn't whether you can afford protection - it's whether you can afford to go without it." }),
29265
- /* @__PURE__ */ jsxs("div", { className: "text-lg mb-4", children: [
29266
- /* @__PURE__ */ jsx("strong", { children: "Contact:" }),
29267
- " ",
29268
- (mspInfo == null ? void 0 : mspInfo.contact_email) ? /* @__PURE__ */ jsx(
29269
- "a",
29270
- {
29271
- href: `mailto:${mspInfo == null ? void 0 : mspInfo.contact_email}`,
29272
- className: "underline",
29273
- children: mspInfo == null ? void 0 : mspInfo.contact_email
29274
- }
29275
- ) : "contact@company.com"
29276
- ] }),
29277
- /* @__PURE__ */ jsx("div", { className: "text-sm opacity-80", children: "Every day you wait is another day criminals could strike. Every protection you add makes your business safer." })
29278
- ] })
29279
- ] }),
29280
28837
  /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
29281
28838
  /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
29282
28839
  /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Understanding Your Numbers" }),
@@ -29601,7 +29158,7 @@ const UnifiedCostBreakdownChart = ({
29601
29158
  };
29602
29159
  const FinancialImpact = ({ reportData }) => {
29603
29160
  var _a;
29604
- const { clientData, simulationData, mspInfo } = reportData;
29161
+ const { clientData, simulationData } = reportData;
29605
29162
  const { industry } = clientData;
29606
29163
  const displayExecutiveSummary = () => {
29607
29164
  if (clientData.executiveSummary) return clientData.executiveSummary;
@@ -29979,10 +29536,6 @@ const FinancialImpact = ({ reportData }) => {
29979
29536
  /* @__PURE__ */ jsxs("div", { className: "bg-white border border-slate-200 rounded-lg p-6", children: [
29980
29537
  /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-4", children: "Business Impact" }),
29981
29538
  /* @__PURE__ */ jsxs("div", { className: "space-y-3 text-sm", children: [
29982
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
29983
- /* @__PURE__ */ jsx("span", { className: "text-slate-600", children: "Records Affected:" }),
29984
- /* @__PURE__ */ jsx("span", { className: "font-medium text-right", children: parseInt(simulationData.record_count) * (simulationData.percentage_breached / 100) || "" })
29985
- ] }),
29986
29539
  /* @__PURE__ */ jsxs("div", { className: "flex justify-between", children: [
29987
29540
  /* @__PURE__ */ jsx("span", { className: "text-slate-600", children: "Downtime Duration:" }),
29988
29541
  /* @__PURE__ */ jsxs("span", { className: "font-medium text-right", children: [
@@ -30004,30 +29557,6 @@ const FinancialImpact = ({ reportData }) => {
30004
29557
  ] })
30005
29558
  ] })
30006
29559
  ] }),
30007
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
30008
- /* @__PURE__ */ jsxs("div", { children: [
30009
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Proposed Next Steps" }),
30010
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Taking action on these findings is critical to reducing your organization's cyber risk exposure and potential financial impact." })
30011
- ] }),
30012
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
30013
- /* @__PURE__ */ jsxs("div", { className: "border border-slate-200 rounded-lg p-6 space-y-3", children: [
30014
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900", children: "Breach Likelihood Assessment" }),
30015
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: "Evaluate your current security posture and identify the most probable attack vectors targeting your organization." })
30016
- ] }),
30017
- /* @__PURE__ */ jsxs("div", { className: "border border-slate-200 rounded-lg p-6 space-y-3", children: [
30018
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900", children: "Cyber Insurance Health Score" }),
30019
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: "Assess your readiness for cyber insurance coverage and identify gaps that could affect your policy." })
30020
- ] })
30021
- ] }),
30022
- /* @__PURE__ */ jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-6 text-center", children: [
30023
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-2", children: "Schedule Your Strategy Session" }),
30024
- /* @__PURE__ */ jsx("p", { className: "text-slate-600 mb-4", children: "Let's discuss these findings and develop a customized cybersecurity roadmap for your organization." }),
30025
- /* @__PURE__ */ jsxs("p", { className: "text-slate-600", children: [
30026
- "Contact us at: ",
30027
- /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-900", children: (mspInfo == null ? void 0 : mspInfo.contact_email) ? /* @__PURE__ */ jsx("a", { href: `mailto:${mspInfo == null ? void 0 : mspInfo.contact_email}`, className: "underline", children: mspInfo == null ? void 0 : mspInfo.contact_email }) : "contact@company.com" })
30028
- ] })
30029
- ] })
30030
- ] }),
30031
29560
  /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
30032
29561
  /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
30033
29562
  /* @__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: "?" }) }),
@@ -30349,11 +29878,9 @@ const InsuranceHealthGauge = ({
30349
29878
  ] });
30350
29879
  };
30351
29880
  const InsuranceHealthScore = ({ reportData }) => {
30352
- var _a;
30353
29881
  const { clientData, insuranceHealthData } = reportData;
30354
- const hasAssessmentData = insuranceHealthData.responses && Object.keys(insuranceHealthData.responses).length > 0;
30355
- const score = hasAssessmentData ? insuranceHealthData.score || 650 : null;
30356
- const scoreCategory = score ? getScoreCategory(score) : null;
29882
+ const score = insuranceHealthData.score || 650;
29883
+ const scoreCategory = getScoreCategory(score);
30357
29884
  const scoreCategoryData = typeof scoreCategory === "string" ? {
30358
29885
  category: scoreCategory,
30359
29886
  description: "Insurance readiness assessment",
@@ -30383,15 +29910,15 @@ const InsuranceHealthScore = ({ reportData }) => {
30383
29910
  /* @__PURE__ */ jsxs(
30384
29911
  "div",
30385
29912
  {
30386
- className: `rounded-lg p-6 text-white text-center ${hasAssessmentData ? scoreCategoryData.bgColor : "bg-slate-500"}`,
29913
+ className: `rounded-lg p-6 text-white text-center ${scoreCategoryData.bgColor}`,
30387
29914
  children: [
30388
29915
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center space-x-2 mb-2", children: [
30389
- /* @__PURE__ */ jsx("div", { className: "w-8 h-8 rounded-full bg-white/20 flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "text-lg font-bold", children: hasAssessmentData ? score : "N/A" }) }),
29916
+ /* @__PURE__ */ jsx("div", { className: "w-8 h-8 rounded-full bg-white/20 flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "text-lg font-bold", children: score }) }),
30390
29917
  /* @__PURE__ */ jsx("h3", { className: "text-2xl font-bold", children: "INSURANCE HEALTH SCORE" })
30391
29918
  ] }),
30392
- /* @__PURE__ */ jsx("p", { className: "text-4xl font-bold", children: hasAssessmentData ? `${score}/850` : "Not Available" }),
30393
- /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold mt-2", children: hasAssessmentData ? scoreCategoryData.category : "Assessment Required" }),
30394
- /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75 mt-1", children: hasAssessmentData ? scoreCategoryData.description : "Complete the insurance health assessment to view your score" })
29919
+ /* @__PURE__ */ jsx("p", { className: "text-4xl font-bold", children: `${score}/850` }),
29920
+ /* @__PURE__ */ jsx("p", { className: "text-lg font-semibold mt-2", children: scoreCategoryData.category }),
29921
+ /* @__PURE__ */ jsx("p", { className: "text-sm opacity-75 mt-1", children: scoreCategoryData.description })
30395
29922
  ]
30396
29923
  }
30397
29924
  ),
@@ -30438,21 +29965,7 @@ const InsuranceHealthScore = ({ reportData }) => {
30438
29965
  /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Assessment results and category breakdown" })
30439
29966
  ] }),
30440
29967
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-6 gap-8", children: [
30441
- /* @__PURE__ */ jsxs("div", { className: "md:col-span-3 flex flex-col items-center space-y-4", children: [
30442
- hasAssessmentData ? /* @__PURE__ */ jsx(InsuranceHealthGauge, { score, size: 320 }) : /* @__PURE__ */ jsx(
30443
- "div",
30444
- {
30445
- className: "flex flex-col items-center justify-center space-y-4",
30446
- style: { height: "320px" },
30447
- children: /* @__PURE__ */ jsxs("div", { className: "text-center space-y-2", children: [
30448
- /* @__PURE__ */ jsx("div", { className: "text-6xl font-bold text-slate-400", children: "N/A" }),
30449
- /* @__PURE__ */ jsx("div", { className: "text-lg font-semibold text-slate-600", children: "Not Available" }),
30450
- /* @__PURE__ */ jsx("div", { className: "text-sm text-slate-500 max-w-xs", children: "Complete the insurance health assessment to view your score gauge" })
30451
- ] })
30452
- }
30453
- ),
30454
- /* @__PURE__ */ jsx("div", { className: "text-center" })
30455
- ] }),
29968
+ /* @__PURE__ */ jsx("div", { className: "md:col-span-3 flex flex-col items-center space-y-4", children: /* @__PURE__ */ jsx(InsuranceHealthGauge, { score, size: 320 }) }),
30456
29969
  /* @__PURE__ */ jsxs("div", { className: "md:col-span-3 space-y-4", children: [
30457
29970
  /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900", children: "Security Category Scores" }),
30458
29971
  /* @__PURE__ */ jsx("div", { className: "space-y-3", children: (() => {
@@ -30499,102 +30012,6 @@ const InsuranceHealthScore = ({ reportData }) => {
30499
30012
  ] })
30500
30013
  ] })
30501
30014
  ] }),
30502
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
30503
- /* @__PURE__ */ jsxs("div", { children: [
30504
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900 mb-2", children: "Recommendations for Improvement" }),
30505
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Priority actions to enhance your insurance health score" })
30506
- ] }),
30507
- /* @__PURE__ */ jsx("div", { className: "space-y-6", children: ((_a = clientData.recommendations) == null ? void 0 : _a.map((rec, index2) => /* @__PURE__ */ jsx(
30508
- "div",
30509
- {
30510
- className: "bg-white border border-slate-200 rounded-lg p-6",
30511
- children: /* @__PURE__ */ jsxs("div", { className: "flex items-start space-x-4", children: [
30512
- /* @__PURE__ */ jsx("div", { className: "bg-blue-100 rounded-full p-2 flex-shrink-0", children: /* @__PURE__ */ jsx("span", { className: "text-blue-600 font-bold text-sm", children: index2 + 1 }) }),
30513
- /* @__PURE__ */ jsxs("div", { className: "flex-grow", children: [
30514
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-2", children: rec.title }),
30515
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
30516
- /* @__PURE__ */ jsxs("div", { children: [
30517
- /* @__PURE__ */ jsx("h5", { className: "font-medium text-red-600 mb-1", children: "Current Risk:" }),
30518
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: rec.problem })
30519
- ] }),
30520
- /* @__PURE__ */ jsxs("div", { children: [
30521
- /* @__PURE__ */ jsx("h5", { className: "font-medium text-green-600 mb-1", children: "Recommended Action:" }),
30522
- /* @__PURE__ */ jsx("p", { className: "text-sm text-slate-600", children: rec.solution })
30523
- ] })
30524
- ] }),
30525
- rec.analogy && /* @__PURE__ */ jsx("div", { className: "mt-3 p-3 bg-blue-50 rounded border-l-4 border-blue-400", children: /* @__PURE__ */ jsx("p", { className: "text-sm text-blue-800 italic", children: rec.analogy }) })
30526
- ] })
30527
- ] })
30528
- },
30529
- rec.id
30530
- ))) || /* @__PURE__ */ jsx("div", { className: "text-center py-8", children: /* @__PURE__ */ jsx("p", { className: "text-slate-500", children: "No specific recommendations available. Your current security posture shows good practices." }) }) })
30531
- ] }),
30532
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
30533
- /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
30534
- /* @__PURE__ */ jsx("div", { className: "w-8 h-8 bg-green-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx("span", { className: "text-white text-lg", children: "✓" }) }),
30535
- /* @__PURE__ */ jsxs("div", { children: [
30536
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900", children: "Proposed Next Steps" }),
30537
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "How to leverage these insights for your organization" })
30538
- ] })
30539
- ] }),
30540
- /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
30541
- /* @__PURE__ */ jsxs("div", { className: "bg-blue-50 border border-blue-200 rounded-lg p-6", children: [
30542
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-4", children: "Immediate Actions" }),
30543
- /* @__PURE__ */ jsxs("ul", { className: "space-y-3 text-slate-700", children: [
30544
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30545
- /* @__PURE__ */ jsx("span", { className: "text-blue-600 mt-1.5 w-1.5 h-1.5 rounded-full bg-blue-600 flex-shrink-0" }),
30546
- /* @__PURE__ */ jsx("span", { children: "Implement the highest priority recommendations identified in this assessment" })
30547
- ] }),
30548
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30549
- /* @__PURE__ */ jsx("span", { className: "text-blue-600 mt-1.5 w-1.5 h-1.5 rounded-full bg-blue-600 flex-shrink-0" }),
30550
- /* @__PURE__ */ jsx("span", { children: "Schedule a cybersecurity strategy session to discuss these findings in detail" })
30551
- ] }),
30552
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30553
- /* @__PURE__ */ jsx("span", { className: "text-blue-600 mt-1.5 w-1.5 h-1.5 rounded-full bg-blue-600 flex-shrink-0" }),
30554
- /* @__PURE__ */ jsx("span", { children: "Begin conversations with insurance providers about current coverage needs" })
30555
- ] })
30556
- ] })
30557
- ] }),
30558
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
30559
- /* @__PURE__ */ jsxs("div", { className: "bg-slate-50 border border-slate-200 rounded-lg p-6", children: [
30560
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-4", children: "Insurance Planning" }),
30561
- /* @__PURE__ */ jsx("p", { className: "text-slate-700 mb-4", children: "Use this score to have informed conversations with insurance providers and understand your options in the marketplace." }),
30562
- /* @__PURE__ */ jsxs("ul", { className: "space-y-2 text-slate-700", children: [
30563
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30564
- /* @__PURE__ */ jsx("span", { className: "text-slate-500 mt-1.5 w-1.5 h-1.5 rounded-full bg-slate-500 flex-shrink-0" }),
30565
- /* @__PURE__ */ jsx("span", { children: "Shop for competitive quotes" })
30566
- ] }),
30567
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30568
- /* @__PURE__ */ jsx("span", { className: "text-slate-500 mt-1.5 w-1.5 h-1.5 rounded-full bg-slate-500 flex-shrink-0" }),
30569
- /* @__PURE__ */ jsx("span", { children: "Understand coverage requirements" })
30570
- ] }),
30571
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30572
- /* @__PURE__ */ jsx("span", { className: "text-slate-500 mt-1.5 w-1.5 h-1.5 rounded-full bg-slate-500 flex-shrink-0" }),
30573
- /* @__PURE__ */ jsx("span", { children: "Review existing policy terms" })
30574
- ] })
30575
- ] })
30576
- ] }),
30577
- /* @__PURE__ */ jsxs("div", { className: "bg-slate-50 border border-slate-200 rounded-lg p-6", children: [
30578
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-4", children: "Security Improvement" }),
30579
- /* @__PURE__ */ jsx("p", { className: "text-slate-700 mb-4", children: "Focus on the security areas that will have the most positive impact on your insurance posture and overall risk." }),
30580
- /* @__PURE__ */ jsxs("ul", { className: "space-y-2 text-slate-700", children: [
30581
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30582
- /* @__PURE__ */ jsx("span", { className: "text-slate-500 mt-1.5 w-1.5 h-1.5 rounded-full bg-slate-500 flex-shrink-0" }),
30583
- /* @__PURE__ */ jsx("span", { children: "Prioritize high-impact improvements" })
30584
- ] }),
30585
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30586
- /* @__PURE__ */ jsx("span", { className: "text-slate-500 mt-1.5 w-1.5 h-1.5 rounded-full bg-slate-500 flex-shrink-0" }),
30587
- /* @__PURE__ */ jsx("span", { children: "Document security controls" })
30588
- ] }),
30589
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-3", children: [
30590
- /* @__PURE__ */ jsx("span", { className: "text-slate-500 mt-1.5 w-1.5 h-1.5 rounded-full bg-slate-500 flex-shrink-0" }),
30591
- /* @__PURE__ */ jsx("span", { children: "Monitor progress regularly" })
30592
- ] })
30593
- ] })
30594
- ] })
30595
- ] })
30596
- ] })
30597
- ] }),
30598
30015
  /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
30599
30016
  /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
30600
30017
  /* @__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: "?" }) }),
@@ -30643,7 +30060,7 @@ const InsuranceHealthScore = ({ reportData }) => {
30643
30060
  ] }),
30644
30061
  /* @__PURE__ */ jsxs("div", { className: "bg-yellow-50 border border-yellow-200 rounded-lg p-6", children: [
30645
30062
  /* @__PURE__ */ jsx("h4", { className: "font-semibold text-slate-900 mb-2", children: "Important Notes" }),
30646
- /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2", children: [
30063
+ /* @__PURE__ */ jsxs("ul", { className: "text-slate-700", children: [
30647
30064
  /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30648
30065
  /* @__PURE__ */ jsx("span", { className: "text-yellow-600 mt-1", children: "•" }),
30649
30066
  /* @__PURE__ */ jsx("span", { children: "This assessment is based on industry standards and general insurance requirements" })
@@ -30660,59 +30077,50 @@ const InsuranceHealthScore = ({ reportData }) => {
30660
30077
  ] })
30661
30078
  ] })
30662
30079
  ] }),
30663
- /* @__PURE__ */ jsxs("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: [
30664
- /* @__PURE__ */ jsxs("div", { className: "flex items-center space-x-3", children: [
30665
- /* @__PURE__ */ jsx("div", { className: "w-8 h-8 bg-gray-600 rounded-lg flex items-center justify-center", children: /* @__PURE__ */ jsx(FileText, { className: "w-5 h-5 text-white" }) }),
30666
- /* @__PURE__ */ jsxs("div", { children: [
30667
- /* @__PURE__ */ jsx("h2", { className: "text-2xl font-bold text-slate-900", children: "Important Disclaimer" }),
30668
- /* @__PURE__ */ jsx("p", { className: "text-slate-600", children: "Legal limitations and professional guidance" })
30080
+ /* @__PURE__ */ jsx("section", { className: "report-page space-y-6 border-t border-slate-200 pt-8", children: /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
30081
+ /* @__PURE__ */ jsxs("div", { children: [
30082
+ /* @__PURE__ */ jsx("h4", { className: "font-semibold text-green-600 mb-3", children: "What This Report IS:" }),
30083
+ /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2 text-sm", children: [
30084
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30085
+ /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "" }),
30086
+ /* @__PURE__ */ jsx("span", { children: "A cybersecurity assessment tool based on industry standards" })
30087
+ ] }),
30088
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30089
+ /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30090
+ /* @__PURE__ */ jsx("span", { children: "Educational guidance on insurance readiness factors" })
30091
+ ] }),
30092
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30093
+ /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30094
+ /* @__PURE__ */ jsx("span", { children: "A starting point for security improvement discussions" })
30095
+ ] }),
30096
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30097
+ /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30098
+ /* @__PURE__ */ jsx("span", { children: "Based on current cybersecurity best practices" })
30099
+ ] })
30669
30100
  ] })
30670
30101
  ] }),
30671
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6", children: [
30672
- /* @__PURE__ */ jsxs("div", { children: [
30673
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-green-600 mb-3", children: "What This Report IS:" }),
30674
- /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2 text-sm", children: [
30675
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30676
- /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30677
- /* @__PURE__ */ jsx("span", { children: "A cybersecurity assessment tool based on industry standards" })
30678
- ] }),
30679
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30680
- /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30681
- /* @__PURE__ */ jsx("span", { children: "Educational guidance on insurance readiness factors" })
30682
- ] }),
30683
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30684
- /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30685
- /* @__PURE__ */ jsx("span", { children: "A starting point for security improvement discussions" })
30686
- ] }),
30687
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30688
- /* @__PURE__ */ jsx("span", { className: "text-green-600 mt-1", children: "✓" }),
30689
- /* @__PURE__ */ jsx("span", { children: "Based on current cybersecurity best practices" })
30690
- ] })
30691
- ] })
30692
- ] }),
30693
- /* @__PURE__ */ jsxs("div", { children: [
30694
- /* @__PURE__ */ jsx("h4", { className: "font-semibold text-red-600 mb-3", children: "What This Report IS NOT:" }),
30695
- /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2 text-sm", children: [
30696
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30697
- /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30698
- /* @__PURE__ */ jsx("span", { children: "A guarantee of insurance coverage or pricing" })
30699
- ] }),
30700
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30701
- /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30702
- /* @__PURE__ */ jsx("span", { children: "A comprehensive security audit or penetration test" })
30703
- ] }),
30704
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30705
- /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30706
- /* @__PURE__ */ jsx("span", { children: "Legal or financial advice" })
30707
- ] }),
30708
- /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30709
- /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30710
- /* @__PURE__ */ jsx("span", { children: "A replacement for professional cybersecurity consultation" })
30711
- ] })
30102
+ /* @__PURE__ */ jsxs("div", { children: [
30103
+ /* @__PURE__ */ jsx("h4", { className: "font-semibold text-red-600 mb-3", children: "What This Report IS NOT:" }),
30104
+ /* @__PURE__ */ jsxs("ul", { className: "text-slate-700 space-y-2 text-sm", children: [
30105
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30106
+ /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30107
+ /* @__PURE__ */ jsx("span", { children: "A guarantee of insurance coverage or pricing" })
30108
+ ] }),
30109
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30110
+ /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30111
+ /* @__PURE__ */ jsx("span", { children: "A comprehensive security audit or penetration test" })
30112
+ ] }),
30113
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30114
+ /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30115
+ /* @__PURE__ */ jsx("span", { children: "Legal or financial advice" })
30116
+ ] }),
30117
+ /* @__PURE__ */ jsxs("li", { className: "flex items-start space-x-2", children: [
30118
+ /* @__PURE__ */ jsx("span", { className: "text-red-600 mt-1", children: "✗" }),
30119
+ /* @__PURE__ */ jsx("span", { children: "A replacement for professional cybersecurity consultation" })
30712
30120
  ] })
30713
30121
  ] })
30714
30122
  ] })
30715
- ] })
30123
+ ] }) })
30716
30124
  ] });
30717
30125
  };
30718
30126
  const Warning = ({ children }) => /* @__PURE__ */ jsx("h4", { className: "text-center text-orange-600 text-lg", children });