wizards 0.2.1 → 0.2.3

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.
Files changed (80) hide show
  1. package/README.md +4 -1
  2. package/apps/runtime/dist/app.js +44 -0
  3. package/apps/runtime/dist/auth/account.js +16 -2
  4. package/apps/runtime/dist/auth/index.js +14 -1
  5. package/apps/runtime/dist/connectors/external.js +5 -0
  6. package/apps/runtime/dist/db/control-schema.js +12 -3
  7. package/apps/runtime/dist/db/migrations/control/0005_chilly_oracle.sql +1 -0
  8. package/apps/runtime/dist/db/migrations/control/0006_sleepy_mojo.sql +1 -0
  9. package/apps/runtime/dist/db/migrations/control/meta/0005_snapshot.json +358 -0
  10. package/apps/runtime/dist/db/migrations/control/meta/0006_snapshot.json +365 -0
  11. package/apps/runtime/dist/db/migrations/control/meta/_journal.json +14 -0
  12. package/apps/runtime/dist/db/migrations/tenant/0005_reflective_forgotten_one.sql +2 -0
  13. package/apps/runtime/dist/db/migrations/tenant/meta/0005_snapshot.json +1659 -0
  14. package/apps/runtime/dist/db/migrations/tenant/meta/_journal.json +7 -0
  15. package/apps/runtime/dist/db/schema.js +6 -0
  16. package/apps/runtime/dist/engine/asks.js +2 -0
  17. package/apps/runtime/dist/engine/push.js +58 -0
  18. package/apps/runtime/dist/engine/runner.js +6 -0
  19. package/apps/runtime/dist/env.js +14 -1
  20. package/apps/runtime/dist/limits.js +21 -0
  21. package/apps/runtime/dist/manage.js +16 -3
  22. package/apps/runtime/dist/mcp/tools.js +4 -2
  23. package/apps/runtime/dist/plugins/loader.js +23 -1
  24. package/apps/runtime/dist/routes/api.js +96 -6
  25. package/apps/runtime/dist/routes/runs.js +68 -2
  26. package/apps/runtime/dist/routes/studio.js +79 -11
  27. package/apps/runtime/dist/services/access.js +62 -0
  28. package/apps/runtime/dist/services/architect.js +3 -2
  29. package/apps/runtime/dist/services/cloud.js +241 -39
  30. package/apps/runtime/dist/services/errors.js +1 -0
  31. package/apps/runtime/dist/services/files.js +3 -3
  32. package/apps/runtime/dist/services/project-files.js +6 -0
  33. package/apps/runtime/dist/services/projects.js +38 -14
  34. package/apps/runtime/dist/services/spaces.js +400 -0
  35. package/apps/runtime/dist/services/wizards.js +19 -8
  36. package/apps/runtime/dist/tenants/control.js +47 -0
  37. package/apps/web/dist/assets/{ChangelogDialog-Co_9fs61.js → ChangelogDialog-CbZBUMRu.js} +1 -1
  38. package/apps/web/dist/assets/ChatPanel-zurtfj6A.js +1 -0
  39. package/apps/web/dist/assets/{CreditsDialog-D3fZRqXH.js → CreditsDialog-BewZHZTR.js} +1 -1
  40. package/apps/web/dist/assets/EditorPage-B7ZOoW5h.js +2 -0
  41. package/apps/web/dist/assets/{FlowPreview-CjUK5046.js → FlowPreview-DHrhPps0.js} +1 -1
  42. package/apps/web/dist/assets/HomePage-CBvWxXsq.js +1 -0
  43. package/apps/web/dist/assets/ImportWizard-CKjVJMaG.js +1 -0
  44. package/apps/web/dist/assets/{LocalRuntime-CTyLGC98.js → LocalRuntime-Brkvbzzg.js} +10 -10
  45. package/apps/web/dist/assets/NewWizardPage-B3XePMlp.js +2 -0
  46. package/apps/web/dist/assets/PublicRunner-Bn1g6HG9.js +1 -0
  47. package/apps/web/dist/assets/RunnerView-CO1Nk3jn.js +2 -0
  48. package/apps/web/dist/assets/SettingsPage-BIY4kHZl.js +2 -0
  49. package/apps/web/dist/assets/{SetupPage-CfXTOaIm.js → SetupPage-BvLwZH9i.js} +1 -1
  50. package/apps/web/dist/assets/{SharePage-CgByqrAF.js → SharePage-CDESJ11B.js} +1 -1
  51. package/apps/web/dist/assets/{api-KMi35npD.js → api-9sHuNTkp.js} +1 -1
  52. package/apps/web/dist/assets/changelog-Cto0j5-V.js +1 -0
  53. package/apps/web/dist/assets/index-CIwJmOjo.css +1 -0
  54. package/apps/web/dist/assets/{index-BmpnE7IO.js → index-VsRgvimv.js} +3 -3
  55. package/apps/web/dist/assets/{meta-4R1Lnr25.js → meta-B4mZqEso.js} +1 -1
  56. package/apps/web/dist/assets/oss-credits-Hu4LieLA.js +1 -0
  57. package/apps/web/dist/assets/outputs-boPx5ngv.js +69 -0
  58. package/apps/web/dist/assets/{session-B6-6VomQ.js → session-CJGuo1Tv.js} +1 -1
  59. package/apps/web/dist/assets/type-BMJpS6_D.js +1 -0
  60. package/apps/web/dist/assets/ui-iTYHqwvY.js +1 -0
  61. package/apps/web/dist/index.html +5 -5
  62. package/apps/web/dist/mcp/flow.html +54 -54
  63. package/modules/README.md +1 -1
  64. package/node_modules/@engenty-wizards/plugin-sdk/dist/index.d.ts +24 -1
  65. package/node_modules/@engenty-wizards/plugin-sdk/dist/studio.d.ts +1 -1
  66. package/package.json +1 -1
  67. package/apps/web/dist/assets/ChatPanel-Br3nYkUc.js +0 -1
  68. package/apps/web/dist/assets/EditorPage-BSjQC6FE.js +0 -2
  69. package/apps/web/dist/assets/HomePage-8v4HqIbP.js +0 -1
  70. package/apps/web/dist/assets/ImportWizard-DiV62Uno.js +0 -1
  71. package/apps/web/dist/assets/NewWizardPage-BBL2yenw.js +0 -2
  72. package/apps/web/dist/assets/PublicRunner-BwtoEVlE.js +0 -1
  73. package/apps/web/dist/assets/RunnerView-DOizlTad.js +0 -2
  74. package/apps/web/dist/assets/SettingsPage-CBDv04YS.js +0 -2
  75. package/apps/web/dist/assets/changelog-03JgixQA.js +0 -1
  76. package/apps/web/dist/assets/index-B9YVjvVY.css +0 -1
  77. package/apps/web/dist/assets/oss-credits-roB62QJu.js +0 -1
  78. package/apps/web/dist/assets/outputs-COE_nvAw.js +0 -69
  79. package/apps/web/dist/assets/type-Bj9H3eOK.js +0 -1
  80. package/apps/web/dist/assets/ui-Cs6lpsmj.js +0 -1
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/FlowPreview-DHrhPps0.js","assets/jsx-runtime-D3jfb0Ew.js","assets/ui-iTYHqwvY.js","assets/esm-rJY59Ixx.js","assets/react-dom-DenslgJm.js"])))=>i.map(i=>d[i]);
2
+ import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{A as r,F as i,I as a,K as o,M as s,N as c,O as l,d as u,g as d,j as f,n as p,nt as m,w as h}from"./api-9sHuNTkp.js";import{c as g,d as _,o as v}from"./session-CJGuo1Tv.js";import{t as y}from"./preload-helper-CNEI7N0N.js";import{t as b}from"./createLucideIcon-q3MZMmnf.js";import{n as ee,t as x}from"./plug-CLjyCoHB.js";import{t as S}from"./arrow-right-6FyN3e7D.js";import{c as C,l as w,o as te,s as T,t as ne}from"./meta-B4mZqEso.js";import{t as re}from"./check-CUpby_J9.js";import{n as ie,r as ae,t as oe}from"./wand-sparkles-CKxArWPY.js";import{a as se,i as ce,n as E,r as le,t as ue}from"./type-BMJpS6_D.js";import{n as de,t as fe}from"./mic-Bvz4mA2j.js";import{n as pe,t as D}from"./video-CjgmvRDk.js";import{l as me,u as he}from"./engenty-Cm8yZLON.js";import{_ as O,d as k,h as A,i as ge,m as _e,n as ve,r as j,t as M,y as N}from"./ui-iTYHqwvY.js";import{l as P}from"./index-VsRgvimv.js";import{t as ye}from"./ImportWizard-CKjVJMaG.js";var be=class extends c{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){e._type=`infinite`,super.setOptions(e)}getOptimisticResult(e){return e._type=`infinite`,super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:o,isRefetching:s,isError:c,isRefetchError:l}=r,u=n.fetchMeta?.fetchMore?.direction,d=c&&u===`forward`,f=o&&u===`forward`,p=c&&u===`backward`,m=o&&u===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:i(t,n.data),hasPreviousPage:a(t,n.data),isFetchNextPageError:d,isFetchingNextPage:f,isFetchPreviousPageError:p,isFetchingPreviousPage:m,isRefetchError:l&&!d&&!p,isRefetching:s&&!f&&!m}}};function xe(e,t){return s(e,be,t)}var F={name:`audio-lines`,size:24,node:[[`path`,{d:`M2 10v3`,key:`1fnikh`}],[`path`,{d:`M6 6v11`,key:`11sgs0`}],[`path`,{d:`M10 3v18`,key:`yhl04a`}],[`path`,{d:`M14 8v7`,key:`3a1oy3`}],[`path`,{d:`M18 5v13`,key:`123xd1`}],[`path`,{d:`M22 10v3`,key:`154ddg`}]]};F.node;var Se=b(F),I={name:`chart-column`,size:24,node:[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]],aliases:[`bar-chart-3`]};I.node;var L=b(I),R={name:`circle-dollar-sign`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8`,key:`1h4pet`}],[`path`,{d:`M12 18V6`,key:`zqpxq5`}]]};R.node;var Ce=b(R),z={name:`circle-euro`,size:24,node:[[`path`,{d:`M15 9.4a4 4 0 1 0 0 5.2`,key:`1makmb`}],[`path`,{d:`M7 12h5`,key:`gblrwe`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]};z.node;var we=b(z),B={name:`clapperboard`,size:24,node:[[`path`,{d:`m12.296 3.464 3.02 3.956`,key:`qash78`}],[`path`,{d:`M20.2 6 3 11l-.9-2.4c-.3-1.1.3-2.2 1.3-2.5l13.5-4c1.1-.3 2.2.3 2.5 1.3z`,key:`1h7j8b`}],[`path`,{d:`M3 11h18v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`4lm6w1`}],[`path`,{d:`m6.18 5.276 3.1 3.899`,key:`zjj9t3`}]]};B.node;var Te=b(B),V={name:`clock`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]};V.node;var H=b(V),Ee={name:`cloud-off`,size:24,node:[[`path`,{d:`M10.94 5.274A7 7 0 0 1 15.71 10h1.79a4.5 4.5 0 0 1 4.222 6.057`,key:`1uxyv8`}],[`path`,{d:`M18.796 18.81A4.5 4.5 0 0 1 17.5 19H9A7 7 0 0 1 5.79 5.78`,key:`99tcn7`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};Ee.node;var De=b(Ee),Oe={name:`mouse-pointer-click`,size:24,node:[[`path`,{d:`M14 4.1 12 6`,key:`ita8i4`}],[`path`,{d:`m5.1 8-2.9-.8`,key:`1go3kf`}],[`path`,{d:`m6 12-1.9 2`,key:`mnht97`}],[`path`,{d:`M7.2 2.2 8 5.1`,key:`1cfko1`}],[`path`,{d:`M9.037 9.69a.498.498 0 0 1 .653-.653l11 4.5a.5.5 0 0 1-.074.949l-4.349 1.041a1 1 0 0 0-.74.739l-1.04 4.35a.5.5 0 0 1-.95.074z`,key:`s0h3yz`}]]};Oe.node;var ke=b(Oe),Ae={name:`scan-text`,size:24,node:[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 8h8`,key:`1jbsf9`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}],[`path`,{d:`M7 16h6`,key:`1vyc9m`}]]};Ae.node;var je=b(Ae),Me={name:`table-2`,size:24,node:[[`path`,{d:`M3 9h18`,key:`1pudct`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}]]};Me.node;var Ne=b(Me),Pe={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};Pe.node;var Fe=b(Pe),Ie={name:`volume-2`,size:24,node:[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`,key:`1q6k2b`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`,key:`ijwkga`}]]};Ie.node;var Le=b(Ie),U=e(t(),1),W={text:{de:`Text`,en:`Text`},document:{de:`Dokument (PDF, Word)`,en:`Document (PDF, Word)`},table:{de:`Tabelle`,en:`Table`},image:{de:`Bild`,en:`Image`},video:{de:`Video`,en:`Video`},audio:{de:`Audio`,en:`Audio`},dashboard:{de:`Dashboard`,en:`Dashboard`}},Re={any:{de:`Jede Branche`,en:`Any industry`},trades:{de:`Handwerk`,en:`Trades`},gastronomy:{de:`Gastronomie`,en:`Food service`},hospitality:{de:`Hotel & Tourismus`,en:`Hotels & tourism`},realEstate:{de:`Immobilien`,en:`Real estate`},retail:{de:`Handel`,en:`Retail`},health:{de:`Gesundheit`,en:`Health`},professional:{de:`Kanzlei & Beratung`,en:`Professional services`},agency:{de:`Agentur & Marketing`,en:`Agency & marketing`},events:{de:`Veranstaltungen`,en:`Events`},publicSector:{de:`Vereine & Öffentliches`,en:`Associations & public sector`}},ze={marketing:{de:`Marketing & Social Media`,en:`Marketing & social media`},sales:{de:`Angebote & Verkauf`,en:`Offers & sales`},accounting:{de:`Buchhaltung & Belege`,en:`Accounting & receipts`},service:{de:`Kundenservice`,en:`Customer service`},research:{de:`Recherche & Analyse`,en:`Research & analysis`},hr:{de:`Personal & Bewerbungen`,en:`HR & applications`},operations:{de:`Planung & Abläufe`,en:`Planning & operations`},website:{de:`Helfer für die Website`,en:`Website helpers`}},G={text:{de:`Text schreiben`,en:`Writes text`},web:{de:`Websuche`,en:`Web search`},browser:{de:`Browser bedienen`,en:`Drives a browser`},documents:{de:`Dokumente & Fotos lesen`,en:`Reads documents & photos`},image:{de:`Bilder erzeugen`,en:`Makes images`},video:{de:`Videos erzeugen`,en:`Makes video`},speech:{de:`Sprachausgabe`,en:`Speech output`},listening:{de:`Sprachnotizen verstehen`,en:`Understands voice notes`},code:{de:`Code ausführen`,en:`Runs code`},connectors:{de:`Verbundene Konten & Systeme`,en:`Connected accounts & systems`}},Be={low:{de:`günstig`,en:`low cost`},medium:{de:`mittel`,en:`medium cost`},high:{de:`teuer`,en:`high cost`}},K=e=>Object.keys(e);K(W),K(Re),K(ze),K(G);var q=e(n(),1),Ve=(0,U.lazy)(()=>y(()=>import(`./FlowPreview-DHrhPps0.js`),__vite__mapDeps([0,1,2,3,4]))),He={useCase:``,industry:``,format:``,capability:``},J=(e,t)=>e[t]?.[O]??t;function Ue(e){if(e<1)return 1;let t=10**Math.floor(Math.log10(e));return Math.round(e/t)*t}function We(e){return e.credits?N(`market.credits`,{n:Ue(e.credits.credits)}):Be[e.costTier][O]}var Ge={text:ue,document:de,table:Ne,image:T,video:D,audio:Se,dashboard:L};function Y({format:e,className:t}){let n=Ge[e],r=J(W,e);return(0,q.jsx)(`span`,{title:r,className:`inline-flex`,children:(0,q.jsx)(n,{className:t,"aria-label":r,role:`img`})})}var Ke=[`low`,`medium`,`high`];function X({entry:e}){let t=Ke.indexOf(e.costTier)+1,n=O===`de`?we:Ce;return(0,q.jsxs)(`span`,{title:We(e),className:`inline-flex items-center gap-1`,children:[(0,q.jsx)(`span`,{"aria-hidden":`true`,className:`inline-flex shrink-0`,children:Ke.slice(0,t).map((e,t)=>(0,q.jsx)(`span`,{className:A(`rounded-full bg-(--coin-bg,var(--color-card))`,t>0&&`-ml-1.5`),children:(0,q.jsx)(n,{className:`size-4`})},e))}),Be[e.costTier][O]]})}function qe({entry:e,onOpen:t}){return(0,q.jsxs)(ve,{role:`button`,tabIndex:0,onClick:t,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),t())},className:A(`relative flex min-h-[124px] cursor-pointer flex-col gap-5 p-4 text-left transition sm:min-h-[136px] sm:p-5 hover:shadow-elevated focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus`,(!e.usable||e.missing.length>0)&&`opacity-60`),children:[(0,q.jsx)(`span`,{className:`-top-4 pointer-events-none absolute right-4`,children:(0,q.jsx)(u,{kind:e.avatar,size:68,interactive:!1})}),(0,q.jsxs)(`div`,{className:`min-w-0 pr-20`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-1.5 font-display font-semibold text-[15px]`,children:[e.title,e.starred?(0,q.jsx)(E,{className:`size-3.5 shrink-0 fill-amber text-amber`,"aria-label":N(`market.starred`)}):null]}),(0,q.jsx)(`div`,{className:`mt-0.5 text-[13px] text-ink-3 leading-snug`,children:e.pitch})]}),(0,q.jsx)(`div`,{className:`mt-auto flex flex-wrap items-center gap-x-3 gap-y-1.5 text-[12px] text-ink-3`,children:e.usable&&e.missing.length?(0,q.jsx)(j,{tone:`warn`,children:N(`market.missing`,{list:Je(e.missing)})}):e.usable?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,q.jsx)(H,{className:`size-3.5`}),` `,N(`market.minutes`,{n:e.effort.minutes})]}),(0,q.jsx)(X,{entry:e}),(0,q.jsx)(`span`,{className:`ml-auto inline-flex items-center gap-1.5`,children:e.formats.map(e=>(0,q.jsx)(Y,{format:e,className:`size-4`},e))})]}):(0,q.jsx)(j,{tone:`warn`,children:N(`market.needsUpdate`)})})]})}function Z({title:e,children:t}){return(0,q.jsxs)(`div`,{children:[(0,q.jsx)(`div`,{className:`mb-1.5 font-medium text-[12px] text-ink-3 uppercase tracking-[0.06em]`,children:e}),t]})}var Je=e=>e.map(e=>J(G,e)).join(`, `),Ye={text:pe,web:ce,browser:ke,documents:je,image:T,video:D,speech:Le,listening:fe,code:Fe,connectors:x};function Xe(e){switch(e.type){case`page`:return te;case`agent`:return w;case`generate`:return e.asset===`image`?T:e.asset===`video`?D:e.asset===`voice`?Le:e.asset===`dashboard`?L:de;case`widget`:return e.video?Te:ee;case`review`:return ie;case`result`:return C}return oe}function Ze(e){let t=new Set;for(let[n,r]of e.entries())for(let i of r.branches??[]){let r=i.to===`end`?e.length:e.findIndex(e=>e.id===i.to);for(let i=n+1;i<r;i++)t.add(e[i].id)}return t}function Qe(e){let t=Ze(e);return e.map(e=>({id:e.id,title:e.title,icon:Xe(e),tone:ne[e.type]??`bg-paper-2 text-ink-2`,optional:t.has(e.id),branches:e.branches}))}function Q({title:e,children:t}){return(0,q.jsx)(`span`,{title:e,className:`inline-flex items-center gap-2 border-border border-l px-4 first:border-l-0 first:pl-0`,children:t})}function $({icon:e,children:t,more:n}){return(0,q.jsxs)(`div`,{className:`flex gap-2.5`,children:[(0,q.jsx)(`span`,{className:`mt-0.5 shrink-0`,children:e}),(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`text-[14px] text-ink leading-snug`,children:t}),n?(0,q.jsx)(`div`,{className:`text-[12px] text-ink-3 leading-snug`,children:n}):null]})]})}function $e({className:e,children:t}){let n=(0,U.useRef)(null),[r,i]=(0,U.useState)({above:!1,below:!1});(0,U.useEffect)(()=>{let e=n.current;if(!e)return;let t=()=>{let t=e.scrollTop>1,n=e.scrollTop+e.clientHeight<e.scrollHeight-1;i(e=>e.above===t&&e.below===n?e:{above:t,below:n})};t(),e.addEventListener(`scroll`,t,{passive:!0});let r=new ResizeObserver(t);return r.observe(e),e.firstElementChild&&r.observe(e.firstElementChild),()=>{e.removeEventListener(`scroll`,t),r.disconnect()}},[]);let a=`linear-gradient(to bottom, ${r.above?`transparent`:`black`} 0, black 28px, black calc(100% - 44px), ${r.below?`transparent`:`black`} 100%)`;return(0,q.jsx)(`div`,{ref:n,className:e,style:{maskImage:a,WebkitMaskImage:a},children:(0,q.jsx)(`div`,{children:t})})}function et({id:e,fallback:t,onClose:n,onUse:r,busy:i}){let a=m(),o=l(),s=f({queryKey:[`marketplace-entry`,e,O],queryFn:()=>p.get(`/api/studio/marketplace/${encodeURIComponent(e)}?lang=${O}`),enabled:!!e,retry:!1}),c=s.data??t,h=_({mutationFn:t=>{let n=`/api/studio/marketplace/${encodeURIComponent(e)}/star`;return t?p.put(n):p.del(n)},onSuccess:()=>Promise.all([a.invalidateQueries({queryKey:[`marketplace`]}),a.invalidateQueries({queryKey:[`marketplace-entry`,e]})])}),g=d()===`dark`,v=me[he[c?.avatar||`round`]],y=g?`var(--card)`:`color-mix(in oklch, ${v??`var(--ink-4)`} 14%, var(--paper-2))`;return(0,q.jsx)(ge,{open:!!e,onClose:n,wide:!0,bare:!0,children:c?(0,q.jsxs)(`div`,{className:`relative flex max-h-[calc(100dvh-48px)] flex-col rounded-2xl bg-card shadow-overlay max-sm:h-dvh max-sm:max-h-none max-sm:rounded-none`,children:[(0,q.jsx)(`button`,{type:`button`,"aria-label":N(`common.close`),onClick:n,className:`sm:-top-3.5 sm:-right-3.5 absolute top-3 right-3 z-20 flex size-9 items-center justify-center rounded-full bg-card text-ink-2 shadow-elevated ring-1 ring-border-soft transition hover:text-ink focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus`,children:(0,q.jsx)(P,{className:`size-4`})}),(0,q.jsxs)(`header`,{className:`relative shrink-0 border-border-soft border-b px-5 pt-5 pb-4 text-ink sm:rounded-t-2xl sm:px-7`,style:{background:y,"--coin-bg":y},children:[(0,q.jsx)(`span`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0 overflow-hidden sm:rounded-t-2xl`,children:(0,q.jsx)(`span`,{className:A(`-top-28 -right-10 absolute size-80 rounded-full bg-white blur-3xl`,g?`opacity-[0.14]`:`opacity-80`)})}),(0,q.jsx)(`div`,{className:`-bottom-5 absolute right-9 z-10 max-sm:hidden`,children:(0,q.jsx)(u,{kind:c.avatar,size:104})}),(0,q.jsxs)(`div`,{className:`relative sm:pr-36`,children:[(0,q.jsx)(`h2`,{className:`font-display font-semibold text-[22px] leading-tight tracking-tight max-sm:pr-10`,children:c.title}),(0,q.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-2 leading-snug`,children:s.data?.description||c.pitch})]}),c.usable?(0,q.jsxs)(`div`,{className:`-mx-5 sm:-mx-7 relative mt-3.5 flex flex-wrap items-center gap-y-2 border-border-soft border-t px-5 pt-3 font-medium text-[14px] sm:px-7 sm:pr-40`,children:[(0,q.jsxs)(Q,{title:N(`market.duration`),children:[(0,q.jsx)(H,{className:`size-4 text-ink-3`}),N(`market.minutes`,{n:c.effort.minutes})]}),(0,q.jsx)(Q,{title:N(`market.cost`),children:(0,q.jsx)(X,{entry:c})}),(0,q.jsx)(Q,{title:N(`market.result`),children:c.formats.map(e=>(0,q.jsx)(Y,{format:e,className:`size-4`},e))})]}):null]}),c.usable?(0,q.jsxs)(`div`,{className:`grid min-h-0 flex-1 gap-x-7 gap-y-6 px-5 pt-6 max-sm:overflow-y-auto max-sm:pb-4 sm:grid-cols-[230px_minmax(0,1fr)] sm:grid-rows-[minmax(0,1fr)] sm:px-7`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col gap-5 sm:min-h-0 sm:overflow-y-auto`,children:[(0,q.jsx)(Z,{title:N(`market.duration`),children:(0,q.jsx)($,{icon:(0,q.jsx)(H,{className:`size-4 text-moss`}),more:N(`market.durationHint`,{n:c.effort.fields}),children:N(`market.minutes`,{n:c.effort.minutes})})}),(0,q.jsx)(Z,{title:N(`market.cost`),children:(0,q.jsx)($,{icon:(0,q.jsx)(se,{className:`size-4 text-amber`}),more:c.credits?N(`market.creditsHint`):void 0,children:(0,q.jsxs)(`span`,{className:`flex flex-wrap items-center gap-x-2`,children:[(0,q.jsx)(X,{entry:c}),c.credits?(0,q.jsx)(`span`,{className:`text-ink-2`,children:N(`market.creditsRange`,{n:Ue(c.credits.credits)})}):null]})})}),(0,q.jsx)(Z,{title:N(`market.result`),children:(0,q.jsx)(`div`,{className:`flex flex-col gap-2`,children:(s.data?.results??[]).map(e=>(0,q.jsx)($,{icon:(0,q.jsx)(Y,{format:e.kind,className:`size-4 text-ember-strong`}),more:e.formats.map(e=>e.toUpperCase()).join(` · `),children:e.title},e.title))})}),(0,q.jsx)(Z,{title:N(`market.needs`),children:(0,q.jsx)(`ul`,{className:`flex flex-col gap-2`,children:c.capabilities.map(e=>{let t=Ye[e],n=c.missing.includes(e);return(0,q.jsxs)(`li`,{className:A(`flex items-center gap-2.5 text-[14px]`,n?`text-ink-3`:`text-ink-2`),children:[(0,q.jsx)(t,{className:A(`size-4 shrink-0`,n?`text-rose`:`text-cobalt`)}),J(G,e),n?(0,q.jsx)(`span`,{className:`text-[12px] text-rose`,children:N(`market.unavailable`)}):null]},e)})})})]}),(0,q.jsxs)(`div`,{className:`flex flex-col sm:min-h-0`,children:[(0,q.jsx)(`div`,{className:`mb-1.5 shrink-0 font-medium text-[12px] text-ink-3 uppercase tracking-[0.06em]`,children:N(`market.steps`)}),(0,q.jsx)($e,{className:`-mr-2 overscroll-contain pt-1 pr-2 pl-1 sm:min-h-0 sm:flex-1 sm:overflow-y-auto`,children:s.isLoading?(0,q.jsx)(k,{className:`size-5 text-ink-3`}):(0,q.jsx)(U.Suspense,{fallback:(0,q.jsx)(k,{className:`size-5 text-ink-3`}),children:(0,q.jsx)(Ve,{steps:Qe(s.data?.outline??[])})})})]})]}):(0,q.jsx)(`div`,{className:`flex-1 px-5 pt-6 sm:px-7`,children:(0,q.jsx)(`p`,{className:`rounded-lg bg-amber-tint p-3 text-[14px] text-ink-2`,children:N(`market.needsUpdateHint`)})}),(0,q.jsxs)(`div`,{className:`flex shrink-0 justify-end gap-2 px-5 pt-4 pb-5 max-sm:border-border-soft max-sm:border-t sm:px-7 sm:pb-6`,children:[(0,q.jsxs)(M,{variant:`ghost`,className:`mr-auto`,title:N(`market.starHint`),"aria-pressed":c.starred,busy:h.isPending,onClick:()=>h.mutate(!c.starred),children:[(0,q.jsx)(E,{className:A(`size-4`,c.starred&&`fill-amber text-amber`)}),(0,q.jsx)(`span`,{className:`max-sm:sr-only`,children:N(c.starred?`market.starred`:`market.star`)})]}),(0,q.jsx)(M,{variant:`secondary`,onClick:n,children:N(`common.close`)}),c.usable&&c.missing.length?(0,q.jsx)(M,{variant:`secondary`,onClick:()=>o(`/settings/models`),children:N(`editor.models.settings`)}):null,r?(0,q.jsx)(M,{disabled:!c.usable||c.missing.length>0,title:c.missing.length?N(`market.missingHint`,{list:Je(c.missing)}):void 0,busy:i,onClick:()=>r(c),children:N(`market.use`)}):null]})]}):(0,q.jsx)(`div`,{className:`flex min-h-48 flex-col items-center justify-center gap-3 rounded-2xl bg-card p-8 text-[14px] text-ink-2 shadow-overlay`,children:s.isLoading?(0,q.jsx)(k,{className:`size-6 text-ink-3`}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`p`,{children:N(`market.notFound`)}),(0,q.jsx)(M,{variant:`secondary`,onClick:n,children:N(`common.close`)})]})})})}function tt({name:e,value:t,options:n,onChange:r}){let[i,a]=(0,U.useState)(!1),o=(0,U.useRef)(null);(0,U.useEffect)(()=>{if(!i)return;let e=e=>{o.current?.contains(e.target)||a(!1)},t=e=>{e.key===`Escape`&&a(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[i]);let s=n.find(e=>e.value===t);return(0,q.jsxs)(`div`,{ref:o,className:`relative`,children:[(0,q.jsxs)(`div`,{className:A(`flex h-8 items-center rounded-full text-[13px] transition`,s?`bg-ember-tint text-ink`:`text-ink-2 hover:bg-paper-2 hover:text-ink`,i&&!s&&`bg-paper-2 text-ink`),children:[(0,q.jsx)(`button`,{type:`button`,"aria-haspopup":`listbox`,"aria-expanded":i,onClick:()=>a(!i),className:A(`flex h-full items-center gap-1.5 rounded-full pl-3 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus`,s?`pr-1`:`pr-2.5`),children:s?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(`span`,{className:`text-ink-3`,children:e}),(0,q.jsx)(`span`,{className:`font-medium`,children:s.label})]}):(0,q.jsxs)(q.Fragment,{children:[e,(0,q.jsx)(ae,{className:A(`size-3.5 transition`,i&&`rotate-180`)})]})}),s?(0,q.jsx)(`button`,{type:`button`,"aria-label":`${e}: ${N(`market.reset`)}`,onClick:()=>r(``),className:`mr-1 flex size-6 items-center justify-center rounded-full text-ink-3 hover:bg-card hover:text-ink`,children:(0,q.jsx)(P,{className:`size-3.5`})}):null]}),i?(0,q.jsx)(`div`,{role:`listbox`,"aria-label":e,className:`absolute top-full left-0 z-30 mt-1.5 max-h-80 min-w-60 overflow-y-auto rounded-xl bg-card p-1.5 shadow-overlay ring-1 ring-border-soft`,children:n.map(e=>(0,q.jsxs)(`button`,{type:`button`,role:`option`,"aria-selected":e.value===t,disabled:!e.count||e.unavailable,onClick:()=>{r(e.value===t?``:e.value),a(!1)},className:A(`flex w-full items-center gap-2.5 rounded-lg px-2.5 py-2 text-left text-[14px] transition coarse:py-2.5`,e.count&&!e.unavailable?`text-ink-2 hover:bg-paper-2 hover:text-ink`:`text-ink-4`,e.value===t&&`font-medium text-ink`),children:[e.icon,(0,q.jsx)(`span`,{className:`flex-1 whitespace-nowrap`,children:e.label}),e.value===t?(0,q.jsx)(re,{className:`size-4 text-ember`}):e.unavailable?(0,q.jsx)(`span`,{className:`whitespace-nowrap text-[12px] text-ink-4`,children:N(`market.unavailable`)}):(0,q.jsx)(`span`,{className:`text-[12px] text-ink-4 tabular-nums`,children:e.count})]},e.value))}):null]})}function nt(e,t){let[n,r]=(0,U.useState)(e);return(0,U.useEffect)(()=>{let n=setTimeout(()=>r(e),t);return()=>clearTimeout(n)},[e,t]),n}var rt=60;function it({onUse:e,busy:t,open:n}){let[r,i]=(0,U.useState)(``),[a,s]=(0,U.useState)(He),[c,l]=(0,U.useState)(!1),[u,d]=(0,U.useState)(n??null),f=nt(r.trim(),250),m=xe({queryKey:[`marketplace`,O,f,a,c],queryFn:({pageParam:e})=>{let t=new URLSearchParams({lang:O,limit:String(rt),offset:String(e)});f&&t.set(`q`,f);for(let[e,n]of Object.entries(a))n&&t.set(e,n);return c&&t.set(`starred`,`1`),p.get(`/api/studio/marketplace?${t}`)},initialPageParam:0,getNextPageParam:(e,t)=>{let n=t.reduce((e,t)=>e+t.entries.length,0);return n<e.total?n:void 0},placeholderData:o}),h=m.data?.pages[0],g=m.data?.pages.flatMap(e=>e.entries)??[],_=h?.all??0,v=r.trim()!==f||m.isFetching&&!m.isFetchingNextPage,y=(e,t,n)=>Object.keys(t).filter(t=>h?.facets[e]?.[t]!==void 0).map(r=>({value:r,label:J(t,r),icon:n?.(r),count:(h?.facets[e])[r]??0,unavailable:e===`capability`&&b.has(r)})),b=new Set(h?.unavailable??[]),ee=y(`useCase`,ze),x=[{key:`industry`,name:N(`market.industry`),options:y(`industry`,Re)},{key:`format`,name:N(`market.format`),options:y(`format`,W,e=>(0,q.jsx)(Y,{format:e,className:`size-4 text-ink-3`}))},{key:`capability`,name:N(`market.capability`),options:y(`capability`,G,e=>{let t=Ye[e];return(0,q.jsx)(t,{className:`size-4 text-ink-3`})})}],S=!!r.trim()||c||Object.values(a).some(Boolean),C=()=>{s(He),i(``),l(!1)};if(m.isLoading)return(0,q.jsx)(`div`,{className:`flex justify-center py-10`,children:(0,q.jsx)(k,{className:`size-6 text-ink-3`})});let w=h?.offline?(0,q.jsxs)(`p`,{className:`mt-4 flex items-center justify-center gap-2 text-[13px] text-ink-3`,children:[(0,q.jsx)(De,{className:`size-4 shrink-0`}),N(`market.offline`)]}):null;if(!_&&!S)return w;let te=r?(0,q.jsx)(`button`,{type:`button`,"aria-label":N(`market.reset`),onClick:()=>i(``),className:`-mr-1.5 flex size-7 shrink-0 items-center justify-center rounded-full text-ink-3 hover:bg-paper-2 hover:text-ink`,children:(0,q.jsx)(P,{className:`size-4`})}):null,T=e=>A(`inline-flex h-7 shrink-0 items-center gap-1 whitespace-nowrap rounded-full px-2.5 text-[12.5px] transition`,e?`bg-card font-medium text-ink shadow-soft ring-1 ring-border-soft`:`text-ink-3 hover:bg-card/60 hover:text-ink`);return(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`label`,{className:`relative mx-auto flex h-10 max-w-md items-center gap-2.5 rounded-full bg-card px-4 shadow-soft ring-1 ring-border-soft transition focus-within:ring-2 focus-within:ring-focus sm:h-11`,children:[v?(0,q.jsx)(k,{className:`size-4 shrink-0 text-ink-3`}):(0,q.jsx)(le,{className:`size-4 shrink-0 text-ink-3`}),(0,q.jsx)(`input`,{type:`search`,value:r,onChange:e=>i(e.target.value),placeholder:N(`market.search`),"aria-label":N(`market.search`),className:`min-w-0 flex-1 bg-transparent text-[15px] outline-none placeholder:text-ink-4 [&::-webkit-search-cancel-button]:hidden`}),te]}),w,(0,q.jsxs)(`div`,{className:`max-sm:-mx-4 mt-4 flex gap-1 max-sm:overflow-x-auto max-sm:px-4 max-sm:[scrollbar-width:none] sm:flex-wrap sm:justify-center max-sm:[&::-webkit-scrollbar]:hidden`,children:[[{value:``,label:N(`market.all`)},...ee].map(e=>(0,q.jsx)(`button`,{type:`button`,"aria-pressed":!c&&a.useCase===e.value,onClick:()=>{l(!1),s({...a,useCase:e.value})},className:T(!c&&a.useCase===e.value),children:e.label},e.value)),(0,q.jsxs)(`button`,{type:`button`,"aria-pressed":c,onClick:()=>l(!c),className:T(c),children:[(0,q.jsx)(E,{className:A(`size-3.5`,c&&`fill-amber text-amber`)}),N(`market.starred`)]})]}),(0,q.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center gap-x-1 gap-y-2 sm:mt-6`,children:[c?null:x.map(e=>(0,q.jsx)(tt,{name:e.name,value:a[e.key],options:e.options,onChange:t=>s({...a,[e.key]:t})},e.key)),(0,q.jsxs)(`span`,{className:`ml-auto flex items-center gap-3 whitespace-nowrap pl-2 text-[13px] text-ink-3`,children:[S?(0,q.jsxs)(`button`,{type:`button`,onClick:C,className:`inline-flex items-center gap-1 text-ember-strong underline-offset-2 hover:underline`,children:[(0,q.jsx)(P,{className:`size-3.5 max-sm:size-4`}),(0,q.jsx)(`span`,{className:`max-sm:sr-only`,children:N(`market.resetShort`)})]}):null,S?(0,q.jsx)(`span`,{className:`tabular-nums sm:hidden`,children:N(`market.countOfShort`,{n:h?.total??0,all:_})}):null,(0,q.jsx)(`span`,{className:A(`tabular-nums`,S&&`max-sm:hidden`),children:S?N(`market.countOf`,{n:h?.total??0,all:_}):N(`market.count`,{n:_})})]})]}),g.length?(0,q.jsx)(`div`,{className:`mt-4 grid gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:g.map(e=>(0,q.jsx)(qe,{entry:e,onOpen:()=>d(e.id)},e.id))}):(0,q.jsxs)(`div`,{className:`py-10 text-center text-[14px] text-ink-3`,children:[(0,q.jsx)(`p`,{children:N(c?`market.noneStarred`:`market.none`)}),(0,q.jsx)(M,{variant:`ghost`,className:`mt-2`,onClick:C,children:N(`market.reset`)})]}),m.hasNextPage?(0,q.jsx)(`div`,{className:`mt-6 flex justify-center`,children:(0,q.jsx)(M,{variant:`secondary`,busy:m.isFetchingNextPage,onClick:()=>void m.fetchNextPage(),children:N(`market.more`)})}):null,(0,q.jsx)(et,{id:u,fallback:g.find(e=>e.id===u)??null,onClose:()=>d(null),onUse:e,busy:t})]})}var at={de:[`Stellenanzeige aus ein paar Stichworten, als PDF und LinkedIn-Post`,`Produktbeschreibung für den Onlineshop mit drei Bildvarianten`,`Wettbewerbsanalyse zu einer Firma mit Quellen`,`Lead aus einem Formular in unser CRM eintragen`],en:[`A job ad from a few keywords, as PDF and LinkedIn post`,`A shop product description with three image variants`,`A competitor analysis for a company, with sources`,`Put a lead from a form into our CRM`]};function ot(){let e=l(),t=m(),{project:n}=v(),i=g(),[a,o]=(0,U.useState)(``),[s]=r(),c=_({mutationFn:e=>p.post(`/api/studio/wizards`,{projectId:n.id,starterId:e,lang:O}),onSuccess:async({id:n},r)=>{await t.invalidateQueries({queryKey:[`projects`]}),await t.invalidateQueries({queryKey:[`wizards`]}),e(r?`/edit/${n}`:`/edit/${n}?prompt=${encodeURIComponent(a.trim())}`)}}),d=()=>{a.trim()&&n&&c.mutate(void 0)};return!i||n?.readOnly?(0,q.jsx)(h,{to:`/`,replace:!0}):(0,q.jsxs)(`div`,{className:`animate-rise pt-4`,children:[(0,q.jsxs)(`div`,{className:`mx-auto max-w-2xl`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col items-center text-center`,children:[(0,q.jsx)(u,{kind:`sprout`,size:150,fluffy:!0}),(0,q.jsx)(`h1`,{className:`mt-2 font-display font-semibold text-[32px] leading-tight tracking-tight sm:text-[38px]`,children:N(`new.title`)})]}),(0,q.jsxs)(`div`,{className:`mt-8 rounded-2xl bg-card p-2 shadow-elevated ring-1 ring-border-soft focus-within:ring-focus`,children:[(0,q.jsx)(_e,{autoFocus:!0,minRows:4,value:a,onChange:e=>o(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&d()},placeholder:N(`new.placeholder`),className:`border-0 bg-transparent text-[16px] shadow-none focus:ring-0`}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-2 pb-1`,children:[(0,q.jsx)(`span`,{className:`hidden text-[12px] text-ink-4 sm:block`,children:N(`new.hint`)}),(0,q.jsxs)(M,{size:`md`,onClick:d,busy:c.isPending&&!c.variables,disabled:!a.trim(),children:[N(`new.build`),` `,(0,q.jsx)(S,{className:`size-4`})]})]})]}),(0,q.jsx)(`div`,{className:`mt-4 flex flex-wrap justify-center gap-2`,children:at[O].map(e=>(0,q.jsx)(`button`,{type:`button`,onClick:()=>o(e),className:`rounded-full bg-paper-2 px-3.5 py-1.5 text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink`,children:e},e))})]}),(0,q.jsxs)(`section`,{className:`mx-auto max-w-5xl`,children:[(0,q.jsx)(`h2`,{className:`mt-16 mb-5 text-center font-medium text-[13px] text-ink-3 uppercase tracking-[0.08em]`,children:N(`new.orStarter`)}),(0,q.jsx)(it,{open:s.get(`starter`),busy:c.isPending&&!!c.variables,onUse:e=>n&&!c.isPending&&c.mutate(e.id)}),c.error?(0,q.jsx)(`p`,{className:`mt-3 text-center text-[14px] text-rose`,children:c.error.message}):null]}),(0,q.jsx)(`div`,{className:`mt-8 flex justify-center`,children:(0,q.jsx)(ye,{variant:`ghost`,label:N(`new.import`)})})]})}export{ot as NewWizardPage};
@@ -0,0 +1 @@
1
+ import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{O as r,a as i,c as a,d as o,f as s,h as c,j as l,k as u,l as d,n as f,r as p}from"./api-9sHuNTkp.js";import{t as m}from"./createLucideIcon-q3MZMmnf.js";import{t as h}from"./RunnerView-CO1Nk3jn.js";import{t as g}from"./arrow-right-6FyN3e7D.js";import{_,m as v,v as y}from"./outputs-boPx5ngv.js";import{d as b,h as x,t as S,y as C}from"./ui-iTYHqwvY.js";var w={name:`smartphone`,size:24,node:[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]};w.node;var T=m(w),E={name:`square-plus`,size:24,node:[[`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`}]],aliases:[`plus-square`]};E.node;var D=m(E),O=e(t(),1);function k(){if(window.self===window.top)return null;let e=new URLSearchParams(window.location.search).get(`embed`);return e===`inline`||e===`modal`?e:null}var A=k(),j=(e,t={})=>window.parent.postMessage({type:`engenty-wizard:${e}`,...t},`*`);function M(){(0,O.useEffect)(()=>{if(A===`inline`){let e=document.documentElement;document.getElementById(`root`)?.style.setProperty(`min-height`,`0`),e.style.overflow=`hidden`;let t=new ResizeObserver(()=>j(`height`,{height:Math.ceil(e.getBoundingClientRect().height)}));return t.observe(e),()=>t.disconnect()}if(A===`modal`){let e=e=>{e.key===`Escape`&&!document.querySelector(`dialog[open]`)&&j(`close`)};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)}},[])}var N=e(n(),1);function P(e){(0,O.useEffect)(()=>{if(!e)return;let t=document.documentElement;return t.style.setProperty(`--raw-primary`,e),()=>{t.style.removeProperty(`--raw-primary`)}},[e])}function F(e,t){(0,O.useEffect)(()=>{let n=document.querySelector(`link[rel="manifest"]`);if(!e||!t||!n)return;let r=n.getAttribute(`href`)??`/manifest.webmanifest`;n.setAttribute(`href`,`/api/public/wizards/${e}/manifest.webmanifest`);let i=document.createElement(`meta`);return i.name=`apple-mobile-web-app-title`,i.content=t,document.head.appendChild(i),()=>{n.setAttribute(`href`,r),i.remove()}},[e,t])}function I(){let[e,t]=(0,O.useState)(()=>window.wizardInstall??null),[n,r]=(0,O.useState)(!1);(0,O.useEffect)(()=>{let e=()=>t(window.wizardInstall??null);return window.addEventListener(`wizard-install`,e),()=>window.removeEventListener(`wizard-install`,e)},[]);let i=window.matchMedia(`(display-mode: standalone)`).matches||navigator.standalone===!0,a=/iPhone|iPad|iPod/.test(navigator.userAgent)||navigator.platform===`MacIntel`&&navigator.maxTouchPoints>1;return i||!e&&!a?null:(0,N.jsxs)(`div`,{className:`mt-6 flex flex-col items-center gap-2 text-[13px] text-ink-3`,children:[(0,N.jsxs)(`button`,{type:`button`,onClick:()=>{e?(e.prompt(),window.wizardInstall=null,t(null)):r(e=>!e)},className:`inline-flex items-center gap-1.5 underline-offset-4 hover:text-ink hover:underline coarse:min-h-11`,children:[(0,N.jsx)(D,{className:`size-4`}),` `,C(`install.add`)]}),n?(0,N.jsx)(`p`,{className:`max-w-xs leading-relaxed`,children:C(`install.ios`)}):null]})}function L({brand:e,toggle:t=!0}){return(0,N.jsx)(`header`,{className:`safe-top`,children:(0,N.jsxs)(`div`,{className:`relative flex h-14 items-center justify-center px-5`,children:[e.logoUrl?(0,N.jsx)(`img`,{src:a(e.logoUrl),alt:e.name,className:`h-7 max-w-[160px] object-contain`}):e.name?(0,N.jsx)(`span`,{className:`max-w-[60%] truncate font-display font-semibold text-[15px] text-ink-2 tracking-tight`,children:e.name}):null,t?(0,N.jsx)(`div`,{className:`absolute right-3`,children:(0,N.jsx)(s,{})}):null]})})}function R({siteKey:e,onToken:t}){let n=(0,O.useRef)(null);return(0,O.useEffect)(()=>{let r=()=>{n.current&&window.turnstile&&!n.current.childElementCount&&window.turnstile.render(n.current,{sitekey:e,callback:t,appearance:`interaction-only`})};if(window.turnstile){r();return}let i=document.createElement(`script`);i.src=`https://challenges.cloudflare.com/turnstile/v0/api.js`,i.async=!0,i.onload=r,document.head.appendChild(i)},[e,t]),(0,N.jsx)(`div`,{ref:n,className:`mt-4 flex justify-center`})}function z({token:e}){return!/iPhone|iPad|iPod|Android/.test(navigator.userAgent)||v||A?null:(0,N.jsxs)(`a`,{href:_(`${window.location.origin}${i}/w/${e}`),className:`mt-3 inline-flex items-center gap-1.5 text-[13px] text-ink-3 underline-offset-4 hover:text-ink hover:underline coarse:min-h-11`,children:[(0,N.jsx)(T,{className:`size-4`}),` `,C(`install.app`)]})}var B=e=>`wz.run.${e}`,V=v&&new URLSearchParams(window.location.search).get(`start`)===`1`,H=A===`inline`?`min-h-80`:`min-h-dvh`;function U({wizard:e}){let t=r(),[n,i]=(0,O.useState)(!1),[a,s]=(0,O.useState)(null),[c,l]=(0,O.useState)(null),u=(()=>{try{return localStorage.getItem(B(e.token))}catch{return null}})(),d=async()=>{i(!0),s(null);try{let{runId:n}=await f.post(`/api/public/wizards/${e.token}/runs`,{turnstileToken:c??void 0,embedded:A!==null});try{localStorage.setItem(B(e.token),n)}catch{}t(`/w/${e.token}/${n}`,{replace:V})}catch(e){s(e.message),i(!1)}},p=V&&e.available&&!e.turnstileSiteKey,m=(0,O.useRef)(!1);return(0,O.useEffect)(()=>{p&&!m.current&&(m.current=!0,d())},[p]),p&&!a?(0,N.jsx)(`div`,{className:`flex min-h-[60dvh] items-center justify-center text-ink-4`,children:(0,N.jsx)(b,{})}):(0,N.jsxs)(`div`,{className:`mx-auto flex max-w-lg animate-rise flex-col items-center px-6 pt-6 pb-12 text-center sm:pt-16 sm:pb-16`,children:[(0,N.jsx)(o,{kind:e.avatar,size:190,fluffy:!0}),(0,N.jsx)(`h1`,{className:`mt-2 text-balance font-display font-semibold text-[30px] leading-[1.1] tracking-tight sm:text-[34px]`,children:e.title}),e.description?(0,N.jsx)(`p`,{className:`mt-3 text-[16px] text-ink-2 leading-relaxed`,children:e.description}):null,e.available?(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(S,{size:`lg`,className:`mt-10 min-w-48`,busy:n,disabled:!!e.turnstileSiteKey&&!c,onClick:d,children:[C(`run.start`),` `,(0,N.jsx)(g,{className:`size-4`})]}),e.turnstileSiteKey?(0,N.jsx)(R,{siteKey:e.turnstileSiteKey,onToken:l}):null,u?(0,N.jsx)(`button`,{type:`button`,onClick:()=>t(`/w/${e.token}/${u}`),className:`mt-4 text-[14px] text-ink-3 underline-offset-4 hover:text-ink hover:underline coarse:min-h-11`,children:C(`run.resume`)}):null,A||v?null:(0,N.jsx)(I,{}),(0,N.jsx)(z,{token:e.token})]}):(0,N.jsx)(`p`,{className:`mt-10 rounded-xl bg-paper-2 px-5 py-4 text-[15px] text-ink-2`,children:e.unavailableReason??C(`run.unavailable`)}),a?(0,N.jsx)(`p`,{className:`mt-4 text-[14px] text-rose`,children:a}):null]})}function W(){let{token:e,runId:t}=u(),n=r(),a=l({queryKey:[`public`,e],queryFn:()=>f.get(`/api/public/wizards/${e}`),retry:(e,t)=>p(t)&&e<3});if(P(a.data?.brand.accent),c(a.data?.avatar),F(e,a.data?.title),M(),(0,O.useEffect)(()=>{a.data&&(document.title=a.data.title)},[a.data]),(0,O.useEffect)(()=>{e&&t&&y(`run`,{token:e,runId:t})},[e,t]),a.isLoading)return(0,N.jsx)(`div`,{className:x(`flex items-center justify-center text-ink-4`,H),children:(0,N.jsx)(b,{})});if(!a.data){let e=p(a.error);return(0,N.jsxs)(`div`,{className:x(`flex flex-col items-center justify-center gap-4 px-6 text-center`,H),children:[(0,N.jsx)(o,{kind:`pebble`,size:80}),(0,N.jsx)(`p`,{className:`max-w-xs text-ink-3`,children:C(e?`common.offline`:`run.notFound`)}),e?(0,N.jsx)(S,{variant:`secondary`,onClick:()=>void a.refetch(),children:C(`common.retry`)}):null]})}return(0,N.jsxs)(`div`,{className:x(`flex flex-col`,H),children:[A===`inline`||v?null:(0,N.jsx)(L,{brand:a.data.brand,toggle:!A}),(0,N.jsx)(`div`,{className:`flex-1`,children:t?(0,N.jsx)(h,{runId:t,onRestart:()=>n(`/w/${e}`)}):(0,N.jsx)(U,{wizard:a.data})}),v?(0,N.jsx)(`div`,{className:`safe-bottom`}):(0,N.jsx)(`footer`,{className:`safe-bottom pt-6 text-center text-[12px] text-ink-4`,children:(0,N.jsx)(`a`,{href:`${i}/`,target:A?`_blank`:void 0,rel:`noreferrer`,className:`inline-block py-3.5 hover:text-ink-2`,children:C(`run.madeWith`).replace(`engenty wizards`,d.name)})})]})}export{L as BrandHeader,W as PublicRunner,P as useBrandAccent};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/qr-scanner.min-C_UI0gH-.js","assets/preload-helper-CNEI7N0N.js"])))=>i.map(i=>d[i]);
2
+ import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{c as r,d as i,n as a,t as o}from"./api-9sHuNTkp.js";import{t as s}from"./preload-helper-CNEI7N0N.js";import{t as c}from"./createLucideIcon-q3MZMmnf.js";import{t as l}from"./arrow-left-hTN1VoH1.js";import{t as u}from"./arrow-right-6FyN3e7D.js";import{C as d,D as f,E as p,S as m,T as h,a as g,b as _,c as v,d as y,f as b,g as x,h as S,i as C,l as w,o as T,p as E,s as D,t as O,u as k,w as A,x as j,y as M}from"./outputs-boPx5ngv.js";import{t as N}from"./check-CUpby_J9.js";import{n as P,t as F}from"./plus-Du-Jx8aI.js";import{t as I}from"./external-link-MAL7vJYj.js";import{n as L,t as ee}from"./mic-Bvz4mA2j.js";import{n as te,t as ne}from"./video-CjgmvRDk.js";import{d as re,f as ie,p as R,u as ae}from"./definition-DndaH5Ow.js";import{_ as z,c as B,d as V,f as oe,h as H,i as se,l as ce,m as le,n as ue,o as U,p as de,s as W,t as G,u as fe,y as K}from"./ui-iTYHqwvY.js";import{l as q}from"./index-VsRgvimv.js";var pe={name:`arrow-down`,size:24,node:[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]};pe.node;var me=c(pe),he={name:`bell-ring`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]};he.node;var ge=c(he),_e={name:`bell`,size:24,node:[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]};_e.node;var ve=c(_e),ye={name:`camera`,size:24,node:[[`path`,{d:`M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z`,key:`18u6gg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]};ye.node;var be=c(ye),xe={name:`corner-down-left`,size:24,node:[[`path`,{d:`M20 4v7a4 4 0 0 1-4 4H4`,key:`6o5b7l`}],[`path`,{d:`m9 10-5 5 5 5`,key:`1kshq7`}]]};xe.node;var Se=c(xe),Ce={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Ce.node;var we=c(Ce),Te={name:`eraser`,size:24,node:[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`,key:`g5wo59`}],[`path`,{d:`m5.082 11.09 8.828 8.828`,key:`1wx5vj`}]]};Te.node;var Ee=c(Te),De={name:`file-headphone`,size:24,node:[[`path`,{d:`M4 6.835V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-.343`,key:`1vfytu`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M2 19a2 2 0 0 1 4 0v1a2 2 0 0 1-4 0v-4a6 6 0 0 1 12 0v4a2 2 0 0 1-4 0v-1a2 2 0 0 1 4 0`,key:`1etmh7`}]],aliases:[`file-audio`,`file-audio-2`]};De.node;var Oe=c(De),ke={name:`flashlight-off`,size:24,node:[[`path`,{d:`M11.652 6H18`,key:`voqkpr`}],[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M16 16v4a2 2 0 0 1-2 2h-4a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V6`,key:`dzyf92`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M7.649 2H17a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8a4 4 0 0 0-.55 1.007`,key:`1hvcfn`}]]};ke.node;var Ae=c(ke),je={name:`flashlight`,size:24,node:[[`path`,{d:`M12 13v1`,key:`176q98`}],[`path`,{d:`M17 2a1 1 0 0 1 1 1v4a3 3 0 0 1-.6 1.8l-.6.8A4 4 0 0 0 16 12v8a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2v-8a4 4 0 0 0-.8-2.4l-.6-.8A3 3 0 0 1 6 7V3a1 1 0 0 1 1-1z`,key:`17vh7j`}],[`path`,{d:`M6 6h12`,key:`n6hhss`}]]};je.node;var Me=c(je),Ne={name:`grip-vertical`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`1`,key:`1vctgf`}],[`circle`,{cx:`9`,cy:`5`,r:`1`,key:`hp0tcf`}],[`circle`,{cx:`9`,cy:`19`,r:`1`,key:`fkjjf6`}],[`circle`,{cx:`15`,cy:`12`,r:`1`,key:`1tmaij`}],[`circle`,{cx:`15`,cy:`5`,r:`1`,key:`19l28e`}],[`circle`,{cx:`15`,cy:`19`,r:`1`,key:`f4zoj3`}]]};Ne.node;var Pe=c(Ne),Fe={name:`image-plus`,size:24,node:[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Fe.node;var Ie=c(Fe),Le={name:`image-up`,size:24,node:[[`path`,{d:`M10.3 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v10l-3.1-3.1a2 2 0 0 0-2.814.014L6 21`,key:`9csbqa`}],[`path`,{d:`m14 19.5 3-3 3 3`,key:`9vmjn0`}],[`path`,{d:`M17 22v-5.5`,key:`1aa6fl`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};Le.node;var Re=c(Le),ze={name:`locate-fixed`,size:24,node:[[`line`,{x1:`2`,x2:`5`,y1:`12`,y2:`12`,key:`bvdh0s`}],[`line`,{x1:`19`,x2:`22`,y1:`12`,y2:`12`,key:`1tbv5k`}],[`line`,{x1:`12`,x2:`12`,y1:`2`,y2:`5`,key:`11lu5j`}],[`line`,{x1:`12`,x2:`12`,y1:`19`,y2:`22`,key:`x3vr5v`}],[`circle`,{cx:`12`,cy:`12`,r:`7`,key:`fim9np`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]};ze.node;var Be=c(ze),Ve={name:`lock-keyhole`,size:24,node:[[`circle`,{cx:`12`,cy:`16`,r:`1`,key:`1au0dj`}],[`rect`,{x:`3`,y:`10`,width:`18`,height:`12`,rx:`2`,key:`6s8ecr`}],[`path`,{d:`M7 10V7a5 5 0 0 1 10 0v3`,key:`1pqi11`}]]};Ve.node;var He=c(Ve),Ue={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Ue.node;var We=c(Ue),Ge={name:`pencil-line`,size:24,node:[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]};Ge.node;var Ke=c(Ge),qe={name:`rotate-ccw`,size:24,node:[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]};qe.node;var Je=c(qe),Ye={name:`scan-line`,size:24,node:[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M7 12h10`,key:`b7w52i`}]]};Ye.node;var Xe=c(Ye),Ze={name:`share-2`,size:24,node:[[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}],[`circle`,{cx:`6`,cy:`12`,r:`3`,key:`w7nqdw`}],[`circle`,{cx:`18`,cy:`19`,r:`3`,key:`1xt0gg`}],[`line`,{x1:`8.59`,x2:`15.42`,y1:`13.51`,y2:`17.49`,key:`47mynk`}],[`line`,{x1:`15.41`,x2:`8.59`,y1:`6.51`,y2:`10.49`,key:`1n3mei`}]]};Ze.node;var Qe=c(Ze),$e={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};$e.node;var et=c($e),tt={name:`switch-camera`,size:24,node:[[`path`,{d:`M11 19H4a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h5`,key:`mtk2lu`}],[`path`,{d:`M13 5h7a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-5`,key:`120jsl`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}],[`path`,{d:`m18 22-3-3 3-3`,key:`kgdoj7`}],[`path`,{d:`m6 2 3 3-3 3`,key:`1fnbkv`}]]};tt.node;var nt=c(tt),rt={name:`triangle-alert`,size:24,node:[[`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-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]],aliases:[`alert-triangle`]};rt.node;var it=c(rt),at={name:`unplug`,size:24,node:[[`path`,{d:`m19 5 3-3`,key:`yk6iyv`}],[`path`,{d:`m2 22 3-3`,key:`19mgm9`}],[`path`,{d:`M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z`,key:`goz73y`}],[`path`,{d:`M7.5 13.5 10 11`,key:`7xgeeb`}],[`path`,{d:`M10.5 16.5 13 14`,key:`10btkg`}],[`path`,{d:`m12 6 6 6 2.3-2.3a2.4 2.4 0 0 0 0-3.4l-2.6-2.6a2.4 2.4 0 0 0-3.4 0Z`,key:`1snsnr`}]]};at.node;var ot=c(at),J=e(t(),1),Y=e(n(),1);function st(e,t){let n=encodeURIComponent(e),r=encodeURIComponent(t);return[{id:`mail`,label:K(`shareRun.email`),href:`mailto:?subject=${r}&body=${r}%0A%0A${n}`},{id:`x`,label:`X`,href:`https://x.com/intent/post?text=${r}&url=${n}`},{id:`linkedin`,label:`LinkedIn`,href:`https://www.linkedin.com/sharing/share-offsite/?url=${n}`},{id:`whatsapp`,label:`WhatsApp`,href:`https://wa.me/?text=${r}%20${n}`},{id:`facebook`,label:`Facebook`,href:`https://www.facebook.com/sharer/sharer.php?u=${n}`}]}var ct={x:`𝕏`,linkedin:`in`,whatsapp:`WA`,facebook:`f`};function lt({runId:e,title:t,initial:n}){let[r,i]=(0,J.useState)(!1),[o,s]=(0,J.useState)(n),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),m=async()=>{if(i(!0),!o){l(!0),p(null);try{s(await a.post(`/api/runs/${e}/share`))}catch(e){p(e.message)}finally{l(!1)}}},g=async()=>{await a.del(`/api/runs/${e}/share`),s(null),i(!1)},_=()=>{o&&(navigator.clipboard.writeText(o.url),d(!0),setTimeout(()=>d(!1),1500))},v=x(`share`)||typeof navigator<`u`&&`share`in navigator,y=o?.expiresAt?new Intl.DateTimeFormat(z,{dateStyle:`long`}).format(new Date(o.expiresAt)):null;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(G,{variant:`secondary`,onClick:()=>void m(),children:[(0,Y.jsx)(Qe,{className:`size-4`}),` `,K(`shareRun.button`)]}),(0,Y.jsx)(se,{open:r,onClose:()=>i(!1),title:K(`shareRun.title`),children:c?(0,Y.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,Y.jsx)(V,{})}):f?(0,Y.jsx)(`p`,{className:`rounded-lg bg-rose-tint px-3 py-2 text-[14px] text-rose`,children:f}):o?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-paper-2 p-1.5 pl-3`,children:[(0,Y.jsx)(h,{className:`size-4 shrink-0 text-ink-3`}),(0,Y.jsx)(`input`,{readOnly:!0,value:o.url,onFocus:e=>e.target.select(),"aria-label":K(`share.link`),className:`min-w-0 flex-1 bg-transparent text-[14px] outline-none coarse:h-11`}),(0,Y.jsxs)(G,{size:`sm`,onClick:_,children:[u?(0,Y.jsx)(N,{className:`size-3.5`}):(0,Y.jsx)(P,{className:`size-3.5`}),K(u?`share.copied`:`share.copy`)]})]}),(0,Y.jsxs)(`div`,{className:`grid grid-cols-3 gap-3 sm:grid-cols-6`,children:[st(o.url,t).map(e=>(0,Y.jsxs)(`a`,{href:e.href,target:`_blank`,rel:`noreferrer`,className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,Y.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 font-semibold text-[15px] transition hover:bg-paper-3`,children:e.id===`mail`?(0,Y.jsx)(A,{className:`size-5`}):ct[e.id]}),e.label]},e.id)),v?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>void(x(`share`)?S(`share`,{link:o.url,title:t}):navigator.share({title:t,url:o.url})).catch(()=>void 0),className:`flex flex-col items-center gap-1.5 text-[12px] text-ink-2 hover:text-ink`,children:[(0,Y.jsx)(`span`,{className:`inline-flex size-12 items-center justify-center rounded-full bg-paper-2 transition hover:bg-paper-3`,children:(0,Y.jsx)(Qe,{className:`size-5`})}),K(`shareRun.more`)]}):null]}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 text-[13px] text-ink-3`,children:[(0,Y.jsx)(`span`,{children:y?K(`shareRun.until`,{date:y}):K(`shareRun.kept`)}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>void g(),className:`shrink-0 hover:text-rose coarse:min-h-11`,children:K(`shareRun.withdraw`)})]})]}):null})]})}function ut({runId:e,ask:t}){return t.kind===`confirm`?(0,Y.jsx)(dt,{runId:e,ask:t}):(0,Y.jsx)(ft,{runId:e,ask:t})}function dt({runId:e,ask:t}){let[n,r]=(0,J.useState)(!1),[i,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(null),l=async n=>{o(!0),c(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){c(e.message),o(!1)}},u=t.action.destructive?it:Ke;return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:H(`flex size-10 shrink-0 items-center justify-center rounded-full`,t.action.destructive?`bg-rose-tint text-rose`:`bg-ember-tint text-ember-strong`),children:(0,Y.jsx)(u,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:K(`ask.wants`,{service:t.service})}),(0,Y.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason})]})]}),(0,Y.jsx)(`pre`,{className:`max-h-72 overflow-auto whitespace-pre-wrap break-words rounded-xl bg-paper-2 p-4 text-[13px] leading-relaxed ring-1 ring-border-soft`,children:t.input}),(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center gap-4`,children:[(0,Y.jsx)(de,{checked:n,onChange:r,label:K(`ask.allowRest`)}),(0,Y.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:K(`ask.allowRest`)})]}),s?(0,Y.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:s}):null,(0,Y.jsxs)(`div`,{className:`action-bar mt-6 flex items-center justify-between gap-3`,children:[(0,Y.jsx)(G,{variant:`ghost`,disabled:i,onClick:()=>void l({type:`skip`}),children:K(`ask.deny`)}),(0,Y.jsx)(G,{busy:i,onClick:()=>void l({type:`done`,remember:n}),children:K(`ask.allow`)})]})]})}function ft({runId:e,ask:t}){let[n,i]=(0,J.useState)({}),[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(null),[p,m]=(0,J.useState)(0),[h,g]=(0,J.useState)(``),[_,v]=(0,J.useState)(!1),y=(0,J.useRef)(null),b=(0,J.useCallback)(()=>m(e=>e+1),[]);(0,J.useEffect)(()=>{let e=setInterval(b,2500);return()=>clearInterval(e)},[b]);let x=async n=>{l(!0),d(null);try{await a.post(`/api/runs/${e}/ask/${t.id}`,n)}catch(e){d(e.message),l(!1)}},S=async t=>{d(null);try{await a.post(`/api/runs/${e}/browser/act`,t)}catch(e){d(e.message)}b()},C=e=>{let t=y.current;if(!t?.naturalWidth)return;let n=t.getBoundingClientRect();S({type:`click`,x:Math.round((e.clientX-n.left)/n.width*t.naturalWidth),y:Math.round((e.clientY-n.top)/n.height*t.naturalHeight)})},w=t.fields.some(e=>n[e.id]);return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-5 flex items-start gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-ember-tint text-ember-strong`,children:(0,Y.jsx)(He,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0`,children:[(0,Y.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-snug tracking-tight`,children:t.reason}),(0,Y.jsxs)(`p`,{className:`mt-0.5 truncate text-[13px] text-ink-3`,children:[t.site.host,t.site.title?` · ${t.site.title}`:``]})]})]}),(0,Y.jsxs)(`div`,{className:`overflow-hidden rounded-xl bg-paper-2 ring-1 ring-border-soft`,children:[(0,Y.jsx)(`img`,{ref:y,src:r(`/api/runs/${e}/browser/screen?t=${p}`),alt:t.site.host,onClick:C,className:`block w-full cursor-pointer`}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 border-border-soft border-t bg-card p-2`,children:[(0,Y.jsx)(W,{type:_?`password`:`text`,autoComplete:`off`,value:h,placeholder:K(`ask.typeInto`),onChange:e=>g(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),S({type:`type`,text:h}).then(()=>g(``)))},autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:`send`,className:`h-9 min-w-[9rem] flex-1 basis-full text-[13px] sm:basis-0 coarse:h-11`}),(0,Y.jsx)(`button`,{type:`button`,onClick:()=>v(e=>!e),className:H(`h-9 shrink-0 rounded-md px-2.5 text-[12px] coarse:h-11 coarse:px-3.5`,_?`bg-ember-veil text-ink`:`text-ink-3 hover:bg-paper-2`),children:K(`ask.hide`)}),(0,Y.jsx)(pt,{label:`Enter`,onClick:()=>void S({type:`key`,key:`Enter`}),children:(0,Y.jsx)(Se,{className:`size-4`})}),(0,Y.jsx)(pt,{label:K(`ask.up`),onClick:()=>void S({type:`scroll`,dy:-500}),children:(0,Y.jsx)(f,{className:`size-4`})}),(0,Y.jsx)(pt,{label:K(`ask.down`),onClick:()=>void S({type:`scroll`,dy:500}),children:(0,Y.jsx)(me,{className:`size-4`})})]})]}),(0,Y.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-4`,children:K(`ask.pictureHint`)}),t.fields.length?(0,Y.jsxs)(`form`,{className:`mt-5 flex flex-col gap-4`,onSubmit:e=>{e.preventDefault(),x({type:`fill`,values:n,remember:o})},children:[t.fields.map((e,r)=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(B,{children:e.label}),(0,Y.jsx)(W,{autoFocus:r===0,type:e.secret?`password`:`text`,autoComplete:`off`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,enterKeyHint:r===t.fields.length-1?`go`:`next`,value:n[e.id]??``,onChange:t=>i(n=>({...n,[e.id]:t.target.value}))})]},e.id)),(0,Y.jsx)(`button`,{type:`submit`,hidden:!0})]}):null,(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-4`,children:[(0,Y.jsx)(de,{checked:o,onChange:s,label:K(`ask.remember`)}),(0,Y.jsx)(`span`,{className:`flex-1 text-[13px] text-ink-2`,children:K(`ask.remember`)})]}),(0,Y.jsxs)(`p`,{className:`mt-3 flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,Y.jsx)(et,{className:`mt-0.5 size-4 shrink-0 text-moss`}),` `,K(`ask.private`)]}),u?(0,Y.jsx)(`div`,{className:`mt-3 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:u}):null,(0,Y.jsxs)(`div`,{className:`action-bar mt-6 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(G,{variant:`ghost`,disabled:c,onClick:()=>void x({type:`skip`}),children:K(`ask.skip`)}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[t.fields.length?(0,Y.jsx)(G,{variant:`secondary`,disabled:c,onClick:()=>void x({type:`done`,remember:o}),children:K(`ask.done`)}):null,t.fields.length?(0,Y.jsx)(G,{busy:c,disabled:!w,onClick:()=>void x({type:`fill`,values:n,remember:o}),children:K(`ask.signIn`)}):(0,Y.jsx)(G,{busy:c,onClick:()=>void x({type:`done`,remember:o}),children:K(`ask.done`)})]})]})]})}function pt({label:e,onClick:t,children:n}){return(0,Y.jsx)(`button`,{type:`button`,"aria-label":e,title:e,onClick:t,className:`flex size-9 shrink-0 items-center justify-center rounded-md text-ink-3 hover:bg-paper-2 hover:text-ink coarse:size-11`,children:n})}var X=36e5,Z=6e4,mt=1e3;function ht(e){return e.fractionDigits===void 0?e.style===`integer`?0:2:e.fractionDigits}function gt(e,t,n=`en`){if(typeof e!=`number`||!Number.isFinite(e))return``;let r=ht(t),i=t.grouping!==!1;return t.style===`percent`?new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,style:`percent`,useGrouping:i}).format(e):t.style===`currency`&&t.currency?new Intl.NumberFormat(n,{currency:t.currency,maximumFractionDigits:r,minimumFractionDigits:r,style:`currency`,useGrouping:i}).format(e):new Intl.NumberFormat(n,{maximumFractionDigits:r,minimumFractionDigits:r,useGrouping:i}).format(e)}function _t(e,t,n=`en`){if(typeof e!=`string`||e.length===0)return``;if(t.kind===`time`)return vt(e,t.timePrecision??`minutes`);if(t.dateStyle===`iso`)return t.kind===`date`?e.slice(0,10):e;let r=t.kind===`date`?new Date(`${e}T00:00:00`):new Date(e);if(Number.isNaN(r.getTime()))return e;let i=t.dateStyle??`medium`;if(t.kind===`date`)return new Intl.DateTimeFormat(n,{dateStyle:i}).format(r);let a=t.timePrecision??`minutes`;return new Intl.DateTimeFormat(n,{dateStyle:i,timeStyle:a===`hours`?`short`:`medium`}).format(r)}function vt(e,t){let[n=`0`,r=`00`,i=`00`]=e.split(`:`);return t===`hours`?`${n.padStart(2,`0`)}:00`:t===`minutes`?`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}`:`${n.padStart(2,`0`)}:${r.padStart(2,`0`)}:${i.padStart(2,`0`)}`}function yt(e,t){if(typeof e!=`number`||!Number.isFinite(e))return``;let n=Math.max(0,Math.round(e));if(t.display===`iso`)return bt(n);if(t.display===`minutes`)return`${Math.round(n/Z)} min`;if(t.display===`hours`)return`${(n/X).toFixed(2)} h`;if(t.display===`decimal-hours`)return(n/X).toFixed(2);let r=Math.floor(n/X),i=Math.floor(n%X/Z),a=Math.floor(n%Z/mt);return`${r}:${String(i).padStart(2,`0`)}:${String(a).padStart(2,`0`)}`}function bt(e){let t=Math.floor(e/X),n=Math.floor(e%X/Z),r=Math.floor(e%Z/mt);return`${t>=24?`P${Math.floor(t/24)}D`:`P`}T${t%24}H${n}M${r}S`}function xt(e,t,n=`en`){if(t==null)return``;switch(e.type){case`number`:return gt(t,e.format,n);case`date`:return _t(t,e.format,n);case`duration`:return yt(t,e.format);case`boolean`:return t===!0?`true`:t===!1?`false`:``;case`select`:return St(e,t);default:return String(t)}}function St(e,t){let n=Array.isArray(t)?t:[t],r=e.format.options.reduce((e,t)=>(e[t.id]=t.label,e),{});return n.filter(e=>typeof e==`string`&&e.length>0).map(e=>r[e]??e).join(`, `)}async function Ct(e,t=2400){if(!/^image\/(jpeg|png|webp)$/.test(e.type)||e.size<12e5)return e;try{let n=await createImageBitmap(e),r=Math.min(1,t/Math.max(n.width,n.height)),i=document.createElement(`canvas`);i.width=Math.round(n.width*r),i.height=Math.round(n.height*r),i.getContext(`2d`)?.drawImage(n,0,0,i.width,i.height);let a=await new Promise(e=>i.toBlob(e,`image/jpeg`,.86));return a&&a.size<e.size?new File([a],`${e.name.replace(/\.[^.]+$/,``)}.jpg`,{type:`image/jpeg`}):e}catch{return e}}function wt(){return new Date().toISOString().slice(0,19).replace(/[:T]/g,`-`)}function Tt(e){let t=e?.name;return t===`NotFoundError`||t===`OverconstrainedError`?`missing`:t===`NotReadableError`||t===`AbortError`?`busy`:`denied`}function Et(e){return!!e?.getCapabilities?.()?.torch}function Dt(e,t,n=!1){let r=(0,J.useRef)(null),[i,a]=(0,J.useState)(null),[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(!1);return(0,J.useEffect)(()=>{if(!e)return;let r=null,i=!1;s(null),a(null),d(!1),p(!1);let o={facingMode:{ideal:t},width:{ideal:2560},height:{ideal:1440}};return(async()=>{if(!navigator.mediaDevices?.getUserMedia)throw new DOMException(`no camera api`,`NotAllowedError`);try{r=await navigator.mediaDevices.getUserMedia({video:o,audio:n})}catch(e){if(!n)throw e;r=await navigator.mediaDevices.getUserMedia({video:o})}if(i){for(let e of r.getTracks())e.stop();return}a(r);let e=r.getVideoTracks()[0],t=()=>!i&&d(Et(e));t(),setTimeout(t,600);let s=await navigator.mediaDevices.enumerateDevices().catch(()=>[]);i||l(s.filter(e=>e.kind===`videoinput`).length)})().catch(e=>!i&&s(Tt(e))),()=>{i=!0;for(let e of r?.getTracks()??[])e.stop()}},[e,t,n]),(0,J.useEffect)(()=>{r.current&&i&&(r.current.srcObject=i)},[i]),{video:r,stream:i,error:o,cameras:c,torchable:u,torch:f,setTorch:async e=>{let t=i?.getVideoTracks()[0];try{await t?.applyConstraints({advanced:[{torch:e}]}),p(e)}catch{d(!1)}},mirrored:i?.getVideoTracks()[0]?.getSettings().facingMode===`user`}}function Ot({open:e,onClose:t,label:n,children:r}){let i=(0,J.useRef)(null);return(0,J.useEffect)(()=>{let t=i.current;t&&(e&&!t.open?t.showModal():!e&&t.open&&t.close())},[e]),(0,Y.jsx)(`dialog`,{ref:i,onClose:t,"aria-label":n,className:`media-sheet`,children:e?(0,Y.jsx)(`div`,{className:`flex h-full flex-col`,children:r}):null})}function kt({label:e,onClick:t,active:n,children:r}){return(0,Y.jsx)(`button`,{type:`button`,"aria-label":e,title:e,"aria-pressed":n,onClick:t,className:H(`flex size-11 shrink-0 items-center justify-center rounded-full transition`,n?`bg-white text-black`:`bg-white/12 text-white hover:bg-white/20`),children:r})}function At({title:e,onClose:t,camera:n,onFlip:r}){return(0,Y.jsx)(`div`,{className:`safe-top`,children:(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 px-3 py-2`,children:[(0,Y.jsx)(kt,{label:K(`common.close`),onClick:t,children:(0,Y.jsx)(q,{className:`size-5`})}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-center font-medium text-[15px]`,children:e}),n.torchable?(0,Y.jsx)(kt,{label:K(`camera.torch`),active:n.torch,onClick:()=>void n.setTorch(!n.torch),children:n.torch?(0,Y.jsx)(Me,{className:`size-5`}):(0,Y.jsx)(Ae,{className:`size-5`})}):null,n.stream&&(n.cameras>1||v)?(0,Y.jsx)(kt,{label:K(`camera.flip`),onClick:r,children:(0,Y.jsx)(nt,{className:`size-5`})}):(0,Y.jsx)(`span`,{className:`size-11`})]})})}function jt({camera:e,asking:t,children:n,actions:r}){return(0,Y.jsxs)(`div`,{className:`relative min-h-0 flex-1 overflow-hidden`,children:[(0,Y.jsx)(`video`,{ref:e.video,autoPlay:!0,playsInline:!0,muted:!0,className:H(`absolute inset-0 size-full object-contain`,e.mirrored&&`-scale-x-100`)}),e.error?(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-5 bg-black px-8 text-center`,children:[(0,Y.jsx)(`p`,{className:`max-w-sm text-[15px] text-white/85 leading-relaxed`,children:K(`camera.${e.error}`)}),r]}):e.stream?n:(0,Y.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-4 px-8 text-center text-white/75`,children:[(0,Y.jsx)(V,{}),(0,Y.jsx)(`p`,{className:`max-w-xs text-[14px] leading-relaxed`,children:t})]})]})}var Mt=30;function Nt(){if(typeof MediaRecorder<`u`)return[`video/mp4;codecs=avc1.42E01E,mp4a.40.2`,`video/mp4`,`video/webm;codecs=vp9,opus`,`video/webm;codecs=vp8,opus`,`video/webm`].find(e=>MediaRecorder.isTypeSupported(e))}var Pt=!!Nt();function Ft({open:e,multiple:t,video:n,onClose:r,onCapture:i,onNative:a}){let[o,s]=(0,J.useState)(`environment`),[c,l]=(0,J.useState)(`photo`),[u,d]=(0,J.useState)(0),[f,p]=(0,J.useState)(!1),[m,h]=(0,J.useState)(null),g=(0,J.useRef)(null),_=Dt(e,o,c===`video`);(0,J.useEffect)(()=>{e&&(d(0),l(`photo`),h(null))},[e]);let y=async e=>{p(!0);try{await i(e),d(e=>e+1),t||r()}finally{p(!1)}},b=async()=>{let e=_.video.current;if(!e?.videoWidth)return;let t=document.createElement(`canvas`);t.width=e.videoWidth,t.height=e.videoHeight,t.getContext(`2d`)?.drawImage(e,0,0);let n=await new Promise(e=>t.toBlob(e,`image/jpeg`,.9));n&&await y(new File([n],`foto-${wt()}.jpg`,{type:`image/jpeg`}))},x=()=>{g.current?.state===`recording`&&g.current.stop()},S=()=>{let e=Nt();if(!_.stream||!e)return;let t=[],n=new MediaRecorder(_.stream,{mimeType:e,videoBitsPerSecond:25e5,audioBitsPerSecond:96e3});n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{h(null),g.current=null;let n=e.split(`;`)[0];if(t.length){let e=n===`video/mp4`?`mp4`:`webm`;y(new File(t,`video-${wt()}.${e}`,{type:n}))}},g.current=n,n.start(1e3),h(0)};(0,J.useEffect)(()=>{if(m===null)return;if(m>=Mt){g.current?.state===`recording`&&g.current.stop();return}let e=setTimeout(()=>h(e=>e===null?null:e+1),1e3);return()=>clearTimeout(e)},[m]),(0,J.useEffect)(()=>{!e&&g.current&&(g.current.onstop=null,g.current.stop(),g.current=null)},[e]);let C=e=>`0:${String(e).padStart(2,`0`)}`;return(0,Y.jsxs)(Ot,{open:e,onClose:r,label:K(`camera.title`),children:[(0,Y.jsx)(At,{title:m===null?u?K(`camera.taken`,{n:u}):K(`camera.title`):`${C(m)} / ${C(Mt)}`,onClose:r,camera:_,onFlip:()=>s(e=>e===`environment`?`user`:`environment`)}),(0,Y.jsx)(jt,{camera:_,asking:K(`camera.asking`),actions:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[a?(0,Y.jsxs)(Q,{onClick:()=>{r(),a()},children:[(0,Y.jsx)(be,{className:`size-4`}),` `,K(v?`camera.native`:`camera.pick`)]}):null,(0,Y.jsx)(Q,{quiet:!0,onClick:r,children:K(`common.close`)})]})}),(0,Y.jsxs)(`div`,{className:H(`safe-bottom px-4 pt-3`,_.error&&`invisible`),children:[n&&Pt&&m===null?(0,Y.jsx)(`div`,{className:`mb-3 flex justify-center gap-1 text-[13px]`,children:[`photo`,`video`].map(e=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":c===e,onClick:()=>l(e),className:H(`h-9 rounded-full px-4 font-medium transition`,c===e?`bg-white text-black`:`text-white/70 hover:text-white`),children:K(e===`photo`?`camera.photo`:`camera.video`)},e))}):null,(0,Y.jsxs)(`div`,{className:`grid grid-cols-[1fr_auto_1fr] items-center gap-3`,children:[(0,Y.jsx)(`span`,{className:`text-[13px] text-white/70 leading-snug`,children:m===null?c===`video`?K(`camera.clipHint`,{s:Mt}):K(t?`camera.hintMany`:`camera.hint`):K(`camera.recording`)}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":K(c===`photo`?`camera.shoot`:m===null?`camera.record`:`camera.stop`),disabled:!_.stream||f,onClick:()=>c===`photo`?void b():m===null?S():x(),className:`flex size-[72px] items-center justify-center rounded-full border-4 border-white transition active:scale-95 disabled:opacity-40`,children:f?(0,Y.jsx)(V,{className:`text-white`}):c===`photo`?(0,Y.jsx)(`span`,{className:`size-[54px] rounded-full bg-white`}):m===null?(0,Y.jsx)(`span`,{className:`flex size-[54px] items-center justify-center rounded-full bg-[#e5484d]`,children:(0,Y.jsx)(ne,{className:`size-6 text-white`})}):(0,Y.jsx)(`span`,{className:`size-7 rounded-md bg-[#e5484d]`})}),(0,Y.jsx)(`div`,{className:`flex justify-end`,children:t&&u&&m===null?(0,Y.jsxs)(Q,{onClick:r,children:[(0,Y.jsx)(N,{className:`size-4`}),` `,K(`camera.done`)]}):null})]})]})]})}function Q({onClick:e,quiet:t,children:n}){return(0,Y.jsx)(`button`,{type:`button`,onClick:e,className:H(`inline-flex h-11 items-center justify-center gap-2 rounded-full px-5 font-medium text-[14px] transition`,t?`text-white/75 hover:text-white`:`bg-white text-black hover:bg-white/90`),children:n})}var It=25,Lt=9e3;function Rt(e){return e.code===e.PERMISSION_DENIED?`denied`:e.code===e.TIMEOUT?`timeout`:`unavailable`}function zt({value:e,runId:t,placeholder:n,onChange:r,onBusy:i}){let o=re(e)?e:null,[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=(0,J.useRef)(null),f=(0,J.useRef)(!!o?.label),p=(0,J.useRef)(o);p.current=o;let m=o?.lat!==void 0&&o.lng!==void 0,h=typeof navigator<`u`&&`geolocation`in navigator,g=()=>{d.current!==null&&(navigator.geolocation.clearWatch(d.current),d.current=null),c(!1),i?.(!1)};(0,J.useEffect)(()=>()=>{d.current!==null&&navigator.geolocation.clearWatch(d.current)},[]);let _=async(e,n)=>{try{let{label:i}=await a.post(`/api/runs/${t}/geocode`,{lat:e,lng:n,language:z}),o=p.current;i&&!f.current&&o?.lat===e&&o.lng===n&&r({...o,label:i})}catch{}},v=()=>{u(null),c(!0),i?.(!0);let e=Date.now(),t=1/0;d.current=navigator.geolocation.watchPosition(n=>{let{latitude:i,longitude:a,accuracy:o}=n.coords;if(o<t){t=o;let e=Math.round(i*1e6)/1e6,n=Math.round(a*1e6)/1e6,s=f.current?p.current?.label:void 0,c={lat:e,lng:n,accuracy:Math.round(o),...s?{label:s}:{}};p.current=c,r(c)}if(t<=It||Date.now()-e>Lt){g();let e=p.current;e?.lat!==void 0&&e.lng!==void 0&&_(e.lat,e.lng)}},e=>{g(),t===1/0&&u(Rt(e))},{enableHighAccuracy:!0,timeout:15e3,maximumAge:1e4})},y=e=>{f.current=e.trim().length>0;let t={...m?o:{},label:e};r(m||e.trim()?t:void 0)};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[m?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 shrink-0 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,Y.jsx)(We,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsxs)(`div`,{className:`truncate font-medium text-[15px] tabular-nums`,children:[o.lat?.toFixed(5),`, `,o.lng?.toFixed(5)]}),(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 text-[13px] text-ink-3`,children:[(0,Y.jsx)(`span`,{children:s?K(`location.refining`):o.accuracy?K(`location.accuracy`,{m:o.accuracy}):null}),(0,Y.jsxs)(`a`,{href:`https://www.openstreetmap.org/?mlat=${o.lat}&mlon=${o.lng}#map=17/${o.lat}/${o.lng}`,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 underline-offset-2 hover:text-ink hover:underline coarse:-my-3 coarse:min-h-11 coarse:min-w-11`,children:[K(`location.map`),` `,(0,Y.jsx)(I,{className:`size-3`})]})]})]}),(0,Y.jsx)(U,{label:K(`location.remove`),onClick:()=>{g(),f.current=!1,r(void 0)},children:(0,Y.jsx)(q,{className:`size-4`})})]}):h?(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(G,{variant:`secondary`,size:`lg`,busy:s,onClick:v,className:`w-full sm:w-auto`,children:[s?null:(0,Y.jsx)(Be,{className:`size-4`}),K(s?`location.locating`:`location.use`)]}),l?(0,Y.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:K(`location.${l}`)}):(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:K(`location.why`)})]}):null,(0,Y.jsx)(W,{value:o?.label??``,placeholder:n??K(m?`location.label`:`location.manual`),autoComplete:`street-address`,enterKeyHint:`done`,"aria-label":K(`location.manual`),onChange:e=>y(e.target.value)})]})}var Bt=null;function Vt(){return Bt??=(async()=>{let e=window.BarcodeDetector;if(e)try{let t=await e.getSupportedFormats();if(t.includes(`qr_code`)){let n=new e({formats:t});return{qrOnly:!1,detect:async e=>(await n.detect(e))[0]?.rawValue||null}}}catch{}let{default:t}=await s(async()=>{let{default:e}=await import(`./qr-scanner.min-C_UI0gH-.js`);return{default:e}},__vite__mapDeps([0,1])),n=t.createQrEngine();return{qrOnly:!0,detect:async e=>{try{return(await t.scanImage(e,{qrEngine:n,returnDetailedScanResult:!0})).data||null}catch{return null}}}})(),Bt}function Ht({open:e,onClose:t,onResult:n}){let r=(0,J.useRef)(n);r.current=n;let i=(0,J.useRef)(t);return i.current=t,(0,J.useEffect)(()=>{e&&S(`scan`).then(e=>{e&&r.current(e)}).catch(()=>void 0).finally(()=>i.current())},[e]),null}function Ut(e){return x(`scan`)?(0,Y.jsx)(Ht,{...e}):(0,Y.jsx)(Wt,{...e})}function Wt({open:e,onClose:t,onResult:n}){let[r,i]=(0,J.useState)(`environment`),[a,o]=(0,J.useState)(!1),[s,c]=(0,J.useState)(!1),l=(0,J.useRef)(null),u=Dt(e,r),d=(0,J.useRef)(n);d.current=n;let f=(0,J.useRef)(t);f.current=t,(0,J.useEffect)(()=>{e&&(c(!1),Vt().then(e=>o(e.qrOnly)))},[e]),(0,J.useEffect)(()=>{if(!e||!u.stream)return;let t=!1,n,r=async()=>{let e=u.video.current;if(!t&&e&&e.readyState>=2&&e.videoWidth){let n=await(await Vt()).detect(e).catch(()=>null);if(n&&!t){navigator.vibrate?.(60),d.current(n),f.current();return}}t||(n=setTimeout(r,200))};return r(),()=>{t=!0,clearTimeout(n)}},[e,u.stream,u.video]);let p=async e=>{if(!e)return;c(!1);let r=await createImageBitmap(e).catch(()=>null),i=r?await(await Vt()).detect(r).catch(()=>null):null;i?(n(i),t()):c(!0)};return(0,Y.jsxs)(Ot,{open:e,onClose:t,label:K(`scan.title`),children:[(0,Y.jsx)(At,{title:K(`scan.title`),onClose:t,camera:u,onFlip:()=>i(e=>e===`environment`?`user`:`environment`)}),(0,Y.jsx)(jt,{camera:u,asking:K(`scan.asking`),actions:(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[(0,Y.jsxs)(Q,{onClick:()=>l.current?.click(),children:[(0,Y.jsx)(Re,{className:`size-4`}),` `,K(`scan.fromPhoto`)]}),(0,Y.jsx)(Q,{quiet:!0,onClick:t,children:K(`scan.typeInstead`)})]}),children:(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center`,children:(0,Y.jsx)(`div`,{className:`aspect-square w-[min(68%,320px)] rounded-3xl border-2 border-white/90 shadow-[0_0_0_100vmax_rgb(0_0_0/0.35)]`})})}),(0,Y.jsxs)(`div`,{className:`safe-bottom flex flex-col items-center gap-3 px-5 pt-3 text-center`,children:[(0,Y.jsx)(`p`,{className:`text-[13px] text-white/75 leading-snug`,children:K(s?`scan.miss`:a?`scan.hintQr`:`scan.hint`)}),u.stream?(0,Y.jsxs)(Q,{quiet:!0,onClick:()=>l.current?.click(),children:[(0,Y.jsx)(Re,{className:`size-4`}),` `,K(`scan.fromPhoto`)]}):null]}),(0,Y.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,onChange:e=>{p(e.target.files?.[0]),e.target.value=``}})]})}var Gt=`#1d1a17`,Kt={width:1200,height:480};function qt(e,t,n,r,i){e.lineCap=`round`,e.lineJoin=`round`,e.strokeStyle=Gt,e.fillStyle=Gt,e.lineWidth=i;for(let a of t){if(a.length===1){e.beginPath(),e.arc(a[0].x*n,a[0].y*r,i/2,0,Math.PI*2),e.fill();continue}e.beginPath(),e.moveTo(a[0].x*n,a[0].y*r);for(let t=1;t<a.length-1;t++){let i=a[t],o=a[t+1];e.quadraticCurveTo(i.x*n,i.y*r,(i.x+o.x)/2*n,(i.y+o.y)/2*r)}let t=a[a.length-1];e.lineTo(t.x*n,t.y*r),e.stroke()}}function Jt({strokes:e,onStrokes:t}){let n=(0,J.useRef)(null),r=(0,J.useRef)(null),i=(0,J.useRef)(e);i.current=e;let a=()=>{let e=n.current,t=e?.getContext(`2d`);if(!e||!t)return;let a=window.devicePixelRatio||1,o=Math.round(e.clientWidth*a),s=Math.round(e.clientHeight*a);(e.width!==o||e.height!==s)&&(e.width=o,e.height=s),t.clearRect(0,0,o,s),qt(t,r.current?[...i.current,r.current]:i.current,o,s,2.4*a)};(0,J.useEffect)(()=>{a();let e=n.current;if(!e)return;let t=new ResizeObserver(a);return t.observe(e),()=>t.disconnect()},[e]);let o=e=>{let t=e.currentTarget.getBoundingClientRect();return{x:Math.min(1,Math.max(0,(e.clientX-t.left)/t.width)),y:Math.min(1,Math.max(0,(e.clientY-t.top)/t.height))}};return(0,Y.jsxs)(`div`,{className:`relative overflow-hidden rounded-xl bg-white ring-1 ring-input`,children:[(0,Y.jsx)(`canvas`,{ref:n,"aria-label":K(`sign.pad`),className:`block aspect-[5/2] w-full cursor-crosshair touch-none select-none`,onPointerDown:e=>{e.currentTarget.setPointerCapture(e.pointerId),r.current=[o(e)],a()},onPointerMove:e=>{r.current&&(r.current.push(o(e)),a())},onPointerUp:()=>{if(r.current){let e=r.current;r.current=null,t([...i.current,e])}},onPointerCancel:()=>{r.current=null,a()}}),(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-x-6 bottom-[22%] border-[#1d1a17]/25 border-b`}),e.length?null:(0,Y.jsx)(`div`,{className:`pointer-events-none absolute inset-0 flex items-center justify-center text-[#1d1a17]/40 text-[14px]`,children:K(`sign.hint`)})]})}async function Yt(e){let t=document.createElement(`canvas`);t.width=Kt.width,t.height=Kt.height;let n=t.getContext(`2d`);if(!n)return null;qt(n,e,Kt.width,Kt.height,7);let r=await new Promise(e=>t.toBlob(e,`image/png`));return r?new File([r],`unterschrift.png`,{type:`image/png`}):null}function Xt({label:e,value:t,runId:n,onChange:i}){let[o,s]=(0,J.useState)(!1),[c,l]=(0,J.useState)([]),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),m=typeof t==`string`&&t?t:null,h=async()=>{d(!0),p(null);try{let e=await Yt(c);if(!e)return;i((await a.upload(`/api/runs/${n}/uploads`,e)).id),s(!1)}catch(e){p(e.message)}finally{d(!1)}};return(0,Y.jsxs)(`div`,{children:[m?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,Y.jsx)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`min-w-0 flex-1 rounded-lg bg-white px-3`,"aria-label":K(`sign.again`),children:(0,Y.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${m}`),alt:e,className:`mx-auto h-20 object-contain`})}),(0,Y.jsx)(U,{label:K(`sign.remove`),onClick:()=>i(void 0),children:(0,Y.jsx)(q,{className:`size-4`})})]}):(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>{l([]),s(!0)},className:`flex w-full flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-4 py-7 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,children:[(0,Y.jsx)(te,{className:`size-6`}),K(`sign.open`)]}),(0,Y.jsxs)(se,{open:o,onClose:()=>s(!1),title:e,wide:!0,children:[(0,Y.jsx)(Jt,{strokes:c,onStrokes:l}),f?(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:f}):null,(0,Y.jsxs)(`div`,{className:`mt-5 flex items-center justify-between gap-3`,children:[(0,Y.jsxs)(G,{variant:`ghost`,disabled:!c.length||u,onClick:()=>l([]),children:[(0,Y.jsx)(Ee,{className:`size-4`}),` `,K(`sign.clear`)]}),(0,Y.jsx)(G,{busy:u,disabled:!c.length,onClick:()=>void h(),children:K(`sign.accept`)})]})]})]})}function Zt({runId:e,connectionId:t,connector:n,onCancel:r}){let[i,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(!1),[l,u]=(0,J.useState)(null),d=async()=>{c(!0),u(null);try{await a.post(`/api/runs/${e}/connections/${t}/credentials/${n.id}`,{values:i})}catch(e){u(e.message)}finally{c(!1)}};return(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-xl bg-card p-4 ring-1 ring-input`,children:[(n.fields??[]).map(e=>(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(B,{children:e.label}),(0,Y.jsx)(W,{type:e.secret?`password`:`text`,autoComplete:`off`,value:i[e.key]??``,placeholder:e.placeholder,onChange:t=>o(n=>({...n,[e.key]:t.target.value})),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),d())}})]},e.key)),n.hint?(0,Y.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:n.hint}):null,l?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:l}):null,(0,Y.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,Y.jsx)(G,{variant:`ghost`,size:`sm`,onClick:r,children:K(`common.cancel`)}),(0,Y.jsx)(G,{size:`sm`,busy:s,onClick:()=>void d(),children:K(`connect.go`)})]})]})}function Qt({runId:e,connection:t}){let[n,r]=(0,J.useState)(null),[i,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(null);if(!t)return null;if(t.account){let n=t.connectors.find(e=>e.id===t.account?.connector)?.name??``;return(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`flex size-10 items-center justify-center rounded-full bg-moss-tint text-moss`,children:(0,Y.jsx)(N,{className:`size-5`})}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`truncate font-medium text-[15px]`,children:t.account.label}),(0,Y.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:K(`connect.connected`,{name:n})})]}),(0,Y.jsx)(U,{label:K(`connect.disconnect`),onClick:()=>void a.del(`/api/runs/${e}/connections/${t.id}`),children:(0,Y.jsx)(ot,{className:`size-4`})})]})}let l=async n=>{if(c(null),o(null),x(`signIn`)){try{let{url:r}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);await S(`signIn`,{url:r})}catch(e){c(e.message)}return}let r=window.open(`about:blank`,`wizard-connect`,`width=540,height=700`);try{let{url:i}=await a.post(`/api/runs/${e}/connections/${t.id}/oauth/${n.id}`);r?r.location.replace(i):o(i)}catch(e){r?.close(),c(e.message)}},u=t.connectors.find(e=>e.id===n);return t.connectors.length?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.connectors.map(e=>(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>e.auth===`oauth2`?void l(e):r(n===e.id?null:e.id),className:H(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,n===e.id?`bg-ember-veil text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ember`),children:[(0,Y.jsx)(h,{className:`size-4`}),` `,e.name]},e.id))}),u?(0,Y.jsx)(Zt,{runId:e,connectionId:t.id,connector:u,onCancel:()=>r(null)}):null,i?(0,Y.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,className:`text-[14px] text-ember underline`,children:K(`connect.openLink`)}):null,s?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:s}):null]}):(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`connect.none`)})}function $t(e){return e==null?``:Array.isArray(e)?e.join(`, `):String(e)}function en(e,t){if(t.trim()===``)return null;if(e.type===`number`){let e=Number(t.replace(/\s/g,``).replace(`,`,`.`));return Number.isFinite(e)?e:t}return e.type===`boolean`?t===`true`:t}function $({column:e,value:t,boxed:n,onCommit:r}){let[i,a]=(0,J.useState)($t(t));(0,J.useEffect)(()=>a($t(t)),[t]);let o=H(`w-full min-w-0 rounded-md border border-transparent px-2 text-[13px] outline-none focus:border-ember focus:bg-card`,n?`h-11 bg-paper-2`:`h-9 bg-transparent hover:bg-paper-2 coarse:h-11`);return e.type===`boolean`?(0,Y.jsx)(`label`,{className:`flex size-9 cursor-pointer items-center justify-center coarse:size-11`,children:(0,Y.jsx)(`input`,{type:`checkbox`,"aria-label":e.name,checked:t===!0,onChange:e=>r(e.target.checked),className:`size-4 accent-[var(--ember)] coarse:size-6`})}):e.type===`select`&&!e.format.multiple&&!e.format.allowCustom?(0,Y.jsxs)(`select`,{value:i,onChange:e=>r(e.target.value||null),className:o,children:[(0,Y.jsx)(`option`,{value:``}),e.format.options.map(e=>(0,Y.jsx)(`option`,{value:e.id,children:e.label},e.id))]}):(0,Y.jsx)(`input`,{"aria-label":e.name,type:e.type===`date`&&e.format.kind===`date`?`date`:`text`,inputMode:e.type===`number`?`decimal`:void 0,enterKeyHint:`done`,autoComplete:`off`,value:i,onChange:e=>a(e.target.value),onBlur:()=>{i!==$t(t)&&r(en(e,i))},onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),e.target.blur())},className:H(o,e.type===`number`&&`text-right tabular-nums`)})}function tn({runId:e,list:t,editable:n}){let{def:r,rows:i}=t,[s,c]=(0,J.useState)(null),[l,u]=(0,J.useState)({}),d=`/api/runs/${e}/lists/${r.id}/rows`,f=async e=>{c(null);try{await e()}catch(e){c(e instanceof o?e.message:String(e))}},p=()=>f(async()=>{await a.post(d,{cells:l}),u({})}),m=Object.values(l).some(e=>e!=null&&e!==``);if(!i.length&&!n)return(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`list.empty`)});let h=(e,t)=>t===0||e.type===`text`&&e.format?.style===`multiline`,g=(e,t,n)=>void f(()=>a.patch(`${d}/${e}`,{cells:{[t]:n}}));return(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-col gap-2 sm:hidden`,children:[i.map(e=>(0,Y.jsxs)(`div`,{className:`rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((t,r)=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,h(t,r)&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:t.name}),n?(0,Y.jsx)($,{boxed:!0,column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,Y.jsx)(`div`,{className:H(`break-words px-1 text-[14px]`,t.type===`number`&&`tabular-nums`),children:xt(t,e.cells[t.id],z)||`—`})]},t.id))}),n?(0,Y.jsx)(`div`,{className:`mt-1 flex justify-end`,children:(0,Y.jsx)(U,{label:K(`list.delete`),onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,Y.jsx)(M,{className:`size-4`})})}):null]},e.id)),n?(0,Y.jsxs)(`div`,{className:`rounded-lg border border-input border-dashed p-2`,children:[(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-2 gap-y-1.5`,children:r.columns.map((e,t)=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,h(e,t)&&`col-span-2`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,Y.jsx)($,{boxed:!0,column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})]},e.id))}),(0,Y.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,Y.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:()=>m?void p():void 0,children:[(0,Y.jsx)(F,{className:`size-4`}),` `,K(`run.addRow`)]})})]}):null]}),(0,Y.jsx)(`div`,{className:`hidden overflow-x-auto rounded-lg ring-1 ring-border-soft sm:block`,children:(0,Y.jsxs)(`table`,{className:`w-full text-[13px]`,children:[(0,Y.jsx)(`thead`,{className:`bg-paper-2 text-ink-2`,children:(0,Y.jsxs)(`tr`,{children:[r.columns.map(e=>(0,Y.jsx)(`th`,{className:`whitespace-nowrap px-3 py-2 text-left font-medium`,children:e.name},e.id)),n?(0,Y.jsx)(`th`,{className:`w-10`}):null]})}),(0,Y.jsxs)(`tbody`,{children:[i.map(e=>(0,Y.jsxs)(`tr`,{className:`border-border-soft border-t align-top`,children:[r.columns.map(t=>(0,Y.jsx)(`td`,{className:H(`min-w-[7.5rem]`,n?`px-1 py-0.5`:`px-3 py-2`),children:n?(0,Y.jsx)($,{column:t,value:e.cells[t.id],onCommit:n=>g(e.id,t.id,n)}):(0,Y.jsx)(`span`,{className:H(t.type===`number`&&`tabular-nums`),children:xt(t,e.cells[t.id],z)})},t.id)),n?(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)(U,{label:K(`list.delete`),className:`size-9`,onClick:()=>void f(()=>a.del(`${d}/${e.id}`)),children:(0,Y.jsx)(M,{className:`size-3.5`})})}):null]},e.id)),n?(0,Y.jsxs)(`tr`,{className:`border-border-soft border-t bg-paper`,children:[r.columns.map(e=>(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)($,{column:e,value:l[e.id],onCommit:t=>u(n=>({...n,[e.id]:t}))})},e.id)),(0,Y.jsx)(`td`,{className:`px-1 py-0.5`,children:(0,Y.jsx)(U,{label:K(`run.addRow`),className:`size-9`,onClick:()=>m?void p():void 0,children:(0,Y.jsx)(F,{className:`size-4`})})})]}):null]})]})}),s?(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:s}):null]})}function nn(e,t,n){let i=t.split(`/`).map(encodeURIComponent).join(`/`);return r(`/api/runs/${e}/store/files/${i}${n?`?inline=1`:``}`)}var rn=[`bg-paper-3 text-ink-3`,`bg-moss-tint text-moss`,`bg-rose-tint text-rose`,`bg-ember-tint text-ember-strong`];function an({runId:e,list:t}){let{def:n,rows:r}=t,i=n.columns.find(e=>e.id===n.check?.file),s=n.columns.find(e=>e.id===n.check?.status),c=s?.type===`select`?s.format.options:[],l=c[0]?.id,u=e=>s?String(e.cells[s.id]??l??``):``,d=e=>!s||u(e)===l,[f,p]=(0,J.useState)(()=>(r.find(d)??r[0])?.id??null),[m,h]=(0,J.useState)(!1),[g,_]=(0,J.useState)(null),v=`/api/runs/${e}/lists/${n.id}/rows`,y=r.find(e=>e.id===f)??r[0],b=m?r.filter(e=>d(e)||e.id===y?.id):r,x=r.filter(e=>!d(e)).length,S=n.columns.filter(e=>e!==i&&e!==s),C=S.filter(e=>e.id!==n.key),w=C.find(e=>e.type===`text`)??C[0],T=C.filter(e=>e!==w),E=async(e,t)=>{_(null);try{await a.patch(`${v}/${e}`,{cells:t})}catch(e){_(e instanceof o?e.message:String(e))}},D=e=>{let t=b.findIndex(e=>e.id===y?.id),n=b[Math.min(b.length-1,Math.max(0,t+e))];n&&p(n.id)},O=async e=>{if(!y||!s)return;let t=r.findIndex(e=>e.id===y.id),n=[...r.slice(t+1),...r.slice(0,t)].find(d);await E(y.id,{[s.id]:e}),n&&e!==l&&p(n.id)},k=e=>{e.target.closest(`input, textarea, select`)||(e.key===`ArrowDown`||e.key===`ArrowUp`?(e.preventDefault(),D(e.key===`ArrowDown`?1:-1)):/^[1-9]$/.test(e.key)&&c[Number(e.key)]&&(e.preventDefault(),O(c[Number(e.key)].id)))};if(!r.length)return(0,Y.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:K(`list.empty`)});let A=i&&y?String(y.cells[i.id]??``).trim():``,j=A.split(`.`).pop()?.toLowerCase()??``,M=e=>rn[Math.min(Math.max(0,c.findIndex(t=>t.id===u(e))),3)];return(0,Y.jsxs)(`div`,{className:`grid gap-4 lg:grid-cols-[minmax(280px,360px)_minmax(0,1fr)]`,onKeyDown:k,children:[(0,Y.jsxs)(`div`,{className:`flex min-h-0 flex-col`,children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`text-[13px] text-ink-3 tabular-nums`,children:K(`check.progress`,{done:x,total:r.length})}),s?(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":m,onClick:()=>h(e=>!e),className:H(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,m?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:K(`check.onlyOpen`)}):null]}),(0,Y.jsx)(`ul`,{className:`flex max-h-[38vh] flex-col gap-1.5 overflow-y-auto p-0.5 pr-1 lg:max-h-[calc(100vh-15rem)]`,children:b.map(e=>(0,Y.jsx)(`li`,{children:(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>p(e.id),"aria-current":e.id===y?.id,className:H(`flex w-full items-center gap-3 rounded-lg px-3 py-2.5 text-left ring-1 transition`,e.id===y?.id?`bg-card shadow-soft ring-ember`:`bg-paper ring-border-soft hover:bg-card`),children:[(0,Y.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`span`,{className:`block truncate font-medium text-[14px]`,children:w&&xt(w,e.cells[w.id],z)||`—`}),(0,Y.jsx)(`span`,{className:`block truncate text-[12px] text-ink-3 tabular-nums`,children:T.slice(0,2).map(t=>xt(t,e.cells[t.id],z)).filter(Boolean).join(` · `)})]}),s?(0,Y.jsx)(`span`,{className:H(`shrink-0 rounded-full px-2 py-0.5 font-medium text-[11px]`,M(e)),children:c.find(t=>t.id===u(e))?.label??u(e)}):null]})},e.id))})]}),y?(0,Y.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-3`,children:[c.length>1?(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[c.slice(1).map((e,t)=>(0,Y.jsxs)(G,{size:`md`,variant:u(y)===e.id?`primary`:`secondary`,onClick:()=>void O(e.id),children:[u(y)===e.id?(0,Y.jsx)(N,{className:`size-4`}):null,e.label,(0,Y.jsx)(`kbd`,{className:`ml-1 hidden rounded bg-black/10 px-1.5 text-[11px] lg:inline`,children:t+1})]},e.id)),u(y)===l?null:(0,Y.jsx)(G,{size:`md`,variant:`ghost`,onClick:()=>void O(l??``),children:K(`check.reopen`)})]}):null,(0,Y.jsx)(`div`,{className:`overflow-hidden rounded-lg bg-paper-2 ring-1 ring-border-soft`,children:A?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`div`,{className:`flex items-center gap-2 border-border-soft border-b bg-card px-3 py-2 text-[13px]`,children:[(0,Y.jsx)(L,{className:`size-3.5 shrink-0 text-ink-3`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:A.split(`/`).pop()}),(0,Y.jsx)(`a`,{href:nn(e,A,j===`pdf`),target:`_blank`,rel:`noreferrer`,className:`shrink-0 text-ink-2 underline-offset-2 hover:text-ink hover:underline`,children:K(`run.openFull`)})]}),j===`pdf`?(0,Y.jsx)(`iframe`,{title:A,src:`${nn(e,A,!0)}#toolbar=0&navpanes=0&view=FitH`,className:`h-[46vh] w-full border-0 bg-white lg:h-[calc(100vh-27rem)] lg:min-h-[360px]`},A):[`png`,`jpg`,`jpeg`,`webp`].includes(j)?(0,Y.jsx)(`div`,{className:`flex max-h-[46vh] justify-center overflow-auto bg-white lg:max-h-[calc(100vh-27rem)]`,children:(0,Y.jsx)(`img`,{src:nn(e,A,!0),alt:A,className:`max-w-full object-contain`},A)}):(0,Y.jsx)(`p`,{className:`px-4 py-10 text-center text-[14px] text-ink-3`,children:K(`check.noPreview`)})]}):(0,Y.jsx)(`p`,{className:`px-4 py-14 text-center text-[14px] text-ink-3`,children:K(`check.noFile`)})}),(0,Y.jsx)(`div`,{className:`grid grid-cols-2 gap-x-3 gap-y-2 sm:grid-cols-3`,children:S.map(e=>(0,Y.jsxs)(`div`,{className:H(`min-w-0`,e.type===`text`&&e.format?.style===`multiline`&&`col-span-full`),children:[(0,Y.jsx)(`div`,{className:`px-1 pb-0.5 text-[11px] text-ink-3`,children:e.name}),(0,Y.jsx)($,{boxed:!0,column:e,value:y.cells[e.id],onCommit:t=>void E(y.id,{[e.id]:t})})]},e.id))}),g?(0,Y.jsx)(`p`,{className:`text-[13px] text-rose`,children:g}):null]}):null]})}var on={xlsx:`Excel`,csv:`CSV`,json:`JSON`,md:`Markdown`,zip:`ZIP`};function sn({runId:e,list:t}){return(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.formats.map(n=>(0,Y.jsx)(`a`,{href:r(`/api/runs/${e}/lists/${t.def.id}/download?format=${n}`),className:`inline-flex h-9 items-center rounded-full bg-paper-2 px-3.5 font-medium text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink coarse:h-11 coarse:px-4`,children:on[n]??n},n))})}function cn(e){return e>1e6?`${(e/1e6).toFixed(1)} MB`:`${Math.max(1,Math.round(e/1e3))} KB`}function ln({runId:e}){let[t,n]=(0,J.useState)(!1),[i,o]=(0,J.useState)(null),[s,c]=(0,J.useState)(!1);(0,J.useEffect)(()=>{t&&(c(!1),a.get(`/api/runs/${e}/store`).then(o))},[t,e]);let l=i&&!i.files.length&&!i.connections.length&&!i.keepsSignIns&&i.lists.every(e=>!e.rows);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>n(!0),className:`inline-flex items-center gap-1.5 text-[13px] text-ink-4 transition hover:text-ink-2 coarse:min-h-11`,children:[(0,Y.jsx)(we,{className:`size-3.5`}),` `,K(`store.open`)]}),(0,Y.jsx)(se,{open:t,onClose:()=>n(!1),title:K(`store.title`),wide:!0,children:i?(0,Y.jsxs)(`div`,{className:`flex flex-col gap-5 text-[14px]`,children:[(0,Y.jsx)(`p`,{className:`text-ink-3`,children:K(`store.explain`)}),l?(0,Y.jsx)(`p`,{className:`text-ink-2`,children:K(`store.empty`)}):null,i.lists.some(e=>e.rows)?(0,Y.jsx)(`ul`,{className:`flex flex-col gap-1`,children:i.lists.filter(e=>e.rows).map(e=>(0,Y.jsxs)(`li`,{className:`flex justify-between gap-3`,children:[(0,Y.jsx)(`span`,{children:e.title}),(0,Y.jsx)(`span`,{className:`text-ink-3 tabular-nums`,children:K(`store.rows`,{n:e.rows})})]},e.id))}):null,i.connections.map(e=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(h,{className:`size-4 text-ink-3`}),` `,e.account?.label]},e.id)),i.keepsSignIns?(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsx)(N,{className:`size-4 text-ink-3`}),` `,K(`store.signIns`)]}):null,i.files.length?(0,Y.jsxs)(`div`,{children:[(0,Y.jsx)(`div`,{className:`mb-1 text-ink-3`,children:K(`store.files`,{n:i.files.length,size:cn(i.files.reduce((e,t)=>e+t.size,0))})}),(0,Y.jsx)(`ul`,{className:`max-h-56 overflow-y-auto rounded-lg ring-1 ring-border-soft`,children:i.files.map(t=>(0,Y.jsx)(`li`,{className:`border-border-soft border-b last:border-0`,children:(0,Y.jsxs)(`a`,{href:r(`/api/runs/${e}/store/files/${t.path}`),className:`flex items-center gap-2 px-3 py-2 text-[13px] hover:bg-paper-2 coarse:min-h-11`,title:t.source??void 0,children:[(0,Y.jsx)(L,{className:`size-3.5 shrink-0 text-ink-3`}),(0,Y.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:t.path}),(0,Y.jsx)(`span`,{className:`text-ink-4 tabular-nums`,children:cn(t.size)})]})},t.path))})]}):null,(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 pt-1`,children:[l?(0,Y.jsx)(`span`,{}):s?(0,Y.jsxs)(G,{variant:`secondary`,onClick:async()=>{await a.del(`/api/runs/${e}/store`),o(await a.get(`/api/runs/${e}/store`)),c(!1)},children:[(0,Y.jsx)(M,{className:`size-4`}),` `,K(`store.confirmDelete`)]}):(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>c(!0),children:[(0,Y.jsx)(M,{className:`size-4`}),` `,K(`store.delete`)]}),(0,Y.jsx)(G,{onClick:()=>n(!1),children:K(`common.close`)})]})]}):(0,Y.jsx)(`div`,{className:`flex justify-center py-8 text-ink-4`,children:(0,Y.jsx)(V,{})})})]})}var un=300;function dn(){if(typeof MediaRecorder<`u`)return[`audio/webm;codecs=opus`,`audio/mp4`,`audio/webm`,`audio/ogg;codecs=opus`].find(e=>MediaRecorder.isTypeSupported(e))}function fn(e){return`${Math.floor(e/60)}:${String(Math.floor(e%60)).padStart(2,`0`)}`}function pn({value:e,runId:t,onChange:n,onBusy:r}){let i=ae(e)?e:null,[o,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(0),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)(null),[m,h]=(0,J.useState)(!1),[v,y]=(0,J.useState)(null),b=(0,J.useRef)(null),x=(0,J.useRef)(null),S=dn(),C=g&&!!S;(0,J.useEffect)(()=>()=>{b.current&&(b.current.recorder.onstop=null,b.current.stop())},[]),(0,J.useEffect)(()=>()=>{v&&URL.revokeObjectURL(v.url)},[v]);let w=async(e,i)=>{d(!0),r?.(!0),p(null);try{let r=await a.upload(`/api/runs/${t}/uploads`,e);y({asset:r.id,url:URL.createObjectURL(e)}),n({asset:r.id,...i===void 0?{}:{seconds:i}})}catch(e){p(e.message)}finally{d(!1),r?.(!1)}},T=async()=>{p(null),h(!1);let e;try{e=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!0,noiseSuppression:!0}})}catch{h(!0);return}let t=[],n=new MediaRecorder(e,{mimeType:S,audioBitsPerSecond:48e3}),i=Date.now(),a=new AudioContext,o=a.createAnalyser();o.fftSize=256,a.createMediaStreamSource(e).connect(o);let c=new Uint8Array(o.fftSize),u=0,d=()=>{o.getByteTimeDomainData(c);let e=0;for(let t of c)e=Math.max(e,Math.abs(t-128));if(l(Math.min(1,e/64)),s((Date.now()-i)/1e3),(Date.now()-i)/1e3>=un){f();return}u=requestAnimationFrame(d)},f=()=>{cancelAnimationFrame(u),n.state!==`inactive`&&n.stop();for(let t of e.getTracks())t.stop();a.close().catch(()=>void 0),b.current=null,s(null),l(0)};n.ondataavailable=e=>e.data.size&&t.push(e.data),n.onstop=()=>{let e=(n.mimeType||S||`audio/webm`).split(`;`)[0],r=e===`audio/mp4`?`m4a`:e===`audio/ogg`?`ogg`:`webm`,a=Math.max(1,Math.round((Date.now()-i)/1e3));w(new File(t,`sprachnotiz-${wt()}.${r}`,{type:e}),a)},b.current={recorder:n,stop:f},r?.(!0),n.start(1e3),u=requestAnimationFrame(d)},E=o!==null,D=(0,Y.jsxs)(G,{variant:`secondary`,onClick:()=>x.current?.click(),children:[(0,Y.jsx)(Oe,{className:`size-4`}),` `,K(`voice.pick`)]});return(0,Y.jsxs)(`div`,{children:[E?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-3 ring-1 ring-ember`,children:[(0,Y.jsxs)(`span`,{className:`relative flex size-11 shrink-0 items-center justify-center`,children:[(0,Y.jsx)(`span`,{className:`absolute inset-0 rounded-full bg-rose-tint transition-transform duration-75`,style:{transform:`scale(${.7+c*.5})`}}),(0,Y.jsx)(`span`,{className:`relative size-3.5 animate-pulse-dot rounded-full bg-rose`})]}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`div`,{className:`font-medium text-[15px] tabular-nums`,children:fn(o)}),(0,Y.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:o>270?K(`voice.left`,{s:Math.ceil(un-o)}):K(`voice.recording`)})]}),(0,Y.jsxs)(G,{onClick:()=>b.current?.stop(),children:[(0,Y.jsx)(_,{className:`size-3.5 fill-current`}),` `,K(`voice.stop`)]})]}):u?(0,Y.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl bg-card p-4 text-[14px] text-ink-3 ring-1 ring-input`,children:[(0,Y.jsx)(V,{className:`size-4`}),` `,K(`run.uploading`)]}):i?(0,Y.jsxs)(`div`,{className:`rounded-xl bg-card p-3 ring-1 ring-input`,children:[(0,Y.jsx)(`audio`,{controls:!0,preload:`metadata`,src:v?.asset===i.asset?v.url:`/api/runs/${t}/assets/${i.asset}`,className:`h-11 w-full`}),i.transcript?(0,Y.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap px-1 text-[14px] text-ink-2 leading-relaxed`,children:i.transcript}):null,(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center justify-between gap-2`,children:[(0,Y.jsx)(`span`,{className:`px-1 text-[13px] text-ink-3`,children:i.seconds?fn(i.seconds):null}),(0,Y.jsxs)(`div`,{className:`flex gap-1`,children:[C?(0,Y.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:()=>void T(),children:[(0,Y.jsx)(Je,{className:`size-3.5`}),` `,K(`voice.again`)]}):null,(0,Y.jsx)(G,{variant:`ghost`,size:`sm`,onClick:()=>n(void 0),children:K(`voice.remove`)})]})]})]}):(0,Y.jsxs)(`div`,{children:[(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[C?(0,Y.jsxs)(G,{variant:`secondary`,size:`lg`,onClick:()=>void T(),className:`w-full sm:w-auto`,children:[(0,Y.jsx)(ee,{className:`size-4`}),` `,K(`voice.start`)]}):D,C&&m?D:null]}),m?(0,Y.jsx)(`p`,{className:`mt-2 rounded-lg bg-amber-tint px-3 py-2 text-[13px] text-ink-2 leading-relaxed`,children:K(`voice.denied`)}):(0,Y.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3 leading-relaxed`,children:K(C?`voice.why`:`voice.noRecorder`)})]}),(0,Y.jsx)(`input`,{ref:x,type:`file`,hidden:!0,accept:`audio/*`,capture:!0,onChange:e=>{let t=e.target.files?.[0];e.target.value=``,t&&w(t,void 0)}}),f?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:f}):null]})}function mn(e,t){try{return new Intl.NumberFormat(void 0,{style:`currency`,currency:t}).format(e)}catch{return`${e.toFixed(2)} ${t}`}}function hn({field:e,value:t,values:n,onChange:r}){let i=e.columns??[],a=Array.isArray(t)&&t.length?t:[{}],o=ie(e,a,n),s=(e,t,n)=>{r(a.map((r,i)=>i===e?{...r,[t]:n}:r))},c=i.map(e=>e.kind===`text`&&e===i[0]?`minmax(0,3fr)`:`minmax(0,1fr)`).join(` `);return(0,Y.jsxs)(`div`,{className:`rounded-xl bg-card p-2 ring-1 ring-input`,children:[(0,Y.jsx)(`div`,{className:`hidden gap-2 px-2 pt-1 pb-2 text-[12px] text-ink-3 sm:grid`,style:{gridTemplateColumns:`${c} 36px`},children:i.map(e=>(0,Y.jsx)(`div`,{className:e.kind===`text`?``:`text-right`,children:e.label},e.id))}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-2`,children:a.map((e,t)=>(0,Y.jsxs)(`div`,{className:`grid grid-cols-6 gap-2 rounded-lg bg-paper p-2 sm:bg-transparent sm:p-0 sm:[grid-template-columns:var(--cols)]`,style:{"--cols":`${c} 36px`},children:[i.map((n,r)=>(0,Y.jsxs)(`label`,{className:H(`flex min-w-0 flex-col gap-1 sm:col-span-1`,r===0?`col-span-5`:i.length-1<=2?`col-span-3`:`col-span-2`),children:[(0,Y.jsx)(`span`,{className:`px-0.5 text-[11px] text-ink-3 sm:hidden`,children:n.label}),(0,Y.jsx)(`input`,{"aria-label":n.label,placeholder:n.label,inputMode:n.kind===`text`?`text`:`decimal`,autoComplete:`off`,value:String(e[n.id]??``),onChange:e=>s(t,n.id,e.target.value),className:H(`h-11 w-full min-w-0 rounded-md border border-transparent bg-paper-2 px-2.5 text-[14px] outline-none placeholder:text-transparent focus:border-focus focus:bg-card sm:placeholder:text-ink-4`,n.kind!==`text`&&`text-right tabular-nums`)})]},n.id)),(0,Y.jsx)(U,{label:K(`list.delete`),onClick:()=>r(a.filter((e,n)=>n!==t)),className:`order-first col-start-6 row-start-1 size-11 justify-self-end self-end sm:order-none sm:col-start-auto sm:row-start-auto`,children:(0,Y.jsx)(M,{className:`size-4`})})]},t))}),(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-end justify-between gap-3 px-2 pb-1`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>r([...a,{}]),className:`inline-flex h-9 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent coarse:h-11`,children:[(0,Y.jsx)(F,{className:`size-4`}),` `,K(`run.addRow`)]}),(0,Y.jsxs)(`div`,{className:`text-right text-[13px] tabular-nums`,children:[(0,Y.jsxs)(`div`,{className:`text-ink-3`,children:[K(`run.net`),` `,mn(o.net,o.currency)]}),o.vatRate?(0,Y.jsxs)(`div`,{className:`text-ink-3`,children:[K(`run.vat`,{r:o.vatRate}),` `,mn(o.vat,o.currency)]}):null,(0,Y.jsxs)(`div`,{className:`font-semibold text-[15px] text-ink`,children:[K(`run.total`),` `,mn(o.gross,o.currency)]})]})]})]})}function gn(e){return!!e?.closest(`input, textarea, [contenteditable='true']`)}function _n({field:e,value:t,runId:n,onChange:i,onBusy:o}){let s=(0,J.useRef)(null),c=(0,J.useRef)(null),l=(0,J.useRef)(null),u=(0,J.useRef)(null),[f,m]=(0,J.useState)(!1),[h,_]=(0,J.useState)({}),[y,b]=(0,J.useState)(null),[x,S]=(0,J.useState)(!1),[C,w]=(0,J.useState)(!1),[T,E]=(0,J.useState)(null),D=(0,J.useRef)(null),O=e=>{D.current=e,E(e)},k=e.kind===`image`,A=!!e.multiple,j=A?e.max??30:1,M=k||!!e.camera||!!e.video,N=!k&&!!e.video,P=Array.isArray(t)?t:typeof t==`string`&&t?[t]:[],F=(0,J.useRef)(P);F.current=P;let I=P.length<j,L=async e=>{let t=(k?e.filter(e=>e.type.startsWith(`image/`)):e).sort((e,t)=>e.name.localeCompare(t.name,void 0,{numeric:!0}));if(!t.length)return;let r=j-(A?F.current.length:0);m(!0),o?.(!0),b(t.length>r&&A?K(`run.maxFiles`,{n:j}):null);try{for(let e of t.slice(0,Math.max(0,r))){let t=await Ct(e),r=await a.upload(`/api/runs/${n}/uploads`,t);_(e=>({...e,[r.id]:{name:r.name,mime:r.mime}}));let o=A?[...F.current,r.id]:r.id;F.current=A?o:[r.id],i(o)}}catch(e){b(e.message)}finally{m(!1),o?.(!1)}},ee=(0,J.useRef)(L);ee.current=L;let te=e=>{let t=P.filter(t=>t!==e);i(A?t:void 0)},re=(e,t)=>{let n=F.current.indexOf(e),r=Math.min(F.current.length-1,Math.max(0,t));if(n<0||n===r)return;let a=F.current.filter(t=>t!==e);a.splice(r,0,e),F.current=a,i(a)},ie=A&&P.length>1;(0,J.useEffect)(()=>{if(!I)return;let e=e=>{let t=Array.from(e.clipboardData?.files??[]),n=s.current;if(!t.length||!n||gn(document.activeElement))return;let r=document.querySelectorAll(`[data-upload-field]`);(n.matches(`:hover`)||n.contains(document.activeElement)||r.length===1)&&(e.preventDefault(),ee.current(t))};return document.addEventListener(`paste`,e),()=>document.removeEventListener(`paste`,e)},[I]);let R=H(`flex flex-col items-center justify-center gap-2 rounded-xl border border-input border-dashed bg-card px-3 text-[14px] text-ink-3 transition hover:border-ember hover:text-ink`,P.length?`py-4`:`py-8`);return(0,Y.jsxs)(`div`,{ref:s,"data-upload-field":``,onDragOver:e=>{I&&(e.preventDefault(),w(!0))},onDragLeave:()=>w(!1),onDrop:e=>{w(!1),I&&(e.preventDefault(),L(Array.from(e.dataTransfer.files)))},children:[P.length?(0,Y.jsx)(`div`,{className:`mb-2 flex flex-col gap-2`,children:P.map((e,t)=>{let i=h[e],a=i?.mime??(k?`image/`:``);return(0,Y.jsxs)(`div`,{"data-file-id":e,className:H(`flex items-center gap-3 rounded-xl bg-card p-2 ring-1 ring-input transition-shadow`,T===e&&`relative z-10 shadow-elevated ring-2 ring-ember`),children:[ie?(0,Y.jsxs)(`button`,{type:`button`,"aria-label":K(`run.moveFile`,{n:t+1}),title:K(`run.moveFileHint`),className:H(`-mr-1 flex h-14 w-9 shrink-0 touch-none flex-col items-center justify-center gap-0.5 rounded-lg text-ink-3 hover:bg-paper-2 hover:text-ink`,T===e?`cursor-grabbing`:`cursor-grab`),onPointerDown:t=>{try{t.currentTarget.setPointerCapture(t.pointerId)}catch{}O(e)},onPointerMove:t=>{if(D.current!==e)return;let n=document.elementFromPoint(t.clientX,t.clientY)?.closest(`[data-file-id]`),r=n?.getAttribute(`data-file-id`);r&&r!==e&&s.current?.contains(n??null)&&re(e,F.current.indexOf(r))},onPointerUp:()=>O(null),onPointerCancel:()=>O(null),onKeyDown:n=>{(n.key===`ArrowUp`||n.key===`ArrowDown`)&&(n.preventDefault(),re(e,t+(n.key===`ArrowUp`?-1:1)))},children:[(0,Y.jsx)(`span`,{className:`font-medium text-[12px] tabular-nums`,children:t+1}),(0,Y.jsx)(Pe,{className:`size-4`})]}):null,a.startsWith(`image/`)?(0,Y.jsx)(`img`,{src:r(`/api/runs/${n}/assets/${e}`),alt:``,className:`size-14 rounded-lg object-cover`}):(0,Y.jsx)(`div`,{className:`flex size-12 shrink-0 items-center justify-center rounded-lg bg-paper-2`,children:a.startsWith(`video/`)?(0,Y.jsx)(p,{className:`size-5 text-ink-3`}):(0,Y.jsx)(d,{className:`size-5 text-ink-3`})}),(0,Y.jsx)(`div`,{className:`min-w-0 flex-1 truncate text-[14px]`,children:i?.name??`✓`}),(0,Y.jsx)(U,{label:K(`run.removeFile`),onClick:()=>te(e),children:(0,Y.jsx)(q,{className:`size-4`})})]},e)})}):null,I?(0,Y.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>c.current?.click(),className:H(R,`min-w-[9rem] flex-1 px-4`,C&&`border-ember text-ink`),children:[k?(0,Y.jsx)(Ie,{className:`size-6`}):(0,Y.jsx)(d,{className:`size-6`}),f?K(`run.uploading`):P.length?K(`run.uploadMore`):K(v?`run.uploadTouch`:`run.upload`)]}),M?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>g?S(!0):l.current?.click(),className:H(R,`w-28`),children:[(0,Y.jsx)(be,{className:`size-6`}),K(`run.camera`)]}):null,N&&!(g&&Pt)?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>u.current?.click(),className:H(R,`w-28`),children:[(0,Y.jsx)(ne,{className:`size-6`}),K(`camera.video`)]}):null]}):null,(0,Y.jsx)(`input`,{ref:c,type:`file`,hidden:!0,multiple:A,accept:k?`image/*`:void 0,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}),(0,Y.jsx)(`input`,{ref:l,type:`file`,hidden:!0,accept:`image/*`,capture:`environment`,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}),N?(0,Y.jsx)(`input`,{ref:u,type:`file`,hidden:!0,accept:`video/*`,capture:`environment`,onChange:e=>{L(Array.from(e.target.files??[])),e.target.value=``}}):null,(0,Y.jsx)(Ft,{open:x,multiple:A,video:N,onClose:()=>S(!1),onCapture:e=>L([e]),onNative:()=>l.current?.click()}),A&&(e.min||e.max)?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-ink-3 tabular-nums`,children:e.min&&P.length<e.min?K(`run.filesMin`,{n:P.length,min:e.min}):e.max?K(`run.filesOf`,{n:P.length,max:e.max}):null}):null,y?(0,Y.jsx)(`div`,{className:`mt-2 text-[13px] text-rose`,children:y}):null]})}function vn(e){let t=`${e.id} ${e.label}`.toLowerCase();return/telefon|phone|handy|mobil(?!it)|\btel\b|rückruf/.test(t)?{type:`tel`,inputMode:`tel`,autoComplete:`tel`}:/\bplz\b|postleitzahl|postal|zip/.test(t)?{inputMode:`numeric`,autoComplete:`postal-code`}:/iban/.test(t)?{autoCapitalize:`characters`,autoCorrect:`off`,spellCheck:!1}:/vorname|first.?name/.test(t)?{autoComplete:`given-name`,autoCapitalize:`words`}:/nachname|last.?name|surname/.test(t)?{autoComplete:`family-name`,autoCapitalize:`words`}:/firma|unternehmen|company|organi[sz]ation/.test(t)?{autoComplete:`organization`,autoCapitalize:`words`}:/straße|strasse|street|anschrift|adresse|address/.test(t)?{autoComplete:`street-address`,autoCapitalize:`words`}:/\b(ort|stadt|city|town)\b/.test(t)?{autoComplete:`address-level2`,autoCapitalize:`words`}:/\bname\b|ansprechp/.test(t)?{autoComplete:`name`,autoCapitalize:`words`}:{autoCapitalize:`sentences`}}function yn({field:e,value:t,onChange:n}){let[r,i]=(0,J.useState)(!1);return(0,Y.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Y.jsx)(W,{value:t,placeholder:e.placeholder,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>n(e.target.value)}),(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>i(!0),className:`inline-flex h-11 shrink-0 items-center gap-2 rounded-lg border border-input bg-card px-3.5 font-medium text-[14px] text-ink-2 transition hover:border-ember hover:text-ink`,children:[(0,Y.jsx)(Xe,{className:`size-4`}),` `,K(`scan.button`)]}),(0,Y.jsx)(Ut,{open:r,onClose:()=>i(!1),onResult:n})]})}function bn({field:e,value:t,values:n,runId:r,view:i,onChange:a,onBusy:o,error:s}){let c=t==null?``:String(t),l;switch(e.kind){case`textarea`:l=(0,Y.jsx)(le,{value:c,placeholder:e.placeholder,autoCapitalize:`sentences`,enterKeyHint:`enter`,onChange:e=>a(e.target.value)});break;case`number`:l=(0,Y.jsx)(W,{inputMode:`decimal`,autoComplete:`off`,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`select`:{let t=e.options??[];l=t.length<=5&&t.every(e=>e.length<=28)?(0,Y.jsx)(ce,{value:c,options:t,onChange:a}):(0,Y.jsx)(fe,{value:c,placeholder:`—`,onChange:a,options:t.map(e=>({value:e,label:e}))});break}case`multiselect`:l=(0,Y.jsx)(ce,{multi:!0,value:Array.isArray(t)?t:[],options:e.options??[],onChange:a});break;case`date`:l=(0,Y.jsx)(W,{type:`date`,value:c,onChange:e=>a(e.target.value),className:`w-full sm:w-56`});break;case`email`:l=(0,Y.jsx)(W,{type:`email`,inputMode:`email`,autoComplete:`email`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)});break;case`url`:l=(0,Y.jsx)(W,{type:`url`,inputMode:`url`,autoComplete:`url`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,value:c,placeholder:e.placeholder??`https://`,onChange:e=>a(e.target.value)});break;case`toggle`:l=(0,Y.jsx)(de,{checked:t===!0,onChange:a,label:e.label});break;case`color`:l=(0,Y.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,Y.jsx)(oe,{value:c||`#e0531b`,onChange:e=>a(e.target.value)}),(0,Y.jsx)(W,{value:c,placeholder:`#e0531b`,autoCapitalize:`off`,autoCorrect:`off`,spellCheck:!1,onChange:e=>a(e.target.value),className:`w-36`})]});break;case`image`:case`file`:l=(0,Y.jsx)(_n,{field:e,value:t,runId:r,onChange:a,onBusy:o});break;case`items`:l=(0,Y.jsx)(hn,{field:e,value:t,values:n,onChange:a});break;case`connection`:l=(0,Y.jsx)(Qt,{runId:r,connection:i?.connections.find(t=>t.id===e.connection)});break;case`list`:{let t=i?.lists.find(t=>t.def.id===e.list);l=t?(0,Y.jsx)(tn,{runId:r,list:t,editable:!0}):null;break}case`location`:l=(0,Y.jsx)(zt,{value:t,runId:r,placeholder:e.placeholder,onChange:a,onBusy:o});break;case`audio`:l=(0,Y.jsx)(pn,{value:t,runId:r,onChange:a,onBusy:o});break;case`signature`:l=(0,Y.jsx)(Xt,{label:e.label,value:t,runId:r,onChange:a});break;default:l=e.scan?(0,Y.jsx)(yn,{field:e,value:c,onChange:a}):(0,Y.jsx)(W,{...vn(e),value:c,placeholder:e.placeholder,onChange:e=>a(e.target.value)})}return(0,Y.jsxs)(`div`,{children:[e.kind===`toggle`?(0,Y.jsxs)(`div`,{className:`flex items-start justify-between gap-6`,children:[(0,Y.jsx)(B,{hint:e.help,children:e.label}),l]}):(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(B,{hint:e.help,required:e.required,children:e.label}),l]}),s?(0,Y.jsx)(`div`,{className:`mt-1.5 text-[13px] text-rose`,children:s}):null]})}var xn=45e3;function Sn(e){let[t,n]=(0,J.useState)(null),[i,s]=(0,J.useState)(null),[c,l]=(0,J.useState)(!1),[u,d]=(0,J.useState)(!1),[f,p]=(0,J.useState)({});(0,J.useEffect)(()=>{if(n(null),l(!1),!e)return;let t=!1,i=0,s,c=null,u=Date.now(),d=()=>{t=!0,c?.close(),l(!0)},f=async()=>{try{let r=await a.get(`/api/runs/${e}`);t||n(r)}catch(e){e instanceof o&&e.status===404&&d()}},p=()=>{if(clearTimeout(s),c?.close(),t)return;let a=new EventSource(r(`/api/runs/${e}/stream`),{withCredentials:!0});c=a,u=Date.now(),a.addEventListener(`view`,e=>{i=0,u=Date.now(),n(JSON.parse(e.data))}),a.addEventListener(`ping`,()=>{u=Date.now()}),a.onerror=()=>{a.close(),!(t||c!==a)&&(c=null,f(),i=Math.min(i+1,6),s=setTimeout(p,500*2**i))}},m=()=>{t||document.visibilityState!==`visible`||(!c||c.readyState===EventSource.CLOSED||Date.now()-u>xn?(i=0,p()):f())},h=setInterval(()=>{!t&&c&&Date.now()-u>xn&&(i=0,p())},15e3);return p(),document.addEventListener(`visibilitychange`,m),window.addEventListener(`pageshow`,m),window.addEventListener(`online`,m),()=>{t=!0,clearTimeout(s),clearInterval(h),document.removeEventListener(`visibilitychange`,m),window.removeEventListener(`pageshow`,m),window.removeEventListener(`online`,m),c?.close()}},[e]);let m=(0,J.useCallback)(async(t,n)=>{if(!e)return!1;d(!0),s(null),p({});try{return await a.post(`/api/runs/${e}/${t}`,n),!0}catch(e){return e instanceof o&&e.status===422&&Array.isArray(e.body?.fields)&&p(Object.fromEntries(e.body.fields.map(e=>[e.field,e.message]))),s(e.message),!1}finally{d(!1)}},[e]);return{view:t,notFound:c,error:i,busy:u,fieldErrors:f,submitPage:(e,t)=>m(`pages/${e}`,{values:t}),accept:(e,t)=>m(`reviews/${e}`,{type:`accept`,edits:t}),regenerate:(e,t,n,r)=>m(`reviews/${e}`,{type:`regenerate`,target:t,note:n,items:r?.length?r:void 0}),back:()=>m(`back`),retry:()=>m(`retry`)}}function Cn({view:e}){let t=Math.round(Math.min(e.progress.done,e.progress.total)/Math.max(1,e.progress.total)*100);return(0,Y.jsx)(`div`,{className:`h-[3px] w-full bg-paper-2`,children:(0,Y.jsx)(`div`,{className:`h-full bg-ember transition-[width] duration-700 ease-out`,style:{width:`${t}%`}})})}function wn({title:e,description:t,kicker:n}){return(0,Y.jsxs)(`div`,{className:`mb-8`,children:[n?(0,Y.jsx)(`p`,{className:`mb-4 text-[15px] text-ink-2 leading-relaxed`,children:n}):null,(0,Y.jsx)(`h1`,{className:`font-display font-semibold text-[28px] leading-[1.15] tracking-tight sm:text-[32px]`,children:e}),t?(0,Y.jsx)(`p`,{className:`mt-2 text-[15px] text-ink-3 leading-relaxed`,children:t}):null]})}function Tn(e,t){let n={};for(let r of e.fields)n[r.id]=t.values[r.id]??t.prefill?.[r.id]??r.default??(r.kind===`multiselect`?[]:void 0);return n}function En(e){return Array.from(e.querySelectorAll(`input:not([type="hidden"], [type="file"], [type="checkbox"], [type="color"], [type="range"], [disabled]), textarea:not([disabled])`)).filter(e=>!e.closest(`dialog`)&&e.offsetParent!==null)}function Dn({view:e,run:t,step:n}){let[r,i]=(0,J.useState)(()=>Tn(n,e)),[a,o]=(0,J.useState)(new Set),s=(0,J.useRef)(null),c=e.progress.done===0,l=()=>void t.submitPage(n.id,r);return(0,J.useEffect)(()=>{if(!s.current)return;let e=En(s.current).filter(e=>e instanceof HTMLInputElement);for(let[t,n]of e.entries())(n.dataset.hint||!n.hasAttribute(`enterkeyhint`))&&(n.dataset.hint=`1`,n.setAttribute(`enterkeyhint`,t===e.length-1?`go`:`next`))}),(0,Y.jsxs)(`form`,{ref:s,className:`animate-rise`,onSubmit:e=>{e.preventDefault(),a.size||l()},onKeyDown:e=>{let t=e.target;if(e.key!==`Enter`||e.defaultPrevented||e.nativeEvent.isComposing||!(t instanceof HTMLInputElement)||t.closest(`dialog`))return;let n=En(e.currentTarget),r=n[n.indexOf(t)+1];r&&(e.preventDefault(),r.focus())},children:[(0,Y.jsx)(wn,{title:n.title,description:n.description,kicker:c?e.wizard.intro:null}),(0,Y.jsx)(`div`,{className:`flex flex-col gap-7`,children:n.fields.map(n=>(0,Y.jsx)(bn,{field:n,value:r[n.id],values:r,runId:e.id,view:e,error:t.fieldErrors[n.id],onChange:e=>i(t=>({...t,[n.id]:e})),onBusy:e=>o(t=>{if(t.has(n.id)===e)return t;let r=new Set(t);return e?r.add(n.id):r.delete(n.id),r})},n.id))}),(0,Y.jsx)(On,{view:e,run:t,sticky:!0,children:(0,Y.jsxs)(G,{type:`submit`,size:`lg`,busy:t.busy,disabled:a.size>0,children:[n.cta||K(`run.next`),` `,(0,Y.jsx)(u,{className:`size-4`})]})})]})}function On({view:e,run:t,sticky:n,children:r}){return(0,Y.jsxs)(`div`,{className:H(`mt-10 flex items-center justify-between gap-3`,n&&`action-bar`),children:[e.canBack?(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>void t.back(),disabled:t.busy,children:[(0,Y.jsx)(l,{className:`size-4`}),` `,K(`run.back`)]}):(0,Y.jsx)(`span`,{}),r]})}function kn(){let e=b(),[t,n]=(0,J.useState)(!1),r=e!==`off`;return(0,Y.jsxs)(`div`,{className:`mt-6 flex flex-col items-center gap-2`,children:[(0,Y.jsxs)(`button`,{type:`button`,"aria-pressed":r,disabled:t,onClick:async()=>{if(r){T();return}n(!0),await D(),n(!1)},className:H(`inline-flex h-11 items-center gap-2 rounded-full px-4 font-medium text-[14px] ring-1 transition`,r?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink hover:ring-ink-4`),children:[r?(0,Y.jsx)(ge,{className:`size-4 text-ember-strong`}):(0,Y.jsx)(ve,{className:`size-4`}),K(r?`notify.on`:`notify.ask`)]}),(0,Y.jsx)(`p`,{className:`max-w-xs text-[12px] text-ink-4 leading-relaxed`,children:K(e===`off`?`notify.why`:e===`on`?`notify.onHint`:w()?`notify.blocked`:`notify.quiet`)})]})}function An({view:e,compact:t,awake:n}){let a=(0,J.useMemo)(()=>{let t=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id);return t?new Date(t.at).getTime():Date.now()},[e.events,e.step?.id]),[o,s]=(0,J.useState)(Date.now());(0,J.useEffect)(()=>{let e=setInterval(()=>s(Date.now()),1e3);return()=>clearInterval(e)},[]);let c=[...e.events].reverse().find(t=>t.type===`step_started`&&t.stepId===e.step?.id)?.message??e.step?.title??K(`run.working`),l=e.events.filter(e=>(e.type===`tool`||e.type===`info`)&&new Date(e.at).getTime()>=a-500),u=l.slice(-4),d=[...new Set(l.map(e=>e.asset).filter(e=>!!e))],f=[...l].reverse().find(e=>e.asset)?.asset;return(0,Y.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-6 text-center`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:t?130:170,fluffy:!0}),(0,Y.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px] tracking-tight`,children:c}),(0,Y.jsx)(`div`,{className:`mt-1 text-[13px] text-ink-4 tabular-nums`,children:K(`run.elapsed`,{s:Math.max(0,Math.round((o-a)/1e3))})}),d.length?(0,Y.jsx)(`div`,{className:`mt-5 flex max-w-full flex-wrap justify-center gap-2`,children:d.slice(-8).map(t=>(0,Y.jsx)(`img`,{src:r(`/api/runs/${e.id}/assets/${t}`),alt:``,className:H(`size-16 animate-rise rounded-lg bg-paper-2 object-cover ring-1 ring-border-soft transition sm:size-20`,t===f?`ring-2 ring-ember`:`opacity-70`)},t))}):null,(0,Y.jsx)(`div`,{className:`mt-6 flex min-h-[7rem] w-full max-w-sm flex-col gap-1.5`,children:u.map((e,t)=>(0,Y.jsxs)(`div`,{className:H(`flex items-center justify-center gap-2 text-[13px] transition-opacity`,t===u.length-1?`text-ink-2`:`text-ink-4`),children:[t===u.length-1?(0,Y.jsx)(j,{className:`size-3.5 animate-breathe text-ember`}):null,(0,Y.jsx)(`span`,{className:`truncate`,children:e.message})]},e.id))}),t?null:(0,Y.jsx)(kn,{}),n?(0,Y.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-4`,children:K(`run.awake`)}):null]})}function jn(e){let t=(0,J.useRef)({running:!1,since:0,ask:null});(0,J.useEffect)(()=>{if(!e)return;let n=t.current,r=e.status===`running`,i=r?n.running?n.since:Date.now():0,a=t=>{document.visibilityState!==`visible`&&!document.title.startsWith(`● `)&&(document.title=`● ${document.title}`),k({title:e.wizard.title,body:t,tag:e.id})};r&&e.ask&&e.ask.id!==n.ask?a(K(`notify.needsYou`)):!r&&n.running&&Date.now()-n.since>8e3&&a(e.status===`failed`?K(`run.failed`):e.status===`done`?K(`notify.done`):K(`notify.next`)),t.current={running:r,since:i,ask:e.ask?.id??null}},[e]),(0,J.useEffect)(()=>{let e=()=>{document.visibilityState===`visible`&&document.title.startsWith(`● `)&&(document.title=document.title.slice(2))};return document.addEventListener(`visibilitychange`,e),()=>document.removeEventListener(`visibilitychange`,e)},[])}function Mn({view:e,run:t,step:n}){let[r,i]=(0,J.useState)({}),[a,o]=(0,J.useState)({}),[s,c]=(0,J.useState)(``),l=e.shown.filter(e=>e.output),[d,f]=(0,J.useState)(l.length===1?l[0].step.id:null),[p,h]=(0,J.useState)({}),g=(0,J.useRef)(null),_=l.find(e=>e.step.id===d),v=_?.step.type===`generate`&&(_.output?.assets?.length??0)>1,y=()=>{_&&s.trim()&&t.regenerate(n.id,_.step.id,s.trim(),p[_.step.id])};return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsx)(wn,{title:n.title,description:n.description}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[e.shown.map(({step:t,output:s})=>{let c=!!n.edit&&t.type===`agent`&&t.output.format!==`json`;return(0,Y.jsxs)(`section`,{children:[(0,Y.jsxs)(`div`,{className:`mb-2 flex items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.title}),(0,Y.jsx)(`div`,{className:`flex items-center`,children:c&&!a[t.id]?(0,Y.jsxs)(`button`,{type:`button`,onClick:()=>o(e=>({...e,[t.id]:!0})),className:`inline-flex h-8 items-center gap-1.5 rounded-full px-3 text-[13px] text-ink-2 hover:bg-accent hover:text-ink coarse:h-11`,children:[(0,Y.jsx)(m,{className:`size-3.5`}),` `,K(`run.edit`)]}):null})]}),(0,Y.jsx)(C,{base:`/api/runs/${e.id}`,step:t,output:s,editable:c&&a[t.id],draft:r[t.id],onDraft:e=>i(n=>({...n,[t.id]:e})),picked:p[t.id],onPick:n.regenerate?e=>{f(t.id),h(n=>{let r=n[t.id]??[];return{...n,[t.id]:r.includes(e)?r.filter(t=>t!==e):[...r,e]}}),g.current?.focus()}:void 0})]},t.id)}),e.lists.map(t=>(0,Y.jsxs)(`section`,{children:[(0,Y.jsx)(`h3`,{className:`mb-2 font-medium text-[13px] text-ink-3 uppercase tracking-[0.06em]`,children:t.def.title}),t.def.check?(0,Y.jsx)(an,{runId:e.id,list:t}):(0,Y.jsx)(tn,{runId:e.id,list:t,editable:!0})]},t.def.id)),n.regenerate&&l.length?(0,Y.jsxs)(ue,{className:`p-3`,children:[l.length>1?(0,Y.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 px-1 pb-2`,children:[(0,Y.jsx)(`span`,{className:`mr-1 text-[13px] text-ink-3`,children:K(`run.feedbackTarget`)}),l.map(({step:e})=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":d===e.id,onClick:()=>{f(e.id),g.current?.focus()},className:H(`inline-flex h-8 items-center rounded-full px-3 text-[13px] ring-1 transition coarse:h-11`,d===e.id?`bg-ember-tint text-ink ring-ember`:`bg-card text-ink-2 ring-input hover:text-ink`),children:e.title},e.id))]}):null,(0,Y.jsx)(le,{ref:g,minRows:2,maxRows:8,value:s,placeholder:K(`run.feedbackPlaceholder`),onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),y())},className:`border-0 bg-transparent shadow-none focus:ring-0`}),(0,Y.jsxs)(`div`,{className:`flex items-center justify-between gap-3 px-1 pt-1`,children:[(0,Y.jsx)(`span`,{className:`min-w-0 text-[12px] text-ink-3`,children:v?p[_.step.id]?.length?K(`run.regeneratePicked`,{n:[...p[_.step.id]].sort((e,t)=>e-t).map(e=>e+1).join(`, `)}):K(`run.regenerateAll`):!_&&s.trim()?K(`run.feedbackPick`):null}),(0,Y.jsxs)(G,{size:`sm`,variant:`secondary`,busy:t.busy,disabled:!s.trim()||!_,onClick:y,children:[(0,Y.jsx)(R,{className:`size-3.5`}),` `,K(`run.regenerateGo`)]})]})]}):null]}),(0,Y.jsx)(On,{view:e,run:t,sticky:!0,children:(0,Y.jsxs)(G,{size:`lg`,busy:t.busy,onClick:()=>void t.accept(n.id,Object.keys(r).length?r:void 0),children:[K(`run.accept`),` `,(0,Y.jsx)(u,{className:`size-4`})]})})]})}function Nn({view:e,run:t,step:n,onRestart:r}){let a=e.shown.filter(e=>e.output);return(0,Y.jsxs)(`div`,{className:`animate-rise`,children:[(0,Y.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-center gap-x-4 gap-y-5`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:64}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1 basis-[12rem]`,children:[(0,Y.jsx)(`h1`,{className:`text-balance font-display font-semibold text-[28px] leading-tight tracking-tight sm:text-[32px]`,children:n.title}),n.message?(0,Y.jsx)(`p`,{className:`mt-1 text-[15px] text-ink-3`,children:n.message}):null]}),e.shown.some(e=>e.output)?(0,Y.jsx)(`div`,{className:`max-sm:basis-full`,children:(0,Y.jsx)(lt,{runId:e.id,title:`${n.title} · ${e.wizard.title}`,initial:e.shareUrl?{url:e.shareUrl,expiresAt:e.expiresAt}:null})}):null]}),(0,Y.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[a.map(({step:t,output:n,formats:r,label:i})=>(0,Y.jsxs)(ue,{className:`p-4 sm:p-5`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:i??t.title}),(0,Y.jsx)(O,{base:`/api/runs/${e.id}`,stepId:t.id,formats:r,title:i??t.title})]}),(0,Y.jsx)(C,{base:`/api/runs/${e.id}`,step:t,output:n}),n?.assets?.some(e=>e.ai)?(0,Y.jsx)(`p`,{className:`mt-3 text-[12px] text-ink-3 leading-relaxed`,children:K(`ai.publish`)}):null]},t.id)),e.lists.map(t=>(0,Y.jsxs)(ue,{className:`p-4 sm:p-5`,children:[(0,Y.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,Y.jsx)(`h3`,{className:`font-display font-semibold text-[17px]`,children:t.label??t.def.title}),(0,Y.jsx)(sn,{runId:e.id,list:t})]}),(0,Y.jsx)(tn,{runId:e.id,list:t,editable:!0})]},t.def.id))]}),(0,Y.jsx)(On,{view:e,run:t,children:r?(0,Y.jsxs)(G,{variant:`secondary`,onClick:r,children:[(0,Y.jsx)(Je,{className:`size-4`}),` `,K(`run.again`)]}):(0,Y.jsx)(`span`,{})})]})}function Pn({view:e,run:t}){return(0,Y.jsxs)(`div`,{className:`flex animate-rise flex-col items-center pt-8 text-center`,children:[(0,Y.jsx)(i,{kind:e.wizard.avatar,size:90}),(0,Y.jsx)(`h2`,{className:`mt-4 font-display font-semibold text-[22px]`,children:K(`run.failed`)}),(0,Y.jsx)(`p`,{className:`mt-2 max-w-md text-[15px] text-ink-3`,children:e.error}),(0,Y.jsxs)(`div`,{className:`mt-8 flex gap-3`,children:[e.canBack?(0,Y.jsxs)(G,{variant:`ghost`,onClick:()=>void t.back(),children:[(0,Y.jsx)(l,{className:`size-4`}),` `,K(`run.back`)]}):null,(0,Y.jsxs)(G,{onClick:()=>void t.retry(),busy:t.busy,children:[(0,Y.jsx)(Je,{className:`size-4`}),` `,K(`run.retry`)]})]})]})}function Fn({runId:e,compact:t,onRestart:n,onView:r,stickyProgress:i}){let a=Sn(e),{view:o}=a;(0,J.useEffect)(()=>{r?.(o)},[o,r]),y();let s=E(o?.status===`running`&&!o.ask);if(jn(o),a.notFound)return(0,Y.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:K(`run.notFound`)});if(!o)return(0,Y.jsx)(`div`,{className:`flex justify-center py-24 text-ink-4`,children:(0,Y.jsx)(V,{})});let c=o.step,l=null;if(o.status===`running`&&o.ask)l=(0,Y.jsx)(ut,{runId:o.id,ask:o.ask},o.ask.id);else if(o.status===`running`)l=(0,Y.jsx)(An,{view:o,compact:t,awake:s});else if(o.status===`failed`)l=(0,Y.jsx)(Pn,{view:o,run:a});else if(o.status===`cancelled`)l=(0,Y.jsx)(`div`,{className:`py-24 text-center text-ink-3`,children:K(`run.cancelled`)});else if(c?.type===`page`)l=(0,Y.jsx)(Dn,{view:o,run:a,step:c},c.id);else if(c?.type===`review`){let e=o.shown.map(e=>e.output?.at??``).join(`|`);l=(0,Y.jsx)(Mn,{view:o,run:a,step:c},`${c.id}:${e}`)}else c?.type===`result`&&(l=(0,Y.jsx)(Nn,{view:o,run:a,step:c,onRestart:n}));let u=c?.type===`review`&&o.status===`waiting_input`&&o.lists.some(e=>e.def.check);return(0,Y.jsxs)(`div`,{className:`flex min-h-full flex-col`,children:[i?(0,Y.jsx)(`div`,{className:`sticky top-0 z-10`,children:(0,Y.jsx)(Cn,{view:o})}):(0,Y.jsx)(Cn,{view:o}),(0,Y.jsxs)(`div`,{className:H(`safe-x mx-auto w-full flex-1`,u?`max-w-[1240px] py-8`:t?`max-w-[620px] py-8`:`max-w-[640px] py-8 sm:py-16`),children:[l,a.error&&o.status!==`failed`?(0,Y.jsx)(`div`,{className:`mt-4 rounded-lg bg-rose-tint px-4 py-3 text-[14px] text-rose`,children:a.error}):null,o.keeps&&o.status!==`running`?(0,Y.jsx)(`div`,{className:`mt-10 flex justify-center`,children:(0,Y.jsx)(ln,{runId:o.id})}):null]})]})}export{Qe as n,me as r,Fn as t};
@@ -0,0 +1,2 @@
1
+ import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{O as r,S as i,c as a,d as o,i as s,j as c,k as l,n as u,nt as d,w as f}from"./api-9sHuNTkp.js";import{d as p,l as m,o as h,s as g,t as _}from"./session-CJGuo1Tv.js";import{t as v}from"./createLucideIcon-q3MZMmnf.js";import{n as y,t as ee}from"./plug-CLjyCoHB.js";import{t as te}from"./arrow-right-6FyN3e7D.js";import{D as b,E as ne,S as x,T as re,r as ie,w as ae,x as oe,y as S}from"./outputs-boPx5ngv.js";import{t as C}from"./check-CUpby_J9.js";import{n as w,r as se,t as ce}from"./wand-sparkles-CKxArWPY.js";import{a as le,r as ue,t as de}from"./ChatPanel-zurtfj6A.js";import{a as fe,i as pe,n as me,r as he,t as ge}from"./type-BMJpS6_D.js";import{n as _e,t as T}from"./plus-Du-Jx8aI.js";import{t as E}from"./external-link-MAL7vJYj.js";import{n as ve}from"./mic-Bvz4mA2j.js";import{p as ye}from"./definition-DndaH5Ow.js";import{t as be}from"./upload--J5bZhEM.js";import{_ as D,a as xe,c as O,d as k,f as Se,h as A,i as j,m as M,n as N,o as P,p as Ce,r as F,s as I,t as L,u as we,y as R}from"./ui-iTYHqwvY.js";import{a as Te,c as Ee,i as De,o as Oe,r as ke,s as Ae,u as je}from"./index-VsRgvimv.js";import{o as z,r as B,t as Me}from"./LocalRuntime-Brkvbzzg.js";import{ProjectSwitcher as Ne}from"./HomePage-CBvWxXsq.js";var Pe={name:`calendar`,size:24,node:[[`path`,{d:`M8 2v3`,key:`1ioesn`}],[`path`,{d:`M16 2v3`,key:`otl347`}],[`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`,key:`h1oib`}],[`path`,{d:`M3 9h18`,key:`1pudct`}]]};Pe.node;var Fe=v(Pe),Ie={name:`cloud`,size:24,node:[[`path`,{d:`M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z`,key:`p7xjir`}]]};Ie.node;var Le=v(Ie),Re={name:`file-spreadsheet`,size:24,node:[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M8 13h2`,key:`yr2amv`}],[`path`,{d:`M14 13h2`,key:`un5t4a`}],[`path`,{d:`M8 17h2`,key:`2yhykz`}],[`path`,{d:`M14 17h2`,key:`10kma7`}]]};Re.node;var ze=v(Re),Be={name:`hard-drive`,size:24,node:[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]};Be.node;var Ve=v(Be),He={name:`hash`,size:24,node:[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]};He.node;var Ue=v(He),We={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};We.node;var Ge=v(We),Ke={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};Ke.node;var qe=v(Ke),Je={name:`list`,size:24,node:[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]};Je.node;var Ye=v(Je),Xe={name:`monitor`,size:24,node:[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]};Xe.node;var Ze=v(Xe),Qe={name:`music`,size:24,node:[[`path`,{d:`M9 18V5l12-2v13`,key:`1jmyc2`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`circle`,{cx:`18`,cy:`16`,r:`3`,key:`1hluhg`}]]};Qe.node;var $e=v(Qe),et={name:`phone`,size:24,node:[[`path`,{d:`M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384`,key:`9njp5v`}]]};et.node;var tt=v(et),nt={name:`rotate-cw`,size:24,node:[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]};nt.node;var rt=v(nt),it={name:`text-align-start`,size:24,node:[[`path`,{d:`M21 5H3`,key:`1fi0y6`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M17 19H3`,key:`z6ezky`}]],aliases:[`text`,`align-left`]};it.node;var at=v(it),ot={name:`toggle-left`,size:24,node:[[`circle`,{cx:`9`,cy:`12`,r:`3`,key:`u3jwor`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`5`,rx:`7`,key:`g7kal2`}]]};ot.node;var st=v(ot),ct={name:`wrench`,size:24,node:[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]};ct.node;var lt=v(ct),V=e(t(),1),H=e(n(),1);function U({title:e,hint:t,save:n,action:r,locked:i,children:a}){return(0,H.jsxs)(`section`,{className:`flex flex-col gap-2.5`,children:[(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-4 px-1`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg leading-tight`,children:e}),n?.state===`saving`?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[12px] text-ink-3`,children:[(0,H.jsx)(k,{className:`size-3`}),` `,R(`project.saving`)]}):n?.state===`saved`?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-[12px] text-moss`,children:[(0,H.jsx)(C,{className:`size-3.5`}),` `,R(`settings.saved`)]}):null]}),t?(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-snug`,children:t}):null]}),r?(0,H.jsx)(`div`,{className:`shrink-0`,children:r}):null]}),(0,H.jsxs)(N,{className:`p-5`,children:[i?(0,H.jsx)(`fieldset`,{disabled:!0,className:`min-w-0`,children:a}):a,n?.state===`error`&&n.error?(0,H.jsx)(`p`,{className:`mt-4 text-[14px] text-rose`,children:n.error}):null]})]})}function ut({children:e,layout:t,onToggle:n}){return(0,H.jsxs)(`div`,{className:`mb-3 flex items-start gap-2`,children:[(0,H.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsx)(`div`,{className:`w-56 max-w-full transition-[width] duration-200 focus-within:w-full has-[input:not(:placeholder-shown)]:w-full`,children:e})}),(0,H.jsx)(P,{label:R(t===`list`?`project.viewCards`:`project.viewList`),onClick:n,children:t===`list`?(0,H.jsx)(qe,{className:`size-4`}):(0,H.jsx)(Ye,{className:`size-4`})})]})}function dt({value:e,onChange:t,onEnter:n,placeholder:r,busy:i}){return(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(he,{className:`-translate-y-1/2 pointer-events-none absolute top-1/2 left-3 size-4 text-ink-4`}),(0,H.jsx)(`input`,{type:`search`,value:e,placeholder:r,onChange:e=>t(e.target.value),onKeyDown:e=>e.key===`Enter`&&n?.(),className:`h-9 w-full rounded-lg border border-input bg-card pr-3 pl-9 text-[14px] text-ink outline-none transition placeholder:text-ink-4 focus:border-focus focus:ring-4 focus:ring-focus-glow`}),i?(0,H.jsx)(k,{className:`-translate-y-1/2 absolute top-1/2 right-3 size-4 text-ink-3`}):null]})}function W({onFiles:e,accept:t,multiple:n=!0,className:r,children:i}){return(0,H.jsxs)(`label`,{onDragOver:e=>{e.preventDefault(),e.currentTarget.dataset.over=`1`},onDragLeave:e=>{delete e.currentTarget.dataset.over},onDrop:t=>{t.preventDefault(),delete t.currentTarget.dataset.over;let r=Array.from(t.dataTransfer.files);r.length&&e(n?r:r.slice(0,1))},className:A(`flex cursor-pointer items-center justify-center gap-2 rounded-lg border border-input border-dashed text-[14px] text-ink-3 transition focus-within:border-focus focus-within:ring-4 focus-within:ring-focus-glow hover:border-ink-4 hover:text-ink data-[over]:border-focus data-[over]:bg-paper-2 data-[over]:text-ink`,r),children:[i,(0,H.jsx)(`input`,{className:`sr-only`,type:`file`,accept:t,multiple:n,onChange:t=>{let n=Array.from(t.target.files??[]);t.target.value=``,n.length&&e(n)}})]})}function ft(){let e=Ee(),[t,n]=(0,V.useState)(null),[r,i]=(0,V.useState)(null),a=async e=>{n(e??`*`),i(null);try{await Ae(e)}catch(e){i(e.message)}finally{n(null)}};return(0,H.jsxs)(U,{title:R(`plugins.title`),hint:e.canReload?R(`plugins.hint`):R(`plugins.hintManaged`),action:e.canReload?(0,H.jsx)(L,{variant:`secondary`,busy:t===`*`,onClick:()=>void a(),children:R(`plugins.rescan`)}):null,children:[(0,H.jsxs)(`ul`,{className:`divide-y divide-border-soft`,children:[e.plugins.map(n=>{let r=e.failed[n.id];return(0,H.jsxs)(`li`,{className:`flex items-start gap-4 py-4 first:pt-0 last:pb-0`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2.5 gap-y-1`,children:[(0,H.jsx)(`span`,{className:`font-medium text-[15px]`,children:n.name}),n.name===n.id?null:(0,H.jsxs)(`span`,{className:`font-mono text-[12px] text-ink-4`,children:[n.id,` · `,n.version]})]}),n.description?(0,H.jsx)(`p`,{className:`mt-0.5 text-[14px] text-ink-3`,children:n.description}):null,n.tools.length?(0,H.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5 text-[12px] text-ink-3`,children:[R(`plugins.tools`),n.tools.map(e=>(0,H.jsx)(F,{children:e.id},e.id))]}):null,n.error?(0,H.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:R(`plugins.serverFailed`,{error:n.error})}):null,r?(0,H.jsx)(`p`,{className:`mt-2 text-[13px] text-rose`,children:R(`plugins.studioFailed`,{error:r})}):null]}),e.canReload?(0,H.jsx)(P,{label:R(`plugins.reload`),disabled:t!==null,onClick:()=>void a(n.id),children:(0,H.jsx)(rt,{className:t===n.id?`size-4 animate-spin`:`size-4`})}):null]},n.id)}),e.problems.map(e=>(0,H.jsxs)(`li`,{className:`py-4 first:pt-0 last:pb-0`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2.5 gap-y-1`,children:[(0,H.jsx)(F,{tone:`warn`,children:R(`plugins.problems`)}),(0,H.jsx)(`span`,{className:`break-all font-mono text-[12px] text-ink-3`,children:e.path})]}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:e.message})]},e.path))]}),r?(0,H.jsx)(`p`,{className:`mt-4 text-[13px] text-rose`,children:r}):null]})}var pt=e=>[`project-files`,e];function mt(e){return c({queryKey:pt(e),queryFn:()=>u.get(`/api/studio/projects/${e}/files`),refetchInterval:e=>e.state.data?.files.some(e=>e.status===`pending`)?2e3:!1})}function G(e,t){return a(`/api/studio/projects/${e}/files/${t}/content`)}function K(e,t=!1){let n=d(),[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(null),s=()=>n.invalidateQueries({queryKey:pt(e)}),c=async e=>{o(null);try{await e()}catch(e){o(e.message)}finally{await s()}};return{busy:r,error:a,readOnly:t,upload:async(t,n)=>{i(!0),await c(async()=>{for(let r of n)await u.upload(`/api/studio/projects/${e}/files?kind=${t}`,r),await s()}),i(!1)},describe:(t,n)=>c(()=>u.patch(`/api/studio/projects/${e}/files/${t}`,{description:n})),remove:t=>c(()=>u.del(`/api/studio/projects/${e}/files/${t}`)),reindex:t=>c(()=>u.post(`/api/studio/projects/${e}/files/${t}/reindex`)),order:(t,n)=>c(()=>u.put(`/api/studio/projects/${e}/files/order`,{kind:t,ids:n}))}}function ht(e,t){let n=`wz.layout.${e}`,[r,i]=(0,V.useState)(()=>{try{let e=localStorage.getItem(n);return e===`list`||e===`cards`?e:t}catch{return t}});return[r,()=>i(e=>{let t=e===`list`?`cards`:`list`;try{localStorage.setItem(n,t)}catch{}return t})]}function q(e,t,n=700){let[r,i]=(0,V.useState)(`idle`),[a,o]=(0,V.useState)(null),s=JSON.stringify(e),c=(0,V.useRef)(s),l=(0,V.useRef)({value:e,json:s,save:t});l.current={value:e,json:s,save:t};let u=(0,V.useRef)(Promise.resolve()),d=(0,V.useCallback)(()=>{let e=l.current;e.json!==c.current&&(c.current=e.json,i(`saving`),u.current=u.current.then(async()=>{try{await e.save(e.value),o(null),i(`saved`)}catch(e){c.current=``,o(e.message),i(`error`)}}))},[]);return(0,V.useEffect)(()=>{if(s===c.current)return;let e=setTimeout(d,n);return()=>clearTimeout(e)},[s,n,d]),(0,V.useEffect)(()=>d,[d]),{state:r,error:a}}function gt(e){return e<1e6?`${Math.max(1,Math.round(e/1e3))} KB`:`${(e/1e6).toFixed(1)} MB`}var _t=`mt-1.5 text-[13px] text-ink-3`;function vt(e){let t=d(),[n,r]=(0,V.useState)(!1),i=p({mutationFn:e=>u.post(`/api/studio/account/link`,e),onSuccess:({url:e})=>{B(e),r(!0)}});return(0,V.useEffect)(()=>{if(!n)return;let e=setInterval(()=>void t.invalidateQueries({queryKey:[`me`]}),2e3),i=setTimeout(()=>r(!1),3e5);return()=>{clearInterval(e),clearTimeout(i)}},[n,t]),(0,V.useEffect)(()=>{e&&r(!1)},[e]),{link:i,waiting:n}}function yt({link:e,waiting:t}){return e.isError?(0,H.jsx)(`p`,{className:`text-[13px] text-rose`,children:R(`local.accountFailed`)}):t?(0,H.jsxs)(`p`,{className:`flex items-center gap-2 text-[13px] text-ink-3`,children:[(0,H.jsx)(k,{className:`size-3.5`}),` `,R(`local.accountWaiting`)]}):null}function bt(){let e=vt(!1),{link:t}=e,[n,r]=(0,V.useState)(``);return(0,H.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-start gap-4 py-5 first:pt-0 last:pb-0`,children:[(0,H.jsx)(`div`,{className:`flex size-11 shrink-0 items-center justify-center rounded-full bg-paper-2 text-ink-2`,children:(0,H.jsx)(Ve,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.local`)}),(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-relaxed`,children:R(`account.localText`)})]})]}),z.account?(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 py-5 last:pb-0`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.with`)}),(0,H.jsxs)(`ul`,{className:`mt-2 flex flex-col gap-2 text-[14px] text-ink-2 leading-snug`,children:[(0,H.jsxs)(`li`,{className:`flex items-start gap-2.5`,children:[(0,H.jsx)(fe,{className:`mt-0.5 size-4 shrink-0 text-amber`}),R(`account.withCredits`)]}),(0,H.jsxs)(`li`,{className:`flex items-start gap-2.5`,children:[(0,H.jsx)(Le,{className:`mt-0.5 size-4 shrink-0 text-cobalt`}),R(`account.withCloud`)]})]})]}),(0,H.jsx)(`div`,{children:(0,H.jsx)(L,{busy:t.isPending&&!t.variables?.signup,onClick:()=>t.mutate({}),children:R(`account.signIn`)})})]}):null,z.account?(0,H.jsxs)(`form`,{className:`flex flex-col gap-3 py-5 last:pb-0`,onSubmit:e=>{e.preventDefault(),t.mutate({signup:!0,code:n.trim()||void 0})},children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`font-medium text-[15px]`,children:R(`account.new`)}),(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3 leading-relaxed`,children:R(`account.newHint`)})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,H.jsx)(I,{value:n,maxLength:64,autoComplete:`off`,spellCheck:!1,placeholder:R(`account.code`),"aria-label":R(`account.code`),onChange:e=>r(e.target.value),className:`w-56 font-mono text-[14px]`}),(0,H.jsx)(L,{type:`submit`,variant:`secondary`,className:`h-11`,busy:t.isPending&&!!t.variables?.signup,children:R(`account.create`)})]}),(0,H.jsx)(yt,{...e})]}):null]})}var xt={start:`account.kind.start`,monthly:`account.kind.monthly`,gift:`account.kind.gift`};function St(e){try{return new URL(e).host}catch{return e}}function Ct({account:e}){let t=d(),n=vt(e.signedIn),r=p({mutationFn:()=>u.del(`/api/studio/account`),onSuccess:()=>t.invalidateQueries({queryKey:[`me`]})}),i=new Intl.DateTimeFormat(D,{dateStyle:`medium`});return(0,H.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-3 py-5 first:pt-0`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[15px]`,children:e.name||e.email}),e.signedIn?(0,H.jsx)(F,{tone:`live`,children:R(`account.linked`)}):null]}),(0,H.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:e.email})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,H.jsxs)(L,{variant:`secondary`,onClick:()=>B(e.url),children:[R(`setup.openAccount`),` `,(0,H.jsx)(E,{className:`size-4`})]}),(0,H.jsxs)(L,{variant:`ghost`,busy:r.isPending,onClick:()=>r.mutate(),children:[(0,H.jsx)(je,{className:`size-4`}),` `,R(`nav.logout`)]})]})]}),e.signedIn?null:(0,H.jsxs)(`div`,{className:`flex flex-col gap-3 py-5`,children:[(0,H.jsx)(`p`,{className:`text-[14px] text-ink-2`,children:R(`local.accountExpired`)}),(0,H.jsx)(`div`,{children:(0,H.jsx)(L,{busy:n.link.isPending,onClick:()=>n.link.mutate({}),children:R(`account.signInAgain`)})}),(0,H.jsx)(yt,{...n})]}),e.credits===null?null:(0,H.jsxs)(`div`,{className:`py-5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-3`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`text-[13px] text-ink-3`,children:R(`account.credits`)}),(0,H.jsx)(`div`,{className:`font-display font-semibold text-[22px] tabular-nums leading-tight`,children:R(`nav.credits`,{n:Math.floor(e.credits).toLocaleString()})})]}),(0,H.jsxs)(L,{variant:`secondary`,onClick:()=>B(`${e.url}/billing`),children:[R(`account.topUp`),` `,(0,H.jsx)(E,{className:`size-4`})]})]}),e.expiring.length?(0,H.jsx)(`ul`,{className:`mt-3 flex flex-col gap-1 text-[13px] text-ink-3 tabular-nums`,children:e.expiring.map(e=>(0,H.jsxs)(`li`,{children:[R(`account.expires`,{n:Math.floor(e.credits).toLocaleString(),date:i.format(new Date(e.expiresAt))}),xt[e.kind]?(0,H.jsxs)(`span`,{className:`text-ink-4`,children:[` · `,R(xt[e.kind])]}):null]},`${e.kind}:${e.expiresAt}`))}):null]}),(0,H.jsxs)(`div`,{className:`flex items-start gap-2.5 py-5 text-[14px] text-ink-2 leading-snug last:pb-0`,children:[(0,H.jsx)(Le,{className:`mt-0.5 size-4 shrink-0 text-cobalt`}),(0,H.jsx)(`p`,{children:R(`account.cloud`,{host:St(e.cloudUrl)})})]})]})}function wt({me:e}){let t=d(),n=e.mode===`managed`,[r,i]=(0,V.useState)(e.profile),a=e=>i(t=>({...t,...e})),o=q(r,async e=>{await u.put(`/api/studio/profile`,e),await t.invalidateQueries({queryKey:[`me`]})});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-9`,children:[(0,H.jsx)(U,{title:R(`account.title`),hint:R(`account.hint`),save:o,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-6 sm:flex-row sm:gap-8`,children:[(0,H.jsxs)(`div`,{className:`flex shrink-0 flex-col items-center gap-2 sm:w-32`,children:[(0,H.jsx)(`div`,{className:`flex size-20 items-center justify-center overflow-hidden rounded-full bg-ember-tint font-semibold text-[28px] text-ember-strong ring-1 ring-border-soft`,children:e.user.image?(0,H.jsx)(`img`,{src:e.user.image,alt:``,className:`size-full object-cover`}):_(r.name)||`?`}),(0,H.jsx)(`p`,{className:`text-center text-[12px] text-ink-3 leading-snug`,children:R(`account.initials`)})]}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-5`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.name`)}),(0,H.jsx)(I,{value:r.name,maxLength:80,disabled:n,onChange:e=>a({name:e.target.value})}),(0,H.jsx)(`p`,{className:_t,children:R(n?`account.fromAccount`:`account.nameHint`)})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.about`)}),(0,H.jsx)(M,{minRows:3,maxLength:2e3,value:r.about,onChange:e=>a({about:e.target.value})}),(0,H.jsx)(`p`,{className:_t,children:R(`account.aboutHint`)})]}),(0,H.jsxs)(`div`,{className:`grid gap-5 sm:grid-cols-2`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.email`)}),(0,H.jsx)(I,{type:`email`,value:r.email,maxLength:200,disabled:n,onChange:e=>a({email:e.target.value})})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`account.phone`)}),(0,H.jsx)(I,{type:`tel`,value:r.phone,maxLength:40,onChange:e=>a({phone:e.target.value})})]})]})]})]})}),(0,H.jsx)(U,{title:R(`account.connection`),hint:R(`account.connectionHint`),children:n?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[15px]`,children:e.user.name}),(0,H.jsx)(F,{tone:`live`,children:R(`account.linked`)})]}),(0,H.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:e.user.email})]}),e.manageUrl?(0,H.jsxs)(L,{variant:`secondary`,onClick:()=>B(`${e.manageUrl}/account`),children:[R(`setup.openAccount`),` `,(0,H.jsx)(E,{className:`size-4`})]}):null]}):e.account?(0,H.jsx)(Ct,{account:e.account}):(0,H.jsx)(bt,{})}),(0,H.jsx)(U,{title:R(`account.look`),hint:R(`account.lookHint`),children:(0,H.jsxs)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4 pb-4`,children:[(0,H.jsx)(`span`,{className:`font-medium text-[14px]`,children:R(`nav.language`)}),(0,H.jsx)(Te,{tone:`surface`})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between gap-4 pt-4`,children:[(0,H.jsx)(`span`,{className:`font-medium text-[14px]`,children:R(`nav.theme`)}),(0,H.jsx)(ke,{})]})]})})]})}function Tt({connector:e}){let[t,n]=(0,V.useState)(!1);return(0,H.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>n(e=>!e),className:`flex w-full items-center gap-3 px-3 py-2 text-left`,children:[(0,H.jsx)(`span`,{className:A(`size-2 shrink-0 rounded-full`,e.usable?`bg-moss`:`bg-ink-4`)}),(0,H.jsxs)(`span`,{className:`min-w-0 flex-1 truncate text-[13px]`,children:[e.name,` `,(0,H.jsx)(`span`,{className:`font-mono text-[11px] text-ink-4`,children:e.id})]}),(0,H.jsx)(`span`,{className:`shrink-0 text-[12px] text-ink-3`,children:e.usable?R(`connectors.actions`,{n:e.actions.length,r:e.actions.filter(e=>e.group===`read`).length}):R(`connectors.notSetUp`)})]}),t?(0,H.jsxs)(`div`,{className:`border-border-soft border-t px-3 py-2 text-[12px]`,children:[e.missingSetup?(0,H.jsxs)(`p`,{className:`mb-1 text-ink-3`,children:[R(`connectors.setup`),` `,(0,H.jsx)(`span`,{className:`font-mono text-ink-2`,children:e.missingSetup})]}):null,(0,H.jsx)(`p`,{className:`text-ink-4`,children:e.actions.map(e=>e.group===`read`?e.id:`${e.id} (${R(`connectors.group.${e.group}`)})`).join(` · `)})]}):null]})}var Et={none:`connectors.authNone`,oauth2:`connectors.authOauth`,api_key:`connectors.authKey`};function Dt({projectId:e,connector:t,readOnly:n}){let r=d(),[i,a]=(0,V.useState)(!1),o=()=>r.invalidateQueries({queryKey:[`connectors`,e]}),s=`/api/studio/projects/${e}/connectors/${t.id}`,c=p({mutationFn:()=>u.post(`${s}/refresh`),onSuccess:o}),l=p({mutationFn:()=>u.del(s),onSuccess:o}),f=t.actions.filter(e=>e.group===`read`).length;return(0,H.jsxs)(`div`,{className:`rounded-lg bg-paper ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3 p-3`,children:[(0,H.jsx)(`div`,{className:`flex size-9 shrink-0 items-center justify-center rounded-lg bg-paper-2 text-ink-2`,children:(0,H.jsx)(ee,{className:`size-4`})}),(0,H.jsxs)(`button`,{type:`button`,onClick:()=>a(e=>!e),className:`min-w-0 flex-1 text-left`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[14px]`,children:t.name}),(0,H.jsx)(`span`,{className:`font-mono text-[11px] text-ink-4`,children:t.id})]}),(0,H.jsxs)(`div`,{className:`truncate text-[12px] text-ink-3`,children:[t.domain,` · `,t.sourceKind===`mcp`?`MCP`:`OpenAPI`,` ·`,` `,R(Et[t.auth]),` ·`,` `,t.toolsPending?R(`connectors.pending`):R(`connectors.actions`,{n:t.actions.length,r:f})]})]}),n?null:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(P,{label:R(`connectors.refresh`),onClick:()=>c.mutate(),children:c.isPending?(0,H.jsx)(k,{className:`size-4`}):(0,H.jsx)(ye,{className:`size-4`})}),(0,H.jsx)(P,{label:R(`connectors.remove`),className:`hover:text-rose`,onClick:()=>confirm(`${t.name}: ${R(`connectors.remove`)}?`)&&l.mutate(),children:(0,H.jsx)(S,{className:`size-4`})})]})]}),t.needsOAuthClient?(0,H.jsx)(`p`,{className:`border-border-soft border-t px-3 py-2 text-[12px] text-rose`,children:R(`connectors.needsClient`)}):null,c.error??l.error?(0,H.jsx)(`p`,{className:`border-border-soft border-t px-3 py-2 text-[12px] text-rose`,children:(c.error??l.error).message}):null,i&&t.actions.length?(0,H.jsx)(`ul`,{className:`max-h-64 overflow-y-auto border-border-soft border-t px-3 py-2`,children:t.actions.map(e=>(0,H.jsxs)(`li`,{className:`flex items-baseline gap-2 py-1 text-[12px]`,children:[(0,H.jsx)(`span`,{className:A(`w-14 shrink-0 text-[11px] uppercase tracking-wide`,e.group===`read`?`text-moss`:e.group===`write`?`text-ink-3`:`text-rose`),children:R(`connectors.group.${e.group}`)}),(0,H.jsx)(`span`,{className:`shrink-0 font-mono text-ink-2`,children:e.id}),(0,H.jsx)(`span`,{className:`min-w-0 truncate text-ink-4`,children:e.summary})]},e.id))}):null]})}function Ot({projectId:e,domain:t,source:n,taken:r,onDone:i}){let a=d(),[o,s]=(0,V.useState)({id:``,secret:``}),[c,l]=(0,V.useState)(!1),f=r.includes(n.suggestedId),m=p({mutationFn:()=>u.post(`/api/studio/projects/${e}/connectors`,{domain:t,sourceKind:n.sourceKind,sourceUrl:n.sourceUrl,id:n.suggestedId,toolPrefix:n.suggestedToolPrefix,...n.name?{name:n.name}:{},...o.id&&o.secret?{oauthClientId:o.id,oauthClientSecret:o.secret}:{}}),onSuccess:async t=>{await a.invalidateQueries({queryKey:[`connectors`,e]}),i(t.warnings)}});return(0,H.jsxs)(`div`,{className:`rounded-lg bg-card p-3 ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsx)(F,{tone:n.sourceKind===`mcp`?`ember`:`neutral`,children:n.sourceKind===`mcp`?`MCP`:`OpenAPI`}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-[13px]`,children:n.name??n.suggestedId}),(0,H.jsx)(`div`,{className:`truncate font-mono text-[11px] text-ink-4`,children:n.sourceUrl})]}),n.blocked||f?null:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`button`,{type:`button`,onClick:()=>l(e=>!e),className:`text-[12px] text-ink-3 hover:text-ink`,children:R(`connectors.ownClient`)}),(0,H.jsx)(L,{size:`sm`,busy:m.isPending,onClick:()=>m.mutate(),children:R(`connectors.import`)})]})]}),n.blocked?(0,H.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-3`,children:n.blocked}):null,f?(0,H.jsx)(`p`,{className:`mt-2 text-[12px] text-ink-3`,children:R(`connectors.exists`)}):null,c?(0,H.jsxs)(`div`,{className:`mt-3 grid gap-2 sm:grid-cols-2`,children:[(0,H.jsx)(I,{placeholder:`OAuth Client-ID`,value:o.id,onChange:e=>s(t=>({...t,id:e.target.value}))}),(0,H.jsx)(I,{type:`password`,autoComplete:`off`,placeholder:`OAuth Client-Secret`,value:o.secret,onChange:e=>s(t=>({...t,secret:e.target.value}))})]}):null,m.error?(0,H.jsx)(`p`,{className:`mt-2 text-[12px] text-rose`,children:m.error.message}):null]})}function kt({projectId:e,readOnly:t}){let[n,r]=(0,V.useState)(``),[i,a]=(0,V.useState)(null),[o,s]=(0,V.useState)(null),[l,d]=(0,V.useState)([]),f=c({queryKey:[`connectors`,e],queryFn:()=>u.get(`/api/studio/projects/${e}/connectors`)}),m=p({mutationFn:()=>u.post(`/api/studio/connectors/search`,{query:n}),onSuccess:e=>{a(e),s(null),d([])}}),h=p({mutationFn:e=>u.get(`/api/studio/connectors/registry/${encodeURIComponent(e)}`),onSuccess:s}),g=f.data??[],_=g.filter(e=>e.sourceKind===`builtin`&&(z.unsetConnectors||e.usable)),v=g.filter(e=>e.sourceKind!==`builtin`);return(0,H.jsxs)(N,{className:`p-6`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`connectors.title`)}),(0,H.jsx)(`p`,{className:`mt-1 mb-5 text-[14px] text-ink-3`,children:R(`connectors.hint`)}),_.length?(0,H.jsx)(`div`,{className:`mb-5 grid gap-1.5 sm:grid-cols-2`,children:_.map(e=>(0,H.jsx)(Tt,{connector:e},e.id))}):null,(0,H.jsx)(`h3`,{className:`mb-2 font-medium text-[12px] text-ink-3 uppercase tracking-[0.07em]`,children:R(`connectors.imported`)}),v.length?(0,H.jsx)(`div`,{className:`mb-4 flex flex-col gap-2`,children:v.map(n=>(0,H.jsx)(Dt,{projectId:e,connector:n,readOnly:t},n.id))}):null,t?v.length?null:(0,H.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:R(`connectors.noneImported`)}):(0,H.jsxs)(`form`,{className:`flex gap-2`,onSubmit:e=>{e.preventDefault(),n.trim()&&m.mutate()},children:[(0,H.jsx)(I,{value:n,placeholder:R(`connectors.search`),onChange:e=>r(e.target.value)}),(0,H.jsxs)(L,{type:`submit`,variant:`secondary`,busy:m.isPending,children:[(0,H.jsx)(he,{className:`size-4`}),` `,R(`connectors.find`)]})]}),m.error?(0,H.jsx)(`p`,{className:`mt-3 text-[13px] text-rose`,children:m.error.message}):null,i&&!o?(0,H.jsxs)(`div`,{className:`mt-3 flex flex-col gap-1`,children:[i.length?null:(0,H.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:R(`connectors.none`)}),i.map(e=>(0,H.jsxs)(`button`,{type:`button`,disabled:!e.kinds.length,onClick:()=>h.mutate(e.domain),className:`flex items-center gap-3 rounded-lg px-3 py-2 text-left transition hover:bg-paper-2 disabled:opacity-50`,children:[(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-[14px]`,children:e.domain}),(0,H.jsx)(`div`,{className:`truncate text-[12px] text-ink-3`,children:e.description})]}),(0,H.jsx)(`span`,{className:`text-[11px] text-ink-4 uppercase`,children:e.kinds.join(` · `)}),(0,H.jsx)(se,{className:`-rotate-90 size-4 text-ink-4`})]},e.domain)),h.isPending?(0,H.jsx)(k,{className:`mx-auto mt-2 size-4 text-ink-4`}):null,h.error?(0,H.jsx)(`p`,{className:`text-[13px] text-rose`,children:h.error.message}):null]}):null,o?(0,H.jsxs)(`div`,{className:`mt-4 flex flex-col gap-2`,children:[(0,H.jsxs)(`div`,{className:`flex items-baseline justify-between gap-3`,children:[(0,H.jsx)(`div`,{className:`font-medium text-[14px]`,children:o.domain}),(0,H.jsx)(`button`,{type:`button`,onClick:()=>s(null),className:`text-[12px] text-ink-3 hover:text-ink`,children:R(`run.back`)})]}),o.summary?(0,H.jsx)(`p`,{className:`text-[13px] text-ink-3`,children:o.summary}):null,o.sources.map(t=>(0,H.jsx)(Ot,{projectId:e,domain:o.domain,source:t,taken:g.map(e=>e.id),onDone:d},`${t.sourceKind}:${t.sourceUrl}`)),o.credentials.filter(e=>e.setup||e.url).map(e=>(0,H.jsxs)(`p`,{className:`text-[12px] text-ink-3`,children:[(0,H.jsxs)(`span`,{className:`text-ink-2`,children:[e.label,`:`]}),` `,e.setup,` `,e.url?(0,H.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-ember underline`,children:e.url}):null]},e.label)),l.map(e=>(0,H.jsx)(`p`,{className:`text-[12px] text-ink-3`,children:e},e))]}):null]})}var J=`engenty-wizards`,At=`ENGENTY_WIZARDS_KEY`,jt=[{id:`claude-desktop`,name:`Claude Desktop`,widgets:!0},{id:`claude-code`,name:`Claude Code`,widgets:!1},{id:`codex`,name:`Codex · ChatGPT app`,widgets:!1},{id:`cursor`,name:`Cursor`,widgets:!0},{id:`vscode`,name:`VS Code (Copilot)`,widgets:!0},{id:`windsurf`,name:`Windsurf`,widgets:!1},{id:`gemini`,name:`Gemini CLI`,widgets:!1},{id:`goose`,name:`Goose`,widgets:!0},{id:`openclaw`,name:`OpenClaw`,widgets:!1},{id:`lm-studio`,name:`LM Studio`,widgets:!1},{id:`claude-ai`,name:`claude.ai`,widgets:!0,oauth:!0},{id:`chatgpt`,name:`ChatGPT`,widgets:!0,oauth:!0}];function Y({text:e}){let[t,n]=(0,V.useState)(!1);return(0,H.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg bg-paper-2 p-3`,children:[(0,H.jsx)(`code`,{className:`min-w-0 flex-1 whitespace-pre-wrap break-all font-mono text-[12px] leading-relaxed`,children:e}),(0,H.jsx)(P,{label:R(t?`settings.copied`:`settings.copy`),onClick:async()=>{await navigator.clipboard.writeText(e),n(!0),setTimeout(()=>n(!1),1500)},children:t?(0,H.jsx)(C,{className:`size-4`}):(0,H.jsx)(_e,{className:`size-4`})})]})}function Mt(e){try{let t=new URL(e);return t.protocol===`https:`&&!/(^|\.)localhost$/.test(t.hostname)&&!/^(127\.|10\.|192\.168\.|\[::1\])/.test(t.hostname)}catch{return!1}}function X({children:e}){return(0,H.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:e})}function Z({title:e,children:t}){return(0,H.jsxs)(`section`,{className:`flex flex-col gap-2.5 border-border-soft border-t pt-5 first:border-t-0 first:pt-0`,children:[(0,H.jsx)(`h3`,{className:`font-medium text-[15px]`,children:e}),t]})}function Q(e,t){return JSON.stringify({[e]:{[J]:t}},null,2)}function Nt({id:e,url:t,apiKey:n}){let r=n?`Authorization: Bearer ${n}`:null,i=n?{headers:{Authorization:`Bearer ${n}`}}:{};switch(e){case`claude-code`:{let e=t.replace(/\/api\/mcp$/,`/api/claude-plugin`);return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.terminal`)}),(0,H.jsx)(Y,{text:`claude mcp add --transport http --scope user ${J} ${t}${r?` --header "${r}"`:``}`}),!n&&Mt(t)?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.ccPlugin`)}),(0,H.jsx)(Y,{text:`claude plugin marketplace add ${e}/marketplace.json`}),(0,H.jsx)(Y,{text:`claude plugin install ${J}@engenty`})]}):null]})}case`codex`:return n?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.codexKey`)}),(0,H.jsx)(Y,{text:`echo 'export ${At}=${n}' >> ~/.zshrc && source ~/.zshrc`}),(0,H.jsx)(Y,{text:`codex mcp add ${J} --url ${t} --bearer-token-env-var ${At}`})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.terminal`)}),(0,H.jsx)(Y,{text:`codex mcp add ${J} --url ${t}`}),(0,H.jsx)(Y,{text:`codex mcp login ${J}`})]});case`gemini`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.terminal`)}),(0,H.jsx)(Y,{text:`gemini mcp add --scope user --transport http ${J} ${t}${r?` -H "${r}"`:``}`})]});case`cursor`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.file`,{file:`~/.cursor/mcp.json`})}),(0,H.jsx)(Y,{text:Q(`mcpServers`,{url:t,...i})})]});case`vscode`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.vscode`)}),(0,H.jsx)(Y,{text:Q(`servers`,{type:`http`,url:t,...i})})]});case`windsurf`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.file`,{file:`~/.codeium/windsurf/mcp_config.json`})}),(0,H.jsx)(Y,{text:Q(`mcpServers`,{serverUrl:t,...i})})]});case`lm-studio`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.file`,{file:`~/.lmstudio/mcp.json`})}),(0,H.jsx)(Y,{text:Q(`mcpServers`,{url:t,...i})})]});case`claude-desktop`:case`claude-ai`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.claudeAi`)}),(0,H.jsx)(Y,{text:t})]});case`chatgpt`:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.chatgpt`)}),(0,H.jsx)(Y,{text:t})]});default:return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.generic`)}),(0,H.jsx)(Y,{text:t}),r?(0,H.jsx)(Y,{text:r}):null]})}}function Pt(){let e=d(),t=c({queryKey:[`api-keys`],queryFn:()=>u.get(`/api/studio/api-keys`)}),n=p({mutationFn:e=>u.del(`/api/studio/api-keys/${e}`),onSuccess:()=>e.invalidateQueries({queryKey:[`api-keys`]})});return t.data?.length?(0,H.jsxs)(`section`,{children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`mcp.keys`)}),(0,H.jsx)(`p`,{className:`mt-1 mb-4 text-[14px] text-ink-3`,children:R(`mcp.keysHint`)}),(0,H.jsx)(N,{className:`flex flex-col gap-2 p-3`,children:t.data.map(e=>(0,H.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg px-3 py-2`,children:[(0,H.jsx)(Ge,{className:`size-4 shrink-0 text-ink-4`}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,H.jsx)(`div`,{className:`truncate text-[14px]`,children:e.name}),(0,H.jsxs)(`div`,{className:`font-mono text-[11px] text-ink-4`,children:[e.start,`… ·`,` `,e.lastRequest?R(`settings.lastUsed`,{when:new Date(e.lastRequest).toLocaleString()}):R(`settings.neverUsed`)]})]}),(0,H.jsx)(P,{label:R(`settings.revoke`),onClick:()=>n.mutate(e.id),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]},e.id))})]}):null}function Ft({state:e,title:t,children:n}){return(0,H.jsxs)(`li`,{className:`grid grid-cols-[22px_minmax(0,1fr)] gap-x-3`,children:[(0,H.jsx)(`span`,{className:A(`mt-0.5 grid size-[22px] place-items-center rounded-full`,e===`done`&&`bg-moss text-white`,e===`now`&&`bg-amber-tint text-ink-2`,e===`later`&&`bg-paper-2 ring-1 ring-border-soft`),children:e===`done`?(0,H.jsx)(C,{className:`size-3.5`,strokeWidth:3}):e===`now`?(0,H.jsx)(k,{className:`size-3`}):null}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-col gap-2 pb-4`,children:[(0,H.jsx)(`span`,{className:A(`text-[14px]`,e===`later`?`text-ink-3`:`font-medium`),children:t}),e===`now`?n:null]})]})}function It({widgets:e}){return(0,H.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,H.jsxs)(`div`,{className:`rounded-xl bg-paper p-4 ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-2 font-medium text-[14px]`,children:[(0,H.jsx)(lt,{className:`size-4 text-ember-strong`}),` MCP`]}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`integrate.kindMcp`)})]}),(0,H.jsxs)(`div`,{className:A(`rounded-xl p-4 ring-1`,e?`bg-paper ring-border-soft`:`bg-paper-2/60 ring-border-soft/60`),children:[(0,H.jsxs)(`div`,{className:A(`flex items-center gap-2 font-medium text-[14px]`,e?null:`text-ink-3`),children:[(0,H.jsx)(y,{className:A(`size-4`,e?`text-ember-strong`:`text-ink-4`)}),` MCP App`]}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(e?`integrate.kindApp`:`integrate.kindAppNo`)})]})]})}function Lt({selected:e,title:t,note:n,tone:r,widgets:i,disabled:a,onPick:o}){return(0,H.jsxs)(`button`,{type:`button`,disabled:a,onClick:o,"aria-pressed":e,className:A(`group flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-left transition`,e?`bg-card shadow-soft ring-1 ring-border-soft`:`hover:bg-accent`,a&&`cursor-default opacity-55 hover:bg-transparent`),children:[(0,H.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(`span`,{className:`truncate font-medium text-[14px]`,children:t}),i?(0,H.jsx)(`span`,{title:`MCP App`,className:`rounded bg-ember-tint px-1 font-semibold text-[10px] text-ember-strong leading-4`,children:`APP`}):null]}),n?(0,H.jsxs)(`span`,{className:A(`flex items-center gap-1 text-[12px]`,r===`done`?`text-moss`:r===`ok`?`text-ink-2`:`text-ink-4`),children:[r===`done`?(0,H.jsx)(C,{className:`size-3`,strokeWidth:3}):null,n]}):null]}),a?null:(0,H.jsx)(te,{className:A(`size-3.5 shrink-0 transition`,e?`text-ink-3`:`text-ink-4 opacity-0 group-hover:opacity-100`)})]})}function Rt({at:e,done:t}){let n=[R(`setup.stage.connect`),R(`setup.stage.test`),R(`setup.stage.done`)];return(0,H.jsx)(`ol`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 font-medium text-[11px] uppercase tracking-[0.14em]`,children:n.map((n,r)=>{let i=t||r<e;return(0,H.jsxs)(`li`,{"aria-current":!i&&r===e?`step`:void 0,className:A(`flex items-center gap-1`,i?`text-moss`:r===e?`text-ember-strong`:`text-ink-4`),children:[i?(0,H.jsx)(C,{className:`size-3`,strokeWidth:3}):null,n]},n)})})}function zt({client:e,local:t,seen:n,managed:r,url:i}){let a=d(),o=Mt(i),s=!r&&!!t&&!e.oauth,[c,l]=(0,V.useState)(s&&t?.installed!==!1?`here`:`address`),[f,m]=(0,V.useState)(null),[h,g]=(0,V.useState)(),_=p({mutationFn:t=>u.post(`/api/studio/local/apps/${e.id}`,{connect:t}),onSuccess:e=>m(e),onError:e=>m({ok:!1,message:e.message}),onSettled:()=>a.invalidateQueries({queryKey:[`local-apps`]})}),v=p({mutationFn:()=>u.post(`/api/studio/api-keys`,{name:e.name.slice(0,32)}),onSuccess:async e=>{g(e.key),await a.invalidateQueries({queryKey:[`api-keys`]})}}),y=e.oauth===!0||e.id===`claude-desktop`,ee=c===`address`&&y&&!(r&&o),te=c===`here`?!!t?.connected:r||!!h,b=!!n?.toolAt,ne=b?2:te||n?1:0,x=e=>(0,H.jsx)(Y,{text:e});return(0,H.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(Rt,{at:ne,done:b}),(0,H.jsx)(`h2`,{className:`mt-1.5 font-display font-semibold text-[26px] leading-tight tracking-tight`,children:e.name}),(0,H.jsx)(`p`,{className:`mt-1 text-[14px] text-ink-3`,children:e.widgets?R(`integrate.leadApp`):R(`integrate.leadMcp`)})]}),(0,H.jsx)(It,{widgets:e.widgets}),(0,H.jsxs)(N,{className:`flex flex-col gap-6 p-6`,children:[s||!e.oauth?(0,H.jsx)(Z,{title:R(`integrate.where`),children:(0,H.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:[`here`,`address`].map(e=>{let t=e===`here`&&!s;return(0,H.jsxs)(`button`,{type:`button`,disabled:t,onClick:()=>l(e),"aria-pressed":c===e,className:A(`flex items-start gap-3 rounded-xl p-3.5 text-left ring-1 transition`,c===e?`bg-ember-tint/50 ring-ember-strong/40`:`ring-border-soft hover:bg-accent`,t&&`cursor-not-allowed opacity-50 hover:bg-transparent`),children:[e===`here`?(0,H.jsx)(Ze,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}):(0,H.jsx)(pe,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}),(0,H.jsxs)(`span`,{className:`min-w-0`,children:[(0,H.jsx)(`span`,{className:`block font-medium text-[14px]`,children:R(e===`here`?`integrate.here`:`integrate.address`)}),(0,H.jsx)(`span`,{className:`block text-[12px] text-ink-3`,children:R(e===`here`?r?`integrate.hereManaged`:`integrate.hereHint`:`integrate.addressHint`)})]})]},e)})})}):null,ee?(0,H.jsx)(Z,{title:R(`mcp.notHere`),children:(0,H.jsx)(X,{children:R(r?`mcp.needsPublic`:`integrate.oauthLocal`)})}):c===`here`?(0,H.jsxs)(Z,{title:R(`integrate.connectTitle`),children:[t?.installed===!1&&!t.connected?(0,H.jsx)(X,{children:R(`integrate.notInstalled`,{app:e.name})}):null,t?.connected?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,H.jsxs)(`span`,{className:`flex items-center gap-2 text-[14px] text-ink-2`,children:[(0,H.jsx)(C,{className:`size-4 text-moss`}),R(`integrate.connected`,{app:e.name})]}),(0,H.jsx)(L,{size:`sm`,variant:`ghost`,busy:_.isPending&&_.variables===!1,onClick:()=>_.mutate(!1),children:R(`mcp.appsDisconnect`)})]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`integrate.connectHint`,{app:e.name})}),(0,H.jsx)(`div`,{children:(0,H.jsxs)(L,{busy:_.isPending,onClick:()=>_.mutate(!0),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`integrate.connect`,{app:e.name})]})})]}),f&&!f.ok?(0,H.jsx)(`p`,{className:`text-[13px] text-rose`,children:f.message}):null,f?.snippet?(0,H.jsx)(Y,{text:f.snippet}):null,t?.where?(0,H.jsx)(`p`,{className:`font-mono text-[11px] text-ink-4`,children:t.where}):null]}):(0,H.jsxs)(H.Fragment,{children:[r||y?null:(0,H.jsx)(Z,{title:R(`mcp.keyTitle`),children:h?(0,H.jsxs)(`p`,{className:`flex items-center gap-2 text-[14px] text-ink-2`,children:[(0,H.jsx)(C,{className:`size-4 text-moss`}),` `,R(`mcp.keyReady`)]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(X,{children:R(`mcp.keyHint`)}),(0,H.jsx)(`div`,{children:(0,H.jsxs)(L,{variant:`secondary`,busy:v.isPending,onClick:()=>v.mutate(),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`mcp.keyCreate`,{client:e.name})]})})]})}),(0,H.jsxs)(Z,{title:R(`mcp.add`),children:[r||h||y?(0,H.jsx)(Nt,{id:e.id,url:i,apiKey:h}):(0,H.jsx)(X,{children:R(`mcp.keyFirst`)}),r?(0,H.jsx)(X,{children:R(`mcp.oauth`)}):null,(0,H.jsx)(`p`,{className:`text-[12px] text-ink-4`,children:R(o?`mcp.addressPublic`:`mcp.addressLocal`)})]})]}),ee?null:(0,H.jsxs)(Z,{title:R(`integrate.test`),children:[(0,H.jsxs)(`ol`,{className:`flex flex-col`,children:[(0,H.jsx)(Ft,{state:n?`done`:te?`now`:`later`,title:R(`integrate.seen`,{app:e.name}),children:(0,H.jsx)(X,{children:R(c===`here`?`integrate.restart`:`integrate.reload`,{app:e.name})})}),(0,H.jsxs)(Ft,{state:n?.toolAt?`done`:n?`now`:`later`,title:R(`integrate.tool`),children:[(0,H.jsx)(X,{children:R(`integrate.askHint`,{app:e.name})}),x(R(`integrate.askTool`))]}),e.widgets?(0,H.jsxs)(Ft,{state:n?.widgetAt?`done`:n?.toolAt?`now`:`later`,title:R(`integrate.widget`),children:[(0,H.jsx)(X,{children:R(`integrate.widgetHint`)}),x(R(`integrate.askWidget`))]}):null]}),b?(0,H.jsxs)(`p`,{className:`flex items-center gap-2 font-medium text-[14px] text-moss`,children:[(0,H.jsx)(C,{className:`size-4`,strokeWidth:3}),R(`integrate.works`,{app:e.name})]}):null]})]})]})}function Bt(){let e=m(),t=e.data?.mode===`managed`,n=c({queryKey:[`local-apps`],queryFn:()=>u.get(`/api/studio/local/apps`),enabled:e.data?.mode===`local`}),r=c({queryKey:[`integrations-seen`],queryFn:()=>u.get(`/api/studio/integrations/seen`),refetchInterval:2500}),[i,a]=(0,V.useState)(null);if(!e.data||!t&&!n.data)return null;let o=e.data.mcpUrl??``,s=e=>n.data?.find(t=>t.id===e),l=e=>r.data?.[e],d=e=>{let t=s(e);return t?.installed||t?.connected?0:1},f=[...jt].sort((e,t)=>d(e.id)-d(t.id)),p=f.find(e=>e.id===i)??f[0],h=e=>{let t=s(e);return l(e)?.toolAt?{note:R(`integrate.stateWorks`),tone:`done`}:t?.connected?{note:R(`integrate.stateConnected`),tone:`ok`}:t?.installed?{note:R(`integrate.stateInstalled`),tone:`dim`}:{}};return(0,H.jsxs)(`div`,{className:`flex flex-col gap-10`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-[22px] tracking-tight`,children:R(`integrate.title`)}),(0,H.jsx)(`p`,{className:`mt-1 max-w-2xl text-[14px] text-ink-2`,children:R(`integrate.lead`)})]}),(0,H.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-[16rem_minmax(0,1fr)]`,children:[(0,H.jsxs)(`nav`,{className:`flex flex-col gap-5 lg:sticky lg:top-24 lg:self-start`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`mb-1.5 px-3 font-medium text-[11px] text-ink-4 uppercase tracking-[0.14em]`,children:R(`integrate.groupApps`)}),(0,H.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:f.map(e=>(0,H.jsx)(Lt,{selected:e.id===p.id,title:e.name,widgets:e.widgets,onPick:()=>a(e.id),...h(e.id)},e.id))})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`p`,{className:`mb-1.5 px-3 font-medium text-[11px] text-ink-4 uppercase tracking-[0.14em]`,children:R(`integrate.groupShare`)}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[(0,H.jsx)(Lt,{selected:!1,disabled:!0,title:R(`integrate.shareLink`),note:R(`integrate.soon`)}),(0,H.jsx)(Lt,{selected:!1,disabled:!0,title:R(`integrate.shareSite`),note:R(`integrate.soon`)})]})]})]}),(0,H.jsx)(zt,{client:p,local:s(p.id),seen:l(p.id),managed:t,url:o},p.id)]}),t?null:(0,H.jsx)(Pt,{}),(0,H.jsxs)(`p`,{className:`flex items-start gap-2 text-[13px] text-ink-3`,children:[(0,H.jsx)(re,{className:`mt-0.5 size-3.5 shrink-0`}),R(`mcp.notReverse`)]})]})}function Vt(e){return R(e.origin===`local`?`readonly.project`:`readonly.server`)}function Ht({children:e}){return(0,H.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl bg-paper-2 px-4 py-3 text-[14px] text-ink-2 leading-relaxed`,children:[(0,H.jsx)(le,{className:`mt-0.5 size-4 shrink-0 text-ink-3`}),(0,H.jsx)(`p`,{className:`min-w-0`,children:e})]})}function Ut(e){return e.type.startsWith(`image/`)&&/logo/i.test(e.name)?`logo`:/^(image|video|audio)\//.test(e.type)?`asset`:`document`}function Wt(e,t){let n=d(),[r,i]=(0,V.useState)([]),[a,o]=(0,V.useState)(`idle`),[c,l]=(0,V.useState)(null),[f,p]=(0,V.useState)(null),[m,h]=(0,V.useState)(null),g=(0,V.useRef)(null),_=()=>(g.current??=(async()=>{await Promise.all([n.invalidateQueries({queryKey:[`projects`]}),n.invalidateQueries({queryKey:[`project-files`,e]})]),t(),g.current=null})(),g.current);return{messages:r,phase:a,activity:f,startedAt:m,error:c,send:async(t,c=[])=>{if(!(t.trim()||c.length)||a!==`idle`)return!1;if(l(null),o(`thinking`),h(Date.now()),c.length){try{for(let t of c)await u.upload(`/api/studio/projects/${e}/files?kind=${Ut(t)}`,t)}catch(e){return l(e.message),o(`idle`),h(null),await _(),!1}await _();let n=`${R(`editor.attached`)}: ${c.map(e=>e.name).join(`, `)}`;t=t.trim()?`${t}\n\n${n}`:n}let d=r.map(({role:e,content:t})=>({role:e,content:t})).slice(-12),f=`p-${Date.now()}`;i(e=>[...e,{id:`u-${Date.now()}`,role:`user`,content:t,previews:ue(c)},{id:f,role:`assistant`,content:``,pending:!0}]),p(null);let m=!1;try{await s(`/api/studio/projects/${e}/assist`,{message:t,history:d},(e,t)=>{if(e===`text`){let e=JSON.parse(t);i(t=>t.map(t=>t.id===f?{...t,content:t.content+e}:t))}else if(e===`activity`)p(JSON.parse(t));else if(e===`changed`)o(`building`),_();else if(e===`done`){m=!0;let e=JSON.parse(t);i(t=>t.map(t=>t.id===f?{...t,content:e.reply,changed:e.changed,pending:!1}:t))}else e===`error`&&(m=!0,l(JSON.parse(t).message))}),m||l(R(`editor.chatBroken`))}catch(e){l(e.message)}finally{p(null),h(null),i(e=>e.filter(e=>!(e.id===f&&!e.content)).map(e=>({...e,pending:!1}))),o(`idle`),await g.current,await _(),await n.invalidateQueries({queryKey:[`me`]})}return!0}}}function Gt(){return(0,H.jsxs)(`div`,{className:`sm:pr-36`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-[20px] leading-tight tracking-tight`,children:R(`project.assistantTitle`)}),(0,H.jsx)(`p`,{className:`mt-1.5 max-w-2xl text-[15px] text-ink-2 leading-relaxed`,children:R(`project.assistantHello`)})]})}var Kt=72,qt=720;function Jt({projectId:e,onChanged:t}){let n=Wt(e,t),r=(0,V.useRef)(null),[i,a]=(0,V.useState)(null);return(0,V.useEffect)(()=>{let e=()=>{let e=r.current?.getBoundingClientRect();e&&a(t=>{if(e.bottom>=Kt)return null;let n=Math.min(e.width,qt),r=e.left+(e.width-n)/2;return t&&t.left===r&&t.width===n?t:{left:r,width:n,height:t?.height??e.height}})};return e(),window.addEventListener(`scroll`,e,{passive:!0}),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e),window.removeEventListener(`resize`,e)}},[]),(0,H.jsxs)(`div`,{ref:r,style:i?{minHeight:i.height}:void 0,children:[(0,H.jsxs)(`div`,{className:`mb-2 flex items-center gap-1.5 px-1 font-medium text-[12px] text-ember-strong uppercase tracking-[0.07em]`,children:[(0,H.jsx)(oe,{className:`size-3.5`}),` `,R(`project.assistant`)]}),(0,H.jsxs)(`div`,{className:`relative`,children:[!i&&n.messages.length===0?(0,H.jsx)(`div`,{className:`absolute -top-14 right-10 z-10 max-sm:hidden`,children:(0,H.jsx)(o,{kind:`round`,size:104})}):null,(0,H.jsx)(`div`,{className:A(`flex flex-col overflow-hidden bg-card`,i?`fixed bottom-4 z-30 max-h-[70dvh] animate-dock rounded-2xl shadow-overlay ring-1 ring-border`:`max-h-[520px] rounded-xl bg-linear-to-br from-ember-tint via-card to-card shadow-soft ring-1 ring-ember-veil`),style:i?{left:i.left,width:i.width}:void 0,children:(0,H.jsx)(de,{chat:n,avatar:`round`,compact:!!i,intro:(0,H.jsx)(Gt,{}),placeholder:R(`project.assistantComposer`),changedLabel:R(`project.assistantChanged`)})})]})]})}var Yt=[`text`,`longtext`,`number`,`date`,`url`,`email`,`phone`,`boolean`],Xt=/^(\d{4}-\d{2}-\d{2}|\d{1,2}\.\s?\d{1,2}\.\s?\d{4})$/,Zt=/^[+-]?\d{1,3}([.,\s']?\d{3})*([.,]\d+)?$/,Qt=/^[^\s@]+@[^\s@]+\.[^\s@]{2,}$/,$t=/^(https?:\/\/|www\.)\S+$/i,en=/^\+?[\d\s()/.-]{7,20}$/,tn=/^(ja|nein|yes|no|true|false)$/i;function nn(e){let t=e.trim();return t?t.includes(`
2
+ `)||t.length>140?`longtext`:tn.test(t)?`boolean`:Qt.test(t)?`email`:$t.test(t)?`url`:Xt.test(t)?`date`:Zt.test(t)&&!/^(\+|0\d)/.test(t)?`number`:en.test(t)&&t.replace(/\D/g,``).length>=7?`phone`:`text`:`text`}function rn(e,t=[]){let n=e.toLowerCase().replace(/ä/g,`ae`).replace(/ö/g,`oe`).replace(/ü/g,`ue`).replace(/ß/g,`ss`).normalize(`NFD`).replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).slice(0,40)||`fakt`,r=n;for(let e=2;t.includes(r);e++)r=`${n}_${e}`;return r}var an=[{key:`adresse`,de:`Adresse`,en:`Address`},{key:`plz`,de:`PLZ`,en:`Postcode`},{key:`ort`,de:`Ort`,en:`City`},{key:`uid`,de:`UID`,en:`VAT id`},{key:`telefon`,de:`Telefon`,en:`Phone`},{key:`e_mail`,de:`E-Mail`,en:`Email`},{key:`website`,de:`Website`,en:`Website`},{key:`iban`,de:`IBAN`,en:`IBAN`}],on={facts:100,colors:12,files:{logo:8,asset:100,document:50},bytes:{logo:5e6,asset:15e6,video:8e7,document:3e7}},sn=/^#[0-9a-fA-F]{6}$/;function cn({onAdd:e,onClose:t}){let[n,r]=(0,V.useState)(`#e0531b`),[i,a]=(0,V.useState)(``),o=sn.test(n);return(0,H.jsx)(j,{open:!0,onClose:t,title:R(`project.colorAddTitle`),children:(0,H.jsxs)(`form`,{onSubmit:r=>{r.preventDefault(),o&&(e({name:i.trim(),value:n.toLowerCase()}),t())},className:`flex flex-col gap-5`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.colorValue`)}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(Se,{value:o?n:`#888888`,onChange:e=>r(e.target.value)}),(0,H.jsx)(I,{value:n,placeholder:`#e0531b`,spellCheck:!1,onChange:e=>r(e.target.value.trim()),className:`font-mono text-[14px]`})]})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.colorUseLabel`)}),(0,H.jsx)(I,{autoFocus:!0,value:i,maxLength:120,placeholder:R(`project.colorName`),onChange:e=>a(e.target.value)}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.colorUse`)})]}),(0,H.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,H.jsx)(L,{variant:`ghost`,onClick:t,children:R(`common.cancel`)}),(0,H.jsx)(L,{type:`submit`,disabled:!o,children:R(`project.add`)})]})]})})}function ln({colors:e,save:t,readOnly:n}){let r=(0,V.useRef)(0),[i,a]=(0,V.useState)(()=>e.map(e=>({...e,id:`c${r.current++}`}))),[o,s]=(0,V.useState)(!1),c=q(i.filter(e=>sn.test(e.value)).map(({name:e,value:t})=>({name:e.trim(),value:t})),t),l=(e,t)=>a(n=>n.map(n=>n.id===e?{...n,...t}:n));return(0,H.jsxs)(U,{title:R(`project.colors`),hint:R(`project.colorsHint`),save:c,locked:n,children:[(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:i.map((e,t)=>(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(Se,{value:sn.test(e.value)?e.value:`#888888`,onChange:t=>l(e.id,{value:t.target.value})}),(0,H.jsx)(I,{value:e.name,placeholder:R(`project.colorName`),maxLength:120,onChange:t=>l(e.id,{name:t.target.value}),className:`min-w-0 flex-1`}),(0,H.jsx)(I,{value:e.value,placeholder:`#e0531b`,spellCheck:!1,onChange:t=>l(e.id,{value:t.target.value.trim()}),className:`w-28 font-mono text-[13px]`}),(0,H.jsxs)(`div`,{className:`flex w-24 shrink-0 items-center justify-end max-sm:w-auto`,children:[t===0?(0,H.jsx)(`span`,{className:`mr-1 max-sm:hidden`,children:(0,H.jsx)(F,{tone:`ember`,children:R(`project.colorAccent`)})}):n?null:(0,H.jsx)(P,{label:R(`project.colorFirst`),onClick:()=>a(t=>[e,...t.filter(t=>t.id!==e.id)]),children:(0,H.jsx)(b,{className:`size-4`})}),n?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>a(t=>t.filter(t=>t.id!==e.id)),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})]},e.id))}),i.length&&!n?(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.colorUse`)}):null,i.length<on.colors&&!n?(0,H.jsxs)(L,{variant:`secondary`,size:`sm`,className:i.length?`mt-3`:void 0,onClick:()=>s(!0),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`project.colorAdd`)]}):null,o?(0,H.jsx)(cn,{onClose:()=>s(!1),onAdd:e=>a(t=>[...t,{...e,id:`c${r.current++}`}])}):null]})}var un={backgroundImage:`repeating-conic-gradient(#c9c9c9 0% 25%, #dedede 0% 50%)`,backgroundSize:`16px 16px`};function $({file:e,actions:t}){let[n,r]=(0,V.useState)(e.description),i=(0,V.useRef)(e.description),a=(0,V.useRef)(null);(0,V.useEffect)(()=>{e.description!==i.current&&(r(t=>t===i.current?e.description:t),i.current=e.description)},[e.description]),(0,V.useLayoutEffect)(()=>{let e=a.current;e&&(e.style.height=`auto`,e.style.height=`${e.scrollHeight}px`)},[n]);let o=e.status===`pending`&&!n;return t.readOnly?n?(0,H.jsx)(`p`,{className:`text-[13px] text-ink-2 leading-snug`,children:n}):null:(0,H.jsx)(`textarea`,{ref:a,rows:1,value:n,maxLength:600,placeholder:R(o?`project.describing`:`project.description`),onChange:e=>r(e.target.value),onBlur:()=>{n.trim()!==e.description&&(i.current=n.trim(),t.describe(e.id,n.trim()))},className:`-mx-1 block w-[calc(100%+0.5rem)] resize-none overflow-hidden rounded-md bg-transparent px-1 py-0.5 text-[13px] text-ink-2 leading-snug outline-none transition placeholder:text-ink-4 hover:bg-paper-2 focus:bg-card focus:text-ink focus:ring-1 focus:ring-border`})}function dn(e,t){confirm(R(`project.removeConfirm`,{name:e.name}))&&t.remove(e.id)}function fn({projectId:e,file:t,small:n}){let r=G(e,t.id);return t.mime.startsWith(`image/`)?(0,H.jsx)(`img`,{src:r,alt:``,loading:`lazy`,className:A(`size-full`,t.kind===`logo`?`object-contain p-3`:`object-cover`)}):t.mime.startsWith(`video/`)?(0,H.jsx)(`video`,{src:`${r}#t=0.1`,preload:`metadata`,controls:!n,className:`size-full object-cover`}):(0,H.jsx)(`div`,{className:`flex size-full items-center justify-center text-ink-3`,children:t.mime.startsWith(`audio/`)?(0,H.jsx)($e,{className:n?`size-5`:`size-7`}):(0,H.jsx)(ne,{className:n?`size-5`:`size-7`})})}function pn({projectId:e,kind:t,files:n,actions:r,accept:i,addLabel:a,onPreview:o}){return(0,H.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(184px,1fr))] gap-3`,children:[n.map((i,a)=>(0,H.jsxs)(`div`,{className:`group relative flex flex-col gap-1.5 rounded-lg bg-paper p-2 pb-2.5 ring-1 ring-border-soft`,children:[t===`logo`&&a===0?(0,H.jsx)(`span`,{className:`absolute -top-3 left-3 z-10 rounded-full ring-2 ring-card`,children:(0,H.jsx)(F,{tone:`ember`,children:R(`project.logoMain`)})}):null,(0,H.jsxs)(`div`,{className:`relative h-28 overflow-hidden rounded-md bg-paper-2`,style:t===`logo`?un:void 0,children:[o&&i.mime.startsWith(`image/`)?(0,H.jsx)(`button`,{type:`button`,"aria-label":`${R(`project.preview`)}: ${i.name}`,onClick:()=>o(i),className:`block size-full cursor-zoom-in`,children:(0,H.jsx)(fn,{projectId:e,file:i})}):(0,H.jsx)(fn,{projectId:e,file:i}),(0,H.jsxs)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 transition focus-within:opacity-100 group-hover:opacity-100 coarse:opacity-100`,children:[o?(0,H.jsx)(P,{label:R(`project.preview`),onClick:()=>o(i),className:`size-8 bg-card shadow-soft`,children:(0,H.jsx)(w,{className:`size-4`})}):null,t===`logo`&&a>0&&!r.readOnly?(0,H.jsx)(P,{label:R(`project.logoMakeMain`),onClick:()=>r.order(`logo`,[i.id,...n.filter(e=>e.id!==i.id).map(e=>e.id)]),className:`size-8 bg-card shadow-soft`,children:(0,H.jsx)(me,{className:`size-4`})}):null,r.readOnly?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>dn(i,r),className:`size-8 bg-card shadow-soft hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})]}),t===`asset`?(0,H.jsx)(`div`,{className:`truncate px-0.5 text-[12px] text-ink-3`,title:i.name,children:i.name}):null,(0,H.jsx)($,{file:i,actions:r})]},i.id)),a&&!r.readOnly?(0,H.jsxs)(W,{accept:i,multiple:!1,onFiles:e=>r.upload(t,e),className:`min-h-28 flex-col p-3`,children:[r.busy?(0,H.jsx)(k,{className:`size-5`}):(0,H.jsx)(T,{className:`size-5`}),a]}):null]})}function mn({projectId:e,data:t,readOnly:n}){let r=K(e,n);return(0,H.jsxs)(U,{title:R(`project.logos`),hint:R(`project.logosHint`),children:[(0,H.jsx)(pn,{projectId:e,kind:`logo`,files:t.files.filter(e=>e.kind===`logo`),actions:r,accept:`image/*`,addLabel:R(`project.logoAdd`)}),r.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:r.error}):null]})}var hn=e=>[(e.name.includes(`.`)?e.name.split(`.`).pop():e.mime.split(`/`).pop())?.toUpperCase().slice(0,5),gt(e.size)].filter(Boolean).join(` · `);function gn({projectId:e,file:t,actions:n,onClose:r}){let i=G(e,t.id);return(0,H.jsxs)(j,{open:!0,onClose:r,wide:`page`,title:t.name,children:[(0,H.jsxs)(`div`,{className:`-mt-2 mb-4 flex items-center justify-between gap-3`,children:[(0,H.jsx)(`span`,{className:`text-[13px] text-ink-3`,children:hn(t)}),(0,H.jsx)(`a`,{href:i,target:`_blank`,rel:`noreferrer`,"aria-label":R(`project.openOriginal`),title:R(`project.openOriginal`),className:`inline-flex size-9 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink`,children:(0,H.jsx)(E,{className:`size-4`})})]}),t.mime.startsWith(`image/`)?(0,H.jsx)(`div`,{className:`overflow-hidden rounded-lg`,style:un,children:(0,H.jsx)(`img`,{src:i,alt:``,className:`mx-auto max-h-[68dvh] object-contain`})}):t.mime.startsWith(`video/`)?(0,H.jsx)(`video`,{src:i,controls:!0,className:`max-h-[68dvh] w-full rounded-lg bg-black`}):(0,H.jsx)(`audio`,{src:i,controls:!0,className:`w-full`}),(0,H.jsx)(`div`,{className:`mt-4`,children:(0,H.jsx)($,{file:t,actions:n})})]})}function _n({projectId:e,file:t,actions:n,onPreview:r}){return(0,H.jsxs)(`li`,{className:`flex items-start gap-3 rounded-lg bg-paper p-2 ring-1 ring-border-soft`,children:[(0,H.jsx)(`button`,{type:`button`,"aria-label":`${R(`project.preview`)}: ${t.name}`,onClick:r,className:`size-14 shrink-0 cursor-zoom-in overflow-hidden rounded-md bg-paper-2`,children:(0,H.jsx)(fn,{projectId:e,file:t,small:!0})}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1 py-0.5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-3`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:r,title:t.name,className:`min-w-0 truncate font-medium text-[14px] hover:underline`,children:t.name}),(0,H.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:hn(t)})]}),(0,H.jsx)($,{file:t,actions:n})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 items-start`,children:[(0,H.jsx)(P,{label:R(`project.preview`),onClick:r,children:(0,H.jsx)(w,{className:`size-4`})}),n.readOnly?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>dn(t,n),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})]})}function vn({projectId:e,data:t,readOnly:n}){let r=K(e,n),[i,a]=ht(`assets`,`cards`),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(null),u=t.files.filter(e=>e.kind===`asset`),d=u.find(e=>e.id===c),f=o.trim().toLowerCase(),p=f?u.filter(e=>`${e.name} ${e.description}`.toLowerCase().includes(f)):u;return(0,H.jsxs)(U,{title:R(`project.assets`),hint:R(`project.assetsHint`),children:[u.length?(0,H.jsx)(ut,{layout:i,onToggle:a,children:(0,H.jsx)(dt,{value:o,onChange:s,placeholder:R(`project.assetSearch`)})}):null,p.length?(0,H.jsx)(`div`,{className:`mb-3`,children:i===`cards`?(0,H.jsx)(pn,{projectId:e,kind:`asset`,files:p,actions:r,onPreview:e=>l(e.id)}):(0,H.jsx)(`ul`,{className:`flex flex-col gap-2`,children:p.map(t=>(0,H.jsx)(_n,{projectId:e,file:t,actions:r,onPreview:()=>l(t.id)},t.id))})}):null,n?u.length?null:(0,H.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:R(`project.staysLocal`)}):(0,H.jsxs)(W,{accept:`image/*,video/*,audio/*`,onFiles:e=>r.upload(`asset`,e),className:`h-16 w-full`,children:[r.busy?(0,H.jsx)(k,{className:`size-4`}):(0,H.jsx)(be,{className:`size-4`}),R(`project.drop`),` `,(0,H.jsx)(`span`,{className:`underline`,children:R(`project.assetAdd`)})]}),r.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:r.error}):null,d?(0,H.jsx)(gn,{projectId:e,file:d,actions:r,onClose:()=>l(null)}):null]})}function yn(e,t,n){return c({queryKey:[`project-file-text`,t.id,t.chars,n],queryFn:()=>u.get(`/api/studio/projects/${e}/files/${t.id}/text?limit=${n}`),enabled:t.status===`ready`,staleTime:6e4})}function bn(e){return((e.name.includes(`.`)?e.name.split(`.`).pop():``)||e.mime.split(`/`).pop()||``).toUpperCase().slice(0,5)}var xn=e=>[bn(e),e.pages?R(`project.pages`,{n:e.pages}):null,gt(e.size)].filter(Boolean).join(` · `);function Sn({file:e}){return e.status===`pending`?(0,H.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-[12px] text-ink-3`,children:[(0,H.jsx)(k,{className:`size-3`}),` `,R(`project.reading`)]}):e.status===`failed`?(0,H.jsx)(`span`,{className:`text-[12px] text-rose`,children:e.error}):e.indexed?(0,H.jsx)(F,{tone:`live`,children:e.indexed===`embeddings`?R(`project.indexed`):R(`project.indexedKeywords`)}):(0,H.jsx)(F,{tone:`warn`,children:R(`project.notIndexed`)})}function Cn({file:e,actions:t,onPreview:n}){return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(P,{label:R(`project.preview`),onClick:n,children:(0,H.jsx)(w,{className:`size-4`})}),e.status!==`pending`&&!t.readOnly?(0,H.jsx)(P,{label:R(`project.reindex`),onClick:()=>t.reindex(e.id),children:(0,H.jsx)(ye,{className:`size-4`})}):null,t.readOnly?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>dn(e,t),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]})}function wn({file:e,actions:t,onPreview:n}){let r=/sheet|csv|excel/.test(e.mime);return(0,H.jsxs)(`li`,{className:`flex gap-3 rounded-lg bg-paper p-3 ring-1 ring-border-soft`,children:[(0,H.jsx)(`div`,{className:`mt-0.5 text-ink-3`,children:r?(0,H.jsx)(ze,{className:`size-5`}):(0,H.jsx)(ve,{className:`size-5`})}),(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1.5`,children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:n,title:e.name,className:`min-w-0 truncate font-medium text-[14px] hover:underline`,children:e.name}),(0,H.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:xn(e)}),(0,H.jsx)(Sn,{file:e})]}),(0,H.jsx)($,{file:e,actions:t})]}),(0,H.jsx)(`div`,{className:`-my-1 flex shrink-0 items-start`,children:(0,H.jsx)(Cn,{file:e,actions:t,onPreview:n})})]})}function Tn({projectId:e,file:t}){let n=yn(e,t,1500);return t.mime.startsWith(`image/`)?(0,H.jsx)(`img`,{src:G(e,t.id),alt:``,className:`size-full object-cover`}):t.status===`pending`||n.isLoading?(0,H.jsx)(`div`,{className:`flex size-full items-center justify-center text-ink-4`,children:(0,H.jsx)(k,{className:`size-5`})}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`w-[222%] origin-top-left scale-[0.45] p-6`,children:(0,H.jsx)(ie,{text:n.data?.text??``})}),(0,H.jsx)(`div`,{className:`absolute inset-x-0 bottom-0 h-12 bg-linear-to-t from-card to-transparent`})]})}function En({projectId:e,file:t,actions:n,onPreview:r}){return(0,H.jsxs)(`li`,{className:`group flex flex-col gap-1.5 rounded-lg bg-paper p-2 pb-2.5 ring-1 ring-border-soft`,children:[(0,H.jsxs)(`div`,{className:`relative`,children:[(0,H.jsx)(`button`,{type:`button`,onClick:r,"aria-label":`${R(`project.preview`)}: ${t.name}`,className:`relative block h-44 w-full overflow-hidden rounded-md bg-card text-left ring-1 ring-border-soft transition hover:ring-border`,children:(0,H.jsx)(Tn,{projectId:e,file:t})}),(0,H.jsx)(`div`,{className:`absolute top-1 right-1 flex gap-1 opacity-0 transition focus-within:opacity-100 group-hover:opacity-100 coarse:opacity-100 [&>button]:size-8 [&>button]:bg-card [&>button]:shadow-soft`,children:(0,H.jsx)(Cn,{file:t,actions:n,onPreview:r})})]}),(0,H.jsxs)(`div`,{className:`mt-1 flex flex-col gap-1 px-0.5`,children:[(0,H.jsx)(`div`,{className:`truncate font-medium text-[13px]`,title:t.name,children:t.name}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1`,children:[(0,H.jsx)(`span`,{className:`text-[12px] text-ink-3`,children:xn(t)}),(0,H.jsx)(Sn,{file:t})]})]}),(0,H.jsx)($,{file:t,actions:n})]})}var Dn=2e5;function On({projectId:e,file:t,onClose:n}){let r=t.mime===`application/pdf`||t.mime.startsWith(`image/`),[i,a]=(0,V.useState)(r?`original`:`text`),o=yn(e,t,Dn),s=G(e,t.id),c=(e,t)=>(0,H.jsx)(`button`,{type:`button`,"aria-pressed":i===e,onClick:()=>a(e),className:A(`h-8 rounded-full px-3 text-[13px] transition`,i===e?`bg-paper-2 font-medium text-ink`:`text-ink-3 hover:text-ink`),children:t});return(0,H.jsxs)(j,{open:!0,onClose:n,wide:`page`,title:t.name,children:[(0,H.jsxs)(`div`,{className:`-mt-2 mb-4 flex flex-wrap items-center gap-x-3 gap-y-2`,children:[(0,H.jsx)(`span`,{className:`text-[13px] text-ink-3`,children:xn(t)}),(0,H.jsx)(Sn,{file:t}),(0,H.jsxs)(`div`,{className:`ml-auto flex items-center gap-1`,children:[r?(0,H.jsxs)(H.Fragment,{children:[c(`original`,R(`project.original`)),c(`text`,R(`project.readText`))]}):null,(0,H.jsx)(`a`,{href:s,target:`_blank`,rel:`noreferrer`,"aria-label":R(`project.openOriginal`),title:R(`project.openOriginal`),className:`inline-flex size-9 items-center justify-center rounded-full text-ink-3 transition hover:bg-accent hover:text-ink`,children:(0,H.jsx)(E,{className:`size-4`})})]})]}),i===`original`?t.mime===`application/pdf`?(0,H.jsx)(`iframe`,{src:s,title:t.name,className:`h-[70dvh] w-full rounded-lg bg-paper-2 ring-1 ring-border-soft`}):(0,H.jsx)(`img`,{src:s,alt:``,className:`mx-auto max-h-[70dvh] rounded-lg object-contain`}):o.isLoading?(0,H.jsx)(`div`,{className:`flex h-40 items-center justify-center text-ink-3`,children:(0,H.jsx)(k,{})}):o.data?.text?(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`div`,{className:`overflow-x-auto rounded-lg bg-paper p-5 ring-1 ring-border-soft`,children:(0,H.jsx)(ie,{text:o.data.text,className:`text-[14px]`})}),o.data.chars>o.data.text.length?(0,H.jsx)(`p`,{className:`mt-3 text-[13px] text-ink-3`,children:R(`project.textCut`,{shown:o.data.text.length.toLocaleString(),total:o.data.chars.toLocaleString()})}):null]}):(0,H.jsx)(`p`,{className:`py-8 text-center text-[14px] text-ink-3`,children:R(`project.noText`)})]})}function kn({projectId:e}){let[t,n]=(0,V.useState)(``),[r,i]=(0,V.useState)(null),[a,o]=(0,V.useState)(!1),s=async()=>{if(!t.trim()){i(null);return}o(!0);try{let n=await u.post(`/api/studio/projects/${e}/search`,{query:t});i(n.hits)}catch{i([])}finally{o(!1)}};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(dt,{value:t,placeholder:R(`project.searchTest`),busy:a,onEnter:()=>void s(),onChange:e=>{n(e),e.trim()||i(null)}}),r?r.length?(0,H.jsx)(`ul`,{className:`mt-2 flex flex-col gap-2`,children:r.map((e,t)=>(0,H.jsxs)(`li`,{className:`rounded-lg bg-paper-2 px-3 py-2 text-[13px]`,children:[(0,H.jsx)(`div`,{className:`mb-0.5 font-medium text-[12px] text-ink-3`,children:e.name}),(0,H.jsx)(`p`,{className:`line-clamp-3 whitespace-pre-line text-ink-2`,children:e.text})]},t))}):(0,H.jsx)(`p`,{className:`mt-2 text-[13px] text-ink-3`,children:R(`project.searchNone`)}):null]})}function An({projectId:e,data:t,readOnly:n}){let r=K(e,n),[i,a]=ht(`documents`,`list`),[o,s]=(0,V.useState)(null),c=t.files.filter(e=>e.kind===`document`),l=c.find(e=>e.id===o),u=i===`cards`?En:wn;return(0,H.jsxs)(U,{title:R(`project.documents`),hint:R(`project.documentsHint`),children:[c.length?(0,H.jsx)(ut,{layout:i,onToggle:a,children:(0,H.jsx)(kn,{projectId:e})}):null,c.length?(0,H.jsx)(`ul`,{className:A(`mb-3`,i===`cards`?`grid grid-cols-[repeat(auto-fill,minmax(220px,1fr))] gap-3`:`flex flex-col gap-2`),children:c.map(t=>(0,H.jsx)(u,{projectId:e,file:t,actions:r,onPreview:()=>s(t.id)},t.id))}):null,n?c.length?null:(0,H.jsx)(`p`,{className:`text-[14px] text-ink-3`,children:R(`project.staysLocal`)}):(0,H.jsxs)(W,{accept:`.pdf,.docx,.doc,.xlsx,.csv,.tsv,.txt,.md,.json,.html,.eml,image/*`,onFiles:e=>r.upload(`document`,e),className:`h-16 w-full`,children:[r.busy?(0,H.jsx)(k,{className:`size-4`}):(0,H.jsx)(be,{className:`size-4`}),R(`project.drop`),` `,(0,H.jsx)(`span`,{className:`underline`,children:R(`project.documentAdd`)})]}),r.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:r.error}):null,c.length&&!t.embeddings?(0,H.jsx)(`p`,{className:`mt-3 text-[13px] text-ink-3`,children:R(`project.keywordsOnly`)}):null,l?(0,H.jsx)(On,{projectId:e,file:l,onClose:()=>s(null)}):null]})}var jn=e=>/^(ja|yes|true)$/i.test(e.trim()),Mn={text:ge,longtext:at,number:Ue,date:Fe,url:re,email:ae,phone:tt,boolean:st};function Nn({type:e,detected:t,onChange:n}){let[r,i]=(0,V.useState)(!1),[a,o]=(0,V.useState)(!1),s=(0,V.useRef)(null);(0,V.useEffect)(()=>{if(!r)return;let e=e=>{s.current?.contains(e.target)||i(!1)},t=e=>e.key===`Escape`&&i(!1);return document.addEventListener(`mousedown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`keydown`,t)}},[r]);let c=Mn[e??t],l=`${R(`project.factType`)}: ${R(`project.type.${e??t}`)}`,u=`flex w-full items-center gap-3 rounded-lg px-3 py-2 text-left text-[14px] text-ink-2 hover:bg-accent hover:text-ink`,d=e=>{n(e),i(!1)};return(0,H.jsxs)(`div`,{className:`relative`,ref:s,children:[(0,H.jsx)(`button`,{type:`button`,"aria-label":l,title:l,"aria-haspopup":`menu`,"aria-expanded":r,onClick:e=>{o(window.innerHeight-e.currentTarget.getBoundingClientRect().bottom<400),i(e=>!e)},className:A(`inline-flex size-11 items-center justify-center rounded-lg transition hover:bg-accent hover:text-ink`,r?`bg-accent text-ink`:e?`text-ink-2`:`text-ink-4`),children:(0,H.jsx)(c,{className:`size-4`})}),r?(0,H.jsxs)(`div`,{role:`menu`,className:A(`absolute right-0 z-50 w-56 animate-rise rounded-xl bg-card p-1.5 shadow-overlay ring-1 ring-border-soft`,a?`bottom-12`:`top-12`),children:[(0,H.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":!e,className:u,onClick:()=>d(void 0),children:[(0,H.jsx)(ce,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`flex-1`,children:R(`project.factAuto`)}),(0,H.jsx)(`span`,{className:`text-[12px] text-ink-4`,children:R(`project.type.${t}`)}),(0,H.jsx)(C,{className:A(`size-4 shrink-0`,e&&`invisible`)})]}),(0,H.jsx)(`div`,{className:`mx-2 my-1 h-px bg-border-soft`}),Yt.map(t=>{let n=Mn[t];return(0,H.jsxs)(`button`,{type:`button`,role:`menuitemradio`,"aria-checked":e===t,className:u,onClick:()=>d(t),children:[(0,H.jsx)(n,{className:`size-4 shrink-0`}),(0,H.jsx)(`span`,{className:`flex-1`,children:R(`project.type.${t}`)}),(0,H.jsx)(C,{className:A(`size-4 shrink-0`,e!==t&&`invisible`)})]},t)})]}):null]})}function Pn({facts:e,save:t,readOnly:n}){let r=(0,V.useRef)(0),i=(0,V.useRef)(null),[a,o]=(0,V.useState)(()=>e.map(e=>({...e,id:`f${r.current++}`}))),s=q(a.filter(e=>e.key&&e.label.trim()).map(({key:e,label:t,value:n,type:r})=>({key:e,label:t.trim(),value:n,...r?{type:r}:{}})),t),c=(e,t)=>o(n=>n.map(n=>n.id===e?{...n,...t}:n)),l=(e,t,n=!1)=>{let a=`f${r.current++}`;i.current=`${a}:${t}`;let s={id:a,key:``,label:``,value:``,...e};o(e=>n?[s,...e]:[...e,s])},u=e=>t=>{t&&i.current===e&&(i.current=null,t.focus())},d=an.filter(e=>!a.some(t=>t.key===e.key));return(0,H.jsxs)(U,{title:R(`project.facts`),hint:R(`project.factsHint`),save:s,locked:n,action:a.length<on.facts&&!n?(0,H.jsxs)(L,{variant:`secondary`,size:`sm`,onClick:()=>l({},`label`,!0),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`project.factAdd`)]}):null,children:[(0,H.jsx)(`div`,{className:`flex flex-col gap-2`,children:a.map(e=>{let t=nn(e.value),r=e.type??t;return(0,H.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,1fr)_auto_auto] items-start gap-x-1 gap-y-2 sm:grid-cols-[minmax(0,2fr)_minmax(0,3fr)_auto_auto]`,children:[(0,H.jsx)(I,{ref:u(`${e.id}:label`),value:e.label,placeholder:R(`project.factLabel`),title:e.key?`{{facts.${e.key}}}`:void 0,onChange:t=>c(e.id,{label:t.target.value}),onBlur:()=>{!e.key&&e.label.trim()&&c(e.id,{key:rn(e.label,a.map(e=>e.key))})},className:`max-sm:col-span-3 max-sm:font-medium sm:mr-1`}),e.type===`boolean`?(0,H.jsxs)(`div`,{className:`flex h-11 items-center gap-3`,children:[(0,H.jsx)(Ce,{checked:jn(e.value),label:e.label,onChange:t=>c(e.id,{value:R(t?`project.yes`:`project.no`)})}),(0,H.jsx)(`span`,{className:`text-[14px] text-ink-2`,children:jn(e.value)?R(`project.yes`):R(`project.no`)})]}):(0,H.jsx)(M,{ref:u(`${e.id}:value`),rows:1,minRows:r===`longtext`?2:1,maxRows:10,value:e.value,placeholder:R(`project.factValue`),onChange:t=>c(e.id,{value:t.target.value}),className:`min-h-11`}),(0,H.jsx)(Nn,{type:e.type,detected:t,onChange:t=>c(e.id,{type:t})}),n?null:(0,H.jsx)(P,{label:R(`project.remove`),onClick:()=>o(t=>t.filter(t=>t.id!==e.id)),className:`size-11 rounded-lg hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})})]},e.id)})}),a.length<on.facts&&!n?(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 ${a.length?`mt-4`:``}`,children:[(0,H.jsxs)(L,{variant:`secondary`,size:`sm`,onClick:()=>l({},`label`),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`project.factAdd`)]}),d.map(e=>(0,H.jsxs)(`button`,{type:`button`,onClick:()=>l({key:e.key,label:D===`en`?e.en:e.de},`value`),className:`inline-flex h-8 items-center gap-1 rounded-full bg-paper-2 px-3 text-[13px] text-ink-2 transition hover:bg-paper-3 hover:text-ink`,children:[(0,H.jsx)(T,{className:`size-3.5`}),` `,D===`en`?e.en:e.de]},e.key))]}):null]})}function Fn({project:e,save:t}){let[n,r]=(0,V.useState)(e.brand.name??``),[i,a]=(0,V.useState)(e.brand.about??``),o=q({name:n.trim(),about:i.trim()},e=>t({brand:e}));return(0,H.jsx)(U,{title:R(`project.base`),hint:R(`project.baseHint`),save:o,locked:e.readOnly,children:(0,H.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.title`)}),(0,H.jsx)(I,{value:n,maxLength:120,onChange:e=>r(e.target.value)}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.titleHint`)})]}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{children:R(`project.about`)}),(0,H.jsx)(M,{minRows:4,value:i,onChange:e=>a(e.target.value)}),(0,H.jsx)(`p`,{className:`mt-1.5 text-[13px] text-ink-3`,children:R(`project.aboutHint`)})]})]})})}function In({project:e,save:t}){let[n,r]=(0,V.useState)(!1),[i,a]=(0,V.useState)(e.name),o=p({mutationFn:()=>t({name:i.trim()}),onSuccess:()=>r(!1)});return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(P,{label:R(`project.rename`),onClick:()=>{a(e.name),r(!0)},children:(0,H.jsx)(x,{className:`size-4`})}),(0,H.jsx)(j,{open:n,onClose:()=>r(!1),title:R(`project.rename`),children:(0,H.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),i.trim()&&o.mutate()},children:[(0,H.jsx)(I,{autoFocus:!0,value:i,maxLength:80,onChange:e=>a(e.target.value)}),o.error?(0,H.jsx)(`p`,{className:`mt-3 text-[14px] text-rose`,children:o.error.message}):null,(0,H.jsxs)(`div`,{className:`mt-5 flex justify-end gap-2`,children:[(0,H.jsx)(L,{variant:`ghost`,onClick:()=>r(!1),children:R(`common.cancel`)}),(0,H.jsx)(L,{type:`submit`,busy:o.isPending,disabled:!i.trim(),children:R(`settings.save`)})]})]})})]})}function Ln({project:e}){let t=d(),n=mt(e.id),[r,i]=(0,V.useState)(0),a=async n=>{await u.patch(`/api/studio/projects/${e.id}`,n),await t.invalidateQueries({queryKey:[`projects`]})},o=p({mutationFn:()=>u.del(`/api/studio/projects/${e.id}`),onSuccess:()=>t.invalidateQueries({queryKey:[`projects`]})}),s=g(),c=n.data??{files:[],embeddings:!0},l=`${e.id}:${r}`,f=e.readOnly;return(0,H.jsxs)(`div`,{className:`flex flex-col gap-9 pb-20`,children:[s?(0,H.jsxs)(`div`,{className:`-mb-3 flex items-center gap-1`,children:[(0,H.jsx)(Ne,{}),f?null:(0,H.jsx)(In,{project:e,save:a})]}):null,f?(0,H.jsx)(Ht,{children:Vt(e)}):(0,H.jsx)(Jt,{projectId:e.id,onChanged:()=>i(e=>e+1)},e.id),(0,H.jsx)(Fn,{project:e,save:a},`base:${l}`),(0,H.jsx)(mn,{projectId:e.id,data:c,readOnly:f}),(0,H.jsx)(ln,{colors:e.brand.colors??[],save:e=>a({brand:{colors:e}}),readOnly:f},`colors:${l}`),(0,H.jsx)(vn,{projectId:e.id,data:c,readOnly:f}),(0,H.jsx)(An,{projectId:e.id,data:c,readOnly:f}),(0,H.jsx)(Pn,{facts:e.facts,save:e=>a({facts:e}),readOnly:f},`facts:${l}`),s&&!f?(0,H.jsxs)(`div`,{children:[(0,H.jsx)(L,{variant:`danger`,busy:o.isPending,onClick:()=>confirm(`${R(`settings.delete`)}?`)&&o.mutate(),children:R(`settings.delete`)}),o.error?(0,H.jsx)(`p`,{className:`mt-2 text-[14px] text-rose`,children:o.error.message}):null]}):null]})}function Rn(e,t){let n=e.toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``).replace(/^[^a-z]+/,``).slice(0,24)||`system`,r=n,i=2;for(;t.includes(r);)r=`${n}_${i++}`;return r}function zn({project:e}){let t=d(),[n,r]=(0,V.useState)(e.mcpServers.map(e=>({...e,auth:e.headers?.Authorization??e.headers?.authorization??``}))),[i,a]=(0,V.useState)(!1),o=e.readOnly,s=p({mutationFn:()=>u.patch(`/api/studio/projects/${e.id}`,{mcpServers:n.filter(e=>e.name&&e.url).map(({auth:e,headers:t,...n})=>({...n,headers:e?{...t,Authorization:e}:void 0}))}),onSuccess:async()=>{await t.invalidateQueries({queryKey:[`projects`]}),a(!0),setTimeout(()=>a(!1),1800)}});return(0,H.jsxs)(N,{className:`p-6`,children:[(0,H.jsx)(`h2`,{className:`font-display font-semibold text-lg`,children:R(`settings.mcp`)}),(0,H.jsx)(`p`,{className:`mt-1 mb-5 text-[14px] text-ink-3`,children:R(`settings.mcpHint`)}),(0,H.jsxs)(`fieldset`,{disabled:o,className:`flex min-w-0 flex-col gap-3`,children:[n.map((e,t)=>(0,H.jsxs)(`div`,{className:`grid gap-2 rounded-lg bg-paper p-3 ring-1 ring-border-soft sm:grid-cols-[1fr_2fr_auto]`,children:[(0,H.jsx)(I,{placeholder:R(`settings.serverName`),value:e.name,onChange:e=>r(n=>n.map((r,i)=>i===t?{...r,name:e.target.value,id:r.id||Rn(e.target.value,n.map(e=>e.id))}:r))}),(0,H.jsx)(I,{placeholder:`${R(`settings.serverUrl`)} (https://…/mcp)`,value:e.url,onChange:e=>r(n=>n.map((n,r)=>r===t?{...n,url:e.target.value}:n))}),o?(0,H.jsx)(`span`,{}):(0,H.jsx)(P,{label:`Entfernen`,onClick:()=>r(e=>e.filter((e,n)=>n!==t)),className:`hover:text-rose`,children:(0,H.jsx)(S,{className:`size-4`})}),(0,H.jsx)(I,{className:`sm:col-span-2`,placeholder:R(`settings.serverHeader`),value:e.auth??``,onChange:e=>r(n=>n.map((n,r)=>r===t?{...n,auth:e.target.value}:n))}),e.id?(0,H.jsx)(`span`,{className:`self-center font-mono text-[11px] text-ink-4`,children:e.id}):null]},t)),o?null:(0,H.jsxs)(L,{variant:`secondary`,className:`self-start`,onClick:()=>r(e=>[...e,{id:``,name:``,url:``,auth:``}]),children:[(0,H.jsx)(T,{className:`size-4`}),` `,R(`settings.addServer`)]})]}),o?null:(0,H.jsxs)(`div`,{className:`mt-5 flex items-center justify-end gap-3`,children:[s.error?(0,H.jsx)(`p`,{className:`text-[14px] text-rose`,children:s.error.message}):null,(0,H.jsx)(L,{busy:s.isPending,onClick:()=>s.mutate(),children:R(i?`settings.saved`:`settings.save`)})]})]})}function Bn(){let{section:e}=l(),t=r(),n=m(),{project:a,loading:o}=h(),s=g(),[c,u]=(0,V.useState)(a?.id);(0,V.useEffect)(()=>u(a?.id),[a?.id]);let d=Ee(),p=De(n.data,d),_=p.find(t=>t.id===e);if(!_)return e===`build`?(0,H.jsx)(f,{to:`/settings/integrate`,replace:!0}):d.status===`ready`?(0,H.jsx)(f,{to:`/settings/project`,replace:!0}):null;let v=_.id===`connectors`&&s;return(0,H.jsxs)(`div`,{className:`animate-rise`,children:[(0,H.jsx)(`h1`,{className:`font-display font-semibold text-[28px] tracking-tight`,children:R(`settings.title`)}),(0,H.jsxs)(`div`,{className:`mt-6 grid gap-6 md:mt-8 md:grid-cols-[200px_minmax(0,1fr)] md:gap-10`,children:[(0,H.jsx)(`nav`,{className:`max-md:hidden`,children:(0,H.jsx)(`ul`,{className:`sticky top-24 flex flex-col gap-0.5`,children:p.map(e=>(0,H.jsx)(`li`,{children:(0,H.jsx)(i,{to:`/settings/${e.id}`,"aria-current":e.id===_.id?`page`:void 0,className:A(`block rounded-lg px-3 py-2 text-[14px] transition`,e.id===_.id?`bg-paper-2 font-medium text-ink`:`text-ink-3 hover:bg-accent hover:text-ink`),children:e.label})},e.id))})}),(0,H.jsx)(we,{className:`md:hidden`,value:_.id,onChange:e=>t(`/settings/${e}`),options:p.map(e=>({value:e.id,label:e.label}))}),(0,H.jsxs)(`div`,{className:A(`min-w-0`,_.id!==`project`&&_.id!==`integrate`&&`max-w-2xl`),children:[v?(0,H.jsx)(`div`,{className:`mb-6`,children:(0,H.jsx)(Ne,{})}):null,_.id===`project`&&a?(0,H.jsx)(Ln,{project:a},c):null,_.id===`connectors`&&a?(0,H.jsxs)(`div`,{className:`flex flex-col gap-6`,children:[a.readOnly?(0,H.jsx)(Ht,{children:Vt(a)}):null,(0,H.jsx)(kt,{projectId:a.id,readOnly:a.readOnly},c),(0,H.jsx)(zn,{project:a},c)]}):null,(_.id===`project`||_.id===`connectors`)&&!a&&!o?(0,H.jsx)(xe,{children:R(`settings.noProject`)}):null,_.id===`models`?(0,H.jsx)(Me,{}):null,_.id===`integrate`?(0,H.jsx)(Bt,{}):null,_.id===`account`&&n.data?(0,H.jsx)(wt,{me:n.data}):null,_.id===`plugins`?(0,H.jsx)(ft,{}):null,_.plugin?(0,H.jsx)(Oe,{of:_.plugin,children:(0,H.jsx)(_.plugin.component,{})}):null]})]})]})}export{Bn as SettingsPage};
@@ -1 +1 @@
1
- import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{O as r,_ as i,d as a,j as o,m as s,n as c,nt as l}from"./api-KMi35npD.js";import{c as u,s as d}from"./session-B6-6VomQ.js";import{t as ee}from"./arrow-left-hTN1VoH1.js";import{t as f}from"./arrow-right-6FyN3e7D.js";import{t as p}from"./check-CUpby_J9.js";import{p as te}from"./definition-DndaH5Ow.js";import{h as m,t as ne,y as h}from"./ui-Cs6lpsmj.js";import{a as g}from"./index-BmpnE7IO.js";import{a as _,i as v,n as y,o as re,r as b}from"./LocalRuntime-CTyLGC98.js";var x=e(t(),1),S=e(n(),1),C=`oklch(50% 0.2 262)`,w=`oklch(32% 0.15 262)`,T=`oklch(90% 0.1 80)`,E=`oklch(88% 0.17 150)`,D=`oklch(88% 0.14 80)`,O=`rgb(255 255 255 / 0.38)`,ie={"--ink-2":`oklch(96% 0.02 262)`,"--ink-3":`oklch(90% 0.035 262)`,"--ink-4":`oklch(82% 0.05 262)`,"--moss":`oklch(90% 0.14 150)`,"--rose":`oklch(89% 0.09 45)`},k=`ease-[cubic-bezier(0.3,0.7,0.2,1)]`,ae=220,oe={codex:`dome`,claude:`oval`,gemini:`wedge`,cursor:`sprout`,own:`bean`,account:`drop`},se=`oklch(27% 0.09 150)`,A=`relative w-fit max-w-full transition-[left,translate] duration-700 ease-[cubic-bezier(0.3,0.7,0.2,1)] motion-reduce:transition-none`,j=`left-1/2 -translate-x-1/2 text-center`,M=`max-lg:left-1/2 max-lg:-translate-x-1/2 max-lg:text-center lg:left-0 lg:translate-x-0 lg:text-left`;function N(){window.matchMedia(`(max-width: 1023px)`).matches&&window.scrollTo({top:0})}var P=`wizards.setup.own`;function F(){try{return sessionStorage.getItem(P)===`1`}catch{return!1}}function I(e){try{e?sessionStorage.setItem(P,`1`):sessionStorage.removeItem(P)}catch{}}function L(){return(0,S.jsxs)(`span`,{className:`inline-flex items-center gap-2.5`,children:[(0,S.jsx)(i,{size:28}),(0,S.jsxs)(`span`,{className:`font-display font-semibold text-[17px] tracking-tight`,children:[`engenty`,(0,S.jsx)(`span`,{className:`mr-[0.09em] ml-[0.06em]`,style:{color:T},children:`.`}),(0,S.jsx)(`span`,{className:`font-normal text-white/70`,children:`wizards`})]})]})}function R({selected:e,title:t,description:n,badge:r,note:i,onPick:a}){return(0,S.jsxs)(`button`,{type:`button`,onClick:a,"aria-pressed":e,className:m(`group relative flex w-full items-center gap-3 rounded-2xl px-4 py-3 text-left transition-[background-color,color,box-shadow] duration-300`,e?`bg-white shadow-elevated`:`bg-white/10 ring-1 ring-white/15 hover:bg-white/15`),style:e?{color:w}:void 0,children:[r?(0,S.jsx)(`span`,{className:`absolute -top-2.5 right-4 rounded-full px-2.5 py-[3px] font-semibold text-[11px] leading-none tracking-wide shadow-[0_2px_8px_oklch(0%_0_0/0.22)]`,style:{background:T,color:w},children:r}):null,(0,S.jsx)(`span`,{className:m(`flex size-5 shrink-0 items-center justify-center rounded-full border transition-colors duration-300`,e?`border-transparent`:`border-white/40`),style:e?{background:w}:void 0,children:e?(0,S.jsx)(p,{className:`size-3.5 text-white`}):null}),(0,S.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`span`,{className:`block font-medium text-[15px]`,children:t}),(0,S.jsx)(`span`,{className:m(`mt-0.5 block truncate text-[13px]`,e?`opacity-70`:`text-white/65`),children:n})]}),i?(0,S.jsx)(`span`,{className:m(`shrink-0 text-[12px]`,e?`opacity-70`:`text-white/65`),children:i}):null,(0,S.jsx)(f,{className:m(`size-4 shrink-0 transition`,e?`opacity-70`:`text-white/40 group-hover:translate-x-0.5 group-hover:text-white/80`)})]})}function z({name:e,at:t,done:n}){let r=[h(`setup.stage.connect`),h(`setup.stage.test`),h(`setup.stage.done`)],i=n?r.length:t+1;return(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2 font-medium text-[12px] uppercase tracking-[0.14em]`,children:[(0,S.jsx)(`span`,{className:`text-white/70`,children:e}),(0,S.jsx)(`ol`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2`,children:r.map((e,r)=>{let i=n||r<t;return(0,S.jsxs)(`li`,{"aria-current":!i&&r===t?`step`:void 0,className:`flex items-center gap-1 transition-colors duration-500`,style:{color:i?E:r===t?D:O},children:[i?(0,S.jsx)(p,{className:`size-3.5`,strokeWidth:3}):null,e]},e)})}),(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`flex gap-1.5`,children:r.map((e,t)=>(0,S.jsx)(`span`,{className:`h-[3px] w-5 rounded-full transition-colors duration-500`,style:{background:t<i?n?E:D:`rgb(255 255 255 / 0.22)`}},e))})]})}function B({href:e,children:t}){return(0,S.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:`transition hover:text-white`,onClick:t=>{t.preventDefault(),b(e)},children:t})}function V(){s(C);let e=d(),t=l(),n=r(),i=o({queryKey:[`config`],queryFn:()=>c.get(`/api/config`)}),[f,b]=(0,x.useState)(F),[D,O]=(0,x.useState)(!1),P=u({mutationFn:e=>c.put(`/api/studio/local/models`,{source:e}),onSuccess:async(e,n)=>{await t.invalidateQueries({queryKey:[`me`]}),b(!0),O(!1),N(),I(n===`own`)}}),V=u({mutationFn:()=>Promise.all((e.data?.harnesses??[]).map(e=>c.post(`/api/studio/local/harness/${e.id}/detect`))),onSuccess:()=>t.invalidateQueries({queryKey:[`me`]})});if(!e.data?.models)return null;let H=e.data.models,U=e=>(e.version===null?2:0)+ +!e.app,W=[...e.data.harnesses].sort((e,t)=>U(e)-U(t)),G=W.filter(e=>e.version!==null),K=f||e.data.setupDone||H.source!==`own`?H.source:null,q=e.data.harnesses.find(e=>e.id===K),J=e.data.setupDone,Y=Object.values(H.keys).some(Boolean),ce=J?2:q?q.auth===`none`?0:1:+!!Y,X=J?h(`setup.h.done`):q?q.version===null?h(`setup.h.install`,{name:q.name}):q.auth===`none`?h(`setup.h.signIn`,{name:q.name}):h(`setup.h.test`):h(Y?`setup.h.test`:`setup.h.keys`),Z=re.site?i.data?.site:null,Q=K!==null&&!D,$=P.isPending?P.variables??K:K;return(0,S.jsxs)(`div`,{className:`flex min-h-dvh flex-col px-6 text-white sm:px-10`,style:ie,children:[(0,S.jsxs)(`header`,{className:`flex items-center justify-between pt-6 sm:pt-8`,children:[(0,S.jsx)(L,{}),(0,S.jsx)(g,{ink:w})]}),(0,S.jsxs)(`main`,{className:`relative mx-auto flex w-full max-w-6xl flex-1 flex-col pt-6 pb-10 lg:pt-[6vh]`,children:[(0,S.jsx)(`div`,{"aria-hidden":`true`,className:m(`absolute top-6 left-1/2 z-10 origin-top -translate-x-1/2 transition-[opacity,scale,left] duration-500 motion-reduce:transition-none lg:top-[calc(6vh+5.25rem)] lg:origin-center lg:translate-x-0`,k,K?`lg:pointer-events-none lg:left-[calc(50%-560px)] lg:scale-75 lg:opacity-0`:`lg:left-[calc(50%-508px)] lg:scale-100 lg:opacity-100`,Q?`max-lg:pointer-events-none max-lg:scale-[0.4] max-lg:opacity-0`:`max-lg:scale-[0.6] max-lg:opacity-100`),children:(0,S.jsx)(`div`,{className:`animate-rise`,children:(0,S.jsx)(a,{kind:`drop`,size:ae,fluffy:!0,coat:`fur`})})}),(0,S.jsx)(`div`,{"aria-hidden":`true`,className:m(`shrink-0 transition-[height] duration-500 motion-reduce:transition-none lg:h-0`,k,Q?`max-lg:h-0`:`max-lg:h-[148px]`)}),(0,S.jsxs)(`div`,{className:`flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-14`,children:[(0,S.jsxs)(`section`,{className:m(`flex w-full shrink-0 animate-rise flex-col lg:w-[32rem] lg:transition-[margin] lg:duration-700 motion-reduce:transition-none`,k,K?`lg:ml-0`:`lg:ml-[calc(50%-16rem)]`,Q?`max-lg:hidden`:``),children:[(0,S.jsxs)(`div`,{className:`flex flex-col lg:min-h-[6.5rem]`,children:[(0,S.jsx)(`p`,{className:m(A,`font-medium text-[12px] text-white/70 uppercase tracking-[0.16em]`,K?M:j),children:h(`setup.title`)}),(0,S.jsx)(`h1`,{className:m(A,`mt-2 font-display font-semibold text-[26px] leading-[1.08] tracking-[-0.02em] sm:text-[28px]`,K?M:j),children:h(`setup.source`)}),(0,S.jsx)(`p`,{className:m(A,`mt-2.5 text-[15px] text-white/75 leading-relaxed`,K?M:j),children:h(`setup.sub`)})]}),(0,S.jsxs)(`div`,{className:`mt-5 flex flex-col gap-2.5`,children:[W.map((e,t)=>(0,S.jsx)(R,{selected:$===e.id,title:e.name,description:h(`harness.desc.${e.id}`),badge:t===0?h(`setup.recommended`):void 0,note:e.version===null?h(`harness.notInstalled`):e.auth===`subscription`?h(`harness.ready`):void 0,onPick:()=>P.mutate(e.id)},e.id)),(0,S.jsx)(R,{selected:$===`own`,title:h(`local.sourceOwn`),description:h(`setup.ownDesc`),onPick:()=>P.mutate(`own`)})]}),(0,S.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-center gap-x-2 gap-y-1 text-[13px] text-white/60`,children:[(0,S.jsx)(`span`,{children:G.length?null:h(`setup.noHarness`)}),(0,S.jsxs)(ne,{variant:`ghost`,size:`sm`,busy:V.isPending,onClick:()=>V.mutate(),children:[(0,S.jsx)(te,{className:`size-3.5`}),` `,h(`local.recheck`)]})]})]}),K?(0,S.jsxs)(`section`,{className:m(`min-w-0 flex-1 animate-settle`,D?`max-lg:hidden`:``),children:[(0,S.jsxs)(`button`,{type:`button`,onClick:()=>{O(!0),N()},className:`-ml-1.5 mb-5 inline-flex items-center gap-1.5 rounded-full px-1.5 py-1 text-[14px] text-white/80 transition hover:text-white lg:hidden`,children:[(0,S.jsx)(ee,{className:`size-4`}),` `,h(`run.back`)]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{"aria-hidden":`true`,className:`absolute top-6 right-2 z-10`,children:(0,S.jsx)(a,{kind:oe[K],size:120,fluffy:!0,coat:`fur`})}),(0,S.jsxs)(`div`,{className:`min-h-[6.5rem]`,children:[(0,S.jsx)(z,{name:q?.name??h(`local.sourceOwn`),at:ce,done:J}),(0,S.jsx)(`h2`,{className:`mt-2 animate-rise pr-32 font-display font-semibold text-[clamp(28px,3vw,40px)] leading-[1.06] tracking-[-0.03em]`,children:X},X)]}),(0,S.jsx)(`div`,{className:`mt-5 rounded-2xl bg-white/[0.07] p-5 ring-1 ring-white/12 sm:p-6`,children:q?(0,S.jsx)(v,{me:e.data,id:q.id,autoTest:!J}):(0,S.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,S.jsx)(y,{models:H}),(0,S.jsx)(_,{})]})}),(0,S.jsxs)(`div`,{className:`mt-9`,children:[J?(0,S.jsxs)(`p`,{className:`mb-3 flex animate-rise items-center gap-2 font-medium text-[15px]`,style:{color:E},children:[(0,S.jsx)(p,{className:`size-4`,strokeWidth:3}),h(`setup.ready`)]}):null,(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,S.jsxs)(`button`,{type:`button`,disabled:!J,onClick:()=>n(`/`,{replace:!0}),className:m(`group inline-flex h-12 items-center gap-2.5 rounded-full px-6 font-semibold text-[16px] transition-[background-color,color,box-shadow,filter] duration-300`,J?`shadow-[0_6px_24px_oklch(88%_0.17_150/0.35)] hover:brightness-105`:`cursor-not-allowed bg-white/20 text-white/65`),style:J?{background:E,color:se}:void 0,children:[h(`setup.done`),(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`transition-transform group-enabled:group-hover:translate-x-0.5`,children:`→`})]}),J?null:(0,S.jsx)(`span`,{className:`text-[13px] text-white/65`,children:h(`setup.untilWorks`)})]})]})]})]},K):null]})]}),(0,S.jsxs)(`footer`,{className:`mx-auto flex w-full max-w-6xl items-center justify-between gap-4 pb-6 text-[12px] text-white/55 sm:pb-8`,children:[(0,S.jsxs)(`span`,{children:[`© `,new Date().getFullYear(),` engenty · `,h(`setup.local`)]}),(0,S.jsxs)(`span`,{className:`flex items-center gap-5`,children:[Z?(0,S.jsx)(B,{href:Z,children:new URL(Z).host}):null,(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`size-[3px]`,style:{background:T}})]})]})]})}export{V as SetupPage};
1
+ import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{O as r,_ as i,d as a,j as o,m as s,n as c,nt as l}from"./api-9sHuNTkp.js";import{d as u,l as d}from"./session-CJGuo1Tv.js";import{t as ee}from"./arrow-left-hTN1VoH1.js";import{t as f}from"./arrow-right-6FyN3e7D.js";import{t as p}from"./check-CUpby_J9.js";import{p as te}from"./definition-DndaH5Ow.js";import{h as m,t as ne,y as h}from"./ui-iTYHqwvY.js";import{a as g}from"./index-VsRgvimv.js";import{a as _,i as v,n as y,o as re,r as b}from"./LocalRuntime-Brkvbzzg.js";var x=e(t(),1),S=e(n(),1),C=`oklch(50% 0.2 262)`,w=`oklch(32% 0.15 262)`,T=`oklch(90% 0.1 80)`,E=`oklch(88% 0.17 150)`,D=`oklch(88% 0.14 80)`,O=`rgb(255 255 255 / 0.38)`,ie={"--ink-2":`oklch(96% 0.02 262)`,"--ink-3":`oklch(90% 0.035 262)`,"--ink-4":`oklch(82% 0.05 262)`,"--moss":`oklch(90% 0.14 150)`,"--rose":`oklch(89% 0.09 45)`},k=`ease-[cubic-bezier(0.3,0.7,0.2,1)]`,ae=220,oe={codex:`dome`,claude:`oval`,gemini:`wedge`,cursor:`sprout`,own:`bean`,account:`drop`},se=`oklch(27% 0.09 150)`,A=`relative w-fit max-w-full transition-[left,translate] duration-700 ease-[cubic-bezier(0.3,0.7,0.2,1)] motion-reduce:transition-none`,j=`left-1/2 -translate-x-1/2 text-center`,M=`max-lg:left-1/2 max-lg:-translate-x-1/2 max-lg:text-center lg:left-0 lg:translate-x-0 lg:text-left`;function N(){window.matchMedia(`(max-width: 1023px)`).matches&&window.scrollTo({top:0})}var P=`wizards.setup.own`;function F(){try{return sessionStorage.getItem(P)===`1`}catch{return!1}}function I(e){try{e?sessionStorage.setItem(P,`1`):sessionStorage.removeItem(P)}catch{}}function L(){return(0,S.jsxs)(`span`,{className:`inline-flex items-center gap-2.5`,children:[(0,S.jsx)(i,{size:28}),(0,S.jsxs)(`span`,{className:`font-display font-semibold text-[17px] tracking-tight`,children:[`engenty`,(0,S.jsx)(`span`,{className:`mr-[0.09em] ml-[0.06em]`,style:{color:T},children:`.`}),(0,S.jsx)(`span`,{className:`font-normal text-white/70`,children:`wizards`})]})]})}function R({selected:e,title:t,description:n,badge:r,note:i,onPick:a}){return(0,S.jsxs)(`button`,{type:`button`,onClick:a,"aria-pressed":e,className:m(`group relative flex w-full items-center gap-3 rounded-2xl px-4 py-3 text-left transition-[background-color,color,box-shadow] duration-300`,e?`bg-white shadow-elevated`:`bg-white/10 ring-1 ring-white/15 hover:bg-white/15`),style:e?{color:w}:void 0,children:[r?(0,S.jsx)(`span`,{className:`absolute -top-2.5 right-4 rounded-full px-2.5 py-[3px] font-semibold text-[11px] leading-none tracking-wide shadow-[0_2px_8px_oklch(0%_0_0/0.22)]`,style:{background:T,color:w},children:r}):null,(0,S.jsx)(`span`,{className:m(`flex size-5 shrink-0 items-center justify-center rounded-full border transition-colors duration-300`,e?`border-transparent`:`border-white/40`),style:e?{background:w}:void 0,children:e?(0,S.jsx)(p,{className:`size-3.5 text-white`}):null}),(0,S.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`span`,{className:`block font-medium text-[15px]`,children:t}),(0,S.jsx)(`span`,{className:m(`mt-0.5 block truncate text-[13px]`,e?`opacity-70`:`text-white/65`),children:n})]}),i?(0,S.jsx)(`span`,{className:m(`shrink-0 text-[12px]`,e?`opacity-70`:`text-white/65`),children:i}):null,(0,S.jsx)(f,{className:m(`size-4 shrink-0 transition`,e?`opacity-70`:`text-white/40 group-hover:translate-x-0.5 group-hover:text-white/80`)})]})}function z({name:e,at:t,done:n}){let r=[h(`setup.stage.connect`),h(`setup.stage.test`),h(`setup.stage.done`)],i=n?r.length:t+1;return(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-4 gap-y-2 font-medium text-[12px] uppercase tracking-[0.14em]`,children:[(0,S.jsx)(`span`,{className:`text-white/70`,children:e}),(0,S.jsx)(`ol`,{className:`flex flex-wrap items-center gap-x-3 gap-y-2`,children:r.map((e,r)=>{let i=n||r<t;return(0,S.jsxs)(`li`,{"aria-current":!i&&r===t?`step`:void 0,className:`flex items-center gap-1 transition-colors duration-500`,style:{color:i?E:r===t?D:O},children:[i?(0,S.jsx)(p,{className:`size-3.5`,strokeWidth:3}):null,e]},e)})}),(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`flex gap-1.5`,children:r.map((e,t)=>(0,S.jsx)(`span`,{className:`h-[3px] w-5 rounded-full transition-colors duration-500`,style:{background:t<i?n?E:D:`rgb(255 255 255 / 0.22)`}},e))})]})}function B({href:e,children:t}){return(0,S.jsx)(`a`,{href:e,target:`_blank`,rel:`noreferrer`,className:`transition hover:text-white`,onClick:t=>{t.preventDefault(),b(e)},children:t})}function V(){s(C);let e=d(),t=l(),n=r(),i=o({queryKey:[`config`],queryFn:()=>c.get(`/api/config`)}),[f,b]=(0,x.useState)(F),[D,O]=(0,x.useState)(!1),P=u({mutationFn:e=>c.put(`/api/studio/local/models`,{source:e}),onSuccess:async(e,n)=>{await t.invalidateQueries({queryKey:[`me`]}),b(!0),O(!1),N(),I(n===`own`)}}),V=u({mutationFn:()=>Promise.all((e.data?.harnesses??[]).map(e=>c.post(`/api/studio/local/harness/${e.id}/detect`))),onSuccess:()=>t.invalidateQueries({queryKey:[`me`]})});if(!e.data?.models)return null;let H=e.data.models,U=e=>(e.version===null?2:0)+ +!e.app,W=[...e.data.harnesses].sort((e,t)=>U(e)-U(t)),G=W.filter(e=>e.version!==null),K=f||e.data.setupDone||H.source!==`own`?H.source:null,q=e.data.harnesses.find(e=>e.id===K),J=e.data.setupDone,Y=Object.values(H.keys).some(Boolean),ce=J?2:q?q.auth===`none`?0:1:+!!Y,X=J?h(`setup.h.done`):q?q.version===null?h(`setup.h.install`,{name:q.name}):q.auth===`none`?h(`setup.h.signIn`,{name:q.name}):h(`setup.h.test`):h(Y?`setup.h.test`:`setup.h.keys`),Z=re.site?i.data?.site:null,Q=K!==null&&!D,$=P.isPending?P.variables??K:K;return(0,S.jsxs)(`div`,{className:`flex min-h-dvh flex-col px-6 text-white sm:px-10`,style:ie,children:[(0,S.jsxs)(`header`,{className:`flex items-center justify-between pt-6 sm:pt-8`,children:[(0,S.jsx)(L,{}),(0,S.jsx)(g,{ink:w})]}),(0,S.jsxs)(`main`,{className:`relative mx-auto flex w-full max-w-6xl flex-1 flex-col pt-6 pb-10 lg:pt-[6vh]`,children:[(0,S.jsx)(`div`,{"aria-hidden":`true`,className:m(`absolute top-6 left-1/2 z-10 origin-top -translate-x-1/2 transition-[opacity,scale,left] duration-500 motion-reduce:transition-none lg:top-[calc(6vh+5.25rem)] lg:origin-center lg:translate-x-0`,k,K?`lg:pointer-events-none lg:left-[calc(50%-560px)] lg:scale-75 lg:opacity-0`:`lg:left-[calc(50%-508px)] lg:scale-100 lg:opacity-100`,Q?`max-lg:pointer-events-none max-lg:scale-[0.4] max-lg:opacity-0`:`max-lg:scale-[0.6] max-lg:opacity-100`),children:(0,S.jsx)(`div`,{className:`animate-rise`,children:(0,S.jsx)(a,{kind:`drop`,size:ae,fluffy:!0,coat:`fur`})})}),(0,S.jsx)(`div`,{"aria-hidden":`true`,className:m(`shrink-0 transition-[height] duration-500 motion-reduce:transition-none lg:h-0`,k,Q?`max-lg:h-0`:`max-lg:h-[148px]`)}),(0,S.jsxs)(`div`,{className:`flex flex-col gap-10 lg:flex-row lg:items-start lg:gap-14`,children:[(0,S.jsxs)(`section`,{className:m(`flex w-full shrink-0 animate-rise flex-col lg:w-[32rem] lg:transition-[margin] lg:duration-700 motion-reduce:transition-none`,k,K?`lg:ml-0`:`lg:ml-[calc(50%-16rem)]`,Q?`max-lg:hidden`:``),children:[(0,S.jsxs)(`div`,{className:`flex flex-col lg:min-h-[6.5rem]`,children:[(0,S.jsx)(`p`,{className:m(A,`font-medium text-[12px] text-white/70 uppercase tracking-[0.16em]`,K?M:j),children:h(`setup.title`)}),(0,S.jsx)(`h1`,{className:m(A,`mt-2 font-display font-semibold text-[26px] leading-[1.08] tracking-[-0.02em] sm:text-[28px]`,K?M:j),children:h(`setup.source`)}),(0,S.jsx)(`p`,{className:m(A,`mt-2.5 text-[15px] text-white/75 leading-relaxed`,K?M:j),children:h(`setup.sub`)})]}),(0,S.jsxs)(`div`,{className:`mt-5 flex flex-col gap-2.5`,children:[W.map((e,t)=>(0,S.jsx)(R,{selected:$===e.id,title:e.name,description:h(`harness.desc.${e.id}`),badge:t===0?h(`setup.recommended`):void 0,note:e.version===null?h(`harness.notInstalled`):e.auth===`subscription`?h(`harness.ready`):void 0,onPick:()=>P.mutate(e.id)},e.id)),(0,S.jsx)(R,{selected:$===`own`,title:h(`local.sourceOwn`),description:h(`setup.ownDesc`),onPick:()=>P.mutate(`own`)})]}),(0,S.jsxs)(`div`,{className:`mt-3 flex flex-wrap items-center justify-center gap-x-2 gap-y-1 text-[13px] text-white/60`,children:[(0,S.jsx)(`span`,{children:G.length?null:h(`setup.noHarness`)}),(0,S.jsxs)(ne,{variant:`ghost`,size:`sm`,busy:V.isPending,onClick:()=>V.mutate(),children:[(0,S.jsx)(te,{className:`size-3.5`}),` `,h(`local.recheck`)]})]})]}),K?(0,S.jsxs)(`section`,{className:m(`min-w-0 flex-1 animate-settle`,D?`max-lg:hidden`:``),children:[(0,S.jsxs)(`button`,{type:`button`,onClick:()=>{O(!0),N()},className:`-ml-1.5 mb-5 inline-flex items-center gap-1.5 rounded-full px-1.5 py-1 text-[14px] text-white/80 transition hover:text-white lg:hidden`,children:[(0,S.jsx)(ee,{className:`size-4`}),` `,h(`run.back`)]}),(0,S.jsxs)(`div`,{className:`relative`,children:[(0,S.jsx)(`div`,{"aria-hidden":`true`,className:`absolute top-6 right-2 z-10`,children:(0,S.jsx)(a,{kind:oe[K],size:120,fluffy:!0,coat:`fur`})}),(0,S.jsxs)(`div`,{className:`min-h-[6.5rem]`,children:[(0,S.jsx)(z,{name:q?.name??h(`local.sourceOwn`),at:ce,done:J}),(0,S.jsx)(`h2`,{className:`mt-2 animate-rise pr-32 font-display font-semibold text-[clamp(28px,3vw,40px)] leading-[1.06] tracking-[-0.03em]`,children:X},X)]}),(0,S.jsx)(`div`,{className:`mt-5 rounded-2xl bg-white/[0.07] p-5 ring-1 ring-white/12 sm:p-6`,children:q?(0,S.jsx)(v,{me:e.data,id:q.id,autoTest:!J}):(0,S.jsxs)(`div`,{className:`flex flex-col gap-5`,children:[(0,S.jsx)(y,{models:H}),(0,S.jsx)(_,{})]})}),(0,S.jsxs)(`div`,{className:`mt-9`,children:[J?(0,S.jsxs)(`p`,{className:`mb-3 flex animate-rise items-center gap-2 font-medium text-[15px]`,style:{color:E},children:[(0,S.jsx)(p,{className:`size-4`,strokeWidth:3}),h(`setup.ready`)]}):null,(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,S.jsxs)(`button`,{type:`button`,disabled:!J,onClick:()=>n(`/`,{replace:!0}),className:m(`group inline-flex h-12 items-center gap-2.5 rounded-full px-6 font-semibold text-[16px] transition-[background-color,color,box-shadow,filter] duration-300`,J?`shadow-[0_6px_24px_oklch(88%_0.17_150/0.35)] hover:brightness-105`:`cursor-not-allowed bg-white/20 text-white/65`),style:J?{background:E,color:se}:void 0,children:[h(`setup.done`),(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`transition-transform group-enabled:group-hover:translate-x-0.5`,children:`→`})]}),J?null:(0,S.jsx)(`span`,{className:`text-[13px] text-white/65`,children:h(`setup.untilWorks`)})]})]})]})]},K):null]})]}),(0,S.jsxs)(`footer`,{className:`mx-auto flex w-full max-w-6xl items-center justify-between gap-4 pb-6 text-[12px] text-white/55 sm:pb-8`,children:[(0,S.jsxs)(`span`,{children:[`© `,new Date().getFullYear(),` engenty · `,h(`setup.local`)]}),(0,S.jsxs)(`span`,{className:`flex items-center gap-5`,children:[Z?(0,S.jsx)(B,{href:Z,children:new URL(Z).host}):null,(0,S.jsx)(`span`,{"aria-hidden":`true`,className:`size-[3px]`,style:{background:T}})]})]})]})}export{V as SetupPage};
@@ -1 +1 @@
1
- import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{a as r,d as i,h as a,j as o,k as s,l as c,n as l,r as u}from"./api-KMi35npD.js";import{t as d}from"./arrow-right-6FyN3e7D.js";import{i as f,t as p}from"./outputs-COE_nvAw.js";import{_ as m,d as h,n as g,t as _,y as v}from"./ui-Cs6lpsmj.js";import{BrandHeader as y,useBrandAccent as b}from"./PublicRunner-BwtoEVlE.js";var x=e(t(),1),S=e(n(),1);function C(){let{token:e}=s(),t=o({queryKey:[`share`,e],queryFn:()=>l.get(`/api/shares/${e}`),retry:(e,t)=>u(t)&&e<3});if(b(t.data?.brand.accent),a(t.data?.wizard.avatar),(0,x.useEffect)(()=>{t.data&&(document.title=`${t.data.title} · ${t.data.wizard.title}`)},[t.data]),t.isLoading)return(0,S.jsx)(`div`,{className:`flex min-h-dvh items-center justify-center text-ink-4`,children:(0,S.jsx)(h,{})});let n=t.data;if(!n)return(0,S.jsxs)(`div`,{className:`flex min-h-dvh flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,S.jsx)(i,{kind:`pebble`,size:80}),(0,S.jsx)(`p`,{className:`max-w-sm text-ink-3`,children:v(u(t.error)?`common.offline`:`sharePage.gone`)}),u(t.error)?(0,S.jsx)(_,{variant:`secondary`,onClick:()=>void t.refetch(),children:v(`common.retry`)}):null]});let C=`/api/shares/${n.token}`,w=e=>new Intl.DateTimeFormat(m,{dateStyle:`long`}).format(new Date(e));return(0,S.jsxs)(`div`,{className:`flex min-h-dvh flex-col`,children:[(0,S.jsx)(y,{brand:n.brand}),(0,S.jsxs)(`main`,{className:`mx-auto w-full max-w-3xl flex-1 animate-rise px-4 pt-6 pb-12 sm:px-6`,children:[(0,S.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-center gap-4`,children:[(0,S.jsx)(i,{kind:n.wizard.avatar,size:64}),(0,S.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`p`,{className:`text-[13px] text-ink-4`,children:n.expiresAt?v(`sharePage.until`,{date:w(n.expiresAt)}):v(`sharePage.shared`,{date:w(n.createdAt)})}),(0,S.jsx)(`h1`,{className:`font-display font-semibold text-[28px] leading-tight tracking-tight sm:text-[32px]`,children:n.title}),n.message?(0,S.jsx)(`p`,{className:`mt-1 text-[15px] text-ink-3`,children:n.message}):null]})]}),(0,S.jsx)(`div`,{className:`flex flex-col gap-6`,children:n.shown.map(({step:e,output:t,formats:n,label:r})=>(0,S.jsxs)(g,{className:`p-4 sm:p-5`,children:[(0,S.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,S.jsx)(`h2`,{className:`font-display font-semibold text-[17px]`,children:r??e.title}),(0,S.jsx)(p,{base:C,stepId:e.id,formats:n,title:r??e.title})]}),(0,S.jsx)(f,{base:C,step:e,output:t})]},e.id))}),n.wizardUrl?(0,S.jsxs)(`a`,{href:n.wizardUrl,className:`mt-10 flex items-center gap-4 rounded-2xl bg-card p-5 shadow-soft ring-1 ring-border-soft transition hover:shadow-elevated`,children:[(0,S.jsx)(i,{kind:n.wizard.avatar,size:44,interactive:!1}),(0,S.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`div`,{className:`font-display font-semibold text-[16px]`,children:n.wizard.title}),n.wizard.description?(0,S.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:n.wizard.description}):null]}),(0,S.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 font-medium text-[14px] text-ember-strong`,children:[v(`sharePage.own`),` `,(0,S.jsx)(d,{className:`size-4`})]})]}):null]}),(0,S.jsx)(`footer`,{className:`safe-bottom pt-6 text-center text-[12px] text-ink-4`,children:(0,S.jsx)(`a`,{href:`${r}/`,className:`inline-block py-3.5 hover:text-ink-2`,children:v(`run.madeWith`).replace(`engenty wizards`,c.name)})})]})}export{C as SharePage};
1
+ import{a as e,n as t,t as n}from"./jsx-runtime-D3jfb0Ew.js";import{a as r,d as i,h as a,j as o,k as s,l as c,n as l,r as u}from"./api-9sHuNTkp.js";import{t as d}from"./arrow-right-6FyN3e7D.js";import{i as f,t as p}from"./outputs-boPx5ngv.js";import{_ as m,d as h,n as g,t as _,y as v}from"./ui-iTYHqwvY.js";import{BrandHeader as y,useBrandAccent as b}from"./PublicRunner-Bn1g6HG9.js";var x=e(t(),1),S=e(n(),1);function C(){let{token:e}=s(),t=o({queryKey:[`share`,e],queryFn:()=>l.get(`/api/shares/${e}`),retry:(e,t)=>u(t)&&e<3});if(b(t.data?.brand.accent),a(t.data?.wizard.avatar),(0,x.useEffect)(()=>{t.data&&(document.title=`${t.data.title} · ${t.data.wizard.title}`)},[t.data]),t.isLoading)return(0,S.jsx)(`div`,{className:`flex min-h-dvh items-center justify-center text-ink-4`,children:(0,S.jsx)(h,{})});let n=t.data;if(!n)return(0,S.jsxs)(`div`,{className:`flex min-h-dvh flex-col items-center justify-center gap-4 px-6 text-center`,children:[(0,S.jsx)(i,{kind:`pebble`,size:80}),(0,S.jsx)(`p`,{className:`max-w-sm text-ink-3`,children:v(u(t.error)?`common.offline`:`sharePage.gone`)}),u(t.error)?(0,S.jsx)(_,{variant:`secondary`,onClick:()=>void t.refetch(),children:v(`common.retry`)}):null]});let C=`/api/shares/${n.token}`,w=e=>new Intl.DateTimeFormat(m,{dateStyle:`long`}).format(new Date(e));return(0,S.jsxs)(`div`,{className:`flex min-h-dvh flex-col`,children:[(0,S.jsx)(y,{brand:n.brand}),(0,S.jsxs)(`main`,{className:`mx-auto w-full max-w-3xl flex-1 animate-rise px-4 pt-6 pb-12 sm:px-6`,children:[(0,S.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-center gap-4`,children:[(0,S.jsx)(i,{kind:n.wizard.avatar,size:64}),(0,S.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`p`,{className:`text-[13px] text-ink-4`,children:n.expiresAt?v(`sharePage.until`,{date:w(n.expiresAt)}):v(`sharePage.shared`,{date:w(n.createdAt)})}),(0,S.jsx)(`h1`,{className:`font-display font-semibold text-[28px] leading-tight tracking-tight sm:text-[32px]`,children:n.title}),n.message?(0,S.jsx)(`p`,{className:`mt-1 text-[15px] text-ink-3`,children:n.message}):null]})]}),(0,S.jsx)(`div`,{className:`flex flex-col gap-6`,children:n.shown.map(({step:e,output:t,formats:n,label:r})=>(0,S.jsxs)(g,{className:`p-4 sm:p-5`,children:[(0,S.jsxs)(`div`,{className:`mb-3 flex flex-wrap items-center justify-between gap-3`,children:[(0,S.jsx)(`h2`,{className:`font-display font-semibold text-[17px]`,children:r??e.title}),(0,S.jsx)(p,{base:C,stepId:e.id,formats:n,title:r??e.title})]}),(0,S.jsx)(f,{base:C,step:e,output:t})]},e.id))}),n.wizardUrl?(0,S.jsxs)(`a`,{href:n.wizardUrl,className:`mt-10 flex items-center gap-4 rounded-2xl bg-card p-5 shadow-soft ring-1 ring-border-soft transition hover:shadow-elevated`,children:[(0,S.jsx)(i,{kind:n.wizard.avatar,size:44,interactive:!1}),(0,S.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,S.jsx)(`div`,{className:`font-display font-semibold text-[16px]`,children:n.wizard.title}),n.wizard.description?(0,S.jsx)(`div`,{className:`truncate text-[14px] text-ink-3`,children:n.wizard.description}):null]}),(0,S.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 font-medium text-[14px] text-ember-strong`,children:[v(`sharePage.own`),` `,(0,S.jsx)(d,{className:`size-4`})]})]}):null]}),(0,S.jsx)(`footer`,{className:`safe-bottom pt-6 text-center text-[12px] text-ink-4`,children:(0,S.jsx)(`a`,{href:`${r}/`,className:`inline-block py-3.5 hover:text-ink-2`,children:v(`run.madeWith`).replace(`engenty wizards`,c.name)})})]})}export{C as SharePage};