/home/techb158/balavpn.abdallabala.com/.next/cache/webpack/client-production
Edit: /home/techb158/balavpn.abdallabala.com/.next/cache/webpack/client-production/1.pack (1057548B)
wpc # webpack/lib/cache/PackFileCacheStrategyPackContentItems@ MinifierWebpackPlugin|static/WQb5_ueN1C5ZTno0PN7kB/_ssgManifest.jsMinifierWebpackPlugin|static/WQb5_ueN1C5ZTno0PN7kB/_buildManifest.jsRealContentHashPlugin|analyse|static/WQb5_ueN1C5ZTno0PN7kB/_ssgManifest.jsRealContentHashPlugin|analyse|static/WQb5_ueN1C5ZTno0PN7kB/_buildManifest.jsRealContentHashPlugin|generate|static/WQb5_ueN1C5ZTno0PN7kB/_buildManifest.jsMinifierWebpackPlugin|static/Q2HD1n6rqBSfioNqHLbDi/_ssgManifest.jsMinifierWebpackPlugin|static/Q2HD1n6rqBSfioNqHLbDi/_buildManifest.jsRealContentHashPlugin|analyse|static/Q2HD1n6rqBSfioNqHLbDi/_ssgManifest.jsRealContentHashPlugin|analyse|static/Q2HD1n6rqBSfioNqHLbDi/_buildManifest.jsRealContentHashPlugin|generate|static/Q2HD1n6rqBSfioNqHLbDi/_buildManifest.jsMinifierWebpackPlugin|static/6SCOtfDkzBOxWgVtfY-6-/_ssgManifest.jsMinifierWebpackPlugin|static/6SCOtfDkzBOxWgVtfY-6-/_buildManifest.jsRealContentHashPlugin|analyse|static/6SCOtfDkzBOxWgVtfY-6-/_ssgManifest.jsRealContentHashPlugin|analyse|static/6SCOtfDkzBOxWgVtfY-6-/_buildManifest.jsRealContentHashPlugin|generate|static/6SCOtfDkzBOxWgVtfY-6-/_buildManifest.jsMinifierWebpackPlugin|static/cduSMscSdBZq3qlVl_EUs/_ssgManifest.jsMinifierWebpackPlugin|static/cduSMscSdBZq3qlVl_EUs/_buildManifest.jsRealContentHashPlugin|analyse|static/cduSMscSdBZq3qlVl_EUs/_ssgManifest.jsRealContentHashPlugin|analyse|static/cduSMscSdBZq3qlVl_EUs/_buildManifest.jsRealContentHashPlugin|generate|static/cduSMscSdBZq3qlVl_EUs/_buildManifest.jsMinifierWebpackPlugin|static/iR9M7Xp31RubTM79MqiLM/_ssgManifest.jsMinifierWebpackPlugin|static/iR9M7Xp31RubTM79MqiLM/_buildManifest.jsRealContentHashPlugin|analyse|static/iR9M7Xp31RubTM79MqiLM/_ssgManifest.jsRealContentHashPlugin|analyse|static/iR9M7Xp31RubTM79MqiLM/_buildManifest.jsRealContentHashPlugin|generate|static/iR9M7Xp31RubTM79MqiLM/_buildManifest.js Compilation/modules|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\css-loader\src\runtime\api.js Compilation/codeGeneration|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\css-loader\src\runtime\api.js|build timeCompilation/codeGeneration|webpack/runtime/compat get default export|build timeCompilation/codeGeneration|webpack/runtime/make namespace object|build timeCompilation/codeGeneration|webpack/runtime/define property getters|build timeCompilation/codeGeneration|webpack/runtime/hasOwnProperty shorthand|build timeMinifierWebpackPlugin|static/hhvMNVgOdIqgk2n8RYhcH/_ssgManifest.jsMinifierWebpackPlugin|static/hhvMNVgOdIqgk2n8RYhcH/_buildManifest.jsRealContentHashPlugin|analyse|static/hhvMNVgOdIqgk2n8RYhcH/_ssgManifest.jsRealContentHashPlugin|analyse|static/hhvMNVgOdIqgk2n8RYhcH/_buildManifest.jsRealContentHashPlugin|generate|static/hhvMNVgOdIqgk2n8RYhcH/_buildManifest.jsMinifierWebpackPlugin|static/kcXCCqaxYVEGQpXxFajT-/_ssgManifest.jsMinifierWebpackPlugin|static/kcXCCqaxYVEGQpXxFajT-/_buildManifest.jsRealContentHashPlugin|analyse|static/kcXCCqaxYVEGQpXxFajT-/_ssgManifest.jsRealContentHashPlugin|analyse|static/kcXCCqaxYVEGQpXxFajT-/_buildManifest.jsRealContentHashPlugin|generate|static/kcXCCqaxYVEGQpXxFajT-/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/signup/page-ed3b5e41b2ae0811.jsMinifierWebpackPlugin|static/chunks/app/login/page-f18fac8497ba3a6a.jsRealContentHashPlugin|analyse|static/chunks/app/signup/page-ed3b5e41b2ae0811.jsRealContentHashPlugin|analyse|static/chunks/app/login/page-f18fac8497ba3a6a.jsMinifierWebpackPlugin|static/kA9zE89mIrQKNGeqz9DRX/_ssgManifest.jsMinifierWebpackPlugin|static/kA9zE89mIrQKNGeqz9DRX/_buildManifest.jsRealContentHashPlugin|analyse|static/kA9zE89mIrQKNGeqz9DRX/_ssgManifest.jsRealContentHashPlugin|analyse|static/kA9zE89mIrQKNGeqz9DRX/_buildManifest.jsRealContentHashPlugin|generate|static/kA9zE89mIrQKNGeqz9DRX/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/api/auth/logout/route-10e0a6ebfcd5b2ac.jsMinifierWebpackPlugin|static/chunks/app/api/auth/login/route-649fba498029f4be.jsMinifierWebpackPlugin|static/chunks/app/api/auth/accept-invite/route-e7177e6894da661b.jsMinifierWebpackPlugin|static/chunks/app/api/auth/invite/route-40a58bf341775023.jsMinifierWebpackPlugin|static/chunks/app/api/auth/signup/route-389d5ea13d1267e6.jsMinifierWebpackPlugin|static/chunks/app/api/auth/session/route-39f2cff6c3181ff5.jsMinifierWebpackPlugin|static/chunks/app/api/auth/me/route-9b4ffa232d37f473.jsMinifierWebpackPlugin|static/chunks/app/api/auth/sso/callback/route-f22cbfd63775de5f.jsMinifierWebpackPlugin|static/chunks/app/api/billing/portal/route-18ad8151a2b9bae9.jsMinifierWebpackPlugin|static/chunks/app/api/billing/webhook/route-6b5fb9ac274dd41f.jsMinifierWebpackPlugin|static/chunks/app/api/billing/checkout/route-2c17043d7c8a8aa4.jsMinifierWebpackPlugin|static/chunks/app/api/auth/sso/route-ff642f852ce28de1.jsMinifierWebpackPlugin|static/chunks/app/api/integrations/[integrationId]/live/sync/route-9dd75e1481dbb63e.jsMinifierWebpackPlugin|static/chunks/app/api/gates/[gateId]/decisions/route-b23d1cd9ec504f6c.jsMinifierWebpackPlugin|static/chunks/app/api/billing/subscription/route-c626092190583e36.jsMinifierWebpackPlugin|static/chunks/app/api/gate-criteria/[criterionId]/route-2a5d43b83eb8074d.jsMinifierWebpackPlugin|static/chunks/app/api/integration-providers/route-08a82332d5c6f47e.jsMinifierWebpackPlugin|static/chunks/app/api/integrations/[integrationId]/live/test/route-ee93dd9fa2e5abfe.jsMinifierWebpackPlugin|static/chunks/app/api/health/route-7db111a490d20dc3.jsMinifierWebpackPlugin|static/chunks/app/api/mitigations/[mitigationId]/evidence/route-73138d669726eb62.jsMinifierWebpackPlugin|static/chunks/app/api/metrics/route-a42c683bc5c1f4cd.jsMinifierWebpackPlugin|static/chunks/app/api/integrations/[integrationId]/sync/route-65f8c44230f1250c.jsMinifierWebpackPlugin|static/chunks/app/api/mitigations/[mitigationId]/route-4f044631084eff9d.jsMinifierWebpackPlugin|static/chunks/app/api/integrations/[integrationId]/route-fb926cf16428bc35.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/reports/[reportType]/route-2b0d5b284e9097b3.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/dashboard/route-b7968027bad2b853.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/mitigations/route-5138b0ecf5471398.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/audit/route-f04fe521c6160496.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/risks/route-79ac0adb77017779.jsMinifierWebpackPlugin|static/chunks/app/api/risks/[riskId]/mitigations/route-705e26d9250f9621.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/route-f32c675c9d388441.jsMinifierWebpackPlugin|static/chunks/app/api/risks/[riskId]/route-c9a163196358f1c3.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/gate/evaluate/route-4395fe9619ca860b.jsMinifierWebpackPlugin|static/chunks/app/api/ready/route-df9a68a34ccf4cb6.jsMinifierWebpackPlugin|static/chunks/app/api/workspaces/[workspaceId]/integration-mappings/route-2cb07be162e96cb6.jsMinifierWebpackPlugin|static/chunks/app/api/projects/[projectId]/gate/history/route-5c97fed6c0da77ef.jsMinifierWebpackPlugin|static/chunks/app/api/workspaces/[workspaceId]/route-8a338340f7cddb2f.jsMinifierWebpackPlugin|static/chunks/app/api/workspaces/[workspaceId]/projects/route-5c548f621bd6c5a9.jsMinifierWebpackPlugin|static/chunks/app/api/organizations/route-1740725c4648b998.jsMinifierWebpackPlugin|static/chunks/app/api/workspaces/[workspaceId]/sync-runs/route-678d331edf80e7b8.jsMinifierWebpackPlugin|static/chunks/app/api/workspaces/[workspaceId]/integrations/route-36798902b671b661.jsMinifierWebpackPlugin|static/chunks/app/api/workspaces/route-6cf8dc8aceeff4f0.jsMinifierWebpackPlugin|static/chunks/app/page-a83a6d823464b0e3.jsCssMinimizerPlugin|static/css/e8f5205552323513.cssRealContentHashPlugin|analyse|static/chunks/app/api/auth/logout/route-10e0a6ebfcd5b2ac.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/login/route-649fba498029f4be.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/accept-invite/route-e7177e6894da661b.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/invite/route-40a58bf341775023.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/signup/route-389d5ea13d1267e6.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/session/route-39f2cff6c3181ff5.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/me/route-9b4ffa232d37f473.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/sso/callback/route-f22cbfd63775de5f.jsRealContentHashPlugin|analyse|static/chunks/app/api/billing/portal/route-18ad8151a2b9bae9.jsRealContentHashPlugin|analyse|static/chunks/app/api/billing/webhook/route-6b5fb9ac274dd41f.jsRealContentHashPlugin|analyse|static/chunks/app/api/billing/checkout/route-2c17043d7c8a8aa4.jsRealContentHashPlugin|analyse|static/chunks/app/api/auth/sso/route-ff642f852ce28de1.jsRealContentHashPlugin|analyse|static/chunks/app/api/integrations/[integrationId]/live/sync/route-9dd75e1481dbb63e.jsRealContentHashPlugin|analyse|static/chunks/app/api/gates/[gateId]/decisions/route-b23d1cd9ec504f6c.jsRealContentHashPlugin|analyse|static/chunks/app/api/billing/subscription/route-c626092190583e36.jsRealContentHashPlugin|analyse|static/chunks/app/api/gate-criteria/[criterionId]/route-2a5d43b83eb8074d.jsRealContentHashPlugin|analyse|static/chunks/app/api/integration-providers/route-08a82332d5c6f47e.jsRealContentHashPlugin|analyse|static/chunks/app/api/integrations/[integrationId]/live/test/route-ee93dd9fa2e5abfe.jsRealContentHashPlugin|analyse|static/chunks/app/api/health/route-7db111a490d20dc3.jsRealContentHashPlugin|analyse|static/chunks/app/api/mitigations/[mitigationId]/evidence/route-73138d669726eb62.jsRealContentHashPlugin|analyse|static/chunks/app/api/metrics/route-a42c683bc5c1f4cd.jsRealContentHashPlugin|analyse|static/chunks/app/api/integrations/[integrationId]/sync/route-65f8c44230f1250c.jsRealContentHashPlugin|analyse|static/chunks/app/api/mitigations/[mitigationId]/route-4f044631084eff9d.jsRealContentHashPlugin|analyse|static/chunks/app/api/integrations/[integrationId]/route-fb926cf16428bc35.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/reports/[reportType]/route-2b0d5b284e9097b3.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/dashboard/route-b7968027bad2b853.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/mitigations/route-5138b0ecf5471398.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/audit/route-f04fe521c6160496.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/risks/route-79ac0adb77017779.jsRealContentHashPlugin|analyse|static/chunks/app/api/risks/[riskId]/mitigations/route-705e26d9250f9621.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/route-f32c675c9d388441.jsRealContentHashPlugin|analyse|static/chunks/app/api/risks/[riskId]/route-c9a163196358f1c3.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/gate/evaluate/route-4395fe9619ca860b.jsRealContentHashPlugin|analyse|static/chunks/app/api/ready/route-df9a68a34ccf4cb6.jsRealContentHashPlugin|analyse|static/chunks/app/api/workspaces/[workspaceId]/integration-mappings/route-2cb07be162e96cb6.jsRealContentHashPlugin|analyse|static/chunks/app/api/projects/[projectId]/gate/history/route-5c97fed6c0da77ef.jsRealContentHashPlugin|analyse|static/chunks/app/api/workspaces/[workspaceId]/route-8a338340f7cddb2f.jsRealContentHashPlugin|analyse|static/chunks/app/api/workspaces/[workspaceId]/projects/route-5c548f621bd6c5a9.jsRealContentHashPlugin|analyse|static/chunks/app/api/organizations/route-1740725c4648b998.jsRealContentHashPlugin|analyse|static/chunks/app/api/workspaces/[workspaceId]/sync-runs/route-678d331edf80e7b8.jsRealContentHashPlugin|analyse|static/chunks/app/api/workspaces/[workspaceId]/integrations/route-36798902b671b661.jsRealContentHashPlugin|analyse|static/chunks/app/api/workspaces/route-6cf8dc8aceeff4f0.jsRealContentHashPlugin|analyse|static/chunks/app/page-a83a6d823464b0e3.jsRealContentHashPlugin|analyse|static/css/e8f5205552323513.css Compilation/codeGeneration|javascript/auto|C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-flight-client-module-loader.js!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\next-swc-loader.js??ruleSet[1].rules[16].oneOf[6].use[1]!C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\src\app\dashboard\page.jsx|app-pages-browser|webpackMinifierWebpackPlugin|static/chunks/app/dashboard/layout-9e8421f4c090faf2.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-d8c7ca8aed6c021b.jsMinifierWebpackPlugin|static/chunks/4bd1b696-3a38a6ef84334d14.jsMinifierWebpackPlugin|static/chunks/1255-1b13c8d0def31f5d.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/layout-9e8421f4c090faf2.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-d8c7ca8aed6c021b.jsRealContentHashPlugin|analyse|static/chunks/4bd1b696-3a38a6ef84334d14.jsRealContentHashPlugin|analyse|static/chunks/1255-1b13c8d0def31f5d.jsMinifierWebpackPlugin|static/CbuUuEw93fExgYx4HhpCZ/_ssgManifest.jsMinifierWebpackPlugin|static/CbuUuEw93fExgYx4HhpCZ/_buildManifest.jsRealContentHashPlugin|analyse|static/CbuUuEw93fExgYx4HhpCZ/_ssgManifest.jsRealContentHashPlugin|analyse|static/CbuUuEw93fExgYx4HhpCZ/_buildManifest.jsRealContentHashPlugin|generate|static/CbuUuEw93fExgYx4HhpCZ/_buildManifest.jsMinifierWebpackPlugin|static/vWOqLn3cE-kkCq--ZBEjK/_ssgManifest.jsMinifierWebpackPlugin|static/vWOqLn3cE-kkCq--ZBEjK/_buildManifest.jsRealContentHashPlugin|analyse|static/vWOqLn3cE-kkCq--ZBEjK/_ssgManifest.jsRealContentHashPlugin|analyse|static/vWOqLn3cE-kkCq--ZBEjK/_buildManifest.jsRealContentHashPlugin|generate|static/vWOqLn3cE-kkCq--ZBEjK/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-d08802324a84acaf.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-d08802324a84acaf.jsMinifierWebpackPlugin|static/nePkcP1kGbLYAS6jbX2Zr/_ssgManifest.jsMinifierWebpackPlugin|static/nePkcP1kGbLYAS6jbX2Zr/_buildManifest.jsRealContentHashPlugin|analyse|static/nePkcP1kGbLYAS6jbX2Zr/_ssgManifest.jsRealContentHashPlugin|analyse|static/nePkcP1kGbLYAS6jbX2Zr/_buildManifest.jsRealContentHashPlugin|generate|static/nePkcP1kGbLYAS6jbX2Zr/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-7835d3625e40d27c.jsMinifierWebpackPlugin|static/vnHGa9ig58Jv-QThFPrF1/_ssgManifest.jsMinifierWebpackPlugin|static/vnHGa9ig58Jv-QThFPrF1/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-7835d3625e40d27c.jsRealContentHashPlugin|analyse|static/vnHGa9ig58Jv-QThFPrF1/_ssgManifest.jsRealContentHashPlugin|analyse|static/vnHGa9ig58Jv-QThFPrF1/_buildManifest.jsRealContentHashPlugin|generate|static/vnHGa9ig58Jv-QThFPrF1/_buildManifest.jsMinifierWebpackPlugin|static/dDRn3YQvUAbcJBt3oCM34/_ssgManifest.jsMinifierWebpackPlugin|static/dDRn3YQvUAbcJBt3oCM34/_buildManifest.jsRealContentHashPlugin|analyse|static/dDRn3YQvUAbcJBt3oCM34/_ssgManifest.jsRealContentHashPlugin|analyse|static/dDRn3YQvUAbcJBt3oCM34/_buildManifest.jsRealContentHashPlugin|generate|static/dDRn3YQvUAbcJBt3oCM34/_buildManifest.jsMinifierWebpackPlugin|static/IlpLEbcZmwaQfF-tE732Z/_ssgManifest.jsMinifierWebpackPlugin|static/IlpLEbcZmwaQfF-tE732Z/_buildManifest.jsRealContentHashPlugin|analyse|static/IlpLEbcZmwaQfF-tE732Z/_ssgManifest.jsRealContentHashPlugin|analyse|static/IlpLEbcZmwaQfF-tE732Z/_buildManifest.jsRealContentHashPlugin|generate|static/IlpLEbcZmwaQfF-tE732Z/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-62fe91578c662910.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-62fe91578c662910.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-f6897b57f7b69ac0.jsMinifierWebpackPlugin|static/4tv9a38aUiIQJ820OQ1w9/_ssgManifest.jsMinifierWebpackPlugin|static/4tv9a38aUiIQJ820OQ1w9/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-f6897b57f7b69ac0.jsRealContentHashPlugin|analyse|static/4tv9a38aUiIQJ820OQ1w9/_ssgManifest.jsRealContentHashPlugin|analyse|static/4tv9a38aUiIQJ820OQ1w9/_buildManifest.jsRealContentHashPlugin|generate|static/4tv9a38aUiIQJ820OQ1w9/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-e6d6d863b9c5facd.jsMinifierWebpackPlugin|static/3_0t7AicTGEEAaPn2eVRB/_ssgManifest.jsMinifierWebpackPlugin|static/3_0t7AicTGEEAaPn2eVRB/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-e6d6d863b9c5facd.jsRealContentHashPlugin|analyse|static/3_0t7AicTGEEAaPn2eVRB/_ssgManifest.jsRealContentHashPlugin|analyse|static/3_0t7AicTGEEAaPn2eVRB/_buildManifest.jsRealContentHashPlugin|generate|static/3_0t7AicTGEEAaPn2eVRB/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-ebfac2433fff5568.jsMinifierWebpackPlugin|static/sty3S-oKDfB9NdmMJRBYz/_ssgManifest.jsMinifierWebpackPlugin|static/sty3S-oKDfB9NdmMJRBYz/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-ebfac2433fff5568.jsRealContentHashPlugin|analyse|static/sty3S-oKDfB9NdmMJRBYz/_ssgManifest.jsRealContentHashPlugin|analyse|static/sty3S-oKDfB9NdmMJRBYz/_buildManifest.jsRealContentHashPlugin|generate|static/sty3S-oKDfB9NdmMJRBYz/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-6a9603810f640729.jsMinifierWebpackPlugin|static/fg5bcDpT8z2TnH3_Ok6kT/_ssgManifest.jsMinifierWebpackPlugin|static/fg5bcDpT8z2TnH3_Ok6kT/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-6a9603810f640729.jsRealContentHashPlugin|analyse|static/fg5bcDpT8z2TnH3_Ok6kT/_ssgManifest.jsRealContentHashPlugin|analyse|static/fg5bcDpT8z2TnH3_Ok6kT/_buildManifest.jsRealContentHashPlugin|generate|static/fg5bcDpT8z2TnH3_Ok6kT/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-3f267d9e2c1f2be3.jsMinifierWebpackPlugin|static/Qm5X11DG_eFhhQovjItXP/_ssgManifest.jsMinifierWebpackPlugin|static/Qm5X11DG_eFhhQovjItXP/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-3f267d9e2c1f2be3.jsRealContentHashPlugin|analyse|static/Qm5X11DG_eFhhQovjItXP/_ssgManifest.jsRealContentHashPlugin|analyse|static/Qm5X11DG_eFhhQovjItXP/_buildManifest.jsRealContentHashPlugin|generate|static/Qm5X11DG_eFhhQovjItXP/_buildManifest.jsMinifierWebpackPlugin|static/kzy270SHtS7iBqaHWTSs7/_ssgManifest.jsMinifierWebpackPlugin|static/kzy270SHtS7iBqaHWTSs7/_buildManifest.jsRealContentHashPlugin|analyse|static/kzy270SHtS7iBqaHWTSs7/_ssgManifest.jsRealContentHashPlugin|analyse|static/kzy270SHtS7iBqaHWTSs7/_buildManifest.jsRealContentHashPlugin|generate|static/kzy270SHtS7iBqaHWTSs7/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-b5699718a3b514fa.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-b5699718a3b514fa.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-13249de5af9f4d13.jsMinifierWebpackPlugin|static/uda0ZQtlx501_BmHJdoNN/_ssgManifest.jsMinifierWebpackPlugin|static/uda0ZQtlx501_BmHJdoNN/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-13249de5af9f4d13.jsRealContentHashPlugin|analyse|static/uda0ZQtlx501_BmHJdoNN/_ssgManifest.jsRealContentHashPlugin|analyse|static/uda0ZQtlx501_BmHJdoNN/_buildManifest.jsRealContentHashPlugin|generate|static/uda0ZQtlx501_BmHJdoNN/_buildManifest.jsMinifierWebpackPlugin|static/kb92KMhyg4HgcUzPZYBSR/_ssgManifest.jsMinifierWebpackPlugin|static/kb92KMhyg4HgcUzPZYBSR/_buildManifest.jsRealContentHashPlugin|analyse|static/kb92KMhyg4HgcUzPZYBSR/_ssgManifest.jsRealContentHashPlugin|analyse|static/kb92KMhyg4HgcUzPZYBSR/_buildManifest.jsRealContentHashPlugin|generate|static/kb92KMhyg4HgcUzPZYBSR/_buildManifest.jsMinifierWebpackPlugin|static/chunks/app/dashboard/page-7c04b9a24b9d879e.jsMinifierWebpackPlugin|static/I1-3U3_abIqeH5ks1252c/_ssgManifest.jsMinifierWebpackPlugin|static/I1-3U3_abIqeH5ks1252c/_buildManifest.jsRealContentHashPlugin|analyse|static/chunks/app/dashboard/page-7c04b9a24b9d879e.jsRealContentHashPlugin|analyse|static/I1-3U3_abIqeH5ks1252c/_ssgManifest.jsRealContentHashPlugin|analyse|static/I1-3U3_abIqeH5ks1252c/_buildManifest.jsRealContentHashPlugin|generate|static/I1-3U3_abIqeH5ks1252c/_buildManifest.jssourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceM self.__SSG_MANIFEST=new Set,self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB();Z self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:24,errorRate:1e-4,numBits:461,numHashes:14,bitArray:[1,0,1,e,e,e,e,e,0,e,r,r,e,e,r,e,r,e,e,r,e,r,e,r,e,e,r,r,r,e,e,r,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,r,r,e,e,e,r,e,r,r,e,e,e,e,e,r,e,r,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,r,r,e,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,r,e,r,e,e,e,r,r,r,e,e,e,r,e,e,r,r,r,r,e,e,e,r,e,r,e,e,e,e,e,e,e,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,r,e,e,e,r,e,e,e,r,r,e,e,r,e,r,r,e,e,r,e,e,e,r,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,r,e,e,r,r,e,e,e,e,e,e,r,r,e,e,e,e,e,r,e,e,r,e,e,e,e,r,e,r,r,e,e,e,r,e,e,r,e,e,r,r,e,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,r,e,r,r,r,r,r,r,e,e,r,e,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,r,e,r,e,e,r,r,r,r,r,e,r,e,r,r,e,r,r,r,e,r,e,r,e,e,e,e,r,e,r,e,e,e,e,r,r,r,e,r,e,r,e,e,e,r,r,e,e,r,e,r,r,r,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,r,e,e,r,e,e,r,e,e,e]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[r,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,e,e,r,r,r,r,e,e,r,e,e,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,e,e,r,r,e,r,e,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,e,r,r,r,r,e,r,r,e,e,r,r,r,r,e,r,r,r,r,e,r,e,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-adab2008ace8b58f.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); adab2008ace8b58f Z self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:24,errorRate:1e-4,numBits:461,numHashes:14,bitArray:[1,0,1,e,e,e,e,e,0,e,r,r,e,e,r,e,r,e,e,r,e,r,e,r,e,e,r,r,r,e,e,r,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,r,r,e,e,e,r,e,r,r,e,e,e,e,e,r,e,r,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,r,r,e,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,r,e,r,e,e,e,r,r,r,e,e,e,r,e,e,r,r,r,r,e,e,e,r,e,r,e,e,e,e,e,e,e,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,r,e,e,e,r,e,e,e,r,r,e,e,r,e,r,r,e,e,r,e,e,e,r,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,r,e,e,r,r,e,e,e,e,e,e,r,r,e,e,e,e,e,r,e,e,r,e,e,e,e,r,e,r,r,e,e,e,r,e,e,r,e,e,r,r,e,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,r,e,r,r,r,r,r,r,e,e,r,e,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,r,e,r,e,e,r,r,r,r,r,e,r,e,r,r,e,r,r,r,e,r,e,r,e,e,e,e,r,e,r,e,e,e,e,r,r,r,e,r,e,r,e,e,e,r,r,e,e,r,e,r,r,r,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,r,e,e,r,e,e,r,e,e,e]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[r,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,e,e,r,r,r,r,e,e,r,e,e,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,e,e,r,r,e,r,e,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,e,r,r,r,r,e,r,r,e,e,r,r,r,r,e,r,r,r,r,e,r,e,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-e4ba546eb376bdf4.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); Z self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:24,errorRate:1e-4,numBits:461,numHashes:14,bitArray:[1,0,1,e,e,e,e,e,0,e,r,r,e,e,r,e,r,e,e,r,e,r,e,r,e,e,r,r,r,e,e,r,r,r,e,r,r,e,r,r,e,r,r,e,e,r,r,r,r,e,e,e,r,e,r,r,e,e,e,e,e,r,e,r,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,r,r,e,e,e,r,r,e,e,e,e,e,r,r,r,r,r,e,e,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,e,r,r,e,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,r,e,r,e,e,r,e,r,e,e,r,r,e,r,r,e,r,e,e,e,r,r,r,e,e,e,r,e,e,r,r,r,r,e,e,e,r,e,r,e,e,e,e,e,e,e,e,e,r,e,r,e,e,e,r,r,r,e,r,r,e,e,r,e,r,r,r,e,e,e,e,e,r,e,e,e,r,e,r,e,e,e,e,e,e,r,r,e,e,r,r,e,e,e,r,e,r,r,e,r,r,e,r,e,e,e,r,e,e,e,r,r,e,e,r,e,r,r,e,e,r,e,e,e,r,e,e,r,r,e,r,e,r,r,e,r,e,r,e,e,e,e,r,e,e,r,e,e,r,r,e,e,e,e,e,e,r,r,e,e,e,e,e,r,e,e,r,e,e,e,e,r,e,r,r,e,e,e,r,e,e,r,e,e,r,r,e,e,e,r,r,r,e,r,r,r,r,e,e,r,e,e,r,r,r,r,e,r,e,r,r,r,r,r,e,r,r,r,r,r,r,e,e,r,e,r,r,e,e,e,e,r,r,r,r,r,r,r,e,e,e,r,r,e,r,e,e,r,e,r,e,e,r,r,r,r,r,e,r,e,r,r,e,r,r,r,e,r,e,r,e,e,e,e,r,e,r,e,e,e,e,r,r,r,e,r,e,r,e,e,e,r,r,e,e,r,e,r,r,r,e,r,r,r,e,r,r,r,r,r,r,e,r,e,r,e,e,r,e,e,r,e,e,r,e,e,e]},__routerFilterDynamic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[r,e,e,e,e,e,e,r,e,e,r,r,r,r,e,r,e,e,r,r,e,e,e,e,r,r,r,e,e,r,e,r,e,r,e,e,e,e,r,r,e,e,r,r,e,e,e,r,r,r,r,e,e,r,e,e,r,r,r,e,e,e,e,r,r,r,r,r,r,r,r,r,e,e,e,e,e,r,r,r,e,e,r,r,r,e,e,e,r,r,e,r,e,e,r,e,e,r,r,e,r,e,e,e,r,r,e,e,e,r,r,r,r,e,r,r,e,e,r,r,r,r,e,r,r,r,r,e,r,e,e,r,e,r,r]},"/_error":["static/chunks/pages/_error-e4ba546eb376bdf4.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); webpack/lib/NormalModule= /*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/ // css base code, injected by the css-loader
// eslint-disable-next-line func-names
"use strict";
module.exports = function(useSourceMap) {
var list = [] // return the list of modules as css string
;
list.toString = function toString() {
return this.map(function(item) {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
var content = cssWithMappingToString(item, useSourceMap);
if (item[2]) {
return '@media '.concat(item[2], ' {').concat(content, '}');
}
return content;
}).join('');
} // import a list of modules into the list
;
// eslint-disable-next-line func-names
// @ts-expect-error TODO: fix type
list.i = function(modules, mediaQuery, dedupe) {
if (typeof modules === 'string') {
// eslint-disable-next-line no-param-reassign
modules = [
[
null,
modules,
''
]
];
}
var alreadyImportedModules = {};
if (dedupe) {
for(var i = 0; i < this.length; i++){
// eslint-disable-next-line prefer-destructuring
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for(var _i = 0; _i < modules.length; _i++){
var item = [].concat(modules[_i]);
if (dedupe && alreadyImportedModules[item[0]]) {
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = ''.concat(mediaQuery, ' and ').concat(item[2]);
}
}
list.push(item);
}
};
return list;
};
function cssWithMappingToString(item, useSourceMap) {
var content = item[1] || '' // eslint-disable-next-line prefer-destructuring
;
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (useSourceMap && typeof btoa === 'function') {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
var sourceMapping = toComment(cssMapping);
var sourceURLs = cssMapping.sources.map(function(source) {
return '/*# sourceURL='.concat(cssMapping.sourceRoot || '').concat(source, ' */');
});
return [
content
].concat(sourceURLs).concat([
sourceMapping
]).join('\n');
}
return [
content
].join('\n');
} // Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(base64);
return '/*# '.concat(data, ' */');
}
//# sourceMappingURL=api.js.map
javascript/auto C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\css-loader\src\runtimealiasfullySpecifiedfallbackserver-only$client-only$next/dist/compiled/client-only$next/dist/compiled/server-onlynextnext/dist/compiled/server-only/indexnext/dist/compiled/client-only/index C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next
`assertbufferconstantscryptodomainhttphttpsospathpunycodeprocessquerystringstreamstring_decodersystimersttyutilvmzlibeventssetImmediate C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\assert\assert.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\buffer\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\constants-browserify\constants.json C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\crypto-browserify\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\domain-browser\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\stream-http\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\https-browserify\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\os-browserify\browser.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\path-browserify\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\punycode\punycode.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\polyfills\process.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\querystring-es3\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\stream-browserify\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\string_decoder\string_decoder.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\util\util.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\timers-browserify\main.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\tty-browserify\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\vm-browserify\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\browserify-zlib\index.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\events\events.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\compiled\setimmediate\setImmediate.js`
cacheableparsedfileDependenciescontextDependenciesmissingDependenciesbuildDependenciesvalueDependencieshashassetsassetsInfostricttopLevelDeclarationssnapshotwebpack/DefinePlugin_hashff9a23f2114dae3efe1565e0cssWithMappingToStringtoCommentwebpack/lib/FileSystemInfoSnapshot@ pKyBnext@15.5.20 C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\dist\build\webpack\loaders\css-loader\src\runtime\api.js C:\Users\abd_b\OneDrive\Desktop\COSMIC AI-Risk Dashboard\Step 12 is complete Final QA, Demo Readiness, and Submission Freeze\application\saas-app\node_modules\next\package.jsonwebpack/lib/dependencies/ConstDependencyA
`
webpack/lib/dependencies/CommonJsSelfReferenceDependencyA module.exports ` sourcesruntimeRequirementsdata javascriptwebpack/lib/util/registerExternalSerializerwebpack-sources/CachedSource webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSource= /*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/ // css base code, injected by the css-loader
// eslint-disable-next-line func-names
"use strict";
module.exports = function(useSourceMap) {
var list = [] // return the list of modules as css string
;
list.toString = function toString() {
return this.map(function(item) {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
var content = cssWithMappingToString(item, useSourceMap);
if (item[2]) {
return '@media '.concat(item[2], ' {').concat(content, '}');
}
return content;
}).join('');
} // import a list of modules into the list
;
// eslint-disable-next-line func-names
// @ts-expect-error TODO: fix type
list.i = function(modules, mediaQuery, dedupe) {
if (typeof modules === 'string') {
// eslint-disable-next-line no-param-reassign
modules = [
[
null,
modules,
''
]
];
}
var alreadyImportedModules = {};
if (dedupe) {
for(var i = 0; i < this.length; i++){
// eslint-disable-next-line prefer-destructuring
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for(var _i = 0; _i < modules.length; _i++){
var item = [].concat(modules[_i]);
if (dedupe && alreadyImportedModules[item[0]]) {
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = ''.concat(mediaQuery, ' and ').concat(item[2]);
}
}
list.push(item);
}
};
return list;
};
function cssWithMappingToString(item, useSourceMap) {
var content = item[1] || '' // eslint-disable-next-line prefer-destructuring
;
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (useSourceMap && typeof btoa === 'function') {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
var sourceMapping = toComment(cssMapping);
var sourceURLs = cssMapping.sources.map(function(source) {
return '/*# sourceURL='.concat(cssMapping.sourceRoot || '').concat(source, ' */');
});
return [
content
].concat(sourceURLs).concat([
sourceMapping
]).join('\n');
}
return [
content
].join('\n');
} // Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(base64);
return '/*# '.concat(data, ' */');
}
//# sourceMappingURL=api.js.mapA Vsizemaps0 /*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/ // css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function(useSourceMap) {
var list = [] // return the list of modules as css string
;
list.toString = function toString() {
return this.map(function(item) {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
var content = cssWithMappingToString(item, useSourceMap);
if (item[2]) {
return '@media '.concat(item[2], ' {').concat(content, '}');
}
return content;
}).join('');
} // import a list of modules into the list
;
// eslint-disable-next-line func-names
// @ts-expect-error TODO: fix type
list.i = function(modules, mediaQuery, dedupe) {
if (typeof modules === 'string') {
// eslint-disable-next-line no-param-reassign
modules = [
[
null,
modules,
''
]
];
}
var alreadyImportedModules = {};
if (dedupe) {
for(var i = 0; i < this.length; i++){
// eslint-disable-next-line prefer-destructuring
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for(var _i = 0; _i < modules.length; _i++){
var item = [].concat(modules[_i]);
if (dedupe && alreadyImportedModules[item[0]]) {
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = ''.concat(mediaQuery, ' and ').concat(item[2]);
}
}
list.push(item);
}
};
return list;
};
function cssWithMappingToString(item, useSourceMap) {
var content = item[1] || '' // eslint-disable-next-line prefer-destructuring
;
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (useSourceMap && typeof btoa === 'function') {
// eslint-disable-next-line @typescript-eslint/no-use-before-define
var sourceMapping = toComment(cssMapping);
var sourceURLs = cssMapping.sources.map(function(source) {
return '/*# sourceURL='.concat(cssMapping.sourceRoot || '').concat(source, ' */');
});
return [
content
].concat(sourceURLs).concat([
sourceMapping
]).join('\n');
}
return [
content
].join('\n');
} // Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,'.concat(base64);
return '/*# '.concat(data, ' */');
}
//# sourceMappingURL=api.js.map
module
runtime // getDefaultExport function for compatibility with non-harmony modules
__webpack_require__.n = (module) => {
var getter = module && module.__esModule ?
() => (module['default']) :
() => (module);
__webpack_require__.d(getter, { a: getter });
return getter;
};
// define __esModule on exports
__webpack_require__.r = (exports) => {
if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
}
Object.defineProperty(exports, '__esModule', { value: true });
};
4 // define getter functions for harmony exports
__webpack_require__.d = (exports, definition) => {
for(var key in definition) {
if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
}
}
};
X __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) 9: 7; < I ./ ,0 1 > # (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[879],{63:(e,t,i)=>{"use strict";var r=i(7260);i.o(r,"useRouter")&&i.d(t,{useRouter:function(){return r.useRouter}}),i.o(r,"useSearchParams")&&i.d(t,{useSearchParams:function(){return r.useSearchParams}})},774:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>s});var r=i(5155),a=i(2115),n=i(63);function s(){let e=(0,n.useRouter)(),[t,i]=(0,a.useState)(""),[s,o]=(0,a.useState)(""),[l,d]=(0,a.useState)(""),[u,c]=(0,a.useState)("");async function h(i){i.preventDefault(),c("");try{let i=await fetch("/api/auth/signup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t,displayName:s,password:l})});if(!i.ok){let e=await i.json();throw Error(e.error||"Signup failed")}e.push("/dashboard")}catch(e){c(e.message)}}return(0,r.jsx)("main",{className:"shell",style:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"100vh"},children:(0,r.jsxs)("div",{className:"panel",style:{maxWidth:420,width:"100%",padding:32},children:[(0,r.jsx)("div",{className:"brand",style:{fontSize:24,marginBottom:24,textAlign:"center"},children:"COSMIC AI-Risk SaaS"}),(0,r.jsx)("h2",{style:{marginBottom:8},children:"Create account"}),(0,r.jsx)("p",{className:"muted",style:{marginBottom:24},children:"Sign up for a new workspace"}),u&&(0,r.jsx)("div",{style:{background:"var(--blocked-soft)",color:"var(--blocked)",padding:"8px 12px",borderRadius:8,marginBottom:16,fontSize:14},children:u}),(0,r.jsxs)("form",{onSubmit:h,children:[(0,r.jsxs)("div",{style:{marginBottom:16},children:[(0,r.jsx)("label",{style:{display:"block",marginBottom:4,fontSize:14,fontWeight:600},children:"Email"}),(0,r.jsx)("input",{type:"email",value:t,onChange:e=>i(e.target.value),required:!0,style:{width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid var(--line)",fontSize:16,boxSizing:"border-box"}})]}),(0,r.jsxs)("div",{style:{marginBottom:16},children:[(0,r.jsx)("label",{style:{display:"block",marginBottom:4,fontSize:14,fontWeight:600},children:"Display name"}),(0,r.jsx)("input",{type:"text",value:s,onChange:e=>o(e.target.value),style:{width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid var(--line)",fontSize:16,boxSizing:"border-box"}})]}),(0,r.jsxs)("div",{style:{marginBottom:24},children:[(0,r.jsx)("label",{style:{display:"block",marginBottom:4,fontSize:14,fontWeight:600},children:"Password"}),(0,r.jsx)("input",{type:"password",value:l,onChange:e=>d(e.target.value),required:!0,minLength:8,style:{width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid var(--line)",fontSize:16,boxSizing:"border-box"}})]}),(0,r.jsx)("button",{type:"submit",className:"button primary",style:{width:"100%",padding:"12px 24px",fontSize:16},children:"Create account"})]}),(0,r.jsx)("p",{style:{marginTop:16,textAlign:"center",fontSize:14},children:(0,r.jsx)("a",{href:"/login",style:{color:"var(--green)"},children:"Already have an account?"})})]})})}},7880:(e,t,i)=>{Promise.resolve().then(i.bind(i,774))}},e=>{e.O(0,[8441,1255,7358],()=>e(e.s=7880)),_N_E=e.O()}]); (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4520],{63:(e,t,s)=>{"use strict";var r=s(7260);s.o(r,"useRouter")&&s.d(t,{useRouter:function(){return r.useRouter}}),s.o(r,"useSearchParams")&&s.d(t,{useSearchParams:function(){return r.useSearchParams}})},2475:(e,t,s)=>{Promise.resolve().then(s.bind(s,9107))},9107:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>a});var r=s(5155),i=s(2115),n=s(63);function a(){let e=(0,n.useRouter)(),[t,s]=(0,i.useState)(""),[a,o]=(0,i.useState)(""),[l,d]=(0,i.useState)(""),[c,h]=(0,i.useState)(!1);async function u(s){s.preventDefault(),d("");try{let s=await fetch("/api/auth/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:t,password:a})});if(!s.ok){let e=await s.json();throw Error(e.error||"Login failed")}e.push("/dashboard")}catch(e){d(e.message)}}return(0,i.useEffect)(()=>{fetch("/api/auth/sso").then(e=>{501!==e.status&&h(!0)}).catch(()=>{})},[]),(0,r.jsx)("main",{className:"shell",style:{display:"flex",alignItems:"center",justifyContent:"center",minHeight:"100vh"},children:(0,r.jsxs)("div",{className:"panel",style:{maxWidth:420,width:"100%",padding:32},children:[(0,r.jsx)("div",{className:"brand",style:{fontSize:24,marginBottom:24,textAlign:"center"},children:"COSMIC AI-Risk SaaS"}),(0,r.jsx)("h2",{style:{marginBottom:8},children:"Sign in"}),(0,r.jsx)("p",{className:"muted",style:{marginBottom:24},children:"Enter your credentials to access the dashboard"}),l&&(0,r.jsx)("div",{style:{background:"var(--blocked-soft)",color:"var(--blocked)",padding:"8px 12px",borderRadius:8,marginBottom:16,fontSize:14},children:l}),(0,r.jsxs)("form",{onSubmit:u,children:[(0,r.jsxs)("div",{style:{marginBottom:16},children:[(0,r.jsx)("label",{style:{display:"block",marginBottom:4,fontSize:14,fontWeight:600},children:"Email"}),(0,r.jsx)("input",{type:"email",value:t,onChange:e=>s(e.target.value),required:!0,style:{width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid var(--line)",fontSize:16,boxSizing:"border-box"}})]}),(0,r.jsxs)("div",{style:{marginBottom:24},children:[(0,r.jsx)("label",{style:{display:"block",marginBottom:4,fontSize:14,fontWeight:600},children:"Password"}),(0,r.jsx)("input",{type:"password",value:a,onChange:e=>o(e.target.value),required:!0,style:{width:"100%",padding:"10px 12px",borderRadius:8,border:"1px solid var(--line)",fontSize:16,boxSizing:"border-box"}})]}),(0,r.jsx)("button",{type:"submit",className:"button primary",style:{width:"100%",padding:"12px 24px",fontSize:16},children:"Sign in"})]}),c&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,margin:"16px 0"},children:[(0,r.jsx)("hr",{style:{flex:1,border:"none",borderTop:"1px solid var(--line)"}}),(0,r.jsx)("span",{className:"muted",style:{fontSize:12},children:"OR"}),(0,r.jsx)("hr",{style:{flex:1,border:"none",borderTop:"1px solid var(--line)"}})]}),(0,r.jsx)("a",{href:"/api/auth/sso",className:"button secondary",style:{width:"100%",padding:"12px 24px",fontSize:16,textAlign:"center"},children:"Sign in with SSO"})]}),(0,r.jsx)("p",{style:{marginTop:16,textAlign:"center",fontSize:14},children:(0,r.jsx)("a",{href:"/signup",style:{color:"var(--green)"},children:"Create an account"})})]})})}}},e=>{e.O(0,[8441,1255,7358],()=>e(e.s=2475)),_N_E=e.O()}]); ' U (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[95,146,273,1506,1596,1748,1754,2045,2382,2627,2772,3099,3140,3591,3657,3745,4119,4310,4840,5033,5051,5255,5298,5368,5722,6002,6539,6696,7042,7099,7758,8119,8156,8489,8591,8623,8673,8678,8887,8974,8999,9238,9457],{4441:()=>{}},_=>{_.O(0,[8441,1255,7358],()=>_(_.s=4441)),_N_E=_.O()}]); webpack/lib/util/registerExternalSerializerwebpack-sources/SourceMapSource :root{--bg:#f7faf9;--ink:#12201c;--muted:#61716b;--line:#dce7e2;--panel:#ffffff;--accent:#0f7a5f;--accent-strong:#075f49;--warn:#a15c00;--danger:#b42318}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}a{color:inherit}.shell{min-height:100vh}.topbar{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:18px 28px;border-bottom:1px solid var(--line);background:var(--panel)}.brand{font-weight:700;color:var(--accent-strong)}.nav{display:flex;gap:14px;color:var(--muted);font-size:14px}.hero{min-height:92vh;padding:64px 28px;display:grid;align-items:center;background:linear-gradient(rgba(247,250,249,.86),rgba(247,250,249,.96)),url(https://images.unsplash.com/photo-1451187580459-43490279c0fa?auto=format&fit=crop&w=1800&q=80);background-size:cover;background-position:50%}.content,.hero-inner{width:min(1180px,100%);margin:0 auto}.hero h1{margin:0 0 18px;max-width:780px;font-size:clamp(40px,7vw,86px);line-height:.98;letter-spacing:0}.hero p{max-width:680px;color:var(--muted);font-size:20px;line-height:1.5}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.button{display:inline-flex;min-height:42px;align-items:center;justify-content:center;padding:0 16px;border:1px solid var(--accent);border-radius:6px;background:var(--accent);color:white;text-decoration:none;font-weight:700}.button.secondary{background:white;color:var(--accent-strong)}.content{padding:28px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:14px;gap:14px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:18px}.panel h2,.panel h3{margin-top:0}.metric{font-size:34px;font-weight:800;color:var(--accent-strong)}.muted{color:var(--muted)}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:10px;border-bottom:1px solid var(--line);text-align:left}.badge{display:inline-flex;border-radius:999px;padding:4px 9px;background:#e7f5ef;color:var(--accent-strong);font-size:12px;font-weight:700}@media (max-width:720px){.topbar{align-items:flex-start;flex-direction:column}}.app-shell{display:flex;min-height:100vh}.sidebar-toggle{display:none;position:fixed;top:12px;left:12px;z-index:100;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 12px;font-size:18px;cursor:pointer}.sidebar{width:220px;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;flex-shrink:0}.sidebar-brand{padding:20px 18px 12px;font-weight:800;font-size:18px;color:var(--accent-strong);letter-spacing:-.03em}.sidebar-user{padding:0 18px 16px;border-bottom:1px solid var(--line)}.sidebar-user-name{font-weight:600;font-size:13px}.sidebar-user-email{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis}.sidebar-nav{flex:1 1;padding:8px;display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;text-decoration:none;font-size:14px;font-weight:500;color:var(--muted);transition:all .15s}.sidebar-link:hover{background:#eef6f3;color:var(--ink)}.sidebar-link.active{background:#e0f0ea;color:var(--accent-strong);font-weight:700}.sidebar-icon{width:20px;text-align:center;font-size:16px}.sidebar-footer{padding:8px;border-top:1px solid var(--line)}.sidebar-logout{width:100%;padding:10px 12px;border:none;border-radius:6px;background:transparent;color:var(--muted);font-size:14px;cursor:pointer;text-align:left}.sidebar-logout:hover{background:#fef2f0;color:var(--danger)}.sidebar-overlay{display:none}.app-main{flex:1 1;min-width:0;padding:24px 28px}.shell-loading{display:flex;align-items:center;justify-content:center;min-height:100vh}.spinner{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:768px){.sidebar-toggle{display:block}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:99;transform:translateX(-100%);transition:transform .2s}.sidebar.open{transform:translateX(0)}.sidebar-overlay{display:block;position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:98}.app-main{padding:16px}}.tabs{display:flex;gap:0;border-bottom:2px solid var(--line);margin-bottom:24px}.tab{padding:10px 20px;background:transparent;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer;border:none;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s}.tab:hover{color:var(--ink)}.tab.active{color:var(--accent-strong);border-bottom-color:var(--accent-strong)}.dash-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.dash-header h1{margin:0;font-size:24px}.dash-header .muted{margin:2px 0 0;font-size:13px}.dash-actions{display:flex;gap:8px}.metric-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:20px}.metric-card h3{margin:0 0 8px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.metric-value{font-size:32px;font-weight:800;line-height:1}.metric-value.good{color:var(--green,#0f7a5f)}.metric-value.warn{color:var(--warn)}.metric-value.bad{color:var(--danger)}.metric-sub{font-size:12px;color:var(--muted);margin-top:4px}.table-wrap{overflow-x:auto}.table th{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap}.table td{font-size:13px}.table tbody tr:hover{background:#f0f7f4}.table tbody tr{cursor:pointer;transition:background .1s}.table .sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.table .sortable:hover{color:var(--ink)}.bar-wrap{height:8px;background:var(--line);border-radius:4px;overflow:hidden}.bar-fill{height:100%;border-radius:4px;transition:width .3s}.badge.open{background:#fef3e7;color:var(--warn)}.badge.in-mitigation{background:#e7f0ff;color:#0055cc}.badge.accepted{background:#e7f5ef;color:var(--accent-strong)}.badge.closed{background:#e5e9e7;color:var(--muted)}.badge.pass{background:#e7f5ef;color:var(--accent-strong)}.badge.warning{background:#fef3e7;color:var(--warn)}.badge.blocked{background:#fef0ef;color:var(--danger)}.badge.not-started{background:#f0f2f1;color:var(--muted)}.badge.in-progress{background:#e7f0ff;color:#0055cc}.badge.done{background:#e7f5ef;color:var(--accent-strong)}.badge.rejected{background:#fef0ef;color:var(--danger)}.badge.approved{background:#e7f5ef;color:var(--accent-strong)}.badge.pending{background:#fef3e7;color:var(--warn)}.input,.select{width:100%;padding:8px 12px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:var(--panel);color:var(--ink)}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgba(15,122,95,.15)}.select{cursor:pointer}.search-wrap{position:relative;margin-bottom:16px}.search-wrap .input{padding-left:32px}.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:14px}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px}.modal{background:var(--panel);border-radius:12px;padding:24px;width:100%;max-width:520px;max-height:80vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.12)}.modal h2{margin:0 0 16px;font-size:18px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.toast-container{position:fixed;bottom:20px;right:20px;z-index:300;display:flex;flex-direction:column;gap:8px}.toast{padding:12px 20px;border-radius:8px;font-size:13px;font-weight:600;box-shadow:0 4px 16px rgba(0,0,0,.1);animation:slideUp .2s ease}.toast.success{background:#e7f5ef;color:var(--accent-strong);border:1px solid #b8d9cc}.toast.error{background:#fef0ef;color:var(--danger);border:1px solid #f5c6c0}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.empty-state{text-align:center;padding:48px 24px;color:var(--muted)}.empty-state .empty-icon{font-size:40px;margin-bottom:12px}.empty-state p{margin:0}static/css/e8f5205552323513.css: {"version":3,"sources":["e8f5205552323513.css"],"names":[],"mappings":"AAAA,MACE,YAAa,CACb,aAAc,CACd,eAAgB,CAChB,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,uBAAwB,CACxB,cAAe,CACf,gBACF,CAEA,EACE,qBACF,CAEA,KACE,QAAS,CACT,oBAAqB,CACrB,gBAAiB,CACjB,sCACF,CAEA,EACE,aACF,CAEA,OACE,gBACF,CAEA,QACE,YAAa,CACb,6BAA8B,CAC9B,QAAS,CACT,kBAAmB,CACnB,iBAAkB,CAClB,mCAAoC,CACpC,uBACF,CAEA,OACE,eAAgB,CAChB,0BACF,CAEA,KACE,YAAa,CACb,QAAS,CACT,kBAAmB,CACnB,cACF,CAEA,MACE,eAAgB,CAChB,iBAAkB,CAClB,YAAa,CACb,kBAAmB,CACnB,0KAEsG,CACtG,qBAAsB,CACtB,uBACF,CAEA,qBAEE,sBAAwB,CACxB,aACF,CAEA,SACE,eAAgB,CAChB,eAAgB,CAChB,8BAAiC,CACjC,eAAiB,CACjB,gBACF,CAEA,QACE,eAAgB,CAChB,kBAAmB,CACnB,cAAe,CACf,eACF,CAEA,SACE,YAAa,CACb,cAAe,CACf,QAAS,CACT,eACF,CAEA,QACE,mBAAoB,CACpB,eAAgB,CAChB,kBAAmB,CACnB,sBAAuB,CACvB,cAAe,CACf,8BAA+B,CAC/B,iBAAkB,CAClB,wBAAyB,CACzB,WAAY,CACZ,oBAAqB,CACrB,eACF,CAEA,kBACE,gBAAiB,CACjB,0BACF,CAEA,SACE,YACF,CAEA,MACE,YAAa,CACb,wDAA2D,CAC3D,aAAc,CACd,QACF,CAEA,OACE,uBAAwB,CACxB,4BAA6B,CAC7B,iBAAkB,CAClB,YACF,CAEA,oBAEE,YACF,CAEA,QACE,cAAe,CACf,eAAgB,CAChB,0BACF,CAEA,OACE,kBACF,CAEA,OACE,UAAW,CACX,wBACF,CAEA,oBAEE,YAAa,CACb,mCAAoC,CACpC,eACF,CAEA,OACE,mBAAoB,CACpB,mBAAoB,CACpB,eAAgB,CAChB,kBAAmB,CACnB,0BAA2B,CAC3B,cAAe,CACf,eACF,CAEA,yBACE,QACE,sBAAuB,CACvB,qBACF,CACF,CAGA,WAAa,YAAa,CAAE,gBAAmB,CAC/C,gBAAkB,YAAa,CAAE,cAAe,CAAE,QAAS,CAAE,SAAU,CAAE,WAAY,CAAE,uBAAwB,CAAE,4BAA6B,CAAE,iBAAkB,CAAE,gBAAiB,CAAE,cAAe,CAAE,cAAiB,CACzN,SAAW,WAAY,CAAE,uBAAwB,CAAE,kCAAmC,CAAE,YAAa,CAAE,qBAAsB,CAAE,aAAgB,CAC/I,eAAiB,sBAAuB,CAAE,eAAgB,CAAE,cAAe,CAAE,0BAA2B,CAAE,qBAAyB,CACnI,cAAgB,mBAAoB,CAAE,mCAAsC,CAC5E,mBAAqB,eAAgB,CAAE,cAAiB,CACxD,oBAAsB,cAAe,CAAE,kBAAmB,CAAE,eAAgB,CAAE,sBAAyB,CACvG,aAAe,QAAS,CAAE,WAAY,CAAE,YAAa,CAAE,qBAAsB,CAAE,OAAU,CACzF,cAAgB,YAAa,CAAE,kBAAmB,CAAE,QAAS,CAAE,iBAAkB,CAAE,iBAAkB,CAAE,oBAAqB,CAAE,cAAe,CAAE,eAAgB,CAAE,kBAAmB,CAAE,mBAAuB,CAC7M,oBAAsB,kBAAmB,CAAE,gBAAmB,CAC9D,qBAAuB,kBAAmB,CAAE,0BAA2B,CAAE,eAAkB,CAC3F,cAAgB,UAAW,CAAE,iBAAkB,CAAE,cAAiB,CAClE,gBAAkB,WAAY,CAAE,gCAAmC,CACnE,gBAAkB,UAAW,CAAE,iBAAkB,CAAE,WAAY,CAAE,iBAAkB,CAAE,sBAAuB,CAAE,kBAAmB,CAAE,cAAe,CAAE,cAAe,CAAE,eAAkB,CACvL,sBAAwB,kBAAmB,CAAE,mBAAsB,CACnE,iBAAmB,YAAe,CAClC,UAAY,QAAS,CAAE,WAAY,CAAE,iBAAoB,CACzD,eAAiB,YAAa,CAAE,kBAAmB,CAAE,sBAAuB,CAAE,gBAAmB,CACjG,SAAW,UAAW,CAAE,WAAY,CAAiC,4BAA+B,CAA/B,8BAA+B,CAAE,iBAAkB,CAAE,kCAAsC,CAChK,gBAAkB,GAAK,uBAA2B,CAAE,CAEpD,yBACE,gBAAkB,aAAgB,CAClC,SAAW,cAAe,CAAE,KAAM,CAAE,MAAO,CAAE,QAAS,CAAE,UAAW,CAAE,2BAA4B,CAAE,wBAA4B,CAC/H,cAAgB,uBAA0B,CAC1C,iBAAmB,aAAc,CAAE,cAAe,CAAE,OAAQ,CAAE,yBAA2B,CAAE,UAAa,CACxG,UAAY,YAAe,CAC7B,CAGA,MAAQ,YAAa,CAAE,KAAM,CAAE,mCAAoC,CAAE,kBAAqB,CAC1F,KAAO,iBAAkB,CAAgB,sBAAuB,CAAE,kBAAmB,CAAE,cAAe,CAAE,eAAgB,CAAE,cAAe,CAAE,WAAoC,CAApC,mCAAoC,CAAE,kBAAmB,CAAE,mBAAuB,CAC7N,WAAa,gBAAmB,CAChC,YAAc,0BAA2B,CAAE,wCAA2C,CAGtF,aAAe,YAAa,CAAE,6BAA8B,CAAE,sBAAuB,CAAE,kBAAqB,CAC5G,gBAAkB,QAAS,CAAE,cAAiB,CAC9C,oBAAsB,cAAe,CAAE,cAAiB,CACxD,cAAgB,YAAa,CAAE,OAAU,CAGzC,aAAe,uBAAwB,CAAE,4BAA6B,CAAE,iBAAkB,CAAE,YAAe,CAC3G,gBAAkB,cAAe,CAAE,cAAe,CAAE,eAAgB,CAAE,wBAAyB,CAAE,oBAAsB,CAAE,kBAAqB,CAC9I,cAAgB,cAAe,CAAE,eAAgB,CAAE,aAAgB,CACnE,mBAAqB,0BAA8B,CACnD,mBAAqB,iBAAoB,CACzC,kBAAoB,mBAAsB,CAC1C,YAAc,cAAe,CAAE,kBAAmB,CAAE,cAAiB,CAGrE,YAAc,eAAkB,CAChC,UAAY,cAAe,CAAE,eAAgB,CAAE,wBAAyB,CAAE,oBAAsB,CAAE,kBAAmB,CAAE,kBAAqB,CAC5I,UAAY,cAAiB,CAC7B,sBAAwB,kBAAqB,CAC7C,gBAAkB,cAAe,CAAE,yBAA6B,CAChE,iBAAmB,cAAe,CAAE,wBAAyB,CAAE,qBAAsB,CAAE,gBAAmB,CAC1G,uBAAyB,gBAAmB,CAG5C,UAAY,UAAW,CAAE,sBAAuB,CAAE,iBAAkB,CAAE,eAAkB,CACxF,UAAY,WAAY,CAAE,iBAAkB,CAAE,oBAAwB,CAGtE,YAAc,kBAAmB,CAAE,iBAAoB,CACvD,qBAAuB,kBAAmB,CAAE,aAAgB,CAC5D,gBAAkB,kBAAmB,CAAE,0BAA6B,CACpE,cAAgB,kBAAmB,CAAE,kBAAqB,CAC1D,YAAc,kBAAmB,CAAE,0BAA6B,CAChE,eAAiB,kBAAmB,CAAE,iBAAoB,CAC1D,eAAiB,kBAAmB,CAAE,mBAAsB,CAC5D,mBAAqB,kBAAmB,CAAE,kBAAqB,CAC/D,mBAAqB,kBAAmB,CAAE,aAAgB,CAC1D,YAAc,kBAAmB,CAAE,0BAA6B,CAChE,gBAAkB,kBAAmB,CAAE,mBAAsB,CAC7D,gBAAkB,kBAAmB,CAAE,0BAA6B,CACpE,eAAiB,kBAAmB,CAAE,iBAAoB,CAG1D,eAAkB,UAAW,CAAE,gBAAiB,CAAE,4BAA6B,CAAE,iBAAkB,CAAE,cAAe,CAAE,uBAAwB,CAAE,gBAAmB,CACnK,2BAA8B,YAAa,CAAE,0BAA2B,CAAE,wCAA4C,CACtH,QAAU,cAAiB,CAC3B,aAAe,iBAAkB,CAAE,kBAAqB,CACxD,oBAAsB,iBAAoB,CAC1C,aAAe,iBAAkB,CAAE,SAAU,CAAE,OAAQ,CAAE,0BAA2B,CAAE,kBAAmB,CAAE,cAAiB,CAG5H,eAAiB,cAAe,CAAE,OAAQ,CAAE,yBAA2B,CAAE,YAAa,CAAE,kBAAmB,CAAE,sBAAuB,CAAE,WAAY,CAAE,YAAe,CACnK,OAAS,uBAAwB,CAAE,kBAAmB,CAAE,YAAa,CAAE,UAAW,CAAE,eAAgB,CAAE,eAAgB,CAAE,eAAgB,CAAE,qCAAyC,CACnL,UAAY,eAAgB,CAAE,cAAiB,CAC/C,eAAiB,YAAa,CAAE,OAAQ,CAAE,wBAAyB,CAAE,eAAkB,CAGvF,iBAAmB,cAAe,CAAE,WAAY,CAAE,UAAW,CAAE,WAAY,CAAE,YAAa,CAAE,qBAAsB,CAAE,OAAU,CAC9H,OAAS,iBAAkB,CAAE,iBAAkB,CAAE,cAAe,CAAE,eAAgB,CAAE,oCAAsC,CAAE,0BAA8B,CAC1J,eAAiB,kBAAmB,CAAE,0BAA2B,CAAE,wBAA2B,CAC9F,aAAe,kBAAmB,CAAE,mBAAoB,CAAE,wBAA2B,CACrF,mBAAqB,GAAO,0BAA2B,CAAE,SAAY,CAAE,GAAK,uBAAwB,CAAE,SAAY,CAAE,CAGpH,aAAe,iBAAkB,CAAE,iBAAkB,CAAE,kBAAqB,CAC5E,yBAA2B,cAAe,CAAE,kBAAqB,CACjE,eAAiB,QAAW","file":"e8f5205552323513.css","sourcesContent":[":root {\n --bg: #f7faf9;\n --ink: #12201c;\n --muted: #61716b;\n --line: #dce7e2;\n --panel: #ffffff;\n --accent: #0f7a5f;\n --accent-strong: #075f49;\n --warn: #a15c00;\n --danger: #b42318;\n}\n\n* {\n box-sizing: border-box;\n}\n\nbody {\n margin: 0;\n background: var(--bg);\n color: var(--ink);\n font-family: Arial, Helvetica, sans-serif;\n}\n\na {\n color: inherit;\n}\n\n.shell {\n min-height: 100vh;\n}\n\n.topbar {\n display: flex;\n justify-content: space-between;\n gap: 24px;\n align-items: center;\n padding: 18px 28px;\n border-bottom: 1px solid var(--line);\n background: var(--panel);\n}\n\n.brand {\n font-weight: 700;\n color: var(--accent-strong);\n}\n\n.nav {\n display: flex;\n gap: 14px;\n color: var(--muted);\n font-size: 14px;\n}\n\n.hero {\n min-height: 92vh;\n padding: 64px 28px;\n display: grid;\n align-items: center;\n background:\n linear-gradient(rgba(247, 250, 249, 0.86), rgba(247, 250, 249, 0.96)),\n url(\"https://images.unsplash.com/photo-1451187580459-43490279c0fa?auto=format&fit=crop&w=1800&q=80\");\n background-size: cover;\n background-position: center;\n}\n\n.hero-inner,\n.content {\n width: min(1180px, 100%);\n margin: 0 auto;\n}\n\n.hero h1 {\n margin: 0 0 18px;\n max-width: 780px;\n font-size: clamp(40px, 7vw, 86px);\n line-height: 0.98;\n letter-spacing: 0;\n}\n\n.hero p {\n max-width: 680px;\n color: var(--muted);\n font-size: 20px;\n line-height: 1.5;\n}\n\n.actions {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n margin-top: 28px;\n}\n\n.button {\n display: inline-flex;\n min-height: 42px;\n align-items: center;\n justify-content: center;\n padding: 0 16px;\n border: 1px solid var(--accent);\n border-radius: 6px;\n background: var(--accent);\n color: white;\n text-decoration: none;\n font-weight: 700;\n}\n\n.button.secondary {\n background: white;\n color: var(--accent-strong);\n}\n\n.content {\n padding: 28px;\n}\n\n.grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n grid-gap: 14px;\n gap: 14px;\n}\n\n.panel {\n background: var(--panel);\n border: 1px solid var(--line);\n border-radius: 8px;\n padding: 18px;\n}\n\n.panel h2,\n.panel h3 {\n margin-top: 0;\n}\n\n.metric {\n font-size: 34px;\n font-weight: 800;\n color: var(--accent-strong);\n}\n\n.muted {\n color: var(--muted);\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.table th,\n.table td {\n padding: 10px;\n border-bottom: 1px solid var(--line);\n text-align: left;\n}\n\n.badge {\n display: inline-flex;\n border-radius: 999px;\n padding: 4px 9px;\n background: #e7f5ef;\n color: var(--accent-strong);\n font-size: 12px;\n font-weight: 700;\n}\n\n@media (max-width: 720px) {\n .topbar {\n align-items: flex-start;\n flex-direction: column;\n }\n}\n\n/* ── App Shell ── */\n.app-shell { display: flex; min-height: 100vh; }\n.sidebar-toggle { display: none; position: fixed; top: 12px; left: 12px; z-index: 100; background: var(--panel); border: 1px solid var(--line); border-radius: 6px; padding: 8px 12px; font-size: 18px; cursor: pointer; }\n.sidebar { width: 220px; background: var(--panel); border-right: 1px solid var(--line); display: flex; flex-direction: column; flex-shrink: 0; }\n.sidebar-brand { padding: 20px 18px 12px; font-weight: 800; font-size: 18px; color: var(--accent-strong); letter-spacing: -0.03em; }\n.sidebar-user { padding: 0 18px 16px; border-bottom: 1px solid var(--line); }\n.sidebar-user-name { font-weight: 600; font-size: 13px; }\n.sidebar-user-email { font-size: 11px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; }\n.sidebar-nav { flex: 1 1; padding: 8px; display: flex; flex-direction: column; gap: 2px; }\n.sidebar-link { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 6px; text-decoration: none; font-size: 14px; font-weight: 500; color: var(--muted); transition: all 0.15s; }\n.sidebar-link:hover { background: #eef6f3; color: var(--ink); }\n.sidebar-link.active { background: #e0f0ea; color: var(--accent-strong); font-weight: 700; }\n.sidebar-icon { width: 20px; text-align: center; font-size: 16px; }\n.sidebar-footer { padding: 8px; border-top: 1px solid var(--line); }\n.sidebar-logout { width: 100%; padding: 10px 12px; border: none; border-radius: 6px; background: transparent; color: var(--muted); font-size: 14px; cursor: pointer; text-align: left; }\n.sidebar-logout:hover { background: #fef2f0; color: var(--danger); }\n.sidebar-overlay { display: none; }\n.app-main { flex: 1 1; min-width: 0; padding: 24px 28px; }\n.shell-loading { display: flex; align-items: center; justify-content: center; min-height: 100vh; }\n.spinner { width: 32px; height: 32px; border: 3px solid var(--line); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.6s linear infinite; }\n@keyframes spin { to { transform: rotate(360deg); } }\n\n@media (max-width: 768px) {\n .sidebar-toggle { display: block; }\n .sidebar { position: fixed; top: 0; left: 0; bottom: 0; z-index: 99; transform: translateX(-100%); transition: transform 0.2s; }\n .sidebar.open { transform: translateX(0); }\n .sidebar-overlay { display: block; position: fixed; inset: 0; background: rgba(0,0,0,0.3); z-index: 98; }\n .app-main { padding: 16px; }\n}\n\n/* ── Tabs ── */\n.tabs { display: flex; gap: 0; border-bottom: 2px solid var(--line); margin-bottom: 24px; }\n.tab { padding: 10px 20px; border: none; background: transparent; color: var(--muted); font-size: 14px; font-weight: 600; cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all 0.15s; }\n.tab:hover { color: var(--ink); }\n.tab.active { color: var(--accent-strong); border-bottom-color: var(--accent-strong); }\n\n/* ── Dashboard header ── */\n.dash-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 24px; }\n.dash-header h1 { margin: 0; font-size: 24px; }\n.dash-header .muted { margin: 2px 0 0; font-size: 13px; }\n.dash-actions { display: flex; gap: 8px; }\n\n/* ── Metric panels ── */\n.metric-card { background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 20px; }\n.metric-card h3 { margin: 0 0 8px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); }\n.metric-value { font-size: 32px; font-weight: 800; line-height: 1; }\n.metric-value.good { color: var(--green, #0f7a5f); }\n.metric-value.warn { color: var(--warn); }\n.metric-value.bad { color: var(--danger); }\n.metric-sub { font-size: 12px; color: var(--muted); margin-top: 4px; }\n\n/* ── Interactive table ── */\n.table-wrap { overflow-x: auto; }\n.table th { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); white-space: nowrap; }\n.table td { font-size: 13px; }\n.table tbody tr:hover { background: #f0f7f4; }\n.table tbody tr { cursor: pointer; transition: background 0.1s; }\n.table .sortable { cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n.table .sortable:hover { color: var(--ink); }\n\n/* ── Bar ── */\n.bar-wrap { height: 8px; background: var(--line); border-radius: 4px; overflow: hidden; }\n.bar-fill { height: 100%; border-radius: 4px; transition: width 0.3s; }\n\n/* ── Status badges ── */\n.badge.open { background: #fef3e7; color: var(--warn); }\n.badge.in-mitigation { background: #e7f0ff; color: #0055cc; }\n.badge.accepted { background: #e7f5ef; color: var(--accent-strong); }\n.badge.closed { background: #e5e9e7; color: var(--muted); }\n.badge.pass { background: #e7f5ef; color: var(--accent-strong); }\n.badge.warning { background: #fef3e7; color: var(--warn); }\n.badge.blocked { background: #fef0ef; color: var(--danger); }\n.badge.not-started { background: #f0f2f1; color: var(--muted); }\n.badge.in-progress { background: #e7f0ff; color: #0055cc; }\n.badge.done { background: #e7f5ef; color: var(--accent-strong); }\n.badge.rejected { background: #fef0ef; color: var(--danger); }\n.badge.approved { background: #e7f5ef; color: var(--accent-strong); }\n.badge.pending { background: #fef3e7; color: var(--warn); }\n\n/* ── Inputs ── */\n.input, .select { width: 100%; padding: 8px 12px; border: 1px solid var(--line); border-radius: 6px; font-size: 13px; background: var(--panel); color: var(--ink); }\n.input:focus, .select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 2px rgba(15,122,95,0.15); }\n.select { cursor: pointer; }\n.search-wrap { position: relative; margin-bottom: 16px; }\n.search-wrap .input { padding-left: 32px; }\n.search-icon { position: absolute; left: 10px; top: 50%; transform: translateY(-50%); color: var(--muted); font-size: 14px; }\n\n/* ── Modal ── */\n.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: center; justify-content: center; z-index: 200; padding: 20px; }\n.modal { background: var(--panel); border-radius: 12px; padding: 24px; width: 100%; max-width: 520px; max-height: 80vh; overflow-y: auto; box-shadow: 0 8px 32px rgba(0,0,0,0.12); }\n.modal h2 { margin: 0 0 16px; font-size: 18px; }\n.modal-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 20px; }\n\n/* ── Toast ── */\n.toast-container { position: fixed; bottom: 20px; right: 20px; z-index: 300; display: flex; flex-direction: column; gap: 8px; }\n.toast { padding: 12px 20px; border-radius: 8px; font-size: 13px; font-weight: 600; box-shadow: 0 4px 16px rgba(0,0,0,0.1); animation: slideUp 0.2s ease; }\n.toast.success { background: #e7f5ef; color: var(--accent-strong); border: 1px solid #b8d9cc; }\n.toast.error { background: #fef0ef; color: var(--danger); border: 1px solid #f5c6c0; }\n@keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }\n\n/* ── Empty state ── */\n.empty-state { text-align: center; padding: 48px 24px; color: var(--muted); }\n.empty-state .empty-icon { font-size: 40px; margin-bottom: 12px; }\n.empty-state p { margin: 0; }\n\n"]}
webpack/lib/util/registerExternalSerializerwebpack-sources/ConcatSourcewebpack/lib/util/registerExternalSerializerwebpack-sources/RawSourceO __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (/* binding */ DashboardPage)
/* harmony export */ });
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5155);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2115);
/* harmony import */ var next_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(63);
/* harmony import */ var _lib_api_client__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6282);
webpack/lib/util/registerExternalSerializerwebpack-sources/ReplaceSource /* __next_internal_client_entry_do_not_use__ default auto */ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { useEffect, useState, useCallback, useMemo } from 'react';
import { useRouter } from 'next/navigation';
import { api } from '../../lib/api-client';
const TABS = [
'Overview',
'Risks',
'Mitigations',
'Gate',
'Integrations'
];
const PAGE_SIZE = 20;
function useToast() {
const [toasts, setToasts] = useState([]);
const add = useCallback(function(message) {
let type = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 'success';
const id = Date.now() + Math.random();
setToasts((prev)=>[
...prev,
{
id,
message,
type
}
]);
setTimeout(()=>setToasts((prev)=>prev.filter((t)=>t.id !== id)), 3000);
}, []);
return {
toasts,
add
};
}
function ToastContainer(param) {
let { toasts } = param;
if (!toasts.length) return null;
return /*#__PURE__*/ _jsx("div", {
className: "toast-container",
children: toasts.map((t)=>/*#__PURE__*/ _jsx("div", {
className: "toast ".concat(t.type),
children: t.message
}, t.id))
});
}
function SearchInput(param) {
let { value, onChange, placeholder } = param;
return /*#__PURE__*/ _jsxs("div", {
className: "search-wrap",
children: [
/*#__PURE__*/ _jsx("span", {
className: "search-icon",
children: "⌕"
}),
/*#__PURE__*/ _jsx("input", {
className: "input",
value: value,
onChange: (e)=>onChange(e.target.value),
placeholder: placeholder || 'Search...'
})
]
});
}
function sortData(list, sortKey, sortDir) {
if (!sortKey) return list;
return [
...list
].sort((a, b)=>{
const va = a[sortKey], vb = b[sortKey];
if (va == null) return 1;
if (vb == null) return -1;
const cmp = typeof va === 'number' ? va - vb : String(va).localeCompare(String(vb));
return sortDir === 'asc' ? cmp : -cmp;
});
}
function Badge(param) {
let { children, className } = param;
return /*#__PURE__*/ _jsx("span", {
className: "badge ".concat(className || ''),
children: children
});
}
function OverviewTab(param) {
let { project, dashboard } = param;
const panels = useMemo(()=>{
var _dashboard_summary, _dashboard_summary1, _dashboard_summary2, _dashboard_summary3, _dashboard_summary4, _dashboard_summary5, _dashboard_summary6, _dashboard_gate, _dashboard_summary7, _dashboard_summary8, _dashboard_summary9, _dashboard_summary10, _dashboard_summary11, _dashboard_summary12, _dashboard_summary13;
if (!dashboard) return [];
var _dashboard_summary_overallScore, _dashboard_summary_gateStatus, _dashboard_summary_openRisks, _dashboard_summary_mitigationCompletion;
return [
{
label: 'Overall Score',
value: (_dashboard_summary_overallScore = (_dashboard_summary = dashboard.summary) === null || _dashboard_summary === void 0 ? void 0 : _dashboard_summary.overallScore) !== null && _dashboard_summary_overallScore !== void 0 ? _dashboard_summary_overallScore : '-',
cls: ((_dashboard_summary1 = dashboard.summary) === null || _dashboard_summary1 === void 0 ? void 0 : _dashboard_summary1.overallScore) >= 75 ? 'bad' : ((_dashboard_summary2 = dashboard.summary) === null || _dashboard_summary2 === void 0 ? void 0 : _dashboard_summary2.overallScore) >= 50 ? 'warn' : 'good',
sub: "Risk level: ".concat(((_dashboard_summary3 = dashboard.summary) === null || _dashboard_summary3 === void 0 ? void 0 : _dashboard_summary3.riskLevel) || '-')
},
{
label: 'Deployment Gate',
value: (_dashboard_summary_gateStatus = (_dashboard_summary4 = dashboard.summary) === null || _dashboard_summary4 === void 0 ? void 0 : _dashboard_summary4.gateStatus) !== null && _dashboard_summary_gateStatus !== void 0 ? _dashboard_summary_gateStatus : '-',
cls: ((_dashboard_summary5 = dashboard.summary) === null || _dashboard_summary5 === void 0 ? void 0 : _dashboard_summary5.gateStatus) === 'Ready' ? 'good' : ((_dashboard_summary6 = dashboard.summary) === null || _dashboard_summary6 === void 0 ? void 0 : _dashboard_summary6.gateStatus) === 'Warning' ? 'warn' : 'bad',
sub: ((_dashboard_gate = dashboard.gate) === null || _dashboard_gate === void 0 ? void 0 : _dashboard_gate.message) || ''
},
{
label: 'Open Risks',
value: (_dashboard_summary_openRisks = (_dashboard_summary7 = dashboard.summary) === null || _dashboard_summary7 === void 0 ? void 0 : _dashboard_summary7.openRisks) !== null && _dashboard_summary_openRisks !== void 0 ? _dashboard_summary_openRisks : 0,
cls: (((_dashboard_summary8 = dashboard.summary) === null || _dashboard_summary8 === void 0 ? void 0 : _dashboard_summary8.openRisks) || 0) > 5 ? 'bad' : (((_dashboard_summary9 = dashboard.summary) === null || _dashboard_summary9 === void 0 ? void 0 : _dashboard_summary9.openRisks) || 0) > 2 ? 'warn' : 'good',
sub: "".concat(((_dashboard_summary10 = dashboard.summary) === null || _dashboard_summary10 === void 0 ? void 0 : _dashboard_summary10.totalRisks) || 0, " total risks")
},
{
label: 'Mitigation',
value: "".concat((_dashboard_summary_mitigationCompletion = (_dashboard_summary11 = dashboard.summary) === null || _dashboard_summary11 === void 0 ? void 0 : _dashboard_summary11.mitigationCompletion) !== null && _dashboard_summary_mitigationCompletion !== void 0 ? _dashboard_summary_mitigationCompletion : 0, "%"),
cls: (((_dashboard_summary12 = dashboard.summary) === null || _dashboard_summary12 === void 0 ? void 0 : _dashboard_summary12.mitigationCompletion) || 0) < 40 ? 'bad' : (((_dashboard_summary13 = dashboard.summary) === null || _dashboard_summary13 === void 0 ? void 0 : _dashboard_summary13.mitigationCompletion) || 0) < 70 ? 'warn' : 'good',
sub: 'Average active-risk completion'
}
];
}, [
dashboard
]);
if (!dashboard) return /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "Loading dashboard data..."
})
});
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsx("div", {
className: "grid",
style: {
gridTemplateColumns: 'repeat(auto-fit, minmax(200px, 1fr))'
},
children: panels.map((p)=>/*#__PURE__*/ _jsxs("div", {
className: "metric-card",
children: [
/*#__PURE__*/ _jsx("h3", {
children: p.label
}),
/*#__PURE__*/ _jsx("div", {
className: "metric-value ".concat(p.cls),
children: p.value
}),
/*#__PURE__*/ _jsx("div", {
className: "metric-sub",
children: p.sub
})
]
}, p.label))
}),
/*#__PURE__*/ _jsxs("div", {
className: "grid",
style: {
gridTemplateColumns: '1fr 1fr',
marginTop: 18
},
children: [
/*#__PURE__*/ _jsxs("div", {
className: "panel",
children: [
/*#__PURE__*/ _jsx("h2", {
children: "Dimensions"
}),
(dashboard.dimensions || []).map((dim)=>/*#__PURE__*/ _jsxs("div", {
style: {
marginBottom: 12
},
children: [
/*#__PURE__*/ _jsxs("div", {
style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: 4
},
children: [
/*#__PURE__*/ _jsx("span", {
style: {
fontSize: 13
},
children: dim.name
}),
/*#__PURE__*/ _jsx("strong", {
style: {
fontSize: 13
},
children: dim.score
})
]
}),
/*#__PURE__*/ _jsx("div", {
className: "bar-wrap",
children: /*#__PURE__*/ _jsx("div", {
className: "bar-fill",
style: {
width: "".concat(Math.min(dim.score, 100), "%"),
background: dim.score >= 50 ? 'var(--danger)' : dim.score >= 25 ? 'var(--warn)' : 'var(--accent)'
}
})
})
]
}, dim.name))
]
}),
/*#__PURE__*/ _jsxs("div", {
className: "panel",
children: [
/*#__PURE__*/ _jsx("h2", {
children: "Lifecycle"
}),
(dashboard.lifecycle || []).map((phase)=>/*#__PURE__*/ _jsxs("div", {
style: {
marginBottom: 12
},
children: [
/*#__PURE__*/ _jsxs("div", {
style: {
display: 'flex',
justifyContent: 'space-between',
marginBottom: 4
},
children: [
/*#__PURE__*/ _jsx("span", {
style: {
fontSize: 13
},
children: phase.name
}),
/*#__PURE__*/ _jsxs("span", {
className: "muted",
style: {
fontSize: 12
},
children: [
phase.openRisks,
" open"
]
})
]
}),
/*#__PURE__*/ _jsx("div", {
className: "bar-wrap",
children: /*#__PURE__*/ _jsx("div", {
className: "bar-fill",
style: {
width: "".concat(Math.min(phase.riskScore || 0, 100), "%"),
background: (phase.riskScore || 0) >= 50 ? 'var(--danger)' : (phase.riskScore || 0) >= 25 ? 'var(--warn)' : 'var(--accent)'
}
})
})
]
}, phase.name))
]
})
]
})
]
});
}
function RisksTab(param) {
let { project, dashboard, toast } = param;
const [search, setSearch] = useState('');
const [sortKey, setSortKey] = useState('normalizedScore');
const [sortDir, setSortDir] = useState('desc');
const [page, setPage] = useState(0);
const [selectedRisk, setSelectedRisk] = useState(null);
const [updating, setUpdating] = useState(null);
const risks = useMemo(()=>{
if (!(dashboard === null || dashboard === void 0 ? void 0 : dashboard.topRisks)) return [];
return sortData(dashboard.topRisks, sortKey, sortDir);
}, [
dashboard,
sortKey,
sortDir
]);
const filtered = useMemo(()=>{
if (!search) return risks;
const q = search.toLowerCase();
return risks.filter((r)=>(r.title || '').toLowerCase().includes(q) || (r.dimension || '').toLowerCase().includes(q) || (r.ownerDisplayName || '').toLowerCase().includes(q));
}, [
risks,
search
]);
const paged = filtered.slice(0, (page + 1) * PAGE_SIZE);
const handleSort = (key)=>{
if (sortKey === key) setSortDir((d)=>d === 'asc' ? 'desc' : 'asc');
else {
setSortKey(key);
setSortDir('asc');
}
};
const updateStatus = async (riskId, status)=>{
setUpdating(riskId);
try {
await api.patch("/api/risks/".concat(riskId), {
status
});
toast.add("Risk status updated to ".concat(status));
setSelectedRisk(null);
} catch (e) {
toast.add(e.message, 'error');
} finally{
setUpdating(null);
}
};
if (!dashboard) return /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "Loading..."
})
});
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsx(SearchInput, {
value: search,
onChange: setSearch,
placeholder: "Search risks by title, dimension, owner..."
}),
/*#__PURE__*/ _jsx("div", {
className: "table-wrap",
children: /*#__PURE__*/ _jsxs("table", {
className: "table",
children: [
/*#__PURE__*/ _jsx("thead", {
children: /*#__PURE__*/ _jsx("tr", {
children: [
{
key: 'id',
label: 'ID'
},
{
key: 'title',
label: 'Risk'
},
{
key: 'dimension',
label: 'Dimension'
},
{
key: 'lifecyclePhase',
label: 'Phase'
},
{
key: 'normalizedScore',
label: 'Score'
},
{
key: 'residualScore',
label: 'Residual'
},
{
key: 'status',
label: 'Status'
},
{
key: 'ownerDisplayName',
label: 'Owner'
}
].map((col)=>/*#__PURE__*/ _jsxs("th", {
className: "sortable",
onClick: ()=>handleSort(col.key),
children: [
col.label,
" ",
sortKey === col.key ? sortDir === 'asc' ? '▲' : '▼' : ''
]
}, col.key))
})
}),
/*#__PURE__*/ _jsx("tbody", {
children: paged.map((risk)=>{
var _risk_id, _risk_dimension, _risk_status;
return /*#__PURE__*/ _jsxs("tr", {
onClick: ()=>setSelectedRisk(risk),
children: [
/*#__PURE__*/ _jsx("td", {
style: {
fontFamily: 'monospace',
fontSize: 12
},
children: (_risk_id = risk.id) === null || _risk_id === void 0 ? void 0 : _risk_id.slice(0, 8)
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("strong", {
children: risk.title
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx(Badge, {
className: (_risk_dimension = risk.dimension) === null || _risk_dimension === void 0 ? void 0 : _risk_dimension.toLowerCase(),
children: risk.dimension
})
}),
/*#__PURE__*/ _jsx("td", {
style: {
fontSize: 12
},
children: risk.lifecyclePhase
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("strong", {
children: risk.normalizedScore
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("span", {
style: {
color: risk.residualScore >= 50 ? 'var(--danger)' : risk.residualScore >= 25 ? 'var(--warn)' : 'var(--accent)'
},
children: risk.residualScore
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx(Badge, {
className: (_risk_status = risk.status) === null || _risk_status === void 0 ? void 0 : _risk_status.toLowerCase().replace(/\s+/g, '-'),
children: risk.status
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("span", {
className: "muted",
children: risk.ownerDisplayName || '-'
})
})
]
}, risk.id);
})
})
]
})
}),
filtered.length > paged.length && /*#__PURE__*/ _jsx("div", {
style: {
textAlign: 'center',
marginTop: 12
},
children: /*#__PURE__*/ _jsxs("button", {
className: "button secondary small",
onClick: ()=>setPage((p)=>p + 1),
children: [
"Show more (",
filtered.length - paged.length,
" remaining)"
]
})
}),
!filtered.length && /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "No risks match your search"
})
}),
selectedRisk && /*#__PURE__*/ _jsx("div", {
className: "modal-overlay",
onClick: ()=>setSelectedRisk(null),
children: /*#__PURE__*/ _jsxs("div", {
className: "modal",
onClick: (e)=>e.stopPropagation(),
children: [
/*#__PURE__*/ _jsx("h2", {
children: selectedRisk.title
}),
/*#__PURE__*/ _jsxs("div", {
style: {
display: 'grid',
gridTemplateColumns: '1fr 1fr',
gap: 12,
fontSize: 13
},
children: [
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Dimension"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.dimension
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Phase"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.lifecyclePhase
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Probability"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.probability
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Impact"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.impact
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Detectability"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.detectability
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Score"
}),
/*#__PURE__*/ _jsx("br", {}),
/*#__PURE__*/ _jsx("strong", {
children: selectedRisk.normalizedScore
})
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Residual"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.residualScore
]
}),
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Owner"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.ownerDisplayName || '-'
]
})
]
}),
selectedRisk.description && /*#__PURE__*/ _jsxs("div", {
style: {
marginTop: 12,
fontSize: 13
},
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
children: "Description"
}),
/*#__PURE__*/ _jsx("br", {}),
selectedRisk.description
]
}),
/*#__PURE__*/ _jsxs("div", {
style: {
marginTop: 16
},
children: [
/*#__PURE__*/ _jsx("span", {
className: "muted",
style: {
fontSize: 12
},
children: "Update status:"
}),
/*#__PURE__*/ _jsx("div", {
style: {
display: 'flex',
gap: 6,
marginTop: 6,
flexWrap: 'wrap'
},
children: [
'OPEN',
'IN_MITIGATION',
'ACCEPTED',
'CLOSED'
].map((s)=>/*#__PURE__*/ _jsx("button", {
className: "button small ".concat(s === 'OPEN' ? 'secondary' : ''),
onClick: ()=>updateStatus(selectedRisk.id, s),
disabled: updating === selectedRisk.id,
children: s.replace('_', ' ')
}, s))
})
]
}),
/*#__PURE__*/ _jsx("div", {
className: "modal-actions",
children: /*#__PURE__*/ _jsx("button", {
className: "button secondary small",
onClick: ()=>setSelectedRisk(null),
children: "Close"
})
})
]
})
})
]
});
}
function MitigationsTab(param) {
let { project, dashboard, toast } = param;
const [search, setSearch] = useState('');
const [sortKey, setSortKey] = useState('progressPercent');
const [sortDir, setSortDir] = useState('asc');
const mitigations = useMemo(()=>{
if (!(dashboard === null || dashboard === void 0 ? void 0 : dashboard.mitigations)) return [];
return sortData(dashboard.mitigations, sortKey, sortDir);
}, [
dashboard,
sortKey,
sortDir
]);
const filtered = useMemo(()=>{
if (!search) return mitigations;
const q = search.toLowerCase();
return mitigations.filter((m)=>(m.title || '').toLowerCase().includes(q) || (m.riskTitle || '').toLowerCase().includes(q));
}, [
mitigations,
search
]);
const handleSort = (key)=>{
if (sortKey === key) setSortDir((d)=>d === 'asc' ? 'desc' : 'asc');
else {
setSortKey(key);
setSortDir('asc');
}
};
if (!dashboard) return /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "Loading..."
})
});
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsx(SearchInput, {
value: search,
onChange: setSearch,
placeholder: "Search mitigations..."
}),
/*#__PURE__*/ _jsx("div", {
className: "table-wrap",
children: /*#__PURE__*/ _jsxs("table", {
className: "table",
children: [
/*#__PURE__*/ _jsx("thead", {
children: /*#__PURE__*/ _jsx("tr", {
children: [
{
key: 'title',
label: 'Title'
},
{
key: 'riskTitle',
label: 'Risk'
},
{
key: 'status',
label: 'Status'
},
{
key: 'progressPercent',
label: 'Progress'
},
{
key: 'effectivenessPercent',
label: 'Effectiveness'
},
{
key: 'ownerDisplayName',
label: 'Owner'
}
].map((col)=>/*#__PURE__*/ _jsxs("th", {
className: "sortable",
onClick: ()=>handleSort(col.key),
children: [
col.label,
" ",
sortKey === col.key ? sortDir === 'asc' ? '▲' : '▼' : ''
]
}, col.key))
})
}),
/*#__PURE__*/ _jsx("tbody", {
children: filtered.slice(0, 50).map((m)=>{
var _m_status;
return /*#__PURE__*/ _jsxs("tr", {
children: [
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("strong", {
children: m.title
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("span", {
className: "muted",
children: m.riskTitle
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx(Badge, {
className: (_m_status = m.status) === null || _m_status === void 0 ? void 0 : _m_status.toLowerCase().replace(/\s+/g, '-'),
children: m.status
})
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsxs("div", {
style: {
display: 'flex',
alignItems: 'center',
gap: 8
},
children: [
/*#__PURE__*/ _jsx("div", {
className: "bar-wrap",
style: {
flex: 1,
maxWidth: 80
},
children: /*#__PURE__*/ _jsx("div", {
className: "bar-fill",
style: {
width: "".concat(m.progressPercent || 0, "%"),
background: (m.progressPercent || 0) >= 80 ? 'var(--accent)' : (m.progressPercent || 0) >= 30 ? 'var(--warn)' : 'var(--danger)'
}
})
}),
m.progressPercent || 0,
"%"
]
})
}),
/*#__PURE__*/ _jsxs("td", {
children: [
m.effectivenessPercent || 0,
"%"
]
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("span", {
className: "muted",
children: m.ownerDisplayName || '-'
})
})
]
}, m.id);
})
})
]
})
}),
!filtered.length && /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "No mitigations found"
})
})
]
});
}
function GateTab(param) {
let { project, dashboard } = param;
var _dashboard_gate, _dashboard_summary;
if (!dashboard) return /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "Loading..."
})
});
const criteria = ((_dashboard_gate = dashboard.gate) === null || _dashboard_gate === void 0 ? void 0 : _dashboard_gate.criteria) || [];
const gateStatus = ((_dashboard_summary = dashboard.summary) === null || _dashboard_summary === void 0 ? void 0 : _dashboard_summary.gateStatus) || 'Unknown';
const gateCls = gateStatus === 'Ready' ? 'good' : gateStatus === 'Warning' ? 'warn' : 'bad';
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsxs("div", {
className: "dash-header",
children: [
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("h1", {
children: "Deployment Gate"
}),
/*#__PURE__*/ _jsx("p", {
className: "muted",
children: "Nine-criteria gate evaluation for AI deployment readiness"
})
]
}),
/*#__PURE__*/ _jsx("div", {
className: "dash-actions",
children: /*#__PURE__*/ _jsx("div", {
className: "metric-value ".concat(gateCls),
style: {
fontSize: 28
},
children: gateStatus
})
})
]
}),
/*#__PURE__*/ _jsx("div", {
className: "table-wrap",
children: /*#__PURE__*/ _jsxs("table", {
className: "table",
children: [
/*#__PURE__*/ _jsx("thead", {
children: /*#__PURE__*/ _jsxs("tr", {
children: [
/*#__PURE__*/ _jsx("th", {
children: "Criterion"
}),
/*#__PURE__*/ _jsx("th", {
children: "Required"
}),
/*#__PURE__*/ _jsx("th", {
children: "Actual"
}),
/*#__PURE__*/ _jsx("th", {
children: "Status"
})
]
})
}),
/*#__PURE__*/ _jsx("tbody", {
children: criteria.map((c)=>{
var _c_status;
return /*#__PURE__*/ _jsxs("tr", {
children: [
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx("strong", {
children: c.name
})
}),
/*#__PURE__*/ _jsx("td", {
children: c.required
}),
/*#__PURE__*/ _jsx("td", {
children: c.actual
}),
/*#__PURE__*/ _jsx("td", {
children: /*#__PURE__*/ _jsx(Badge, {
className: (_c_status = c.status) === null || _c_status === void 0 ? void 0 : _c_status.toLowerCase(),
children: c.status
})
})
]
}, c.name);
})
})
]
})
}),
!criteria.length && /*#__PURE__*/ _jsx("div", {
className: "empty-state",
children: /*#__PURE__*/ _jsx("p", {
children: "No gate criteria evaluated yet"
})
}),
/*#__PURE__*/ _jsxs("div", {
style: {
marginTop: 16,
display: 'flex',
gap: 8
},
children: [
/*#__PURE__*/ _jsx("a", {
href: "/api/projects/".concat(project === null || project === void 0 ? void 0 : project.id, "/gate/evaluate"),
className: "button secondary small",
target: "_blank",
children: "Evaluate (API)"
}),
/*#__PURE__*/ _jsx("a", {
href: "/api/projects/".concat(project === null || project === void 0 ? void 0 : project.id, "/gate/history"),
className: "button secondary small",
target: "_blank",
children: "History (API)"
})
]
})
]
});
}
function IntegrationsTab(param) {
let { project, dashboard } = param;
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsx("div", {
className: "dash-header",
children: /*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("h1", {
children: "Integrations"
}),
/*#__PURE__*/ _jsx("p", {
className: "muted",
children: "Connect Trello, Jira, Asana, or Microsoft Planner"
})
]
})
}),
/*#__PURE__*/ _jsx("div", {
className: "grid",
style: {
gridTemplateColumns: 'repeat(auto-fit, minmax(240px, 1fr))'
},
children: [
'TRELLO',
'JIRA',
'ASANA',
'MICROSOFT_PLANNER'
].map((provider)=>/*#__PURE__*/ _jsxs("div", {
className: "panel",
style: {
textAlign: 'center'
},
children: [
/*#__PURE__*/ _jsx("div", {
style: {
fontSize: 32,
marginBottom: 8
},
children: provider === 'TRELLO' ? '⊞' : provider === 'JIRA' ? '◆' : provider === 'ASANA' ? '◇' : '▣'
}),
/*#__PURE__*/ _jsx("h3", {
style: {
margin: '0 0 4px'
},
children: provider.replace('_', ' ')
}),
/*#__PURE__*/ _jsx("p", {
className: "muted",
style: {
fontSize: 12,
margin: '0 0 12px'
},
children: "Project management sync"
}),
/*#__PURE__*/ _jsxs("div", {
style: {
display: 'flex',
gap: 6,
justifyContent: 'center'
},
children: [
/*#__PURE__*/ _jsx("a", {
href: "/api/integration-providers",
className: "button secondary small",
children: "Configure"
}),
/*#__PURE__*/ _jsx("a", {
href: "/api/integrations",
className: "button secondary small",
children: "Manage"
})
]
})
]
}, provider))
}),
/*#__PURE__*/ _jsx("div", {
style: {
marginTop: 12
},
children: /*#__PURE__*/ _jsx("a", {
href: "/api/integration-providers",
className: "button secondary small",
target: "_blank",
children: "Integration providers (API)"
})
})
]
});
}
export default function DashboardPage() {
const router = useRouter();
const [tab, setTab] = useState('Overview');
const [project, setProject] = useState(null);
const [dashboard, setDashboard] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const { toasts, add } = useToast();
useEffect(()=>{
const params = new URLSearchParams(window.location.search);
const t = params.get('tab');
if (t && TABS.includes(t)) setTab(t);
}, []);
useEffect(()=>{
(async ()=>{
try {
const workspaces = await api.get('/api/workspaces');
const ws = workspaces === null || workspaces === void 0 ? void 0 : workspaces[0];
if (!ws) {
setError('No workspace found');
setLoading(false);
return;
}
const projects = await api.get("/api/workspaces/".concat(ws.id, "/projects"));
const proj = projects === null || projects === void 0 ? void 0 : projects[0];
if (!proj) {
setError('No project found');
setLoading(false);
return;
}
setProject(proj);
const dash = await api.get("/api/projects/".concat(proj.id, "/dashboard"));
setDashboard(dash);
setLoading(false);
} catch (e) {
setError(e.message);
setLoading(false);
}
})();
}, []);
if (loading) return /*#__PURE__*/ _jsx("div", {
className: "shell-loading",
children: /*#__PURE__*/ _jsx("div", {
className: "spinner"
})
});
if (error) return /*#__PURE__*/ _jsxs("div", {
className: "empty-state",
children: [
/*#__PURE__*/ _jsx("div", {
className: "empty-icon",
children: "!"
}),
/*#__PURE__*/ _jsx("p", {
children: error
})
]
});
return /*#__PURE__*/ _jsxs(_Fragment, {
children: [
/*#__PURE__*/ _jsxs("div", {
className: "dash-header",
children: [
/*#__PURE__*/ _jsxs("div", {
children: [
/*#__PURE__*/ _jsx("h1", {
children: (project === null || project === void 0 ? void 0 : project.name) || 'Dashboard'
}),
/*#__PURE__*/ _jsx("p", {
className: "muted",
children: (project === null || project === void 0 ? void 0 : project.subtitle) || ''
})
]
}),
/*#__PURE__*/ _jsxs("div", {
className: "dash-actions",
children: [
/*#__PURE__*/ _jsx("a", {
href: "/api/projects/".concat(project === null || project === void 0 ? void 0 : project.id, "/reports/executive.html"),
className: "button secondary small",
target: "_blank",
children: "Report"
}),
/*#__PURE__*/ _jsx("a", {
href: "/api/projects/".concat(project === null || project === void 0 ? void 0 : project.id, "/reports/risk-register.csv"),
className: "button secondary small",
target: "_blank",
children: "CSV"
})
]
})
]
}),
/*#__PURE__*/ _jsx("div", {
className: "tabs",
children: TABS.map((t)=>/*#__PURE__*/ _jsx("button", {
className: "tab ".concat(tab === t ? 'active' : ''),
onClick: ()=>router.push("/dashboard?tab=".concat(t)),
children: t
}, t))
}),
tab === 'Overview' && /*#__PURE__*/ _jsx(OverviewTab, {
project: project,
dashboard: dashboard
}),
tab === 'Risks' && /*#__PURE__*/ _jsx(RisksTab, {
project: project,
dashboard: dashboard,
toast: {
add
}
}),
tab === 'Mitigations' && /*#__PURE__*/ _jsx(MitigationsTab, {
project: project,
dashboard: dashboard,
toast: {
add
}
}),
tab === 'Gate' && /*#__PURE__*/ _jsx(GateTab, {
project: project,
dashboard: dashboard
}),
tab === 'Integrations' && /*#__PURE__*/ _jsx(IntegrationsTab, {
project: project,
dashboard: dashboard
}),
/*#__PURE__*/ _jsx(ToastContainer, {
toasts: toasts
})
]
});
}
@ `=_ . i l d g &
,
U Y [ _c {
g j b f T X ! ! P# S# $ $ &