1import{be as F,d as L,au as _,r as p,V as y,by as C,j as e,b0 as E,S as T,B as N,bk as D,aA as v,c as R,e2 as O,W as u,b6 as V,Z as G,cD as Z,q as K,n as A,Q as P,aR as J,bm as B,bc as U,aK as q,bz as M,bA as W,bB as H,bC as Y,ax as w,bD as X,O as I,aB as ee,E as se,aT as Q,x as te,aS as ae,m as re}from"./index-B3_ZeZg1.js";import{E as ne}from"./eye-off-Bm1RwZy7.js";const ie=[["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.35 2.69A10 10 0 0 1 21.3 15.65",key:"1pfsoa"}],["path",{d:"M19.08 19.08A10 10 0 1 1 4.92 4.92",key:"1ablyi"}]],oe=F("circle-off",ie);const de=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],le=F("hard-drive",de);function z({text:s}){const[n,o]=p.useState(!1),x=()=>{navigator.clipboard.writeText(s).then(()=>{o(!0),setTimeout(()=>o(!1),2e3)})};return e.jsx("button",{onClick:x,className:"ml-1.5 text-muted-foreground/50 hover:text-muted-foreground transition-colors",children:n?e.jsx(ae,{className:"h-3.5 w-3.5 text-green-400"}):e.jsx(re,{className:"h-3.5 w-3.5"})})}function $({open:s,onClose:n,endpoint:o,label:x}){const[d,a]=p.useState(""),[i,h]=p.useState(!1),{toast:c}=L(),m=_(),{activeWorkspace:g}=R(),b=async()=>{if(!(!d.trim()||!g)){h(!0);try{await u(`/api/workspaces/${g.id}/integrations/${o}/import`,{method:"POST",body:JSON.stringify({url:d.trim(),tags:[]})}),c({title:"Import complete",description:"Asset added to your media library."}
1),m.invalidateQueries({queryKey:["media",g.id]}),a(""),n()}catch(r){c({variant:"destructive",title:"Import failed",description:r?.message??"Unknown error"})}finally{h(!1)}}};return e.jsx(M,{open:s,onOpenChange:r=>!r&&n(),children:e.jsxs(W,{children:[e.jsx(H,{children:e.jsxs(Y,{children:["Import from ",x]})}),e.jsxs("div",{className:"space-y-4 py-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:o==="canva"?"Paste a public Canva export URL (PNG/JPG). From Canva: File â Share â Copy link to image.":'Paste a Google Drive shareable link to an image or video file. The file must be set to "Anyone with the link".'}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(v,{children:"URL"}),e.jsx(w,{value:d,onChange:r=>a(r.target.value),placeholder:o==="canva"?"https://asset.canva.com/â¦":"https://drive.google.com/file/d/â¦",onKeyDown:r=>r.key==="Enter"&&b()})]})]}),e.jsxs(X,{children:[e.jsx(N,{variant:"outline",onClick:n,children:"Cancel"}),e.jsx(N,{onClick:b,disabled:!d.trim()||i,children:i?"Importingâ¦":"Import"})]})]})})}const ce=["post.created","post.scheduled","post.published","inbox.message"];function xe({workspaceId:s}){const{toast:n}=L(),o=_(),[x,d]=p.useState(!1),[a,i]=p.useState({name:"",url:"",events:["post.created"],secret:""}),[h,c]=p.useState(null),{data:m=[],isLoading:g}=y({queryKey:["zapier-endpoints",s],queryFn:()=>u(`/api/workspaces/${s}/integrations/zapier/endpoints`),staleTime:3e4}),b=C({mutationFn:t=>u(`/api/workspaces/${s}/integrations/zapier/endpoints`,{method:"POST",body:JSON.stringify(t)}),onSuccess:()=>{o.invalidateQueries({queryKey:["zapier-endpoints",s]}),d(!1),i({name:"",url:"",events:["post.created"],secret:""}),n({title:"Webhook endpoint created"})},onError:t=>n({variant:"destructive",title:"Error",description:t?.message})}),r=C({mutationFn:({id:t,enabled:j})=>u(`/api/workspaces/${s}/integrations/zapier/endpoints/${t}`,{method:"PATCH",body:JSON.stringify({enabled:j})}),onSuccess:()=>o.invalidateQueries({queryKey:["zapier-endpoints",s]})}),f=C({mutationFn:t=>u(`/api/workspaces/${s}/integrations/zapier/endpoints/${t}`,{method:"DELETE"}),onSuccess:()=>{o.invalidateQueries({queryKey:["zapier-endpoints",s]}),n({title:"Endpoint deleted"})}}),S=t=>{i(j=>({...j,events:j.events.includes(t)?j.events.filter(l=>l!==t):[...j.events,t]}))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Send POST requests to Zapier (or any URL) when events happen in your workspace."}),e.jsxs(N,{size:"sm",variant:"outline",className:"gap-1.5 shrink-0",onClick:()=>d(!0),children:[e.jsx(I,{className:"h-3.5 w-3.5"})," Add endpoint"]})]}),x&&e.jsxs("div",{className:"rounded-xl border border-primary/25 bg-primary/5 p-4 space-y-3",children:[e.jsx("p",{className:"text-sm font-semibold",children:"New webhook endpoint"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(v,{className:"text-xs",children:"Name"}),e.jsx(w,{value:a.name,onChange:t=>i({...a,name:t.target.value}),placeholder:"My Zapier hook",className:"h-8 text-xs"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(v,{className:"text-xs",children:"Webhook URL"}),e.jsx(w,{value:a.url,onChange:t=>i({...a,url:t.target.value}),placeholder:"https://hooks.zapier.com/â¦",className:"h-8 text-xs"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(v,{className:"text-xs",children:"Events"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:ce.map(t=>e.jsx("button",{onClick:()=>S(t),className:K("px-2.5 py-0.5 rounded-full text-[11px] font-medium border transition-all",a.events.includes(t)?"bg-primary/15 text-primary border-primary/30":"text-muted-foreground border-border/50 hover:border-border"),children:t},t))})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(v,{className:"text-xs",children:"HMAC secret (optional)"}),e.jsx(w,{value:a.secret,onChange:t=>i({...a,secret:t.target.value}),placeholder:"Leave empty to skip signing",className:"h-8 text-xs",type:"password"})]}),e.jsxs("div",{className:"flex gap-2 pt-1",children:[e.jsx(N,{size:"sm",onClick:()=>b.mutate({name:a.name,url:a.url,events:a.events,secret:a.secret||void 0}),disabled:!a.name||!a.url||a.events.length===0||b.isPending,children:b.isPending?"Creatingâ¦":"Create"}),e.jsx(N,{size:"sm",variant:"outline",onClick:()=>d(!1),children:"Cancel"})]})]}),g?e.jsx("div",{className:"space-y-2",children:[1,2].map(t=>
1e.jsx(T,{className:"h-14 rounded-xl"},t))}):m.length===0?e.jsxs("div",{className:"flex items-center gap-2 p-4 rounded-xl bg-muted/20 border border-dashed border-border/50",children:[e.jsx(O,{className:"h-4 w-4 text-muted-foreground/40 shrink-0"}),e.jsx("p",{className:"text-sm text-muted-foreground/60",children:"No endpoints yet. Add one above to start sending events to Zapier."})]}):e.jsx("div",{className:"space-y-2",children:m.map(t=>e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-xl border border-border/40 bg-background",children:[e.jsx(ee,{checked:t.enabled,onCheckedChange:j=>r.mutate({id:t.id,enabled:j})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium",children:t.name}),e.jsx("p",{className:"text-[11px] text-muted-foreground/60 truncate",children:t.url}),e.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:t.events.map(j=>e.jsx("span",{className:"px-1.5 py-0 rounded bg-muted/60 text-[10px] text-muted-foreground",children:j},j))})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[t.secret&&e.jsx("button",{onClick:()=>c(h===t.id?null:t.id),className:"p-1 text-muted-foreground/40 hover:text-muted-foreground transition-colors",children:h===t.id?e.jsx(ne,{className:"h-3.5 w-3.5"}):e.jsx(se,{className:"h-3.5 w-3.5"})}),e.jsx("button",{onClick:()=>f.mutate(t.id),className:"p-1 text-muted-foreground/40 hover:text-red-400 transition-colors",children:e.jsx(Q,{className:"h-3.5 w-3.5"})})]})]},t.id))})]})}function me({workspaceId:s}){const{toast:n}=L(),o=_(),[x,d]=p.useState(!1),[a,i]=p.useState({name:"",action:"create_post"}),{data:h=[],isLoading:c}=y({queryKey:["zapier-inbound",s],queryFn:()=>u(`/api/workspaces/${s}/integrations/zapier/inbound`),staleTime:3e4}),m=C({mutationFn:r=>u(`/api/workspaces/${s}/integrations/zapier/inbound`,{method:"POST",body:JSON.stringify(r)}),onSuccess:()=>{o.invalidateQueries({queryKey:["zapier-inbound",s]}),d(!1),i({name:"",action:"create_post"}),n({title:"Inbound token created"})},onError:r=>n({variant:"destructive",title:"Error",description:r?.message})}),g=C({mutationFn:r=>u(`/api/workspaces/${s}/integrations/zapier/inbound/${r}`,{method:"DELETE"}),onSuccess:()=>{o.invalidateQueries({queryKey:["zapier-inbound",s]}),n({title:"Token deleted"})}}),b=typeof window<"u"?window.location.origin:"";return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Let Zapier trigger actions in frik.io via a unique URL."}),e.jsxs(N,{size:"sm",variant:"outline",className:"gap-1.5 shrink-0",onClick:()=>d(!0),children:[e.jsx(I,{className:"h-3.5 w-3.5"})," Create token"]})]}),x&&e.jsxs("div",{className:"rounded-xl border border-primary/25 bg-primary/5 p-4 space-y-3",children:[e.jsx("p",{className:"text-sm font-semibold",children:"New inbound token"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(v,{className:"text-xs",children:"Name"}),e.jsx(w,{value:a.name,onChange:r=>i({...a,name:r.target.value}),placeholder:"Content from Zapier",className:"h-8 text-xs"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(v,{className:"text-xs",children:"Action"}),e.jsxs("select",{value:a.action,onChange:r=>i({...a,action:r.target.value}),className:"h-8 w-full rounded-md border border-input bg-background text-xs px-2",children:[e.jsx("option",{value:"create_post",children:"Create draft post"}),e.jsx("option",{value:"log_event",children:"Log event only"})]})]})]}),e.jsxs("div",{className:"flex gap-2 pt-1",children:[e.jsx(N,{size:"sm",onClick:()=>m.mutate({name:a.name,action:a.action}),disabled:!a.name||m.isPending,children:m.isPending?"Creatingâ¦":"Create"}),e.jsx(N,{size:"sm",variant:"outline",onClick:()=>d(!1),children:"Cancel"})]})]}),c?e.jsx("div",{className:"space-y-2",children:[1,2].map(r=>e.jsx(T,{className:"h-14 rounded-xl"},r))}):h.length===0?e.jsxs("div",{className:"flex items-center gap-2 p-4 rounded-xl bg-muted/20 border border-dashed border-border/50",children:[e.jsx(G,{className:"h-4 w-4 text-muted-foreground
1/40 shrink-0"}),e.jsx("p",{className:"text-sm text-muted-foreground/60",children:"No inbound tokens yet. Create one above."})]}):e.jsx("div",{className:"space-y-2",children:h.map(r=>{const f=`${b}/api/integrations/inbound/${r.token}`;return e.jsxs("div",{className:"p-3 rounded-xl border border-border/40 bg-background space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:r.name}),e.jsxs("p",{className:"text-[11px] text-muted-foreground/50",children:["Action: ",r.action==="create_post"?"Create draft post":"Log event only",r.lastUsedAt&&` · Last used ${new Date(r.lastUsedAt).toLocaleDateString()}`]})]}),e.jsx("button",{onClick:()=>g.mutate(r.id),className:"p-1 text-muted-foreground/40 hover:text-red-400 transition-colors",children:e.jsx(Q,{className:"h-3.5 w-3.5"})})]}),e.jsxs("div",{className:"flex items-center gap-2 p-2 rounded-lg bg-muted/30 border border-border/30",children:[e.jsx("code",{className:"text-[11px] text-muted-foreground flex-1 truncate",children:f}),e.jsx(z,{text:f})]})]},r.id)})})]})}function ue({workspaceId:s}){const o=`${typeof window<"u"?window.location.origin:""}/api/workspaces/${s}/integrations/analytics-export`,x=`${o}?format=csv`;return e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Connect frik.io analytics to Google Looker Studio using the JSON or CSV export endpoint. Authenticate via an API key from Settings â Developer."}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(v,{className:"text-xs text-muted-foreground uppercase tracking-widest",children:"JSON endpoint"}),e.jsxs("div",{className:"flex items-center gap-2 p-2.5 rounded-lg bg-muted/30 border border-border/40",children:[e.jsx("code",{className:"text-xs text-muted-foreground flex-1 break-all",children:o}),e.jsx(z,{text:o})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(v,{className:"text-xs text-muted-foreground uppercase tracking-widest",children:"CSV export"}),e.jsxs("div",{className:"flex items-center gap-2 p-2.5 rounded-lg bg-muted/30 border border-border/40",children:[e.jsx("code",{className:"text-xs text-muted-foreground flex-1 break-all",children:x}),e.jsx(z,{text:x})]})]}),e.jsxs("div",{className:"rounded-xl bg-amber-500/5 border border-amber-500/20 p-3 flex gap-2.5",children:[e.jsx(E,{className:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-xs text-muted-foreground space-y-1",children:[e.jsxs("p",{children:["Add ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"?api_key=frk_live_..."})," to the URL or set an ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"Authorization: Bearer"})," header. Create API keys under Settings â Developer."]}),e.jsxs("p",{children:["Use ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"?start=2024-01-01&end=2024-12-31"})," to filter by date range."]})]})]}),e.jsxs("a",{href:"https://lookerstudio.google.com/u/0/navigation/datasources/create",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1.5 text-sm text-primary hover:underline",children:["Open Looker Studio ",e.jsx(te,{className:"h-3.5 w-3.5"})]})]})]})}const pe=["https://www.googleapis.com/auth/webmasters.readonly","https://www.googleapis.com/auth/analytics.readonly"];function he(s){return pe.every(n=>s.includes(n))}function ge({workspaceId:s,integration:n}){const{toast:o}=L(),x=_(),[d,a]=p.useState(""),[i,h]=p.useState(""),c=y({queryKey:["google-site-kit-status",s],queryFn:()=>u(`/api/workspaces/${s}/integrations/google-site-kit/status`),staleTime:3e4}),m=y({queryKey:["google-site-kit-sites",s],queryFn:()=>u(`/api/workspaces/${s}/integrations/google-site-kit/search-console/sites`),enabled:!!c.data?.connected,staleTime:5*6e4}),g=y({queryKey:["google-site-kit-properties",s],queryFn:()=>u(`/api/workspaces/${s}/integrations/google-site-kit/analytics/properties`),enabled:!!c.data?.connected,staleTime:5*6e4});p.useEffect(()=>{!d&&m.data?.sites[0]&&a(m.data.sites[0].siteUrl)},[m.data,d]),p.useEffect(()=>{!i&&g.data?.properties[0]&&h(g.data.properties[0].id)},[g.data,i]);const b=y({queryKey:["google-site-kit-search-report",s,d],queryFn:()=>
1u(`/api/workspaces/${s}/integrations/google-site-kit/search-console/overview?siteUrl=${encodeURIComponent(d)}`),enabled:!!d&&!!c.data?.connected,staleTime:5*6e4}),r=y({queryKey:["google-site-kit-analytics-report",s,i],queryFn:()=>u(`/api/workspaces/${s}/integrations/google-site-kit/analytics/overview?property=${encodeURIComponent(i)}`),enabled:!!i&&!!c.data?.connected,staleTime:5*6e4}),f=C({mutationFn:()=>u(`/api/workspaces/${s}/integrations/google-site-kit`,{method:"DELETE"}),onSuccess:()=>{x.invalidateQueries({queryKey:["google-site-kit-status",s]}),o({title:"Google Site Kit disconnected"})},onError:l=>o({variant:"destructive",title:"Disconnect failed",description:l?.message})}),S=(b.data?.rows??[]).reduce((l,k)=>({clicks:l.clicks+(k.clicks??0),impressions:l.impressions+(k.impressions??0)}),{clicks:0,impressions:0}),t=(r.data?.rows??[]).reduce((l,k)=>({users:l.users+Number(k.metricValues?.[0]?.value??0),sessions:l.sessions+Number(k.metricValues?.[1]?.value??0),views:l.views+Number(k.metricValues?.[2]?.value??0)}),{users:0,sessions:0,views:0});if(!n.configured)return e.jsxs("div",{className:"rounded-xl bg-amber-500/5 border border-amber-500/20 p-3 flex gap-2.5",children:[e.jsx(E,{className:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Google OAuth is not configured yet. Set ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"GOOGLE_CLIENT_ID"})," and ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"GOOGLE_CLIENT_SECRET"})," before connecting."]})]});if(c.isLoading)return e.jsx(T,{className:"h-24 rounded-xl"});if(!c.data?.connected)return e.jsxs("div",{className:"space-y-3",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"Connect the Google account used by Site Kit to view read-only Search Console and Google Analytics reports here. This does not change your website or publish anything."}),e.jsx(N,{asChild:!0,size:"sm",className:"gap-1.5",children:e.jsxs("a",{href:`/api/workspaces/${s}/integrations/google-site-kit/init`,children:[e.jsx(D,{className:"h-3.5 w-3.5"})," Connect Google"]})}),c.data?.status==="error"&&e.jsx("p",{className:"text-xs text-red-400",children:c.data.lastError??"Reconnect Google to restore reporting access."})]});const j=he(c.data.scopes??[]);return e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:c.data.accountName??"Google Account"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:c.data.email??"Connected Google account"})]}),e.jsxs("div",{className:"flex gap-2 shrink-0",children:[e.jsx(N,{asChild:!0,size:"sm",variant:"outline",children:e.jsx("a",{href:`/api/workspaces/${s}/integrations/google-site-kit/init`,children:"Reconnect"})}),e.jsx(N,{size:"sm",variant:"ghost",onClick:()=>f.mutate(),disabled:f.isPending,children:f.isPending?"Disconnectingâ¦":"Disconnect"})]})]}),!j&&e.jsxs("div",{className:"rounded-xl bg-amber-500/5 border border-amber-500/20 p-3 flex gap-2.5",children:[e.jsx(E,{className:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-amber-300",children:"Reporting permissions need updating"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["This connection was made before Search Console and Analytics access was enabled. Click ",e.jsx("strong",{children:"Reconnect"})," above to grant the updated permissions."]})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Read-only data from the properties and sites this Google account can access. Reports cover the last 28 days."}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"rounded-xl border border-border/40 bg-background p-3 space-y-2",children:[e.jsx(v,{className:"text-[11px] uppercase tracking-widest text-muted-foreground",children:"Search Console site"}),e.jsxs("select",{value:d,onChange:l=>a(l.target.value),className:"h-9 w-full rounded-md border border-input bg-background text-xs px-2",children:[e.jsx("option",{value:"",children:"Select a site"}
1),(m.data?.sites??[]).map(l=>e.jsx("option",{value:l.siteUrl,children:l.siteUrl},l.siteUrl))]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 pt-1",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Clicks"}),e.jsx("p",{className:"text-lg font-semibold",children:b.isLoading?"â¦":S.clicks.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Impressions"}),e.jsx("p",{className:"text-lg font-semibold",children:b.isLoading?"â¦":S.impressions.toLocaleString()})]})]})]}),e.jsxs("div",{className:"rounded-xl border border-border/40 bg-background p-3 space-y-2",children:[e.jsx(v,{className:"text-[11px] uppercase tracking-widest text-muted-foreground",children:"Google Analytics property"}),e.jsxs("select",{value:i,onChange:l=>h(l.target.value),className:"h-9 w-full rounded-md border border-input bg-background text-xs px-2",children:[e.jsx("option",{value:"",children:"Select a property"}),(g.data?.properties??[]).map(l=>e.jsxs("option",{value:l.id,children:[l.name," · ",l.accountName]},l.id))]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2 pt-1",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Users"}),e.jsx("p",{className:"text-lg font-semibold",children:r.isLoading?"â¦":t.users.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Sessions"}),e.jsx("p",{className:"text-lg font-semibold",children:r.isLoading?"â¦":t.sessions.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[11px] text-muted-foreground",children:"Views"}),e.jsx("p",{className:"text-lg font-semibold",children:r.isLoading?"â¦":t.views.toLocaleString()})]})]})]})]}),(m.isError||g.isError||b.isError||r.isError)&&e.jsx("p",{className:"text-xs text-amber-400",children:"Google returned an error for one of the selected reports. Check that the account has access and that Search Console and Analytics APIs are enabled in Google Cloud."})]})}const be={canva:Z,google_drive:le,google_site_kit:D,zapier:G,looker_studio:V},je={canva:"text-purple-400 bg-purple-500/10 border-purple-500/20",google_drive:"text-blue-400 bg-blue-500/10 border-blue-500/20",google_site_kit:"text-indigo-400 bg-indigo-500/10 border-indigo-500/20",zapier:"text-orange-400 bg-orange-500/10 border-orange-500/20",looker_studio:"text-teal-400 bg-teal-500/10 border-teal-500/20"};function Ne({integration:s,workspaceId:n}){const[o,x]=p.useState(s.key==="zapier"),[d,a]=p.useState(!1),i=s.key,h=be[i]??O,c=je[i]??"";return e.jsxs("div",{className:"rounded-2xl border border-border/50 bg-card overflow-hidden",children:[e.jsxs("button",{className:"w-full flex items-start gap-4 p-5 text-left hover:bg-muted/20 transition-colors",onClick:()=>x(m=>!m),children:[e.jsx("div",{className:K("h-10 w-10 rounded-xl border flex items-center justify-center shrink-0",c),children:e.jsx(h,{className:"h-5 w-5"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"text-sm font-semibold",children:s.name}),s.key==="google_site_kit"&&s.connected?e.jsxs(A,{variant:"outline",className:"text-[10px] h-4 px-1.5 text-green-400 border-green-500/25 bg-green-500/10",children:[e.jsx(P,{className:"h-2.5 w-2.5 mr-1"})," Connected"]}):s.configured?e.jsxs(A,{variant:"outline",className:"text-[10px] h-4 px-1.5 text-green-400 border-green-500/25 bg-green-500/10",children:[e.jsx(P,{className:"h-2.5 w-2.5 mr-1"})," Configured"]}):e.jsxs(A,{variant:"outline",className:"text-[10px] h-4 px-1.5 text-amber-400 border-amber-500/25 bg-amber-500/10",children:[e.jsx(oe,{className:"h-2.5 w-2.5 mr-1"})," Not configured"]})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-0.5 leading-relaxed",children:s.description})]}),e.jsx("div",{className:"shrink-0 mt-1",children:o?e.jsx(J,{className:"h-4 w-4 text-muted-foreground/50"}):e.jsx(B,{className:"h-4 w-4 text-muted-foreground/50"})})]}),o&&e.jsxs(e.Fragment,{children:[e.jsx(U,{}),e.jsxs("div",{className:"p-5 space-y-4",children:[i==="canva"&&e.jsxs(e.Fragment,{children:[!s.configured&&e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-xl bg-amber-500/5 border border-amber-500/20",children:[e.jsx(E,{className:"h-4 w-4 text-amber-400 shrink-0 mt-0.5"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["Set the ",e.jsx("code",{className:"bg-muted px-1 rounded",children:"CANVA_API_KEY"})," environment variable to enable API-based import. URL import always works."]})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Import Canva designs into your media library. Export your design as PNG or JPG in Canva, then paste the export URL below."}),e.jsxs(N,{size:"sm",className:"gap-1.5",onClick:()=>a(!0),children:[e.jsx(q,{className:"h-3.5 w-3.5"})," Import from Canva URL"]}),e.jsx($,{open:d,onClose:()=>a(!1),endpoint:"canva",label:"Canva"})]}),i==="google_drive"&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:'Import images or videos from Google Drive shareable links. Set the file sharing to "Anyone with the link" in Drive before importing.'}),e.jsxs(N,{size:"sm",className:"gap-1.5",onClick:()=>a(!0),children:[e.jsx(q,{className:"h-3.5 w-3.5"})," Import from Drive link"]}),e.jsx($,{open:d,onClose:()=>a(!1),endpoint:"drive",label:"Google Drive"})]}),i==="google_site_kit"&&e.jsx(ge,{workspaceId:n,integration:s}),i==="zapier"&&e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground
1/60 mb-3",children:"Outbound webhooks"}),e.jsx(xe,{workspaceId:n})]}),e.jsx(U,{}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-semibold uppercase tracking-widest text-muted-foreground/60 mb-3",children:"Inbound triggers"}),e.jsx(me,{workspaceId:n})]})]}),i==="looker_studio"&&e.jsx(ue,{workspaceId:n})]})]})]})}function ye(){const{activeWorkspace:s}=R(),n=s?.id??0,{data:o,isLoading:x}=y({queryKey:["integrations-status",n],queryFn:()=>u(`/api/workspaces/${n}/integrations/status`),enabled:!!n,staleTime:6e4}),d=o?.integrations??[];return s?e.jsxs("div",{className:"space-y-7 max-w-3xl",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx(O,{className:"h-5 w-5 text-primary"}),e.jsx("h1",{className:"text-xl font-bold",children:"Integrations"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Connect frik.io to your favourite tools. Each integration is independently configured."})]}),x?e.jsx("div",{className:"space-y-3",children:[1,2,3,4].map(a=>e.jsx(T,{className:"h-24 rounded-2xl"},a))}):e.jsx("div",{className:"space-y-3",children:d.map(a=>e.jsx(Ne,{integration:a,workspaceId:n},a.key))})]}):null}export{ge as GoogleSiteKitPanel,ye as IntegrationsPage};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.