@apteva/apteva-darwin-arm64 0.4.52 → 0.4.56
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/apteva +0 -0
- package/dist/ActivityPage.nx7edj1s.js +3 -0
- package/dist/{ActivityPage.9v5ha2p7.js.map → ActivityPage.nx7edj1s.js.map} +2 -2
- package/dist/ApiDocsPage.rwys8wpd.js +4 -0
- package/dist/{ApiDocsPage.qsehxvkb.js.map → ApiDocsPage.rwys8wpd.js.map} +2 -2
- package/dist/App.2j4tpeys.js +61 -0
- package/dist/{App.anvw0hjc.js.map → App.2j4tpeys.js.map} +3 -3
- package/dist/{App.jdkx6eqd.js → App.8cvz3ngj.js} +2 -2
- package/dist/{App.jdkx6eqd.js.map → App.8cvz3ngj.js.map} +1 -1
- package/dist/App.a2rb0ne3.js +4 -0
- package/dist/{App.sd685nt9.js.map → App.a2rb0ne3.js.map} +2 -2
- package/dist/App.aybz4ae0.js +53 -0
- package/dist/{App.d9vcm6zs.js.map → App.aybz4ae0.js.map} +3 -3
- package/dist/App.bjefj5zs.js +4 -0
- package/dist/{App.aexwv4rk.js.map → App.bjefj5zs.js.map} +2 -2
- package/dist/App.cnbb1872.js +4 -0
- package/dist/{App.x6x8s16g.js.map → App.cnbb1872.js.map} +2 -2
- package/dist/App.cv6e5yds.js +4 -0
- package/dist/App.cv6e5yds.js.map +10 -0
- package/dist/App.eqd061d2.js +4 -0
- package/dist/{App.dmvykj97.js.map → App.eqd061d2.js.map} +3 -3
- package/dist/App.fy5bef1p.js +20 -0
- package/dist/{App.shfd8tp9.js.map → App.fy5bef1p.js.map} +6 -5
- package/dist/App.mxcz65n1.js +4 -0
- package/dist/{App.cjcyr5aj.js.map → App.mxcz65n1.js.map} +2 -2
- package/dist/App.nvpvg5yh.js +13 -0
- package/dist/{App.j4ec9k18.js.map → App.nvpvg5yh.js.map} +2 -2
- package/dist/{App.2j20h2gt.js → App.rvnjekh6.js} +3 -3
- package/dist/{App.2j20h2gt.js.map → App.rvnjekh6.js.map} +2 -2
- package/dist/App.was53rtk.js +4 -0
- package/dist/{App.kz3qyyre.js.map → App.was53rtk.js.map} +2 -2
- package/dist/App.wqjbggrj.js +4 -0
- package/dist/{App.e2kkda2a.js.map → App.wqjbggrj.js.map} +2 -2
- package/dist/App.z92hp4k3.js +221 -0
- package/dist/{App.j0xwtdd7.js.map → App.z92hp4k3.js.map} +11 -11
- package/dist/{App.wghtdzsk.js → App.zn4mw16t.js} +1 -1
- package/dist/ConnectionsPage.qfyks0xm.js +3 -0
- package/dist/McpPage.y6vgt9ej.js +3 -0
- package/dist/SettingsPage.fkw8berr.js +3 -0
- package/dist/SkillsPage.48zztx44.js +3 -0
- package/dist/TasksPage.v930en79.js +3 -0
- package/dist/TelemetryPage.xxebs3s9.js +3 -0
- package/dist/TelemetryPage.xxebs3s9.js.map +9 -0
- package/dist/TestsPage.1xtfmbrg.js +3 -0
- package/dist/ThreadsPage.xazwab60.js +3 -0
- package/dist/ThreadsPage.xazwab60.js.map +9 -0
- package/dist/apteva-kit.css +1 -1
- package/dist/index.html +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/dist/ActivityPage.9v5ha2p7.js +0 -3
- package/dist/ApiDocsPage.qsehxvkb.js +0 -4
- package/dist/App.2md3x3z7.js +0 -4
- package/dist/App.2md3x3z7.js.map +0 -10
- package/dist/App.aexwv4rk.js +0 -4
- package/dist/App.anvw0hjc.js +0 -61
- package/dist/App.cjcyr5aj.js +0 -4
- package/dist/App.d9vcm6zs.js +0 -53
- package/dist/App.dmvykj97.js +0 -4
- package/dist/App.e2kkda2a.js +0 -4
- package/dist/App.j0xwtdd7.js +0 -221
- package/dist/App.j4ec9k18.js +0 -13
- package/dist/App.kz3qyyre.js +0 -4
- package/dist/App.sd685nt9.js +0 -4
- package/dist/App.shfd8tp9.js +0 -20
- package/dist/App.x6x8s16g.js +0 -4
- package/dist/ConnectionsPage.1dyyfqbk.js +0 -3
- package/dist/McpPage.xvr8hk05.js +0 -3
- package/dist/SettingsPage.4r1nbxvp.js +0 -3
- package/dist/SkillsPage.jw7carjq.js +0 -3
- package/dist/TasksPage.r8txe0e9.js +0 -3
- package/dist/TelemetryPage.sqnsfrht.js +0 -3
- package/dist/TelemetryPage.sqnsfrht.js.map +0 -9
- package/dist/TestsPage.pkymr7yt.js +0 -3
- package/dist/ThreadsPage.49tgq4fq.js +0 -3
- package/dist/ThreadsPage.49tgq4fq.js.map +0 -9
- /package/dist/{ConnectionsPage.1dyyfqbk.js.map → ConnectionsPage.qfyks0xm.js.map} +0 -0
- /package/dist/{McpPage.xvr8hk05.js.map → McpPage.y6vgt9ej.js.map} +0 -0
- /package/dist/{SettingsPage.4r1nbxvp.js.map → SettingsPage.fkw8berr.js.map} +0 -0
- /package/dist/{SkillsPage.jw7carjq.js.map → SkillsPage.48zztx44.js.map} +0 -0
- /package/dist/{TasksPage.r8txe0e9.js.map → TasksPage.v930en79.js.map} +0 -0
- /package/dist/{TestsPage.pkymr7yt.js.map → TestsPage.1xtfmbrg.js.map} +0 -0
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n",
|
|
7
7
|
"function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;"
|
|
8
8
|
],
|
|
9
|
-
"mappings": "
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "2BA55B82AC99F89464756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{Y as c,aa as Rq,ba as Gq,ka as Jq}from"./App.fy5bef1p.js";var Q=c(Rq(),1);var q=c(Gq(),1);function C(H){return H.authSchemes.some((J)=>J.toUpperCase()==="API_KEY")}function Qq(H){return H.authSchemes.some((J)=>J.toUpperCase()==="OAUTH2")}function Lq(H){return C(H)&&Qq(H)}function wq({providerId:H="composio",projectId:J,onConnectionComplete:U,onBrowseTriggers:F,hideMcpConfig:y}){let{authFetch:Z}=Jq(),[A,I]=Q.useState([]),[k,P]=Q.useState([]),[S,h]=Q.useState(!0),[R,Wq]=Q.useState(""),[g,O]=Q.useState(null),[b,D]=Q.useState(null),[s,_]=Q.useState(null),[L,M]=Q.useState(null),[X,w]=Q.useState(null),[f,u]=Q.useState(""),[V,x]=Q.useState({}),[T,E]=Q.useState(null),[v,n]=Q.useState(""),[o,l]=Q.useState(!1),[t,j]=Q.useState(null),[r,i]=Q.useState(null),N=Q.useCallback(async()=>{h(!0),_(null);let z=J&&J!=="unassigned"?`?project_id=${J}`:"";try{let[G,W]=await Promise.all([Z(`/api/integrations/${H}/apps${z}`),Z(`/api/integrations/${H}/connected${z}`)]),Y=await G.json(),$=await W.json();I(Y.apps||[]),P($.accounts||[])}catch(G){console.error("Failed to fetch integrations:",G),_("Failed to load integrations")}h(!1)},[Z,H,J]);Q.useEffect(()=>{N()},[N]),Q.useEffect(()=>{if(new URLSearchParams(window.location.search).get("connected"))window.history.replaceState({},"",window.location.pathname),N(),U?.()},[N,U]),Q.useEffect(()=>{if(!b?.connectionId)return;let z=J&&J!=="unassigned"?`?project_id=${J}`:"",G=setInterval(async()=>{try{let Y=await(await Z(`/api/integrations/${H}/connection/${b.connectionId}${z}`)).json();if(Y.connection?.status==="active")D(null),O(null),N(),U?.();else if(Y.connection?.status==="failed")D(null),O(null),_(`Connection to ${b.appSlug} failed`)}catch(W){}},2000);return()=>clearInterval(G)},[b,Z,H,J,N,U]);let m=async(z,G,W,Y)=>{if(Lq(z)&&!G&&!Y&&!W){M({app:z});return}if(C(z)&&!G&&!Y&&!W){w({app:z}),u(""),x({});return}O(z.slug),_(null);try{let $={appSlug:z.slug};if(Y&&Object.keys(Y).length>0)$.credentials={authScheme:"API_KEY",fields:Y};else if(G)$.credentials={authScheme:"API_KEY",apiKey:G};let kq=J&&J!=="unassigned"?`?project_id=${J}`:"",qq=await Z(`/api/integrations/${H}/connect${kq}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify($)}),B=await qq.json();if(!qq.ok){_(B.error||"Failed to initiate connection"),O(null),w(null);return}if(B.status==="active"||!B.redirectUrl){O(null),w(null),N(),U?.();return}if(B.redirectUrl){D({appSlug:z.slug,connectionId:B.connectionId});let zq=window.open(B.redirectUrl,`connect-${z.slug}`,"width=600,height=700,left=200,top=100");if(!zq||zq.closed)window.location.href=B.redirectUrl}}catch($){_(`Failed to connect: ${$}`),O(null),w(null)}},Xq=(z)=>{if(z.preventDefault(),!X)return;if(X.app.credentialFields&&X.app.credentialFields.length>0){if(!X.app.credentialFields.filter(($)=>$.required!==!1).every(($)=>V[$.name]?.trim()))return;m(X.app,void 0,!1,V)}else{if(!f.trim())return;m(X.app,f.trim())}},Yq=async(z)=>{let G=J&&J!=="unassigned"?`?project_id=${J}`:"";try{let W=await Z(`/api/integrations/${H}/connection/${z.id}${G}`,{method:"DELETE"});if(W.ok)N();else{let Y=await W.json();_(Y.error||"Failed to disconnect")}}catch(W){_(`Failed to disconnect: ${W}`)}},Zq=(z)=>{E({app:z}),n(`${z.name} MCP`),j(null)},_q=async()=>{if(!T||!v.trim())return;l(!0),_(null);try{let z=J&&J!=="unassigned"?`?project_id=${J}`:"",G=await Z(`/api/integrations/${H}/configs${z}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:v.replace(/[^a-zA-Z0-9\s-]/g,"").substring(0,30),toolkitSlug:T.app.slug})}),W=await G.json();if(!G.ok){_(W.error||"Failed to create MCP config"),l(!1);return}let Y=!1;if(W.config?.id)try{Y=(await Z(`/api/integrations/${H}/configs/${W.config.id}/add${z}`,{method:"POST"})).ok}catch{}j(v),U?.()}catch(z){_(`Failed to create MCP config: ${z}`)}finally{l(!1)}},$q=(z)=>{i({message:`Disconnect ${z.appName}?`,onConfirm:()=>{Yq(z),i(null)}})},a=(z)=>{return k.some((G)=>G.status==="active"&&(G.appId===z.slug||z.providerSlug&&G.appId===z.providerSlug))},p=(z)=>{return k.find((G)=>G.appId===z.slug&&G.status==="active")||z.providerSlug&&k.find((G)=>G.appId===z.providerSlug&&G.status==="active")||k.find((G)=>G.appId===z.slug)||z.providerSlug&&k.find((G)=>G.appId===z.providerSlug)||void 0},e=A.filter((z)=>{if(!R)return!0;let G=R.toLowerCase();return z.name.toLowerCase().includes(G)||z.slug.toLowerCase().includes(G)||z.description?.toLowerCase().includes(G)||z.categories.some((W)=>W.toLowerCase().includes(G))}),d=e.filter((z)=>a(z)),K=e.filter((z)=>!a(z));if(S)return q.jsxDEV("div",{className:"text-center py-8 text-[var(--color-text-muted)]",children:"Loading apps..."},void 0,!1,void 0,this);return q.jsxDEV("div",{className:"space-y-6",children:[L&&q.jsxDEV("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:q.jsxDEV("div",{className:"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-md mx-4",children:[q.jsxDEV("div",{className:"flex items-center gap-3 mb-4",children:[L.app.logo&&q.jsxDEV("img",{src:L.app.logo,alt:L.app.name,className:"w-10 h-10 object-contain"},void 0,!1,void 0,this),q.jsxDEV("div",{children:[q.jsxDEV("h3",{className:"font-medium",children:["Connect ",L.app.name]},void 0,!0,void 0,this),q.jsxDEV("p",{className:"text-xs text-[var(--color-text-muted)]",children:"Choose how to authenticate"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("div",{className:"space-y-3",children:[q.jsxDEV("button",{onClick:()=>{M(null),w({app:L.app}),u(""),x({})},className:"w-full text-left p-3 bg-[var(--color-bg)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] rounded-lg transition",children:[q.jsxDEV("div",{className:"font-medium text-sm",children:"API Key"},void 0,!1,void 0,this),q.jsxDEV("div",{className:"text-xs text-[var(--color-text-muted)] mt-0.5",children:["Enter your ",L.app.name," API key directly"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("button",{onClick:()=>{M(null),m(L.app,void 0,!0)},className:"w-full text-left p-3 bg-[var(--color-bg)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] rounded-lg transition",children:[q.jsxDEV("div",{className:"font-medium text-sm",children:"OAuth"},void 0,!1,void 0,this),q.jsxDEV("div",{className:"text-xs text-[var(--color-text-muted)] mt-0.5",children:["Sign in with your ",L.app.name," account"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("button",{onClick:()=>M(null),className:"w-full text-sm text-[var(--color-text-muted)] hover:text-white mt-4 py-2 transition",children:"Cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),X&&q.jsxDEV("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:q.jsxDEV("div",{className:"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-md mx-4",children:[q.jsxDEV("div",{className:"flex items-center gap-3 mb-4",children:[X.app.logo&&q.jsxDEV("img",{src:X.app.logo,alt:X.app.name,className:"w-10 h-10 object-contain"},void 0,!1,void 0,this),q.jsxDEV("div",{children:[q.jsxDEV("h3",{className:"font-medium",children:["Connect ",X.app.name]},void 0,!0,void 0,this),q.jsxDEV("p",{className:"text-xs text-[var(--color-text-muted)]",children:X.app.credentialFields?.length?"Enter your credentials to connect":"Enter your API key to connect"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("form",{onSubmit:Xq,children:[X.app.credentialFields&&X.app.credentialFields.length>0?q.jsxDEV("div",{className:"space-y-3 mb-4",children:X.app.credentialFields.map((z,G)=>q.jsxDEV("div",{children:[q.jsxDEV("label",{className:"block text-xs text-[var(--color-text-secondary)] mb-1",children:[z.name.replace(/([A-Z])/g," $1").replace(/[-_]/g," ").replace(/\b\w/g,(W)=>W.toUpperCase()).trim(),z.required!==!1&&q.jsxDEV("span",{className:"text-red-400 ml-0.5",children:"*"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),z.description&&q.jsxDEV("p",{className:"text-[10px] text-[var(--color-text-faint)] mb-1",children:z.description},void 0,!1,void 0,this),q.jsxDEV("input",{type:"password",value:V[z.name]||"",onChange:(W)=>x((Y)=>({...Y,[z.name]:W.target.value})),placeholder:`Enter ${z.name}...`,className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 focus:outline-none focus:border-[var(--color-accent)]",autoFocus:G===0},void 0,!1,void 0,this)]},z.name,!0,void 0,this))},void 0,!1,void 0,this):q.jsxDEV("input",{type:"password",value:f,onChange:(z)=>u(z.target.value),placeholder:"Enter API Key...",className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 mb-4 focus:outline-none focus:border-[var(--color-accent)]",autoFocus:!0},void 0,!1,void 0,this),q.jsxDEV("div",{className:"flex gap-2",children:[q.jsxDEV("button",{type:"button",onClick:()=>w(null),className:"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 rounded transition",children:"Cancel"},void 0,!1,void 0,this),q.jsxDEV("button",{type:"submit",disabled:g===X.app.slug||(X.app.credentialFields?.length?!X.app.credentialFields.filter((z)=>z.required!==!1).every((z)=>V[z.name]?.trim()):!f.trim()),className:"flex-1 text-sm bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-white px-4 py-2 rounded transition disabled:opacity-50",children:g===X.app.slug?"Connecting...":"Connect"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),T&&q.jsxDEV("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:q.jsxDEV("div",{className:"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-md mx-4",children:t?q.jsxDEV(q.Fragment,{children:[q.jsxDEV("div",{className:"text-center mb-4",children:[q.jsxDEV("div",{className:"w-12 h-12 bg-green-500/20 rounded-full flex items-center justify-center mx-auto mb-3",children:q.jsxDEV("span",{className:"text-green-400 text-2xl",children:"✓"},void 0,!1,void 0,this)},void 0,!1,void 0,this),q.jsxDEV("h3",{className:"font-medium text-lg",children:"MCP Config Created!"},void 0,!1,void 0,this),q.jsxDEV("p",{className:"text-sm text-[var(--color-text-secondary)] mt-2",children:['"',t,'" has been created and added to your servers.']},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("button",{onClick:()=>{E(null),j(null)},className:"w-full text-sm bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-white px-4 py-2 rounded transition",children:"Done"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):q.jsxDEV(q.Fragment,{children:[q.jsxDEV("div",{className:"flex items-center gap-3 mb-4",children:[T.app.logo&&q.jsxDEV("img",{src:T.app.logo,alt:T.app.name,className:"w-10 h-10 object-contain"},void 0,!1,void 0,this),q.jsxDEV("div",{children:[q.jsxDEV("h3",{className:"font-medium",children:"Create MCP Config"},void 0,!1,void 0,this),q.jsxDEV("p",{className:"text-xs text-[var(--color-text-muted)]",children:["Create an MCP config for ",T.app.name]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("form",{onSubmit:(z)=>{z.preventDefault(),_q()},children:[q.jsxDEV("label",{className:"block text-xs text-[var(--color-text-secondary)] mb-1",children:"Config Name"},void 0,!1,void 0,this),q.jsxDEV("input",{type:"text",value:v,onChange:(z)=>n(z.target.value),placeholder:"Enter config name...",className:"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 mb-4 focus:outline-none focus:border-[var(--color-accent)]",autoFocus:!0,maxLength:30},void 0,!1,void 0,this),q.jsxDEV("div",{className:"flex gap-2",children:[q.jsxDEV("button",{type:"button",onClick:()=>E(null),className:"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 rounded transition",children:"Cancel"},void 0,!1,void 0,this),q.jsxDEV("button",{type:"submit",disabled:!v.trim()||o,className:"flex-1 text-sm bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-white px-4 py-2 rounded transition disabled:opacity-50",children:o?"Creating...":"Create Config"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this),r&&q.jsxDEV("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:q.jsxDEV("div",{className:"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-sm mx-4",children:[q.jsxDEV("p",{className:"text-center mb-4",children:r.message},void 0,!1,void 0,this),q.jsxDEV("div",{className:"flex gap-2",children:[q.jsxDEV("button",{onClick:()=>i(null),className:"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 rounded transition",children:"Cancel"},void 0,!1,void 0,this),q.jsxDEV("button",{onClick:r.onConfirm,className:"flex-1 text-sm bg-red-500 hover:bg-red-600 text-white px-4 py-2 rounded transition",children:"Confirm"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),s&&q.jsxDEV("div",{className:"text-red-400 text-sm p-3 bg-red-500/10 border border-red-500/20 rounded-lg flex items-center justify-between",children:[q.jsxDEV("span",{children:s},void 0,!1,void 0,this),q.jsxDEV("button",{onClick:()=>_(null),className:"text-red-400 hover:text-red-300",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),b&&q.jsxDEV("div",{className:"text-yellow-400 text-sm p-3 bg-yellow-500/10 border border-yellow-500/20 rounded-lg flex items-center gap-2",children:[q.jsxDEV("span",{className:"animate-spin",children:"⟳"},void 0,!1,void 0,this),q.jsxDEV("span",{children:["Waiting for ",b.appSlug," authorization..."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("div",{children:q.jsxDEV("input",{type:"text",value:R,onChange:(z)=>Wq(z.target.value),placeholder:"Search apps...",className:"w-full bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 focus:outline-none focus:border-[var(--color-accent)]"},void 0,!1,void 0,this)},void 0,!1,void 0,this),d.length>0&&q.jsxDEV("div",{children:[q.jsxDEV("h3",{className:"text-sm font-medium text-[var(--color-text-secondary)] mb-3",children:["Connected (",d.length,")"]},void 0,!0,void 0,this),q.jsxDEV("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:d.map((z)=>q.jsxDEV(Hq,{app:z,connection:p(z),onConnect:()=>m(z),onDisconnect:()=>{let G=p(z);if(G)$q(G)},onCreateMcpConfig:y?void 0:()=>Zq(z),onBrowseTriggers:F?()=>F(z.slug):void 0,onUpdateKey:C(z)?()=>{w({app:z}),u(""),x({})}:void 0,connecting:g===z.slug},z.id,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("div",{children:[q.jsxDEV("h3",{className:"text-sm font-medium text-[var(--color-text-secondary)] mb-3",children:["Available Apps (",K.length,")"]},void 0,!0,void 0,this),K.length===0?q.jsxDEV("p",{className:"text-[var(--color-text-muted)] text-sm",children:R?"No apps match your search":"No apps available"},void 0,!1,void 0,this):q.jsxDEV("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-3",children:K.slice(0,50).map((z)=>q.jsxDEV(Hq,{app:z,onConnect:()=>m(z),connecting:g===z.slug},z.id,!1,void 0,this))},void 0,!1,void 0,this),K.length>50&&q.jsxDEV("p",{className:"text-xs text-[var(--color-text-faint)] mt-3 text-center",children:["Showing first 50 of ",K.length," apps. Use search to find more."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Hq({app:H,connection:J,onConnect:U,onDisconnect:F,onCreateMcpConfig:y,onBrowseTriggers:Z,onUpdateKey:A,connecting:I}){let k=J?.status==="active",P=C(H),S=Qq(H),h=P&&S;return q.jsxDEV("div",{className:`bg-[var(--color-surface)] border rounded-lg p-3 transition ${k?"border-green-500/30":"border-[var(--color-border)] hover:border-[var(--color-border-light)]"}`,children:[q.jsxDEV("div",{className:"flex items-start gap-3",children:[q.jsxDEV("div",{className:"w-10 h-10 rounded bg-[var(--color-surface-raised)] flex items-center justify-center flex-shrink-0 overflow-hidden",children:H.logo?q.jsxDEV("img",{src:H.logo,alt:H.name,className:"w-8 h-8 object-contain",onError:(R)=>{R.target.style.display="none"}},void 0,!1,void 0,this):q.jsxDEV("span",{className:"text-lg",children:H.name[0]?.toUpperCase()},void 0,!1,void 0,this)},void 0,!1,void 0,this),q.jsxDEV("div",{className:"flex-1 min-w-0",children:[q.jsxDEV("div",{className:"flex items-center gap-2",children:[q.jsxDEV("h4",{className:"font-medium text-sm truncate",children:H.name},void 0,!1,void 0,this),k&&q.jsxDEV("span",{className:"text-xs text-green-400",children:"✓"},void 0,!1,void 0,this),!k&&P&&!S&&q.jsxDEV("span",{className:"text-[10px] bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)] px-1.5 py-0.5 rounded",title:"Requires API Key",children:"API Key"},void 0,!1,void 0,this),!k&&h&&q.jsxDEV("span",{className:"text-[10px] bg-[#1a2a1a] text-[#6a6] px-1.5 py-0.5 rounded",title:"Supports API Key or OAuth",children:"API Key / OAuth"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.description&&q.jsxDEV("p",{className:"text-xs text-[var(--color-text-muted)] line-clamp-2 mt-0.5",children:H.description},void 0,!1,void 0,this),H.categories.length>0&&q.jsxDEV("div",{className:"flex flex-wrap gap-1 mt-1",children:H.categories.slice(0,2).map((R)=>q.jsxDEV("span",{className:"text-[10px] bg-[var(--color-surface-raised)] text-[var(--color-text-faint)] px-1.5 py-0.5 rounded",children:R},R,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),q.jsxDEV("div",{className:"mt-3 flex gap-2",children:k?q.jsxDEV(q.Fragment,{children:[y&&q.jsxDEV("button",{onClick:y,className:"flex-1 text-xs bg-[#1a2a1a] hover:bg-[#1a3a1a] border border-green-500/30 hover:border-green-500/50 text-green-400 px-3 py-1.5 rounded transition",children:"Create MCP Config"},void 0,!1,void 0,this),Z&&q.jsxDEV("button",{onClick:Z,className:"flex-1 text-xs bg-[#1a1a2a] hover:bg-[#1a1a3a] border border-blue-500/30 hover:border-blue-500/50 text-blue-400 px-3 py-1.5 rounded transition",children:"Browse Triggers"},void 0,!1,void 0,this),A&&q.jsxDEV("button",{onClick:A,className:"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-accent)] transition px-2",title:"Update API Key",children:"Key"},void 0,!1,void 0,this),F&&q.jsxDEV("button",{onClick:F,className:"text-xs text-[var(--color-text-muted)] hover:text-red-400 transition px-2",title:"Disconnect",children:"×"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):q.jsxDEV("button",{onClick:U,disabled:I,className:"w-full text-xs bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-3 py-1.5 rounded transition disabled:opacity-50",children:I?"Connecting...":P&&!S?"Enter API Key":"Connect"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}
|
|
2
|
+
export{wq as j};
|
|
3
|
+
|
|
4
|
+
//# debugId=2F7BCCE25B976A9A64756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import React, { useState, useEffect, useCallback } from \"react\";\nimport { useAuth } from \"../../context\";\n\n// Types\ninterface IntegrationApp {\n id: string;\n name: string;\n slug: string;\n description: string | null;\n logo: string | null;\n categories: string[];\n authSchemes: string[];\n providerSlug?: string;\n credentialFields?: {\n name: string;\n description?: string;\n required?: boolean;\n }[];\n}\n\ninterface ConnectedAccount {\n id: string;\n appId: string;\n appName: string;\n status: \"active\" | \"pending\" | \"failed\" | \"expired\";\n createdAt: string;\n}\n\ninterface IntegrationProvider {\n id: string;\n name: string;\n connected: boolean;\n}\n\n// Check if app supports API_KEY auth\nfunction supportsApiKey(app: IntegrationApp): boolean {\n return app.authSchemes.some(s => s.toUpperCase() === \"API_KEY\");\n}\n\n// Check if app supports OAuth\nfunction supportsOAuth(app: IntegrationApp): boolean {\n return app.authSchemes.some(s => s.toUpperCase() === \"OAUTH2\");\n}\n\n// Check if app supports multiple auth methods\nfunction hasMultipleAuthMethods(app: IntegrationApp): boolean {\n return supportsApiKey(app) && supportsOAuth(app);\n}\n\n// Main component\nexport function IntegrationsPanel({\n providerId = \"composio\",\n projectId,\n onConnectionComplete,\n onBrowseTriggers,\n hideMcpConfig,\n}: {\n providerId?: string;\n projectId?: string | null;\n onConnectionComplete?: () => void;\n onBrowseTriggers?: (toolkitSlug: string) => void;\n hideMcpConfig?: boolean;\n}) {\n const { authFetch } = useAuth();\n const [apps, setApps] = useState<IntegrationApp[]>([]);\n const [connectedAccounts, setConnectedAccounts] = useState<ConnectedAccount[]>([]);\n const [loading, setLoading] = useState(true);\n const [search, setSearch] = useState(\"\");\n const [connecting, setConnecting] = useState<string | null>(null);\n const [pendingConnection, setPendingConnection] = useState<{\n appSlug: string;\n connectionId?: string;\n } | null>(null);\n const [error, setError] = useState<string | null>(null);\n // For auth method selection (when app supports both OAuth and API Key)\n const [authMethodModal, setAuthMethodModal] = useState<{ app: IntegrationApp } | null>(null);\n // For API Key / credential modal\n const [apiKeyModal, setApiKeyModal] = useState<{ app: IntegrationApp } | null>(null);\n const [apiKeyInput, setApiKeyInput] = useState(\"\");\n const [credentialInputs, setCredentialInputs] = useState<Record<string, string>>({});\n // For MCP config creation modal\n const [mcpConfigModal, setMcpConfigModal] = useState<{ app: IntegrationApp } | null>(null);\n const [mcpConfigName, setMcpConfigName] = useState(\"\");\n const [mcpConfigCreating, setMcpConfigCreating] = useState(false);\n const [mcpConfigSuccess, setMcpConfigSuccess] = useState<string | null>(null);\n // For confirmation modal\n const [confirmModal, setConfirmModal] = useState<{\n message: string;\n onConfirm: () => void;\n } | null>(null);\n\n // Fetch apps and connected accounts\n const fetchData = useCallback(async () => {\n setLoading(true);\n setError(null);\n const projectParam = projectId && projectId !== \"unassigned\" ? `?project_id=${projectId}` : \"\";\n try {\n const [appsRes, connectedRes] = await Promise.all([\n authFetch(`/api/integrations/${providerId}/apps${projectParam}`),\n authFetch(`/api/integrations/${providerId}/connected${projectParam}`),\n ]);\n\n const appsData = await appsRes.json();\n const connectedData = await connectedRes.json();\n\n setApps(appsData.apps || []);\n setConnectedAccounts(connectedData.accounts || []);\n } catch (e) {\n console.error(\"Failed to fetch integrations:\", e);\n setError(\"Failed to load integrations\");\n }\n setLoading(false);\n }, [authFetch, providerId, projectId]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n // Check for connection completion from URL params\n useEffect(() => {\n const params = new URLSearchParams(window.location.search);\n const connectedApp = params.get(\"connected\");\n if (connectedApp) {\n // Remove the query param\n window.history.replaceState({}, \"\", window.location.pathname);\n // Refresh to show new connection\n fetchData();\n onConnectionComplete?.();\n }\n }, [fetchData, onConnectionComplete]);\n\n // Poll for pending connection status\n useEffect(() => {\n if (!pendingConnection?.connectionId) return;\n const projectParam = projectId && projectId !== \"unassigned\" ? `?project_id=${projectId}` : \"\";\n\n const pollInterval = setInterval(async () => {\n try {\n const res = await authFetch(\n `/api/integrations/${providerId}/connection/${pendingConnection.connectionId}${projectParam}`\n );\n const data = await res.json();\n\n if (data.connection?.status === \"active\") {\n setPendingConnection(null);\n setConnecting(null);\n fetchData();\n onConnectionComplete?.();\n } else if (data.connection?.status === \"failed\") {\n setPendingConnection(null);\n setConnecting(null);\n setError(`Connection to ${pendingConnection.appSlug} failed`);\n }\n } catch (e) {\n // Keep polling\n }\n }, 2000);\n\n return () => clearInterval(pollInterval);\n }, [pendingConnection, authFetch, providerId, projectId, fetchData, onConnectionComplete]);\n\n // Initiate connection\n const connectApp = async (app: IntegrationApp, apiKey?: string, forceOAuth?: boolean, fields?: Record<string, string>) => {\n // If app supports multiple auth methods and user hasn't chosen, show choice\n if (hasMultipleAuthMethods(app) && !apiKey && !fields && !forceOAuth) {\n setAuthMethodModal({ app });\n return;\n }\n\n // If app supports API key (and user didn't choose OAuth), show credential modal\n if (supportsApiKey(app) && !apiKey && !fields && !forceOAuth) {\n setApiKeyModal({ app });\n setApiKeyInput(\"\");\n setCredentialInputs({});\n return;\n }\n\n setConnecting(app.slug);\n setError(null);\n\n try {\n // Build request body\n const body: any = { appSlug: app.slug };\n if (fields && Object.keys(fields).length > 0) {\n // Multi-field credentials\n body.credentials = {\n authScheme: \"API_KEY\",\n fields,\n };\n } else if (apiKey) {\n body.credentials = {\n authScheme: \"API_KEY\",\n apiKey,\n };\n }\n\n const projectParam = projectId && projectId !== \"unassigned\" ? `?project_id=${projectId}` : \"\";\n const res = await authFetch(`/api/integrations/${providerId}/connect${projectParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n\n const data = await res.json();\n\n if (!res.ok) {\n setError(data.error || \"Failed to initiate connection\");\n setConnecting(null);\n setApiKeyModal(null);\n return;\n }\n\n // API_KEY connections are immediately active (no redirect)\n if (data.status === \"active\" || !data.redirectUrl) {\n setConnecting(null);\n setApiKeyModal(null);\n fetchData();\n onConnectionComplete?.();\n return;\n }\n\n if (data.redirectUrl) {\n // Store pending connection for polling\n setPendingConnection({\n appSlug: app.slug,\n connectionId: data.connectionId,\n });\n\n // Open OAuth in popup\n const popup = window.open(\n data.redirectUrl,\n `connect-${app.slug}`,\n \"width=600,height=700,left=200,top=100\"\n );\n\n // If popup blocked, redirect instead\n if (!popup || popup.closed) {\n window.location.href = data.redirectUrl;\n }\n }\n } catch (e) {\n setError(`Failed to connect: ${e}`);\n setConnecting(null);\n setApiKeyModal(null);\n }\n };\n\n // Handle API key / credential form submission\n const handleApiKeySubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (!apiKeyModal) return;\n const hasFields = apiKeyModal.app.credentialFields && apiKeyModal.app.credentialFields.length > 0;\n if (hasFields) {\n // Check required fields are filled\n const requiredFields = apiKeyModal.app.credentialFields!.filter(f => f.required !== false);\n const allFilled = requiredFields.every(f => credentialInputs[f.name]?.trim());\n if (!allFilled) return;\n connectApp(apiKeyModal.app, undefined, false, credentialInputs);\n } else {\n if (!apiKeyInput.trim()) return;\n connectApp(apiKeyModal.app, apiKeyInput.trim());\n }\n };\n\n // Disconnect (called after confirmation)\n const disconnectApp = async (account: ConnectedAccount) => {\n const projectParam = projectId && projectId !== \"unassigned\" ? `?project_id=${projectId}` : \"\";\n try {\n const res = await authFetch(\n `/api/integrations/${providerId}/connection/${account.id}${projectParam}`,\n { method: \"DELETE\" }\n );\n\n if (res.ok) {\n fetchData();\n } else {\n const data = await res.json();\n setError(data.error || \"Failed to disconnect\");\n }\n } catch (e) {\n setError(`Failed to disconnect: ${e}`);\n }\n };\n\n // Open MCP config creation modal\n const openMcpConfigModal = (app: IntegrationApp) => {\n setMcpConfigModal({ app });\n setMcpConfigName(`${app.name} MCP`);\n setMcpConfigSuccess(null);\n };\n\n // Create MCP config from connected app\n const createMcpConfig = async () => {\n if (!mcpConfigModal || !mcpConfigName.trim()) return;\n\n setMcpConfigCreating(true);\n setError(null);\n\n try {\n const projectParam = projectId && projectId !== \"unassigned\" ? `?project_id=${projectId}` : \"\";\n const res = await authFetch(`/api/integrations/${providerId}/configs${projectParam}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n name: mcpConfigName.replace(/[^a-zA-Z0-9\\s-]/g, \"\").substring(0, 30),\n toolkitSlug: mcpConfigModal.app.slug,\n }),\n });\n\n const data = await res.json();\n\n if (!res.ok) {\n setError(data.error || \"Failed to create MCP config\");\n setMcpConfigCreating(false);\n return;\n }\n\n // Auto-add the server locally\n let autoAdded = false;\n if (data.config?.id) {\n try {\n const addRes = await authFetch(\n `/api/integrations/${providerId}/configs/${data.config.id}/add${projectParam}`,\n { method: \"POST\" }\n );\n autoAdded = addRes.ok;\n } catch {\n // Non-fatal — server was still created on the provider\n }\n }\n\n setMcpConfigSuccess(mcpConfigName);\n onConnectionComplete?.();\n } catch (e) {\n setError(`Failed to create MCP config: ${e}`);\n } finally {\n setMcpConfigCreating(false);\n }\n };\n\n // Handle disconnect with confirmation modal\n const handleDisconnect = (account: ConnectedAccount) => {\n setConfirmModal({\n message: `Disconnect ${account.appName}?`,\n onConfirm: () => {\n disconnectApp(account);\n setConfirmModal(null);\n },\n });\n };\n\n // Check if app is connected (also matches via providerSlug for multi-toolkit providers)\n const isConnected = (app: IntegrationApp) => {\n return connectedAccounts.some(\n (a) => a.status === \"active\" && (\n a.appId === app.slug ||\n (app.providerSlug && a.appId === app.providerSlug)\n )\n );\n };\n\n // Get connection for app (prefer active account, also matches via providerSlug)\n const getConnection = (app: IntegrationApp) => {\n return connectedAccounts.find((a) => a.appId === app.slug && a.status === \"active\")\n || (app.providerSlug && connectedAccounts.find((a) => a.appId === app.providerSlug && a.status === \"active\"))\n || connectedAccounts.find((a) => a.appId === app.slug)\n || (app.providerSlug && connectedAccounts.find((a) => a.appId === app.providerSlug))\n || undefined;\n };\n\n // Filter apps\n const filteredApps = apps.filter((app) => {\n if (!search) return true;\n const s = search.toLowerCase();\n return (\n app.name.toLowerCase().includes(s) ||\n app.slug.toLowerCase().includes(s) ||\n app.description?.toLowerCase().includes(s) ||\n app.categories.some((c) => c.toLowerCase().includes(s))\n );\n });\n\n // Group by connected/not connected\n const connectedApps = filteredApps.filter((app) => isConnected(app));\n const availableApps = filteredApps.filter((app) => !isConnected(app));\n\n if (loading) {\n return <div className=\"text-center py-8 text-[var(--color-text-muted)]\">Loading apps...</div>;\n }\n\n return (\n <div className=\"space-y-6\">\n {/* Auth Method Choice Modal */}\n {authMethodModal && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <div className=\"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-md mx-4\">\n <div className=\"flex items-center gap-3 mb-4\">\n {authMethodModal.app.logo && (\n <img\n src={authMethodModal.app.logo}\n alt={authMethodModal.app.name}\n className=\"w-10 h-10 object-contain\"\n />\n )}\n <div>\n <h3 className=\"font-medium\">Connect {authMethodModal.app.name}</h3>\n <p className=\"text-xs text-[var(--color-text-muted)]\">Choose how to authenticate</p>\n </div>\n </div>\n <div className=\"space-y-3\">\n <button\n onClick={() => {\n setAuthMethodModal(null);\n setApiKeyModal({ app: authMethodModal.app });\n setApiKeyInput(\"\");\n setCredentialInputs({});\n }}\n className=\"w-full text-left p-3 bg-[var(--color-bg)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] rounded-lg transition\"\n >\n <div className=\"font-medium text-sm\">API Key</div>\n <div className=\"text-xs text-[var(--color-text-muted)] mt-0.5\">\n Enter your {authMethodModal.app.name} API key directly\n </div>\n </button>\n <button\n onClick={() => {\n setAuthMethodModal(null);\n connectApp(authMethodModal.app, undefined, true);\n }}\n className=\"w-full text-left p-3 bg-[var(--color-bg)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] rounded-lg transition\"\n >\n <div className=\"font-medium text-sm\">OAuth</div>\n <div className=\"text-xs text-[var(--color-text-muted)] mt-0.5\">\n Sign in with your {authMethodModal.app.name} account\n </div>\n </button>\n </div>\n <button\n onClick={() => setAuthMethodModal(null)}\n className=\"w-full text-sm text-[var(--color-text-muted)] hover:text-white mt-4 py-2 transition\"\n >\n Cancel\n </button>\n </div>\n </div>\n )}\n\n {/* API Key / Credentials Modal */}\n {apiKeyModal && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <div className=\"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-md mx-4\">\n <div className=\"flex items-center gap-3 mb-4\">\n {apiKeyModal.app.logo && (\n <img\n src={apiKeyModal.app.logo}\n alt={apiKeyModal.app.name}\n className=\"w-10 h-10 object-contain\"\n />\n )}\n <div>\n <h3 className=\"font-medium\">Connect {apiKeyModal.app.name}</h3>\n <p className=\"text-xs text-[var(--color-text-muted)]\">\n {apiKeyModal.app.credentialFields?.length\n ? \"Enter your credentials to connect\"\n : \"Enter your API key to connect\"}\n </p>\n </div>\n </div>\n <form onSubmit={handleApiKeySubmit}>\n {apiKeyModal.app.credentialFields && apiKeyModal.app.credentialFields.length > 0 ? (\n <div className=\"space-y-3 mb-4\">\n {apiKeyModal.app.credentialFields.map((field, idx) => (\n <div key={field.name}>\n <label className=\"block text-xs text-[var(--color-text-secondary)] mb-1\">\n {field.name.replace(/([A-Z])/g, \" $1\").replace(/[-_]/g, \" \").replace(/\\b\\w/g, c => c.toUpperCase()).trim()}\n {field.required !== false && <span className=\"text-red-400 ml-0.5\">*</span>}\n </label>\n {field.description && (\n <p className=\"text-[10px] text-[var(--color-text-faint)] mb-1\">{field.description}</p>\n )}\n <input\n type=\"password\"\n value={credentialInputs[field.name] || \"\"}\n onChange={(e) => setCredentialInputs(prev => ({ ...prev, [field.name]: e.target.value }))}\n placeholder={`Enter ${field.name}...`}\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 focus:outline-none focus:border-[var(--color-accent)]\"\n autoFocus={idx === 0}\n />\n </div>\n ))}\n </div>\n ) : (\n <input\n type=\"password\"\n value={apiKeyInput}\n onChange={(e) => setApiKeyInput(e.target.value)}\n placeholder=\"Enter API Key...\"\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 mb-4 focus:outline-none focus:border-[var(--color-accent)]\"\n autoFocus\n />\n )}\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => setApiKeyModal(null)}\n className=\"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 rounded transition\"\n >\n Cancel\n </button>\n <button\n type=\"submit\"\n disabled={\n connecting === apiKeyModal.app.slug ||\n (apiKeyModal.app.credentialFields?.length\n ? !apiKeyModal.app.credentialFields.filter(f => f.required !== false).every(f => credentialInputs[f.name]?.trim())\n : !apiKeyInput.trim())\n }\n className=\"flex-1 text-sm bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-white px-4 py-2 rounded transition disabled:opacity-50\"\n >\n {connecting === apiKeyModal.app.slug ? \"Connecting...\" : \"Connect\"}\n </button>\n </div>\n </form>\n </div>\n </div>\n )}\n\n {/* MCP Config Creation Modal */}\n {mcpConfigModal && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <div className=\"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-md mx-4\">\n {mcpConfigSuccess ? (\n <>\n <div className=\"text-center mb-4\">\n <div className=\"w-12 h-12 bg-green-500/20 rounded-full flex items-center justify-center mx-auto mb-3\">\n <span className=\"text-green-400 text-2xl\">✓</span>\n </div>\n <h3 className=\"font-medium text-lg\">MCP Config Created!</h3>\n <p className=\"text-sm text-[var(--color-text-secondary)] mt-2\">\n \"{mcpConfigSuccess}\" has been created and added to your servers.\n </p>\n </div>\n <button\n onClick={() => {\n setMcpConfigModal(null);\n setMcpConfigSuccess(null);\n }}\n className=\"w-full text-sm bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-white px-4 py-2 rounded transition\"\n >\n Done\n </button>\n </>\n ) : (\n <>\n <div className=\"flex items-center gap-3 mb-4\">\n {mcpConfigModal.app.logo && (\n <img\n src={mcpConfigModal.app.logo}\n alt={mcpConfigModal.app.name}\n className=\"w-10 h-10 object-contain\"\n />\n )}\n <div>\n <h3 className=\"font-medium\">Create MCP Config</h3>\n <p className=\"text-xs text-[var(--color-text-muted)]\">\n Create an MCP config for {mcpConfigModal.app.name}\n </p>\n </div>\n </div>\n <form onSubmit={(e) => { e.preventDefault(); createMcpConfig(); }}>\n <label className=\"block text-xs text-[var(--color-text-secondary)] mb-1\">Config Name</label>\n <input\n type=\"text\"\n value={mcpConfigName}\n onChange={(e) => setMcpConfigName(e.target.value)}\n placeholder=\"Enter config name...\"\n className=\"w-full bg-[var(--color-bg)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 mb-4 focus:outline-none focus:border-[var(--color-accent)]\"\n autoFocus\n maxLength={30}\n />\n <div className=\"flex gap-2\">\n <button\n type=\"button\"\n onClick={() => setMcpConfigModal(null)}\n className=\"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 rounded transition\"\n >\n Cancel\n </button>\n <button\n type=\"submit\"\n disabled={!mcpConfigName.trim() || mcpConfigCreating}\n className=\"flex-1 text-sm bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)] text-white px-4 py-2 rounded transition disabled:opacity-50\"\n >\n {mcpConfigCreating ? \"Creating...\" : \"Create Config\"}\n </button>\n </div>\n </form>\n </>\n )}\n </div>\n </div>\n )}\n\n {/* Confirmation Modal */}\n {confirmModal && (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50\">\n <div className=\"bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg p-6 w-full max-w-sm mx-4\">\n <p className=\"text-center mb-4\">{confirmModal.message}</p>\n <div className=\"flex gap-2\">\n <button\n onClick={() => setConfirmModal(null)}\n className=\"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 rounded transition\"\n >\n Cancel\n </button>\n <button\n onClick={confirmModal.onConfirm}\n className=\"flex-1 text-sm bg-red-500 hover:bg-red-600 text-white px-4 py-2 rounded transition\"\n >\n Confirm\n </button>\n </div>\n </div>\n </div>\n )}\n\n {/* Error */}\n {error && (\n <div className=\"text-red-400 text-sm p-3 bg-red-500/10 border border-red-500/20 rounded-lg flex items-center justify-between\">\n <span>{error}</span>\n <button onClick={() => setError(null)} className=\"text-red-400 hover:text-red-300\">\n ×\n </button>\n </div>\n )}\n\n {/* Pending connection notice */}\n {pendingConnection && (\n <div className=\"text-yellow-400 text-sm p-3 bg-yellow-500/10 border border-yellow-500/20 rounded-lg flex items-center gap-2\">\n <span className=\"animate-spin\">⟳</span>\n <span>Waiting for {pendingConnection.appSlug} authorization...</span>\n </div>\n )}\n\n {/* Search */}\n <div>\n <input\n type=\"text\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n placeholder=\"Search apps...\"\n className=\"w-full bg-[var(--color-surface)] border border-[var(--color-border-light)] rounded-lg px-4 py-2 focus:outline-none focus:border-[var(--color-accent)]\"\n />\n </div>\n\n {/* Connected Apps */}\n {connectedApps.length > 0 && (\n <div>\n <h3 className=\"text-sm font-medium text-[var(--color-text-secondary)] mb-3\">\n Connected ({connectedApps.length})\n </h3>\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {connectedApps.map((app) => (\n <AppCard\n key={app.id}\n app={app}\n connection={getConnection(app)}\n onConnect={() => connectApp(app)}\n onDisconnect={() => {\n const conn = getConnection(app);\n if (conn) handleDisconnect(conn);\n }}\n onCreateMcpConfig={hideMcpConfig ? undefined : () => openMcpConfigModal(app)}\n onBrowseTriggers={onBrowseTriggers ? () => onBrowseTriggers(app.slug) : undefined}\n onUpdateKey={supportsApiKey(app) ? () => {\n setApiKeyModal({ app });\n setApiKeyInput(\"\");\n setCredentialInputs({});\n } : undefined}\n connecting={connecting === app.slug}\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Available Apps */}\n <div>\n <h3 className=\"text-sm font-medium text-[var(--color-text-secondary)] mb-3\">\n Available Apps ({availableApps.length})\n </h3>\n {availableApps.length === 0 ? (\n <p className=\"text-[var(--color-text-muted)] text-sm\">\n {search ? \"No apps match your search\" : \"No apps available\"}\n </p>\n ) : (\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {availableApps.slice(0, 50).map((app) => (\n <AppCard\n key={app.id}\n app={app}\n onConnect={() => connectApp(app)}\n connecting={connecting === app.slug}\n />\n ))}\n </div>\n )}\n {availableApps.length > 50 && (\n <p className=\"text-xs text-[var(--color-text-faint)] mt-3 text-center\">\n Showing first 50 of {availableApps.length} apps. Use search to find more.\n </p>\n )}\n </div>\n </div>\n );\n}\n\n// App card component\nfunction AppCard({\n app,\n connection,\n onConnect,\n onDisconnect,\n onCreateMcpConfig,\n onBrowseTriggers,\n onUpdateKey,\n connecting,\n}: {\n app: IntegrationApp;\n connection?: ConnectedAccount;\n onConnect: () => void;\n onDisconnect?: () => void;\n onCreateMcpConfig?: () => void;\n onBrowseTriggers?: () => void;\n onUpdateKey?: () => void;\n connecting: boolean;\n}) {\n const isConnected = connection?.status === \"active\";\n const hasApiKey = supportsApiKey(app);\n const hasOAuth = supportsOAuth(app);\n const hasBothMethods = hasApiKey && hasOAuth;\n\n return (\n <div\n className={`bg-[var(--color-surface)] border rounded-lg p-3 transition ${\n isConnected ? \"border-green-500/30\" : \"border-[var(--color-border)] hover:border-[var(--color-border-light)]\"\n }`}\n >\n <div className=\"flex items-start gap-3\">\n {/* Logo */}\n <div className=\"w-10 h-10 rounded bg-[var(--color-surface-raised)] flex items-center justify-center flex-shrink-0 overflow-hidden\">\n {app.logo ? (\n <img\n src={app.logo}\n alt={app.name}\n className=\"w-8 h-8 object-contain\"\n onError={(e) => {\n (e.target as HTMLImageElement).style.display = \"none\";\n }}\n />\n ) : (\n <span className=\"text-lg\">{app.name[0]?.toUpperCase()}</span>\n )}\n </div>\n\n {/* Info */}\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <h4 className=\"font-medium text-sm truncate\">{app.name}</h4>\n {isConnected && (\n <span className=\"text-xs text-green-400\">✓</span>\n )}\n {!isConnected && hasApiKey && !hasOAuth && (\n <span className=\"text-[10px] bg-[var(--color-surface-raised)] text-[var(--color-text-secondary)] px-1.5 py-0.5 rounded\" title=\"Requires API Key\">\n API Key\n </span>\n )}\n {!isConnected && hasBothMethods && (\n <span className=\"text-[10px] bg-[#1a2a1a] text-[#6a6] px-1.5 py-0.5 rounded\" title=\"Supports API Key or OAuth\">\n API Key / OAuth\n </span>\n )}\n </div>\n {app.description && (\n <p className=\"text-xs text-[var(--color-text-muted)] line-clamp-2 mt-0.5\">\n {app.description}\n </p>\n )}\n {app.categories.length > 0 && (\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {app.categories.slice(0, 2).map((cat) => (\n <span\n key={cat}\n className=\"text-[10px] bg-[var(--color-surface-raised)] text-[var(--color-text-faint)] px-1.5 py-0.5 rounded\"\n >\n {cat}\n </span>\n ))}\n </div>\n )}\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"mt-3 flex gap-2\">\n {isConnected ? (\n <>\n {onCreateMcpConfig && (\n <button\n onClick={onCreateMcpConfig}\n className=\"flex-1 text-xs bg-[#1a2a1a] hover:bg-[#1a3a1a] border border-green-500/30 hover:border-green-500/50 text-green-400 px-3 py-1.5 rounded transition\"\n >\n Create MCP Config\n </button>\n )}\n {onBrowseTriggers && (\n <button\n onClick={onBrowseTriggers}\n className=\"flex-1 text-xs bg-[#1a1a2a] hover:bg-[#1a1a3a] border border-blue-500/30 hover:border-blue-500/50 text-blue-400 px-3 py-1.5 rounded transition\"\n >\n Browse Triggers\n </button>\n )}\n {onUpdateKey && (\n <button\n onClick={onUpdateKey}\n className=\"text-xs text-[var(--color-text-muted)] hover:text-[var(--color-accent)] transition px-2\"\n title=\"Update API Key\"\n >\n Key\n </button>\n )}\n {onDisconnect && (\n <button\n onClick={onDisconnect}\n className=\"text-xs text-[var(--color-text-muted)] hover:text-red-400 transition px-2\"\n title=\"Disconnect\"\n >\n ×\n </button>\n )}\n </>\n ) : (\n <button\n onClick={onConnect}\n disabled={connecting}\n className=\"w-full text-xs bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] hover:border-[var(--color-accent)] px-3 py-1.5 rounded transition disabled:opacity-50\"\n >\n {connecting ? \"Connecting...\" : (hasApiKey && !hasOAuth) ? \"Enter API Key\" : \"Connect\"}\n </button>\n )}\n </div>\n </div>\n );\n}\n\nexport default IntegrationsPanel;\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "2F7BCCE25B976A9A64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{Y as L,aa as P,ba as N}from"./App.fy5bef1p.js";var z=L(P(),1),w=L(N(),1);function U({children:q,onClose:y}){return w.jsxDEV("div",{className:"fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4",children:w.jsxDEV("div",{className:"bg-[var(--color-surface)] card p-6 w-full max-w-xl lg:max-w-2xl max-h-[90vh] overflow-y-auto",children:q},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function Q({title:q,message:y,confirmText:F="Confirm",cancelText:B="Cancel",confirmVariant:G="danger",onConfirm:I,onCancel:J}){return w.jsxDEV("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4",children:w.jsxDEV("div",{className:"bg-[var(--color-surface)] card p-6 w-full max-w-sm",children:[q&&w.jsxDEV("h3",{className:"font-medium mb-2",children:q},void 0,!1,void 0,this),w.jsxDEV("p",{className:"text-sm text-[var(--color-text)] mb-4",children:y},void 0,!1,void 0,this),w.jsxDEV("div",{className:"flex gap-2",children:[w.jsxDEV("button",{onClick:J,className:"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] btn px-4 py-2 transition",children:B},void 0,!1,void 0,this),w.jsxDEV("button",{onClick:I,className:`flex-1 text-sm text-white px-4 py-2 btn transition ${G==="danger"?"bg-red-500 hover:bg-red-600":"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)]"}`,children:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function R({title:q,message:y,buttonText:F="OK",variant:B="info",onClose:G}){let I={error:"bg-red-500/20 text-red-400",success:"bg-green-500/20 text-green-400",info:"bg-blue-500/20 text-blue-400"},J={error:"✕",success:"✓",info:"ℹ"};return w.jsxDEV("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4",children:w.jsxDEV("div",{className:"bg-[var(--color-surface)] card p-6 w-full max-w-sm text-center",children:[w.jsxDEV("div",{className:`w-12 h-12 rounded-full flex items-center justify-center mx-auto mb-3 ${I[B]}`,children:w.jsxDEV("span",{className:"text-xl",children:J[B]},void 0,!1,void 0,this)},void 0,!1,void 0,this),q&&w.jsxDEV("h3",{className:"font-medium mb-2",children:q},void 0,!1,void 0,this),w.jsxDEV("p",{className:"text-sm text-[var(--color-text)] mb-4",children:y},void 0,!1,void 0,this),w.jsxDEV("button",{onClick:G,className:"w-full text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 btn transition",children:F},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function W(){let[q,y]=z.useState(null),F=z.useCallback((J,K={})=>{return new Promise((O)=>{y({message:J,options:K,resolve:O})})},[]),B=z.useCallback(()=>{q?.resolve(!0),y(null)},[q]),G=z.useCallback(()=>{q?.resolve(!1),y(null)},[q]),I=q?w.jsxDEV(Q,{title:q.options.title,message:q.message,confirmText:q.options.confirmText,cancelText:q.options.cancelText,confirmVariant:q.options.confirmVariant,onConfirm:B,onCancel:G},void 0,!1,void 0,this):null;return{confirm:F,ConfirmDialog:I}}function X(){let[q,y]=z.useState(null),F=z.useCallback((I,J={})=>{return new Promise((K)=>{y({message:I,options:J,resolve:K})})},[]),B=z.useCallback(()=>{q?.resolve(),y(null)},[q]),G=q?w.jsxDEV(R,{title:q.options.title,message:q.message,buttonText:q.options.buttonText,variant:q.options.variant,onClose:B},void 0,!1,void 0,this):null;return{alert:F,AlertDialog:G}}
|
|
2
|
+
export{U as N,W as O,X as P};
|
|
3
|
+
|
|
4
|
+
//# debugId=7519CEFEE35D5A3664756E2164756E21
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import React from \"react\";\n\ninterface ModalProps {\n children: React.ReactNode;\n onClose?: () => void;\n}\n\nexport function Modal({ children, onClose }: ModalProps) {\n return (\n <div className=\"fixed inset-0 bg-black/70 flex items-center justify-center z-50 p-4\">\n <div className=\"bg-[var(--color-surface)] card p-6 w-full max-w-xl lg:max-w-2xl max-h-[90vh] overflow-y-auto\">\n {children}\n </div>\n </div>\n );\n}\n\n// Confirmation Modal - replaces browser confirm()\ninterface ConfirmModalProps {\n title?: string;\n message: string;\n confirmText?: string;\n cancelText?: string;\n confirmVariant?: \"danger\" | \"primary\";\n onConfirm: () => void;\n onCancel: () => void;\n}\n\nexport function ConfirmModal({\n title,\n message,\n confirmText = \"Confirm\",\n cancelText = \"Cancel\",\n confirmVariant = \"danger\",\n onConfirm,\n onCancel,\n}: ConfirmModalProps) {\n return (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4\">\n <div className=\"bg-[var(--color-surface)] card p-6 w-full max-w-sm\">\n {title && <h3 className=\"font-medium mb-2\">{title}</h3>}\n <p className=\"text-sm text-[var(--color-text)] mb-4\">{message}</p>\n <div className=\"flex gap-2\">\n <button\n onClick={onCancel}\n className=\"flex-1 text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] btn px-4 py-2 transition\"\n >\n {cancelText}\n </button>\n <button\n onClick={onConfirm}\n className={`flex-1 text-sm text-white px-4 py-2 btn transition ${\n confirmVariant === \"danger\"\n ? \"bg-red-500 hover:bg-red-600\"\n : \"bg-[var(--color-accent)] hover:bg-[var(--color-accent-hover)]\"\n }`}\n >\n {confirmText}\n </button>\n </div>\n </div>\n </div>\n );\n}\n\n// Alert Modal - replaces browser alert()\ninterface AlertModalProps {\n title?: string;\n message: string;\n buttonText?: string;\n variant?: \"error\" | \"success\" | \"info\";\n onClose: () => void;\n}\n\nexport function AlertModal({\n title,\n message,\n buttonText = \"OK\",\n variant = \"info\",\n onClose,\n}: AlertModalProps) {\n const iconColors = {\n error: \"bg-red-500/20 text-red-400\",\n success: \"bg-green-500/20 text-green-400\",\n info: \"bg-blue-500/20 text-blue-400\",\n };\n\n const icons = {\n error: \"✕\",\n success: \"✓\",\n info: \"ℹ\",\n };\n\n return (\n <div className=\"fixed inset-0 bg-black/50 flex items-center justify-center z-50 p-4\">\n <div className=\"bg-[var(--color-surface)] card p-6 w-full max-w-sm text-center\">\n <div\n className={`w-12 h-12 rounded-full flex items-center justify-center mx-auto mb-3 ${iconColors[variant]}`}\n >\n <span className=\"text-xl\">{icons[variant]}</span>\n </div>\n {title && <h3 className=\"font-medium mb-2\">{title}</h3>}\n <p className=\"text-sm text-[var(--color-text)] mb-4\">{message}</p>\n <button\n onClick={onClose}\n className=\"w-full text-sm bg-[var(--color-surface-raised)] hover:bg-[var(--color-surface-raised)] border border-[var(--color-border-light)] px-4 py-2 btn transition\"\n >\n {buttonText}\n </button>\n </div>\n </div>\n );\n}\n\n// Hook for using confirmation dialogs\nimport { useState, useCallback } from \"react\";\n\ninterface UseConfirmOptions {\n title?: string;\n confirmText?: string;\n cancelText?: string;\n confirmVariant?: \"danger\" | \"primary\";\n}\n\nexport function useConfirm() {\n const [state, setState] = useState<{\n message: string;\n options: UseConfirmOptions;\n resolve: (value: boolean) => void;\n } | null>(null);\n\n const confirm = useCallback((message: string, options: UseConfirmOptions = {}) => {\n return new Promise<boolean>((resolve) => {\n setState({ message, options, resolve });\n });\n }, []);\n\n const handleConfirm = useCallback(() => {\n state?.resolve(true);\n setState(null);\n }, [state]);\n\n const handleCancel = useCallback(() => {\n state?.resolve(false);\n setState(null);\n }, [state]);\n\n const ConfirmDialog = state ? (\n <ConfirmModal\n title={state.options.title}\n message={state.message}\n confirmText={state.options.confirmText}\n cancelText={state.options.cancelText}\n confirmVariant={state.options.confirmVariant}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n />\n ) : null;\n\n return { confirm, ConfirmDialog };\n}\n\n// Hook for using alert dialogs\ninterface UseAlertOptions {\n title?: string;\n buttonText?: string;\n variant?: \"error\" | \"success\" | \"info\";\n}\n\nexport function useAlert() {\n const [state, setState] = useState<{\n message: string;\n options: UseAlertOptions;\n resolve: () => void;\n } | null>(null);\n\n const alert = useCallback((message: string, options: UseAlertOptions = {}) => {\n return new Promise<void>((resolve) => {\n setState({ message, options, resolve });\n });\n }, []);\n\n const handleClose = useCallback(() => {\n state?.resolve();\n setState(null);\n }, [state]);\n\n const AlertDialog = state ? (\n <AlertModal\n title={state.options.title}\n message={state.message}\n buttonText={state.options.buttonText}\n variant={state.options.variant}\n onClose={handleClose}\n />\n ) : null;\n\n return { alert, AlertDialog };\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "7519CEFEE35D5A3664756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|