@exulu/frontend 1.9.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.next/BUILD_ID +1 -1
- package/dist/.next/app-build-manifest.json +191 -188
- package/dist/.next/app-path-routes-manifest.json +1 -1
- package/dist/.next/build-manifest.json +2 -2
- package/dist/.next/prerender-manifest.json +1 -1
- package/dist/.next/server/app/(application)/agents/edit/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/agents/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page.js +7 -7
- package/dist/.next/server/app/(application)/chat/[agent]/[session]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/[agent]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/chat/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/configuration/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/dashboard/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/data/[[...query]]/page.js +3 -3
- package/dist/.next/server/app/(application)/data/[[...query]]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/[id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page.js.nft.json +1 -1
- package/dist/.next/server/app/(application)/evals/cases/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/evals/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/explorer/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/keys/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page.js +1 -1
- package/dist/.next/server/app/(application)/projects/[project]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/projects/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/prompts/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/roles/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/token/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/users/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/create/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/edit/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/variables/usage/[variable_id]/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(application)/workflows/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/(authentication)/login/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/.next/server/app/_not-found.html +1 -1
- package/dist/.next/server/app/_not-found.rsc +1 -1
- package/dist/.next/server/app-paths-manifest.json +7 -7
- package/dist/.next/server/chunks/2270.js +154 -130
- package/dist/.next/server/chunks/{5084.js → 2587.js} +1 -1
- package/dist/.next/server/chunks/3503.js +1 -1
- package/dist/.next/server/chunks/5485.js +1 -1
- package/dist/.next/server/chunks/5974.js +1 -1
- package/dist/.next/server/chunks/7944.js +1 -1
- package/dist/.next/server/chunks/8286.js +1 -1
- package/dist/.next/server/middleware-manifest.json +5 -5
- package/dist/.next/server/pages/404.html +1 -1
- package/dist/.next/server/pages/500.html +1 -1
- package/dist/.next/server/server-reference-manifest.json +1 -1
- package/dist/.next/static/chunks/1707-06e693c4a709c147.js +2 -0
- package/dist/.next/static/chunks/1707-06e693c4a709c147.js.map +1 -0
- package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js → 1957-34f17de1e14e45de.js} +1 -1
- package/dist/.next/static/chunks/{1957-cf44b1d31a9c7d5c.js.map → 1957-34f17de1e14e45de.js.map} +1 -1
- package/dist/.next/static/chunks/{2293-48a95904b834eccc.js → 2293-592e22dde70d632b.js} +1 -1
- package/dist/.next/static/chunks/{2293-48a95904b834eccc.js.map → 2293-592e22dde70d632b.js.map} +1 -1
- package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js +2 -0
- package/dist/.next/static/chunks/2534-3dd7a9fabfbdb9d8.js.map +1 -0
- package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js +2 -0
- package/dist/.next/static/chunks/2823-324b1cd8f15ff9c5.js.map +1 -0
- package/dist/.next/static/chunks/3246-1812de142455a0ac.js +2 -0
- package/dist/.next/static/chunks/3246-1812de142455a0ac.js.map +1 -0
- package/dist/.next/static/chunks/3750-d0ae5d73288be8de.js +2 -0
- package/dist/.next/static/chunks/3750-d0ae5d73288be8de.js.map +1 -0
- package/dist/.next/static/chunks/{3832-417a5eeee712a793.js → 3832-0b8edbcc671f4cc0.js} +2 -2
- package/dist/.next/static/chunks/3832-0b8edbcc671f4cc0.js.map +1 -0
- package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js → 4386-21ac377a719ebdfa.js} +1 -1
- package/dist/.next/static/chunks/{4386-45b79e656a244d8a.js.map → 4386-21ac377a719ebdfa.js.map} +1 -1
- package/dist/.next/static/chunks/4612-da512770f949561a.js +2 -0
- package/dist/.next/static/chunks/4612-da512770f949561a.js.map +1 -0
- package/dist/.next/static/chunks/{5825-efd4db1da512bd7f.js → 4760-d5ceb992b68e35ca.js} +2 -2
- package/dist/.next/static/chunks/4760-d5ceb992b68e35ca.js.map +1 -0
- package/dist/.next/static/chunks/{6367-59655a85d75e19be.js → 6367-aa5020cbea5354e2.js} +1 -1
- package/dist/.next/static/chunks/{6367-59655a85d75e19be.js.map → 6367-aa5020cbea5354e2.js.map} +1 -1
- package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js +2 -0
- package/dist/.next/static/chunks/6373-3eee0b6c8b8fd459.js.map +1 -0
- package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js → 8030-5d38a3f1a4ad44cb.js} +1 -1
- package/dist/.next/static/chunks/{8030-9c926ea4dfd3a54e.js.map → 8030-5d38a3f1a4ad44cb.js.map} +1 -1
- package/dist/.next/static/chunks/{8293-0e69d89d2dac7111.js → 8293-ba5cd36594e6fde1.js} +3 -3
- package/dist/.next/static/chunks/8293-ba5cd36594e6fde1.js.map +1 -0
- package/dist/.next/static/chunks/9105-143f12397a76a332.js +2 -0
- package/dist/.next/static/chunks/9105-143f12397a76a332.js.map +1 -0
- package/dist/.next/static/chunks/9877-378934ae38c6760c.js +2 -0
- package/dist/.next/static/chunks/9877-378934ae38c6760c.js.map +1 -0
- package/dist/.next/static/chunks/{9953-95900a236271a222.js → 9953-02d5b52553a5c573.js} +2 -2
- package/dist/.next/static/chunks/{9953-95900a236271a222.js.map → 9953-02d5b52553a5c573.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js → page-37918149a8e909b0.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/agents/edit/[id]/{page-e4a4693953329671.js.map → page-37918149a8e909b0.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js → page-9cff3b35b042d46a.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/agents/{page-b77c21a993c55901.js.map → page-9cff3b35b042d46a.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js +2 -0
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-53a99d8df53380c7.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js → layout-ba702af6bb56baa2.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{layout-093baa26f89338bc.js.map → layout-ba702af6bb56baa2.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js → page-8b00a98d285829b1.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/chat/{page-8a1fcfb68cf9c8c0.js.map → page-8b00a98d285829b1.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js → page-1e978e117d5086a1.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/configuration/{page-f315ede6d66922e6.js.map → page-1e978e117d5086a1.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js → page-c54b4bc8d0ac4ac8.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/dashboard/{page-4a1956febf5235b6.js.map → page-c54b4bc8d0ac4ac8.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-dfdb5c1cdc7ddefc.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-dfdb5c1cdc7ddefc.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js +2 -0
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-faaee5fe82b45966.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/[id]/{page-a7728cf9b0524489.js → page-c956d9892676aa4f.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-c956d9892676aa4f.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js +2 -0
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-6b4dde82376e9aac.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/evals/{page-8b38d8d29f275704.js → page-944bfc4f0a001e4c.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-944bfc4f0a001e4c.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js +2 -0
- package/dist/.next/static/chunks/app/(application)/explorer/page-07d67145bb176711.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js → page-6c0cd9ef20cd1461.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/keys/{page-afe59c91cc347208.js.map → page-6c0cd9ef20cd1461.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js → page-5e2be54e76b8509c.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/projects/[project]/{page-f04fd5291a1ef7b1.js.map → page-5e2be54e76b8509c.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js → layout-f2e0f42a08c96bb8.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/projects/{layout-a8e1830ef3faafb9.js.map → layout-f2e0f42a08c96bb8.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js → page-2c03bbe32800acc3.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/prompts/{page-2c500e9898447506.js.map → page-2c03bbe32800acc3.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js → page-b977b5c658004717.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/roles/{page-873911198c17d9a7.js.map → page-b977b5c658004717.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/token/{page-3f74f711f3d04fce.js → page-08596ece49a811b9.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/token/page-08596ece49a811b9.js.map +1 -0
- package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js → page-49212081be40aeca.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/users/{page-0d7f0d7e80cd1436.js.map → page-49212081be40aeca.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js → page-9ce762918374f616.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/create/{page-8ebf4e3d4d17443b.js.map → page-9ce762918374f616.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js → page-0e2b7038546d9f7a.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/edit/[variable_id]/{page-006145e82e054e72.js.map → page-0e2b7038546d9f7a.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js → page-141d5d3f735454fe.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/{page-51a8aeece444d388.js.map → page-141d5d3f735454fe.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js → page-fb1bb3ea6f7cae47.js} +1 -1
- package/dist/.next/static/chunks/app/(application)/variables/usage/[variable_id]/{page-8f5cfc9565fd919a.js.map → page-fb1bb3ea6f7cae47.js.map} +1 -1
- package/dist/.next/static/chunks/app/(application)/workflows/{page-e38f9456120dab69.js → page-2b839fdbc55c297b.js} +2 -2
- package/dist/.next/static/chunks/app/(application)/workflows/page-2b839fdbc55c297b.js.map +1 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js +2 -0
- package/dist/.next/static/chunks/ba12c10f-85ed008ce7746dbe.js.map +1 -0
- package/dist/.next/static/css/0f539b50cca35462.css +4 -0
- package/dist/.next/static/css/0f539b50cca35462.css.map +1 -0
- package/dist/.next/static/css/e3f2a16ab7676b05.css.map +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js +0 -2
- package/dist/.next/static/chunks/1685-939396dad2f8f1e0.js.map +0 -1
- package/dist/.next/static/chunks/3171-6996819b8863d41f.js +0 -2
- package/dist/.next/static/chunks/3171-6996819b8863d41f.js.map +0 -1
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js +0 -2
- package/dist/.next/static/chunks/3750-f45c59ef1cc79417.js.map +0 -1
- package/dist/.next/static/chunks/3832-417a5eeee712a793.js.map +0 -1
- package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js +0 -2
- package/dist/.next/static/chunks/4419-b9be79d8cd46a97d.js.map +0 -1
- package/dist/.next/static/chunks/5110-098aa924c3108fa4.js +0 -2
- package/dist/.next/static/chunks/5110-098aa924c3108fa4.js.map +0 -1
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js +0 -2
- package/dist/.next/static/chunks/572-2940a399da1e3a3b.js.map +0 -1
- package/dist/.next/static/chunks/5825-efd4db1da512bd7f.js.map +0 -1
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js +0 -2
- package/dist/.next/static/chunks/6373-601400fab8a3bb55.js.map +0 -1
- package/dist/.next/static/chunks/8293-0e69d89d2dac7111.js.map +0 -1
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js +0 -2
- package/dist/.next/static/chunks/9105-dfbce1bad8e3e8dd.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js +0 -2
- package/dist/.next/static/chunks/app/(application)/chat/[agent]/[session]/page-7edb1c7c850f982c.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/layout-2d47be0ee80dd89d.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js +0 -2
- package/dist/.next/static/chunks/app/(application)/data/[[...query]]/page-8d2b3995cacfd832.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/[id]/page-a7728cf9b0524489.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js +0 -2
- package/dist/.next/static/chunks/app/(application)/evals/cases/page-827f50c6d1f150d0.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/evals/page-8b38d8d29f275704.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/explorer/page-1d676c9dfe3ed58b.js +0 -2
- package/dist/.next/static/chunks/app/(application)/explorer/page-1d676c9dfe3ed58b.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/token/page-3f74f711f3d04fce.js.map +0 -1
- package/dist/.next/static/chunks/app/(application)/workflows/page-e38f9456120dab69.js.map +0 -1
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js +0 -2
- package/dist/.next/static/chunks/ba12c10f-aaafcb074f608624.js.map +0 -1
- package/dist/.next/static/css/6f8c5212af8ef284.css +0 -4
- package/dist/.next/static/css/6f8c5212af8ef284.css.map +0 -1
- /package/dist/.next/static/{ls-syPkq9-MWp-VWWDEZJ → exslB-IPXi_veOKFA4L1Z}/_buildManifest.js +0 -0
- /package/dist/.next/static/{ls-syPkq9-MWp-VWWDEZJ → exslB-IPXi_veOKFA4L1Z}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[546],{70468:function(){},69585:function(e,r,t){Promise.resolve().then(t.bind(t,63950))},63950:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return w}});var s=t(57437),n=t(2265),a=t(15863),l=t(99397),i=t(54001),o=t(78867),d=t(18930),c=t(62869),u=t(95186),x=t(27107),f=t(66070),m=t(73578),h=t(26110),v=t(65613),g=t(35974),p=t(77992),j=t(84426),y=t(7211),b=t(12199),N=t(27689),k=t(27426);function w(){var e,r,t,w;let[P,A]=(0,n.useState)(""),[C,I]=(0,n.useState)(""),[Z,D]=(0,n.useState)(!1),[S,K]=(0,n.useState)(null),[R,_]=(0,n.useState)(null),{loading:z,error:G,data:M,refetch:O,previousData:U}=(0,y.aM)(N.fo,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:10,filters:[{type:{eq:"api"}}]},pollInterval:3e4});console.log("data",M);let E=async()=>{var e,r,t;if(!P.trim()){(0,p.Am)({title:"Error",description:"Please enter a name for your API key",variant:"destructive"});return}D(!0);let s="sk_".concat(Math.random().toString(36).substring(2,15),"_").concat(Math.random().toString(36).substring(2,15)),n="/".concat(P.toLowerCase().trim().replaceAll(" ","_")),a=await k.ZP.hash(s,12),l=await Y({variables:{firstname:"".concat(P),type:"api",apikey:"".concat(a).concat(n),email:"".concat(a,"@exulu-api-user.com"),role:C||void 0}});console.log("response",l),K({id:"".concat(null===(t=l.data)||void 0===t?void 0:null===(r=t.usersCreateOne)||void 0===r?void 0:null===(e=r.item)||void 0===e?void 0:e.id),name:P,key:"".concat(s).concat(n),createdAt:new Date}),A(""),I(""),D(!1)},[F,T]=(0,b.D)(N.eY,{refetchQueries:[N.fo,"GetUsers"]}),[Y,W]=(0,b.D)(N.ve,{refetchQueries:[N.fo,"GetUsers"]}),[Q,V]=(0,b.D)(N.Pe,{refetchQueries:[N.fo,"GetUsers"]}),q=e=>{navigator.clipboard.writeText(e),(0,p.Am)({title:"Copied!",description:"API key copied to clipboard"})},L=async e=>{await F({variables:{id:e}}),_(null),(0,p.Am)({title:"Deleted",description:"API key has been deleted"})},X=async(e,r)=>{try{await Q({variables:{id:e,role:r||null}}),(0,p.Am)({title:"Updated",description:"API key role has been updated"})}catch(e){(0,p.Am)({title:"Error",description:"Failed to update API key role",variant:"destructive"})}};return(0,s.jsxs)("div",{className:"container mx-auto py-6 space-y-8 max-w-5xl",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"API Keys"}),(0,s.jsx)("p",{className:"text-muted-foreground",children:"Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account."})]}),(0,s.jsxs)(f.Zb,{children:[(0,s.jsxs)(f.Ol,{children:[(0,s.jsx)(f.ll,{children:"Create API Key"}),(0,s.jsx)(f.SZ,{children:"Generate a new API key for your applications. API keys provide full access to your account."})]}),(0,s.jsx)(f.aY,{children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row",children:[(0,s.jsx)(u.I,{placeholder:"API Key Name (e.g. Production, Development)",value:P,onChange:e=>A(e.target.value),className:"flex-1"}),(0,s.jsx)("div",{className:"sm:w-64",children:(0,s.jsx)(j.u,{value:C,onChange:I,placeholder:"Select role"})})]}),(0,s.jsx)(c.z,{onClick:E,disabled:Z||!P.trim(),className:"whitespace-nowrap self-start",children:Z?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Generating..."]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l.Z,{className:"mr-2 h-4 w-4"}),"Generate API Key"]})})]})})]}),S&&(0,s.jsxs)(v.bZ,{className:"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900",children:[(0,s.jsx)(i.Z,{className:"h-4 w-4 text-green-600 dark:text-green-400"}),(0,s.jsx)(v.Cd,{className:"text-green-600 dark:text-green-400",children:"New API Key Generated"}),(0,s.jsxs)(v.X,{className:"mt-4",children:[(0,s.jsxs)("div",{className:"mb-2 text-sm text-muted-foreground",children:[(0,s.jsx)("strong",{children:"Important:"})," This key will only be displayed once. Please copy it now and store it securely."]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[(0,s.jsx)("code",{className:"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]",children:S.key}),(0,s.jsx)(c.z,{variant:"outline",size:"icon",onClick:()=>q(S.key),className:"h-8 w-8 flex-shrink-0",children:(0,s.jsx)(o.Z,{className:"h-4 w-4"})})]}),(0,s.jsx)(c.z,{variant:"link",className:"mt-2 h-auto p-0 text-green-600 dark:text-green-400",onClick:()=>K(null),children:"Dismiss"})]})]}),(0,s.jsxs)(f.Zb,{children:[(0,s.jsxs)(f.Ol,{children:[(0,s.jsx)(f.ll,{children:"Your API Keys"}),(0,s.jsx)(f.SZ,{children:"Manage your existing API keys. For security, API keys are never displayed in full after creation."})]}),(0,s.jsx)(f.aY,{children:(null==M?void 0:null===(r=M.usersPagination)||void 0===r?void 0:null===(e=r.items)||void 0===e?void 0:e.length)===0?(0,s.jsx)("div",{className:"text-center py-6 text-muted-foreground",children:"No API keys found. Generate your first key above."}):(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)(m.iA,{children:[(0,s.jsx)(m.xD,{children:(0,s.jsxs)(m.SC,{children:[(0,s.jsx)(m.ss,{children:"Name"}),(0,s.jsx)(m.ss,{children:"Key"}),(0,s.jsx)(m.ss,{children:"Role"}),(0,s.jsx)(m.ss,{children:"Created"}),(0,s.jsx)(m.ss,{children:"Last Used"}),(0,s.jsx)(m.ss,{className:"text-right",children:"Actions"})]})}),(0,s.jsx)(m.RM,{children:null==M?void 0:null===(w=M.usersPagination)||void 0===w?void 0:null===(t=w.items)||void 0===t?void 0:t.map(e=>(0,s.jsxs)(m.SC,{children:[(0,s.jsx)(m.pj,{className:"font-medium",children:e.name||e.firstname}),(0,s.jsx)(m.pj,{children:(0,s.jsx)("div",{className:"flex items-center gap-2",children:(0,s.jsx)("code",{className:"bg-muted px-1 py-0.5 rounded text-xs",children:"****************"})})}),(0,s.jsx)(m.pj,{children:(0,s.jsx)("div",{className:"w-48",children:(0,s.jsx)(j.u,{value:e.role,onChange:r=>X(e.id,r),placeholder:"No role assigned"})})}),(0,s.jsx)(m.pj,{children:(0,x.WU)(new Date(e.createdAt),"PP hh:mm")}),(0,s.jsx)(m.pj,{children:e.last_used?(0,x.WU)(new Date(e.last_used),"PP hh:mm"):(0,s.jsx)(g.C,{variant:"outline",className:"text-xs",children:"Never"})}),(0,s.jsx)(m.pj,{className:"text-right",children:(0,s.jsxs)(h.Vq,{open:R===e.id,onOpenChange:r=>{r||_(null),r&&_(e.id)},children:[(0,s.jsx)(h.hg,{asChild:!0,children:(0,s.jsx)(c.z,{variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950",children:(0,s.jsx)(d.Z,{className:"h-4 w-4"})})}),(0,s.jsxs)(h.cZ,{children:[(0,s.jsxs)(h.fK,{children:[(0,s.jsx)(h.$N,{children:"Delete API Key"}),(0,s.jsxs)(h.Be,{children:['Are you sure you want to delete the API key "',e.name||e.firstname,'"? This action cannot be undone.']})]}),(0,s.jsxs)(h.cN,{children:[(0,s.jsx)(c.z,{variant:"outline",onClick:()=>_(null),children:"Cancel"}),(0,s.jsx)(c.z,{variant:"destructive",onClick:()=>L(e.id),children:"Delete API Key"})]})]})]})})]},e.id))})]})})}),(0,s.jsx)(f.eW,{className:"text-xs text-muted-foreground border-t pt-4",children:"API keys grant full access to your account. Keep them secure and rotate them regularly."})]})]})}},65613:function(e,r,t){"use strict";t.d(r,{Cd:function(){return d},X:function(){return c},bZ:function(){return o}});var s=t(57437),n=t(90535),a=t(2265),l=t(94508);let i=(0,n.j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),o=a.forwardRef((e,r)=>{let{className:t,variant:n,...a}=e;return(0,s.jsx)("div",{ref:r,role:"alert",className:(0,l.cn)(i({variant:n}),t),...a})});o.displayName="Alert";let d=a.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("h5",{ref:r,className:(0,l.cn)("mb-1 font-medium leading-none tracking-tight",t),...n})});d.displayName="AlertTitle";let c=a.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,l.cn)("text-sm [&_p]:leading-relaxed",t),...n})});c.displayName="AlertDescription"},35974:function(e,r,t){"use strict";t.d(r,{C:function(){return i}});var s=t(57437),n=t(90535);t(2265);var a=t(94508);let l=(0,n.j)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i(e){let{className:r,variant:t,...n}=e;return(0,s.jsx)("div",{className:(0,a.cn)(l({variant:t}),r),...n})}},66070:function(e,r,t){"use strict";t.d(r,{Ol:function(){return i},SZ:function(){return d},Zb:function(){return l},aY:function(){return c},eW:function(){return u},ll:function(){return o}});var s=t(57437),n=t(2265),a=t(94508);let l=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...n})});l.displayName="Card";let i=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",t),...n})});i.displayName="CardHeader";let o=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("h3",{ref:r,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",t),...n})});o.displayName="CardTitle";let d=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("p",{ref:r,className:(0,a.cn)("text-sm text-muted-foreground",t),...n})});d.displayName="CardDescription";let c=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("p-6 pt-0",t),...n})});c.displayName="CardContent";let u=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex items-center p-6 pt-0",t),...n})});u.displayName="CardFooter"},95186:function(e,r,t){"use strict";t.d(r,{I:function(){return l}});var s=t(57437),n=t(2265),a=t(94508);let l=n.forwardRef((e,r)=>{let{className:t,type:n,...l}=e;return(0,s.jsx)("input",{type:n,className:(0,a.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:r,...l})});l.displayName="Input"}},function(e){e.O(0,[9851,7629,7093,6148,847,1942,7823,5799,4567,3825,3171,7107,5825,6373,4386,2971,2117,1744],function(){return e(e.s=69585)}),_N_E=e.O()}]);
|
|
2
|
-
//# sourceMappingURL=page-
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[546],{70468:function(){},69585:function(e,r,t){Promise.resolve().then(t.bind(t,63950))},63950:function(e,r,t){"use strict";t.r(r),t.d(r,{default:function(){return w}});var s=t(57437),n=t(2265),a=t(15863),l=t(99397),i=t(54001),o=t(78867),d=t(18930),c=t(62869),u=t(95186),x=t(27107),f=t(66070),m=t(73578),h=t(26110),v=t(65613),g=t(35974),p=t(77992),j=t(84426),y=t(7211),b=t(12199),N=t(27689),k=t(27426);function w(){var e,r,t,w;let[P,A]=(0,n.useState)(""),[C,I]=(0,n.useState)(""),[Z,D]=(0,n.useState)(!1),[S,K]=(0,n.useState)(null),[R,_]=(0,n.useState)(null),{loading:z,error:G,data:M,refetch:O,previousData:U}=(0,y.aM)(N.fo,{fetchPolicy:"cache-first",nextFetchPolicy:"network-only",variables:{page:1,limit:10,filters:[{type:{eq:"api"}}]},pollInterval:3e4});console.log("data",M);let E=async()=>{var e,r,t;if(!P.trim()){(0,p.Am)({title:"Error",description:"Please enter a name for your API key",variant:"destructive"});return}D(!0);let s="sk_".concat(Math.random().toString(36).substring(2,15),"_").concat(Math.random().toString(36).substring(2,15)),n="/".concat(P.toLowerCase().trim().replaceAll(" ","_")),a=await k.ZP.hash(s,12),l=await Y({variables:{firstname:"".concat(P),type:"api",apikey:"".concat(a).concat(n),email:"".concat(a,"@exulu-api-user.com"),role:C||void 0}});console.log("response",l),K({id:"".concat(null===(t=l.data)||void 0===t?void 0:null===(r=t.usersCreateOne)||void 0===r?void 0:null===(e=r.item)||void 0===e?void 0:e.id),name:P,key:"".concat(s).concat(n),createdAt:new Date}),A(""),I(""),D(!1)},[F,T]=(0,b.D)(N.eY,{refetchQueries:[N.fo,"GetUsers"]}),[Y,W]=(0,b.D)(N.ve,{refetchQueries:[N.fo,"GetUsers"]}),[Q,V]=(0,b.D)(N.Pe,{refetchQueries:[N.fo,"GetUsers"]}),q=e=>{navigator.clipboard.writeText(e),(0,p.Am)({title:"Copied!",description:"API key copied to clipboard"})},L=async e=>{await F({variables:{id:e}}),_(null),(0,p.Am)({title:"Deleted",description:"API key has been deleted"})},X=async(e,r)=>{try{await Q({variables:{id:e,role:r||null}}),(0,p.Am)({title:"Updated",description:"API key role has been updated"})}catch(e){(0,p.Am)({title:"Error",description:"Failed to update API key role",variant:"destructive"})}};return(0,s.jsxs)("div",{className:"container mx-auto py-6 space-y-8 max-w-5xl",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)("h1",{className:"text-3xl font-bold tracking-tight",children:"API Keys"}),(0,s.jsx)("p",{className:"text-muted-foreground",children:"Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account."})]}),(0,s.jsxs)(f.Zb,{children:[(0,s.jsxs)(f.Ol,{children:[(0,s.jsx)(f.ll,{children:"Create API Key"}),(0,s.jsx)(f.SZ,{children:"Generate a new API key for your applications. API keys provide full access to your account."})]}),(0,s.jsx)(f.aY,{children:(0,s.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,s.jsxs)("div",{className:"flex flex-col gap-4 sm:flex-row",children:[(0,s.jsx)(u.I,{placeholder:"API Key Name (e.g. Production, Development)",value:P,onChange:e=>A(e.target.value),className:"flex-1"}),(0,s.jsx)("div",{className:"sm:w-64",children:(0,s.jsx)(j.u,{value:C,onChange:I,placeholder:"Select role"})})]}),(0,s.jsx)(c.z,{onClick:E,disabled:Z||!P.trim(),className:"whitespace-nowrap self-start",children:Z?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(a.Z,{className:"mr-2 h-4 w-4 animate-spin"}),"Generating..."]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(l.Z,{className:"mr-2 h-4 w-4"}),"Generate API Key"]})})]})})]}),S&&(0,s.jsxs)(v.bZ,{className:"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900",children:[(0,s.jsx)(i.Z,{className:"h-4 w-4 text-green-600 dark:text-green-400"}),(0,s.jsx)(v.Cd,{className:"text-green-600 dark:text-green-400",children:"New API Key Generated"}),(0,s.jsxs)(v.X,{className:"mt-4",children:[(0,s.jsxs)("div",{className:"mb-2 text-sm text-muted-foreground",children:[(0,s.jsx)("strong",{children:"Important:"})," This key will only be displayed once. Please copy it now and store it securely."]}),(0,s.jsxs)("div",{className:"flex items-center gap-2 mt-2",children:[(0,s.jsx)("code",{className:"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]",children:S.key}),(0,s.jsx)(c.z,{variant:"outline",size:"icon",onClick:()=>q(S.key),className:"h-8 w-8 flex-shrink-0",children:(0,s.jsx)(o.Z,{className:"h-4 w-4"})})]}),(0,s.jsx)(c.z,{variant:"link",className:"mt-2 h-auto p-0 text-green-600 dark:text-green-400",onClick:()=>K(null),children:"Dismiss"})]})]}),(0,s.jsxs)(f.Zb,{children:[(0,s.jsxs)(f.Ol,{children:[(0,s.jsx)(f.ll,{children:"Your API Keys"}),(0,s.jsx)(f.SZ,{children:"Manage your existing API keys. For security, API keys are never displayed in full after creation."})]}),(0,s.jsx)(f.aY,{children:(null==M?void 0:null===(r=M.usersPagination)||void 0===r?void 0:null===(e=r.items)||void 0===e?void 0:e.length)===0?(0,s.jsx)("div",{className:"text-center py-6 text-muted-foreground",children:"No API keys found. Generate your first key above."}):(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)(m.iA,{children:[(0,s.jsx)(m.xD,{children:(0,s.jsxs)(m.SC,{children:[(0,s.jsx)(m.ss,{children:"Name"}),(0,s.jsx)(m.ss,{children:"Key"}),(0,s.jsx)(m.ss,{children:"Role"}),(0,s.jsx)(m.ss,{children:"Created"}),(0,s.jsx)(m.ss,{children:"Last Used"}),(0,s.jsx)(m.ss,{className:"text-right",children:"Actions"})]})}),(0,s.jsx)(m.RM,{children:null==M?void 0:null===(w=M.usersPagination)||void 0===w?void 0:null===(t=w.items)||void 0===t?void 0:t.map(e=>(0,s.jsxs)(m.SC,{children:[(0,s.jsx)(m.pj,{className:"font-medium",children:e.name||e.firstname}),(0,s.jsx)(m.pj,{children:(0,s.jsx)("div",{className:"flex items-center gap-2",children:(0,s.jsx)("code",{className:"bg-muted px-1 py-0.5 rounded text-xs",children:"****************"})})}),(0,s.jsx)(m.pj,{children:(0,s.jsx)("div",{className:"w-48",children:(0,s.jsx)(j.u,{value:e.role,onChange:r=>X(e.id,r),placeholder:"No role assigned"})})}),(0,s.jsx)(m.pj,{children:(0,x.WU)(new Date(e.createdAt),"PP hh:mm")}),(0,s.jsx)(m.pj,{children:e.last_used?(0,x.WU)(new Date(e.last_used),"PP hh:mm"):(0,s.jsx)(g.C,{variant:"outline",className:"text-xs",children:"Never"})}),(0,s.jsx)(m.pj,{className:"text-right",children:(0,s.jsxs)(h.Vq,{open:R===e.id,onOpenChange:r=>{r||_(null),r&&_(e.id)},children:[(0,s.jsx)(h.hg,{asChild:!0,children:(0,s.jsx)(c.z,{variant:"ghost",size:"icon",className:"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950",children:(0,s.jsx)(d.Z,{className:"h-4 w-4"})})}),(0,s.jsxs)(h.cZ,{children:[(0,s.jsxs)(h.fK,{children:[(0,s.jsx)(h.$N,{children:"Delete API Key"}),(0,s.jsxs)(h.Be,{children:['Are you sure you want to delete the API key "',e.name||e.firstname,'"? This action cannot be undone.']})]}),(0,s.jsxs)(h.cN,{children:[(0,s.jsx)(c.z,{variant:"outline",onClick:()=>_(null),children:"Cancel"}),(0,s.jsx)(c.z,{variant:"destructive",onClick:()=>L(e.id),children:"Delete API Key"})]})]})]})})]},e.id))})]})})}),(0,s.jsx)(f.eW,{className:"text-xs text-muted-foreground border-t pt-4",children:"API keys grant full access to your account. Keep them secure and rotate them regularly."})]})]})}},65613:function(e,r,t){"use strict";t.d(r,{Cd:function(){return d},X:function(){return c},bZ:function(){return o}});var s=t(57437),n=t(90535),a=t(2265),l=t(94508);let i=(0,n.j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),o=a.forwardRef((e,r)=>{let{className:t,variant:n,...a}=e;return(0,s.jsx)("div",{ref:r,role:"alert",className:(0,l.cn)(i({variant:n}),t),...a})});o.displayName="Alert";let d=a.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("h5",{ref:r,className:(0,l.cn)("mb-1 font-medium leading-none tracking-tight",t),...n})});d.displayName="AlertTitle";let c=a.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,l.cn)("text-sm [&_p]:leading-relaxed",t),...n})});c.displayName="AlertDescription"},35974:function(e,r,t){"use strict";t.d(r,{C:function(){return i}});var s=t(57437),n=t(90535);t(2265);var a=t(94508);let l=(0,n.j)("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i(e){let{className:r,variant:t,...n}=e;return(0,s.jsx)("div",{className:(0,a.cn)(l({variant:t}),r),...n})}},66070:function(e,r,t){"use strict";t.d(r,{Ol:function(){return i},SZ:function(){return d},Zb:function(){return l},aY:function(){return c},eW:function(){return u},ll:function(){return o}});var s=t(57437),n=t(2265),a=t(94508);let l=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("rounded-lg border bg-card text-card-foreground shadow-sm",t),...n})});l.displayName="Card";let i=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex flex-col space-y-1.5 p-6",t),...n})});i.displayName="CardHeader";let o=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("h3",{ref:r,className:(0,a.cn)("text-2xl font-semibold leading-none tracking-tight",t),...n})});o.displayName="CardTitle";let d=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("p",{ref:r,className:(0,a.cn)("text-sm text-muted-foreground",t),...n})});d.displayName="CardDescription";let c=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("p-6 pt-0",t),...n})});c.displayName="CardContent";let u=n.forwardRef((e,r)=>{let{className:t,...n}=e;return(0,s.jsx)("div",{ref:r,className:(0,a.cn)("flex items-center p-6 pt-0",t),...n})});u.displayName="CardFooter"},95186:function(e,r,t){"use strict";t.d(r,{I:function(){return l}});var s=t(57437),n=t(2265),a=t(94508);let l=n.forwardRef((e,r)=>{let{className:t,type:n,...l}=e;return(0,s.jsx)("input",{type:n,className:(0,a.cn)("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",t),ref:r,...l})});l.displayName="Input"}},function(e){e.O(0,[9851,7629,7093,6148,847,1942,7823,5799,4567,3825,9877,7107,4760,6373,4386,2971,2117,1744],function(){return e(e.s=69585)}),_N_E=e.O()}]);
|
|
2
|
+
//# sourceMappingURL=page-6c0cd9ef20cd1461.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"static/chunks/app/(application)/keys/page-afe59c91cc347208.js","mappings":"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","sources":["webpack://_N_E/ignored|/home/runner/work/exulu-frontend/exulu-frontend/node_modules/bcryptjs|crypto","webpack://_N_E/?ec17","webpack://_N_E/./app/(application)/keys/page.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/badge.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/input.tsx"],"sourcesContent":["/* (ignored) */","import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/keys/page.tsx\");\n","\"use client\"\nimport { useState } from \"react\"\nimport { Copy, Key, Loader2, Plus, Trash2 } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { format } from \"date-fns\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/components/ui/use-toast\"\nimport { RoleSelector } from \"@/components/ui/role-selector\"\nimport {useMutation, useQuery} from \"@apollo/client\";\nimport {CREATE_API_USER, GET_USERS, REMOVE_USER_BY_ID, UPDATE_USER_BY_ID} from \"@/queries/queries\";\nimport bcrypt from \"bcryptjs\";\nconst SALT_ROUNDS = 12;\n// we dont decrypt, as we only show the key once to the user\n\n// Type for API key\ninterface ApiKey {\n id: string\n name: string\n key: string\n createdAt: Date\n last_used?: Date\n}\n\nexport default function ApiKeyManagement() {\n\n const [newKeyName, setNewKeyName] = useState(\"\")\n const [selectedRole, setSelectedRole] = useState<string>(\"\")\n const [isGenerating, setIsGenerating] = useState(false)\n const [newlyGeneratedKey, setNewlyGeneratedKey] = useState<ApiKey | null>(null)\n const [deleteKeyId, setDeleteKeyId] = useState<string | null>(null)\n\n const { loading, error, data, refetch, previousData } = useQuery(GET_USERS, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 10,\n filters: [{\n type: { eq: \"api\"}\n }],\n },\n pollInterval: 30000, // polls every 30 seconds for updates on users\n });\n\n console.log(\"data\", data)\n\n // Generate new API key\n const generateApiKey = async () => {\n if (!newKeyName.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a name for your API key\",\n variant: \"destructive\",\n })\n return\n }\n\n setIsGenerating(true)\n\n const plainKey = `sk_${Math.random().toString(36).substring(2, 15)}_${Math.random().toString(36).substring(2, 15)}`;\n const postFix = `/${newKeyName.toLowerCase().trim().replaceAll(\" \", \"_\")}`\n const encryptedKey = await bcrypt.hash(plainKey, SALT_ROUNDS);\n const response = await createApiUser({\n variables: {\n firstname: `${newKeyName}`,\n type: \"api\",\n apikey: `${encryptedKey}${postFix}`,\n email: `${encryptedKey}@exulu-api-user.com`,\n role: selectedRole || undefined\n }\n })\n\n console.log(\"response\", response)\n setNewlyGeneratedKey({\n id: `${response.data?.usersCreateOne?.item?.id}`,\n name: newKeyName,\n key: `${plainKey}${postFix}`,\n createdAt: new Date()\n })\n setNewKeyName(\"\")\n setSelectedRole(\"\")\n setIsGenerating(false)\n }\n\n const [removeApiUser, removeApiUserResult] = useMutation(REMOVE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS,\n \"GetUsers\",\n ],\n });\n\n const [ createApiUser, createApiUserResult] = useMutation(CREATE_API_USER, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n const [ updateUser, updateUserResult] = useMutation(UPDATE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n // Copy API key to clipboard\n const copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text)\n toast({\n title: \"Copied!\",\n description: \"API key copied to clipboard\",\n })\n }\n\n // Delete API key\n const deleteApiKey = async (id: string) => {\n await removeApiUser({\n variables: {\n id\n }\n })\n setDeleteKeyId(null)\n toast({\n title: \"Deleted\",\n description: \"API key has been deleted\",\n })\n }\n\n // Update API key role\n const updateApiKeyRole = async (userId: string, roleId: string) => {\n try {\n await updateUser({\n variables: {\n id: userId,\n role: roleId || null\n }\n })\n toast({\n title: \"Updated\",\n description: \"API key role has been updated\",\n })\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to update API key role\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <div className=\"container mx-auto py-6 space-y-8 max-w-5xl\">\n <div className=\"flex flex-col gap-2\">\n <h1 className=\"text-3xl font-bold tracking-tight\">API Keys</h1>\n <p className=\"text-muted-foreground\">\n Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account.\n </p>\n </div>\n\n {/* Create new API key */}\n <Card>\n <CardHeader>\n <CardTitle>Create API Key</CardTitle>\n <CardDescription>\n Generate a new API key for your applications. API keys provide full access to your account.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-4 sm:flex-row\">\n <Input\n placeholder=\"API Key Name (e.g. Production, Development)\"\n value={newKeyName}\n onChange={(e) => setNewKeyName(e.target.value)}\n className=\"flex-1\"\n />\n <div className=\"sm:w-64\">\n <RoleSelector\n value={selectedRole}\n onChange={setSelectedRole}\n placeholder=\"Select role\"\n />\n </div>\n </div>\n <Button\n onClick={generateApiKey}\n disabled={isGenerating || !newKeyName.trim()}\n className=\"whitespace-nowrap self-start\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n <Plus className=\"mr-2 h-4 w-4\" />\n Generate API Key\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* Newly generated key alert */}\n {newlyGeneratedKey && (\n <Alert className=\"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900\">\n <Key className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n <AlertTitle className=\"text-green-600 dark:text-green-400\">New API Key Generated</AlertTitle>\n <AlertDescription className=\"mt-4\">\n <div className=\"mb-2 text-sm text-muted-foreground\">\n <strong>Important:</strong> This key will only be displayed once. Please copy it now and store it\n securely.\n </div>\n <div className=\"flex items-center gap-2 mt-2\">\n <code className=\"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]\">\n {newlyGeneratedKey.key}\n </code>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => copyToClipboard(newlyGeneratedKey.key)}\n className=\"h-8 w-8 flex-shrink-0\"\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n <Button\n variant=\"link\"\n className=\"mt-2 h-auto p-0 text-green-600 dark:text-green-400\"\n onClick={() => setNewlyGeneratedKey(null)}\n >\n Dismiss\n </Button>\n </AlertDescription>\n </Alert>\n )}\n\n {/* API keys list */}\n <Card>\n <CardHeader>\n <CardTitle>Your API Keys</CardTitle>\n <CardDescription>\n Manage your existing API keys. For security, API keys are never displayed in full after creation.\n </CardDescription>\n </CardHeader>\n <CardContent>\n {data?.usersPagination?.items?.length === 0 ? (\n <div className=\"text-center py-6 text-muted-foreground\">\n No API keys found. Generate your first key above.\n </div>\n ) : (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Key</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Created</TableHead>\n <TableHead>Last Used</TableHead>\n <TableHead className=\"text-right\">Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {data?.usersPagination?.items?.map((user: any) => (\n <TableRow key={user.id}>\n <TableCell className=\"font-medium\">{user.name || user.firstname}</TableCell>\n <TableCell>\n <div className=\"flex items-center gap-2\">\n <code className=\"bg-muted px-1 py-0.5 rounded text-xs\">****************</code>\n </div>\n </TableCell>\n <TableCell>\n <div className=\"w-48\">\n <RoleSelector\n value={user.role}\n onChange={(roleId) => updateApiKeyRole(user.id, roleId)}\n placeholder=\"No role assigned\"\n />\n </div>\n </TableCell>\n <TableCell>{format(new Date(user.createdAt), \"PP hh:mm\")}</TableCell>\n <TableCell>\n {user.last_used ? (format(new Date(user.last_used), \"PP hh:mm\")) : (\n <Badge variant=\"outline\" className=\"text-xs\">\n Never\n </Badge>\n )}\n </TableCell>\n <TableCell className=\"text-right\">\n <Dialog\n open={deleteKeyId === user.id}\n onOpenChange={(open) => {\n if (!open) setDeleteKeyId(null)\n if (open) setDeleteKeyId(user.id)\n }}>\n <DialogTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete API Key</DialogTitle>\n <DialogDescription>\n Are you sure you want to delete the API key \"{user.name || user.firstname}\"? This action cannot be\n undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setDeleteKeyId(null)}>\n Cancel\n </Button>\n <Button variant=\"destructive\" onClick={() => deleteApiKey(user.id)}>\n Delete API Key\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n </CardContent>\n <CardFooter className=\"text-xs text-muted-foreground border-t pt-4\">\n API keys grant full access to your account. Keep them secure and rotate them regularly.\n </CardFooter>\n </Card>\n </div>\n )\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n info: \"border-info/50 text-info dark:border-info [&>svg]:text-info\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ApiKeyManagement","data","newKeyName","setNewKeyName","useState","selectedRole","setSelectedRole","isGenerating","setIsGenerating","newlyGeneratedKey","setNewlyGeneratedKey","deleteKeyId","setDeleteKeyId","loading","error","refetch","previousData","useQuery","GET_USERS","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","type","eq","pollInterval","console","log","generateApiKey","response","trim","toast","title","description","variant","plainKey","Math","random","toString","substring","concat","postFix","toLowerCase","replaceAll","encryptedKey","bcrypt","createApiUser","firstname","apikey","email","role","undefined","id","usersCreateOne","item","name","key","createdAt","Date","removeApiUser","removeApiUserResult","useMutation","REMOVE_USER_BY_ID","refetchQueries","createApiUserResult","CREATE_API_USER","updateUser","updateUserResult","UPDATE_USER_BY_ID","copyToClipboard","navigator","clipboard","writeText","text","deleteApiKey","updateApiKeyRole","userId","roleId","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","div","className","jsx","h1","p","Card","CardHeader","CardTitle","CardDescription","CardContent","Input","placeholder","value","onChange","e","target","RoleSelector","Button","onClick","disabled","Fragment","Loader2","Plus","Alert","Key","AlertTitle","AlertDescription","strong","code","size","Copy","usersPagination","items","length","Table","TableHeader","TableRow","TableHead","TableBody","map","TableCell","user","format","last_used","Badge","Dialog","open","onOpenChange","DialogTrigger","asChild","Trash2","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","CardFooter","alertVariants","cva","variants","default","destructive","info","defaultVariants","React","param","ref","props","cn","displayName","h5","badgeVariants","secondary","outline","h3","input"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"static/chunks/app/(application)/keys/page-6c0cd9ef20cd1461.js","mappings":"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","sources":["webpack://_N_E/ignored|/home/runner/work/exulu-frontend/exulu-frontend/node_modules/bcryptjs|crypto","webpack://_N_E/?ec17","webpack://_N_E/./app/(application)/keys/page.tsx","webpack://_N_E/./components/ui/alert.tsx","webpack://_N_E/./components/ui/badge.tsx","webpack://_N_E/./components/ui/card.tsx","webpack://_N_E/./components/ui/input.tsx"],"sourcesContent":["/* (ignored) */","import(/* webpackMode: \"eager\" */ \"/home/runner/work/exulu-frontend/exulu-frontend/app/(application)/keys/page.tsx\");\n","\"use client\"\nimport { useState } from \"react\"\nimport { Copy, Key, Loader2, Plus, Trash2 } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\nimport { format } from \"date-fns\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"@/components/ui/table\"\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { toast } from \"@/components/ui/use-toast\"\nimport { RoleSelector } from \"@/components/ui/role-selector\"\nimport {useMutation, useQuery} from \"@apollo/client\";\nimport {CREATE_API_USER, GET_USERS, REMOVE_USER_BY_ID, UPDATE_USER_BY_ID} from \"@/queries/queries\";\nimport bcrypt from \"bcryptjs\";\nconst SALT_ROUNDS = 12;\n// we dont decrypt, as we only show the key once to the user\n\n// Type for API key\ninterface ApiKey {\n id: string\n name: string\n key: string\n createdAt: Date\n last_used?: Date\n}\n\nexport default function ApiKeyManagement() {\n\n const [newKeyName, setNewKeyName] = useState(\"\")\n const [selectedRole, setSelectedRole] = useState<string>(\"\")\n const [isGenerating, setIsGenerating] = useState(false)\n const [newlyGeneratedKey, setNewlyGeneratedKey] = useState<ApiKey | null>(null)\n const [deleteKeyId, setDeleteKeyId] = useState<string | null>(null)\n\n const { loading, error, data, refetch, previousData } = useQuery(GET_USERS, {\n fetchPolicy: \"cache-first\",\n nextFetchPolicy: \"network-only\",\n variables: {\n page: 1,\n limit: 10,\n filters: [{\n type: { eq: \"api\"}\n }],\n },\n pollInterval: 30000, // polls every 30 seconds for updates on users\n });\n\n console.log(\"data\", data)\n\n // Generate new API key\n const generateApiKey = async () => {\n if (!newKeyName.trim()) {\n toast({\n title: \"Error\",\n description: \"Please enter a name for your API key\",\n variant: \"destructive\",\n })\n return\n }\n\n setIsGenerating(true)\n\n const plainKey = `sk_${Math.random().toString(36).substring(2, 15)}_${Math.random().toString(36).substring(2, 15)}`;\n const postFix = `/${newKeyName.toLowerCase().trim().replaceAll(\" \", \"_\")}`\n const encryptedKey = await bcrypt.hash(plainKey, SALT_ROUNDS);\n const response = await createApiUser({\n variables: {\n firstname: `${newKeyName}`,\n type: \"api\",\n apikey: `${encryptedKey}${postFix}`,\n email: `${encryptedKey}@exulu-api-user.com`,\n role: selectedRole || undefined\n }\n })\n\n console.log(\"response\", response)\n setNewlyGeneratedKey({\n id: `${response.data?.usersCreateOne?.item?.id}`,\n name: newKeyName,\n key: `${plainKey}${postFix}`,\n createdAt: new Date()\n })\n setNewKeyName(\"\")\n setSelectedRole(\"\")\n setIsGenerating(false)\n }\n\n const [removeApiUser, removeApiUserResult] = useMutation(REMOVE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS,\n \"GetUsers\",\n ],\n });\n\n const [ createApiUser, createApiUserResult] = useMutation(CREATE_API_USER, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n const [ updateUser, updateUserResult] = useMutation(UPDATE_USER_BY_ID, {\n refetchQueries: [\n GET_USERS, \n \"GetUsers\",\n ],\n });\n\n // Copy API key to clipboard\n const copyToClipboard = (text: string) => {\n navigator.clipboard.writeText(text)\n toast({\n title: \"Copied!\",\n description: \"API key copied to clipboard\",\n })\n }\n\n // Delete API key\n const deleteApiKey = async (id: string) => {\n await removeApiUser({\n variables: {\n id\n }\n })\n setDeleteKeyId(null)\n toast({\n title: \"Deleted\",\n description: \"API key has been deleted\",\n })\n }\n\n // Update API key role\n const updateApiKeyRole = async (userId: string, roleId: string) => {\n try {\n await updateUser({\n variables: {\n id: userId,\n role: roleId || null\n }\n })\n toast({\n title: \"Updated\",\n description: \"API key role has been updated\",\n })\n } catch (error) {\n toast({\n title: \"Error\",\n description: \"Failed to update API key role\",\n variant: \"destructive\",\n })\n }\n }\n\n return (\n <div className=\"container mx-auto py-6 space-y-8 max-w-5xl\">\n <div className=\"flex flex-col gap-2\">\n <h1 className=\"text-3xl font-bold tracking-tight\">API Keys</h1>\n <p className=\"text-muted-foreground\">\n Manage your API keys for accessing the Exulu IMP API. Keep your keys secure - they have full access to your account.\n </p>\n </div>\n\n {/* Create new API key */}\n <Card>\n <CardHeader>\n <CardTitle>Create API Key</CardTitle>\n <CardDescription>\n Generate a new API key for your applications. API keys provide full access to your account.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex flex-col gap-4 sm:flex-row\">\n <Input\n placeholder=\"API Key Name (e.g. Production, Development)\"\n value={newKeyName}\n onChange={(e) => setNewKeyName(e.target.value)}\n className=\"flex-1\"\n />\n <div className=\"sm:w-64\">\n <RoleSelector\n value={selectedRole}\n onChange={setSelectedRole}\n placeholder=\"Select role\"\n />\n </div>\n </div>\n <Button\n onClick={generateApiKey}\n disabled={isGenerating || !newKeyName.trim()}\n className=\"whitespace-nowrap self-start\"\n >\n {isGenerating ? (\n <>\n <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n Generating...\n </>\n ) : (\n <>\n <Plus className=\"mr-2 h-4 w-4\" />\n Generate API Key\n </>\n )}\n </Button>\n </div>\n </CardContent>\n </Card>\n\n {/* Newly generated key alert */}\n {newlyGeneratedKey && (\n <Alert className=\"border-green-500 bg-green-50 dark:bg-green-950 dark:border-green-900\">\n <Key className=\"h-4 w-4 text-green-600 dark:text-green-400\" />\n <AlertTitle className=\"text-green-600 dark:text-green-400\">New API Key Generated</AlertTitle>\n <AlertDescription className=\"mt-4\">\n <div className=\"mb-2 text-sm text-muted-foreground\">\n <strong>Important:</strong> This key will only be displayed once. Please copy it now and store it\n securely.\n </div>\n <div className=\"flex items-center gap-2 mt-2\">\n <code className=\"relative rounded bg-muted px-[0.5rem] py-[0.3rem] font-mono text-sm font-semibold overflow-x-auto max-w-[calc(100%-40px)]\">\n {newlyGeneratedKey.key}\n </code>\n <Button\n variant=\"outline\"\n size=\"icon\"\n onClick={() => copyToClipboard(newlyGeneratedKey.key)}\n className=\"h-8 w-8 flex-shrink-0\"\n >\n <Copy className=\"h-4 w-4\" />\n </Button>\n </div>\n <Button\n variant=\"link\"\n className=\"mt-2 h-auto p-0 text-green-600 dark:text-green-400\"\n onClick={() => setNewlyGeneratedKey(null)}\n >\n Dismiss\n </Button>\n </AlertDescription>\n </Alert>\n )}\n\n {/* API keys list */}\n <Card>\n <CardHeader>\n <CardTitle>Your API Keys</CardTitle>\n <CardDescription>\n Manage your existing API keys. For security, API keys are never displayed in full after creation.\n </CardDescription>\n </CardHeader>\n <CardContent>\n {data?.usersPagination?.items?.length === 0 ? (\n <div className=\"text-center py-6 text-muted-foreground\">\n No API keys found. Generate your first key above.\n </div>\n ) : (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>Name</TableHead>\n <TableHead>Key</TableHead>\n <TableHead>Role</TableHead>\n <TableHead>Created</TableHead>\n <TableHead>Last Used</TableHead>\n <TableHead className=\"text-right\">Actions</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {data?.usersPagination?.items?.map((user: any) => (\n <TableRow key={user.id}>\n <TableCell className=\"font-medium\">{user.name || user.firstname}</TableCell>\n <TableCell>\n <div className=\"flex items-center gap-2\">\n <code className=\"bg-muted px-1 py-0.5 rounded text-xs\">****************</code>\n </div>\n </TableCell>\n <TableCell>\n <div className=\"w-48\">\n <RoleSelector\n value={user.role}\n onChange={(roleId) => updateApiKeyRole(user.id, roleId)}\n placeholder=\"No role assigned\"\n />\n </div>\n </TableCell>\n <TableCell>{format(new Date(user.createdAt), \"PP hh:mm\")}</TableCell>\n <TableCell>\n {user.last_used ? (format(new Date(user.last_used), \"PP hh:mm\")) : (\n <Badge variant=\"outline\" className=\"text-xs\">\n Never\n </Badge>\n )}\n </TableCell>\n <TableCell className=\"text-right\">\n <Dialog\n open={deleteKeyId === user.id}\n onOpenChange={(open) => {\n if (!open) setDeleteKeyId(null)\n if (open) setDeleteKeyId(user.id)\n }}>\n <DialogTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 text-red-500 hover:text-red-600 hover:bg-red-50 dark:hover:bg-red-950\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Delete API Key</DialogTitle>\n <DialogDescription>\n Are you sure you want to delete the API key \"{user.name || user.firstname}\"? This action cannot be\n undone.\n </DialogDescription>\n </DialogHeader>\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => setDeleteKeyId(null)}>\n Cancel\n </Button>\n <Button variant=\"destructive\" onClick={() => deleteApiKey(user.id)}>\n Delete API Key\n </Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n </CardContent>\n <CardFooter className=\"text-xs text-muted-foreground border-t pt-4\">\n API keys grant full access to your account. Keep them secure and rotate them regularly.\n </CardFooter>\n </Card>\n </div>\n )\n}\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n info: \"border-info/50 text-info dark:border-info [&>svg]:text-info\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n));\nAlert.displayName = \"Alert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n );\n}\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n className,\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","ApiKeyManagement","data","newKeyName","setNewKeyName","useState","selectedRole","setSelectedRole","isGenerating","setIsGenerating","newlyGeneratedKey","setNewlyGeneratedKey","deleteKeyId","setDeleteKeyId","loading","error","refetch","previousData","useQuery","GET_USERS","fetchPolicy","nextFetchPolicy","variables","page","limit","filters","type","eq","pollInterval","console","log","generateApiKey","response","trim","toast","title","description","variant","plainKey","Math","random","toString","substring","concat","postFix","toLowerCase","replaceAll","encryptedKey","bcrypt","createApiUser","firstname","apikey","email","role","undefined","id","usersCreateOne","item","name","key","createdAt","Date","removeApiUser","removeApiUserResult","useMutation","REMOVE_USER_BY_ID","refetchQueries","createApiUserResult","CREATE_API_USER","updateUser","updateUserResult","UPDATE_USER_BY_ID","copyToClipboard","navigator","clipboard","writeText","text","deleteApiKey","updateApiKeyRole","userId","roleId","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsxs","div","className","jsx","h1","p","Card","CardHeader","CardTitle","CardDescription","CardContent","Input","placeholder","value","onChange","e","target","RoleSelector","Button","onClick","disabled","Fragment","Loader2","Plus","Alert","Key","AlertTitle","AlertDescription","strong","code","size","Copy","usersPagination","items","length","Table","TableHeader","TableRow","TableHead","TableBody","map","TableCell","user","format","last_used","Badge","Dialog","open","onOpenChange","DialogTrigger","asChild","Trash2","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter","CardFooter","alertVariants","cva","variants","default","destructive","info","defaultVariants","React","param","ref","props","cn","displayName","h5","badgeVariants","secondary","outline","h3","input"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[806],{62839:function(e,s,t){Promise.resolve().then(t.bind(t,32538))},32538:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return $}});var i=t(57437),a=t(2265),r=t(99376),n=t(12199),l=t(7211),c=t(63251),d=t(27689),o=t(62869),u=t(95186),m=t(26815),h=t(76818),x=t(66070),p=t(35974),j=t(26110),v=t(19060),f=t(39763);let g=(0,f.Z)("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]),y=(0,f.Z)("Files",[["path",{d:"M15.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z",key:"cennsq"}],["path",{d:"M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8",key:"ms809a"}],["path",{d:"M15 2v5h5",key:"qq6kwv"}]]);var N=t(53417),w=t(88906),b=t(45675),k=t(99397);let C=(0,f.Z)("PackageMinus",[["path",{d:"M16 16h6",key:"100bgy"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);var S=t(18930),Z=t(63639),_=t(73247),M=t(82222),A=t(8014),P=t(93022),E=t(77992),I=t(10492),D=t(87393),O=t(13832),z=t(27648),T=t(81103),R=t(36399);let B=(0,f.Z)("PlusSquare",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);var V=t(23518);let L=e=>{var s;let{onConfirm:t}=e,{data:r,loading:n,error:l}=(0,R.t)(),[c,d]=(0,a.useState)(void 0),[u,m]=(0,a.useState)(!1);return(0,i.jsxs)(j.Vq,{open:u,onOpenChange:e=>{m(e),d(void 0)},children:[(0,i.jsx)(j.hg,{asChild:!0,children:(0,i.jsxs)(o.z,{className:"w-full",variant:"outline",children:[(0,i.jsx)(B,{className:"h-4 w-4 mr-2"}),"Select items from knowledge sources to add to the project, or upload files."]})}),(0,i.jsxs)(j.cZ,{className:"sm:max-w-[900px]",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Item selection"}),(0,i.jsx)(j.Be,{children:"Browse through contexts and select items."})]}),!c&&(0,i.jsxs)(V.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,i.jsx)(V.sZ,{placeholder:"Type a command or search..."}),(0,i.jsxs)(V.e8,{children:[(0,i.jsx)(V.rb,{children:"No results found."}),(0,i.jsx)(V.fu,{heading:"Contexts",children:null==r?void 0:null===(s=r.contexts)||void 0===s?void 0:s.items.map(e=>(0,i.jsx)(V.di,{onSelect:()=>{d(e)},children:e.name},e.id))})]})]}),c&&(0,i.jsx)(F,{context:c,onConfirm:e=>{console.log("item",e),t([{item:e,context:c}]),m(!1)}})]})]})},F=e=>{var s,t,r,n,c;let{context:o,onConfirm:u}=e,[m,h]=(0,a.useState)(void 0),{loading:x,data:p,refetch:j,previousData:v,error:f}=(0,l.aM)((0,d.P3)(o.id,[]),{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",skip:!o.id,variables:{context:o.id,page:1,limit:10,sort:{field:"updatedAt",direction:"DESC"},filters:{archived:{ne:!0},...m?{name:{contains:"".concat(m)}}:{}}}});return(0,i.jsxs)(V.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,i.jsx)(V.sZ,{onValueChange:e=>h(e),placeholder:"Type a command or search..."}),(0,i.jsx)(V.e8,{children:(0,i.jsxs)(V.fu,{heading:"Items",children:[!v&&x&&(0,i.jsx)(V.di,{children:(0,i.jsx)(I.g,{})},"loading"),!x&&!(null==p?void 0:null===(t=p[o.id+d.Md])||void 0===t?void 0:null===(s=t.items)||void 0===s?void 0:s.length)&&(0,i.jsx)(V.rb,{children:"No items found."}),null===(c=p||v)||void 0===c?void 0:null===(n=c[o.id+d.Md])||void 0===n?void 0:null===(r=n.items)||void 0===r?void 0:r.map(e=>(0,i.jsx)(V.di,{onSelect:()=>{u(e)},children:e.name},e.id))]})})]})};var q=t(6374);function Y(e){var s,t,f,R,B,V;let{project:F}=e,[Y,X]=(0,a.useState)(!1),[W,$]=(0,a.useState)(!1),[H,K]=(0,a.useState)(!1),[G,J]=(0,a.useState)(""),[Q,ee]=(0,a.useState)("overview"),{user:es}=(0,a.useContext)(O.S),et=(0,r.useRouter)(),[ei,ea]=(0,a.useState)({deleteItems:!1,deleteSessions:!1}),[er,en]=(0,a.useState)({name:F.name||"",description:F.description||"",custom_instructions:F.custom_instructions||""}),{toast:el}=(0,E.pm)(),[ec,ed]=(0,a.useState)({rights_mode:F.rights_mode,users:null===(s=F.RBAC)||void 0===s?void 0:s.users,roles:null===(t=F.RBAC)||void 0===t?void 0:t.roles}),[eo,eu]=(0,a.useState)(F.project_items||[]),[em,{loading:eh}]=(0,n.D)(d.b2),[ex]=(0,n.D)(d.Yr),[ep,ej]=(0,a.useState)(!1),{data:ev,loading:ef,refetch:eg}=(0,l.aM)(d.GJ,{variables:{page:1,limit:50,filters:[{project:{eq:F.id}}]}}),{data:ey,loading:eN}=(0,l.aM)(d.ym,{variables:{page:1,limit:100,filters:[],sort:{field:"updatedAt",direction:"DESC"}}}),ew=(0,c.x)(),[eb,{loading:ek}]=(0,n.D)(d.fB),[eC,{loading:eS}]=(0,n.D)(d.MU),[eZ,{loading:e_}]=(0,n.D)(d.S9),eM=(null==ev?void 0:null===(f=ev.agent_sessionsPagination)||void 0===f?void 0:f.items)||[],eA=(null==ey?void 0:null===(R=ey.agentsPagination)||void 0===R?void 0:R.items)||[],eP=a.useMemo(()=>G?eA.filter(e=>e.name.toLowerCase().includes(G.toLowerCase())):eA,[eA,G]),eE=async()=>{if(!er.name.trim()){el({title:"Validation Error",description:"Project name is required.",variant:"destructive"});return}try{await em({variables:{id:F.id,input:{name:er.name.trim(),description:er.description.trim()||null,custom_instructions:er.custom_instructions.trim()||null}}}),el({title:"Success",description:"Project updated successfully!"}),X(!1)}catch(e){console.error("Error updating project:",e),el({title:"Error",description:e.message||"Failed to update project. Please try again.",variant:"destructive"})}},eI=async e=>{try{var s,t,i;let a=await eb({variables:{title:"New session with ".concat(e.name),agent:e.id,project:F.id,rights_mode:"private"}}),r=null===(i=a.data)||void 0===i?void 0:null===(t=i.agent_sessionsCreateOne)||void 0===t?void 0:null===(s=t.item)||void 0===s?void 0:s.id;r&&(el({title:"Success",description:"Session created successfully! Sessions started in a project are accessible for viewing by project members."}),K(!1),J(""),et.push("/chat/".concat(e.id,"/").concat(r)))}catch(e){console.error("Error creating session:",e),el({title:"Error",description:e.message||"Failed to create session. Please try again.",variant:"destructive"})}},eD=async()=>{try{ej(!0),ei.deleteItems&&await Promise.all(eo.map(async e=>{var s,t;let i=e.split("/")[0],a=e.split("/")[1];if(!i||!a)return;let{data:r}=await ew.mutate({mutation:(0,d.mN)(i,[]),variables:{id:a}});if(null===(s=r["".concat(i,"_itemsRemoveOneById")])||void 0===s?void 0:s.s3key)try{await q.QZ.delete(null===(t=r["".concat(i,"_itemsRemoveOneById")])||void 0===t?void 0:t.s3key)}catch(e){console.error("[EXULU] Error deleting file from s3 storage:",e)}})),await Promise.all(eM.map(async e=>{ei.deleteSessions?await eZ({variables:{id:e.id}}):await eC({variables:{id:e.id,project:null}})})),await ex({variables:{id:F.id}}),el({title:"Success",description:'Project "'.concat(F.name,'" has been deleted successfully.')}),$(!1),ej(!1),et.push("/projects")}catch(e){ej(!1),console.error("Error deleting project:",e),el({title:"Error",description:e.message||"Failed to delete project. Please try again.",variant:"destructive"})}};return(0,i.jsxs)("div",{className:"flex-1 p-6 mt-20",children:[(0,i.jsx)("div",{className:"max-w-5xl mx-auto space-y-6",children:(0,i.jsxs)("div",{className:"flex gap-6 h-full",children:[(0,i.jsxs)("div",{className:"w-80 space-y-4",children:[(0,i.jsx)(x.Zb,{children:(0,i.jsx)(x.aY,{className:"p-4",children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("h3",{className:"font-semibold text-lg",children:F.name}),(0,i.jsx)("p",{className:"text-muted-foreground text-sm leading-relaxed",children:F.description||"No description provided."})]})})}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsxs)(o.z,{variant:"overview"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("overview"),children:[(0,i.jsx)(g,{className:"h-4 w-4 mr-2"}),"Project information"]}),(0,i.jsxs)(o.z,{variant:"context"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("context"),children:[(0,i.jsx)(y,{className:"h-4 w-4 mr-2"}),"Project files"]}),(0,i.jsxs)(o.z,{variant:"sessions"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("sessions"),children:[(0,i.jsx)(N.Z,{className:"h-4 w-4 mr-2"}),"Project sessions"]}),(0,i.jsxs)(o.z,{variant:"access"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("access"),children:[(0,i.jsx)(w.Z,{className:"h-4 w-4 mr-2"}),"Access control"]}),(0,i.jsxs)(o.z,{variant:"settings"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("settings"),children:[(0,i.jsx)(g,{className:"h-4 w-4 mr-2"}),"Project settings"]})]})]}),(0,i.jsxs)("div",{className:"flex-1",children:["overview"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project Information"}),(0,i.jsx)(x.SZ,{children:"Basic information about this project"})]}),(0,i.jsxs)(x.aY,{className:"space-y-4",children:[(0,i.jsx)("div",{className:"grid gap-4",children:(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"name",children:"Project Name"}),Y?(0,i.jsx)(u.I,{id:"name",value:er.name,onChange:e=>en({...er,name:e.target.value})}):(0,i.jsx)("p",{className:"text-sm",children:F.name})]})}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"description",children:"Description"}),Y?(0,i.jsx)(h.g,{id:"description",value:er.description,onChange:e=>en({...er,description:e.target.value}),rows:3}):(0,i.jsx)("p",{className:"text-sm",children:F.description||"No description provided"})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"instructions",children:"Custom Instructions"}),Y?(0,i.jsx)(h.g,{id:"instructions",value:er.custom_instructions,onChange:e=>en({...er,custom_instructions:e.target.value}),rows:4,placeholder:"Enter custom instructions for sessions in this project..."}):(0,i.jsx)("p",{className:"text-sm",children:F.custom_instructions||"No custom instructions set"})]})]}),(0,i.jsx)(x.eW,{children:(0,i.jsx)("div",{className:"flex items-center justify-between",children:(0,i.jsx)("div",{className:"flex gap-2",children:Y?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.z,{variant:"outline",onClick:()=>{F&&en({name:F.name||"",description:F.description||"",custom_instructions:F.custom_instructions||""}),X(!1)},children:"Cancel"}),(0,i.jsxs)(o.z,{onClick:eE,children:[(0,i.jsx)("span",{children:"Save changes"}),eh&&(0,i.jsx)(I.g,{className:"mr-2"})]})]}):(0,i.jsxs)(o.z,{variant:"outline",onClick:()=>X(!0),children:[(0,i.jsx)(b.Z,{className:"h-4 w-4 mr-2"}),"Edit"]})})})})]})}),"context"===Q&&(0,i.jsx)("div",{className:"space-y-6 w-full",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project context items"}),(0,i.jsx)(x.SZ,{children:"Items that provide context for sessions in this project (max 15 items). Note that different agents may have different file types supported."})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsx)(L,{onConfirm:e=>{let s=[...eo,...e.map(e=>"".concat(e.context.id,"/").concat(e.item.id))];console.log("update",s),eu(s),em({variables:{id:F.id,input:{project_items:s}}})}}),(0,i.jsx)("div",{className:"space-y-2",children:(0,i.jsxs)("div",{className:"space-y-2",children:[(null==eo?void 0:eo.length)===0&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(y,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"No items added to the project context yet."})]}),(0,i.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-2 gap-3",children:null==eo?void 0:eo.map(e=>(0,i.jsx)(U,{gid:e,onRemove:e=>{let s=eo.filter(s=>s!==e);eu(s),em({variables:{id:F.id,input:{project_items:s}}})}},e))})]})})]})})]})}),"sessions"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project sessions"}),(0,i.jsx)(x.SZ,{children:"Sessions associated with this project"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)(o.z,{onClick:()=>{K(!0)},className:"w-full",variant:"outline",children:[(0,i.jsx)(k.Z,{className:"h-4 w-4 mr-2"}),"Start new session"]}),(0,i.jsx)("div",{className:"space-y-2",children:eM.map(e=>{let s=(0,D.I)(e,es);return(0,i.jsxs)("div",{className:"flex items-center justify-between p-3 border rounded-lg",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(N.Z,{className:"h-4 w-4"}),(0,i.jsx)("div",{children:(0,i.jsx)(z.default,{href:"/chat/".concat(e.agent,"/").concat(e.id),children:(0,i.jsx)("p",{className:"font-medium max-w-[80%] truncate",children:e.title})})})]}),(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsxs)(T.u,{children:[(0,i.jsx)(T.aJ,{asChild:!0,children:(0,i.jsx)(o.z,{disabled:!s||eS,variant:"ghost",size:"sm",onClick:()=>{eS||(eC({variables:{id:e.id,project:null}}),eg())},children:(0,i.jsx)(C,{className:"h-4 w-4"})})}),(0,i.jsx)(T._v,{children:(0,i.jsx)("p",{children:"Remove session from project."})})]}),(0,i.jsxs)(T.u,{children:[(0,i.jsx)(T.aJ,{asChild:!0,children:(0,i.jsx)(o.z,{disabled:!s||e_,variant:"ghost",size:"sm",onClick:()=>{e_||(eZ({variables:{id:e.id}}),eg())},children:(0,i.jsx)(S.Z,{className:"h-4 w-4"})})}),(0,i.jsx)(T._v,{children:(0,i.jsx)("p",{children:"Delete session completely."})})]})]})]},e.id)})}),0===eM.length&&!ef&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"No sessions found"})]}),ef&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"Loading sessions..."})]})]})})]})}),"access"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Access Control"}),(0,i.jsx)(x.SZ,{children:"Control who can access this project"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsx)(A.P,{allowedModes:["private","users","roles"],initialRightsMode:F.rights_mode||"private",initialUsers:null===(B=F.RBAC)||void 0===B?void 0:B.users,initialRoles:null===(V=F.RBAC)||void 0===V?void 0:V.roles,onChange:(e,s,t)=>{ed({rights_mode:e,users:s,roles:t})}})}),(0,i.jsx)(x.eW,{children:(0,i.jsxs)(o.z,{onClick:()=>{em({variables:{id:F.id,input:{rights_mode:ec.rights_mode,RBAC:{users:ec.users,roles:ec.roles}}}})},children:[(0,i.jsx)("span",{children:"Save access rights"}),eh&&(0,i.jsx)(I.g,{className:"ml-2"})]})})]})}),"settings"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Danger Zone"}),(0,i.jsx)(x.SZ,{children:"Permanently delete this project and all associated data"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"flex items-start gap-3 p-4 border border-destructive/20 rounded-lg bg-destructive/5",children:[(0,i.jsx)(Z.Z,{className:"h-5 w-5 text-destructive mt-0.5"}),(0,i.jsxs)("div",{className:"flex-1",children:[(0,i.jsx)("h4",{className:"font-medium text-destructive",children:"Delete Project"}),(0,i.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"This action cannot be undone. This will permanently delete the project and optionally remove all associated context files and sessions."})]})]}),(0,i.jsxs)(j.Vq,{open:W,onOpenChange:$,children:[(0,i.jsx)(j.hg,{asChild:!0,children:(0,i.jsxs)(o.z,{variant:"destructive",children:[(0,i.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})}),(0,i.jsxs)(j.cZ,{className:"sm:max-w-md",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Delete Project"}),(0,i.jsxs)(j.Be,{children:['Are you sure you want to delete "',F.name,'"? This action cannot be undone.']})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,i.jsx)(v.X,{id:"delete-items",checked:ei.deleteItems,onCheckedChange:e=>ea(s=>({...s,deleteItems:e}))}),(0,i.jsxs)("label",{htmlFor:"delete-items",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all context items (",null==eo?void 0:eo.length," items)"]})]}),(0,i.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,i.jsx)(v.X,{id:"delete-sessions",checked:ei.deleteSessions,onCheckedChange:e=>ea(s=>({...s,deleteSessions:e}))}),(0,i.jsxs)("label",{htmlFor:"delete-sessions",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all sessions (",eM.length," sessions)"]})]}),(ei.deleteItems||ei.deleteSessions)&&(0,i.jsxs)("div",{className:"flex items-start gap-2 p-3 border border-amber-200 rounded-lg bg-amber-50",children:[(0,i.jsx)(Z.Z,{className:"h-4 w-4 text-amber-600 mt-0.5"}),(0,i.jsx)("p",{className:"text-sm text-amber-800",children:ei.deleteItems&&ei.deleteSessions?"All context items and sessions will be permanently deleted.":ei.deleteItems?"All context items will be permanently deleted.":"All sessions will be permanently deleted."})]})]}),(0,i.jsxs)(j.cN,{className:"sm:justify-start",children:[(0,i.jsx)(o.z,{variant:"outline",onClick:()=>$(!1),children:"Cancel"}),(0,i.jsxs)(o.z,{disabled:ep,variant:"destructive",onClick:eD,children:[ep?(0,i.jsx)(I.g,{className:"mr-2 w-4 h-4"}):(0,i.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})]})]})]})]})})]})})]})]})}),(0,i.jsx)(j.Vq,{open:H,onOpenChange:K,children:(0,i.jsxs)(j.cZ,{className:"sm:max-w-4xl",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Select an Agent"}),(0,i.jsx)(j.Be,{children:"Choose an agent to start a new chat session. Sessions started in a project are accessible for viewing by project members."})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)(_.Z,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,i.jsx)(u.I,{placeholder:"Search agents...",value:G,onChange:e=>J(e.target.value),className:"pl-10"})]}),(0,i.jsx)("div",{className:"max-h-96 overflow-y-auto",children:eN?(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[...Array(6)].map((e,s)=>(0,i.jsx)("div",{className:"p-4 border rounded-lg",children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(P.O,{className:"h-12 w-12 rounded-full"}),(0,i.jsxs)("div",{className:"space-y-2 flex-1",children:[(0,i.jsx)(P.O,{className:"h-4 w-3/4"}),(0,i.jsx)(P.O,{className:"h-3 w-1/2"})]})]})},s))}):eP.length>0?(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:eP.map(e=>(0,i.jsx)("div",{className:"p-4 border rounded-lg hover:border-primary cursor-pointer transition-colors",onClick:()=>eI(e),children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("div",{className:"h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center",children:e.image?(0,i.jsx)("img",{src:e.image,alt:e.name,className:"h-12 w-12 rounded-full object-cover"}):(0,i.jsx)(M.Z,{className:"h-6 w-6"})}),(0,i.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,i.jsx)("p",{className:"font-medium truncate",children:e.name}),(0,i.jsx)("p",{className:"text-sm text-muted-foreground truncate",children:e.description||"".concat(e.type," agent")}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,i.jsx)(p.C,{variant:e.active?"default":"secondary",className:"text-xs",children:e.active?"Active":"Inactive"}),(0,i.jsx)(p.C,{variant:"outline",className:"text-xs",children:e.type})]})]})]})},e.id))}):(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(M.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:G?"No agents found matching your search":"No agents available"})]})})]}),(0,i.jsx)(j.cN,{children:(0,i.jsx)(o.z,{variant:"outline",onClick:()=>K(!1),children:"Cancel"})})]})})]})}function U(e){var s;let{gid:t,onRemove:a}=e,r=t.split("/")[0],n=t.split("/")[1];if(!r||!n)return null;let{data:c,loading:u}=(0,l.aM)((0,d.A1)(r,[]),{variables:{id:n}});if(u)return(0,i.jsx)(x.Zb,{className:"group relative overflow-hidden",children:(0,i.jsxs)(x.aY,{className:"p-4",children:[(0,i.jsx)(P.O,{className:"h-4 w-3/4 mb-2"}),(0,i.jsx)(P.O,{className:"h-3 w-full"}),(0,i.jsx)(P.O,{className:"h-3 w-2/3 mt-1"})]})});let m=null==c?void 0:c[r+"_itemsById"];return m?(0,i.jsx)(x.Zb,{className:"group relative overflow-hidden hover:shadow-md transition-all duration-200 hover:border-primary/50",children:(0,i.jsxs)(x.aY,{className:"p-4",children:[(0,i.jsx)("div",{className:"flex items-start justify-between mb-3",children:(0,i.jsx)(o.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 opacity-0 group-hover:opacity-100 transition-opacity",onClick:e=>{e.stopPropagation(),a(t)},children:(0,i.jsx)(S.Z,{className:"h-4 w-4 text-destructive"})})}),(0,i.jsx)("div",{className:"mb-2",children:(0,i.jsx)("h4",{className:"font-medium text-sm line-clamp-2 min-h-[2.5rem]",children:m.name||"Untitled"})}),m.description&&(0,i.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-3 min-h-[2.5rem]",children:m.description}),(0,i.jsxs)("div",{className:"space-y-2 pt-2 border-t",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[(0,i.jsx)("span",{className:"truncate",children:r.replace(/_/g," ")}),m.updatedAt&&(0,i.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:(s=m.updatedAt)?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):null})]}),m.textlength&&(0,i.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,i.jsxs)("span",{children:[m.textlength.toLocaleString()," chars"]}),m.chunks&&m.chunks.length>0&&(0,i.jsxs)("span",{className:"text-xs",children:["• ",m.chunks.length," chunks"]})]})]})]})}):null}var X=t(65613),W=t(20653);function $(){let e=(0,r.useParams)(),s=null==e?void 0:e.project,{data:t,loading:a,error:n}=(0,l.aM)(d.jL,{variables:{id:s}});return a?(0,i.jsx)("div",{children:(0,i.jsx)(P.O,{className:"w-full h-full"})}):n?(0,i.jsxs)(X.bZ,{variant:"destructive",children:[(0,i.jsx)(W.LPM,{className:"size-4"}),(0,i.jsx)(X.Cd,{children:"Error"}),(0,i.jsx)(X.X,{children:"Error loading project."})]}):(null==t?void 0:t.projectById)?(0,i.jsx)(Y,{project:t.projectById}):(0,i.jsxs)(X.bZ,{variant:"destructive",children:[(0,i.jsx)(W.LPM,{className:"size-4"}),(0,i.jsx)(X.Cd,{children:"Error"}),(0,i.jsx)(X.X,{children:"Project not found."})]})}},65613:function(e,s,t){"use strict";t.d(s,{Cd:function(){return d},X:function(){return o},bZ:function(){return c}});var i=t(57437),a=t(90535),r=t(2265),n=t(94508);let l=(0,a.j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),c=r.forwardRef((e,s)=>{let{className:t,variant:a,...r}=e;return(0,i.jsx)("div",{ref:s,role:"alert",className:(0,n.cn)(l({variant:a}),t),...r})});c.displayName="Alert";let d=r.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,i.jsx)("h5",{ref:s,className:(0,n.cn)("mb-1 font-medium leading-none tracking-tight",t),...a})});d.displayName="AlertTitle";let o=r.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,i.jsx)("div",{ref:s,className:(0,n.cn)("text-sm [&_p]:leading-relaxed",t),...a})});o.displayName="AlertDescription"},19060:function(e,s,t){"use strict";t.d(s,{X:function(){return c}});var i=t(57437),a=t(9270),r=t(30401),n=t(2265),l=t(94508);let c=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,i.jsx)(a.fC,{ref:s,className:(0,l.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...n,children:(0,i.jsx)(a.z$,{className:(0,l.cn)("flex items-center justify-center text-current"),children:(0,i.jsx)(r.Z,{className:"size-4"})})})});c.displayName=a.fC.displayName},10492:function(e,s,t){"use strict";t.d(s,{g:function(){return r}});var i=t(57437),a=t(94508);let r=e=>{let{className:s}=e;return(0,i.jsxs)("svg",{"aria-hidden":"true",role:"status",className:(0,a.cn)("inline w-4 h-4 text-white animate-spin fill-inherit",s),viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",className:"fill-inherit opacity-20"}),(0,i.jsx)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",className:"fill-inherit"})]})}},77992:function(e,s,t){"use strict";t.d(s,{Am:function(){return u},pm:function(){return m}});var i=t(2265);let a=0,r=new Map,n=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),o({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},l=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=s;return t?n(t):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},c=[],d={toasts:[]};function o(e){d=l(d,e),c.forEach(e=>{e(d)})}function u(e){let{...s}=e,t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),i=()=>o({type:"DISMISS_TOAST",toastId:t});return o({type:"ADD_TOAST",toast:{...s,id:t,open:!0,onOpenChange:e=>{e||i()}}}),{id:t,dismiss:i,update:e=>o({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function m(){let[e,s]=i.useState(d);return i.useEffect(()=>(c.push(s),()=>{let e=c.indexOf(s);e>-1&&c.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>o({type:"DISMISS_TOAST",toastId:e})}}},36399:function(e,s,t){"use strict";t.d(s,{t:function(){return r}});var i=t(27689),a=t(7211);let r=()=>(0,a.aM)(i.uw,{variables:{limit:20}})},87393:function(e,s,t){"use strict";t.d(s,{I:function(){return i}});let i=(e,s)=>{var t,i,a,r,n,l;let c="private"===e.rights_mode,d="public"===e.rights_mode,o="users"===e.rights_mode,u="roles"===e.rights_mode,m=s.super_admin,h=e.created_by===s.id.toString(),x=!1;return c&&h&&(x=!0),d&&(x=!0),o&&(x=(null===(a=e.RBAC)||void 0===a?void 0:null===(i=a.users)||void 0===i?void 0:null===(t=i.find(e=>e.id===s.id))||void 0===t?void 0:t.rights)==="write"),u&&(x=(null===(l=e.RBAC)||void 0===l?void 0:null===(n=l.roles)||void 0===n?void 0:null===(r=n.find(e=>{var t;return e.id===(null===(t=s.role)||void 0===t?void 0:t.id)}))||void 0===r?void 0:r.rights)==="write"),m&&(x=!0),x}},63639:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},24156:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]])},29202:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},66337:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},53417:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},45675:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},99397:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},88906:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Shield",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}]])},9270:function(e,s,t){"use strict";t.d(s,{fC:function(){return N},z$:function(){return b}});var i=t(2265),a=t(98575),r=t(73966),n=t(6741),l=t(80886),c=t(6718),d=t(90420),o=t(71599),u=t(66840),m=t(57437),h="Checkbox",[x,p]=(0,r.b)(h),[j,v]=x(h);function f(e){let{__scopeCheckbox:s,checked:t,children:a,defaultChecked:r,disabled:n,form:c,name:d,onCheckedChange:o,required:u,value:x="on",internal_do_not_use_render:p}=e,[v,f]=(0,l.T)({prop:t,defaultProp:null!=r&&r,onChange:o,caller:h}),[g,y]=i.useState(null),[N,w]=i.useState(null),b=i.useRef(!1),k=!g||!!c||!!g.closest("form"),C={checked:v,disabled:n,setChecked:f,control:g,setControl:y,name:d,form:c,value:x,hasConsumerStoppedPropagationRef:b,required:u,defaultChecked:!S(r)&&r,isFormControl:k,bubbleInput:N,setBubbleInput:w};return(0,m.jsx)(j,{scope:s,...C,children:"function"==typeof p?p(C):a})}var g="CheckboxTrigger",y=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,onKeyDown:r,onClick:l,...c}=e,{control:d,value:o,disabled:h,checked:x,required:p,setControl:j,setChecked:f,hasConsumerStoppedPropagationRef:y,isFormControl:N,bubbleInput:w}=v(g,t),b=(0,a.e)(s,j),k=i.useRef(x);return i.useEffect(()=>{let e=null==d?void 0:d.form;if(e){let s=()=>f(k.current);return e.addEventListener("reset",s),()=>e.removeEventListener("reset",s)}},[d,f]),(0,m.jsx)(u.WV.button,{type:"button",role:"checkbox","aria-checked":S(x)?"mixed":x,"aria-required":p,"data-state":Z(x),"data-disabled":h?"":void 0,disabled:h,value:o,...c,ref:b,onKeyDown:(0,n.M)(r,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,n.M)(l,e=>{f(e=>!!S(e)||!e),w&&N&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())})})});y.displayName=g;var N=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,name:i,checked:a,defaultChecked:r,required:n,disabled:l,value:c,onCheckedChange:d,form:o,...u}=e;return(0,m.jsx)(f,{__scopeCheckbox:t,checked:a,defaultChecked:r,disabled:l,required:n,onCheckedChange:d,name:i,form:o,value:c,internal_do_not_use_render:e=>{let{isFormControl:i}=e;return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(y,{...u,ref:s,__scopeCheckbox:t}),i&&(0,m.jsx)(C,{__scopeCheckbox:t})]})}})});N.displayName=h;var w="CheckboxIndicator",b=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,forceMount:i,...a}=e,r=v(w,t);return(0,m.jsx)(o.z,{present:i||S(r.checked)||!0===r.checked,children:(0,m.jsx)(u.WV.span,{"data-state":Z(r.checked),"data-disabled":r.disabled?"":void 0,...a,ref:s,style:{pointerEvents:"none",...e.style}})})});b.displayName=w;var k="CheckboxBubbleInput",C=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,...r}=e,{control:n,hasConsumerStoppedPropagationRef:l,checked:o,defaultChecked:h,required:x,disabled:p,name:j,value:f,form:g,bubbleInput:y,setBubbleInput:N}=v(k,t),w=(0,a.e)(s,N),b=(0,c.D)(o),C=(0,d.t)(n);i.useEffect(()=>{if(!y)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,s=!l.current;if(b!==o&&e){let t=new Event("click",{bubbles:s});y.indeterminate=S(o),e.call(y,!S(o)&&o),y.dispatchEvent(t)}},[y,b,o,l]);let Z=i.useRef(!S(o)&&o);return(0,m.jsx)(u.WV.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=h?h:Z.current,required:x,disabled:p,name:j,value:f,form:g,...r,tabIndex:-1,ref:w,style:{...r.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function S(e){return"indeterminate"===e}function Z(e){return S(e)?"indeterminate":e?"checked":"unchecked"}C.displayName=k},6394:function(e,s,t){"use strict";t.d(s,{f:function(){return l}});var i=t(2265),a=t(66840),r=t(57437),n=i.forwardRef((e,s)=>(0,r.jsx)(a.WV.label,{...e,ref:s,onMouseDown:s=>{var t;s.target.closest("button, input, select, textarea")||(null===(t=e.onMouseDown)||void 0===t||t.call(e,s),!s.defaultPrevented&&s.detail>1&&s.preventDefault())}}));n.displayName="Label";var l=n}},function(e){e.O(0,[8310,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,1785,5110,3171,6373,3832,8030,2971,2117,1744],function(){return e(e.s=62839)}),_N_E=e.O()}]);
|
|
2
|
-
//# sourceMappingURL=page-
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[806],{62839:function(e,s,t){Promise.resolve().then(t.bind(t,32538))},32538:function(e,s,t){"use strict";t.r(s),t.d(s,{default:function(){return $}});var i=t(57437),a=t(2265),r=t(99376),n=t(12199),l=t(7211),c=t(63251),d=t(27689),o=t(62869),u=t(95186),m=t(26815),h=t(76818),x=t(66070),p=t(35974),j=t(26110),v=t(19060),f=t(39763);let g=(0,f.Z)("Settings2",[["path",{d:"M20 7h-9",key:"3s1dr2"}],["path",{d:"M14 17H5",key:"gfn3mx"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]]),y=(0,f.Z)("Files",[["path",{d:"M15.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z",key:"cennsq"}],["path",{d:"M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8",key:"ms809a"}],["path",{d:"M15 2v5h5",key:"qq6kwv"}]]);var N=t(53417),w=t(88906),b=t(45675),k=t(99397);let C=(0,f.Z)("PackageMinus",[["path",{d:"M16 16h6",key:"100bgy"}],["path",{d:"M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14",key:"e7tb2h"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["line",{x1:"12",x2:"12",y1:"22",y2:"12",key:"a4e8g8"}]]);var S=t(18930),Z=t(63639),_=t(73247),M=t(82222),A=t(8014),P=t(93022),E=t(77992),I=t(10492),D=t(87393),O=t(13832),z=t(27648),T=t(81103),R=t(36399);let B=(0,f.Z)("PlusSquare",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M8 12h8",key:"1wcyev"}],["path",{d:"M12 8v8",key:"napkw2"}]]);var V=t(23518);let L=e=>{var s;let{onConfirm:t}=e,{data:r,loading:n,error:l}=(0,R.t)(),[c,d]=(0,a.useState)(void 0),[u,m]=(0,a.useState)(!1);return(0,i.jsxs)(j.Vq,{open:u,onOpenChange:e=>{m(e),d(void 0)},children:[(0,i.jsx)(j.hg,{asChild:!0,children:(0,i.jsxs)(o.z,{className:"w-full",variant:"outline",children:[(0,i.jsx)(B,{className:"h-4 w-4 mr-2"}),"Select items from knowledge sources to add to the project, or upload files."]})}),(0,i.jsxs)(j.cZ,{className:"sm:max-w-[900px]",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Item selection"}),(0,i.jsx)(j.Be,{children:"Browse through contexts and select items."})]}),!c&&(0,i.jsxs)(V.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,i.jsx)(V.sZ,{placeholder:"Type a command or search..."}),(0,i.jsxs)(V.e8,{children:[(0,i.jsx)(V.rb,{children:"No results found."}),(0,i.jsx)(V.fu,{heading:"Contexts",children:null==r?void 0:null===(s=r.contexts)||void 0===s?void 0:s.items.map(e=>(0,i.jsx)(V.di,{onSelect:()=>{d(e)},children:e.name},e.id))})]})]}),c&&(0,i.jsx)(F,{context:c,onConfirm:e=>{console.log("item",e),t([{item:e,context:c}]),m(!1)}})]})]})},F=e=>{var s,t,r,n,c;let{context:o,onConfirm:u}=e,[m,h]=(0,a.useState)(void 0),{loading:x,data:p,refetch:j,previousData:v,error:f}=(0,l.aM)((0,d.P3)(o.id,[]),{fetchPolicy:"no-cache",nextFetchPolicy:"network-only",skip:!o.id,variables:{context:o.id,page:1,limit:10,sort:{field:"updatedAt",direction:"DESC"},filters:{archived:{ne:!0},...m?{name:{contains:"".concat(m)}}:{}}}});return(0,i.jsxs)(V.mY,{className:"rounded-lg border shadow-md md:min-w-[450px]",children:[(0,i.jsx)(V.sZ,{onValueChange:e=>h(e),placeholder:"Type a command or search..."}),(0,i.jsx)(V.e8,{children:(0,i.jsxs)(V.fu,{heading:"Items",children:[!v&&x&&(0,i.jsx)(V.di,{children:(0,i.jsx)(I.g,{})},"loading"),!x&&!(null==p?void 0:null===(t=p[o.id+d.Md])||void 0===t?void 0:null===(s=t.items)||void 0===s?void 0:s.length)&&(0,i.jsx)(V.rb,{children:"No items found."}),null===(c=p||v)||void 0===c?void 0:null===(n=c[o.id+d.Md])||void 0===n?void 0:null===(r=n.items)||void 0===r?void 0:r.map(e=>(0,i.jsx)(V.di,{onSelect:()=>{u(e)},children:e.name},e.id))]})})]})};var q=t(6374);function Y(e){var s,t,f,R,B,V;let{project:F}=e,[Y,U]=(0,a.useState)(!1),[W,$]=(0,a.useState)(!1),[H,K]=(0,a.useState)(!1),[G,J]=(0,a.useState)(""),[Q,ee]=(0,a.useState)("overview"),{user:es}=(0,a.useContext)(O.S),et=(0,r.useRouter)(),[ei,ea]=(0,a.useState)({deleteItems:!1,deleteSessions:!1}),[er,en]=(0,a.useState)({name:F.name||"",description:F.description||"",custom_instructions:F.custom_instructions||""}),{toast:el}=(0,E.pm)(),[ec,ed]=(0,a.useState)({rights_mode:F.rights_mode,users:null===(s=F.RBAC)||void 0===s?void 0:s.users,roles:null===(t=F.RBAC)||void 0===t?void 0:t.roles}),[eo,eu]=(0,a.useState)(F.project_items||[]),[em,{loading:eh}]=(0,n.D)(d.b2),[ex]=(0,n.D)(d.Yr),[ep,ej]=(0,a.useState)(!1),{data:ev,loading:ef,refetch:eg}=(0,l.aM)(d.GJ,{variables:{page:1,limit:50,filters:[{project:{eq:F.id}}]}}),{data:ey,loading:eN}=(0,l.aM)(d.ym,{variables:{page:1,limit:100,filters:[],sort:{field:"updatedAt",direction:"DESC"}}}),ew=(0,c.x)(),[eb,{loading:ek}]=(0,n.D)(d.fB),[eC,{loading:eS}]=(0,n.D)(d.dc),[eZ,{loading:e_}]=(0,n.D)(d.S9),eM=(null==ev?void 0:null===(f=ev.agent_sessionsPagination)||void 0===f?void 0:f.items)||[],eA=(null==ey?void 0:null===(R=ey.agentsPagination)||void 0===R?void 0:R.items)||[],eP=a.useMemo(()=>G?eA.filter(e=>e.name.toLowerCase().includes(G.toLowerCase())):eA,[eA,G]),eE=async()=>{if(!er.name.trim()){el({title:"Validation Error",description:"Project name is required.",variant:"destructive"});return}try{await em({variables:{id:F.id,input:{name:er.name.trim(),description:er.description.trim()||null,custom_instructions:er.custom_instructions.trim()||null}}}),el({title:"Success",description:"Project updated successfully!"}),U(!1)}catch(e){console.error("Error updating project:",e),el({title:"Error",description:e.message||"Failed to update project. Please try again.",variant:"destructive"})}},eI=async e=>{try{var s,t,i;let a=await eb({variables:{title:"New session with ".concat(e.name),agent:e.id,project:F.id,rights_mode:"private"}}),r=null===(i=a.data)||void 0===i?void 0:null===(t=i.agent_sessionsCreateOne)||void 0===t?void 0:null===(s=t.item)||void 0===s?void 0:s.id;r&&(el({title:"Success",description:"Session created successfully! Sessions started in a project are accessible for viewing by project members."}),K(!1),J(""),et.push("/chat/".concat(e.id,"/").concat(r)))}catch(e){console.error("Error creating session:",e),el({title:"Error",description:e.message||"Failed to create session. Please try again.",variant:"destructive"})}},eD=async()=>{try{ej(!0),ei.deleteItems&&await Promise.all(eo.map(async e=>{var s,t;let i=e.split("/")[0],a=e.split("/")[1];if(!i||!a)return;let{data:r}=await ew.mutate({mutation:(0,d.mN)(i,[]),variables:{id:a}});if(null===(s=r["".concat(i,"_itemsRemoveOneById")])||void 0===s?void 0:s.s3key)try{await q.QZ.delete(null===(t=r["".concat(i,"_itemsRemoveOneById")])||void 0===t?void 0:t.s3key)}catch(e){console.error("[EXULU] Error deleting file from s3 storage:",e)}})),await Promise.all(eM.map(async e=>{ei.deleteSessions?await eZ({variables:{id:e.id}}):await eC({variables:{id:e.id,project:null}})})),await ex({variables:{id:F.id}}),el({title:"Success",description:'Project "'.concat(F.name,'" has been deleted successfully.')}),$(!1),ej(!1),et.push("/projects")}catch(e){ej(!1),console.error("Error deleting project:",e),el({title:"Error",description:e.message||"Failed to delete project. Please try again.",variant:"destructive"})}};return(0,i.jsxs)("div",{className:"flex-1 p-6 mt-20",children:[(0,i.jsx)("div",{className:"max-w-5xl mx-auto space-y-6",children:(0,i.jsxs)("div",{className:"flex gap-6 h-full",children:[(0,i.jsxs)("div",{className:"w-80 space-y-4",children:[(0,i.jsx)(x.Zb,{children:(0,i.jsx)(x.aY,{className:"p-4",children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("h3",{className:"font-semibold text-lg",children:F.name}),(0,i.jsx)("p",{className:"text-muted-foreground text-sm leading-relaxed",children:F.description||"No description provided."})]})})}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsxs)(o.z,{variant:"overview"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("overview"),children:[(0,i.jsx)(g,{className:"h-4 w-4 mr-2"}),"Project information"]}),(0,i.jsxs)(o.z,{variant:"context"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("context"),children:[(0,i.jsx)(y,{className:"h-4 w-4 mr-2"}),"Project files"]}),(0,i.jsxs)(o.z,{variant:"sessions"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("sessions"),children:[(0,i.jsx)(N.Z,{className:"h-4 w-4 mr-2"}),"Project sessions"]}),(0,i.jsxs)(o.z,{variant:"access"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("access"),children:[(0,i.jsx)(w.Z,{className:"h-4 w-4 mr-2"}),"Access control"]}),(0,i.jsxs)(o.z,{variant:"settings"===Q?"default":"ghost",className:"w-full justify-start",onClick:()=>ee("settings"),children:[(0,i.jsx)(g,{className:"h-4 w-4 mr-2"}),"Project settings"]})]})]}),(0,i.jsxs)("div",{className:"flex-1",children:["overview"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project Information"}),(0,i.jsx)(x.SZ,{children:"Basic information about this project"})]}),(0,i.jsxs)(x.aY,{className:"space-y-4",children:[(0,i.jsx)("div",{className:"grid gap-4",children:(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"name",children:"Project Name"}),Y?(0,i.jsx)(u.I,{id:"name",value:er.name,onChange:e=>en({...er,name:e.target.value})}):(0,i.jsx)("p",{className:"text-sm",children:F.name})]})}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"description",children:"Description"}),Y?(0,i.jsx)(h.g,{id:"description",value:er.description,onChange:e=>en({...er,description:e.target.value}),rows:3}):(0,i.jsx)("p",{className:"text-sm",children:F.description||"No description provided"})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(m._,{htmlFor:"instructions",children:"Custom Instructions"}),Y?(0,i.jsx)(h.g,{id:"instructions",value:er.custom_instructions,onChange:e=>en({...er,custom_instructions:e.target.value}),rows:4,placeholder:"Enter custom instructions for sessions in this project..."}):(0,i.jsx)("p",{className:"text-sm",children:F.custom_instructions||"No custom instructions set"})]})]}),(0,i.jsx)(x.eW,{children:(0,i.jsx)("div",{className:"flex items-center justify-between",children:(0,i.jsx)("div",{className:"flex gap-2",children:Y?(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(o.z,{variant:"outline",onClick:()=>{F&&en({name:F.name||"",description:F.description||"",custom_instructions:F.custom_instructions||""}),U(!1)},children:"Cancel"}),(0,i.jsxs)(o.z,{onClick:eE,children:[(0,i.jsx)("span",{children:"Save changes"}),eh&&(0,i.jsx)(I.g,{className:"mr-2"})]})]}):(0,i.jsxs)(o.z,{variant:"outline",onClick:()=>U(!0),children:[(0,i.jsx)(b.Z,{className:"h-4 w-4 mr-2"}),"Edit"]})})})})]})}),"context"===Q&&(0,i.jsx)("div",{className:"space-y-6 w-full",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project context items"}),(0,i.jsx)(x.SZ,{children:"Items that provide context for sessions in this project (max 15 items). Note that different agents may have different file types supported."})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsx)(L,{onConfirm:e=>{let s=[...eo,...e.map(e=>"".concat(e.context.id,"/").concat(e.item.id))];console.log("update",s),eu(s),em({variables:{id:F.id,input:{project_items:s}}})}}),(0,i.jsx)("div",{className:"space-y-2",children:(0,i.jsxs)("div",{className:"space-y-2",children:[(null==eo?void 0:eo.length)===0&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(y,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"No items added to the project context yet."})]}),(0,i.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-2 gap-3",children:null==eo?void 0:eo.map(e=>(0,i.jsx)(X,{gid:e,onRemove:e=>{let s=eo.filter(s=>s!==e);eu(s),em({variables:{id:F.id,input:{project_items:s}}})}},e))})]})})]})})]})}),"sessions"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Project sessions"}),(0,i.jsx)(x.SZ,{children:"Sessions associated with this project"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)(o.z,{onClick:()=>{K(!0)},className:"w-full",variant:"outline",children:[(0,i.jsx)(k.Z,{className:"h-4 w-4 mr-2"}),"Start new session"]}),(0,i.jsx)("div",{className:"space-y-2",children:eM.map(e=>{let s=(0,D.I)(e,es);return(0,i.jsxs)("div",{className:"flex items-center justify-between p-3 border rounded-lg",children:[(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(N.Z,{className:"h-4 w-4"}),(0,i.jsx)("div",{children:(0,i.jsx)(z.default,{href:"/chat/".concat(e.agent,"/").concat(e.id),children:(0,i.jsx)("p",{className:"font-medium max-w-[80%] truncate",children:e.title})})})]}),(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsxs)(T.u,{children:[(0,i.jsx)(T.aJ,{asChild:!0,children:(0,i.jsx)(o.z,{disabled:!s||eS,variant:"ghost",size:"sm",onClick:()=>{eS||(eC({variables:{id:e.id,project:null}}),eg())},children:(0,i.jsx)(C,{className:"h-4 w-4"})})}),(0,i.jsx)(T._v,{children:(0,i.jsx)("p",{children:"Remove session from project."})})]}),(0,i.jsxs)(T.u,{children:[(0,i.jsx)(T.aJ,{asChild:!0,children:(0,i.jsx)(o.z,{disabled:!s||e_,variant:"ghost",size:"sm",onClick:()=>{e_||(eZ({variables:{id:e.id}}),eg())},children:(0,i.jsx)(S.Z,{className:"h-4 w-4"})})}),(0,i.jsx)(T._v,{children:(0,i.jsx)("p",{children:"Delete session completely."})})]})]})]},e.id)})}),0===eM.length&&!ef&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"No sessions found"})]}),ef&&(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(N.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:"Loading sessions..."})]})]})})]})}),"access"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Access Control"}),(0,i.jsx)(x.SZ,{children:"Control who can access this project"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsx)(A.P,{allowedModes:["private","users","roles"],initialRightsMode:F.rights_mode||"private",initialUsers:null===(B=F.RBAC)||void 0===B?void 0:B.users,initialRoles:null===(V=F.RBAC)||void 0===V?void 0:V.roles,onChange:(e,s,t)=>{ed({rights_mode:e,users:s,roles:t})}})}),(0,i.jsx)(x.eW,{children:(0,i.jsxs)(o.z,{onClick:()=>{em({variables:{id:F.id,input:{rights_mode:ec.rights_mode,RBAC:{users:ec.users,roles:ec.roles}}}})},children:[(0,i.jsx)("span",{children:"Save access rights"}),eh&&(0,i.jsx)(I.g,{className:"ml-2"})]})})]})}),"settings"===Q&&(0,i.jsx)("div",{className:"space-y-6",children:(0,i.jsxs)(x.Zb,{children:[(0,i.jsxs)(x.Ol,{children:[(0,i.jsx)(x.ll,{children:"Danger Zone"}),(0,i.jsx)(x.SZ,{children:"Permanently delete this project and all associated data"})]}),(0,i.jsx)(x.aY,{children:(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"flex items-start gap-3 p-4 border border-destructive/20 rounded-lg bg-destructive/5",children:[(0,i.jsx)(Z.Z,{className:"h-5 w-5 text-destructive mt-0.5"}),(0,i.jsxs)("div",{className:"flex-1",children:[(0,i.jsx)("h4",{className:"font-medium text-destructive",children:"Delete Project"}),(0,i.jsx)("p",{className:"text-sm text-muted-foreground mt-1",children:"This action cannot be undone. This will permanently delete the project and optionally remove all associated context files and sessions."})]})]}),(0,i.jsxs)(j.Vq,{open:W,onOpenChange:$,children:[(0,i.jsx)(j.hg,{asChild:!0,children:(0,i.jsxs)(o.z,{variant:"destructive",children:[(0,i.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})}),(0,i.jsxs)(j.cZ,{className:"sm:max-w-md",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Delete Project"}),(0,i.jsxs)(j.Be,{children:['Are you sure you want to delete "',F.name,'"? This action cannot be undone.']})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,i.jsx)(v.X,{id:"delete-items",checked:ei.deleteItems,onCheckedChange:e=>ea(s=>({...s,deleteItems:e}))}),(0,i.jsxs)("label",{htmlFor:"delete-items",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all context items (",null==eo?void 0:eo.length," items)"]})]}),(0,i.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,i.jsx)(v.X,{id:"delete-sessions",checked:ei.deleteSessions,onCheckedChange:e=>ea(s=>({...s,deleteSessions:e}))}),(0,i.jsxs)("label",{htmlFor:"delete-sessions",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:["Also delete all sessions (",eM.length," sessions)"]})]}),(ei.deleteItems||ei.deleteSessions)&&(0,i.jsxs)("div",{className:"flex items-start gap-2 p-3 border border-amber-200 rounded-lg bg-amber-50",children:[(0,i.jsx)(Z.Z,{className:"h-4 w-4 text-amber-600 mt-0.5"}),(0,i.jsx)("p",{className:"text-sm text-amber-800",children:ei.deleteItems&&ei.deleteSessions?"All context items and sessions will be permanently deleted.":ei.deleteItems?"All context items will be permanently deleted.":"All sessions will be permanently deleted."})]})]}),(0,i.jsxs)(j.cN,{className:"sm:justify-start",children:[(0,i.jsx)(o.z,{variant:"outline",onClick:()=>$(!1),children:"Cancel"}),(0,i.jsxs)(o.z,{disabled:ep,variant:"destructive",onClick:eD,children:[ep?(0,i.jsx)(I.g,{className:"mr-2 w-4 h-4"}):(0,i.jsx)(S.Z,{className:"h-4 w-4 mr-2"}),"Delete Project"]})]})]})]})]})})]})})]})]})}),(0,i.jsx)(j.Vq,{open:H,onOpenChange:K,children:(0,i.jsxs)(j.cZ,{className:"sm:max-w-4xl",children:[(0,i.jsxs)(j.fK,{children:[(0,i.jsx)(j.$N,{children:"Select an Agent"}),(0,i.jsx)(j.Be,{children:"Choose an agent to start a new chat session. Sessions started in a project are accessible for viewing by project members."})]}),(0,i.jsxs)("div",{className:"space-y-4",children:[(0,i.jsxs)("div",{className:"relative",children:[(0,i.jsx)(_.Z,{className:"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,i.jsx)(u.I,{placeholder:"Search agents...",value:G,onChange:e=>J(e.target.value),className:"pl-10"})]}),(0,i.jsx)("div",{className:"max-h-96 overflow-y-auto",children:eN?(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[...Array(6)].map((e,s)=>(0,i.jsx)("div",{className:"p-4 border rounded-lg",children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)(P.O,{className:"h-12 w-12 rounded-full"}),(0,i.jsxs)("div",{className:"space-y-2 flex-1",children:[(0,i.jsx)(P.O,{className:"h-4 w-3/4"}),(0,i.jsx)(P.O,{className:"h-3 w-1/2"})]})]})},s))}):eP.length>0?(0,i.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:eP.map(e=>(0,i.jsx)("div",{className:"p-4 border rounded-lg hover:border-primary cursor-pointer transition-colors",onClick:()=>eI(e),children:(0,i.jsxs)("div",{className:"flex items-center gap-3",children:[(0,i.jsx)("div",{className:"h-12 w-12 rounded-full bg-primary/10 flex items-center justify-center",children:e.image?(0,i.jsx)("img",{src:e.image,alt:e.name,className:"h-12 w-12 rounded-full object-cover"}):(0,i.jsx)(M.Z,{className:"h-6 w-6"})}),(0,i.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,i.jsx)("p",{className:"font-medium truncate",children:e.name}),(0,i.jsx)("p",{className:"text-sm text-muted-foreground truncate",children:e.description||"".concat(e.type," agent")}),(0,i.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,i.jsx)(p.C,{variant:e.active?"default":"secondary",className:"text-xs",children:e.active?"Active":"Inactive"}),(0,i.jsx)(p.C,{variant:"outline",className:"text-xs",children:e.type})]})]})]})},e.id))}):(0,i.jsxs)("div",{className:"text-center py-8 text-muted-foreground",children:[(0,i.jsx)(M.Z,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),(0,i.jsx)("p",{children:G?"No agents found matching your search":"No agents available"})]})})]}),(0,i.jsx)(j.cN,{children:(0,i.jsx)(o.z,{variant:"outline",onClick:()=>K(!1),children:"Cancel"})})]})})]})}function X(e){var s;let{gid:t,onRemove:a}=e,r=t.split("/")[0],n=t.split("/")[1];if(!r||!n)return null;let{data:c,loading:u}=(0,l.aM)((0,d.A1)(r,[]),{variables:{id:n}});if(u)return(0,i.jsx)(x.Zb,{className:"group relative overflow-hidden",children:(0,i.jsxs)(x.aY,{className:"p-4",children:[(0,i.jsx)(P.O,{className:"h-4 w-3/4 mb-2"}),(0,i.jsx)(P.O,{className:"h-3 w-full"}),(0,i.jsx)(P.O,{className:"h-3 w-2/3 mt-1"})]})});let m=null==c?void 0:c[r+"_itemsById"];return m?(0,i.jsx)(x.Zb,{className:"group relative overflow-hidden hover:shadow-md transition-all duration-200 hover:border-primary/50",children:(0,i.jsxs)(x.aY,{className:"p-4",children:[(0,i.jsx)("div",{className:"flex items-start justify-between mb-3",children:(0,i.jsx)(o.z,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0 opacity-0 group-hover:opacity-100 transition-opacity",onClick:e=>{e.stopPropagation(),a(t)},children:(0,i.jsx)(S.Z,{className:"h-4 w-4 text-destructive"})})}),(0,i.jsx)("div",{className:"mb-2",children:(0,i.jsx)("h4",{className:"font-medium text-sm line-clamp-2 min-h-[2.5rem]",children:m.name||"Untitled"})}),m.description&&(0,i.jsx)("p",{className:"text-xs text-muted-foreground line-clamp-2 mb-3 min-h-[2.5rem]",children:m.description}),(0,i.jsxs)("div",{className:"space-y-2 pt-2 border-t",children:[(0,i.jsxs)("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[(0,i.jsx)("span",{className:"truncate",children:r.replace(/_/g," ")}),m.updatedAt&&(0,i.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:(s=m.updatedAt)?new Date(s).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):null})]}),m.textlength&&(0,i.jsxs)("div",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[(0,i.jsxs)("span",{children:[m.textlength.toLocaleString()," chars"]}),m.chunks&&m.chunks.length>0&&(0,i.jsxs)("span",{className:"text-xs",children:["• ",m.chunks.length," chunks"]})]})]})]})}):null}var U=t(65613),W=t(20653);function $(){let e=(0,r.useParams)(),s=null==e?void 0:e.project,{data:t,loading:a,error:n}=(0,l.aM)(d.jL,{variables:{id:s}});return a?(0,i.jsx)("div",{children:(0,i.jsx)(P.O,{className:"w-full h-full"})}):n?(0,i.jsxs)(U.bZ,{variant:"destructive",children:[(0,i.jsx)(W.LPM,{className:"size-4"}),(0,i.jsx)(U.Cd,{children:"Error"}),(0,i.jsx)(U.X,{children:"Error loading project."})]}):(null==t?void 0:t.projectById)?(0,i.jsx)(Y,{project:t.projectById}):(0,i.jsxs)(U.bZ,{variant:"destructive",children:[(0,i.jsx)(W.LPM,{className:"size-4"}),(0,i.jsx)(U.Cd,{children:"Error"}),(0,i.jsx)(U.X,{children:"Project not found."})]})}},65613:function(e,s,t){"use strict";t.d(s,{Cd:function(){return d},X:function(){return o},bZ:function(){return c}});var i=t(57437),a=t(90535),r=t(2265),n=t(94508);let l=(0,a.j)("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",info:"border-info/50 text-info dark:border-info [&>svg]:text-info"}},defaultVariants:{variant:"default"}}),c=r.forwardRef((e,s)=>{let{className:t,variant:a,...r}=e;return(0,i.jsx)("div",{ref:s,role:"alert",className:(0,n.cn)(l({variant:a}),t),...r})});c.displayName="Alert";let d=r.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,i.jsx)("h5",{ref:s,className:(0,n.cn)("mb-1 font-medium leading-none tracking-tight",t),...a})});d.displayName="AlertTitle";let o=r.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,i.jsx)("div",{ref:s,className:(0,n.cn)("text-sm [&_p]:leading-relaxed",t),...a})});o.displayName="AlertDescription"},19060:function(e,s,t){"use strict";t.d(s,{X:function(){return c}});var i=t(57437),a=t(9270),r=t(30401),n=t(2265),l=t(94508);let c=n.forwardRef((e,s)=>{let{className:t,...n}=e;return(0,i.jsx)(a.fC,{ref:s,className:(0,l.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...n,children:(0,i.jsx)(a.z$,{className:(0,l.cn)("flex items-center justify-center text-current"),children:(0,i.jsx)(r.Z,{className:"size-4"})})})});c.displayName=a.fC.displayName},10492:function(e,s,t){"use strict";t.d(s,{g:function(){return r}});var i=t(57437),a=t(94508);let r=e=>{let{className:s}=e;return(0,i.jsxs)("svg",{"aria-hidden":"true",role:"status",className:(0,a.cn)("inline w-4 h-4 text-white animate-spin fill-inherit",s),viewBox:"0 0 100 101",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,i.jsx)("path",{d:"M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z",className:"fill-inherit opacity-20"}),(0,i.jsx)("path",{d:"M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z",className:"fill-inherit"})]})}},77992:function(e,s,t){"use strict";t.d(s,{Am:function(){return u},pm:function(){return m}});var i=t(2265);let a=0,r=new Map,n=e=>{if(r.has(e))return;let s=setTimeout(()=>{r.delete(e),o({type:"REMOVE_TOAST",toastId:e})},1e6);r.set(e,s)},l=(e,s)=>{switch(s.type){case"ADD_TOAST":return{...e,toasts:[s.toast,...e.toasts].slice(0,1)};case"UPDATE_TOAST":return{...e,toasts:e.toasts.map(e=>e.id===s.toast.id?{...e,...s.toast}:e)};case"DISMISS_TOAST":{let{toastId:t}=s;return t?n(t):e.toasts.forEach(e=>{n(e.id)}),{...e,toasts:e.toasts.map(e=>e.id===t||void 0===t?{...e,open:!1}:e)}}case"REMOVE_TOAST":if(void 0===s.toastId)return{...e,toasts:[]};return{...e,toasts:e.toasts.filter(e=>e.id!==s.toastId)}}},c=[],d={toasts:[]};function o(e){d=l(d,e),c.forEach(e=>{e(d)})}function u(e){let{...s}=e,t=(a=(a+1)%Number.MAX_SAFE_INTEGER).toString(),i=()=>o({type:"DISMISS_TOAST",toastId:t});return o({type:"ADD_TOAST",toast:{...s,id:t,open:!0,onOpenChange:e=>{e||i()}}}),{id:t,dismiss:i,update:e=>o({type:"UPDATE_TOAST",toast:{...e,id:t}})}}function m(){let[e,s]=i.useState(d);return i.useEffect(()=>(c.push(s),()=>{let e=c.indexOf(s);e>-1&&c.splice(e,1)}),[e]),{...e,toast:u,dismiss:e=>o({type:"DISMISS_TOAST",toastId:e})}}},36399:function(e,s,t){"use strict";t.d(s,{t:function(){return r}});var i=t(27689),a=t(7211);let r=()=>(0,a.aM)(i.uw,{variables:{limit:20}})},87393:function(e,s,t){"use strict";t.d(s,{I:function(){return i}});let i=(e,s)=>{var t,i,a,r,n,l;let c="private"===e.rights_mode,d="public"===e.rights_mode,o="users"===e.rights_mode,u="roles"===e.rights_mode,m=s.super_admin,h=e.created_by===s.id.toString(),x=!1;return c&&h&&(x=!0),d&&(x=!0),o&&(x=(null===(a=e.RBAC)||void 0===a?void 0:null===(i=a.users)||void 0===i?void 0:null===(t=i.find(e=>e.id===s.id))||void 0===t?void 0:t.rights)==="write"),u&&(x=(null===(l=e.RBAC)||void 0===l?void 0:null===(n=l.roles)||void 0===n?void 0:null===(r=n.find(e=>{var t;return e.id===(null===(t=s.role)||void 0===t?void 0:t.id)}))||void 0===r?void 0:r.rights)==="write"),m&&(x=!0),x}},63639:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("AlertTriangle",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z",key:"c3ski4"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},24156:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("ChevronsUpDown",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]])},29202:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},66337:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]])},53417:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]])},45675:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Pencil",[["path",{d:"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z",key:"5qss01"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},99397:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},88906:function(e,s,t){"use strict";t.d(s,{Z:function(){return i}});let i=(0,t(39763).Z)("Shield",[["path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10",key:"1irkt0"}]])},9270:function(e,s,t){"use strict";t.d(s,{fC:function(){return N},z$:function(){return b}});var i=t(2265),a=t(98575),r=t(73966),n=t(6741),l=t(80886),c=t(6718),d=t(90420),o=t(71599),u=t(66840),m=t(57437),h="Checkbox",[x,p]=(0,r.b)(h),[j,v]=x(h);function f(e){let{__scopeCheckbox:s,checked:t,children:a,defaultChecked:r,disabled:n,form:c,name:d,onCheckedChange:o,required:u,value:x="on",internal_do_not_use_render:p}=e,[v,f]=(0,l.T)({prop:t,defaultProp:null!=r&&r,onChange:o,caller:h}),[g,y]=i.useState(null),[N,w]=i.useState(null),b=i.useRef(!1),k=!g||!!c||!!g.closest("form"),C={checked:v,disabled:n,setChecked:f,control:g,setControl:y,name:d,form:c,value:x,hasConsumerStoppedPropagationRef:b,required:u,defaultChecked:!S(r)&&r,isFormControl:k,bubbleInput:N,setBubbleInput:w};return(0,m.jsx)(j,{scope:s,...C,children:"function"==typeof p?p(C):a})}var g="CheckboxTrigger",y=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,onKeyDown:r,onClick:l,...c}=e,{control:d,value:o,disabled:h,checked:x,required:p,setControl:j,setChecked:f,hasConsumerStoppedPropagationRef:y,isFormControl:N,bubbleInput:w}=v(g,t),b=(0,a.e)(s,j),k=i.useRef(x);return i.useEffect(()=>{let e=null==d?void 0:d.form;if(e){let s=()=>f(k.current);return e.addEventListener("reset",s),()=>e.removeEventListener("reset",s)}},[d,f]),(0,m.jsx)(u.WV.button,{type:"button",role:"checkbox","aria-checked":S(x)?"mixed":x,"aria-required":p,"data-state":Z(x),"data-disabled":h?"":void 0,disabled:h,value:o,...c,ref:b,onKeyDown:(0,n.M)(r,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,n.M)(l,e=>{f(e=>!!S(e)||!e),w&&N&&(y.current=e.isPropagationStopped(),y.current||e.stopPropagation())})})});y.displayName=g;var N=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,name:i,checked:a,defaultChecked:r,required:n,disabled:l,value:c,onCheckedChange:d,form:o,...u}=e;return(0,m.jsx)(f,{__scopeCheckbox:t,checked:a,defaultChecked:r,disabled:l,required:n,onCheckedChange:d,name:i,form:o,value:c,internal_do_not_use_render:e=>{let{isFormControl:i}=e;return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(y,{...u,ref:s,__scopeCheckbox:t}),i&&(0,m.jsx)(C,{__scopeCheckbox:t})]})}})});N.displayName=h;var w="CheckboxIndicator",b=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,forceMount:i,...a}=e,r=v(w,t);return(0,m.jsx)(o.z,{present:i||S(r.checked)||!0===r.checked,children:(0,m.jsx)(u.WV.span,{"data-state":Z(r.checked),"data-disabled":r.disabled?"":void 0,...a,ref:s,style:{pointerEvents:"none",...e.style}})})});b.displayName=w;var k="CheckboxBubbleInput",C=i.forwardRef((e,s)=>{let{__scopeCheckbox:t,...r}=e,{control:n,hasConsumerStoppedPropagationRef:l,checked:o,defaultChecked:h,required:x,disabled:p,name:j,value:f,form:g,bubbleInput:y,setBubbleInput:N}=v(k,t),w=(0,a.e)(s,N),b=(0,c.D)(o),C=(0,d.t)(n);i.useEffect(()=>{if(!y)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,s=!l.current;if(b!==o&&e){let t=new Event("click",{bubbles:s});y.indeterminate=S(o),e.call(y,!S(o)&&o),y.dispatchEvent(t)}},[y,b,o,l]);let Z=i.useRef(!S(o)&&o);return(0,m.jsx)(u.WV.input,{type:"checkbox","aria-hidden":!0,defaultChecked:null!=h?h:Z.current,required:x,disabled:p,name:j,value:f,form:g,...r,tabIndex:-1,ref:w,style:{...r.style,...C,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function S(e){return"indeterminate"===e}function Z(e){return S(e)?"indeterminate":e?"checked":"unchecked"}C.displayName=k},6394:function(e,s,t){"use strict";t.d(s,{f:function(){return l}});var i=t(2265),a=t(66840),r=t(57437),n=i.forwardRef((e,s)=>(0,r.jsx)(a.WV.label,{...e,ref:s,onMouseDown:s=>{var t;s.target.closest("button, input, select, textarea")||(null===(t=e.onMouseDown)||void 0===t||t.call(e,s),!s.defaultPrevented&&s.detail>1&&s.preventDefault())}}));n.displayName="Label";var l=n}},function(e){e.O(0,[8310,9851,7629,7093,6148,847,1942,7648,7823,8068,5799,605,4567,1206,5338,1785,3246,9877,6373,3832,8030,2971,2117,1744],function(){return e(e.s=62839)}),_N_E=e.O()}]);
|
|
2
|
+
//# sourceMappingURL=page-5e2be54e76b8509c.js.map
|