@nivora/matrix 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +10 -5
- package/.next/build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/react-loadable-manifest.json +20 -1
- package/.next/routes-manifest.json +48 -12
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +15 -14
- package/.next/server/app/_not-found.segments/_full.segment.rsc +15 -14
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +6 -5
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/matrix/page.js +2 -2
- package/.next/server/app/matrix/page.js.nft.json +1 -1
- package/.next/server/app/matrix/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/releases/[id]/page.js +16 -16
- package/.next/server/app/releases/[id]/page.js.nft.json +1 -1
- package/.next/server/app/releases/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/releases/page.js +4 -4
- package/.next/server/app/releases/page.js.nft.json +1 -1
- package/.next/server/app/releases/page_client-reference-manifest.js +1 -1
- package/.next/server/app/specs/[id]/page.js +2 -2
- package/.next/server/app/specs/[id]/page.js.nft.json +1 -1
- package/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/traceability/fs/[id]/page.js +8 -0
- package/.next/server/app/traceability/fs/[id]/page.js.nft.json +1 -0
- package/.next/server/app/traceability/fs/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/traceability/fs/page.js +2 -0
- package/.next/server/app/traceability/fs/page.js.nft.json +1 -0
- package/.next/server/app/traceability/fs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/traceability/page.js +2 -0
- package/.next/server/app/{guide → traceability}/page.js.nft.json +1 -1
- package/.next/server/app/traceability/page_client-reference-manifest.js +1 -0
- package/.next/server/app/traceability/risk/[id]/page.js +2 -0
- package/.next/server/app/traceability/risk/[id]/page.js.nft.json +1 -0
- package/.next/server/app/traceability/risk/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/traceability/risk/page.js +2 -0
- package/.next/server/app/traceability/risk/page.js.nft.json +1 -0
- package/.next/server/app/traceability/risk/page_client-reference-manifest.js +1 -0
- package/.next/server/app/traceability/urs/[id]/page.js +2 -0
- package/.next/server/app/traceability/urs/[id]/page.js.nft.json +1 -0
- package/.next/server/app/traceability/urs/[id]/page_client-reference-manifest.js +1 -0
- package/.next/server/app/traceability/urs/page.js +2 -0
- package/.next/server/app/traceability/urs/page.js.nft.json +1 -0
- package/.next/server/app/traceability/urs/page_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +10 -5
- package/.next/server/chunks/160.js +23 -0
- package/.next/server/chunks/380.js +34 -0
- package/.next/server/chunks/390.js +1 -1
- package/.next/server/chunks/391.js +1 -0
- package/.next/server/chunks/445.js +12 -12
- package/.next/server/chunks/471.js +7 -7
- package/.next/server/chunks/480.js +1 -0
- package/.next/server/chunks/515.js +1 -0
- package/.next/server/chunks/870.js +1 -1
- package/.next/server/chunks/{530.js → 907.js} +27 -14
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Kmw0LKGKnAjXW7PIRrRfi/_buildManifest.js +1 -0
- package/.next/static/chunks/495.b8b5ad2ed4920ce3.js +1 -0
- package/.next/static/chunks/app/_global-error/page-435048b8215f07c0.js +1 -0
- package/.next/static/chunks/app/layout-0f51af36ad0921db.js +1 -0
- package/.next/static/chunks/app/page-b6683055d30b04b4.js +1 -0
- package/.next/static/chunks/app/releases/[id]/page-306074ff56f91959.js +1 -0
- package/.next/static/chunks/app/releases/page-315d42962b72aaa1.js +1 -0
- package/.next/static/chunks/app/specs/[id]/{page-97f9d0238eb90f4f.js → page-9767a7983dad5d28.js} +1 -1
- package/.next/static/chunks/app/traceability/fs/[id]/page-03af8ffe39c7f083.js +7 -0
- package/.next/static/chunks/app/traceability/fs/page-b6683055d30b04b4.js +1 -0
- package/.next/static/chunks/app/traceability/layout-435048b8215f07c0.js +1 -0
- package/.next/static/chunks/app/traceability/page-17af5ed69595eb21.js +1 -0
- package/.next/static/chunks/app/traceability/risk/[id]/page-1d7cf3c4b6e2369e.js +1 -0
- package/.next/static/chunks/app/traceability/risk/page-b6683055d30b04b4.js +1 -0
- package/.next/static/chunks/app/traceability/urs/[id]/page-4c2957eb12c64231.js +1 -0
- package/.next/static/chunks/app/traceability/urs/page-b6683055d30b04b4.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-435048b8215f07c0.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-435048b8215f07c0.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-435048b8215f07c0.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-435048b8215f07c0.js +1 -0
- package/.next/static/chunks/webpack-3f9c01744f340426.js +1 -0
- package/.next/static/css/230ac595a7268d78.css +1 -0
- package/README.md +5 -5
- package/bin/cli.js +60 -13
- package/package.json +1 -1
- package/.next/server/app/builder/page.js +0 -24
- package/.next/server/app/builder/page.js.nft.json +0 -1
- package/.next/server/app/builder/page_client-reference-manifest.js +0 -1
- package/.next/server/app/guide/page.js +0 -2
- package/.next/server/app/guide/page_client-reference-manifest.js +0 -1
- package/.next/server/chunks/13.js +0 -1
- package/.next/server/chunks/135.js +0 -34
- package/.next/server/chunks/476.js +0 -23
- package/.next/static/chunks/app/_global-error/page-aba28f88d5781771.js +0 -1
- package/.next/static/chunks/app/builder/page-856dca2fb73a3bb0.js +0 -10
- package/.next/static/chunks/app/guide/page-9c9dff9c5e3ddefe.js +0 -1
- package/.next/static/chunks/app/layout-550e25f5579f1a32.js +0 -1
- package/.next/static/chunks/app/page-9c9dff9c5e3ddefe.js +0 -1
- package/.next/static/chunks/app/releases/[id]/page-0bf495e3d5fdc5c6.js +0 -1
- package/.next/static/chunks/app/releases/page-d25d5b63509682f3.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-aba28f88d5781771.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-aba28f88d5781771.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-aba28f88d5781771.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-aba28f88d5781771.js +0 -1
- package/.next/static/chunks/webpack-650bc85863e2a9e7.js +0 -1
- package/.next/static/css/f29e518c867dffaa.css +0 -1
- package/.next/static/sRIqSCBLLB0aIqLFusLBB/_buildManifest.js +0 -1
- /package/.next/static/{sRIqSCBLLB0aIqLFusLBB → Kmw0LKGKnAjXW7PIRrRfi}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--sRIqSCBLLB0aIqLFusLBB--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/f29e518c867dffaa.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-650bc85863e2a9e7.js"/><script src="/_next/static/chunks/4bd1b696-67e30520d621c4dd.js" async=""></script><script src="/_next/static/chunks/794-9353bb3ab9a73e90.js" async=""></script><script src="/_next/static/chunks/main-app-6d93e914b4a54c7e.js" async=""></script><script src="/_next/static/chunks/500-b84d19d842172eba.js" async=""></script><script src="/_next/static/chunks/app/page-9c9dff9c5e3ddefe.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>GAMP 5 Traceability</title><meta name="description" content="V-Model Documentation & Test Management"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="layout"><aside class="sidebar"><div class="sidebar-header"><h1 style="font-size:1.25rem;font-weight:700;margin:0">GAMP 5</h1><span style="font-size:0.75rem;color:var(--text-secondary)">V-Model System</span></div><nav class="sidebar-nav"><ul style="list-style:none;padding:0;margin:0"><li><a class="nav-link" href="/"><span>📊</span><span>Dashboard</span></a></li><li><a class="nav-link" href="/matrix"><span>🔗</span><span>Traceability</span></a></li><li><a class="nav-link" href="/releases"><span>📦</span><span>Releases</span></a></li><li><a class="nav-link" href="/guide"><span>📖</span><span>User Guide</span></a></li><li><a class="nav-link" href="/builder"><span>🔨</span><span>Builder</span></a></li></ul></nav><div style="margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)"><div style="font-size:0.75rem;color:var(--text-secondary)">GAMP 5 Compliant</div><div style="font-size:0.75rem;color:var(--text-secondary);margin-top:0.25rem">21 CFR Part 11 Ready</div></div></aside><main class="main-content"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-650bc85863e2a9e7.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8500,[\"500\",\"static/chunks/500-b84d19d842172eba.js\",\"974\",\"static/chunks/app/page-9c9dff9c5e3ddefe.js\"],\"\"]\n3:I[7121,[],\"\"]\n4:I[4581,[],\"\"]\n5:I[484,[],\"OutletBoundary\"]\n6:\"$Sreact.suspense\"\n8:I[484,[],\"ViewportBoundary\"]\na:I[484,[],\"MetadataBoundary\"]\nc:I[7123,[],\"\"]\n:HL[\"/_next/static/css/f29e518c867dffaa.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"sRIqSCBLLB0aIqLFusLBB\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f29e518c867dffaa.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"layout\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"sidebar\",\"children\":[[\"$\",\"div\",null,{\"className\":\"sidebar-header\",\"children\":[[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"1.25rem\",\"fontWeight\":700,\"margin\":0},\"children\":\"GAMP 5\"}],[\"$\",\"span\",null,{\"style\":{\"fontSize\":\"0.75rem\",\"color\":\"var(--text-secondary)\"},\"children\":\"V-Model System\"}]]}],[\"$\",\"nav\",null,{\"className\":\"sidebar-nav\",\"children\":[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"padding\":0,\"margin\":0},\"children\":[[\"$\",\"li\",\"/\",{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"📊\"}],[\"$\",\"span\",null,{\"children\":\"Dashboard\"}]]}]}],[\"$\",\"li\",\"/matrix\",{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/matrix\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"🔗\"}],[\"$\",\"span\",null,{\"children\":\"Traceability\"}]]}]}],[\"$\",\"li\",\"/releases\",{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/releases\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"📦\"}],[\"$\",\"span\",null,{\"children\":\"Releases\"}]]}]}],[\"$\",\"li\",\"/guide\",{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/guide\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"📖\"}],[\"$\",\"span\",null,{\"children\":\"User Guide\"}]]}]}],[\"$\",\"li\",\"/builder\",{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/builder\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"🔨\"}],[\"$\",\"span\",null,{\"children\":\"Builder\"}]]}]}]]}]}],[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"2rem\",\"paddingTop\":\"2rem\",\"borderTop\":\"1px solid var(--border)\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"fontSize\":\"0.75rem\",\"color\":\"var(--text-secondary)\"},\"children\":\"GAMP 5 Compliant\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\"0.75rem\",\"color\":\"var(--text-secondary)\",\"marginTop\":\"0.25rem\"},\"children\":\"21 CFR Part 11 Ready\"}]]}]]}],[\"$\",\"main\",null,{\"className\":\"main-content\",\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@7\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$6\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"d:I[6869,[],\"IconMark\"]\n7:null\nb:[[\"$\",\"title\",\"0\",{\"children\":\"GAMP 5 Traceability\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"V-Model Documentation \u0026 Test Management\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"$Ld\",\"3\",{}]]\n"])</script></body></html>
|
|
1
|
+
<!DOCTYPE html><!--Kmw0LKGKnAjXW7PIRrRfi--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/230ac595a7268d78.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3f9c01744f340426.js"/><script src="/_next/static/chunks/4bd1b696-67e30520d621c4dd.js" async=""></script><script src="/_next/static/chunks/794-9353bb3ab9a73e90.js" async=""></script><script src="/_next/static/chunks/main-app-6d93e914b4a54c7e.js" async=""></script><script src="/_next/static/chunks/500-b84d19d842172eba.js" async=""></script><script src="/_next/static/chunks/app/page-b6683055d30b04b4.js" async=""></script><script src="/_next/static/chunks/app/layout-0f51af36ad0921db.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>GAMP 5 Traceability</title><meta name="description" content="V-Model Documentation & Test Management"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="layout"><aside class="sidebar"><div class="sidebar-header"><h1 style="font-size:1.25rem;font-weight:700;margin:0">GAMP 5</h1><span style="font-size:0.75rem;color:var(--text-secondary)">V-Model System</span></div><nav class="sidebar-nav"><ul style="list-style:none;padding:0;margin:0"><li><a class="nav-link" href="/"><span>📊</span><span>Dashboard</span></a></li><li><button class="nav-link" style="width:100%;display:flex;align-items:center;justify-content:space-between;background:transparent;border:none;cursor:pointer"><span style="display:flex;align-items:center;gap:0.75rem"><span>📑</span><span>Specs</span></span><span style="font-size:0.625rem;transition:transform 0.2s;transform:rotate(180deg)">▼</span></button><ul style="list-style:none;padding:0;margin:0"><li><a class="nav-link" style="padding-left:2.5rem;font-size:0.875rem;background:transparent" href="/traceability"><span>🔍</span><span>Search</span></a></li><li><a class="nav-link" style="padding-left:2.5rem;font-size:0.875rem;background:transparent" href="/traceability/urs"><span>📋</span><span>URS</span></a></li><li><a class="nav-link" style="padding-left:2.5rem;font-size:0.875rem;background:transparent" href="/traceability/fs"><span>⚙️</span><span>Functional Specs</span></a></li><li><a class="nav-link" style="padding-left:2.5rem;font-size:0.875rem;background:transparent" href="/traceability/risk"><span>⚠️</span><span>Risk Assessments</span></a></li></ul></li><li><a class="nav-link" href="/releases"><span>📦</span><span>Releases</span></a></li></ul></nav><div style="margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)"><div style="font-size:0.75rem;color:var(--text-secondary)">GAMP 5 Compliant</div><div style="font-size:0.75rem;color:var(--text-secondary);margin-top:0.25rem">21 CFR Part 11 Ready</div></div></aside><main class="main-content"><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-3f9c01744f340426.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[8500,[\"500\",\"static/chunks/500-b84d19d842172eba.js\",\"974\",\"static/chunks/app/page-b6683055d30b04b4.js\"],\"\"]\n3:I[1864,[\"500\",\"static/chunks/500-b84d19d842172eba.js\",\"177\",\"static/chunks/app/layout-0f51af36ad0921db.js\"],\"NavSection\"]\n4:I[7121,[],\"\"]\n5:I[4581,[],\"\"]\n6:I[484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\n9:I[484,[],\"ViewportBoundary\"]\nb:I[484,[],\"MetadataBoundary\"]\nd:I[7123,[],\"\"]\n:HL[\"/_next/static/css/230ac595a7268d78.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Kmw0LKGKnAjXW7PIRrRfi\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/230ac595a7268d78.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"layout\",\"children\":[[\"$\",\"aside\",null,{\"className\":\"sidebar\",\"children\":[[\"$\",\"div\",null,{\"className\":\"sidebar-header\",\"children\":[[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"1.25rem\",\"fontWeight\":700,\"margin\":0},\"children\":\"GAMP 5\"}],[\"$\",\"span\",null,{\"style\":{\"fontSize\":\"0.75rem\",\"color\":\"var(--text-secondary)\"},\"children\":\"V-Model System\"}]]}],[\"$\",\"nav\",null,{\"className\":\"sidebar-nav\",\"children\":[\"$\",\"ul\",null,{\"style\":{\"listStyle\":\"none\",\"padding\":0,\"margin\":0},\"children\":[[\"$\",\"li\",null,{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"📊\"}],[\"$\",\"span\",null,{\"children\":\"Dashboard\"}]]}]}],[\"$\",\"$L3\",null,{\"label\":\"Specs\",\"icon\":\"📑\",\"storageKey\":\"specs\",\"items\":[{\"href\":\"/traceability\",\"label\":\"Search\",\"icon\":\"🔍\"},{\"href\":\"/traceability/urs\",\"label\":\"URS\",\"icon\":\"📋\"},{\"href\":\"/traceability/fs\",\"label\":\"Functional Specs\",\"icon\":\"⚙️\"},{\"href\":\"/traceability/risk\",\"label\":\"Risk Assessments\",\"icon\":\"⚠️\"}]}],[\"$\",\"li\",null,{\"children\":[\"$\",\"$L2\",null,{\"href\":\"/releases\",\"className\":\"nav-link\",\"children\":[[\"$\",\"span\",null,{\"children\":\"📦\"}],[\"$\",\"span\",null,{\"children\":\"Releases\"}]]}]}]]}]}],[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"2rem\",\"paddingTop\":\"2rem\",\"borderTop\":\"1px solid var(--border)\"},\"children\":[[\"$\",\"div\",null,{\"style\":{\"fontSize\":\"0.75rem\",\"color\":\"var(--text-secondary)\"},\"children\":\"GAMP 5 Compliant\"}],[\"$\",\"div\",null,{\"style\":{\"fontSize\":\"0.75rem\",\"color\":\"var(--text-secondary)\",\"marginTop\":\"0.25rem\"},\"children\":\"21 CFR Part 11 Ready\"}]]}]]}],[\"$\",\"main\",null,{\"className\":\"main-content\",\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lc\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$d\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"e:I[6869,[],\"IconMark\"]\n8:null\nc:[[\"$\",\"title\",\"0\",{\"children\":\"GAMP 5 Traceability\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"V-Model Documentation \u0026 Test Management\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"$Le\",\"3\",{}]]\n"])</script></body></html>
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
2
|
-
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-
|
|
1
|
+
<!DOCTYPE html><!--Kmw0LKGKnAjXW7PIRrRfi--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-3f9c01744f340426.js"/><script src="/_next/static/chunks/4bd1b696-67e30520d621c4dd.js" async=""></script><script src="/_next/static/chunks/794-9353bb3ab9a73e90.js" async=""></script><script src="/_next/static/chunks/main-app-6d93e914b4a54c7e.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
|
|
2
|
+
@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-3f9c01744f340426.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[7121,[],\"\"]\n3:I[4581,[],\"\"]\n4:I[484,[],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[484,[],\"ViewportBoundary\"]\n9:I[484,[],\"MetadataBoundary\"]\nb:I[7123,[],\"\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Kmw0LKGKnAjXW7PIRrRfi\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_global-error\",{\"children\":[\"__PAGE__\",{}]}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
self.__RSC_SERVER_MANIFEST="{\"node\":{\"
|
|
1
|
+
self.__RSC_SERVER_MANIFEST="{\"node\":{\"405766fd1cce19f851bf9ba7f87ed040bf33ec446d\":{\"workers\":{\"app/releases/page\":{\"moduleId\":\"67696\",\"async\":false},\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/page\":\"action-browser\",\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/actions.ts\",\"exportedName\":\"createReleaseAction\"},\"602fc9f12d99fb0ec074132954f9fef006020f2a34\":{\"workers\":{\"app/releases/page\":{\"moduleId\":\"67696\",\"async\":false},\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/page\":\"action-browser\",\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/actions.ts\",\"exportedName\":\"updateReleaseAction\"},\"6081882838ac9fbda0671f019c05a7eb18810db8cd\":{\"workers\":{\"app/releases/page\":{\"moduleId\":\"67696\",\"async\":false},\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/page\":\"action-browser\",\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/actions.ts\",\"exportedName\":\"untagFSFromReleaseAction\"},\"60d45f7a1b9889f4d69fed105da2b6771a63057ed0\":{\"workers\":{\"app/releases/page\":{\"moduleId\":\"67696\",\"async\":false},\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/page\":\"action-browser\",\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/actions.ts\",\"exportedName\":\"tagFSToReleaseAction\"},\"40d7774d03c820e76afadbeae0befddfce81482e1f\":{\"workers\":{\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/[id]/defect-actions.ts\",\"exportedName\":\"createDefectAction\"},\"6027a8561bd5ea620048a3ec296a24636565859801\":{\"workers\":{\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/[id]/defect-actions.ts\",\"exportedName\":\"deleteDefectAction\"},\"706136c29f84dd10e8faf4271a3f7f80e947120d12\":{\"workers\":{\"app/releases/[id]/page\":{\"moduleId\":\"36617\",\"async\":false}},\"layer\":{\"app/releases/[id]/page\":\"action-browser\"},\"filename\":\"app/releases/[id]/defect-actions.ts\",\"exportedName\":\"updateDefectAction\"},\"602d2727c49c61774cd32295af3ae332546182d075\":{\"workers\":{\"app/specs/[id]/page\":{\"moduleId\":\"30823\",\"async\":false}},\"layer\":{\"app/specs/[id]/page\":\"action-browser\"},\"filename\":\"app/specs/[id]/actions.ts\",\"exportedName\":\"updateRiskAction\"},\"60bb077242848ed87702f8ca7aa0f13123dbd15227\":{\"workers\":{\"app/specs/[id]/page\":{\"moduleId\":\"30823\",\"async\":false}},\"layer\":{\"app/specs/[id]/page\":\"action-browser\"},\"filename\":\"app/specs/[id]/actions.ts\",\"exportedName\":\"updateURSAction\"},\"401d50b42a5adbdb3ae670dcac71e9d608302fcc72\":{\"workers\":{\"app/traceability/fs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/urs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/risk/[id]/page\":{\"moduleId\":\"20639\",\"async\":false}},\"layer\":{\"app/traceability/fs/[id]/page\":\"action-browser\",\"app/traceability/urs/[id]/page\":\"action-browser\",\"app/traceability/risk/[id]/page\":\"action-browser\"},\"filename\":\"app/builder/actions.ts\",\"exportedName\":\"saveRisk\"},\"40c269c9eebdecad39406173be7a46d2fc96df13df\":{\"workers\":{\"app/traceability/fs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/urs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/risk/[id]/page\":{\"moduleId\":\"20639\",\"async\":false}},\"layer\":{\"app/traceability/fs/[id]/page\":\"action-browser\",\"app/traceability/urs/[id]/page\":\"action-browser\",\"app/traceability/risk/[id]/page\":\"action-browser\"},\"filename\":\"app/builder/actions.ts\",\"exportedName\":\"saveURS\"},\"603580b94f587e820f4973b27440ef86e44c1ce545\":{\"workers\":{\"app/traceability/fs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/urs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/risk/[id]/page\":{\"moduleId\":\"20639\",\"async\":false}},\"layer\":{\"app/traceability/fs/[id]/page\":\"action-browser\",\"app/traceability/urs/[id]/page\":\"action-browser\",\"app/traceability/risk/[id]/page\":\"action-browser\"},\"filename\":\"app/builder/actions.ts\",\"exportedName\":\"updateRiskAction\"},\"605485ce8439be404e708d31fb1da32c0fe04a3114\":{\"workers\":{\"app/traceability/fs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/urs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/risk/[id]/page\":{\"moduleId\":\"20639\",\"async\":false}},\"layer\":{\"app/traceability/fs/[id]/page\":\"action-browser\",\"app/traceability/urs/[id]/page\":\"action-browser\",\"app/traceability/risk/[id]/page\":\"action-browser\"},\"filename\":\"app/builder/actions.ts\",\"exportedName\":\"updateURSAction\"},\"608946aa469e0c34eed1fc9f01068ff395a6a8f488\":{\"workers\":{\"app/traceability/fs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/urs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/risk/[id]/page\":{\"moduleId\":\"20639\",\"async\":false}},\"layer\":{\"app/traceability/fs/[id]/page\":\"action-browser\",\"app/traceability/urs/[id]/page\":\"action-browser\",\"app/traceability/risk/[id]/page\":\"action-browser\"},\"filename\":\"app/builder/actions.ts\",\"exportedName\":\"updateFSLinksAction\"},\"7052d37221258d1e338fbf367429552d0d4f061a33\":{\"workers\":{\"app/traceability/fs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/urs/[id]/page\":{\"moduleId\":\"20639\",\"async\":false},\"app/traceability/risk/[id]/page\":{\"moduleId\":\"20639\",\"async\":false}},\"layer\":{\"app/traceability/fs/[id]/page\":\"action-browser\",\"app/traceability/urs/[id]/page\":\"action-browser\",\"app/traceability/risk/[id]/page\":\"action-browser\"},\"filename\":\"app/builder/actions.ts\",\"exportedName\":\"saveFS\"}},\"edge\":{},\"encryptionKey\":\"process.env.NEXT_SERVER_ACTIONS_ENCRYPTION_KEY\"}"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"node":{"
|
|
1
|
+
{"node":{"405766fd1cce19f851bf9ba7f87ed040bf33ec446d":{"workers":{"app/releases/page":{"moduleId":"67696","async":false},"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/page":"action-browser","app/releases/[id]/page":"action-browser"},"filename":"app/releases/actions.ts","exportedName":"createReleaseAction"},"602fc9f12d99fb0ec074132954f9fef006020f2a34":{"workers":{"app/releases/page":{"moduleId":"67696","async":false},"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/page":"action-browser","app/releases/[id]/page":"action-browser"},"filename":"app/releases/actions.ts","exportedName":"updateReleaseAction"},"6081882838ac9fbda0671f019c05a7eb18810db8cd":{"workers":{"app/releases/page":{"moduleId":"67696","async":false},"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/page":"action-browser","app/releases/[id]/page":"action-browser"},"filename":"app/releases/actions.ts","exportedName":"untagFSFromReleaseAction"},"60d45f7a1b9889f4d69fed105da2b6771a63057ed0":{"workers":{"app/releases/page":{"moduleId":"67696","async":false},"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/page":"action-browser","app/releases/[id]/page":"action-browser"},"filename":"app/releases/actions.ts","exportedName":"tagFSToReleaseAction"},"40d7774d03c820e76afadbeae0befddfce81482e1f":{"workers":{"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/[id]/page":"action-browser"},"filename":"app/releases/[id]/defect-actions.ts","exportedName":"createDefectAction"},"6027a8561bd5ea620048a3ec296a24636565859801":{"workers":{"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/[id]/page":"action-browser"},"filename":"app/releases/[id]/defect-actions.ts","exportedName":"deleteDefectAction"},"706136c29f84dd10e8faf4271a3f7f80e947120d12":{"workers":{"app/releases/[id]/page":{"moduleId":"36617","async":false}},"layer":{"app/releases/[id]/page":"action-browser"},"filename":"app/releases/[id]/defect-actions.ts","exportedName":"updateDefectAction"},"602d2727c49c61774cd32295af3ae332546182d075":{"workers":{"app/specs/[id]/page":{"moduleId":"30823","async":false}},"layer":{"app/specs/[id]/page":"action-browser"},"filename":"app/specs/[id]/actions.ts","exportedName":"updateRiskAction"},"60bb077242848ed87702f8ca7aa0f13123dbd15227":{"workers":{"app/specs/[id]/page":{"moduleId":"30823","async":false}},"layer":{"app/specs/[id]/page":"action-browser"},"filename":"app/specs/[id]/actions.ts","exportedName":"updateURSAction"},"401d50b42a5adbdb3ae670dcac71e9d608302fcc72":{"workers":{"app/traceability/fs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/urs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/risk/[id]/page":{"moduleId":"20639","async":false}},"layer":{"app/traceability/fs/[id]/page":"action-browser","app/traceability/urs/[id]/page":"action-browser","app/traceability/risk/[id]/page":"action-browser"},"filename":"app/builder/actions.ts","exportedName":"saveRisk"},"40c269c9eebdecad39406173be7a46d2fc96df13df":{"workers":{"app/traceability/fs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/urs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/risk/[id]/page":{"moduleId":"20639","async":false}},"layer":{"app/traceability/fs/[id]/page":"action-browser","app/traceability/urs/[id]/page":"action-browser","app/traceability/risk/[id]/page":"action-browser"},"filename":"app/builder/actions.ts","exportedName":"saveURS"},"603580b94f587e820f4973b27440ef86e44c1ce545":{"workers":{"app/traceability/fs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/urs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/risk/[id]/page":{"moduleId":"20639","async":false}},"layer":{"app/traceability/fs/[id]/page":"action-browser","app/traceability/urs/[id]/page":"action-browser","app/traceability/risk/[id]/page":"action-browser"},"filename":"app/builder/actions.ts","exportedName":"updateRiskAction"},"605485ce8439be404e708d31fb1da32c0fe04a3114":{"workers":{"app/traceability/fs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/urs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/risk/[id]/page":{"moduleId":"20639","async":false}},"layer":{"app/traceability/fs/[id]/page":"action-browser","app/traceability/urs/[id]/page":"action-browser","app/traceability/risk/[id]/page":"action-browser"},"filename":"app/builder/actions.ts","exportedName":"updateURSAction"},"608946aa469e0c34eed1fc9f01068ff395a6a8f488":{"workers":{"app/traceability/fs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/urs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/risk/[id]/page":{"moduleId":"20639","async":false}},"layer":{"app/traceability/fs/[id]/page":"action-browser","app/traceability/urs/[id]/page":"action-browser","app/traceability/risk/[id]/page":"action-browser"},"filename":"app/builder/actions.ts","exportedName":"updateFSLinksAction"},"7052d37221258d1e338fbf367429552d0d4f061a33":{"workers":{"app/traceability/fs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/urs/[id]/page":{"moduleId":"20639","async":false},"app/traceability/risk/[id]/page":{"moduleId":"20639","async":false}},"layer":{"app/traceability/fs/[id]/page":"action-browser","app/traceability/urs/[id]/page":"action-browser","app/traceability/risk/[id]/page":"action-browser"},"filename":"app/builder/actions.ts","exportedName":"saveFS"}},"edge":{},"encryptionKey":"bHjay/9lv2tymFNfhDt2ReLllJ7fdEX+c7OWwRUOSkY="}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a,b,c,d;self.__BUILD_MANIFEST=(a=0,b=0,c=0,d=0,{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:10,errorRate:1e-4,numBits:192,numHashes:14,bitArray:[1,0,1,0,1,0,1,1,1,1,0,1,1,0,0,0,0,1,1,0,1,1,1,1,1,1,1,0,1,0,1,1,1,1,0,1,1,1,0,0,1,1,1,0,0,1,0,1,1,0,1,1,0,0,1,0,0,0,1,0,0,1,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,0,1,0,1,1,0,1,1,1,0,0,1,0,0,0,0,1,0,1,0,0,0,1,1,1,0,0,1,0,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,0,0,1,0,1,1,1,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1,1,1,1,1,0,0,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,1,1,1,1,0,1,0]},__routerFilterDynamic:{numItems:5,errorRate:1e-4,numBits:96,numHashes:14,bitArray:[0,1,1,0,1,0,1,0,1,1,0,0,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,0,0,1,1,1,0,1,0,0,1,1,0,0,1,0,0,0,0,1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,0,1,1,0,1,0,1,0,1,1,1,1,0,1,1,1,1,1,1,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,0,0]},sortedPages:["/_app"]}),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[495],{1495:(e,r,c)=>{c.d(r,{saveFS:()=>v,saveRisk:()=>d,saveURS:()=>f,updateFSLinksAction:()=>i,updateRiskAction:()=>n,updateURSAction:()=>t});var a=c(9339);let d=(0,a.createServerReference)("401d50b42a5adbdb3ae670dcac71e9d608302fcc72",a.callServer,void 0,a.findSourceMapURL,"saveRisk"),f=(0,a.createServerReference)("40c269c9eebdecad39406173be7a46d2fc96df13df",a.callServer,void 0,a.findSourceMapURL,"saveURS"),n=(0,a.createServerReference)("603580b94f587e820f4973b27440ef86e44c1ce545",a.callServer,void 0,a.findSourceMapURL,"updateRiskAction"),t=(0,a.createServerReference)("605485ce8439be404e708d31fb1da32c0fe04a3114",a.callServer,void 0,a.findSourceMapURL,"updateURSAction"),i=(0,a.createServerReference)("608946aa469e0c34eed1fc9f01068ff395a6a8f488",a.callServer,void 0,a.findSourceMapURL,"updateFSLinksAction"),v=(0,a.createServerReference)("7052d37221258d1e338fbf367429552d0d4f061a33",a.callServer,void 0,a.findSourceMapURL,"saveFS")},9339:(e,r,c)=>{Object.defineProperty(r,"__esModule",{value:!0});var a={callServer:function(){return f.callServer},createServerReference:function(){return t.createServerReference},findSourceMapURL:function(){return n.findSourceMapURL}};for(var d in a)Object.defineProperty(r,d,{enumerable:!0,get:a[d]});let f=c(7304),n=c(4060),t=c(7197)}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[167,819,851,885,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{1743:()=>{},1864:(e,t,n)=>{"use strict";n.d(t,{NavSection:()=>o});var r=n(5155),s=n(2115),a=n(8500),l=n.n(a),i=n(3321);function o({label:e,icon:t,storageKey:n,items:a}){let o=(0,i.usePathname)(),[c,h]=(0,s.useState)(!0);(0,s.useEffect)(()=>{let e=localStorage.getItem(`nav-${n}`);null!==e&&h("true"===e)},[n]);let u=a.some(e=>o.startsWith(e.href));return(0,r.jsxs)("li",{children:[(0,r.jsxs)("button",{onClick:()=>{let e=!c;h(e),localStorage.setItem(`nav-${n}`,String(e))},className:"nav-link",style:{width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",background:u?"var(--bg-hover)":"transparent",border:"none",cursor:"pointer"},children:[(0,r.jsxs)("span",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,r.jsx)("span",{children:t}),(0,r.jsx)("span",{children:e})]}),(0,r.jsx)("span",{style:{fontSize:"0.625rem",transition:"transform 0.2s",transform:c?"rotate(180deg)":"rotate(0deg)"},children:"▼"})]}),c&&(0,r.jsx)("ul",{style:{listStyle:"none",padding:0,margin:0},children:a.map(e=>{let t=o===e.href||"/traceability"!==e.href&&o.startsWith(e.href);return(0,r.jsx)("li",{children:(0,r.jsxs)(l(),{href:e.href,className:"nav-link",style:{paddingLeft:"2.5rem",fontSize:"0.875rem",background:t?"var(--bg-hover)":"transparent"},children:[(0,r.jsx)("span",{children:e.icon}),(0,r.jsx)("span",{children:e.label})]})},e.href)})})]})}},3321:(e,t,n)=>{"use strict";var r=n(4645);n.o(r,"usePathname")&&n.d(t,{usePathname:function(){return r.usePathname}}),n.o(r,"useRouter")&&n.d(t,{useRouter:function(){return r.useRouter}})},9967:(e,t,n)=>{Promise.resolve().then(n.t.bind(n,8500,23)),Promise.resolve().then(n.t.bind(n,1743,23)),Promise.resolve().then(n.bind(n,1864))}},e=>{e.O(0,[334,500,441,794,358],()=>e(e.s=9967)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[200,252,409,974],{2318:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,8500,23))}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=2318)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[41],{4926:(e,t,r)=>{Promise.resolve().then(r.bind(r,6143))},6143:(e,t,r)=>{"use strict";r.d(t,{ReleaseDetailClient:()=>h});var s=r(5155),i=r(2115),a=r(8500),l=r.n(a),n=r(9339);let o=(0,n.createServerReference)("602fc9f12d99fb0ec074132954f9fef006020f2a34",n.callServer,void 0,n.findSourceMapURL,"updateReleaseAction"),d=(0,n.createServerReference)("60d45f7a1b9889f4d69fed105da2b6771a63057ed0",n.callServer,void 0,n.findSourceMapURL,"tagFSToReleaseAction"),c=(0,n.createServerReference)("6081882838ac9fbda0671f019c05a7eb18810db8cd",n.callServer,void 0,n.findSourceMapURL,"untagFSFromReleaseAction"),m=(0,n.createServerReference)("40d7774d03c820e76afadbeae0befddfce81482e1f",n.callServer,void 0,n.findSourceMapURL,"createDefectAction");function h({release:e,taggedFS:t,availableFS:r,testRuns:a,defects:n}){let[h,p]=(0,i.useState)(!1),[x,g]=(0,i.useState)(!1),[v,u]=(0,i.useState)([]),[y,f]=(0,i.useState)(null),[j,b]=(0,i.useState)({isOpen:!1}),[S,N]=(0,i.useState)({title:"",description:"",status:"open"}),[C,k]=(0,i.useState)({titleError:!1,descriptionError:!1}),[R,w]=(0,i.useTransition)(),[B,W]=(0,i.useState)({version:e.version,name:e.name,status:e.status,notes:e.notes||""}),_={planning:{bg:"rgba(168, 85, 247, 0.1)",color:"#a855f7"},testing:{bg:"rgba(59, 130, 246, 0.1)",color:"#3b82f6"},released:{bg:"rgba(34, 197, 94, 0.1)",color:"#22c55e"}}[e.status];return(0,s.jsxs)("div",{style:{maxWidth:"1200px",margin:"0 auto",padding:"2rem"},children:[(0,s.jsx)("div",{style:{marginBottom:"1.5rem"},children:(0,s.jsx)(l(),{href:"/releases",style:{color:"var(--text-secondary)",textDecoration:"none"},children:"← Back to Releases"})}),(0,s.jsxs)("header",{style:{marginBottom:"2rem"},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem"},children:[(0,s.jsxs)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:_.color},children:[" ",e.id," "]}),(0,s.jsxs)("span",{style:{fontSize:"1.25rem",fontWeight:600},children:["v",e.version]}),(0,s.jsx)("span",{className:"badge",style:{background:_.bg,color:_.color,padding:"0.5rem 1rem"},children:e.status}),(0,s.jsx)("button",{onClick:()=>p(!h),className:"btn btn-primary",style:{marginLeft:"auto"},children:h?"Cancel":"✏️ Edit"})]}),(0,s.jsx)("h1",{style:{fontSize:"2rem",fontWeight:700},children:e.name}),(0,s.jsxs)("p",{style:{color:"var(--text-secondary)"},children:["Created ",e.created_at,e.released_at&&` • Released ${e.released_at}`]})]}),h&&(0,s.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,s.jsx)("h2",{className:"card-title",children:"Edit Release"}),(0,s.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 2fr 1fr",gap:"1rem",marginBottom:"1rem"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Version"}),(0,s.jsx)("input",{type:"text",value:B.version,onChange:e=>W({...B,version:e.target.value}),className:"input"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Name"}),(0,s.jsx)("input",{type:"text",value:B.name,onChange:e=>W({...B,name:e.target.value}),className:"input"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Status"}),(0,s.jsxs)("select",{value:B.status,onChange:e=>W({...B,status:e.target.value}),className:"input",children:[(0,s.jsx)("option",{value:"planning",children:"Planning"}),(0,s.jsx)("option",{value:"testing",children:"Testing"}),(0,s.jsx)("option",{value:"released",children:"Released"})]})]})]}),(0,s.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,s.jsx)("label",{style:{display:"block",fontWeight:500,marginBottom:"0.5rem"},children:"Notes"}),(0,s.jsx)("textarea",{value:B.notes,onChange:e=>W({...B,notes:e.target.value}),rows:3,className:"input",style:{resize:"vertical"}})]}),(0,s.jsx)("button",{onClick:()=>{w(async()=>{await o(e.id,B),p(!1)})},className:"btn btn-primary",disabled:R,children:R?"Saving...":"Save Changes"})]}),e.notes&&!h&&(0,s.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,s.jsx)("h2",{className:"card-title",children:"\uD83D\uDCDD Notes"}),(0,s.jsx)("p",{style:{color:"var(--text-secondary)",whiteSpace:"pre-wrap"},children:e.notes})]}),(0,s.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem",borderLeft:"4px solid var(--error)"},children:[(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,s.jsxs)("h2",{className:"card-title",children:["\uD83D\uDEA8 Defects & Deviations (",n.length,")"]}),(0,s.jsx)("button",{className:"btn",onClick:()=>{b({isOpen:!0,testResultId:void 0,fsId:void 0,scenarioName:void 0}),N({title:"",description:"",status:"open"})},children:"+ Log Defect"})]}),0===n.length?(0,s.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No defects logged. Any failed tests must be resolved or logged as a defect."}):(0,s.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:n.map(e=>(0,s.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px",borderLeft:"open"===e.status?"3px solid red":"3px solid green"},children:[(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,s.jsxs)("div",{style:{fontWeight:600},children:[e.id,": ",e.title]}),(0,s.jsx)("div",{className:"badge",style:{background:"open"===e.status?"rgba(239, 68, 68, 0.1)":"rgba(34, 197, 94, 0.1)",color:"open"===e.status?"var(--error)":"var(--success)"},children:e.status.toUpperCase()})]}),(0,s.jsx)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)",whiteSpace:"pre-wrap"},children:e.description}),e.test_result_id&&(0,s.jsxs)("div",{style:{marginTop:"0.5rem",fontSize:"0.75rem",color:"var(--warning)"},children:["Linked to failed test result #",e.test_result_id]})]},e.id))})]}),(0,s.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,s.jsxs)("h2",{className:"card-title",style:{margin:0},children:["⚙️ Features (",t.length,")"]}),(0,s.jsx)("button",{onClick:()=>g(!0),className:"btn",disabled:0===r.length,children:"+ Add Features"})]}),x&&(0,s.jsxs)("div",{style:{marginBottom:"1rem",padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,s.jsx)("div",{style:{marginBottom:"0.5rem",fontWeight:500},children:"Select features to add:"}),(0,s.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem",marginBottom:"1rem"},children:r.map(e=>(0,s.jsxs)("label",{style:{display:"flex",alignItems:"center",gap:"0.5rem",cursor:"pointer"},children:[(0,s.jsx)("input",{type:"checkbox",checked:v.includes(e.id),onChange:t=>{t.target.checked?u([...v,e.id]):u(v.filter(t=>t!==e.id))}}),(0,s.jsx)("code",{style:{color:"var(--warning)"},children:e.id}),(0,s.jsx)("span",{children:e.title})]},e.id))}),(0,s.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,s.jsx)("button",{onClick:()=>{g(!1),u([])},className:"btn",children:"Cancel"}),(0,s.jsx)("button",{onClick:()=>{0!==v.length&&w(async()=>{await d(e.id,v),g(!1),u([])})},className:"btn btn-primary",disabled:R||0===v.length,children:R?"Adding...":`Add ${v.length} Feature${1!==v.length?"s":""}`})]})]}),0===t.length?(0,s.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No features tagged yet. Add features to track them in this release."}):(0,s.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:t.map(t=>(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,s.jsxs)(l(),{href:`/specs/${t.id}`,style:{flex:1,textDecoration:"none"},children:[(0,s.jsx)("code",{style:{fontWeight:600,color:"var(--warning)",marginRight:"0.75rem"},children:t.id}),(0,s.jsx)("span",{style:{color:"var(--text-primary)"},children:t.title}),(0,s.jsxs)("span",{style:{marginLeft:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:[t.scenario_count," scenarios"]})]}),(0,s.jsx)("button",{onClick:()=>{var r;return r=t.id,void w(async()=>{await c(e.id,r)})},className:"btn",style:{padding:"0.25rem 0.5rem",fontSize:"0.75rem"},disabled:R,children:"\xd7"})]},t.id))})]}),(0,s.jsxs)("div",{className:"card",children:[(0,s.jsxs)("h2",{className:"card-title",children:["\uD83E\uDDEA Test Runs (",a.length,")"]}),0===a.length?(0,s.jsxs)("p",{style:{color:"var(--text-secondary)"},children:["No test runs yet. Import Cucumber results: ",(0,s.jsxs)("code",{children:["matrix release import-results results.json -r ",e.id]})]}):(0,s.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:a.map(e=>{let t=e.total>0?e.passed/e.total*100:0,r=y===e.id;return(0,s.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer"},onClick:()=>f(r?null:e.id),children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{style:{fontWeight:600,marginBottom:"0.25rem"},children:[e.failed>0?"❌":"✅"," Run #",e.id," ",r?"\uD83D\uDD3D":"▶"]}),(0,s.jsxs)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)"},children:[e.run_date," • ",e.source]})]}),(0,s.jsxs)("div",{style:{display:"flex",gap:"1rem",textAlign:"center"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:700,color:"var(--success)"},children:e.passed}),(0,s.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Passed"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontWeight:700,color:"var(--error)"},children:e.failed}),(0,s.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Failed"})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{style:{fontWeight:700,color:100===t?"var(--success)":t>=80?"var(--warning)":"var(--error)"},children:[t.toFixed(0),"%"]}),(0,s.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Pass Rate"})]})]})]}),r&&(0,s.jsx)("div",{style:{marginTop:"1rem",paddingTop:"1rem",borderTop:"1px solid var(--border)"},children:(0,s.jsx)("p",{style:{fontStyle:"italic",color:"var(--text-secondary)"},children:"Detailed results view would go here. For now, check the console logs or database for failure details."})})]},e.id)})})]}),j.isOpen&&(0,s.jsx)("div",{style:{position:"fixed",top:0,left:0,right:0,bottom:0,background:"rgba(0,0,0,0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:100},children:(0,s.jsxs)("div",{className:"card",style:{width:"500px",maxWidth:"90%"},children:[(0,s.jsx)("h2",{className:"card-title",children:"Log Defect / Deviation"}),(0,s.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,s.jsxs)("label",{style:{display:"block",marginBottom:"0.5rem"},children:["Title ",(0,s.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),(0,s.jsx)("input",{className:"input",value:S.title,onChange:e=>{N({...S,title:e.target.value}),e.target.value&&k(e=>({...e,titleError:!1}))},placeholder:"Defect summary",style:C.titleError?{borderColor:"var(--error)",boxShadow:"0 0 0 2px rgba(239, 68, 68, 0.2)"}:{}}),C.titleError&&(0,s.jsx)("div",{style:{color:"var(--error)",fontSize:"0.75rem",marginTop:"0.25rem"},children:"Title is required"})]}),(0,s.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,s.jsxs)("label",{style:{display:"block",marginBottom:"0.5rem"},children:["Description & Root Cause ",(0,s.jsx)("span",{style:{color:"var(--error)"},children:"*"})]}),(0,s.jsx)("textarea",{className:"input",rows:5,value:S.description,onChange:e=>{N({...S,description:e.target.value}),e.target.value&&k(e=>({...e,descriptionError:!1}))},placeholder:"Describe the failure, root cause, and why it is acceptable (if deviating) or mitigation plan.",style:C.descriptionError?{borderColor:"var(--error)",boxShadow:"0 0 0 2px rgba(239, 68, 68, 0.2)"}:{}}),C.descriptionError&&(0,s.jsx)("div",{style:{color:"var(--error)",fontSize:"0.75rem",marginTop:"0.25rem"},children:"Description is required"})]}),(0,s.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,s.jsx)("label",{style:{display:"block",marginBottom:"0.5rem"},children:"Status"}),(0,s.jsxs)("select",{className:"input",value:S.status,onChange:e=>N({...S,status:e.target.value}),children:[(0,s.jsx)("option",{value:"open",children:"Open (Needs Fix)"}),(0,s.jsx)("option",{value:"resolved",children:"Resolved (Fixed)"}),(0,s.jsx)("option",{value:"accepted",children:"Accepted (Permanent Deviation)"})]})]}),(0,s.jsxs)("div",{style:{display:"flex",gap:"0.5rem",justifyContent:"flex-end"},children:[(0,s.jsx)("button",{className:"btn",onClick:()=>{b({isOpen:!1}),k({titleError:!1,descriptionError:!1})},children:"Cancel"}),(0,s.jsx)("button",{className:"btn btn-primary",onClick:()=>{let t=!S.title.trim(),r=!S.description.trim();t||r?k({titleError:t,descriptionError:r}):w(async()=>{try{await m({releaseId:e.id,testResultId:j.testResultId,title:S.title,description:S.description,status:S.status}),b({isOpen:!1}),N({title:"",description:"",status:"open"})}catch(e){console.error("Failed to create defect:",e),alert("Failed to create defect. Check console for details.")}})},disabled:R,children:R?"Logging...":"Log Defect"})]})]})})]})}},9339:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s={callServer:function(){return a.callServer},createServerReference:function(){return n.createServerReference},findSourceMapURL:function(){return l.findSourceMapURL}};for(var i in s)Object.defineProperty(t,i,{enumerable:!0,get:s[i]});let a=r(7304),l=r(4060),n=r(7197)}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=4926)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[549],{1676:(e,r,t)=>{"use strict";t.d(r,{ReleasesClient:()=>d});var s=t(5155),a=t(2115),n=t(8500),i=t.n(n),o=t(9339);let l=(0,o.createServerReference)("405766fd1cce19f851bf9ba7f87ed040bf33ec446d",o.callServer,void 0,o.findSourceMapURL,"createReleaseAction");function d({releases:e}){let[r,t]=(0,a.useState)(!1),[n,i]=(0,a.useState)(""),[o,d]=(0,a.useState)(""),[m,x]=(0,a.useState)(""),[g,h]=(0,a.useTransition)();return(0,s.jsxs)("div",{style:{maxWidth:"1200px",margin:"0 auto",padding:"2rem"},children:[(0,s.jsx)("header",{style:{marginBottom:"2rem"},children:(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{style:{fontSize:"2rem",fontWeight:700,marginBottom:"0.5rem"},children:"\uD83D\uDCE6 Releases"}),(0,s.jsx)("p",{style:{color:"var(--text-secondary)"},children:"Manage releases, track test execution, and compare changes"})]}),(0,s.jsx)("button",{onClick:()=>t(!0),className:"btn btn-primary",children:"+ New Release"})]})}),r&&(0,s.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1.5rem",paddingBottom:"1rem",borderBottom:"1px solid var(--border)"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:"\uD83D\uDCE6 New Release"}),(0,s.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:"Create a new release to track features and test results"})]}),(0,s.jsxs)("div",{style:{display:"flex",gap:"0.75rem"},children:[(0,s.jsx)("button",{onClick:()=>t(!1),disabled:g,style:{padding:"0.75rem 1.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"10px",color:"var(--text-secondary)",cursor:"pointer",fontWeight:600},children:"Cancel"}),(0,s.jsx)("button",{onClick:()=>{h(async()=>{await l({version:n,name:o,notes:m||void 0}),t(!1),i(""),d(""),x("")})},disabled:g||!n||!o,style:{padding:"0.75rem 1.5rem",fontSize:"0.9375rem",fontWeight:600,borderRadius:"10px",border:"none",cursor:!g&&n&&o?"pointer":"not-allowed",background:!g&&n&&o?"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))":"var(--bg-hover)",color:!g&&n&&o?"white":"var(--text-secondary)",boxShadow:!g&&n&&o?"0 4px 12px rgba(99, 102, 241, 0.25)":"none"},children:g?"\uD83D\uDCBE Creating...":"\uD83D\uDCBE Create Release"})]})]}),(0,s.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"200px 1fr",gap:"1.5rem",marginBottom:"1.5rem"},children:[(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{style:{display:"block",fontWeight:500,fontSize:"0.875rem",marginBottom:"0.5rem",color:"var(--text-primary)"},children:["Version ",(0,s.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"})]}),(0,s.jsx)("input",{type:"text",value:n,onChange:e=>i(e.target.value),placeholder:"e.g., 1.0.0",style:{width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",background:"var(--bg-secondary)",border:"1px solid var(--border)",borderRadius:"10px",color:"var(--text-primary)",outline:"none"}})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{style:{display:"block",fontWeight:500,fontSize:"0.875rem",marginBottom:"0.5rem",color:"var(--text-primary)"},children:["Name ",(0,s.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"})]}),(0,s.jsx)("input",{type:"text",value:o,onChange:e=>d(e.target.value),placeholder:"e.g., Initial Release, MVP, Feature Update",style:{width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",background:"var(--bg-secondary)",border:"1px solid var(--border)",borderRadius:"10px",color:"var(--text-primary)",outline:"none"}})]})]}),(0,s.jsxs)("div",{children:[(0,s.jsxs)("label",{style:{display:"block",fontWeight:500,fontSize:"0.875rem",marginBottom:"0.5rem",color:"var(--text-primary)"},children:["Release Notes ",(0,s.jsx)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem",fontWeight:400},children:"— optional"})]}),(0,s.jsx)("textarea",{value:m,onChange:e=>x(e.target.value),placeholder:"What's changing in this release...",rows:4,style:{width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",background:"var(--bg-secondary)",border:"1px solid var(--border)",borderRadius:"10px",color:"var(--text-primary)",outline:"none",resize:"vertical",fontFamily:"inherit"}})]})]}),0===e.length?(0,s.jsxs)("div",{className:"card",style:{textAlign:"center",padding:"3rem"},children:[(0,s.jsx)("p",{style:{fontSize:"3rem",marginBottom:"1rem"},children:"\uD83D\uDCE6"}),(0,s.jsx)("h2",{style:{marginBottom:"0.5rem"},children:"No Releases Yet"}),(0,s.jsx)("p",{style:{color:"var(--text-secondary)",marginBottom:"1rem"},children:"Create your first release to start tracking features and test results."}),(0,s.jsx)("button",{onClick:()=>t(!0),className:"btn btn-primary",children:"Create First Release"})]}):(0,s.jsx)("div",{style:{display:"grid",gap:"1rem"},children:e.map(e=>(0,s.jsx)(c,{release:e},e.id))})]})}function c({release:e}){let r={planning:{bg:"rgba(168, 85, 247, 0.1)",color:"#a855f7"},testing:{bg:"rgba(59, 130, 246, 0.1)",color:"#3b82f6"},released:{bg:"rgba(34, 197, 94, 0.1)",color:"#22c55e"}}[e.status];return(0,s.jsx)(i(),{href:`/releases/${e.id}`,style:{textDecoration:"none"},children:(0,s.jsx)("div",{className:"card",style:{borderLeft:`4px solid ${r.color}`,transition:"transform 0.15s, box-shadow 0.15s",cursor:"pointer"},children:(0,s.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[(0,s.jsxs)("div",{style:{flex:1},children:[(0,s.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",marginBottom:"0.5rem"},children:[(0,s.jsx)("code",{style:{fontSize:"1.25rem",fontWeight:700,color:r.color},children:e.id}),(0,s.jsxs)("span",{style:{fontSize:"1rem",fontWeight:600,color:"var(--text-primary)"},children:["v",e.version]}),(0,s.jsx)("span",{className:"badge",style:{background:r.bg,color:r.color},children:e.status})]}),(0,s.jsx)("h3",{style:{fontSize:"1.125rem",fontWeight:600,marginBottom:"0.5rem",color:"var(--text-primary)"},children:e.name}),(0,s.jsxs)("p",{style:{fontSize:"0.875rem",color:"var(--text-secondary)"},children:["Created ",e.created_at,e.released_at&&` • Released ${e.released_at}`]})]}),(0,s.jsxs)("div",{style:{display:"flex",gap:"1.5rem",textAlign:"center"},children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontSize:"1.5rem",fontWeight:700,color:"var(--warning)"},children:e.fs_count}),(0,s.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Features"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{style:{fontSize:"1.5rem",fontWeight:700,color:"var(--accent)"},children:e.test_runs}),(0,s.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Test Runs"})]}),null!==e.latest_pass_rate&&(0,s.jsxs)("div",{children:[(0,s.jsxs)("div",{style:{fontSize:"1.5rem",fontWeight:700,color:100===e.latest_pass_rate?"var(--success)":e.latest_pass_rate>=80?"var(--warning)":"var(--error)"},children:[e.latest_pass_rate.toFixed(0),"%"]}),(0,s.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)"},children:"Pass Rate"})]})]})]})})})}},5411:(e,r,t)=>{Promise.resolve().then(t.bind(t,1676))},9339:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var s={callServer:function(){return n.callServer},createServerReference:function(){return o.createServerReference},findSourceMapURL:function(){return i.findSourceMapURL}};for(var a in s)Object.defineProperty(r,a,{enumerable:!0,get:s[a]});let n=t(7304),i=t(4060),o=t(7197)}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=5411)),_N_E=e.O()}]);
|
package/.next/static/chunks/app/specs/[id]/{page-97f9d0238eb90f4f.js → page-9767a7983dad5d28.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[385],{347:(e,t,a)=>{"use strict";a.d(t,{URSDetailClient:()=>d});var r=a(5155),i=a(2115),s=a(8500),l=a.n(s),n=a(9339);let c=(0,n.createServerReference)("6056a3c114c1e6e2815fdacc4831ab8242b5c18ecf",n.callServer,void 0,n.findSourceMapURL,"updateURSAction");function d({urs:e,linkedFS:t,linkedRisks:a}){let[s,n]=(0,i.useState)(!1),[d,p]=(0,i.useTransition)(),[m,h]=(0,i.useState)({title:e.title,status:e.status,priority:e.priority,owner:e.owner,category:e.category,business_need:e.business_need,intended_use:e.intended_use,acceptance_criteria:e.acceptance_criteria}),u=e.title.includes("(Undefined)"),g=({value:e,onChange:t,multiline:a,placeholder:i})=>s?a?(0,r.jsx)("textarea",{value:e,onChange:e=>t(e.target.value),rows:4,className:"input",style:{width:"100%",resize:"vertical"}}):(0,r.jsx)("input",{type:"text",value:e,onChange:e=>t(e.target.value),className:"input",style:{width:"100%"}}):(0,r.jsx)("span",{style:{whiteSpace:"pre-wrap",color:"var(--text-secondary)",fontStyle:e?"normal":"italic"},children:e||i||"Not defined"}),x=({value:e,onChange:t,options:a})=>s?(0,r.jsx)("select",{value:e,onChange:e=>t(e.target.value),className:"input",children:a.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}):(0,r.jsx)("span",{style:{textTransform:"capitalize"},children:e});return(0,r.jsxs)("div",{children:[(0,r.jsxs)("header",{className:"page-header",children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem",flexWrap:"wrap"},children:[(0,r.jsx)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:"var(--success)",background:"rgba(16, 185, 129, 0.1)",padding:"0.5rem 1rem",borderRadius:"8px"},children:e.id}),s?(0,r.jsx)(x,{value:m.status,onChange:e=>h({...m,status:e}),options:[{value:"draft",label:"Draft"},{value:"review",label:"Review"},{value:"approved",label:"Approved"}]}):(0,r.jsx)("span",{className:`badge ${"approved"===e.status?"badge-success":"badge-warning"}`,children:m.status}),s?(0,r.jsx)(x,{value:m.priority,onChange:e=>h({...m,priority:e}),options:[{value:"critical",label:"Critical"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]}):(0,r.jsx)("span",{className:"badge",style:{background:"var(--bg-hover)"},children:m.priority}),u&&!s&&(0,r.jsx)("span",{className:"badge",style:{background:"rgba(239, 68, 68, 0.2)",color:"var(--error)"},children:"Needs Definition"}),(0,r.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:"0.5rem"},children:s?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:()=>{h({title:e.title,status:e.status,priority:e.priority,owner:e.owner,category:e.category,business_need:e.business_need,intended_use:e.intended_use,acceptance_criteria:e.acceptance_criteria}),n(!1)},className:"btn",disabled:d,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{p(async()=>{await c(e.id,m),n(!1)})},className:"btn btn-primary",disabled:d,children:d?"Saving...":"\uD83D\uDCBE Save"})]}):(0,r.jsx)("button",{onClick:()=>n(!0),className:"btn btn-primary",children:"✏️ Edit"})})]}),s?(0,r.jsx)("input",{type:"text",value:m.title,onChange:e=>h({...m,title:e.target.value}),className:"input",style:{fontSize:"1.5rem",fontWeight:700,width:"100%",marginBottom:"0.5rem"}}):(0,r.jsx)("h1",{className:"page-title",children:m.title}),(0,r.jsxs)("p",{className:"page-subtitle",children:["User Requirement Specification • Owner: ",s?(0,r.jsx)("input",{type:"text",value:m.owner,onChange:e=>h({...m,owner:e.target.value}),className:"input",style:{width:"200px",display:"inline-block"}}):m.owner]})]}),u&&!s&&(0,r.jsx)("div",{className:"card",style:{marginBottom:"1.5rem",background:"rgba(239, 68, 68, 0.1)",borderLeft:"4px solid var(--error)"},children:(0,r.jsxs)("p",{style:{margin:0,color:"var(--error)"},children:["⚠️ This URS was auto-created from FS references. Click ",(0,r.jsx)("strong",{children:"Edit"})," to define its details."]})}),(0,r.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDD17 Traceability"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"2rem",flexWrap:"wrap"},children:[(0,r.jsx)(o,{label:"Functional Specs",count:t.length,color:"var(--warning)"}),(0,r.jsx)(o,{label:"Test Scenarios",count:t.reduce((e,t)=>e+t.scenarios.length,0),color:"var(--accent)"}),(0,r.jsx)(o,{label:"Risk Assessments",count:a.length,color:"#f97316"})]})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem"},children:[(0,r.jsxs)("div",{className:"card",children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDCCB Business Need"}),(0,r.jsx)("div",{style:{lineHeight:1.7},children:(0,r.jsx)(g,{value:m.business_need,onChange:e=>h({...m,business_need:e}),multiline:!0,placeholder:"Not defined"})})]}),(0,r.jsxs)("div",{className:"card",children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83C\uDFAF Intended Use"}),(0,r.jsx)("div",{style:{lineHeight:1.7},children:(0,r.jsx)(g,{value:m.intended_use,onChange:e=>h({...m,intended_use:e}),multiline:!0,placeholder:"Not defined"})})]})]}),(0,r.jsxs)("div",{className:"card",style:{marginTop:"1.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,r.jsx)("h2",{className:"card-title",style:{margin:0},children:"✅ Acceptance Criteria"}),s&&(0,r.jsx)("button",{onClick:()=>h({...m,acceptance_criteria:[...m.acceptance_criteria,""]}),className:"btn",style:{padding:"0.25rem 0.75rem"},children:"+ Add"})]}),0===m.acceptance_criteria.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No acceptance criteria defined"}):s?(0,r.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:m.acceptance_criteria.map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:e,onChange:e=>{let a=[...m.acceptance_criteria];a[t]=e.target.value,h({...m,acceptance_criteria:a})},className:"input",style:{flex:1},placeholder:`Criterion ${t+1}`}),(0,r.jsx)("button",{onClick:()=>h({...m,acceptance_criteria:m.acceptance_criteria.filter((e,a)=>a!==t)}),className:"btn",style:{padding:"0.5rem"},children:"\xd7"})]},t))}):(0,r.jsx)("ul",{style:{margin:0,paddingLeft:"1.5rem"},children:m.acceptance_criteria.map((e,t)=>(0,r.jsx)("li",{style:{marginBottom:"0.5rem",color:"var(--text-secondary)"},children:e},t))})]}),(0,r.jsxs)("div",{className:"card",style:{marginTop:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"⚙️ Linked Functional Specifications"}),0===t.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No FS linked yet"}):(0,r.jsx)("div",{style:{display:"grid",gap:"1rem"},children:t.map(e=>(0,r.jsx)(l(),{href:`/specs/${e.id}`,style:{textDecoration:"none"},children:(0,r.jsx)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px",borderLeft:"4px solid var(--warning)"},children:(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,r.jsx)("code",{style:{fontWeight:600,color:"var(--warning)"},children:e.id}),(0,r.jsx)("span",{style:{color:"var(--text-primary)"},children:e.title}),(0,r.jsxs)("span",{className:"badge badge-success",style:{marginLeft:"auto"},children:[e.scenario_count," tests"]})]})})},e.id))})]})]})}function o({label:e,count:t,color:a}){return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginBottom:"0.25rem"},children:e}),(0,r.jsx)("div",{style:{fontSize:"1.5rem",fontWeight:700,color:a},children:t})]})}},4408:(e,t,a)=>{"use strict";a.d(t,{RiskDetailClient:()=>d});var r=a(5155),i=a(2115),s=a(8500),l=a.n(s),n=a(9339);let c=(0,n.createServerReference)("60457baf8859a63f1ad17e76186354fa20b8a3e028",n.callServer,void 0,n.findSourceMapURL,"updateRiskAction");function d({risk:e,linkedFS:t}){let[a,s]=(0,i.useState)(!1),[n,d]=(0,i.useTransition)(),[m,h]=(0,i.useState)({title:e.title,status:e.status,category:e.category,impact:e.impact,probability:e.probability,risk_level:e.risk_level,residual_risk:e.residual_risk}),u=e.title.includes("(Undefined)");return(0,r.jsxs)("div",{children:[(0,r.jsxs)("header",{className:"page-header",children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem",flexWrap:"wrap"},children:[(0,r.jsx)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:"#f97316",background:"rgba(249, 115, 22, 0.1)",padding:"0.5rem 1rem",borderRadius:"8px"},children:e.id}),a?(0,r.jsx)(({value:e,onChange:t,options:i})=>a?(0,r.jsx)("select",{value:e,onChange:e=>t(e.target.value),className:"input",children:i.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}):(0,r.jsx)("span",{style:{textTransform:"capitalize"},children:e}),{value:m.status,onChange:e=>h({...m,status:e}),options:[{value:"draft",label:"Draft"},{value:"review",label:"Review"},{value:"approved",label:"Approved"}]}):(0,r.jsx)("span",{className:`badge ${"approved"===e.status?"badge-success":"badge-warning"}`,children:m.status}),(0,r.jsx)(p,{level:m.risk_level}),u&&!a&&(0,r.jsx)("span",{className:"badge",style:{background:"rgba(239, 68, 68, 0.2)",color:"var(--error)"},children:"Needs Definition"}),(0,r.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:"0.5rem"},children:a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:()=>{h({title:e.title,status:e.status,category:e.category,impact:e.impact,probability:e.probability,risk_level:e.risk_level,residual_risk:e.residual_risk}),s(!1)},className:"btn",disabled:n,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{d(async()=>{await c(e.id,m),s(!1)})},className:"btn btn-primary",disabled:n,children:n?"Saving...":"\uD83D\uDCBE Save"})]}):(0,r.jsx)("button",{onClick:()=>s(!0),className:"btn btn-primary",children:"✏️ Edit"})})]}),a?(0,r.jsx)("input",{type:"text",value:m.title,onChange:e=>h({...m,title:e.target.value}),className:"input",style:{fontSize:"1.5rem",fontWeight:700,width:"100%",marginBottom:"0.5rem"}}):(0,r.jsx)("h1",{className:"page-title",children:m.title}),(0,r.jsxs)("p",{className:"page-subtitle",children:["Risk Assessment • Category: ",a?(0,r.jsx)("input",{type:"text",value:m.category,onChange:e=>h({...m,category:e.target.value}),className:"input",style:{width:"200px",display:"inline-block"}}):m.category," • GAMP Category ",e.gamp_category]})]}),u&&!a&&(0,r.jsx)("div",{className:"card",style:{marginBottom:"1.5rem",background:"rgba(239, 68, 68, 0.1)",borderLeft:"4px solid var(--error)"},children:(0,r.jsxs)("p",{style:{margin:0,color:"var(--error)"},children:["⚠️ This Risk was auto-created from FS references. Click ",(0,r.jsx)("strong",{children:"Edit"})," to define its details."]})}),(0,r.jsx)("div",{className:"card",style:{marginBottom:"1.5rem"},children:(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem"},children:[(0,r.jsx)(o,{label:"Impact",value:m.impact,isEditing:a,onChange:e=>h({...m,impact:e}),options:["low","medium","high","critical"]}),(0,r.jsx)(o,{label:"Probability",value:m.probability,isEditing:a,onChange:e=>h({...m,probability:e}),options:["low","medium","high"]}),(0,r.jsx)(o,{label:"Risk Level",value:m.risk_level,isEditing:a,onChange:e=>h({...m,risk_level:e}),options:["low","medium","high","critical"]}),(0,r.jsx)(o,{label:"Residual Risk",value:m.residual_risk,isEditing:a,onChange:e=>h({...m,residual_risk:e}),options:["acceptable","unacceptable","pending"]})]})}),(0,r.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"⚙️ Linked Functional Specifications"}),(0,r.jsx)("div",{style:{display:"flex",gap:"0.5rem",flexWrap:"wrap"},children:t.map(e=>(0,r.jsx)(l(),{href:`/specs/${e.id}`,children:(0,r.jsxs)("span",{className:"badge",style:{background:"rgba(245, 158, 11, 0.15)",color:"var(--warning)",padding:"0.5rem 1rem"},children:[e.id," - ",e.title]})},e.id))})]}),(0,r.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDD34 Identified Risks"}),0===e.risks.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No risks defined yet"}):(0,r.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:e.risks.map((e,t)=>(0,r.jsxs)("div",{style:{padding:"0.75rem 1rem",background:"var(--bg-hover)",borderRadius:"6px",display:"flex",alignItems:"center",gap:"1rem"},children:[(0,r.jsx)("code",{style:{fontWeight:600,color:"#f97316"},children:e.id}),(0,r.jsx)("span",{style:{flex:1,color:"var(--text-secondary)"},children:e.description}),(0,r.jsx)(p,{level:e.impact,small:!0})]},t))})]}),(0,r.jsxs)("div",{className:"card",children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDEE1️ Mitigations"}),0===e.mitigations.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No mitigations defined yet"}):(0,r.jsxs)("table",{className:"table",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{children:"Risk"}),(0,r.jsx)("th",{children:"Control"}),(0,r.jsx)("th",{children:"Test"})]})}),(0,r.jsx)("tbody",{children:e.mitigations.map((e,t)=>(0,r.jsxs)("tr",{children:[(0,r.jsx)("td",{children:(0,r.jsx)("code",{children:e.risk_id})}),(0,r.jsx)("td",{children:e.control}),(0,r.jsx)("td",{style:{color:"var(--text-secondary)"},children:e.test})]},t))})]})]})]})}function o({label:e,value:t,isEditing:a,onChange:i,options:s}){let l=m(t);return(0,r.jsxs)("div",{style:{textAlign:"center",padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,r.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginBottom:"0.25rem"},children:e}),a?(0,r.jsx)("select",{value:t,onChange:e=>i(e.target.value),className:"input",style:{width:"100%",textAlign:"center"},children:s.map(e=>(0,r.jsx)("option",{value:e,style:{textTransform:"capitalize"},children:e},e))}):(0,r.jsx)("div",{style:{fontSize:"1.25rem",fontWeight:700,color:l,textTransform:"capitalize"},children:t})]})}function p({level:e,small:t}){let a=m(e);return(0,r.jsx)("span",{className:"badge",style:{background:`${a}20`,color:a,padding:t?"0.25rem 0.5rem":"0.5rem 1rem",fontSize:t?"0.75rem":"0.875rem",textTransform:"capitalize"},children:e})}function m(e){switch(e){case"critical":case"unacceptable":return"#dc2626";case"high":return"#f97316";case"medium":case"pending":return"#eab308";case"low":case"acceptable":return"#22c55e";default:return"var(--text-secondary)"}}},6164:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,8500,23)),Promise.resolve().then(a.bind(a,4408)),Promise.resolve().then(a.bind(a,8169)),Promise.resolve().then(a.bind(a,347))},8169:(e,t,a)=>{"use strict";a.d(t,{ScenarioList:()=>l});var r=a(5155),i=a(2115);function s({scenario:e,isHighlighted:t}){return(0,r.jsxs)("div",{style:{padding:"1rem",background:t?"rgba(96, 165, 250, 0.1)":"var(--bg-hover)",borderRadius:"8px",border:t?"2px solid var(--accent)":"1px solid var(--border)"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",marginBottom:"0.75rem"},children:[(0,r.jsx)("span",{style:{color:"var(--accent)"},children:"\uD83E\uDDEA"}),(0,r.jsx)("span",{style:{fontWeight:600},children:e.name}),e.tags.length>0&&(0,r.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--text-secondary)"},children:e.tags.join(" ")})]}),(0,r.jsx)("div",{style:{fontFamily:"monospace",fontSize:"0.8125rem",lineHeight:1.6},children:e.steps.map((e,t)=>{var a;return(0,r.jsx)("div",{style:{color:(a=e).startsWith("Given")?"#a78bfa":a.startsWith("When")?"#60a5fa":a.startsWith("Then")?"#34d399":"var(--text-secondary)"},children:e},t)})})]})}function l({scenarios:e,highlightScenario:t}){let a=(0,i.useRef)(null);return(0,i.useEffect)(()=>{t&&a.current&&setTimeout(()=>{a.current?.scrollIntoView({behavior:"smooth",block:"center"})},100)},[t]),(0,r.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:e.map((e,i)=>{let l=t===e.name;return(0,r.jsx)("div",{ref:l?a:void 0,children:(0,r.jsx)(s,{scenario:e,isHighlighted:l})},i)})})}a(8500)},9339:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={callServer:function(){return s.callServer},createServerReference:function(){return n.createServerReference},findSourceMapURL:function(){return l.findSourceMapURL}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let s=a(7304),l=a(4060),n=a(7197)}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=6164)),_N_E=e.O()}]);
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[385],{102:(e,t,a)=>{"use strict";a.d(t,{URSDetailClient:()=>d});var r=a(5155),i=a(2115),s=a(8500),l=a.n(s),n=a(9339);let c=(0,n.createServerReference)("60bb077242848ed87702f8ca7aa0f13123dbd15227",n.callServer,void 0,n.findSourceMapURL,"updateURSAction");function d({urs:e,linkedFS:t,linkedRisks:a}){let[s,n]=(0,i.useState)(!1),[d,p]=(0,i.useTransition)(),[m,h]=(0,i.useState)({title:e.title,status:e.status,priority:e.priority,owner:e.owner,category:e.category,business_need:e.business_need,intended_use:e.intended_use,acceptance_criteria:e.acceptance_criteria}),u=e.title.includes("(Undefined)"),g=({value:e,onChange:t,multiline:a,placeholder:i})=>s?a?(0,r.jsx)("textarea",{value:e,onChange:e=>t(e.target.value),rows:4,className:"input",style:{width:"100%",resize:"vertical"}}):(0,r.jsx)("input",{type:"text",value:e,onChange:e=>t(e.target.value),className:"input",style:{width:"100%"}}):(0,r.jsx)("span",{style:{whiteSpace:"pre-wrap",color:"var(--text-secondary)",fontStyle:e?"normal":"italic"},children:e||i||"Not defined"}),x=({value:e,onChange:t,options:a})=>s?(0,r.jsx)("select",{value:e,onChange:e=>t(e.target.value),className:"input",children:a.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}):(0,r.jsx)("span",{style:{textTransform:"capitalize"},children:e});return(0,r.jsxs)("div",{children:[(0,r.jsxs)("header",{className:"page-header",children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem",flexWrap:"wrap"},children:[(0,r.jsx)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:"var(--success)",background:"rgba(16, 185, 129, 0.1)",padding:"0.5rem 1rem",borderRadius:"8px"},children:e.id}),s?(0,r.jsx)(x,{value:m.status,onChange:e=>h({...m,status:e}),options:[{value:"draft",label:"Draft"},{value:"review",label:"Review"},{value:"approved",label:"Approved"}]}):(0,r.jsx)("span",{className:`badge ${"approved"===e.status?"badge-success":"badge-warning"}`,children:m.status}),s?(0,r.jsx)(x,{value:m.priority,onChange:e=>h({...m,priority:e}),options:[{value:"critical",label:"Critical"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]}):(0,r.jsx)("span",{className:"badge",style:{background:"var(--bg-hover)"},children:m.priority}),u&&!s&&(0,r.jsx)("span",{className:"badge",style:{background:"rgba(239, 68, 68, 0.2)",color:"var(--error)"},children:"Needs Definition"}),(0,r.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:"0.5rem"},children:s?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:()=>{h({title:e.title,status:e.status,priority:e.priority,owner:e.owner,category:e.category,business_need:e.business_need,intended_use:e.intended_use,acceptance_criteria:e.acceptance_criteria}),n(!1)},className:"btn",disabled:d,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{p(async()=>{await c(e.id,m),n(!1)})},className:"btn btn-primary",disabled:d,children:d?"Saving...":"\uD83D\uDCBE Save"})]}):(0,r.jsx)("button",{onClick:()=>n(!0),className:"btn btn-primary",children:"✏️ Edit"})})]}),s?(0,r.jsx)("input",{type:"text",value:m.title,onChange:e=>h({...m,title:e.target.value}),className:"input",style:{fontSize:"1.5rem",fontWeight:700,width:"100%",marginBottom:"0.5rem"}}):(0,r.jsx)("h1",{className:"page-title",children:m.title}),(0,r.jsxs)("p",{className:"page-subtitle",children:["User Requirement Specification • Owner: ",s?(0,r.jsx)("input",{type:"text",value:m.owner,onChange:e=>h({...m,owner:e.target.value}),className:"input",style:{width:"200px",display:"inline-block"}}):m.owner]})]}),u&&!s&&(0,r.jsx)("div",{className:"card",style:{marginBottom:"1.5rem",background:"rgba(239, 68, 68, 0.1)",borderLeft:"4px solid var(--error)"},children:(0,r.jsxs)("p",{style:{margin:0,color:"var(--error)"},children:["⚠️ This URS was auto-created from FS references. Click ",(0,r.jsx)("strong",{children:"Edit"})," to define its details."]})}),(0,r.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDD17 Traceability"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"2rem",flexWrap:"wrap"},children:[(0,r.jsx)(o,{label:"Functional Specs",count:t.length,color:"var(--warning)"}),(0,r.jsx)(o,{label:"Test Scenarios",count:t.reduce((e,t)=>e+t.scenarios.length,0),color:"var(--accent)"}),(0,r.jsx)(o,{label:"Risk Assessments",count:a.length,color:"#f97316"})]})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem"},children:[(0,r.jsxs)("div",{className:"card",children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDCCB Business Need"}),(0,r.jsx)("div",{style:{lineHeight:1.7},children:(0,r.jsx)(g,{value:m.business_need,onChange:e=>h({...m,business_need:e}),multiline:!0,placeholder:"Not defined"})})]}),(0,r.jsxs)("div",{className:"card",children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83C\uDFAF Intended Use"}),(0,r.jsx)("div",{style:{lineHeight:1.7},children:(0,r.jsx)(g,{value:m.intended_use,onChange:e=>h({...m,intended_use:e}),multiline:!0,placeholder:"Not defined"})})]})]}),(0,r.jsxs)("div",{className:"card",style:{marginTop:"1.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,r.jsx)("h2",{className:"card-title",style:{margin:0},children:"✅ Acceptance Criteria"}),s&&(0,r.jsx)("button",{onClick:()=>h({...m,acceptance_criteria:[...m.acceptance_criteria,""]}),className:"btn",style:{padding:"0.25rem 0.75rem"},children:"+ Add"})]}),0===m.acceptance_criteria.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No acceptance criteria defined"}):s?(0,r.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:m.acceptance_criteria.map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[(0,r.jsx)("input",{type:"text",value:e,onChange:e=>{let a=[...m.acceptance_criteria];a[t]=e.target.value,h({...m,acceptance_criteria:a})},className:"input",style:{flex:1},placeholder:`Criterion ${t+1}`}),(0,r.jsx)("button",{onClick:()=>h({...m,acceptance_criteria:m.acceptance_criteria.filter((e,a)=>a!==t)}),className:"btn",style:{padding:"0.5rem"},children:"\xd7"})]},t))}):(0,r.jsx)("ul",{style:{margin:0,paddingLeft:"1.5rem"},children:m.acceptance_criteria.map((e,t)=>(0,r.jsx)("li",{style:{marginBottom:"0.5rem",color:"var(--text-secondary)"},children:e},t))})]}),(0,r.jsxs)("div",{className:"card",style:{marginTop:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"⚙️ Linked Functional Specifications"}),0===t.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)"},children:"No FS linked yet"}):(0,r.jsx)("div",{style:{display:"grid",gap:"1rem"},children:t.map(e=>(0,r.jsx)(l(),{href:`/specs/${e.id}`,style:{textDecoration:"none"},children:(0,r.jsx)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px",borderLeft:"4px solid var(--warning)"},children:(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem"},children:[(0,r.jsx)("code",{style:{fontWeight:600,color:"var(--warning)"},children:e.id}),(0,r.jsx)("span",{style:{color:"var(--text-primary)"},children:e.title}),(0,r.jsxs)("span",{className:"badge badge-success",style:{marginLeft:"auto"},children:[e.scenario_count," tests"]})]})})},e.id))})]})]})}function o({label:e,count:t,color:a}){return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginBottom:"0.25rem"},children:e}),(0,r.jsx)("div",{style:{fontSize:"1.5rem",fontWeight:700,color:a},children:t})]})}},6164:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,8500,23)),Promise.resolve().then(a.bind(a,6692)),Promise.resolve().then(a.bind(a,8169)),Promise.resolve().then(a.bind(a,102))},6692:(e,t,a)=>{"use strict";a.d(t,{RiskDetailClient:()=>d});var r=a(5155),i=a(2115),s=a(8500),l=a.n(s),n=a(9339);let c=(0,n.createServerReference)("602d2727c49c61774cd32295af3ae332546182d075",n.callServer,void 0,n.findSourceMapURL,"updateRiskAction");function d({risk:e,linkedFS:t}){let[a,s]=(0,i.useState)(!1),[n,d]=(0,i.useTransition)(),[m,h]=(0,i.useState)({title:e.title,status:e.status,category:e.category,impact:e.impact,probability:e.probability,risk_level:e.risk_level,residual_risk:e.residual_risk}),u=e.title.includes("(Undefined)");return(0,r.jsxs)("div",{children:[(0,r.jsxs)("header",{className:"page-header",children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem",flexWrap:"wrap"},children:[(0,r.jsx)("code",{style:{fontSize:"1.5rem",fontWeight:700,color:"#f97316",background:"rgba(249, 115, 22, 0.1)",padding:"0.5rem 1rem",borderRadius:"8px"},children:e.id}),a?(0,r.jsx)(({value:e,onChange:t,options:i})=>a?(0,r.jsx)("select",{value:e,onChange:e=>t(e.target.value),className:"input",children:i.map(e=>(0,r.jsx)("option",{value:e.value,children:e.label},e.value))}):(0,r.jsx)("span",{style:{textTransform:"capitalize"},children:e}),{value:m.status,onChange:e=>h({...m,status:e}),options:[{value:"draft",label:"Draft"},{value:"review",label:"Review"},{value:"approved",label:"Approved"}]}):(0,r.jsx)("span",{className:`badge ${"approved"===e.status?"badge-success":"badge-warning"}`,children:m.status}),(0,r.jsx)(p,{level:m.risk_level}),u&&!a&&(0,r.jsx)("span",{className:"badge",style:{background:"rgba(239, 68, 68, 0.2)",color:"var(--error)"},children:"Needs Definition"}),(0,r.jsx)("div",{style:{marginLeft:"auto",display:"flex",gap:"0.5rem"},children:a?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("button",{onClick:()=>{h({title:e.title,status:e.status,category:e.category,impact:e.impact,probability:e.probability,risk_level:e.risk_level,residual_risk:e.residual_risk}),s(!1)},className:"btn",disabled:n,children:"Cancel"}),(0,r.jsx)("button",{onClick:()=>{d(async()=>{await c(e.id,m),s(!1)})},className:"btn btn-primary",disabled:n,children:n?"Saving...":"\uD83D\uDCBE Save"})]}):(0,r.jsx)("button",{onClick:()=>s(!0),className:"btn btn-primary",children:"✏️ Edit"})})]}),a?(0,r.jsx)("input",{type:"text",value:m.title,onChange:e=>h({...m,title:e.target.value}),className:"input",style:{fontSize:"1.5rem",fontWeight:700,width:"100%",marginBottom:"0.5rem"}}):(0,r.jsx)("h1",{className:"page-title",children:m.title}),(0,r.jsxs)("p",{className:"page-subtitle",children:["Risk Assessment • Category: ",a?(0,r.jsx)("input",{type:"text",value:m.category,onChange:e=>h({...m,category:e.target.value}),className:"input",style:{width:"200px",display:"inline-block"}}):m.category," • GAMP Category ",e.gamp_category]})]}),u&&!a&&(0,r.jsx)("div",{className:"card",style:{marginBottom:"1.5rem",background:"rgba(239, 68, 68, 0.1)",borderLeft:"4px solid var(--error)"},children:(0,r.jsxs)("p",{style:{margin:0,color:"var(--error)"},children:["⚠️ This Risk was auto-created from FS references. Click ",(0,r.jsx)("strong",{children:"Edit"})," to define its details."]})}),(0,r.jsx)("div",{className:"card",style:{marginBottom:"1.5rem"},children:(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem"},children:[(0,r.jsx)(o,{label:"Impact",value:m.impact,isEditing:a,onChange:e=>h({...m,impact:e}),options:["low","medium","high","critical"]}),(0,r.jsx)(o,{label:"Probability",value:m.probability,isEditing:a,onChange:e=>h({...m,probability:e}),options:["low","medium","high"]}),(0,r.jsx)(o,{label:"Risk Level",value:m.risk_level,isEditing:a,onChange:e=>h({...m,risk_level:e}),options:["low","medium","high","critical"]}),(0,r.jsx)(o,{label:"Residual Risk",value:m.residual_risk,isEditing:a,onChange:e=>h({...m,residual_risk:e}),options:["acceptable","unacceptable","pending"]})]})}),(0,r.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"⚙️ Linked Functional Specifications"}),(0,r.jsx)("div",{style:{display:"flex",gap:"0.5rem",flexWrap:"wrap"},children:t.map(e=>(0,r.jsx)(l(),{href:`/specs/${e.id}`,children:(0,r.jsxs)("span",{className:"badge",style:{background:"rgba(245, 158, 11, 0.15)",color:"var(--warning)",padding:"0.5rem 1rem"},children:[e.id," - ",e.title]})},e.id))})]}),(0,r.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDD34 Identified Risks"}),0===e.risks.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No risks defined yet"}):(0,r.jsx)("div",{style:{display:"grid",gap:"0.5rem"},children:e.risks.map((e,t)=>(0,r.jsxs)("div",{style:{padding:"0.75rem 1rem",background:"var(--bg-hover)",borderRadius:"6px",display:"flex",alignItems:"center",gap:"1rem"},children:[(0,r.jsx)("code",{style:{fontWeight:600,color:"#f97316"},children:e.id}),(0,r.jsx)("span",{style:{flex:1,color:"var(--text-secondary)"},children:e.description}),(0,r.jsx)(p,{level:e.impact,small:!0})]},t))})]}),(0,r.jsxs)("div",{className:"card",children:[(0,r.jsx)("h2",{className:"card-title",children:"\uD83D\uDEE1️ Mitigations"}),0===e.mitigations.length?(0,r.jsx)("p",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No mitigations defined yet"}):(0,r.jsxs)("table",{className:"table",children:[(0,r.jsx)("thead",{children:(0,r.jsxs)("tr",{children:[(0,r.jsx)("th",{children:"Risk"}),(0,r.jsx)("th",{children:"Control"}),(0,r.jsx)("th",{children:"Test"})]})}),(0,r.jsx)("tbody",{children:e.mitigations.map((e,t)=>(0,r.jsxs)("tr",{children:[(0,r.jsx)("td",{children:(0,r.jsx)("code",{children:e.risk_id})}),(0,r.jsx)("td",{children:e.control}),(0,r.jsx)("td",{style:{color:"var(--text-secondary)"},children:e.test})]},t))})]})]})]})}function o({label:e,value:t,isEditing:a,onChange:i,options:s}){let l=m(t);return(0,r.jsxs)("div",{style:{textAlign:"center",padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,r.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginBottom:"0.25rem"},children:e}),a?(0,r.jsx)("select",{value:t,onChange:e=>i(e.target.value),className:"input",style:{width:"100%",textAlign:"center"},children:s.map(e=>(0,r.jsx)("option",{value:e,style:{textTransform:"capitalize"},children:e},e))}):(0,r.jsx)("div",{style:{fontSize:"1.25rem",fontWeight:700,color:l,textTransform:"capitalize"},children:t})]})}function p({level:e,small:t}){let a=m(e);return(0,r.jsx)("span",{className:"badge",style:{background:`${a}20`,color:a,padding:t?"0.25rem 0.5rem":"0.5rem 1rem",fontSize:t?"0.75rem":"0.875rem",textTransform:"capitalize"},children:e})}function m(e){switch(e){case"critical":case"unacceptable":return"#dc2626";case"high":return"#f97316";case"medium":case"pending":return"#eab308";case"low":case"acceptable":return"#22c55e";default:return"var(--text-secondary)"}}},8169:(e,t,a)=>{"use strict";a.d(t,{ScenarioList:()=>l});var r=a(5155),i=a(2115);function s({scenario:e,isHighlighted:t}){return(0,r.jsxs)("div",{style:{padding:"1rem",background:t?"rgba(96, 165, 250, 0.1)":"var(--bg-hover)",borderRadius:"8px",border:t?"2px solid var(--accent)":"1px solid var(--border)"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",marginBottom:"0.75rem"},children:[(0,r.jsx)("span",{style:{color:"var(--accent)"},children:"\uD83E\uDDEA"}),(0,r.jsx)("span",{style:{fontWeight:600},children:e.name}),e.tags.length>0&&(0,r.jsx)("span",{style:{marginLeft:"auto",fontSize:"0.75rem",color:"var(--text-secondary)"},children:e.tags.join(" ")})]}),(0,r.jsx)("div",{style:{fontFamily:"monospace",fontSize:"0.8125rem",lineHeight:1.6},children:e.steps.map((e,t)=>{var a;return(0,r.jsx)("div",{style:{color:(a=e).startsWith("Given")?"#a78bfa":a.startsWith("When")?"#60a5fa":a.startsWith("Then")?"#34d399":"var(--text-secondary)"},children:e},t)})})]})}function l({scenarios:e,highlightScenario:t}){let a=(0,i.useRef)(null);return(0,i.useEffect)(()=>{t&&a.current&&setTimeout(()=>{a.current?.scrollIntoView({behavior:"smooth",block:"center"})},100)},[t]),(0,r.jsx)("div",{style:{display:"grid",gap:"0.75rem"},children:e.map((e,i)=>{let l=t===e.name;return(0,r.jsx)("div",{ref:l?a:void 0,children:(0,r.jsx)(s,{scenario:e,isHighlighted:l})},i)})})}a(8500)},9339:(e,t,a)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r={callServer:function(){return s.callServer},createServerReference:function(){return n.createServerReference},findSourceMapURL:function(){return l.findSourceMapURL}};for(var i in r)Object.defineProperty(t,i,{enumerable:!0,get:r[i]});let s=a(7304),l=a(4060),n=a(7197)}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=6164)),_N_E=e.O()}]);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[922],{574:(e,t,r)=>{"use strict";r.d(t,{FSClient:()=>c});var n=r(5155),i=r(2115),s=r(3321),a=r(8500),o=r.n(a),l=r(3987),d=r(7948);function c({fs:e,isNew:t=!1,ursItems:a,riskItems:c,stepsByType:m}){let h=(0,s.useRouter)(),[g,x]=(0,i.useState)(t),[y,v]=(0,i.useState)(e?.id||"FS-XXX"),[b,f]=(0,i.useState)(e?.title||""),[j,S]=(0,i.useState)(e?.description||""),[k,C]=(0,i.useState)(e?.urs_ids||[]),[w,B]=(0,i.useState)(e?.risk_ids||[]),z=e?.scenarios?e.scenarios.map(e=>({name:e.name,steps:e.steps.map(e=>{let t=e.match(/^(Given|When|Then|And|But)\s+(.+)$/i);return t?{type:t[1].toLowerCase(),text:t[2]}:{type:"given",text:e}})})):[{name:"",steps:[{type:"given",text:""},{type:"when",text:""},{type:"then",text:""}]}],[R,W]=(0,i.useState)(z),[$,N]=(0,i.useState)(null),[T,I]=(0,i.useState)({type:"idle"}),[L,F]=(0,i.useTransition)(),E=()=>{let e=[...k.map(e=>`@${e}`),...w.map(e=>`@${e}`)].join(" "),t=R.filter(e=>e.name.trim()).map(e=>{let t=e.steps.filter(e=>e.text.trim()).map(e=>` ${u(e.type)} ${e.text}`).join("\n");return` Scenario: ${e.name}
|
|
2
|
+
${t}`}).join("\n\n");return`${e}
|
|
3
|
+
Feature: ${y} ${b}
|
|
4
|
+
${j}
|
|
5
|
+
|
|
6
|
+
${t}
|
|
7
|
+
`};return!g&&e?(0,n.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",marginBottom:"2rem",paddingBottom:"1rem",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:600,color:"var(--warning)"},children:e.id}),(0,n.jsx)("h2",{style:{margin:"0.5rem 0 0",fontSize:"1.25rem",fontWeight:500},children:e.title})]}),(0,n.jsx)("button",{onClick:()=>x(!0),className:"btn btn-primary",children:"✏️ Edit"})]}),(0,n.jsxs)("div",{style:{marginBottom:"2rem"},children:[(0,n.jsx)("h3",{style:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem",color:"var(--text-secondary)"},children:"Description"}),(0,n.jsx)("div",{style:{lineHeight:1.6},children:e.description})]}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"2rem",marginBottom:"2rem"},children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{style:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem",color:"var(--text-secondary)"},children:"Linked Requirements"}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem"},children:e.urs_ids.length?e.urs_ids.map(e=>(0,n.jsx)(o(),{href:`/traceability/urs/${e}`,children:(0,n.jsx)("span",{className:"badge badge-success",children:e})},e)):"None"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{style:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem",color:"var(--text-secondary)"},children:"Linked Risks"}),(0,n.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem"},children:e.risk_ids.length?e.risk_ids.map(e=>(0,n.jsx)(o(),{href:`/traceability/risk/${e}`,children:(0,n.jsx)("span",{className:"badge",style:{background:"#f9731633",color:"#f97316"},children:e})},e)):"None"})]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{style:{fontSize:"1rem",fontWeight:600,marginBottom:"1rem",color:"var(--text-secondary)"},children:"Scenarios"}),(0,n.jsx)("div",{style:{display:"grid",gap:"1rem"},children:e.scenarios.map((e,t)=>(0,n.jsxs)("div",{style:{padding:"1rem",background:"var(--bg-hover)",borderRadius:"8px"},children:[(0,n.jsxs)("div",{style:{fontWeight:600,marginBottom:"0.5rem"},children:["\uD83E\uDDEA ",e.name]}),(0,n.jsx)("div",{style:{fontFamily:"monospace",fontSize:"0.875rem"},children:e.steps.map((e,t)=>(0,n.jsx)("div",{style:{color:"var(--text-secondary)"},children:e},t))})]},t))})]})]}):(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1.5rem",height:"calc(100vh - 100px)"},children:[(0,n.jsxs)("div",{className:"card",style:{maxWidth:"none",overflow:"auto"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"2rem",alignItems:"center"},children:[(0,n.jsx)(d.Mo,{icon:"⚙️",title:t?"New Functional Spec":`Editing ${e?.id}`,subtitle:"Gherkin-based feature builder"}),(0,n.jsx)("div",{style:{display:"flex",gap:"0.5rem"},children:(0,n.jsx)("button",{onClick:()=>{t?h.back():x(!1)},className:"btn",children:"Cancel"})})]}),(0,n.jsx)(d.t3,{status:T}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"120px 1fr",gap:"1rem",marginBottom:"1.5rem"},children:[(0,n.jsx)(d.zB,{label:"FS ID",compact:!0,children:(0,n.jsx)("input",{value:y,onChange:e=>v(e.target.value),onFocus:()=>N("fsId"),onBlur:()=>N(null),style:(0,d.wI)("fsId",$)})}),(0,n.jsx)(d.zB,{label:"Title",required:!0,compact:!0,children:(0,n.jsx)("input",{value:b,onChange:e=>f(e.target.value),onFocus:()=>N("title"),onBlur:()=>N(null),placeholder:"e.g., User Login",style:(0,d.wI)("title",$)})})]}),(0,n.jsx)(d.zB,{label:"Description",hint:"Brief description of the feature",children:(0,n.jsx)("div",{contentEditable:!0,onInput:e=>S(e.currentTarget.textContent||""),onFocus:()=>N("description"),onBlur:()=>N(null),suppressContentEditableWarning:!0,style:{...(0,d.KN)("description",$),minHeight:"80px",whiteSpace:"pre-wrap"},dangerouslySetInnerHTML:{__html:j}})}),(0,n.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1rem",marginBottom:"1.5rem"},children:[(0,n.jsx)(d.zB,{label:"Link URS",compact:!0,children:(0,n.jsx)(l.j,{options:a.map(e=>({value:e.id,label:`${e.id} - ${e.title}`})),selected:k,onChange:C,placeholder:"Search URS...",multi:!0})}),(0,n.jsx)(d.zB,{label:"Link Risks",compact:!0,children:(0,n.jsx)(l.j,{options:c.map(e=>({value:e.id,label:`${e.id} - ${e.title}`})),selected:w,onChange:B,placeholder:"Search Risks...",multi:!0})})]}),(0,n.jsx)(d.zB,{label:"Test Scenarios",hint:"Gherkin scenarios",action:{label:"+ Scenario",onClick:()=>W([...R,{name:"",steps:[{type:"given",text:""},{type:"when",text:""},{type:"then",text:""}]}])},children:R.map((e,t)=>(0,n.jsx)(p,{scenario:e,index:t,stepsByType:m,focusedField:$,setFocusedField:N,onNameChange:e=>{let r;(r=[...R])[t].name=e,W(r)},onStepChange:(e,r)=>{let n;(n=[...R])[t].steps[e].text=r,W(n)},onStepTypeChange:(e,r)=>{let n;(n=[...R])[t].steps[e].type=r,W(n)},onAddStep:e=>{let r;(r=[...R])[t].steps.push({type:e,text:""}),W(r)},onRemoveStep:e=>{let r;(r=[...R])[t].steps=r[t].steps.filter((t,r)=>r!==e),W(r)},onRemove:()=>{R.length>1&&W(R.filter((e,r)=>r!==t))},canRemove:R.length>1},t))})]}),(0,n.jsxs)("div",{className:"card",style:{maxWidth:"none",display:"flex",flexDirection:"column"},children:[(0,n.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"1rem"},children:[(0,n.jsx)("h2",{style:{fontSize:"1.125rem",fontWeight:600},children:"\uD83D\uDCC4 Gherkin Preview"}),(0,n.jsxs)("div",{style:{display:"flex",gap:"0.75rem"},children:[(0,n.jsx)("button",{onClick:()=>{let e=E(),t=`${y.trim()}-${b.toLowerCase().replace(/\s+/g,"-")}.feature`,r=new Blob([e],{type:"text/plain"}),n=URL.createObjectURL(r),i=document.createElement("a");i.href=n,i.download=t,i.click(),URL.revokeObjectURL(n)},className:"btn",children:"⬇️ Download"}),(0,n.jsx)(d.yY,{onClick:()=>{I({type:"idle"}),F(async()=>{let n=E(),i=`${y.trim()}-${b.toLowerCase().replace(/\s+/g,"-")}.feature`;try{let{saveFS:s,updateFSLinksAction:a}=await r.e(495).then(r.bind(r,1495)),o=await s(i,n,t?void 0:e?.file_path);o.success?(await a(o.id,k),I({type:"success",message:`Saved ${o.id}`}),t?h.push(`/traceability/fs/${o.id}`):x(!1)):I({type:"error",message:o.error})}catch(e){I({type:"error",message:"Failed to save"})}})},disabled:L||!b.trim(),isPending:L,label:"Save"})]})]}),(0,n.jsx)("pre",{style:{background:"var(--bg-secondary)",padding:"1.25rem",borderRadius:"10px",overflow:"auto",whiteSpace:"pre-wrap",fontFamily:"'JetBrains Mono', monospace",fontSize:"0.8125rem",lineHeight:1.7,flex:1,border:"1px solid var(--border)"},children:E()})]})]})}function m({onClick:e}){return(0,n.jsx)("button",{onClick:e,style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",lineHeight:1},title:"Remove",children:"✕"})}function p({scenario:e,index:t,stepsByType:r,focusedField:i,setFocusedField:s,onNameChange:a,onStepChange:o,onStepTypeChange:c,onAddStep:p,onRemoveStep:h,onRemove:g,canRemove:x}){return(0,n.jsxs)("div",{style:{marginBottom:"1rem",padding:"1.25rem",background:"var(--bg-secondary)",borderRadius:"10px",border:"1px solid var(--border)"},children:[(0,n.jsxs)("div",{style:{display:"flex",gap:"0.75rem",marginBottom:"1rem",alignItems:"center"},children:[(0,n.jsxs)("span",{style:{color:"var(--accent)",fontWeight:600,fontSize:"0.875rem"},children:["Scenario ",t+1]}),(0,n.jsx)("input",{value:e.name,onChange:e=>a(e.target.value),onFocus:()=>s(`scenario-${t}`),onBlur:()=>s(null),placeholder:"Scenario name",style:{...(0,d.wI)(`scenario-${t}`,i),flex:1,fontWeight:500}}),x&&(0,n.jsx)(m,{onClick:g})]}),e.steps.map((e,t)=>(0,n.jsxs)("div",{style:{display:"flex",gap:"0.75rem",marginBottom:"0.75rem",alignItems:"center"},children:[(0,n.jsxs)("select",{value:e.type,onChange:e=>c(t,e.target.value),style:{minWidth:"80px",fontSize:"0.75rem",fontWeight:600,color:{given:"#a78bfa",when:"#60a5fa",then:"#34d399",and:"#94a3b8",but:"#f472b6"}[e.type]||"var(--text-secondary)",textTransform:"capitalize",padding:"0.25rem",borderRadius:"6px",border:"1px solid var(--border)",background:"var(--bg-primary)"},children:[(0,n.jsx)("option",{value:"given",children:"Given"}),(0,n.jsx)("option",{value:"when",children:"When"}),(0,n.jsx)("option",{value:"then",children:"Then"}),(0,n.jsx)("option",{value:"and",children:"And"}),(0,n.jsx)("option",{value:"but",children:"But"})]}),(0,n.jsx)(l.j,{options:r[e.type]?.map(e=>({value:e.replace(/^(Given|When|Then|And|But)\s+/,""),label:e}))||[],selected:e.text?[e.text]:[],onChange:e=>o(t,e[0]||""),placeholder:`Select or type ${e.type} step...`,multi:!1,allowCustom:!0}),(0,n.jsx)(m,{onClick:()=>h(t)})]},t)),(0,n.jsxs)("div",{style:{display:"flex",gap:"0.5rem",marginTop:"1rem"},children:[(0,n.jsx)("button",{onClick:()=>p("given"),className:"btn btn-sm",style:{fontSize:"0.75rem"},children:"+ Given"}),(0,n.jsx)("button",{onClick:()=>p("when"),className:"btn btn-sm",style:{fontSize:"0.75rem"},children:"+ When"}),(0,n.jsx)("button",{onClick:()=>p("then"),className:"btn btn-sm",style:{fontSize:"0.75rem"},children:"+ Then"}),["and","but"].map(e=>(0,n.jsxs)("button",{onClick:()=>p(e),className:"btn btn-sm",style:{fontSize:"0.75rem"},children:["+ ",u(e)]},e))]})]})}function u(e){return e.charAt(0).toUpperCase()+e.slice(1)}},2504:(e,t,r)=>{Promise.resolve().then(r.bind(r,574))},3321:(e,t,r)=>{"use strict";var n=r(4645);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},3987:(e,t,r)=>{"use strict";r.d(t,{j:()=>s});var n=r(5155),i=r(2115);function s({options:e,selected:t,onChange:r,placeholder:s,multi:a=!0,allowCustom:o=!0}){let[l,d]=(0,i.useState)(!1),[c,m]=(0,i.useState)(""),p=(0,i.useRef)(null),u=e.filter(e=>e.label.toLowerCase().includes(c.toLowerCase())&&(!a||!t.includes(e.value)));return(0,i.useEffect)(()=>{let e=e=>{p.current&&!p.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,n.jsxs)("div",{ref:p,style:{position:"relative",flex:1},children:[a&&t.length>0&&(0,n.jsx)("div",{style:{display:"flex",gap:"0.25rem",flexWrap:"wrap",marginBottom:"0.5rem"},children:t.map(i=>{let s=e.find(e=>e.value===i);return(0,n.jsxs)("span",{className:"badge badge-success",style:{display:"flex",alignItems:"center",gap:"0.25rem"},children:[s?.value||i,(0,n.jsx)("button",{onClick:()=>{r(t.filter(e=>e!==i))},style:{background:"none",border:"none",cursor:"pointer",padding:0,fontSize:"1rem",color:"inherit"},children:"\xd7"})]},i)})}),(0,n.jsx)("input",{type:"text",value:a||l?c:(()=>{if(!a&&t.length>0){let r=e.find(e=>e.value===t[0]);return r?.label||t[0]}return""})(),onChange:e=>m(e.target.value),onFocus:()=>d(!0),placeholder:0!==t.length&&a?"Add more...":s,className:"input",style:{width:"100%"}}),l&&(0,n.jsxs)("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:"0.25rem",background:"var(--bg-card)",border:"1px solid var(--border)",borderRadius:"8px",maxHeight:"200px",overflowY:"auto",zIndex:100,boxShadow:"0 4px 12px rgba(0,0,0,0.3)"},children:[0===u.length?(0,n.jsx)("div",{style:{padding:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:o?"No matches - type to create":"No matching steps"}):u.slice(0,20).map(e=>(0,n.jsxs)("div",{onClick:()=>{var n;return n=e.value,void(a?r([...t,n]):(r([n]),d(!1)),m(""))},style:{padding:"0.625rem 0.75rem",cursor:"pointer",fontSize:"0.875rem",borderBottom:"1px solid var(--border)",transition:"background 0.15s"},onMouseEnter:e=>e.currentTarget.style.background="var(--bg-hover)",onMouseLeave:e=>e.currentTarget.style.background="transparent",children:[(0,n.jsx)("div",{style:{fontWeight:500},children:e.value}),e.label!==e.value&&(0,n.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginTop:"0.125rem"},children:e.label})]},e.value)),u.length>20&&(0,n.jsxs)("div",{style:{padding:"0.5rem",color:"var(--text-secondary)",fontSize:"0.75rem",textAlign:"center"},children:["+",u.length-20," more..."]})]})]})}},7948:(e,t,r)=>{"use strict";r.d(t,{KN:()=>c,Mo:()=>u,d0:()=>g,mQ:()=>d,t3:()=>p,wI:()=>l,yY:()=>h,zB:()=>m});var n=r(5155);r(2115);let i={width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",lineHeight:"1.5",color:"var(--text-primary)",background:"var(--bg-secondary)",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)",borderRadius:"10px",outline:"none",transition:"all 0.2s ease"},s={borderColor:"var(--accent)",boxShadow:"0 0 0 3px rgba(99, 102, 241, 0.15)"},a={...i,cursor:"pointer",appearance:"none",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238888a0' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 1rem center",paddingRight:"2.5rem"},o={...i,resize:"vertical",minHeight:"120px",fontFamily:"inherit"};function l(e,t){return{...i,...t===e?s:{}}}function d(e,t){return{...a,...t===e?s:{}}}function c(e,t){return{...o,...t===e?s:{}}}function m({label:e,children:t,required:r,compact:i,hint:s,action:a}){return(0,n.jsxs)("div",{style:{marginBottom:i?"0":"1.5rem"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,n.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,n.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-primary)"},children:e}),r&&(0,n.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"}),s&&(0,n.jsxs)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem",fontWeight:400},children:["— ",s]})]}),a&&(0,n.jsx)("button",{onClick:a.onClick,style:{padding:"0.375rem 0.75rem",fontSize:"0.8125rem",fontWeight:500,background:"transparent",border:"1px solid var(--accent)",borderRadius:"6px",color:"var(--accent)",cursor:"pointer",transition:"all 0.2s"},children:a.label})]}),t]})}function p({status:e}){return"idle"===e.type?null:(0,n.jsxs)("div",{style:{marginBottom:"1.5rem",padding:"1rem 1.25rem",borderRadius:"10px",background:"success"===e.type?"rgba(16, 185, 129, 0.1)":"rgba(239, 68, 68, 0.1)",color:"success"===e.type?"var(--success)":"var(--error)",fontSize:"0.9375rem",display:"flex",alignItems:"center",gap:"0.5rem",borderWidth:"1px",borderStyle:"solid",borderColor:"success"===e.type?"rgba(16, 185, 129, 0.2)":"rgba(239, 68, 68, 0.2)"},children:["success"===e.type?"✅":"❌"," ",e.message]})}function u({icon:e,title:t,subtitle:r}){return(0,n.jsxs)("div",{style:{marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,n.jsxs)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:[e," ",t]}),(0,n.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:r})]})}function h({onClick:e,disabled:t,isPending:r,label:i="Save"}){return(0,n.jsx)("button",{onClick:e,disabled:t,style:{padding:"0.75rem 1.5rem",fontSize:"0.9375rem",fontWeight:600,borderRadius:"10px",border:"none",cursor:t?"not-allowed":"pointer",background:t?"var(--bg-hover)":"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))",color:t?"var(--text-secondary)":"white",transition:"all 0.2s ease",boxShadow:t?"none":"0 4px 12px rgba(99, 102, 241, 0.25)"},children:r?"\uD83D\uDCBE Saving...":`💾 ${i}`})}function g({onClick:e}){return(0,n.jsx)("button",{onClick:e,style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",transition:"all 0.2s",lineHeight:1},title:"Remove",children:"✕"})}}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=2504)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[200,252,409,974],{2318:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,8500,23))}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=2318)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[167,819,851,885,896,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[426],{2270:(e,r,s)=>{Promise.resolve().then(s.bind(s,4425))},4425:(e,r,s)=>{"use strict";s.d(r,{MatrixClient:()=>c});var t=s(5155),a=s(2115),i=s(8500),n=s.n(i);function o(e,r){return r&&e?e.split(RegExp(`(${r})`,"gi")).map((e,s)=>e.toLowerCase()===r.toLowerCase()?(0,t.jsx)("mark",{style:{background:"var(--warning)",color:"black",padding:"0 2px",borderRadius:"2px"},children:e},s):e):e}function l({row:e,search:r,gridTemplate:s}){let[i,l]=(0,a.useState)(!1);return[...new Map(e.fsItems.flatMap(({risks:e})=>e).map(e=>[e.id,e])).values()],(0,t.jsxs)("div",{style:{borderBottom:"1px solid var(--border)"},children:[(0,t.jsxs)("div",{onClick:()=>l(!i),style:{display:"grid",gridTemplateColumns:`24px ${s}`,gap:"0.5rem",padding:"0.6rem 1rem",cursor:"pointer",alignItems:"center",background:i?"var(--bg-hover)":"transparent",fontSize:"0.8125rem"},children:[(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--text-secondary)"},children:i?"▼":"▶"}),(0,t.jsx)(n(),{href:`/traceability/urs/${e.urs.id}`,onClick:e=>e.stopPropagation(),style:{textDecoration:"none"},children:(0,t.jsx)("code",{style:{fontWeight:600,color:"var(--success)"},children:o(e.urs.id,r)})}),(0,t.jsx)("span",{style:{color:"var(--text-primary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:o(e.urs.title,r)}),(0,t.jsx)("span",{className:`badge ${"approved"===e.urs.status?"badge-success":"badge-warning"}`,style:{fontSize:"0.65rem",padding:"0.15rem 0.4rem"},children:e.urs.status}),(0,t.jsx)("span",{className:"badge",style:{fontSize:"0.65rem",padding:"0.15rem 0.4rem",background:{critical:"#ef4444",high:"#f97316",medium:"#eab308",low:"#22c55e"}[e.urs.priority]||"#6b7280",color:"white"},children:e.urs.priority}),(0,t.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.urs.category||"-"}),(0,t.jsx)("span",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.urs.owner?.split(" ")[0]||"-"}),(0,t.jsx)("span",{style:{fontSize:"0.7rem",color:"var(--text-secondary)"},children:e.urs.created_at||"-"}),(0,t.jsx)("span",{className:"badge",style:{fontSize:"0.65rem",padding:"0.15rem 0.4rem",background:"rgba(245, 158, 11, 0.15)",color:"var(--warning)",minWidth:"24px",textAlign:"right",display:"inline-block"},children:e.fsItems.length}),(0,t.jsx)("span",{className:"badge badge-success",style:{fontSize:"0.65rem",padding:"0.15rem 0.4rem",minWidth:"28px",textAlign:"right",display:"inline-block"},children:e.coverage.scenarioCount})]}),i&&(0,t.jsx)("div",{style:{padding:"1rem",paddingLeft:"2.5rem",background:"var(--bg-hover)",borderTop:"1px solid var(--border)"},children:e.fsItems.map(({fs:e,risks:s})=>(0,t.jsxs)("div",{style:{marginBottom:"1rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",marginBottom:"0.5rem"},children:[(0,t.jsx)("div",{style:{width:"3px",height:"20px",background:"var(--warning)",borderRadius:"2px"}}),(0,t.jsx)(n(),{href:`/traceability/fs/${e.id}`,style:{textDecoration:"none"},children:(0,t.jsx)("code",{style:{fontWeight:600,color:"var(--warning)",fontSize:"0.875rem"},children:e.id})}),(0,t.jsx)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem"},children:e.title}),s.map(e=>(0,t.jsx)(n(),{href:`/traceability/risk/${e.id}`,style:{textDecoration:"none"},children:(0,t.jsx)("span",{className:"badge",style:{fontSize:"0.65rem",background:"rgba(249, 115, 22, 0.15)",color:"#f97316"},children:e.id})},e.id))]}),(0,t.jsx)("div",{style:{marginLeft:"0.75rem",display:"grid",gap:"0.25rem"},children:e.scenarios.map((s,a)=>(0,t.jsxs)(n(),{href:`/traceability/fs/${e.id}?scenario=${encodeURIComponent(s.name)}`,style:{display:"flex",alignItems:"center",gap:"0.5rem",padding:"0.4rem 0.6rem",borderRadius:"4px",background:"var(--bg-card)",textDecoration:"none",color:"var(--text-primary)",fontSize:"0.8125rem"},children:[(0,t.jsx)("span",{style:{color:"var(--accent)"},children:"\uD83E\uDDEA"}),(0,t.jsx)("span",{children:o(s.name,r)})]},a))})]},e.id))})]})}let d=[{key:"id",label:"URS",width:"90px"},{key:"title",label:"Title",width:"1fr"},{key:"status",label:"Status",width:"80px"},{key:"priority",label:"Priority",width:"80px"},{key:"category",label:"Category",width:"90px"},{key:"owner",label:"Owner",width:"90px"},{key:"created",label:"Created",width:"90px"},{key:"fs",label:"FS",width:"50px"},{key:"tests",label:"Tests",width:"60px"}];function c({matrix:e,scenarios:r}){let[s,i]=(0,a.useState)(""),[n,o]=(0,a.useState)("id"),[c,m]=(0,a.useState)("asc"),p=s.toLowerCase(),g=(0,a.useMemo)(()=>e.filter(e=>!!(!s||e.urs.id.toLowerCase().includes(p)||e.urs.title.toLowerCase().includes(p)||e.urs.status?.toLowerCase().includes(p)||e.urs.category?.toLowerCase().includes(p)||e.urs.owner?.toLowerCase().includes(p)||e.fsItems.some(({fs:e})=>e.id.toLowerCase().includes(p)||e.title.toLowerCase().includes(p))||e.fsItems.some(({risks:e})=>e.some(e=>e.id.toLowerCase().includes(p)))||e.fsItems.some(({fs:e})=>e.scenarios.some(e=>e.name.toLowerCase().includes(p))))),[e,s,p]),h=(0,a.useMemo)(()=>{let e=[...g];return e.sort((e,r)=>{let s="",t="";switch(n){case"id":s=e.urs.id,t=r.urs.id;break;case"title":s=e.urs.title,t=r.urs.title;break;case"status":s=e.urs.status||"",t=r.urs.status||"";break;case"priority":let a={critical:0,high:1,medium:2,low:3};s=a[e.urs.priority]??9,t=a[r.urs.priority]??9;break;case"category":s=e.urs.category||"",t=r.urs.category||"";break;case"owner":s=e.urs.owner||"",t=r.urs.owner||"";break;case"created":s=e.urs.created_at||"",t=r.urs.created_at||"";break;case"fs":s=e.fsItems.length,t=r.fsItems.length;break;case"tests":s=e.coverage.scenarioCount,t=r.coverage.scenarioCount}return"number"==typeof s&&"number"==typeof t?"asc"===c?s-t:t-s:"asc"===c?String(s).localeCompare(String(t)):String(t).localeCompare(String(s))}),e},[g,n,c]),u=r.filter(e=>!s||e.name.toLowerCase().includes(p)||e.fsId.toLowerCase().includes(p)||e.ursIds.some(e=>e.toLowerCase().includes(p))||e.steps.some(e=>e.toLowerCase().includes(p))),x=d.map(e=>e.width).join(" ");return(0,t.jsxs)("div",{children:[(0,t.jsxs)("header",{className:"page-header",style:{marginBottom:"2rem"},children:[(0,t.jsx)("h1",{className:"page-title",children:"Search"}),(0,t.jsx)("p",{className:"page-subtitle",children:"Search across all URS, FS, and Risk records"})]}),(0,t.jsxs)("div",{className:"card",style:{marginBottom:"1.5rem"},children:[(0,t.jsxs)("div",{style:{display:"flex",gap:"1rem",alignItems:"center"},children:[(0,t.jsx)("input",{type:"text",value:s,onChange:e=>i(e.target.value),placeholder:"\uD83D\uDD0D Search everything: URS, FS, scenarios, risks...",style:{flex:1,padding:"0.75rem 1rem",background:"var(--bg-hover)",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-primary)",fontSize:"1rem"}}),s&&(0,t.jsx)("button",{onClick:()=>i(""),className:"btn",style:{background:"var(--bg-hover)"},children:"Clear"})]}),s&&(0,t.jsxs)("div",{style:{marginTop:"0.75rem",fontSize:"0.875rem",color:"var(--text-secondary)"},children:["Found: ",(0,t.jsx)("strong",{children:h.length})," URS, ",(0,t.jsx)("strong",{children:u.length})," scenarios"]})]}),(0,t.jsxs)("div",{style:{marginBottom:"1.5rem",fontSize:"0.875rem",color:"var(--text-secondary)"},children:["Showing ",(0,t.jsx)("strong",{children:h.length})," requirements covering ",(0,t.jsx)("strong",{children:u.length})," scenarios"]}),(0,t.jsxs)("div",{className:"card",style:{padding:0,overflow:"hidden"},children:[(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:`24px ${x}`,gap:"0.5rem",padding:"0.75rem 1rem",background:"var(--bg-hover)",borderBottom:"1px solid var(--border)",fontSize:"0.75rem",fontWeight:600,color:"var(--text-secondary)"},children:[(0,t.jsx)("span",{}),d.map(e=>(0,t.jsxs)("button",{onClick:()=>{var r;n===(r=e.key)?m(e=>"asc"===e?"desc":"asc"):(o(r),m("asc"))},style:{background:"none",border:"none",color:n===e.key?"var(--accent)":"var(--text-secondary)",cursor:"pointer",textAlign:"left",padding:0,fontWeight:600,fontSize:"0.75rem",display:"flex",alignItems:"center",gap:"0.25rem"},children:[e.label,n===e.key&&(0,t.jsx)("span",{children:"asc"===c?"↑":"↓"})]},e.key))]}),0===h.length?(0,t.jsx)("div",{style:{textAlign:"center",padding:"2rem",color:"var(--text-secondary)"},children:"No results"}):(0,t.jsx)("div",{children:h.map(e=>(0,t.jsx)(l,{row:e,search:p,gridTemplate:x},e.urs.id))})]})]})}}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=2270)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[510],{3321:(e,t,i)=>{"use strict";var r=i(4645);i.o(r,"usePathname")&&i.d(t,{usePathname:function(){return r.usePathname}}),i.o(r,"useRouter")&&i.d(t,{useRouter:function(){return r.useRouter}})},3987:(e,t,i)=>{"use strict";i.d(t,{j:()=>n});var r=i(5155),l=i(2115);function n({options:e,selected:t,onChange:i,placeholder:n,multi:s=!0,allowCustom:a=!0}){let[o,d]=(0,l.useState)(!1),[c,m]=(0,l.useState)(""),u=(0,l.useRef)(null),p=e.filter(e=>e.label.toLowerCase().includes(c.toLowerCase())&&(!s||!t.includes(e.value)));return(0,l.useEffect)(()=>{let e=e=>{u.current&&!u.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[]),(0,r.jsxs)("div",{ref:u,style:{position:"relative",flex:1},children:[s&&t.length>0&&(0,r.jsx)("div",{style:{display:"flex",gap:"0.25rem",flexWrap:"wrap",marginBottom:"0.5rem"},children:t.map(l=>{let n=e.find(e=>e.value===l);return(0,r.jsxs)("span",{className:"badge badge-success",style:{display:"flex",alignItems:"center",gap:"0.25rem"},children:[n?.value||l,(0,r.jsx)("button",{onClick:()=>{i(t.filter(e=>e!==l))},style:{background:"none",border:"none",cursor:"pointer",padding:0,fontSize:"1rem",color:"inherit"},children:"\xd7"})]},l)})}),(0,r.jsx)("input",{type:"text",value:s||o?c:(()=>{if(!s&&t.length>0){let i=e.find(e=>e.value===t[0]);return i?.label||t[0]}return""})(),onChange:e=>m(e.target.value),onFocus:()=>d(!0),placeholder:0!==t.length&&s?"Add more...":n,className:"input",style:{width:"100%"}}),o&&(0,r.jsxs)("div",{style:{position:"absolute",top:"100%",left:0,right:0,marginTop:"0.25rem",background:"var(--bg-card)",border:"1px solid var(--border)",borderRadius:"8px",maxHeight:"200px",overflowY:"auto",zIndex:100,boxShadow:"0 4px 12px rgba(0,0,0,0.3)"},children:[0===p.length?(0,r.jsx)("div",{style:{padding:"0.75rem",color:"var(--text-secondary)",fontSize:"0.875rem"},children:a?"No matches - type to create":"No matching steps"}):p.slice(0,20).map(e=>(0,r.jsxs)("div",{onClick:()=>{var r;return r=e.value,void(s?i([...t,r]):(i([r]),d(!1)),m(""))},style:{padding:"0.625rem 0.75rem",cursor:"pointer",fontSize:"0.875rem",borderBottom:"1px solid var(--border)",transition:"background 0.15s"},onMouseEnter:e=>e.currentTarget.style.background="var(--bg-hover)",onMouseLeave:e=>e.currentTarget.style.background="transparent",children:[(0,r.jsx)("div",{style:{fontWeight:500},children:e.value}),e.label!==e.value&&(0,r.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",marginTop:"0.125rem"},children:e.label})]},e.value)),p.length>20&&(0,r.jsxs)("div",{style:{padding:"0.5rem",color:"var(--text-secondary)",fontSize:"0.75rem",textAlign:"center"},children:["+",p.length-20," more..."]})]})]})}},5230:(e,t,i)=>{"use strict";i.d(t,{RiskClient:()=>c});var r=i(5155),l=i(2115),n=i(3321),s=i(8500),a=i.n(s),o=i(3987),d=i(7948);function c({risk:e,isNew:t=!1,fsItems:s}){let c=(0,n.useRouter)(),[g,h]=(0,l.useState)(t),[x,v]=(0,l.useState)(e?.title||""),[y,b]=(0,l.useState)(e?.status||"draft"),[f,j]=(0,l.useState)(e?.category||""),[k,S]=(0,l.useState)(e?.gamp_category||4),[C,w]=(0,l.useState)(e?.impact||"medium"),[z,B]=(0,l.useState)(e?.probability||"medium"),[R,I]=(0,l.useState)(e?.risk_level||"medium"),[_,W]=(0,l.useState)(e?.residual_risk||"acceptable"),[F,$]=(0,l.useState)(e?.fs_ids||[]),L=e?.risks?.length?e.risks.map(e=>({id:e.id,description:e.description,impact:e.impact,probability:e.probability})):[{id:"R-001.1",description:"",impact:"medium",probability:"medium"}],N=e?.mitigations?.length?e.mitigations.map(e=>({risk_id:e.risk_id,control:e.control,test:e.test})):[{risk_id:"R-001.1",control:"",test:""}],[E,T]=(0,l.useState)(L),[H,M]=(0,l.useState)(N),[P,D]=(0,l.useState)(null),[A,Q]=(0,l.useState)({type:"idle"}),[q,Y]=(0,l.useTransition)(),O=(e,t,i)=>{let r=[...E];r[e]={...r[e],[t]:i},T(r)},K=(e,t,i)=>{let r=[...H];r[e]={...r[e],[t]:i},M(r)};return!g&&e?(0,r.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"1rem",marginBottom:"0.5rem"},children:[(0,r.jsx)("span",{style:{fontSize:"0.75rem",fontWeight:600,padding:"0.25rem 0.75rem",background:"#f97316",borderRadius:"6px",color:"white"},children:e.id}),(0,r.jsxs)("span",{className:`badge ${"acceptable"===e.residual_risk?"badge-success":"badge-error"}`,style:{textTransform:"capitalize"},children:["acceptable"===e.residual_risk?"✅":"⚠️"," ",e.residual_risk||"pending"]})]}),(0,r.jsx)("h1",{style:{margin:0,fontSize:"1.5rem",fontWeight:600,lineHeight:1.3},children:e.title})]}),(0,r.jsxs)("button",{onClick:()=>h(!0),className:"btn btn-primary",style:{display:"flex",gap:"0.5rem",alignItems:"center"},children:[(0,r.jsx)("span",{children:"✏️"})," Edit"]})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem",marginBottom:"1.5rem"},children:[(0,r.jsx)(m,{label:"Category",value:e.category}),(0,r.jsx)(m,{label:"Impact",value:e.impact,color:p(e.impact)}),(0,r.jsx)(m,{label:"Probability",value:e.probability,color:p(e.probability)}),(0,r.jsx)(m,{label:"Risk Level",value:e.risk_level,color:p(e.risk_level)})]}),(0,r.jsx)(u,{label:"Linked Functional Specs",children:e.fs_ids.length>0?(0,r.jsx)("div",{style:{display:"flex",flexWrap:"wrap",gap:"0.5rem"},children:e.fs_ids.map(e=>(0,r.jsx)(a(),{href:`/traceability/fs/${e}`,children:(0,r.jsx)("span",{className:"badge badge-warning",children:e})},e))}):(0,r.jsx)("span",{style:{color:"var(--text-secondary)",fontStyle:"italic"},children:"No functional specs linked. Edit to add links."})}),e.risks.length>0&&(0,r.jsx)(u,{label:"Identified Risks",count:e.risks.length,children:(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:e.risks.map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"flex-start"},children:[(0,r.jsx)("span",{style:{color:"#f97316",fontWeight:600,fontSize:"0.875rem",fontFamily:"monospace",minWidth:"70px"},children:e.id}),(0,r.jsx)("span",{style:{lineHeight:1.6},children:e.description})]},t))})}),e.mitigations.length>0&&(0,r.jsx)(u,{label:"Mitigation & Control",count:e.mitigations.length,children:(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:e.mitigations.map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.25rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,r.jsxs)("span",{style:{color:"var(--accent)",fontWeight:600,fontSize:"0.75rem"},children:["For ",e.risk_id,":"]}),(0,r.jsx)("span",{style:{fontWeight:500},children:e.control})]}),(0,r.jsxs)("div",{style:{fontSize:"0.875rem",color:"var(--text-secondary)",paddingLeft:"1rem"},children:["Test: ",e.test]})]},t))})})]}):(0,r.jsxs)("div",{className:"card",style:{maxWidth:"900px"},children:[(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"2rem",alignItems:"center"},children:[(0,r.jsx)(d.Mo,{icon:"⚠️",title:t?"New Risk Assessment":`Editing ${e?.id}`,subtitle:"Identify and mitigate risks"}),(0,r.jsxs)("div",{style:{display:"flex",gap:"0.75rem"},children:[(0,r.jsx)("button",{onClick:()=>{t?c.back():h(!1)},className:"btn",children:"Cancel"}),(0,r.jsx)(d.yY,{onClick:()=>{Q({type:"idle"}),Y(async()=>{try{let r,l={title:x,status:y,category:f,gamp_category:k,fs_ids:F,impact:C,probability:z,risk_level:R,residual_risk:_,risks:E.filter(e=>e.description.trim()||e.id).map(e=>({id:e.id,description:e.description,impact:e.impact,probability:e.probability})),mitigations:H.filter(e=>e.control.trim()).map(e=>({risk_id:e.risk_id,control:e.control,test:e.test}))};if(t){let{saveRisk:e}=await i.e(495).then(i.bind(i,1495));r=await e(l)}else{let{updateRiskAction:t}=await i.e(495).then(i.bind(i,1495));r=await t(e.id,l)}r.success?(Q({type:"success",message:`Saved ${r.id}`}),t?c.push(`/traceability/risk/${r.id}`):(c.refresh(),h(!1))):Q({type:"error",message:r.error})}catch(e){Q({type:"error",message:"Failed to save"})}})},disabled:q||!x.trim(),isPending:q,label:"Save Risk"})]})]}),(0,r.jsx)(d.t3,{status:A}),(0,r.jsx)(d.zB,{label:"Title",required:!0,children:(0,r.jsx)("input",{value:x,onChange:e=>v(e.target.value),style:(0,d.wI)("title",P),onFocus:()=>D("title"),onBlur:()=>D(null)})}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:"1rem",marginBottom:"1.5rem"},children:[(0,r.jsx)(d.zB,{label:"Category",compact:!0,children:(0,r.jsx)("input",{value:f,onChange:e=>j(e.target.value),style:(0,d.wI)("cat",P),onFocus:()=>D("cat")})}),(0,r.jsx)(d.zB,{label:"Link FS",required:!0,compact:!0,children:(0,r.jsx)(o.j,{options:s.map(e=>({value:e.id,label:`${e.id} - ${e.title}`})),selected:F,onChange:$,placeholder:"Search FS...",multi:!0})})]}),(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(4, 1fr)",gap:"1rem",marginBottom:"1.5rem"},children:[(0,r.jsx)(d.zB,{label:"Impact",compact:!0,children:(0,r.jsxs)("select",{value:C,onChange:e=>w(e.target.value),style:(0,d.mQ)("imp",P),onFocus:()=>D("imp"),children:[(0,r.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"}),(0,r.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,r.jsx)("option",{value:"high",children:"\uD83D\uDFE0 High"}),(0,r.jsx)("option",{value:"critical",children:"\uD83D\uDD34 Critical"})]})}),(0,r.jsx)(d.zB,{label:"Probability",compact:!0,children:(0,r.jsxs)("select",{value:z,onChange:e=>B(e.target.value),style:(0,d.mQ)("prob",P),onFocus:()=>D("prob"),children:[(0,r.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"}),(0,r.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,r.jsx)("option",{value:"high",children:"\uD83D\uDD34 High"})]})}),(0,r.jsx)(d.zB,{label:"Risk Level",compact:!0,children:(0,r.jsxs)("select",{value:R,onChange:e=>I(e.target.value),style:(0,d.mQ)("lvl",P),onFocus:()=>D("lvl"),children:[(0,r.jsx)("option",{value:"low",children:"\uD83D\uDFE2 Low"}),(0,r.jsx)("option",{value:"medium",children:"\uD83D\uDFE1 Medium"}),(0,r.jsx)("option",{value:"high",children:"\uD83D\uDFE0 High"}),(0,r.jsx)("option",{value:"critical",children:"\uD83D\uDD34 Critical"})]})}),(0,r.jsx)(d.zB,{label:"Residual Risk",compact:!0,children:(0,r.jsxs)("select",{value:_,onChange:e=>W(e.target.value),style:(0,d.mQ)("res",P),onFocus:()=>D("res"),children:[(0,r.jsx)("option",{value:"acceptable",children:"✅ Acceptable"}),(0,r.jsx)("option",{value:"unacceptable",children:"❌ Unacceptable"}),(0,r.jsx)("option",{value:"pending",children:"⏳ Pending"})]})})]}),(0,r.jsx)(d.zB,{label:"Identified Risks",hint:"List specific risks",action:{label:"+ Add Risk",onClick:()=>T([...E,{id:`R-001.${E.length+1}`,description:"",impact:"medium",probability:"medium"}])},children:(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:E.map((e,t)=>(0,r.jsxs)("div",{style:{display:"flex",gap:"0.75rem",alignItems:"center"},children:[(0,r.jsx)("input",{value:e.id,onChange:e=>O(t,"id",e.target.value),onFocus:()=>D(`risk-id-${t}`),onBlur:()=>D(null),placeholder:"R-ID",style:{...(0,d.wI)(`risk-id-${t}`,P),width:"100px",flexShrink:0}}),(0,r.jsx)("input",{value:e.description,onChange:e=>O(t,"description",e.target.value),onFocus:()=>D(`risk-desc-${t}`),onBlur:()=>D(null),placeholder:"Risk description",style:{...(0,d.wI)(`risk-desc-${t}`,P),flex:1}}),E.length>1&&(0,r.jsx)(d.d0,{onClick:()=>{E.length>1&&T(E.filter((e,i)=>i!==t))}})]},t))})}),(0,r.jsx)(d.zB,{label:"Mitigations",hint:"Control measures and testing",action:{label:"+ Add Mitigation",onClick:()=>M([...H,{risk_id:"",control:"",test:""}])},children:(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:"0.75rem"},children:H.map((e,t)=>(0,r.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"100px 1fr 1fr auto",gap:"0.75rem",alignItems:"center",padding:"1rem",background:"var(--bg-secondary)",borderRadius:"10px",border:"1px solid var(--border)"},children:[(0,r.jsx)("input",{value:e.risk_id,onChange:e=>K(t,"risk_id",e.target.value),onFocus:()=>D(`mit-id-${t}`),onBlur:()=>D(null),placeholder:"R-ID",style:(0,d.wI)(`mit-id-${t}`,P)}),(0,r.jsx)("input",{value:e.control,onChange:e=>K(t,"control",e.target.value),onFocus:()=>D(`mit-control-${t}`),onBlur:()=>D(null),placeholder:"Control measure",style:(0,d.wI)(`mit-control-${t}`,P)}),(0,r.jsx)("input",{value:e.test,onChange:e=>K(t,"test",e.target.value),onFocus:()=>D(`mit-test-${t}`),onBlur:()=>D(null),placeholder:"How to test",style:(0,d.wI)(`mit-test-${t}`,P)}),H.length>1&&(0,r.jsx)(d.d0,{onClick:()=>{H.length>1&&M(H.filter((e,i)=>i!==t))}})]},t))})})]})}function m({label:e,value:t,color:i}){return(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{style:{fontSize:"0.75rem",color:"var(--text-secondary)",fontWeight:500,marginBottom:"0.25rem"},children:e}),(0,r.jsx)("div",{style:{fontSize:"1rem",fontWeight:500,textTransform:"capitalize",color:i||"var(--text-primary)"},children:t||"—"})]})}function u({label:e,count:t,children:i}){return(0,r.jsxs)("div",{style:{marginBottom:"1.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem",marginBottom:"0.5rem"},children:[(0,r.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-secondary)"},children:e}),void 0!==t&&(0,r.jsx)("span",{style:{fontSize:"0.75rem",padding:"0.125rem 0.5rem",background:"var(--bg-hover)",borderRadius:"9999px"},children:t})]}),(0,r.jsx)("div",{style:{lineHeight:1.7},children:i})]})}function p(e){switch(e?.toLowerCase()){case"high":return"#ef4444";case"medium":return"#f59e0b";case"low":return"#10b981";default:return"var(--text-primary)"}}},6640:(e,t,i)=>{Promise.resolve().then(i.bind(i,5230))},7948:(e,t,i)=>{"use strict";i.d(t,{KN:()=>c,Mo:()=>p,d0:()=>h,mQ:()=>d,t3:()=>u,wI:()=>o,yY:()=>g,zB:()=>m});var r=i(5155);i(2115);let l={width:"100%",padding:"0.875rem 1rem",fontSize:"0.9375rem",lineHeight:"1.5",color:"var(--text-primary)",background:"var(--bg-secondary)",borderWidth:"1px",borderStyle:"solid",borderColor:"var(--border)",borderRadius:"10px",outline:"none",transition:"all 0.2s ease"},n={borderColor:"var(--accent)",boxShadow:"0 0 0 3px rgba(99, 102, 241, 0.15)"},s={...l,cursor:"pointer",appearance:"none",backgroundImage:"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238888a0' d='M6 8L1 3h10z'/%3E%3C/svg%3E\")",backgroundRepeat:"no-repeat",backgroundPosition:"right 1rem center",paddingRight:"2.5rem"},a={...l,resize:"vertical",minHeight:"120px",fontFamily:"inherit"};function o(e,t){return{...l,...t===e?n:{}}}function d(e,t){return{...s,...t===e?n:{}}}function c(e,t){return{...a,...t===e?n:{}}}function m({label:e,children:t,required:i,compact:l,hint:n,action:s}){return(0,r.jsxs)("div",{style:{marginBottom:l?"0":"1.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"0.5rem"},children:[(0,r.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.5rem"},children:[(0,r.jsx)("label",{style:{fontWeight:500,fontSize:"0.875rem",color:"var(--text-primary)"},children:e}),i&&(0,r.jsx)("span",{style:{color:"var(--accent)",fontSize:"0.75rem"},children:"Required"}),n&&(0,r.jsxs)("span",{style:{color:"var(--text-secondary)",fontSize:"0.8125rem",fontWeight:400},children:["— ",n]})]}),s&&(0,r.jsx)("button",{onClick:s.onClick,style:{padding:"0.375rem 0.75rem",fontSize:"0.8125rem",fontWeight:500,background:"transparent",border:"1px solid var(--accent)",borderRadius:"6px",color:"var(--accent)",cursor:"pointer",transition:"all 0.2s"},children:s.label})]}),t]})}function u({status:e}){return"idle"===e.type?null:(0,r.jsxs)("div",{style:{marginBottom:"1.5rem",padding:"1rem 1.25rem",borderRadius:"10px",background:"success"===e.type?"rgba(16, 185, 129, 0.1)":"rgba(239, 68, 68, 0.1)",color:"success"===e.type?"var(--success)":"var(--error)",fontSize:"0.9375rem",display:"flex",alignItems:"center",gap:"0.5rem",borderWidth:"1px",borderStyle:"solid",borderColor:"success"===e.type?"rgba(16, 185, 129, 0.2)":"rgba(239, 68, 68, 0.2)"},children:["success"===e.type?"✅":"❌"," ",e.message]})}function p({icon:e,title:t,subtitle:i}){return(0,r.jsxs)("div",{style:{marginBottom:"2rem",paddingBottom:"1.5rem",borderBottom:"1px solid var(--border)"},children:[(0,r.jsxs)("h2",{style:{margin:0,fontSize:"1.25rem",fontWeight:600},children:[e," ",t]}),(0,r.jsx)("p",{style:{margin:"0.25rem 0 0",color:"var(--text-secondary)",fontSize:"0.875rem"},children:i})]})}function g({onClick:e,disabled:t,isPending:i,label:l="Save"}){return(0,r.jsx)("button",{onClick:e,disabled:t,style:{padding:"0.75rem 1.5rem",fontSize:"0.9375rem",fontWeight:600,borderRadius:"10px",border:"none",cursor:t?"not-allowed":"pointer",background:t?"var(--bg-hover)":"linear-gradient(135deg, var(--gradient-start), var(--gradient-end))",color:t?"var(--text-secondary)":"white",transition:"all 0.2s ease",boxShadow:t?"none":"0 4px 12px rgba(99, 102, 241, 0.25)"},children:i?"\uD83D\uDCBE Saving...":`💾 ${l}`})}function h({onClick:e}){return(0,r.jsx)("button",{onClick:e,style:{padding:"0.5rem",background:"transparent",border:"1px solid var(--border)",borderRadius:"8px",color:"var(--text-secondary)",cursor:"pointer",transition:"all 0.2s",lineHeight:1},title:"Remove",children:"✕"})}}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=6640)),_N_E=e.O()}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[200,252,409,974],{2318:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,8500,23))}},e=>{e.O(0,[500,441,794,358],()=>e(e.s=2318)),_N_E=e.O()}]);
|