@volter/world-platform 2.0.34 → 2.0.36

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.
@@ -232,6 +232,6 @@ You might need to use a local HTTP server (instead of file://): https://react.de
232
232
  <%s {...props} />
233
233
  React keys must be passed directly to JSX without using spread:
234
234
  let props = %s;
235
- <%s key={someKey} {...props} />`,p1,U2,U0,U2),d1[U2+p1]=!0)}if(U2=null,c1!==void 0&&(A(c1),U2=""+c1),k(P1)&&(A(P1.key),U2=""+P1.key),"key"in P1){c1={};for(var y0 in P1)y0!=="key"&&(c1[y0]=P1[y0])}else c1=P1;return U2&&I(c1,typeof d==="function"?d.displayName||d.name||"Unknown":d),u(d,U2,c1,w(),n1,Q4)}function W(d){v(d)?d._store&&(d._store.validated=1):typeof d==="object"&&d!==null&&d.$$typeof===X1&&(d._payload.status==="fulfilled"?v(d._payload.value)&&d._payload.value._store&&(d._payload.value._store.validated=1):d._store&&(d._store.validated=1))}function v(d){return typeof d==="object"&&d!==null&&d.$$typeof===m}var m=Symbol.for("react.transitional.element"),V=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),i=Symbol.for("react.context"),_1=Symbol.for("react.forward_ref"),U1=Symbol.for("react.suspense"),t=Symbol.for("react.suspense_list"),n=Symbol.for("react.memo"),X1=Symbol.for("react.lazy"),i1=Symbol.for("react.activity"),j=Symbol.for("react.client.reference"),y=X6.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y1=Object.prototype.hasOwnProperty,R1=Array.isArray,B2=console.createTask?console.createTask:function(){return null};X6={react_stack_bottom_frame:function(d){return d()}};var z1,W1={},q1=X6.react_stack_bottom_frame.bind(X6,T)(),u1=B2(O(T)),d1={};OR.Fragment=c,OR.jsxDEV=function(d,P1,c1,p1){var n1=1e4>y.recentlyCreatedOwnerStacks++;return S(d,P1,c1,p1,n1?Error("react-stack-top-frame"):q1,n1?B2(O(d)):u1)}})()});var x=G0(J8(),1),vq=G0(Bq(),1);var S2=G0(J8(),1);var Qq={x:{title:"X",fill:"currentColor",d:"M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"},youtube:{title:"YouTube",fill:"#FF0000",d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"},tiktok:{title:"TikTok",fill:"currentColor",d:"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"},discord:{title:"Discord",fill:"#5865F2",d:"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"},resend:{title:"Resend",fill:"currentColor",d:"M2.023 0v24h5.553v-8.434h2.998L15.326 24h6.65l-5.372-9.258a7.652 7.652 0 0 0 3.316-3.016c.709-1.21 1.062-2.57 1.062-4.08 0-1.462-.353-2.767-1.062-3.91-.709-1.165-1.692-2.079-2.95-2.742C15.737.331 14.355 0 12.823 0Zm5.553 4.87h4.219c.731 0 1.349.125 1.851.376.526.252.925.618 1.2 1.098.274.457.412.994.412 1.611S15.132 9.12 14.88 9.6c-.229.48-.572.856-1.03 1.13-.434.252-.948.38-1.542.38H7.576Z"},linkedin:{title:"LinkedIn",fill:"#0A66C2",d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"},reddit:{title:"Reddit",fill:"#FF4500",d:"M12 0C5.373 0 0 5.373 0 12c0 3.314 1.343 6.314 3.515 8.485l-2.286 2.286C.775 23.225 1.097 24 1.738 24H12c6.627 0 12-5.373 12-12S18.627 0 12 0Zm4.388 3.199c1.104 0 1.999.895 1.999 1.999 0 1.105-.895 2-1.999 2-.946 0-1.739-.657-1.947-1.539v.002c-1.147.162-2.032 1.15-2.032 2.341v.007c1.776.067 3.4.567 4.686 1.363.473-.363 1.064-.58 1.707-.58 1.547 0 2.802 1.254 2.802 2.802 0 1.117-.655 2.081-1.601 2.531-.088 3.256-3.637 5.876-7.997 5.876-4.361 0-7.905-2.617-7.998-5.87-.954-.447-1.614-1.415-1.614-2.538 0-1.548 1.255-2.802 2.803-2.802.645 0 1.239.218 1.712.585 1.275-.79 2.881-1.291 4.64-1.365v-.01c0-1.663 1.263-3.034 2.88-3.207.188-.911.993-1.595 1.959-1.595Zm-8.085 8.376c-.784 0-1.459.78-1.506 1.797-.047 1.016.64 1.429 1.426 1.429.786 0 1.371-.369 1.418-1.385.047-1.017-.553-1.841-1.338-1.841Zm7.406 0c-.786 0-1.385.824-1.338 1.841.047 1.017.634 1.385 1.418 1.385.785 0 1.473-.413 1.426-1.429-.046-1.017-.721-1.797-1.506-1.797Zm-3.703 4.013c-.974 0-1.907.048-2.77.135-.147.015-.241.168-.183.305.483 1.154 1.622 1.964 2.953 1.964 1.33 0 2.47-.81 2.953-1.964.057-.137-.037-.29-.184-.305-.863-.087-1.795-.135-2.769-.135Z"},bluesky:{title:"Bluesky",fill:"#0285FF",d:"M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z"},instagram:{title:"Instagram",fill:"#FF0069",d:"M7.0301.084c-1.2768.0602-2.1487.264-2.911.5634-.7888.3075-1.4575.72-2.1228 1.3877-.6652.6677-1.075 1.3368-1.3802 2.127-.2954.7638-.4956 1.6365-.552 2.914-.0564 1.2775-.0689 1.6882-.0626 4.947.0062 3.2586.0206 3.6671.0825 4.9473.061 1.2765.264 2.1482.5635 2.9107.308.7889.72 1.4573 1.388 2.1228.6679.6655 1.3365 1.0743 2.1285 1.38.7632.295 1.6361.4961 2.9134.552 1.2773.056 1.6884.069 4.9462.0627 3.2578-.0062 3.668-.0207 4.9478-.0814 1.28-.0607 2.147-.2652 2.9098-.5633.7889-.3086 1.4578-.72 2.1228-1.3881.665-.6682 1.0745-1.3378 1.3795-2.1284.2957-.7632.4966-1.636.552-2.9124.056-1.2809.0692-1.6898.063-4.948-.0063-3.2583-.021-3.6668-.0817-4.9465-.0607-1.2797-.264-2.1487-.5633-2.9117-.3084-.7889-.72-1.4568-1.3876-2.1228C21.2982 1.33 20.628.9208 19.8378.6165 19.074.321 18.2017.1197 16.9244.0645 15.6471.0093 15.236-.005 11.977.0014 8.718.0076 8.31.0215 7.0301.0839m.1402 21.6932c-1.17-.0509-1.8053-.2453-2.2287-.408-.5606-.216-.96-.4771-1.3819-.895-.422-.4178-.6811-.8186-.9-1.378-.1644-.4234-.3624-1.058-.4171-2.228-.0595-1.2645-.072-1.6442-.079-4.848-.007-3.2037.0053-3.583.0607-4.848.05-1.169.2456-1.805.408-2.2282.216-.5613.4762-.96.895-1.3816.4188-.4217.8184-.6814 1.3783-.9003.423-.1651 1.0575-.3614 2.227-.4171 1.2655-.06 1.6447-.072 4.848-.079 3.2033-.007 3.5835.005 4.8495.0608 1.169.0508 1.8053.2445 2.228.408.5608.216.96.4754 1.3816.895.4217.4194.6816.8176.9005 1.3787.1653.4217.3617 1.056.4169 2.2263.0602 1.2655.0739 1.645.0796 4.848.0058 3.203-.0055 3.5834-.061 4.848-.051 1.17-.245 1.8055-.408 2.2294-.216.5604-.4763.96-.8954 1.3814-.419.4215-.8181.6811-1.3783.9-.4224.1649-1.0577.3617-2.2262.4174-1.2656.0595-1.6448.072-4.8493.079-3.2045.007-3.5825-.006-4.848-.0608M16.953 5.5864A1.44 1.44 0 1 0 18.39 4.144a1.44 1.44 0 0 0-1.437 1.4424M5.8385 12.012c.0067 3.4032 2.7706 6.1557 6.173 6.1493 3.4026-.0065 6.157-2.7701 6.1506-6.1733-.0065-3.4032-2.771-6.1565-6.174-6.1498-3.403.0067-6.156 2.771-6.1496 6.1738M8 12.0077a4 4 0 1 1 4.008 3.9921A3.9996 3.9996 0 0 1 8 12.0077"},github:{title:"GitHub",fill:"currentColor",d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"},stripe:{title:"Stripe",fill:"#635BFF",d:"M13.976 9.15c-2.172-.806-3.356-1.426-3.356-2.409 0-.831.683-1.305 1.901-1.305 2.227 0 4.515.858 6.09 1.631l.89-5.494C18.252.975 15.697 0 12.165 0 9.667 0 7.589.654 6.104 1.872 4.56 3.147 3.757 4.992 3.757 7.218c0 4.039 2.467 5.76 6.476 7.219 2.585.92 3.445 1.574 3.445 2.583 0 .98-.84 1.545-2.354 1.545-1.875 0-4.965-.921-6.99-2.109l-.9 5.555C5.175 22.99 8.385 24 11.714 24c2.641 0 4.843-.624 6.328-1.813 1.664-1.305 2.525-3.236 2.525-5.732 0-4.128-2.524-5.851-6.594-7.305h.003z"},slack:{title:"Slack",fill:"#4A154B",d:"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"},openai:{title:"OpenAI",fill:"#412991",d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"},anthropic:{title:"Anthropic",fill:"currentColor",d:"M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z"},twilio:{title:"Twilio",fill:"#F22F46",d:"M12 0C5.381-.008.008 5.352 0 11.971V12c0 6.64 5.359 12 12 12 6.64 0 12-5.36 12-12 0-6.641-5.36-12-12-12zm0 20.801c-4.846.015-8.786-3.904-8.801-8.75V12c-.014-4.846 3.904-8.786 8.75-8.801H12c4.847-.014 8.786 3.904 8.801 8.75V12c.015 4.847-3.904 8.786-8.75 8.801H12zm5.44-11.76c0 1.359-1.12 2.479-2.481 2.479-1.366-.007-2.472-1.113-2.479-2.479 0-1.361 1.12-2.481 2.479-2.481 1.361 0 2.481 1.12 2.481 2.481zm0 5.919c0 1.36-1.12 2.48-2.481 2.48-1.367-.008-2.473-1.114-2.479-2.48 0-1.359 1.12-2.479 2.479-2.479 1.361-.001 2.481 1.12 2.481 2.479zm-5.919 0c0 1.36-1.12 2.48-2.479 2.48-1.368-.007-2.475-1.113-2.481-2.48 0-1.359 1.12-2.479 2.481-2.479 1.358-.001 2.479 1.12 2.479 2.479zm0-5.919c0 1.359-1.12 2.479-2.479 2.479-1.367-.007-2.475-1.112-2.481-2.479 0-1.361 1.12-2.481 2.481-2.481 1.358 0 2.479 1.12 2.479 2.481z"},sendgrid:{title:"SendGrid",fill:"#51A9E3",d:"M.8 24h13.6c.88 0 1.6-.72 1.6-1.6v-4.8c0-.88-.72-1.6-1.6-1.6H9.6c-.88 0-1.6-.72-1.6-1.6V9.6C8 8.72 7.28 8 6.4 8H1.6C.72 8 0 8.72 0 9.6v13.6c0 .44.36.8.8.8zM23.2 0H9.6C8.72 0 8 .72 8 1.6v4.8C8 7.28 8.72 8 9.6 8h4.8c.88 0 1.6.72 1.6 1.6v4.8c0 .88.72 1.6 1.6 1.6h4.8c.88 0 1.6-.72 1.6-1.6V.8c0-.44-.36-.8-.8-.8Z"},mailgun:{title:"Mailgun",fill:"#F06B66",d:"M11.837 0c6.602 0 11.984 5.381 11.984 11.994-.017 2.99-3.264 4.84-5.844 3.331a3.805 3.805 0 0 1-.06-.035l-.055-.033-.022.055c-2.554 4.63-9.162 4.758-11.894.232-2.732-4.527.46-10.313 5.746-10.416a6.868 6.868 0 0 1 7.002 6.866 1.265 1.265 0 0 0 2.52 0c0-5.18-4.197-9.38-9.377-9.387C4.611 2.594.081 10.41 3.683 16.673c3.238 5.632 11.08 6.351 15.289 1.402l1.997 1.686A11.95 11.95 0 0 1 11.837 24C2.6 23.72-2.87 13.543 1.992 5.684A12.006 12.006 0 0 1 11.837 0Zm0 7.745c-3.276-.163-5.5 3.281-4.003 6.2a4.26 4.26 0 0 0 4.014 2.31c3.276-.171 5.137-3.824 3.35-6.575a4.26 4.26 0 0 0-3.36-1.935Zm0 2.53c1.324 0 2.152 1.433 1.49 2.58a1.72 1.72 0 0 1-1.49.86 1.72 1.72 0 1 1 0-3.44Z"},notion:{title:"Notion",fill:"currentColor",d:"M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z"},linear:{title:"Linear",fill:"#5E6AD2",d:"M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z"},jira:{title:"Jira",fill:"#0052CC",d:"M11.571 11.513H0a5.218 5.218 0 0 0 5.232 5.215h2.13v2.057A5.215 5.215 0 0 0 12.575 24V12.518a1.005 1.005 0 0 0-1.005-1.005zm5.723-5.756H5.736a5.215 5.215 0 0 0 5.215 5.214h2.129v2.058a5.218 5.218 0 0 0 5.215 5.214V6.758a1.001 1.001 0 0 0-1.001-1.001zM23.013 0H11.455a5.215 5.215 0 0 0 5.215 5.215h2.129v2.057A5.215 5.215 0 0 0 24 12.483V1.005A1.001 1.001 0 0 0 23.013 0Z"},hubspot:{title:"HubSpot",fill:"#FF7A59",d:"M18.164 7.93V5.084a2.198 2.198 0 001.267-1.978v-.067A2.2 2.2 0 0017.238.845h-.067a2.2 2.2 0 00-2.193 2.193v.067a2.196 2.196 0 001.252 1.973l.013.006v2.852a6.22 6.22 0 00-2.969 1.31l.012-.01-7.828-6.095A2.497 2.497 0 104.3 4.656l-.012.006 7.697 5.991a6.176 6.176 0 00-1.038 3.446c0 1.343.425 2.588 1.147 3.607l-.013-.02-2.342 2.343a1.968 1.968 0 00-.58-.095h-.002a2.033 2.033 0 102.033 2.033 1.978 1.978 0 00-.1-.595l.005.014 2.317-2.317a6.247 6.247 0 104.782-11.134l-.036-.005zm-.964 9.378a3.206 3.206 0 113.215-3.207v.002a3.206 3.206 0 01-3.207 3.207z"},paypal:{title:"PayPal",fill:"#003087",d:"M7.016 19.198h-4.2a.562.562 0 0 1-.555-.65L5.093.584A.692.692 0 0 1 5.776 0h7.222c3.417 0 5.904 2.488 5.846 5.5-.006.25-.027.5-.066.747A6.794 6.794 0 0 1 12.071 12H8.743a.69.69 0 0 0-.682.583l-.325 2.056-.013.083-.692 4.39-.015.087zM19.79 6.142c-.01.087-.01.175-.023.261a7.76 7.76 0 0 1-7.695 6.598H9.007l-.283 1.795-.013.083-.692 4.39-.134.843-.014.088H6.86l-.497 3.15a.562.562 0 0 0 .555.65h3.612c.34 0 .63-.249.683-.585l.952-6.031a.692.692 0 0 1 .683-.584h2.126a6.793 6.793 0 0 0 6.707-5.752c.306-1.95-.466-3.744-1.89-4.906z"},shopify:{title:"Shopify",fill:"#7AB55C",d:"M15.337 23.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.018-.116-.114-.192-.211-.192s-1.929-.136-1.929-.136-1.275-1.274-1.439-1.411c-.045-.037-.075-.057-.121-.074l-.914 21.104h.023zM11.71 11.305s-.81-.424-1.774-.424c-1.447 0-1.504.906-1.504 1.141 0 1.232 3.24 1.715 3.24 4.629 0 2.295-1.44 3.76-3.406 3.76-2.354 0-3.54-1.465-3.54-1.465l.646-2.086s1.245 1.066 2.28 1.066c.675 0 .975-.545.975-.932 0-1.619-2.654-1.694-2.654-4.359-.034-2.237 1.571-4.416 4.827-4.416 1.257 0 1.875.361 1.875.361l-.945 2.715-.02.01zM11.17.83c.136 0 .271.038.405.135-.984.465-2.064 1.639-2.508 3.992-.656.213-1.293.405-1.889.578C7.697 3.75 8.951.84 11.17.84V.83zm1.235 2.949v.135c-.754.232-1.583.484-2.394.736.466-1.777 1.333-2.645 2.085-2.971.193.501.309 1.176.309 2.1zm.539-2.234c.694.074 1.141.867 1.429 1.755-.349.114-.735.231-1.158.366v-.252c0-.752-.096-1.371-.271-1.871v.002zm2.992 1.289c-.02 0-.06.021-.078.021s-.289.075-.714.21c-.423-1.233-1.176-2.37-2.508-2.37h-.115C12.135.209 11.669 0 11.265 0 8.159 0 6.675 3.877 6.21 5.846c-1.194.365-2.063.636-2.16.674-.675.213-.694.232-.772.87-.075.462-1.83 14.063-1.83 14.063L15.009 24l.927-21.166z"},sentry:{title:"Sentry",fill:"#362D59",d:"M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 0 1 8.53 12.811h-2.221A13.301 13.301 0 0 0 5.784 9.814l-2.926 5.06a7.65 7.65 0 0 1 4.435 5.848H2.194a.365.365 0 0 1-.298-.534l1.413-2.402a5.16 5.16 0 0 0-1.614-.913L.296 19.275a2.182 2.182 0 0 0 .812 2.999 2.24 2.24 0 0 0 1.086.288h6.983a9.322 9.322 0 0 0-3.845-8.318l1.11-1.922a11.47 11.47 0 0 1 4.95 10.24h5.915a17.242 17.242 0 0 0-7.885-15.28l2.244-3.845a.37.37 0 0 1 .504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 0 1-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 0 0 1.922-3.31z"},vercel:{title:"Vercel",fill:"currentColor",d:"M24 22.525H0l12-21.05 12 21.05z"},supabase:{title:"Supabase",fill:"#3FCF8E",d:"M11.9 1.036c-.015-.986-1.26-1.41-1.874-.637L.764 12.05C-.33 13.427.65 15.455 2.409 15.455h9.579l.113 7.51c.014.985 1.259 1.408 1.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z"},clerk:{title:"Clerk",fill:"#6C47FF",d:"m21.47 20.829-2.881-2.881a.572.572 0 0 0-.7-.084 6.854 6.854 0 0 1-7.081 0 .576.576 0 0 0-.7.084l-2.881 2.881a.576.576 0 0 0-.103.69.57.57 0 0 0 .166.186 12 12 0 0 0 14.113 0 .58.58 0 0 0 .239-.423.576.576 0 0 0-.172-.453Zm.002-17.668-2.88 2.88a.569.569 0 0 1-.701.084A6.857 6.857 0 0 0 8.724 8.08a6.862 6.862 0 0 0-1.222 3.692 6.86 6.86 0 0 0 .978 3.764.573.573 0 0 1-.083.699l-2.881 2.88a.567.567 0 0 1-.864-.063A11.993 11.993 0 0 1 6.771 2.7a11.99 11.99 0 0 1 14.637-.405.566.566 0 0 1 .232.418.57.57 0 0 1-.168.448Zm-7.118 12.261a3.427 3.427 0 1 0 0-6.854 3.427 3.427 0 0 0 0 6.854Z"},aws:{title:"Amazon Web Services",fill:"#232F3E",d:"M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.239-.112a2.47 2.47 0 0 1-.287-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.67 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.214c.263 0 .534-.048.822-.144.287-.096.543-.271.758-.51.128-.152.224-.32.272-.512.047-.191.08-.423.08-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.655.295.846.191.2.47.296.838.296zm6.41.862c-.144 0-.24-.024-.304-.08-.064-.048-.12-.16-.168-.311L7.586 5.55a1.398 1.398 0 0 1-.072-.32c0-.128.064-.2.191-.2h.783c.151 0 .255.025.31.08.065.048.113.16.16.312l1.342 5.284 1.245-5.284c.04-.16.088-.264.151-.312a.549.549 0 0 1 .32-.08h.638c.152 0 .256.025.32.08.063.048.12.16.151.312l1.261 5.348 1.381-5.348c.048-.16.104-.264.16-.312a.52.52 0 0 1 .311-.08h.743c.127 0 .2.065.2.2 0 .04-.009.08-.017.128a1.137 1.137 0 0 1-.056.2l-1.923 6.17c-.048.16-.104.263-.168.311a.51.51 0 0 1-.303.08h-.687c-.151 0-.255-.024-.32-.08-.063-.056-.119-.16-.15-.32l-1.238-5.148-1.23 5.14c-.04.16-.087.264-.15.32-.065.056-.177.08-.32.08zm10.256.215c-.415 0-.83-.048-1.229-.143-.399-.096-.71-.2-.918-.32-.128-.071-.215-.151-.247-.223a.563.563 0 0 1-.048-.224v-.407c0-.167.064-.247.183-.247.048 0 .096.008.144.024.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .894-.088 1.165-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.559c-.144-.151-.416-.287-.807-.415l-1.157-.36c-.583-.183-1.014-.454-1.277-.813a1.902 1.902 0 0 1-.4-1.158c0-.335.073-.63.216-.886.144-.255.335-.479.575-.654.24-.184.51-.32.83-.415.32-.096.655-.136 1.006-.136.175 0 .359.008.535.032.183.024.35.056.518.088.16.04.312.08.455.127.144.048.256.096.336.144a.69.69 0 0 1 .24.2.43.43 0 0 1 .071.263v.375c0 .168-.064.256-.184.256a.83.83 0 0 1-.303-.096 3.652 3.652 0 0 0-1.532-.311c-.455 0-.815.071-1.062.223-.248.152-.375.383-.375.71 0 .224.08.416.24.567.159.152.454.304.877.44l1.134.358c.574.184.99.44 1.237.767.247.327.367.702.367 1.117 0 .343-.072.655-.207.926-.144.272-.336.511-.583.703-.248.2-.543.343-.886.447-.36.111-.734.167-1.142.167zM21.698 16.207c-2.626 1.94-6.442 2.969-9.722 2.969-4.598 0-8.74-1.7-11.87-4.526-.247-.223-.024-.527.272-.351 3.384 1.963 7.559 3.153 11.877 3.153 2.914 0 6.114-.607 9.06-1.852.439-.2.814.287.383.607zM22.792 14.961c-.336-.43-2.22-.207-3.074-.103-.255.032-.295-.192-.063-.36 1.5-1.053 3.967-.75 4.254-.399.287.36-.08 2.826-1.485 4.007-.215.184-.423.088-.327-.151.32-.79 1.03-2.57.695-2.994z"},figma:{title:"Figma",fill:"#F24E1E",d:"M15.852 8.981h-4.588V0h4.588c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.491-4.49 4.491zM12.735 7.51h3.117c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-3.117V7.51zm0 1.471H8.148c-2.476 0-4.49-2.014-4.49-4.49S5.672 0 8.148 0h4.588v8.981zm-4.587-7.51c-1.665 0-3.019 1.355-3.019 3.019s1.354 3.02 3.019 3.02h3.117V1.471H8.148zm4.587 15.019H8.148c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h4.588v8.98zM8.148 8.981c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h3.117V8.981H8.148zM8.172 24c-2.489 0-4.515-2.014-4.515-4.49s2.014-4.49 4.49-4.49h4.588v4.441c0 2.503-2.047 4.539-4.563 4.539zm-.024-7.51a3.023 3.023 0 0 0-3.019 3.019c0 1.665 1.365 3.019 3.044 3.019 1.705 0 3.093-1.376 3.093-3.068v-2.97H8.148zm7.704 0h-.098c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h.098c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.49-4.49 4.49zm-.097-7.509c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h.098c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-.098z"},airtable:{title:"Airtable",fill:"#18BFFF",d:"M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z"},intercom:{title:"Intercom",fill:"#6AFDEF",d:"M21 0H3C1.343 0 0 1.343 0 3v18c0 1.658 1.343 3 3 3h18c1.658 0 3-1.342 3-3V3c0-1.657-1.342-3-3-3zm-5.801 4.399c0-.44.36-.8.802-.8.44 0 .8.36.8.8v10.688c0 .442-.36.801-.8.801-.443 0-.802-.359-.802-.801V4.399zM11.2 3.994c0-.44.357-.799.8-.799s.8.359.8.799v11.602c0 .44-.357.8-.8.8s-.8-.36-.8-.8V3.994zm-4 .405c0-.44.359-.8.799-.8.443 0 .802.36.802.8v10.688c0 .442-.36.801-.802.801-.44 0-.799-.359-.799-.801V4.399zM3.199 6c0-.442.36-.8.802-.8.44 0 .799.358.799.8v7.195c0 .441-.359.8-.799.8-.443 0-.802-.36-.802-.8V6zM20.52 18.202c-.123.105-3.086 2.593-8.52 2.593-5.433 0-8.397-2.486-8.521-2.593-.335-.288-.375-.792-.086-1.128.285-.334.79-.375 1.125-.09.047.041 2.693 2.211 7.481 2.211 4.848 0 7.456-2.186 7.479-2.207.334-.289.839-.25 1.128.086.289.336.25.84-.086 1.128zm.281-5.007c0 .441-.36.8-.801.8-.441 0-.801-.36-.801-.8V6c0-.442.361-.8.801-.8.441 0 .801.357.801.8v7.195z"},posthog:{title:"PostHog",fill:"currentColor",d:"M9.854 14.5 5 9.647.854 5.5A.5.5 0 0 0 0 5.854V8.44a.5.5 0 0 0 .146.353L5 13.647l.147.146L9.854 18.5l.146.147v-.049c.065.03.134.049.207.049h2.586a.5.5 0 0 0 .353-.854L9.854 14.5zm0-5-4-4a.487.487 0 0 0-.409-.144.515.515 0 0 0-.356.21.493.493 0 0 0-.089.288V8.44a.5.5 0 0 0 .147.353l9 9a.5.5 0 0 0 .853-.354v-2.585a.5.5 0 0 0-.146-.354l-5-5zm1-4a.5.5 0 0 0-.854.354V8.44a.5.5 0 0 0 .147.353l4 4a.5.5 0 0 0 .853-.354V9.854a.5.5 0 0 0-.146-.354l-4-4zm12.647 11.515a3.863 3.863 0 0 1-2.232-1.1l-4.708-4.707a.5.5 0 0 0-.854.354v6.585a.5.5 0 0 0 .5.5H23.5a.5.5 0 0 0 .5-.5v-.6c0-.276-.225-.497-.499-.532zm-5.394.032a.8.8 0 1 1 0-1.6.8.8 0 0 1 0 1.6zM.854 15.5a.5.5 0 0 0-.854.354v2.293a.5.5 0 0 0 .5.5h2.293c.222 0 .39-.135.462-.309a.493.493 0 0 0-.109-.545L.854 15.501zM5 14.647.854 10.5a.5.5 0 0 0-.854.353v2.586a.5.5 0 0 0 .146.353L4.854 18.5l.146.147h2.793a.5.5 0 0 0 .353-.854L5 14.647z"},datadog:{title:"Datadog",fill:"#632CA6",d:"M19.57 17.04l-1.997-1.316-1.665 2.782-1.937-.567-1.706 2.604.087.82 9.274-1.71-.538-5.794zm-8.649-2.498l1.488-.204c.241.108.409.15.697.223.45.117.97.23 1.741-.16.18-.088.553-.43.704-.625l6.096-1.106.622 7.527-10.444 1.882zm11.325-2.712l-.602.115L20.488 0 .789 2.285l2.427 19.693 2.306-.334c-.184-.263-.471-.581-.96-.989-.68-.564-.44-1.522-.039-2.127.53-1.022 3.26-2.322 3.106-3.956-.056-.594-.15-1.368-.702-1.898-.02.22.017.432.017.432s-.227-.289-.34-.683c-.112-.15-.2-.199-.319-.4-.085.233-.073.503-.073.503s-.186-.437-.216-.807c-.11.166-.137.48-.137.48s-.241-.69-.186-1.062c-.11-.323-.436-.965-.343-2.424.6.421 1.924.321 2.44-.439.171-.251.288-.939-.086-2.293-.24-.868-.835-2.16-1.066-2.651l-.028.02c.122.395.374 1.223.47 1.625.293 1.218.372 1.642.234 2.204-.116.488-.397.808-1.107 1.165-.71.358-1.653-.514-1.713-.562-.69-.55-1.224-1.447-1.284-1.883-.062-.477.275-.763.445-1.153-.243.07-.514.192-.514.192s.323-.334.722-.624c.165-.109.262-.178.436-.323a9.762 9.762 0 0 0-.456.003s.42-.227.855-.392c-.318-.014-.623-.003-.623-.003s.937-.419 1.678-.727c.509-.208 1.006-.147 1.286.257.367.53.752.817 1.569.996.501-.223.653-.337 1.284-.509.554-.61.99-.688.99-.688s-.216.198-.274.51c.314-.249.66-.455.66-.455s-.134.164-.259.426l.03.043c.366-.22.797-.394.797-.394s-.123.156-.268.358c.277-.002.838.012 1.056.037 1.285.028 1.552-1.374 2.045-1.55.618-.22.894-.353 1.947.68.903.888 1.609 2.477 1.259 2.833-.294.295-.874-.115-1.516-.916a3.466 3.466 0 0 1-.716-1.562 1.533 1.533 0 0 0-.497-.85s.23.51.23.96c0 .246.03 1.165.424 1.68-.039.076-.057.374-.1.43-.458-.554-1.443-.95-1.604-1.067.544.445 1.793 1.468 2.273 2.449.453.927.186 1.777.416 1.997.065.063.976 1.197 1.15 1.767.306.994.019 2.038-.381 2.685l-1.117.174c-.163-.045-.273-.068-.42-.153.08-.143.241-.5.243-.572l-.063-.111c-.348.492-.93.97-1.414 1.245-.633.359-1.363.304-1.838.156-1.348-.415-2.623-1.327-2.93-1.566 0 0-.01.191.048.234.34.383 1.119 1.077 1.872 1.56l-1.605.177.759 5.908c-.337.048-.39.071-.757.124-.325-1.147-.946-1.895-1.624-2.332-.599-.384-1.424-.47-2.214-.314l-.05.059a2.851 2.851 0 0 1 1.863.444c.654.413 1.181 1.481 1.375 2.124.248.822.42 1.7-.248 2.632-.476.662-1.864 1.028-2.986.237.3.481.705.876 1.25.95.809.11 1.577-.03 2.106-.574.452-.464.69-1.434.628-2.456l.714-.104.258 1.834 11.827-1.424zM15.05 6.848c-.034.075-.085.125-.007.37l.004.014.013.032.032.073c.14.287.295.558.552.696.067-.011.136-.019.207-.023.242-.01.395.028.492.08.009-.048.01-.119.005-.222-.018-.364.072-.982-.626-1.308-.264-.122-.634-.084-.757.068a.302.302 0 0 1 .058.013c.186.066.06.13.027.207m1.958 3.392c-.092-.05-.52-.03-.821.005-.574.068-1.193.267-1.328.372-.247.191-.135.523.047.66.511.382.96.638 1.432.575.29-.038.546-.497.728-.914.124-.288.124-.598-.058-.698m-5.077-2.942c.162-.154-.805-.355-1.556.156-.554.378-.571 1.187-.041 1.646.053.046.096.078.137.104a4.77 4.77 0 0 1 1.396-.412c.113-.125.243-.345.21-.745-.044-.542-.455-.456-.146-.749"},algolia:{title:"Algolia",fill:"#003DFF",d:"M12 0C5.445 0 .103 5.285.01 11.817c-.097 6.634 5.285 12.131 11.92 12.17a11.91 11.91 0 0 0 5.775-1.443.281.281 0 0 0 .052-.457l-1.122-.994a.79.79 0 0 0-.833-.14 9.693 9.693 0 0 1-3.923.77c-5.36-.067-9.692-4.527-9.607-9.888.084-5.293 4.417-9.573 9.73-9.573h9.73v17.296l-5.522-4.907a.407.407 0 0 0-.596.063 4.52 4.52 0 0 1-3.934 1.793 4.538 4.538 0 0 1-4.192-4.168 4.53 4.53 0 0 1 4.512-4.872 4.532 4.532 0 0 1 4.509 4.126c.018.205.11.397.265.533l1.438 1.275a.28.28 0 0 0 .462-.158 6.82 6.82 0 0 0 .099-1.725c-.232-3.376-2.966-6.092-6.345-6.3-3.873-.24-7.11 2.79-7.214 6.588-.1 3.7 2.933 6.892 6.634 6.974a6.75 6.75 0 0 0 4.136-1.294l7.212 6.394a.48.48 0 0 0 .797-.36V.456A.456.456 0 0 0 23.54 0Z"},cloudflare:{title:"Cloudflare",fill:"#F38020",d:"M16.5088 16.8447c.1475-.5068.0908-.9707-.1553-1.3154-.2246-.3164-.6045-.499-1.0615-.5205l-8.6592-.1123a.1559.1559 0 0 1-.1333-.0713c-.0283-.042-.0351-.0986-.021-.1553.0278-.084.1123-.1484.2036-.1562l8.7359-.1123c1.0351-.0489 2.1601-.8868 2.5537-1.9136l.499-1.3013c.0215-.0561.0293-.1128.0147-.168-.5625-2.5463-2.835-4.4453-5.5499-4.4453-2.5039 0-4.6284 1.6177-5.3876 3.8614-.4927-.3658-1.1187-.5625-1.794-.499-1.2026.119-2.1665 1.083-2.2861 2.2856-.0283.31-.0069.6128.0635.894C1.5683 13.171 0 14.7754 0 16.752c0 .1748.0142.3515.0352.5273.0141.083.0844.1475.1689.1475h15.9814c.0909 0 .1758-.0645.2032-.1553l.12-.4268zm2.7568-5.5634c-.0771 0-.1611 0-.2383.0112-.0566 0-.1054.0415-.127.0976l-.3378 1.1744c-.1475.5068-.0918.9707.1543 1.3164.2256.3164.6055.498 1.0625.5195l1.8437.1133c.0557 0 .1055.0263.1329.0703.0283.043.0351.1074.0214.1562-.0283.084-.1132.1485-.204.1553l-1.921.1123c-1.041.0488-2.1582.8867-2.5527 1.914l-.1406.3585c-.0283.0713.0215.1416.0986.1416h6.5977c.0771 0 .1474-.0489.169-.126.1122-.4082.1757-.837.1757-1.2803 0-2.6025-2.125-4.727-4.7344-4.727"},upstash:{title:"Upstash",fill:"#00E9A3",d:"M13.8027 0C11.193 0 8.583.9952 6.5918 2.9863c-3.9823 3.9823-3.9823 10.4396 0 14.4219 1.9911 1.9911 5.2198 1.9911 7.211 0 1.991-1.9911 1.991-5.2198 0-7.211L12 12c.9956.9956.9956 2.6098 0 3.6055-.9956.9955-2.6099.9955-3.6055 0-2.9866-2.9868-2.9866-7.8297 0-10.8164 2.9868-2.9868 7.8297-2.9868 10.8164 0l1.8028-1.8028C19.0225.9952 16.4125 0 13.8027 0zM12 12c-.9956-.9956-.9956-2.6098 0-3.6055.9956-.9955 2.6098-.9955 3.6055 0 2.9867 2.9868 2.9867 7.8297 0 10.8164-2.9867 2.9868-7.8297 2.9868-10.8164 0l-1.8028 1.8028c3.9823 3.9822 10.4396 3.9822 14.4219 0 3.9823-3.9824 3.9823-10.4396 0-14.4219-.9956-.9956-2.3006-1.4922-3.6055-1.4922-1.3048 0-2.6099.4966-3.6054 1.4922-1.9912 1.9912-1.9912 5.2198 0 7.211z"},mixpanel:{title:"Mixpanel",fill:"#7856FF",d:"M6.967 9.996h3.053c-.763-.477-1.048-1.145-1.431-2.384L7.443 3.366C6.919 1.458 6.49.551 4.39.551H.004v1.145h.621c1.286 0 1.431.477 1.814 1.908L3.44 7.326c.524 1.814 1.337 2.67 3.53 2.67h-.003Zm7.06 0h3.053c2.194 0 2.956-.86 3.484-2.67l1.001-3.722c.382-1.431.57-1.908 1.814-1.908H24V.551h-4.34c-2.146 0-2.576.86-3.053 2.815l-1.145 4.246c-.384 1.286-.673 1.907-1.435 2.384Zm-4.007 4.008h4.007V9.996H10.02v4.008ZM0 23.449h4.39c2.1 0 2.529-.907 3.053-2.815l1.146-4.246c.383-1.239.668-1.907 1.431-2.384H6.967c-2.194 0-3.007.86-3.531 2.67l-1.001 3.722c-.383 1.431-.524 1.907-1.814 1.907H0v1.146Zm19.65 0h4.343v-1.146h-.622c-1.239 0-1.431-.476-1.814-1.907l-1.001-3.722c-.524-1.814-1.286-2.67-3.483-2.67h-3.046c.762.477 1.041 1.098 1.424 2.384l1.145 4.246c.477 1.955.907 2.815 3.054 2.815Z"},gemini:{title:"Google Gemini",fill:"#8E75B2",d:"M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81"}};var $1=G0(a7(),1),CR="https://brand.volter.ai/logo/twin-world/svg?size=64&variant=mono";function i7({href:G,onClick:L}){return $1.jsxDEV("h1",{children:$1.jsxDEV("a",{href:G,onClick:L,children:[$1.jsxDEV("img",{src:CR,alt:"",width:24,height:24,style:{verticalAlign:"middle"}},void 0,!1,void 0,this),$1.jsxDEV("span",{className:"brand-name",children:" Volter World"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}async function U8(G){return(await G.json().catch(()=>({}))).error??`answered ${G.status}`}function Jq(G,L,A=0,O=""){let[w,T]=S2.useState({state:"loading"});return S2.useEffect(()=>{T({state:"loading"})},[O,L]),S2.useEffect(()=>{if(!L)return;let k=!0;return(async()=>{try{let I=await G(L),h=I.ok?{state:"ok",data:await I.json()}:{state:"error",status:I.status,error:await U8(I)};if(k)T(h)}catch(I){if(k)T({state:"error",status:0,error:String(I)})}})(),()=>{k=!1}},[O,L,A]),w}function D4({load:G,what:L,retry:A,lines:O=3}){if(G.state==="loading")return $1.jsxDEV(n7,{lines:O,label:`Loading ${L}…`},void 0,!1,void 0,this);if(G.state==="error")return $1.jsxDEV("div",{role:"alert",className:"error-state",children:[$1.jsxDEV("span",{children:["Could not read ",L,": ",G.error]},void 0,!0,void 0,this),A?$1.jsxDEV("button",{type:"button",onClick:A,children:"Try again"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this);return null}function n7({lines:G=3,label:L="Loading…"}){return $1.jsxDEV("div",{className:"skeleton",role:"status","aria-label":L,children:Array.from({length:G},(A,O)=>$1.jsxDEV("span",{style:{width:`${[92,76,84,64,88][O%5]}%`}},O,!1,void 0,this))},void 0,!1,void 0,this)}function Gq({iso:G,time:L}){if(!G)return $1.jsxDEV("span",{children:"—"},void 0,!1,void 0,this);let A=new Date(G);return $1.jsxDEV("time",{dateTime:G,title:G,children:Number.isNaN(A.getTime())?G:L?A.toLocaleTimeString():A.toLocaleString()},void 0,!1,void 0,this)}var i0=(G)=>G?new Date(G).toLocaleString():"—",Y4=(G)=>{let L=Date.parse(G);return Number.isNaN(L)?G:new Date(L).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})};function B3(G){let L=G?Date.parse(G):Number.NaN;if(Number.isNaN(L))return"—";let A=Math.max(0,Math.round((Date.now()-L)/1000));return A<60?"just now":A<3600?`${Math.round(A/60)}m ago`:A<86400?`${Math.round(A/3600)}h ago`:`${Math.round(A/86400)}d ago`}var TR={github:"GitHub",openai:"OpenAI",aws:"AWS",hubspot:"HubSpot",paypal:"PayPal",youtube:"YouTube",tiktok:"TikTok",linkedin:"LinkedIn",xai:"xAI",sendgrid:"SendGrid",elevenlabs:"ElevenLabs",assemblyai:"AssemblyAI",planetscale:"PlanetScale",googleoauth:"Google sign-in",npm:"npm","npm-registry":"npm registry",posthog:"PostHog",mongodb:"MongoDB",pagerduty:"PagerDuty",mailgun:"Mailgun",turbopuffer:"turbopuffer"},Q3=(G)=>TR[G]??G.charAt(0).toUpperCase()+G.slice(1);function _Z({vendor:G}){let L=Qq[G];return $1.jsxDEV("span",{className:L?"mark logo":"mark","aria-hidden":"true",children:L?$1.jsxDEV("svg",{viewBox:"0 0 24 24",children:$1.jsxDEV("path",{d:L.d,fill:L.fill},void 0,!1,void 0,this)},void 0,!1,void 0,this):Q3(G).charAt(0)},void 0,!1,void 0,this)}function L5({of:G,small:L}){return $1.jsxDEV("span",{className:L?"mark world-mark small":"mark world-mark","aria-hidden":"true",children:(G||"+").charAt(0).toUpperCase()},void 0,!1,void 0,this)}var RZ=(G)=>{G.currentTarget.closest("details")?.removeAttribute("open")},$Y="volter.theme",Uq=()=>{try{let G=localStorage.getItem($Y);return G==="light"||G==="dark"?G:"system"}catch{return"system"}};function BY(G=Uq()){let L=document.documentElement;if(G==="system")L.removeAttribute("data-theme");else L.setAttribute("data-theme",G)}function qq(){let[G,L]=S2.useState(Uq),A=(O)=>{try{if(O==="system")localStorage.removeItem($Y);else localStorage.setItem($Y,O)}catch{}BY(O),L(O)};return $1.jsxDEV("div",{className:"theme-choice",role:"radiogroup","aria-label":"Theme",children:["system","light","dark"].map((O)=>$1.jsxDEV("button",{type:"button",role:"radio","aria-checked":G===O,onClick:()=>A(O),children:O==="system"?"System":O==="light"?"Light":"Dark"},O,!1,void 0,this))},void 0,!1,void 0,this)}function Lq(){return S2.useEffect(()=>{let G=()=>[...document.querySelectorAll("details.menu[open], details.clock-more[open]")],L=(O)=>{if(O.key!=="Escape"||document.querySelector("dialog[open]"))return;let w=G();if(!w.length)return;for(let T of w)T.removeAttribute("open");w[w.length-1].querySelector("summary")?.focus()},A=(O)=>{let w=O.target;for(let T of G())if(!w||!T.contains(w))T.removeAttribute("open")};return document.addEventListener("keydown",L),document.addEventListener("click",A),()=>{document.removeEventListener("keydown",L),document.removeEventListener("click",A)}},[]),null}function k0({open:G,onClose:L,title:A,children:O,footer:w,wide:T}){let k=S2.useRef(null),I=S2.useId();return S2.useEffect(()=>{let h=k.current;if(!h)return;if(G&&!h.open){h.showModal();let u=h.querySelector(".dialog-body :is(input:not([type=hidden]):not([disabled]), select, textarea)");if(u?.focus(),u instanceof HTMLInputElement&&u.value&&/^(text|search|email|url)$/.test(u.type))u.select()}if(!G&&h.open)h.close()},[G]),$1.jsxDEV("dialog",{ref:k,className:T?"dialog wide":"dialog","aria-labelledby":I,onClose:L,onCancel:(h)=>{h.preventDefault(),L()},onMouseDown:(h)=>{if(h.target===k.current)L()},children:G?$1.jsxDEV($1.Fragment,{children:[$1.jsxDEV("div",{className:"dialog-head",children:[$1.jsxDEV("h2",{id:I,children:A},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",className:"icon-button","aria-label":"Close",onClick:L,children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$1.jsxDEV("div",{className:"dialog-body",children:O},void 0,!1,void 0,this),w?$1.jsxDEV("div",{className:"dialog-foot",children:w},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null},void 0,!1,void 0,this)}var YY="volter:confirm";function H6(G){return new Promise((L)=>{window.dispatchEvent(new CustomEvent(YY,{detail:{ask:G,resolve:L}}))})}function Wq(){let[G,L]=S2.useState(null),[A,O]=S2.useState("");S2.useEffect(()=>{let I=(h)=>{O(""),L(h.detail)};return window.addEventListener(YY,I),()=>window.removeEventListener(YY,I)},[]);let w=(I)=>{G?.resolve(I),L(null)},T=G?.ask,k=!T?.typed||A===T.typed;return $1.jsxDEV(k0,{open:Boolean(G),onClose:()=>w(!1),title:T?.title??"",footer:$1.jsxDEV($1.Fragment,{children:[$1.jsxDEV("button",{type:"button",onClick:()=>w(!1),children:"Cancel"},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",className:T?.danger?"danger-button":"primary",disabled:!k,onClick:()=>w(!0),children:T?.action},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[T?.body?$1.jsxDEV("div",{className:"confirm-body",children:T.body},void 0,!1,void 0,this):null,T?.typed?$1.jsxDEV("div",{className:"typed-confirm",children:[$1.jsxDEV("p",{children:["Type ",$1.jsxDEV("code",{children:T.typed},void 0,!1,void 0,this)," to confirm."]},void 0,!0,void 0,this),$1.jsxDEV("input",{autoFocus:!0,"aria-label":`Type ${T.typed} to confirm`,value:A,onChange:(I)=>O(I.target.value),onKeyDown:(I)=>{if(I.key==="Enter"&&k)w(!0)},autoComplete:"off",spellCheck:!1},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}var MY="volter:toast";function u2(G,L="ok"){window.dispatchEvent(new CustomEvent(MY,{detail:{text:G,kind:L}}))}function Kq(){let[G,L]=S2.useState([]);return S2.useEffect(()=>{let A=0,O=(w)=>{let{text:T,kind:k}=w.detail,I=++A;if(L((h)=>[...h.slice(-3),{id:I,text:T,kind:k}]),k!=="error")setTimeout(()=>L((h)=>h.filter((u)=>u.id!==I)),4500)};return window.addEventListener(MY,O),()=>window.removeEventListener(MY,O)},[]),$1.jsxDEV("div",{className:"toasts",role:"region","aria-label":"Notifications",children:G.map((A)=>$1.jsxDEV("div",{className:`toast ${A.kind}`,role:A.kind==="error"?"alert":"status",children:[$1.jsxDEV("span",{children:A.text},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",className:"icon-button","aria-label":"Dismiss",onClick:()=>L((O)=>O.filter((w)=>w.id!==A.id)),children:"✕"},void 0,!1,void 0,this)]},A.id,!0,void 0,this))},void 0,!1,void 0,this)}function W5({value:G,label:L,secret:A}){let[O,w]=S2.useState(!1);return $1.jsxDEV("div",{className:"copy-field",children:[L?$1.jsxDEV("span",{className:"copy-label",children:L},void 0,!1,void 0,this):null,$1.jsxDEV("div",{className:"copy-row",children:[$1.jsxDEV("input",{readOnly:!0,value:G,"aria-label":L??"Value",onFocus:(k)=>k.currentTarget.select(),spellCheck:!1},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",onClick:()=>{navigator.clipboard?.writeText(G).then(()=>{w(!0),setTimeout(()=>w(!1),1600),u2(A?"Copied. Keep it somewhere safe":"Copied")}).catch(()=>u2("Your browser would not copy it: select it and copy","error"))},children:O?"Copied":"Copy"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function q8({label:G,items:L}){return $1.jsxDEV("details",{className:"menu row-menu",children:[$1.jsxDEV("summary",{className:"icon-button",role:"button","aria-haspopup":"menu","aria-label":G,title:G,children:"⋯"},void 0,!1,void 0,this),$1.jsxDEV("div",{className:"popover menu-list",role:"menu",children:L.filter((A)=>Boolean(A)).map((A)=>A.href?$1.jsxDEV("a",{role:"menuitem",href:A.href,className:A.danger?"danger-item":void 0,onClick:RZ,children:A.label},A.label,!1,void 0,this):$1.jsxDEV("button",{type:"button",role:"menuitem",disabled:A.disabled,className:A.danger?"danger-item":void 0,onClick:(O)=>{RZ(O),A.onSelect?.()},children:A.label},A.label,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function K5({title:G,children:L,action:A}){return $1.jsxDEV("div",{className:"empty-state",children:[$1.jsxDEV("p",{className:"empty-title",children:G},void 0,!1,void 0,this),L?$1.jsxDEV("div",{className:"empty-body",children:L},void 0,!1,void 0,this):null,A?$1.jsxDEV("div",{className:"empty-action",children:A},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function QY({label:G,value:L,limit:A,unit:O="",note:w}){let T=A?Math.min(1,L/A):0,k=!A?"calm":L>A?"full":T>=0.8?"near":"calm";return $1.jsxDEV("div",{className:`meter ${k}`,children:[$1.jsxDEV("div",{className:"meter-head",children:[$1.jsxDEV("span",{children:G},void 0,!1,void 0,this),$1.jsxDEV("span",{className:"meter-num",children:[L.toLocaleString(),O,A!==null?$1.jsxDEV("span",{className:"mode",children:[" of ",A.toLocaleString(),O]},void 0,!0,void 0,this):$1.jsxDEV("span",{className:"mode",children:" · no limit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A!==null?$1.jsxDEV("div",{className:"meter-track",role:"meter","aria-label":G,"aria-valuemin":0,"aria-valuemax":A,"aria-valuenow":L,children:$1.jsxDEV("span",{style:{width:`${Math.max(T>0?2:0,Math.round(T*100))}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,w?$1.jsxDEV("div",{className:"meter-note mode",children:w},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function Rq({label:G,items:L}){return $1.jsxDEV("nav",{className:"subnav","aria-label":G,children:L.map((A)=>$1.jsxDEV("a",{href:A.href,"aria-current":A.on?"page":void 0,className:A.on?"on":void 0,onClick:A.onClick,children:A.label},A.href,!1,void 0,this))},void 0,!1,void 0,this)}function _q(){return S2.useEffect(()=>{let G=(A)=>{let O=document.querySelector("main.app"),w=A.target;if(O?.hasAttribute("data-drawer")&&w&&!w.closest(".side")&&!w.closest(".drawer-button"))O.removeAttribute("data-drawer")},L=(A)=>{if(A.key==="Escape")JY()};return document.addEventListener("click",G),document.addEventListener("keydown",L),()=>{document.removeEventListener("click",G),document.removeEventListener("keydown",L)}},[]),$1.jsxDEV("button",{type:"button",className:"icon-button drawer-button","aria-label":"Menu",onClick:()=>{document.querySelector("main.app")?.toggleAttribute("data-drawer")},children:"☰"},void 0,!1,void 0,this)}var JY=()=>{document.querySelector("main.app")?.removeAttribute("data-drawer")};var Fq=["account","help","new","sign-in","sign-out","settings","api","app","www","docs","status","operator"];function Aq(G={}){let L=(O,w)=>G.tools?`${w} (\`${O}\`)`:`\`${O}\``,A=["Set up Volter World for this app, so its calls to Stripe, Slack, GitHub, OpenAI and the other services it uses go to local twins instead of the real APIs. The app keeps its real SDKs and code.","",G.tools?"1. You have the Volter World tools (volter mcp). If the `volter` command is missing, install it: `npm install -g @volter/world`.":"1. Install the command and your agent tooling: `npm install -g @volter/world`, then `volter agents install --yes`.",`2. In the app's folder, ${L("volter world init --install","world_init")}: it detects the vendors the app calls and installs their twins. Show me the vendors it detected and why, before keeping them.`,`3. ${G.tools?"Start it with world_up":"Start it: `volter world up`"}, then run the tests inside it: ${L("volter world run -- <the test command>","world_run")}. Fix anything that fails because a call went to the real service.`,`4. Tell me what the app did at each vendor (${L("volter world log","world_log")}), and give me the dashboard link (${G.tools?"world_view":"`volter world view --no-open`, started in the background: it keeps running"}).`];if(G.platform){let O=G.world??"<org>/<world>";A.push(`5. Share it with my team on ${G.platform}: ${L(`volter login ${G.platform}`,"platform_login")} gives a link and a code for me to approve in my browser. Once I have, link it with ${L(`volter remote add origin ${O} --create`,"remote_link with create: true")}${G.world?"":" (ask me for <org>/<world>)"}, then send what the app did: ${L('volter world changeset -m "<what and why>"',"world_changeset")} and ${L("volter world push","world_push")}.`)}return A.push("","The guide: https://world.volter.ai/docs/guides/use-with-a-coding-agent.md"),A.join(`
235
+ <%s key={someKey} {...props} />`,p1,U2,U0,U2),d1[U2+p1]=!0)}if(U2=null,c1!==void 0&&(A(c1),U2=""+c1),k(P1)&&(A(P1.key),U2=""+P1.key),"key"in P1){c1={};for(var y0 in P1)y0!=="key"&&(c1[y0]=P1[y0])}else c1=P1;return U2&&I(c1,typeof d==="function"?d.displayName||d.name||"Unknown":d),u(d,U2,c1,w(),n1,Q4)}function W(d){v(d)?d._store&&(d._store.validated=1):typeof d==="object"&&d!==null&&d.$$typeof===X1&&(d._payload.status==="fulfilled"?v(d._payload.value)&&d._payload.value._store&&(d._payload.value._store.validated=1):d._store&&(d._store.validated=1))}function v(d){return typeof d==="object"&&d!==null&&d.$$typeof===m}var m=Symbol.for("react.transitional.element"),V=Symbol.for("react.portal"),c=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),E=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),i=Symbol.for("react.context"),_1=Symbol.for("react.forward_ref"),U1=Symbol.for("react.suspense"),t=Symbol.for("react.suspense_list"),n=Symbol.for("react.memo"),X1=Symbol.for("react.lazy"),i1=Symbol.for("react.activity"),j=Symbol.for("react.client.reference"),y=X6.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Y1=Object.prototype.hasOwnProperty,R1=Array.isArray,B2=console.createTask?console.createTask:function(){return null};X6={react_stack_bottom_frame:function(d){return d()}};var z1,W1={},q1=X6.react_stack_bottom_frame.bind(X6,T)(),u1=B2(O(T)),d1={};OR.Fragment=c,OR.jsxDEV=function(d,P1,c1,p1){var n1=1e4>y.recentlyCreatedOwnerStacks++;return S(d,P1,c1,p1,n1?Error("react-stack-top-frame"):q1,n1?B2(O(d)):u1)}})()});var x=G0(J8(),1),vq=G0(Bq(),1);var S2=G0(J8(),1);var Qq={x:{title:"X",fill:"currentColor",d:"M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"},youtube:{title:"YouTube",fill:"#FF0000",d:"M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"},tiktok:{title:"TikTok",fill:"currentColor",d:"M12.525.02c1.31-.02 2.61-.01 3.91-.02.08 1.53.63 3.09 1.75 4.17 1.12 1.11 2.7 1.62 4.24 1.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01 2.92.01 5.84-.02 8.75-.08 1.4-.54 2.79-1.35 3.94-1.31 1.92-3.58 3.17-5.91 3.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9 1.12-3.72 2.58-4.96 1.66-1.44 3.98-2.13 6.15-1.72.02 1.48-.04 2.96-.04 4.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11 1.04-1.36 1.75-.21.51-.15 1.07-.14 1.61.24 1.64 1.82 3.02 3.5 2.87 1.12-.01 2.19-.66 2.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z"},discord:{title:"Discord",fill:"#5865F2",d:"M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189Z"},resend:{title:"Resend",fill:"currentColor",d:"M2.023 0v24h5.553v-8.434h2.998L15.326 24h6.65l-5.372-9.258a7.652 7.652 0 0 0 3.316-3.016c.709-1.21 1.062-2.57 1.062-4.08 0-1.462-.353-2.767-1.062-3.91-.709-1.165-1.692-2.079-2.95-2.742C15.737.331 14.355 0 12.823 0Zm5.553 4.87h4.219c.731 0 1.349.125 1.851.376.526.252.925.618 1.2 1.098.274.457.412.994.412 1.611S15.132 9.12 14.88 9.6c-.229.48-.572.856-1.03 1.13-.434.252-.948.38-1.542.38H7.576Z"},linkedin:{title:"LinkedIn",fill:"#0A66C2",d:"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"},reddit:{title:"Reddit",fill:"#FF4500",d:"M12 0C5.373 0 0 5.373 0 12c0 3.314 1.343 6.314 3.515 8.485l-2.286 2.286C.775 23.225 1.097 24 1.738 24H12c6.627 0 12-5.373 12-12S18.627 0 12 0Zm4.388 3.199c1.104 0 1.999.895 1.999 1.999 0 1.105-.895 2-1.999 2-.946 0-1.739-.657-1.947-1.539v.002c-1.147.162-2.032 1.15-2.032 2.341v.007c1.776.067 3.4.567 4.686 1.363.473-.363 1.064-.58 1.707-.58 1.547 0 2.802 1.254 2.802 2.802 0 1.117-.655 2.081-1.601 2.531-.088 3.256-3.637 5.876-7.997 5.876-4.361 0-7.905-2.617-7.998-5.87-.954-.447-1.614-1.415-1.614-2.538 0-1.548 1.255-2.802 2.803-2.802.645 0 1.239.218 1.712.585 1.275-.79 2.881-1.291 4.64-1.365v-.01c0-1.663 1.263-3.034 2.88-3.207.188-.911.993-1.595 1.959-1.595Zm-8.085 8.376c-.784 0-1.459.78-1.506 1.797-.047 1.016.64 1.429 1.426 1.429.786 0 1.371-.369 1.418-1.385.047-1.017-.553-1.841-1.338-1.841Zm7.406 0c-.786 0-1.385.824-1.338 1.841.047 1.017.634 1.385 1.418 1.385.785 0 1.473-.413 1.426-1.429-.046-1.017-.721-1.797-1.506-1.797Zm-3.703 4.013c-.974 0-1.907.048-2.77.135-.147.015-.241.168-.183.305.483 1.154 1.622 1.964 2.953 1.964 1.33 0 2.47-.81 2.953-1.964.057-.137-.037-.29-.184-.305-.863-.087-1.795-.135-2.769-.135Z"},bluesky:{title:"Bluesky",fill:"#0285FF",d:"M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479.815 2.736 3.713 3.66 6.383 3.364.136-.02.275-.039.415-.056-.138.022-.276.04-.415.056-3.912.58-7.387 2.005-2.83 7.078 5.013 5.19 6.87-1.113 7.823-4.308.953 3.195 2.05 9.271 7.733 4.308 4.267-4.308 1.172-6.498-2.74-7.078a8.741 8.741 0 0 1-.415-.056c.14.017.279.036.415.056 2.67.297 5.568-.628 6.383-3.364.246-.828.624-5.79.624-6.478 0-.69-.139-1.861-.902-2.206-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8Z"},instagram:{title:"Instagram",fill:"#FF0069",d:"M7.0301.084c-1.2768.0602-2.1487.264-2.911.5634-.7888.3075-1.4575.72-2.1228 1.3877-.6652.6677-1.075 1.3368-1.3802 2.127-.2954.7638-.4956 1.6365-.552 2.914-.0564 1.2775-.0689 1.6882-.0626 4.947.0062 3.2586.0206 3.6671.0825 4.9473.061 1.2765.264 2.1482.5635 2.9107.308.7889.72 1.4573 1.388 2.1228.6679.6655 1.3365 1.0743 2.1285 1.38.7632.295 1.6361.4961 2.9134.552 1.2773.056 1.6884.069 4.9462.0627 3.2578-.0062 3.668-.0207 4.9478-.0814 1.28-.0607 2.147-.2652 2.9098-.5633.7889-.3086 1.4578-.72 2.1228-1.3881.665-.6682 1.0745-1.3378 1.3795-2.1284.2957-.7632.4966-1.636.552-2.9124.056-1.2809.0692-1.6898.063-4.948-.0063-3.2583-.021-3.6668-.0817-4.9465-.0607-1.2797-.264-2.1487-.5633-2.9117-.3084-.7889-.72-1.4568-1.3876-2.1228C21.2982 1.33 20.628.9208 19.8378.6165 19.074.321 18.2017.1197 16.9244.0645 15.6471.0093 15.236-.005 11.977.0014 8.718.0076 8.31.0215 7.0301.0839m.1402 21.6932c-1.17-.0509-1.8053-.2453-2.2287-.408-.5606-.216-.96-.4771-1.3819-.895-.422-.4178-.6811-.8186-.9-1.378-.1644-.4234-.3624-1.058-.4171-2.228-.0595-1.2645-.072-1.6442-.079-4.848-.007-3.2037.0053-3.583.0607-4.848.05-1.169.2456-1.805.408-2.2282.216-.5613.4762-.96.895-1.3816.4188-.4217.8184-.6814 1.3783-.9003.423-.1651 1.0575-.3614 2.227-.4171 1.2655-.06 1.6447-.072 4.848-.079 3.2033-.007 3.5835.005 4.8495.0608 1.169.0508 1.8053.2445 2.228.408.5608.216.96.4754 1.3816.895.4217.4194.6816.8176.9005 1.3787.1653.4217.3617 1.056.4169 2.2263.0602 1.2655.0739 1.645.0796 4.848.0058 3.203-.0055 3.5834-.061 4.848-.051 1.17-.245 1.8055-.408 2.2294-.216.5604-.4763.96-.8954 1.3814-.419.4215-.8181.6811-1.3783.9-.4224.1649-1.0577.3617-2.2262.4174-1.2656.0595-1.6448.072-4.8493.079-3.2045.007-3.5825-.006-4.848-.0608M16.953 5.5864A1.44 1.44 0 1 0 18.39 4.144a1.44 1.44 0 0 0-1.437 1.4424M5.8385 12.012c.0067 3.4032 2.7706 6.1557 6.173 6.1493 3.4026-.0065 6.157-2.7701 6.1506-6.1733-.0065-3.4032-2.771-6.1565-6.174-6.1498-3.403.0067-6.156 2.771-6.1496 6.1738M8 12.0077a4 4 0 1 1 4.008 3.9921A3.9996 3.9996 0 0 1 8 12.0077"},github:{title:"GitHub",fill:"currentColor",d:"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"},stripe:{title:"Stripe",fill:"#635BFF",d:"M13.976 9.15c-2.172-.806-3.356-1.426-3.356-2.409 0-.831.683-1.305 1.901-1.305 2.227 0 4.515.858 6.09 1.631l.89-5.494C18.252.975 15.697 0 12.165 0 9.667 0 7.589.654 6.104 1.872 4.56 3.147 3.757 4.992 3.757 7.218c0 4.039 2.467 5.76 6.476 7.219 2.585.92 3.445 1.574 3.445 2.583 0 .98-.84 1.545-2.354 1.545-1.875 0-4.965-.921-6.99-2.109l-.9 5.555C5.175 22.99 8.385 24 11.714 24c2.641 0 4.843-.624 6.328-1.813 1.664-1.305 2.525-3.236 2.525-5.732 0-4.128-2.524-5.851-6.594-7.305h.003z"},slack:{title:"Slack",fill:"#4A154B",d:"M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zM6.313 15.165a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zM8.834 6.313a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zM18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zM17.688 8.834a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zM15.165 17.688a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z"},openai:{title:"OpenAI",fill:"#412991",d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"},anthropic:{title:"Anthropic",fill:"currentColor",d:"M17.3041 3.541h-3.6718l6.696 16.918H24Zm-10.6082 0L0 20.459h3.7442l1.3693-3.5527h7.0052l1.3693 3.5528h3.7442L10.5363 3.5409Zm-.3712 10.2232 2.2914-5.9456 2.2914 5.9456Z"},twilio:{title:"Twilio",fill:"#F22F46",d:"M12 0C5.381-.008.008 5.352 0 11.971V12c0 6.64 5.359 12 12 12 6.64 0 12-5.36 12-12 0-6.641-5.36-12-12-12zm0 20.801c-4.846.015-8.786-3.904-8.801-8.75V12c-.014-4.846 3.904-8.786 8.75-8.801H12c4.847-.014 8.786 3.904 8.801 8.75V12c.015 4.847-3.904 8.786-8.75 8.801H12zm5.44-11.76c0 1.359-1.12 2.479-2.481 2.479-1.366-.007-2.472-1.113-2.479-2.479 0-1.361 1.12-2.481 2.479-2.481 1.361 0 2.481 1.12 2.481 2.481zm0 5.919c0 1.36-1.12 2.48-2.481 2.48-1.367-.008-2.473-1.114-2.479-2.48 0-1.359 1.12-2.479 2.479-2.479 1.361-.001 2.481 1.12 2.481 2.479zm-5.919 0c0 1.36-1.12 2.48-2.479 2.48-1.368-.007-2.475-1.113-2.481-2.48 0-1.359 1.12-2.479 2.481-2.479 1.358-.001 2.479 1.12 2.479 2.479zm0-5.919c0 1.359-1.12 2.479-2.479 2.479-1.367-.007-2.475-1.112-2.481-2.479 0-1.361 1.12-2.481 2.481-2.481 1.358 0 2.479 1.12 2.479 2.481z"},sendgrid:{title:"SendGrid",fill:"#51A9E3",d:"M.8 24h13.6c.88 0 1.6-.72 1.6-1.6v-4.8c0-.88-.72-1.6-1.6-1.6H9.6c-.88 0-1.6-.72-1.6-1.6V9.6C8 8.72 7.28 8 6.4 8H1.6C.72 8 0 8.72 0 9.6v13.6c0 .44.36.8.8.8zM23.2 0H9.6C8.72 0 8 .72 8 1.6v4.8C8 7.28 8.72 8 9.6 8h4.8c.88 0 1.6.72 1.6 1.6v4.8c0 .88.72 1.6 1.6 1.6h4.8c.88 0 1.6-.72 1.6-1.6V.8c0-.44-.36-.8-.8-.8Z"},mailgun:{title:"Mailgun",fill:"#F06B66",d:"M11.837 0c6.602 0 11.984 5.381 11.984 11.994-.017 2.99-3.264 4.84-5.844 3.331a3.805 3.805 0 0 1-.06-.035l-.055-.033-.022.055c-2.554 4.63-9.162 4.758-11.894.232-2.732-4.527.46-10.313 5.746-10.416a6.868 6.868 0 0 1 7.002 6.866 1.265 1.265 0 0 0 2.52 0c0-5.18-4.197-9.38-9.377-9.387C4.611 2.594.081 10.41 3.683 16.673c3.238 5.632 11.08 6.351 15.289 1.402l1.997 1.686A11.95 11.95 0 0 1 11.837 24C2.6 23.72-2.87 13.543 1.992 5.684A12.006 12.006 0 0 1 11.837 0Zm0 7.745c-3.276-.163-5.5 3.281-4.003 6.2a4.26 4.26 0 0 0 4.014 2.31c3.276-.171 5.137-3.824 3.35-6.575a4.26 4.26 0 0 0-3.36-1.935Zm0 2.53c1.324 0 2.152 1.433 1.49 2.58a1.72 1.72 0 0 1-1.49.86 1.72 1.72 0 1 1 0-3.44Z"},notion:{title:"Notion",fill:"currentColor",d:"M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z"},linear:{title:"Linear",fill:"#5E6AD2",d:"M2.886 4.18A11.982 11.982 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556c-.524.33-1.075.62-1.65.866L.951 7.277c.247-.575.537-1.126.866-1.65ZM.322 9.163l14.515 14.515c-.71.172-1.443.282-2.195.322L0 11.358a12 12 0 0 1 .322-2.195Zm-.17 4.862 9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z"},jira:{title:"Jira",fill:"#0052CC",d:"M11.571 11.513H0a5.218 5.218 0 0 0 5.232 5.215h2.13v2.057A5.215 5.215 0 0 0 12.575 24V12.518a1.005 1.005 0 0 0-1.005-1.005zm5.723-5.756H5.736a5.215 5.215 0 0 0 5.215 5.214h2.129v2.058a5.218 5.218 0 0 0 5.215 5.214V6.758a1.001 1.001 0 0 0-1.001-1.001zM23.013 0H11.455a5.215 5.215 0 0 0 5.215 5.215h2.129v2.057A5.215 5.215 0 0 0 24 12.483V1.005A1.001 1.001 0 0 0 23.013 0Z"},hubspot:{title:"HubSpot",fill:"#FF7A59",d:"M18.164 7.93V5.084a2.198 2.198 0 001.267-1.978v-.067A2.2 2.2 0 0017.238.845h-.067a2.2 2.2 0 00-2.193 2.193v.067a2.196 2.196 0 001.252 1.973l.013.006v2.852a6.22 6.22 0 00-2.969 1.31l.012-.01-7.828-6.095A2.497 2.497 0 104.3 4.656l-.012.006 7.697 5.991a6.176 6.176 0 00-1.038 3.446c0 1.343.425 2.588 1.147 3.607l-.013-.02-2.342 2.343a1.968 1.968 0 00-.58-.095h-.002a2.033 2.033 0 102.033 2.033 1.978 1.978 0 00-.1-.595l.005.014 2.317-2.317a6.247 6.247 0 104.782-11.134l-.036-.005zm-.964 9.378a3.206 3.206 0 113.215-3.207v.002a3.206 3.206 0 01-3.207 3.207z"},paypal:{title:"PayPal",fill:"#003087",d:"M7.016 19.198h-4.2a.562.562 0 0 1-.555-.65L5.093.584A.692.692 0 0 1 5.776 0h7.222c3.417 0 5.904 2.488 5.846 5.5-.006.25-.027.5-.066.747A6.794 6.794 0 0 1 12.071 12H8.743a.69.69 0 0 0-.682.583l-.325 2.056-.013.083-.692 4.39-.015.087zM19.79 6.142c-.01.087-.01.175-.023.261a7.76 7.76 0 0 1-7.695 6.598H9.007l-.283 1.795-.013.083-.692 4.39-.134.843-.014.088H6.86l-.497 3.15a.562.562 0 0 0 .555.65h3.612c.34 0 .63-.249.683-.585l.952-6.031a.692.692 0 0 1 .683-.584h2.126a6.793 6.793 0 0 0 6.707-5.752c.306-1.95-.466-3.744-1.89-4.906z"},shopify:{title:"Shopify",fill:"#7AB55C",d:"M15.337 23.979l7.216-1.561s-2.604-17.613-2.625-17.73c-.018-.116-.114-.192-.211-.192s-1.929-.136-1.929-.136-1.275-1.274-1.439-1.411c-.045-.037-.075-.057-.121-.074l-.914 21.104h.023zM11.71 11.305s-.81-.424-1.774-.424c-1.447 0-1.504.906-1.504 1.141 0 1.232 3.24 1.715 3.24 4.629 0 2.295-1.44 3.76-3.406 3.76-2.354 0-3.54-1.465-3.54-1.465l.646-2.086s1.245 1.066 2.28 1.066c.675 0 .975-.545.975-.932 0-1.619-2.654-1.694-2.654-4.359-.034-2.237 1.571-4.416 4.827-4.416 1.257 0 1.875.361 1.875.361l-.945 2.715-.02.01zM11.17.83c.136 0 .271.038.405.135-.984.465-2.064 1.639-2.508 3.992-.656.213-1.293.405-1.889.578C7.697 3.75 8.951.84 11.17.84V.83zm1.235 2.949v.135c-.754.232-1.583.484-2.394.736.466-1.777 1.333-2.645 2.085-2.971.193.501.309 1.176.309 2.1zm.539-2.234c.694.074 1.141.867 1.429 1.755-.349.114-.735.231-1.158.366v-.252c0-.752-.096-1.371-.271-1.871v.002zm2.992 1.289c-.02 0-.06.021-.078.021s-.289.075-.714.21c-.423-1.233-1.176-2.37-2.508-2.37h-.115C12.135.209 11.669 0 11.265 0 8.159 0 6.675 3.877 6.21 5.846c-1.194.365-2.063.636-2.16.674-.675.213-.694.232-.772.87-.075.462-1.83 14.063-1.83 14.063L15.009 24l.927-21.166z"},sentry:{title:"Sentry",fill:"#362D59",d:"M13.91 2.505c-.873-1.448-2.972-1.448-3.844 0L6.904 7.92a15.478 15.478 0 0 1 8.53 12.811h-2.221A13.301 13.301 0 0 0 5.784 9.814l-2.926 5.06a7.65 7.65 0 0 1 4.435 5.848H2.194a.365.365 0 0 1-.298-.534l1.413-2.402a5.16 5.16 0 0 0-1.614-.913L.296 19.275a2.182 2.182 0 0 0 .812 2.999 2.24 2.24 0 0 0 1.086.288h6.983a9.322 9.322 0 0 0-3.845-8.318l1.11-1.922a11.47 11.47 0 0 1 4.95 10.24h5.915a17.242 17.242 0 0 0-7.885-15.28l2.244-3.845a.37.37 0 0 1 .504-.13c.255.14 9.75 16.708 9.928 16.9a.365.365 0 0 1-.327.543h-2.287c.029.612.029 1.223 0 1.831h2.297a2.206 2.206 0 0 0 1.922-3.31z"},vercel:{title:"Vercel",fill:"currentColor",d:"M24 22.525H0l12-21.05 12 21.05z"},supabase:{title:"Supabase",fill:"#3FCF8E",d:"M11.9 1.036c-.015-.986-1.26-1.41-1.874-.637L.764 12.05C-.33 13.427.65 15.455 2.409 15.455h9.579l.113 7.51c.014.985 1.259 1.408 1.873.636l9.262-11.653c1.093-1.375.113-3.403-1.645-3.403h-9.642z"},clerk:{title:"Clerk",fill:"#6C47FF",d:"m21.47 20.829-2.881-2.881a.572.572 0 0 0-.7-.084 6.854 6.854 0 0 1-7.081 0 .576.576 0 0 0-.7.084l-2.881 2.881a.576.576 0 0 0-.103.69.57.57 0 0 0 .166.186 12 12 0 0 0 14.113 0 .58.58 0 0 0 .239-.423.576.576 0 0 0-.172-.453Zm.002-17.668-2.88 2.88a.569.569 0 0 1-.701.084A6.857 6.857 0 0 0 8.724 8.08a6.862 6.862 0 0 0-1.222 3.692 6.86 6.86 0 0 0 .978 3.764.573.573 0 0 1-.083.699l-2.881 2.88a.567.567 0 0 1-.864-.063A11.993 11.993 0 0 1 6.771 2.7a11.99 11.99 0 0 1 14.637-.405.566.566 0 0 1 .232.418.57.57 0 0 1-.168.448Zm-7.118 12.261a3.427 3.427 0 1 0 0-6.854 3.427 3.427 0 0 0 0 6.854Z"},aws:{title:"Amazon Web Services",fill:"#232F3E",d:"M6.763 10.036c0 .296.032.535.088.71.064.176.144.368.256.576.04.063.056.127.056.183 0 .08-.048.16-.152.24l-.503.335a.383.383 0 0 1-.208.072c-.08 0-.16-.04-.239-.112a2.47 2.47 0 0 1-.287-.375 6.18 6.18 0 0 1-.248-.471c-.622.734-1.405 1.101-2.347 1.101-.67 0-1.205-.191-1.596-.574-.391-.384-.59-.894-.59-1.533 0-.678.239-1.23.726-1.644.487-.415 1.133-.623 1.955-.623.272 0 .551.024.846.064.296.04.6.104.918.176v-.583c0-.607-.127-1.03-.375-1.277-.255-.248-.686-.367-1.3-.367-.28 0-.568.031-.863.103-.295.072-.583.16-.862.272a2.287 2.287 0 0 1-.28.104.488.488 0 0 1-.127.023c-.112 0-.168-.08-.168-.247v-.391c0-.128.016-.224.056-.28a.597.597 0 0 1 .224-.167c.279-.144.614-.264 1.005-.36a4.84 4.84 0 0 1 1.246-.151c.95 0 1.644.216 2.091.647.439.43.662 1.085.662 1.963v2.586zm-3.24 1.214c.263 0 .534-.048.822-.144.287-.096.543-.271.758-.51.128-.152.224-.32.272-.512.047-.191.08-.423.08-.694v-.335a6.66 6.66 0 0 0-.735-.136 6.02 6.02 0 0 0-.75-.048c-.535 0-.926.104-1.19.32-.263.215-.39.518-.39.917 0 .375.095.655.295.846.191.2.47.296.838.296zm6.41.862c-.144 0-.24-.024-.304-.08-.064-.048-.12-.16-.168-.311L7.586 5.55a1.398 1.398 0 0 1-.072-.32c0-.128.064-.2.191-.2h.783c.151 0 .255.025.31.08.065.048.113.16.16.312l1.342 5.284 1.245-5.284c.04-.16.088-.264.151-.312a.549.549 0 0 1 .32-.08h.638c.152 0 .256.025.32.08.063.048.12.16.151.312l1.261 5.348 1.381-5.348c.048-.16.104-.264.16-.312a.52.52 0 0 1 .311-.08h.743c.127 0 .2.065.2.2 0 .04-.009.08-.017.128a1.137 1.137 0 0 1-.056.2l-1.923 6.17c-.048.16-.104.263-.168.311a.51.51 0 0 1-.303.08h-.687c-.151 0-.255-.024-.32-.08-.063-.056-.119-.16-.15-.32l-1.238-5.148-1.23 5.14c-.04.16-.087.264-.15.32-.065.056-.177.08-.32.08zm10.256.215c-.415 0-.83-.048-1.229-.143-.399-.096-.71-.2-.918-.32-.128-.071-.215-.151-.247-.223a.563.563 0 0 1-.048-.224v-.407c0-.167.064-.247.183-.247.048 0 .096.008.144.024.048.016.12.048.2.08.271.12.566.215.878.279.319.064.63.096.95.096.502 0 .894-.088 1.165-.264a.86.86 0 0 0 .415-.758.777.777 0 0 0-.215-.559c-.144-.151-.416-.287-.807-.415l-1.157-.36c-.583-.183-1.014-.454-1.277-.813a1.902 1.902 0 0 1-.4-1.158c0-.335.073-.63.216-.886.144-.255.335-.479.575-.654.24-.184.51-.32.83-.415.32-.096.655-.136 1.006-.136.175 0 .359.008.535.032.183.024.35.056.518.088.16.04.312.08.455.127.144.048.256.096.336.144a.69.69 0 0 1 .24.2.43.43 0 0 1 .071.263v.375c0 .168-.064.256-.184.256a.83.83 0 0 1-.303-.096 3.652 3.652 0 0 0-1.532-.311c-.455 0-.815.071-1.062.223-.248.152-.375.383-.375.71 0 .224.08.416.24.567.159.152.454.304.877.44l1.134.358c.574.184.99.44 1.237.767.247.327.367.702.367 1.117 0 .343-.072.655-.207.926-.144.272-.336.511-.583.703-.248.2-.543.343-.886.447-.36.111-.734.167-1.142.167zM21.698 16.207c-2.626 1.94-6.442 2.969-9.722 2.969-4.598 0-8.74-1.7-11.87-4.526-.247-.223-.024-.527.272-.351 3.384 1.963 7.559 3.153 11.877 3.153 2.914 0 6.114-.607 9.06-1.852.439-.2.814.287.383.607zM22.792 14.961c-.336-.43-2.22-.207-3.074-.103-.255.032-.295-.192-.063-.36 1.5-1.053 3.967-.75 4.254-.399.287.36-.08 2.826-1.485 4.007-.215.184-.423.088-.327-.151.32-.79 1.03-2.57.695-2.994z"},figma:{title:"Figma",fill:"#F24E1E",d:"M15.852 8.981h-4.588V0h4.588c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.491-4.49 4.491zM12.735 7.51h3.117c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-3.117V7.51zm0 1.471H8.148c-2.476 0-4.49-2.014-4.49-4.49S5.672 0 8.148 0h4.588v8.981zm-4.587-7.51c-1.665 0-3.019 1.355-3.019 3.019s1.354 3.02 3.019 3.02h3.117V1.471H8.148zm4.587 15.019H8.148c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h4.588v8.98zM8.148 8.981c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h3.117V8.981H8.148zM8.172 24c-2.489 0-4.515-2.014-4.515-4.49s2.014-4.49 4.49-4.49h4.588v4.441c0 2.503-2.047 4.539-4.563 4.539zm-.024-7.51a3.023 3.023 0 0 0-3.019 3.019c0 1.665 1.365 3.019 3.044 3.019 1.705 0 3.093-1.376 3.093-3.068v-2.97H8.148zm7.704 0h-.098c-2.476 0-4.49-2.014-4.49-4.49s2.014-4.49 4.49-4.49h.098c2.476 0 4.49 2.014 4.49 4.49s-2.014 4.49-4.49 4.49zm-.097-7.509c-1.665 0-3.019 1.355-3.019 3.019s1.355 3.019 3.019 3.019h.098c1.665 0 3.019-1.355 3.019-3.019s-1.355-3.019-3.019-3.019h-.098z"},airtable:{title:"Airtable",fill:"#18BFFF",d:"M11.992 1.966c-.434 0-.87.086-1.28.257L1.779 5.917c-.503.208-.49.908.012 1.116l8.982 3.558a3.266 3.266 0 0 0 2.454 0l8.982-3.558c.503-.196.503-.908.012-1.116l-8.957-3.694a3.255 3.255 0 0 0-1.272-.257zM23.4 8.056a.589.589 0 0 0-.222.045l-10.012 3.877a.612.612 0 0 0-.38.564v8.896a.6.6 0 0 0 .821.552L23.62 18.1a.583.583 0 0 0 .38-.551V8.653a.6.6 0 0 0-.6-.596zM.676 8.095a.644.644 0 0 0-.48.19C.086 8.396 0 8.53 0 8.69v8.355c0 .442.515.737.908.54l6.27-3.006.307-.147 2.969-1.436c.466-.22.43-.908-.061-1.092L.883 8.138a.57.57 0 0 0-.207-.044z"},intercom:{title:"Intercom",fill:"#6AFDEF",d:"M21 0H3C1.343 0 0 1.343 0 3v18c0 1.658 1.343 3 3 3h18c1.658 0 3-1.342 3-3V3c0-1.657-1.342-3-3-3zm-5.801 4.399c0-.44.36-.8.802-.8.44 0 .8.36.8.8v10.688c0 .442-.36.801-.8.801-.443 0-.802-.359-.802-.801V4.399zM11.2 3.994c0-.44.357-.799.8-.799s.8.359.8.799v11.602c0 .44-.357.8-.8.8s-.8-.36-.8-.8V3.994zm-4 .405c0-.44.359-.8.799-.8.443 0 .802.36.802.8v10.688c0 .442-.36.801-.802.801-.44 0-.799-.359-.799-.801V4.399zM3.199 6c0-.442.36-.8.802-.8.44 0 .799.358.799.8v7.195c0 .441-.359.8-.799.8-.443 0-.802-.36-.802-.8V6zM20.52 18.202c-.123.105-3.086 2.593-8.52 2.593-5.433 0-8.397-2.486-8.521-2.593-.335-.288-.375-.792-.086-1.128.285-.334.79-.375 1.125-.09.047.041 2.693 2.211 7.481 2.211 4.848 0 7.456-2.186 7.479-2.207.334-.289.839-.25 1.128.086.289.336.25.84-.086 1.128zm.281-5.007c0 .441-.36.8-.801.8-.441 0-.801-.36-.801-.8V6c0-.442.361-.8.801-.8.441 0 .801.357.801.8v7.195z"},posthog:{title:"PostHog",fill:"currentColor",d:"M9.854 14.5 5 9.647.854 5.5A.5.5 0 0 0 0 5.854V8.44a.5.5 0 0 0 .146.353L5 13.647l.147.146L9.854 18.5l.146.147v-.049c.065.03.134.049.207.049h2.586a.5.5 0 0 0 .353-.854L9.854 14.5zm0-5-4-4a.487.487 0 0 0-.409-.144.515.515 0 0 0-.356.21.493.493 0 0 0-.089.288V8.44a.5.5 0 0 0 .147.353l9 9a.5.5 0 0 0 .853-.354v-2.585a.5.5 0 0 0-.146-.354l-5-5zm1-4a.5.5 0 0 0-.854.354V8.44a.5.5 0 0 0 .147.353l4 4a.5.5 0 0 0 .853-.354V9.854a.5.5 0 0 0-.146-.354l-4-4zm12.647 11.515a3.863 3.863 0 0 1-2.232-1.1l-4.708-4.707a.5.5 0 0 0-.854.354v6.585a.5.5 0 0 0 .5.5H23.5a.5.5 0 0 0 .5-.5v-.6c0-.276-.225-.497-.499-.532zm-5.394.032a.8.8 0 1 1 0-1.6.8.8 0 0 1 0 1.6zM.854 15.5a.5.5 0 0 0-.854.354v2.293a.5.5 0 0 0 .5.5h2.293c.222 0 .39-.135.462-.309a.493.493 0 0 0-.109-.545L.854 15.501zM5 14.647.854 10.5a.5.5 0 0 0-.854.353v2.586a.5.5 0 0 0 .146.353L4.854 18.5l.146.147h2.793a.5.5 0 0 0 .353-.854L5 14.647z"},datadog:{title:"Datadog",fill:"#632CA6",d:"M19.57 17.04l-1.997-1.316-1.665 2.782-1.937-.567-1.706 2.604.087.82 9.274-1.71-.538-5.794zm-8.649-2.498l1.488-.204c.241.108.409.15.697.223.45.117.97.23 1.741-.16.18-.088.553-.43.704-.625l6.096-1.106.622 7.527-10.444 1.882zm11.325-2.712l-.602.115L20.488 0 .789 2.285l2.427 19.693 2.306-.334c-.184-.263-.471-.581-.96-.989-.68-.564-.44-1.522-.039-2.127.53-1.022 3.26-2.322 3.106-3.956-.056-.594-.15-1.368-.702-1.898-.02.22.017.432.017.432s-.227-.289-.34-.683c-.112-.15-.2-.199-.319-.4-.085.233-.073.503-.073.503s-.186-.437-.216-.807c-.11.166-.137.48-.137.48s-.241-.69-.186-1.062c-.11-.323-.436-.965-.343-2.424.6.421 1.924.321 2.44-.439.171-.251.288-.939-.086-2.293-.24-.868-.835-2.16-1.066-2.651l-.028.02c.122.395.374 1.223.47 1.625.293 1.218.372 1.642.234 2.204-.116.488-.397.808-1.107 1.165-.71.358-1.653-.514-1.713-.562-.69-.55-1.224-1.447-1.284-1.883-.062-.477.275-.763.445-1.153-.243.07-.514.192-.514.192s.323-.334.722-.624c.165-.109.262-.178.436-.323a9.762 9.762 0 0 0-.456.003s.42-.227.855-.392c-.318-.014-.623-.003-.623-.003s.937-.419 1.678-.727c.509-.208 1.006-.147 1.286.257.367.53.752.817 1.569.996.501-.223.653-.337 1.284-.509.554-.61.99-.688.99-.688s-.216.198-.274.51c.314-.249.66-.455.66-.455s-.134.164-.259.426l.03.043c.366-.22.797-.394.797-.394s-.123.156-.268.358c.277-.002.838.012 1.056.037 1.285.028 1.552-1.374 2.045-1.55.618-.22.894-.353 1.947.68.903.888 1.609 2.477 1.259 2.833-.294.295-.874-.115-1.516-.916a3.466 3.466 0 0 1-.716-1.562 1.533 1.533 0 0 0-.497-.85s.23.51.23.96c0 .246.03 1.165.424 1.68-.039.076-.057.374-.1.43-.458-.554-1.443-.95-1.604-1.067.544.445 1.793 1.468 2.273 2.449.453.927.186 1.777.416 1.997.065.063.976 1.197 1.15 1.767.306.994.019 2.038-.381 2.685l-1.117.174c-.163-.045-.273-.068-.42-.153.08-.143.241-.5.243-.572l-.063-.111c-.348.492-.93.97-1.414 1.245-.633.359-1.363.304-1.838.156-1.348-.415-2.623-1.327-2.93-1.566 0 0-.01.191.048.234.34.383 1.119 1.077 1.872 1.56l-1.605.177.759 5.908c-.337.048-.39.071-.757.124-.325-1.147-.946-1.895-1.624-2.332-.599-.384-1.424-.47-2.214-.314l-.05.059a2.851 2.851 0 0 1 1.863.444c.654.413 1.181 1.481 1.375 2.124.248.822.42 1.7-.248 2.632-.476.662-1.864 1.028-2.986.237.3.481.705.876 1.25.95.809.11 1.577-.03 2.106-.574.452-.464.69-1.434.628-2.456l.714-.104.258 1.834 11.827-1.424zM15.05 6.848c-.034.075-.085.125-.007.37l.004.014.013.032.032.073c.14.287.295.558.552.696.067-.011.136-.019.207-.023.242-.01.395.028.492.08.009-.048.01-.119.005-.222-.018-.364.072-.982-.626-1.308-.264-.122-.634-.084-.757.068a.302.302 0 0 1 .058.013c.186.066.06.13.027.207m1.958 3.392c-.092-.05-.52-.03-.821.005-.574.068-1.193.267-1.328.372-.247.191-.135.523.047.66.511.382.96.638 1.432.575.29-.038.546-.497.728-.914.124-.288.124-.598-.058-.698m-5.077-2.942c.162-.154-.805-.355-1.556.156-.554.378-.571 1.187-.041 1.646.053.046.096.078.137.104a4.77 4.77 0 0 1 1.396-.412c.113-.125.243-.345.21-.745-.044-.542-.455-.456-.146-.749"},algolia:{title:"Algolia",fill:"#003DFF",d:"M12 0C5.445 0 .103 5.285.01 11.817c-.097 6.634 5.285 12.131 11.92 12.17a11.91 11.91 0 0 0 5.775-1.443.281.281 0 0 0 .052-.457l-1.122-.994a.79.79 0 0 0-.833-.14 9.693 9.693 0 0 1-3.923.77c-5.36-.067-9.692-4.527-9.607-9.888.084-5.293 4.417-9.573 9.73-9.573h9.73v17.296l-5.522-4.907a.407.407 0 0 0-.596.063 4.52 4.52 0 0 1-3.934 1.793 4.538 4.538 0 0 1-4.192-4.168 4.53 4.53 0 0 1 4.512-4.872 4.532 4.532 0 0 1 4.509 4.126c.018.205.11.397.265.533l1.438 1.275a.28.28 0 0 0 .462-.158 6.82 6.82 0 0 0 .099-1.725c-.232-3.376-2.966-6.092-6.345-6.3-3.873-.24-7.11 2.79-7.214 6.588-.1 3.7 2.933 6.892 6.634 6.974a6.75 6.75 0 0 0 4.136-1.294l7.212 6.394a.48.48 0 0 0 .797-.36V.456A.456.456 0 0 0 23.54 0Z"},cloudflare:{title:"Cloudflare",fill:"#F38020",d:"M16.5088 16.8447c.1475-.5068.0908-.9707-.1553-1.3154-.2246-.3164-.6045-.499-1.0615-.5205l-8.6592-.1123a.1559.1559 0 0 1-.1333-.0713c-.0283-.042-.0351-.0986-.021-.1553.0278-.084.1123-.1484.2036-.1562l8.7359-.1123c1.0351-.0489 2.1601-.8868 2.5537-1.9136l.499-1.3013c.0215-.0561.0293-.1128.0147-.168-.5625-2.5463-2.835-4.4453-5.5499-4.4453-2.5039 0-4.6284 1.6177-5.3876 3.8614-.4927-.3658-1.1187-.5625-1.794-.499-1.2026.119-2.1665 1.083-2.2861 2.2856-.0283.31-.0069.6128.0635.894C1.5683 13.171 0 14.7754 0 16.752c0 .1748.0142.3515.0352.5273.0141.083.0844.1475.1689.1475h15.9814c.0909 0 .1758-.0645.2032-.1553l.12-.4268zm2.7568-5.5634c-.0771 0-.1611 0-.2383.0112-.0566 0-.1054.0415-.127.0976l-.3378 1.1744c-.1475.5068-.0918.9707.1543 1.3164.2256.3164.6055.498 1.0625.5195l1.8437.1133c.0557 0 .1055.0263.1329.0703.0283.043.0351.1074.0214.1562-.0283.084-.1132.1485-.204.1553l-1.921.1123c-1.041.0488-2.1582.8867-2.5527 1.914l-.1406.3585c-.0283.0713.0215.1416.0986.1416h6.5977c.0771 0 .1474-.0489.169-.126.1122-.4082.1757-.837.1757-1.2803 0-2.6025-2.125-4.727-4.7344-4.727"},upstash:{title:"Upstash",fill:"#00E9A3",d:"M13.8027 0C11.193 0 8.583.9952 6.5918 2.9863c-3.9823 3.9823-3.9823 10.4396 0 14.4219 1.9911 1.9911 5.2198 1.9911 7.211 0 1.991-1.9911 1.991-5.2198 0-7.211L12 12c.9956.9956.9956 2.6098 0 3.6055-.9956.9955-2.6099.9955-3.6055 0-2.9866-2.9868-2.9866-7.8297 0-10.8164 2.9868-2.9868 7.8297-2.9868 10.8164 0l1.8028-1.8028C19.0225.9952 16.4125 0 13.8027 0zM12 12c-.9956-.9956-.9956-2.6098 0-3.6055.9956-.9955 2.6098-.9955 3.6055 0 2.9867 2.9868 2.9867 7.8297 0 10.8164-2.9867 2.9868-7.8297 2.9868-10.8164 0l-1.8028 1.8028c3.9823 3.9822 10.4396 3.9822 14.4219 0 3.9823-3.9824 3.9823-10.4396 0-14.4219-.9956-.9956-2.3006-1.4922-3.6055-1.4922-1.3048 0-2.6099.4966-3.6054 1.4922-1.9912 1.9912-1.9912 5.2198 0 7.211z"},mixpanel:{title:"Mixpanel",fill:"#7856FF",d:"M6.967 9.996h3.053c-.763-.477-1.048-1.145-1.431-2.384L7.443 3.366C6.919 1.458 6.49.551 4.39.551H.004v1.145h.621c1.286 0 1.431.477 1.814 1.908L3.44 7.326c.524 1.814 1.337 2.67 3.53 2.67h-.003Zm7.06 0h3.053c2.194 0 2.956-.86 3.484-2.67l1.001-3.722c.382-1.431.57-1.908 1.814-1.908H24V.551h-4.34c-2.146 0-2.576.86-3.053 2.815l-1.145 4.246c-.384 1.286-.673 1.907-1.435 2.384Zm-4.007 4.008h4.007V9.996H10.02v4.008ZM0 23.449h4.39c2.1 0 2.529-.907 3.053-2.815l1.146-4.246c.383-1.239.668-1.907 1.431-2.384H6.967c-2.194 0-3.007.86-3.531 2.67l-1.001 3.722c-.383 1.431-.524 1.907-1.814 1.907H0v1.146Zm19.65 0h4.343v-1.146h-.622c-1.239 0-1.431-.476-1.814-1.907l-1.001-3.722c-.524-1.814-1.286-2.67-3.483-2.67h-3.046c.762.477 1.041 1.098 1.424 2.384l1.145 4.246c.477 1.955.907 2.815 3.054 2.815Z"},gemini:{title:"Google Gemini",fill:"#8E75B2",d:"M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81"}};var $1=G0(a7(),1),CR="https://brand.volter.ai/logo/twin-world/svg?size=64&variant=mono";function i7({href:G,onClick:L}){return $1.jsxDEV("h1",{children:$1.jsxDEV("a",{href:G,onClick:L,children:[$1.jsxDEV("img",{src:CR,alt:"",width:24,height:24,style:{verticalAlign:"middle"}},void 0,!1,void 0,this),$1.jsxDEV("span",{className:"brand-name",children:" Volter World"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}async function U8(G){return(await G.json().catch(()=>({}))).error??`answered ${G.status}`}function Jq(G,L,A=0,O=""){let[w,T]=S2.useState({state:"loading"});return S2.useEffect(()=>{T({state:"loading"})},[O,L]),S2.useEffect(()=>{if(!L)return;let k=!0;return(async()=>{try{let I=await G(L),h=I.ok?{state:"ok",data:await I.json()}:{state:"error",status:I.status,error:await U8(I)};if(k)T(h)}catch(I){if(k)T({state:"error",status:0,error:String(I)})}})(),()=>{k=!1}},[O,L,A]),w}function D4({load:G,what:L,retry:A,lines:O=3}){if(G.state==="loading")return $1.jsxDEV(n7,{lines:O,label:`Loading ${L}…`},void 0,!1,void 0,this);if(G.state==="error")return $1.jsxDEV("div",{role:"alert",className:"error-state",children:[$1.jsxDEV("span",{children:["Could not read ",L,": ",G.error]},void 0,!0,void 0,this),A?$1.jsxDEV("button",{type:"button",onClick:A,children:"Try again"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this);return null}function n7({lines:G=3,label:L="Loading…"}){return $1.jsxDEV("div",{className:"skeleton",role:"status","aria-label":L,children:Array.from({length:G},(A,O)=>$1.jsxDEV("span",{style:{width:`${[92,76,84,64,88][O%5]}%`}},O,!1,void 0,this))},void 0,!1,void 0,this)}function Gq({iso:G,time:L}){if(!G)return $1.jsxDEV("span",{children:"—"},void 0,!1,void 0,this);let A=new Date(G);return $1.jsxDEV("time",{dateTime:G,title:G,children:Number.isNaN(A.getTime())?G:L?A.toLocaleTimeString():A.toLocaleString()},void 0,!1,void 0,this)}var i0=(G)=>G?new Date(G).toLocaleString():"—",Y4=(G)=>{let L=Date.parse(G);return Number.isNaN(L)?G:new Date(L).toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})};function B3(G){let L=G?Date.parse(G):Number.NaN;if(Number.isNaN(L))return"—";let A=Math.max(0,Math.round((Date.now()-L)/1000));return A<60?"just now":A<3600?`${Math.round(A/60)}m ago`:A<86400?`${Math.round(A/3600)}h ago`:`${Math.round(A/86400)}d ago`}var TR={github:"GitHub",openai:"OpenAI",aws:"AWS",hubspot:"HubSpot",paypal:"PayPal",youtube:"YouTube",tiktok:"TikTok",linkedin:"LinkedIn",xai:"xAI",sendgrid:"SendGrid",elevenlabs:"ElevenLabs",assemblyai:"AssemblyAI",planetscale:"PlanetScale",googleoauth:"Google sign-in",npm:"npm","npm-registry":"npm registry",posthog:"PostHog",mongodb:"MongoDB",pagerduty:"PagerDuty",mailgun:"Mailgun",turbopuffer:"turbopuffer"},Q3=(G)=>TR[G]??G.charAt(0).toUpperCase()+G.slice(1);function _Z({vendor:G}){let L=Qq[G];return $1.jsxDEV("span",{className:L?"mark logo":"mark","aria-hidden":"true",children:L?$1.jsxDEV("svg",{viewBox:"0 0 24 24",children:$1.jsxDEV("path",{d:L.d,fill:L.fill},void 0,!1,void 0,this)},void 0,!1,void 0,this):Q3(G).charAt(0)},void 0,!1,void 0,this)}function L5({of:G,small:L}){return $1.jsxDEV("span",{className:L?"mark world-mark small":"mark world-mark","aria-hidden":"true",children:(G||"+").charAt(0).toUpperCase()},void 0,!1,void 0,this)}var RZ=(G)=>{G.currentTarget.closest("details")?.removeAttribute("open")},$Y="volter.theme",Uq=()=>{try{let G=localStorage.getItem($Y);return G==="light"||G==="dark"?G:"system"}catch{return"system"}};function BY(G=Uq()){let L=document.documentElement;if(G==="system")L.removeAttribute("data-theme");else L.setAttribute("data-theme",G)}function qq(){let[G,L]=S2.useState(Uq),A=(O)=>{try{if(O==="system")localStorage.removeItem($Y);else localStorage.setItem($Y,O)}catch{}BY(O),L(O)};return $1.jsxDEV("div",{className:"theme-choice",role:"radiogroup","aria-label":"Theme",children:["system","light","dark"].map((O)=>$1.jsxDEV("button",{type:"button",role:"radio","aria-checked":G===O,onClick:()=>A(O),children:O==="system"?"System":O==="light"?"Light":"Dark"},O,!1,void 0,this))},void 0,!1,void 0,this)}function Lq(){return S2.useEffect(()=>{let G=()=>[...document.querySelectorAll("details.menu[open], details.clock-more[open]")],L=(O)=>{if(O.key!=="Escape"||document.querySelector("dialog[open]"))return;let w=G();if(!w.length)return;for(let T of w)T.removeAttribute("open");w[w.length-1].querySelector("summary")?.focus()},A=(O)=>{let w=O.target;for(let T of G())if(!w||!T.contains(w))T.removeAttribute("open")};return document.addEventListener("keydown",L),document.addEventListener("click",A),()=>{document.removeEventListener("keydown",L),document.removeEventListener("click",A)}},[]),null}function k0({open:G,onClose:L,title:A,children:O,footer:w,wide:T}){let k=S2.useRef(null),I=S2.useId();return S2.useEffect(()=>{let h=k.current;if(!h)return;if(G&&!h.open){h.showModal();let u=h.querySelector(".dialog-body :is(input:not([type=hidden]):not([disabled]), select, textarea)");if(u?.focus(),u instanceof HTMLInputElement&&u.value&&/^(text|search|email|url)$/.test(u.type))u.select()}if(!G&&h.open)h.close()},[G]),$1.jsxDEV("dialog",{ref:k,className:T==="window"?"dialog window":T?"dialog wide":"dialog","aria-labelledby":I,onClose:L,onCancel:(h)=>{h.preventDefault(),L()},onMouseDown:(h)=>{if(h.target===k.current)L()},children:G?$1.jsxDEV($1.Fragment,{children:[$1.jsxDEV("div",{className:"dialog-head",children:[$1.jsxDEV("h2",{id:I,children:A},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",className:"icon-button","aria-label":"Close",onClick:L,children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$1.jsxDEV("div",{className:"dialog-body",children:O},void 0,!1,void 0,this),w?$1.jsxDEV("div",{className:"dialog-foot",children:w},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null},void 0,!1,void 0,this)}var YY="volter:confirm";function H6(G){return new Promise((L)=>{window.dispatchEvent(new CustomEvent(YY,{detail:{ask:G,resolve:L}}))})}function Wq(){let[G,L]=S2.useState(null),[A,O]=S2.useState("");S2.useEffect(()=>{let I=(h)=>{O(""),L(h.detail)};return window.addEventListener(YY,I),()=>window.removeEventListener(YY,I)},[]);let w=(I)=>{G?.resolve(I),L(null)},T=G?.ask,k=!T?.typed||A===T.typed;return $1.jsxDEV(k0,{open:Boolean(G),onClose:()=>w(!1),title:T?.title??"",footer:$1.jsxDEV($1.Fragment,{children:[$1.jsxDEV("button",{type:"button",onClick:()=>w(!1),children:"Cancel"},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",className:T?.danger?"danger-button":"primary",disabled:!k,onClick:()=>w(!0),children:T?.action},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:[T?.body?$1.jsxDEV("div",{className:"confirm-body",children:T.body},void 0,!1,void 0,this):null,T?.typed?$1.jsxDEV("div",{className:"typed-confirm",children:[$1.jsxDEV("p",{children:["Type ",$1.jsxDEV("code",{children:T.typed},void 0,!1,void 0,this)," to confirm."]},void 0,!0,void 0,this),$1.jsxDEV("input",{autoFocus:!0,"aria-label":`Type ${T.typed} to confirm`,value:A,onChange:(I)=>O(I.target.value),onKeyDown:(I)=>{if(I.key==="Enter"&&k)w(!0)},autoComplete:"off",spellCheck:!1},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}var MY="volter:toast";function u2(G,L="ok"){window.dispatchEvent(new CustomEvent(MY,{detail:{text:G,kind:L}}))}function Kq(){let[G,L]=S2.useState([]);return S2.useEffect(()=>{let A=0,O=(w)=>{let{text:T,kind:k}=w.detail,I=++A;if(L((h)=>[...h.slice(-3),{id:I,text:T,kind:k}]),k!=="error")setTimeout(()=>L((h)=>h.filter((u)=>u.id!==I)),4500)};return window.addEventListener(MY,O),()=>window.removeEventListener(MY,O)},[]),$1.jsxDEV("div",{className:"toasts",role:"region","aria-label":"Notifications",children:G.map((A)=>$1.jsxDEV("div",{className:`toast ${A.kind}`,role:A.kind==="error"?"alert":"status",children:[$1.jsxDEV("span",{children:A.text},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",className:"icon-button","aria-label":"Dismiss",onClick:()=>L((O)=>O.filter((w)=>w.id!==A.id)),children:"✕"},void 0,!1,void 0,this)]},A.id,!0,void 0,this))},void 0,!1,void 0,this)}function W5({value:G,label:L,secret:A}){let[O,w]=S2.useState(!1);return $1.jsxDEV("div",{className:"copy-field",children:[L?$1.jsxDEV("span",{className:"copy-label",children:L},void 0,!1,void 0,this):null,$1.jsxDEV("div",{className:"copy-row",children:[$1.jsxDEV("input",{readOnly:!0,value:G,"aria-label":L??"Value",onFocus:(k)=>k.currentTarget.select(),spellCheck:!1},void 0,!1,void 0,this),$1.jsxDEV("button",{type:"button",onClick:()=>{navigator.clipboard?.writeText(G).then(()=>{w(!0),setTimeout(()=>w(!1),1600),u2(A?"Copied. Keep it somewhere safe":"Copied")}).catch(()=>u2("Your browser would not copy it: select it and copy","error"))},children:O?"Copied":"Copy"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function q8({label:G,items:L}){return $1.jsxDEV("details",{className:"menu row-menu",children:[$1.jsxDEV("summary",{className:"icon-button",role:"button","aria-haspopup":"menu","aria-label":G,title:G,children:"⋯"},void 0,!1,void 0,this),$1.jsxDEV("div",{className:"popover menu-list",role:"menu",children:L.filter((A)=>Boolean(A)).map((A)=>A.href?$1.jsxDEV("a",{role:"menuitem",href:A.href,className:A.danger?"danger-item":void 0,onClick:RZ,children:A.label},A.label,!1,void 0,this):$1.jsxDEV("button",{type:"button",role:"menuitem",disabled:A.disabled,className:A.danger?"danger-item":void 0,onClick:(O)=>{RZ(O),A.onSelect?.()},children:A.label},A.label,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function K5({title:G,children:L,action:A}){return $1.jsxDEV("div",{className:"empty-state",children:[$1.jsxDEV("p",{className:"empty-title",children:G},void 0,!1,void 0,this),L?$1.jsxDEV("div",{className:"empty-body",children:L},void 0,!1,void 0,this):null,A?$1.jsxDEV("div",{className:"empty-action",children:A},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function QY({label:G,value:L,limit:A,unit:O="",note:w}){let T=A?Math.min(1,L/A):0,k=!A?"calm":L>A?"full":T>=0.8?"near":"calm";return $1.jsxDEV("div",{className:`meter ${k}`,children:[$1.jsxDEV("div",{className:"meter-head",children:[$1.jsxDEV("span",{children:G},void 0,!1,void 0,this),$1.jsxDEV("span",{className:"meter-num",children:[L.toLocaleString(),O,A!==null?$1.jsxDEV("span",{className:"mode",children:[" of ",A.toLocaleString(),O]},void 0,!0,void 0,this):$1.jsxDEV("span",{className:"mode",children:" · no limit"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),A!==null?$1.jsxDEV("div",{className:"meter-track",role:"meter","aria-label":G,"aria-valuemin":0,"aria-valuemax":A,"aria-valuenow":L,children:$1.jsxDEV("span",{style:{width:`${Math.max(T>0?2:0,Math.round(T*100))}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this):null,w?$1.jsxDEV("div",{className:"meter-note mode",children:w},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function Rq({label:G,items:L}){return $1.jsxDEV("nav",{className:"subnav","aria-label":G,children:L.map((A)=>$1.jsxDEV("a",{href:A.href,"aria-current":A.on?"page":void 0,className:A.on?"on":void 0,onClick:A.onClick,children:A.label},A.href,!1,void 0,this))},void 0,!1,void 0,this)}function _q(){return S2.useEffect(()=>{let G=(A)=>{let O=document.querySelector("main.app"),w=A.target;if(O?.hasAttribute("data-drawer")&&w&&!w.closest(".side")&&!w.closest(".drawer-button"))O.removeAttribute("data-drawer")},L=(A)=>{if(A.key==="Escape")JY()};return document.addEventListener("click",G),document.addEventListener("keydown",L),()=>{document.removeEventListener("click",G),document.removeEventListener("keydown",L)}},[]),$1.jsxDEV("button",{type:"button",className:"icon-button drawer-button","aria-label":"Menu",onClick:()=>{document.querySelector("main.app")?.toggleAttribute("data-drawer")},children:"☰"},void 0,!1,void 0,this)}var JY=()=>{document.querySelector("main.app")?.removeAttribute("data-drawer")};var Fq=["account","help","new","sign-in","sign-out","settings","api","app","www","docs","status","operator"];function Aq(G={}){let L=(O,w)=>G.tools?`${w} (\`${O}\`)`:`\`${O}\``,A=["Set up Volter World for this app, so its calls to Stripe, Slack, GitHub, OpenAI and the other services it uses go to local twins instead of the real APIs. The app keeps its real SDKs and code.","",G.tools?"1. You have the Volter World tools (volter mcp). If the `volter` command is missing, install it: `npm install -g @volter/world`.":"1. Install the command and your agent tooling: `npm install -g @volter/world`, then `volter agents install --yes`.",`2. In the app's folder, ${L("volter world init --install","world_init")}: it detects the vendors the app calls and installs their twins. Show me the vendors it detected and why, before keeping them.`,`3. ${G.tools?"Start it with world_up":"Start it: `volter world up`"}, then run the tests inside it: ${L("volter world run -- <the test command>","world_run")}. Fix anything that fails because a call went to the real service.`,`4. Tell me what the app did at each vendor (${L("volter world log","world_log")}), and give me the dashboard link (${G.tools?"world_view":"`volter world view --no-open`, started in the background: it keeps running"}).`];if(G.platform){let O=G.world??"<org>/<world>";A.push(`5. Share it with my team on ${G.platform}: ${L(`volter login ${G.platform}`,"platform_login")} gives a link and a code for me to approve in my browser. Once I have, link it with ${L(`volter remote add origin ${O} --create`,"remote_link with create: true")}${G.world?"":" (ask me for <org>/<world>)"}, then send what the app did: ${L('volter world changeset -m "<what and why>"',"world_changeset")} and ${L("volter world push","world_push")}.`)}return A.push("","The guide: https://world.volter.ai/docs/guides/use-with-a-coding-agent.md"),A.join(`
236
236
  `)}var M=G0(a7(),1),WY=document.getElementById("root"),X0=window.location.origin,r7="volter.platform.support",PZ=(()=>{let G=WY.dataset.token??"";try{if(G)sessionStorage.setItem(r7,G);return G||(sessionStorage.getItem(r7)??"")}catch{return G}})();if(new URLSearchParams(window.location.search).has("support"))try{window.history.replaceState(null,"",window.location.pathname)}catch{}var KY="volter.platform.plan";{let G=new URLSearchParams(window.location.search).get("plan");if(G&&/^[a-z0-9-]{1,32}$/.test(G)){try{sessionStorage.setItem(KY,G)}catch{}try{let L=new URL(window.location.href);L.searchParams.delete("plan"),window.history.replaceState(null,"",`${L.pathname}${L.search}${L.hash}`)}catch{}}}var qY=()=>{try{return sessionStorage.getItem(KY)}catch{return null}},GY=(WY.dataset.vendors??"").split(",").filter(Boolean).map((G)=>{let[L,A]=G.split(":");return{vendor:L,supported:A==="s"}});async function a2(G,L={}){let A=L.headers?.["content-type"];return fetch(`${X0}${G}`,{...L,credentials:"same-origin",headers:{...L.headers??{},...PZ?{"x-volter-token":PZ}:{},...L.body&&!A?{"content-type":"application/json"}:{}}})}function M4(G,L=0){return Jq(a2,G,L)}async function Pq(){await a2("/-/sign-out",{method:"POST",redirect:"manual"}).catch(()=>null),window.location.assign("/?signed-out=1")}async function G2(G,L,A){let O=await a2(G,L).catch(()=>null);if(!O)return u2(`${X0} did not answer`,"error"),null;if(!O.ok)return u2(await U8(O),"error"),null;let w=await O.json().catch(()=>({}));if(A)u2(A);return w}var AZ=[["worlds","Worlds"],["members","Members"],["billing","Billing"],["activity","Activity"],["settings","Settings"]],wq=[["general","General"],["security","Security"],["tokens","Org tokens"],["webhooks","Webhooks"],["labs","Labs"],["support","Support access"]],Nq={account:"Account",help:"Help",new:"Create an org"};function Iq(){let G=window.location.pathname.split("/").filter(Boolean).map((k)=>{try{return decodeURIComponent(k)}catch{return""}}),[L,A,O]=G;if(!L)return{kind:"home"};if(L==="account"||L==="help"||L==="new")return{kind:"you",page:L};let w=AZ.find(([k])=>k===A)?.[0]??"worlds",T=w==="settings"?wq.find(([k])=>k===O)?.[0]??"general":void 0;return{kind:"org",org:L,page:w,...T?{sub:T}:{}}}var s7=(G)=>G.kind==="home"?"/":G.kind==="you"?`/${G.page}`:`/${encodeURIComponent(G.org)}${G.page==="worlds"?"":`/${G.page}`}${G.page==="settings"&&G.sub&&G.sub!=="general"?`/${G.sub}`:""}`;function b0(G,L=!1){if(L)window.history.replaceState(null,"",s7(G));else window.history.pushState(null,"",s7(G));window.dispatchEvent(new PopStateEvent("popstate")),window.scrollTo(0,0)}function R5({to:G,children:L,className:A,current:O}){return M.jsxDEV("a",{href:s7(G),className:A,"aria-current":O?"page":void 0,onClick:(w)=>{if(w.metaKey||w.ctrlKey||w.shiftKey)return;w.preventDefault(),RZ(w),JY(),b0(G)},children:L},void 0,!1,void 0,this)}var Oq=(G)=>(L)=>{if(L.metaKey||L.ctrlKey||L.shiftKey)return;L.preventDefault(),b0(G)},V2=(G)=>G.slug??G.id,E4=(G)=>G.role==="admin"||G.role==="org:admin",LY=/^[a-z0-9][a-z0-9-]{0,38}$/;function vR(){let[G,L]=x.useState(Iq());x.useEffect(()=>{let j=()=>L(Iq());return window.addEventListener("popstate",j),()=>window.removeEventListener("popstate",j)},[]);let A=M4("/-/platform"),[O,w]=x.useState(0),T=x.useCallback(()=>w((j)=>j+1),[]),[k,I]=x.useState({state:"loading"}),h=x.useCallback(async()=>{let j=await a2("/-/orgs").catch(()=>null);if(!j){I({state:"error",error:`${X0} did not answer`});return}if(j.status===401&&PZ){let Y1=!1;try{sessionStorage.removeItem(r7),Y1=sessionStorage.getItem(r7)===null}catch{}if(Y1){window.location.assign("/");return}I({state:"out"});return}if(j.status===401){I({state:"out"});return}if(!j.ok){I({state:"error",error:j.status===429?"You are asking faster than the platform allows. Wait a moment and try again.":await U8(j)});return}let y=await j.json();I({state:"in",person:y.person,orgs:y.orgs,invitations:y.invitations??[]})},[]);x.useEffect(()=>{h()},[h,O]);let u=M4(k.state==="in"?"/-/worlds":null,O);x.useEffect(()=>{document.body.className=k.state==="out"?"portal":""},[k.state]);let[S,W]=x.useState(!1);x.useEffect(()=>{let j=(y)=>{let Y1=y.target instanceof HTMLElement&&y.target.closest("input, textarea, select, [contenteditable]")!==null;if(y.key==="k"&&(y.metaKey||y.ctrlKey)||y.key==="/"&&!Y1)y.preventDefault(),W(!0)};return window.addEventListener("keydown",j),()=>window.removeEventListener("keydown",j)},[]),x.useEffect(()=>{document.title=G.kind==="org"?`${AZ.find(([j])=>j===G.page)?.[1]??""} · ${G.org} · Volter World`:G.kind==="you"?`${Nq[G.page]} · Volter World`:"Volter World"},[G]);let v=A.state==="ok"?A.data:null;if(k.state==="loading"||A.state==="loading")return M.jsxDEV(UY,{},void 0,!1,void 0,this);if(k.state==="out")return M.jsxDEV(bR,{info:v},void 0,!1,void 0,this);if(k.state==="error")return M.jsxDEV("main",{className:"boot",children:[M.jsxDEV(i7,{href:"/"},void 0,!1,void 0,this),M.jsxDEV("div",{role:"alert",className:"error-state",children:[M.jsxDEV("span",{children:k.error},void 0,!1,void 0,this),M.jsxDEV("button",{type:"button",onClick:()=>void h(),children:"Try again"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"button",onClick:()=>void Pq(),children:"Sign in again"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{person:m,orgs:V,invitations:c}=k,r=async(j)=>{await h(),T(),b0({kind:"org",org:j,page:"worlds"})},E=G.kind==="org"?V.find((j)=>j.slug===G.org||j.id===G.org)??null:null;if(G.kind==="home"){let j=Boolean(v?.billing&&qY()),y=j?V.find(E4):V[0];return b0(y?{kind:"org",org:V2(y),page:j?"billing":"worlds"}:{kind:"you",page:"new"},!0),M.jsxDEV(UY,{},void 0,!1,void 0,this)}if(G.kind==="org"&&E&&G.org!==V2(E))return b0({...G,org:V2(E)},!0),M.jsxDEV(UY,{},void 0,!1,void 0,this);let l=E??(G.kind==="you"?V[0]??null:null),i=l?E4(l):!1,_1=u.state==="ok"&&l?u.data.worlds.filter((j)=>j.name.startsWith(`${V2(l)}/`)):[],U1=G.kind==="you"?Nq[G.page]:G.kind==="org"?AZ.find(([j])=>j===G.page)[1]:"",t=(j)=>({kind:"org",org:l?V2(l):"",page:j}),n=(j)=>G.kind==="org"&&G.page===j,X1=()=>{try{sessionStorage.removeItem(r7)}catch{}if(PZ)window.location.assign("/");else Pq()},i1=AZ.filter(([j])=>(j!=="billing"||v?.billing)&&(j!=="activity"||i));return M.jsxDEV("main",{className:"app",children:[m.support?M.jsxDEV("p",{role:"alert",className:"banner",children:["Viewing as support: read only, until ",i0(m.support.until),". Reason on record: ",m.support.reason,"."]},void 0,!0,void 0,this):null,M.jsxDEV("header",{children:[M.jsxDEV(_q,{},void 0,!1,void 0,this),M.jsxDEV(i7,{href:"/",onClick:(j)=>{j.preventDefault(),b0({kind:"home"})}},void 0,!1,void 0,this),M.jsxDEV("nav",{"aria-label":"breadcrumb",className:"crumbs",children:l&&G.kind==="org"?M.jsxDEV(M.Fragment,{children:[M.jsxDEV("span",{className:"crumb-sep","aria-hidden":"true",children:"/"},void 0,!1,void 0,this),M.jsxDEV(R5,{to:t("worlds"),className:"crumb-world",children:l.name},void 0,!1,void 0,this),G.page!=="worlds"?M.jsxDEV(M.Fragment,{children:[M.jsxDEV("span",{className:"crumb-sep","aria-hidden":"true",children:"/"},void 0,!1,void 0,this),M.jsxDEV("span",{children:U1},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this):M.jsxDEV(M.Fragment,{children:[M.jsxDEV("span",{className:"crumb-sep","aria-hidden":"true",children:"/"},void 0,!1,void 0,this),M.jsxDEV("span",{children:U1},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("button",{type:"button",className:"search-button",onClick:()=>W(!0),"aria-label":"Search: jump to an org, a page or a World",children:[M.jsxDEV("span",{children:"Search…"},void 0,!1,void 0,this),M.jsxDEV("kbd",{children:SR},void 0,!1,void 0,this)]},void 0,!0,void 0,this),v?.site?M.jsxDEV("a",{href:`${v.site}/docs/`,className:"head-link",children:"Docs"},void 0,!1,void 0,this):null,M.jsxDEV("details",{className:"menu avatar-menu",children:[M.jsxDEV("summary",{role:"button","aria-haspopup":"menu","aria-label":`You: ${m.email??m.name??m.id}`,children:M.jsxDEV(L5,{of:m.name??m.email??"?",small:!0},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("div",{className:"popover menu-list",role:"menu",children:[M.jsxDEV("div",{className:"menu-who",children:[M.jsxDEV("strong",{children:m.name??m.email??m.id},void 0,!1,void 0,this),m.name&&m.email?M.jsxDEV("span",{className:"mode",children:m.email},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV(R5,{to:{kind:"you",page:"account"},children:"Account and tokens"},void 0,!1,void 0,this),v?.support?M.jsxDEV(R5,{to:{kind:"you",page:"help"},children:"Help"},void 0,!1,void 0,this):null,v?.site?M.jsxDEV("a",{role:"menuitem",href:`${v.site}/docs/`,children:"Docs"},void 0,!1,void 0,this):null,M.jsxDEV("div",{className:"menu-theme",children:[M.jsxDEV("span",{className:"mode",children:"Theme"},void 0,!1,void 0,this),M.jsxDEV(qq,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"button",role:"menuitem",onClick:X1,children:"Sign out"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"shell",children:[M.jsxDEV("aside",{className:"side",children:M.jsxDEV("nav",{"aria-label":"Your orgs and pages",className:"side-nav",children:[M.jsxDEV(wR,{orgs:V,shown:l},void 0,!1,void 0,this),l?M.jsxDEV(M.Fragment,{children:[M.jsxDEV("p",{className:"side-group",children:"Org"},void 0,!1,void 0,this),i1.map(([j,y])=>M.jsxDEV(R5,{to:t(j),className:n(j)?"on":void 0,current:n(j),children:y},j,!1,void 0,this))]},void 0,!0,void 0,this):null,M.jsxDEV("p",{className:"side-group",children:"You"},void 0,!1,void 0,this),M.jsxDEV(R5,{to:{kind:"you",page:"account"},className:G.kind==="you"&&G.page==="account"?"on":void 0,current:G.kind==="you"&&G.page==="account",children:"Account"},void 0,!1,void 0,this),v?.support?M.jsxDEV(R5,{to:{kind:"you",page:"help"},className:G.kind==="you"&&G.page==="help"?"on":void 0,current:G.kind==="you"&&G.page==="help",children:"Help"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("div",{className:"content",children:[c.length&&!(G.kind==="you"&&G.page==="new")?M.jsxDEV(kq,{list:c,onJoined:r},void 0,!1,void 0,this):null,G.kind==="org"&&!E?M.jsxDEV(K5,{title:`You are not a member of ${G.org}`,action:M.jsxDEV(R5,{to:{kind:"home"},className:"button",children:"Your orgs"},void 0,!1,void 0,this),children:"An org shows here once one of its admins adds you, or you accept an invitation to it."},void 0,!1,void 0,this):null,E?.held&&G.kind==="org"&&G.page!=="billing"?M.jsxDEV("p",{role:"alert",children:["This org is held: ",E.held,"."]},void 0,!0,void 0,this):null,G.kind==="org"&&E&&G.page==="worlds"?M.jsxDEV(yR,{org:E,rows:_1,load:u,orgs:V.map(V2),allRows:u.state==="ok"?u.data.worlds.length:0,version:O,readOnly:Boolean(m.support)||Boolean(E.held),onChanged:T},void 0,!1,void 0,this):null,G.kind==="org"&&E&&G.page==="members"?M.jsxDEV(fR,{org:E,me:m.id,onChanged:T},void 0,!1,void 0,this):null,G.kind==="org"&&E&&G.page==="billing"?v?.billing?M.jsxDEV(VR,{org:V2(E),admin:E4(E),version:O,flags:E.flags??{}},void 0,!1,void 0,this):M.jsxDEV(K5,{title:"No billing here",children:"This platform does not bill: nothing here is limited or priced."},void 0,!1,void 0,this):null,G.kind==="org"&&E&&G.page==="settings"?M.jsxDEV(mR,{org:E,sub:G.sub??"general",info:v,version:O,onChanged:T,onDeleted:()=>{T(),b0({kind:"home"})}},void 0,!1,void 0,this):null,G.kind==="org"&&E&&G.page==="activity"?E4(E)?M.jsxDEV(rR,{org:V2(E),version:O},void 0,!1,void 0,this):M.jsxDEV(K5,{title:"Activity is for admins",children:"An org's activity log is its admins'."},void 0,!1,void 0,this):null,G.kind==="you"&&G.page==="account"?M.jsxDEV(tR,{person:m,info:v,onSignOut:X1},void 0,!1,void 0,this):null,G.kind==="you"&&G.page==="help"?v?.support?M.jsxDEV(eR,{orgs:V.map(V2),onChanged:T},void 0,!1,void 0,this):M.jsxDEV(K5,{title:"No Help form here",children:"This platform has no Help form: ask whoever runs it."},void 0,!1,void 0,this):null,G.kind==="you"&&G.page==="new"?M.jsxDEV(oR,{first:V.length===0,site:v?.site,invitations:c,onJoined:r,onMade:async(j)=>{await h(),T(),b0({kind:"org",org:j,page:v?.billing&&qY()?"billing":"worlds"})}},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(kR,{open:S,onClose:()=>W(!1),orgs:V,shown:l,worlds:u.state==="ok"?u.data.worlds:[],pages:i1,support:Boolean(v?.support)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function UY(){return M.jsxDEV("main",{className:"app booting","aria-busy":"true",children:[M.jsxDEV("header",{children:M.jsxDEV(i7,{href:"/"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("div",{className:"shell",children:[M.jsxDEV("aside",{className:"side",children:M.jsxDEV(n7,{lines:6,label:"Opening…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("div",{className:"content",children:M.jsxDEV(n7,{lines:4,label:"Opening…"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function wR({orgs:G,shown:L}){let[A,O]=x.useState(""),w=G.filter((T)=>`${T.name} ${T.slug??""}`.toLowerCase().includes(A.trim().toLowerCase()));return M.jsxDEV("details",{className:"menu branch-picker top-picker",children:[M.jsxDEV("summary",{children:[M.jsxDEV(L5,{of:L?.name??"+",small:!0},void 0,!1,void 0,this),M.jsxDEV("span",{className:"branch-name",children:L?L.name:"No org yet"},void 0,!1,void 0,this),L?M.jsxDEV("span",{className:"badge",children:E4(L)?"admin":"member"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"popover",children:[G.length>4?M.jsxDEV("input",{type:"search","aria-label":"Find an org",placeholder:"Find an org…",value:A,onChange:(T)=>O(T.target.value)},void 0,!1,void 0,this):M.jsxDEV("p",{className:"mode",children:"Your orgs"},void 0,!1,void 0,this),M.jsxDEV("ul",{className:"branch-list",children:[w.map((T)=>M.jsxDEV("li",{children:M.jsxDEV(R5,{to:{kind:"org",org:V2(T),page:"worlds"},current:L?.id===T.id,children:[M.jsxDEV("span",{className:"vendor-cell",children:[M.jsxDEV(L5,{of:T.name,small:!0},void 0,!1,void 0,this),T.name]},void 0,!0,void 0,this),M.jsxDEV("span",{className:"mode",children:E4(T)?"admin":"member"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},T.id,!1,void 0,this)),w.length===0?M.jsxDEV("li",{className:"mode",children:"No org matches."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV(R5,{to:{kind:"you",page:"new"},className:"button",children:"+ Create an org"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var SR=typeof navigator<"u"&&/Mac|iPhone|iPad/.test(navigator.platform||navigator.userAgent)?"⌘K":"Ctrl K";function kR({open:G,onClose:L,orgs:A,shown:O,worlds:w,pages:T,support:k}){let[I,h]=x.useState(""),[u,S]=x.useState(0);x.useEffect(()=>{if(G)h(""),S(0)},[G]);let W=x.useMemo(()=>{let m=[];if(O)for(let[c,r]of T)m.push({label:r,hint:O.name,run:()=>b0({kind:"org",org:V2(O),page:c})});for(let c of w)m.push({label:`Open ${c.name}`,hint:"World",run:()=>{window.location.assign(`/-/worlds/${c.name}/open`)}});for(let c of A)if(c.id!==O?.id)m.push({label:`Switch to ${c.name}`,hint:"org",run:()=>b0({kind:"org",org:V2(c),page:"worlds"})});if(m.push({label:"Account and tokens",hint:"you",run:()=>b0({kind:"you",page:"account"})}),k)m.push({label:"Help",hint:"you",run:()=>b0({kind:"you",page:"help"})});m.push({label:"Create an org",hint:"new",run:()=>b0({kind:"you",page:"new"})});let V=I.trim().toLowerCase();return V?m.filter((c)=>`${c.label} ${c.hint}`.toLowerCase().includes(V)):m},[I,A,O,w,T,k]),v=(m)=>{if(!m)return;L(),m.run()};return M.jsxDEV(k0,{open:G,onClose:L,title:"Jump to",children:[M.jsxDEV("input",{autoFocus:!0,type:"search","aria-label":"Jump to",placeholder:"An org, a page or a World…",value:I,onChange:(m)=>{h(m.target.value),S(0)},onKeyDown:(m)=>{if(m.key==="ArrowDown")m.preventDefault(),S((V)=>Math.min(W.length-1,V+1));if(m.key==="ArrowUp")m.preventDefault(),S((V)=>Math.max(0,V-1));if(m.key==="Enter")m.preventDefault(),v(W[u])}},void 0,!1,void 0,this),M.jsxDEV("ul",{className:"palette",role:"listbox","aria-label":"Places",children:[W.slice(0,12).map((m,V)=>M.jsxDEV("li",{role:"option","aria-selected":V===u,children:M.jsxDEV("button",{type:"button",onMouseEnter:()=>S(V),onClick:()=>v(m),children:[M.jsxDEV("span",{children:m.label},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:m.hint},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},`${m.label}-${m.hint}`,!1,void 0,this)),W.length===0?M.jsxDEV("li",{className:"mode",children:"Nothing matches."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function bR({info:G}){let L=`${window.location.pathname}${window.location.search}`,A=new URLSearchParams(window.location.search).has("signed-out"),O=G?.provider.name??"your account";return M.jsxDEV("div",{className:"card",role:"main",children:[M.jsxDEV("div",{className:"brand",children:M.jsxDEV(i7,{href:"/"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("h2",{children:A?"Sign in to Volter World":"Sign in or create your account"},void 0,!1,void 0,this),A?M.jsxDEV("p",{role:"status",children:"You are signed out."},void 0,!1,void 0,this):M.jsxDEV("p",{children:"Your orgs, their Worlds and your teammates."},void 0,!1,void 0,this),M.jsxDEV("a",{className:"button primary wide",href:`/-/sign-in${L!=="/"&&!A?`?next=${encodeURIComponent(L)}`:""}`,children:G?.provider.kind==="volter"?"Continue with GitHub, Google or email":`Continue with ${O}`},void 0,!1,void 0,this),G?.provider.kind==="volter"?M.jsxDEV("p",{className:"small",children:"New here? Your account is made on the way, the one account for every Volter product."},void 0,!1,void 0,this):null,G?.site?M.jsxDEV("p",{className:"links",children:[M.jsxDEV("a",{href:`${G.site}/`,children:"Volter World"},void 0,!1,void 0,this),M.jsxDEV("a",{href:`${G.site}/docs/`,children:"Docs"},void 0,!1,void 0,this),M.jsxDEV("a",{href:`${G.site}/terms.html`,children:"Terms"},void 0,!1,void 0,this),M.jsxDEV("a",{href:`${G.site}/privacy.html`,children:"Privacy"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function B4({title:G,count:L,children:A,lede:O}){return M.jsxDEV("div",{className:"page-head",children:[M.jsxDEV("div",{className:"content-head",children:[M.jsxDEV("h2",{id:"page",children:[G,L!==void 0?M.jsxDEV("span",{className:"count",children:L},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),A?M.jsxDEV("div",{className:"head-actions",children:A},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),O?M.jsxDEV("p",{className:"lede",children:O},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)}function yR({org:G,rows:L,load:A,orgs:O,allRows:w,version:T,readOnly:k,onChanged:I}){let h=V2(G),[u,S]=x.useState(!1),[W,v]=x.useState(""),[m,V]=x.useState(null),[c,r]=x.useState(null),[E,l]=x.useState(null),i=async(y)=>{let Y1=`Read-only link · ${new Date().toLocaleDateString(void 0,{month:"short",day:"numeric"})}`,R1=await G2(`/-/worlds/${y.name}/keys`,{method:"POST",body:JSON.stringify({name:Y1,scope:"read",expiresInDays:30})});if(!R1?.key)return;let B2=y.origin??new URL(y.base).origin;l({world:y.name,url:`${B2}/-/console/${y.name}#${new URLSearchParams({token:R1.key}).toString()}`})},_1=new Map((G.worlds??[]).map((y)=>[y.name,y])),U1=L.filter((y)=>`${y.name} ${y.twins.map((Y1)=>Y1.vendor).join(" ")}`.toLowerCase().includes(W.trim().toLowerCase())),t=async(y)=>{if(await H6({title:`Delete ${y}?`,body:M.jsxDEV(M.Fragment,{children:"Its host stops serving it and its whole history goes with it. Apps and keys that use it stop working at once. This cannot be undone."},void 0,!1,void 0,this),action:"Delete World",danger:!0,typed:y.split("/")[1]??y})&&await G2(`/-/worlds/${y}`,{method:"DELETE"},`Deleted ${y}`))I()},n=!k?M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>S(!0),children:"Create World"},void 0,!1,void 0,this):null,[X1,i1]=x.useState(!1),j=async()=>{i1(!0);let y=await G2("/-/worlds/sample",{method:"POST",body:JSON.stringify({org:h})});if(i1(!1),y)u2(`Made ${y.name}: open it to see Stripe and Slack as an app left them`),I()};return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Worlds",count:A.state==="ok"?L.length:void 0,children:[L.length>0?M.jsxDEV("input",{type:"search",className:"toolbar-search","aria-label":"Find a World",placeholder:"Find a World…",value:W,onChange:(y)=>v(y.target.value)},void 0,!1,void 0,this):null,n]},void 0,!0,void 0,this),M.jsxDEV(z_,{orgs:O,worlds:w-L.filter((y)=>y.name.split("/")[1]==="sample").length,firstWorld:L.find((y)=>y.name.split("/")[1]!=="sample")?.name,version:T},void 0,!1,void 0,this),A.state!=="ok"?M.jsxDEV(D4,{load:A,what:"the org's Worlds",retry:I},void 0,!1,void 0,this):L.length===0?M.jsxDEV(K5,{title:"No Worlds yet",action:M.jsxDEV("div",{className:"actions-row",children:[n,!k?M.jsxDEV("button",{type:"button",onClick:()=>void j(),disabled:X1,children:X1?"Making the sample…":"Try a sample World"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),children:["A World stands in for the services your app uses: your app talks to it as it would to Stripe or GitHub, nothing real happens, and you see everything it did on each vendor's own screens.",!k?M.jsxDEV("span",{className:"mode sample-note",children:"The sample is a small shop's Stripe and Slack, seeded as its app would leave them. It counts as one of the org's Worlds; delete it when you are done."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):M.jsxDEV("div",{className:"block",children:[M.jsxDEV("table",{className:"dense worlds-table","aria-label":`${h}'s Worlds`,children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"World"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Stand-ins for"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Host"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Created"},void 0,!1,void 0,this),M.jsxDEV("th",{className:"num",children:M.jsxDEV("span",{className:"sr",children:"Actions"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:U1.map((y)=>{let Y1=_1.get(y.name),R1=y.name.split("/")[1]??y.name;return M.jsxDEV(x.default.Fragment,{children:[M.jsxDEV("tr",{children:[M.jsxDEV("td",{children:M.jsxDEV("span",{className:"vendor-cell",children:[M.jsxDEV(L5,{of:R1,small:!0},void 0,!1,void 0,this),M.jsxDEV("span",{className:"who",children:[M.jsxDEV("span",{className:"name-line",children:[M.jsxDEV("a",{href:`/-/worlds/${y.name}/open`,children:R1},void 0,!1,void 0,this),y.restricted?M.jsxDEV("span",{className:"badge restricted",title:"Only some members of the org reach it",children:"Restricted"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),y.origin?M.jsxDEV("span",{className:"mode mono",children:new URL(y.origin).host},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{children:M.jsxDEV("span",{className:"marks",title:y.twins.map((B2)=>Q3(B2.vendor)).join(", "),children:[y.twins.slice(0,5).map((B2)=>M.jsxDEV(_Z,{vendor:B2.vendor},B2.vendor,!1,void 0,this)),y.twins.length>5?M.jsxDEV("span",{className:"mode",children:["+",y.twins.length-5]},void 0,!0,void 0,this):null,M.jsxDEV("span",{className:"mode",children:y.twins.length===1?Q3(y.twins[0].vendor):`${y.twins.length} vendors`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:Y1?.host??"—"},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:Y1?M.jsxDEV("span",{title:i0(Y1.provisionedAt),children:B3(Y1.provisionedAt)},void 0,!1,void 0,this):"—"},void 0,!1,void 0,this),M.jsxDEV("td",{className:"num row-actions",children:[M.jsxDEV("a",{className:"button primary",href:`/-/worlds/${y.name}/open`,"aria-label":`Open ${y.name}`,children:"Open"},void 0,!1,void 0,this),M.jsxDEV(q8,{label:`More for ${y.name}`,items:[{label:"Copy the command to use it",onSelect:()=>{navigator.clipboard?.writeText(`volter remote add origin ${y.name}`).then(()=>u2("Copied: volter remote add origin …"))}},!k?{label:"Make a key…",onSelect:()=>V(y.name)}:null,E4(G)&&!k?{label:"Manage access…",onSelect:()=>r(y.name)}:null,!k?{label:"Share a read-only link…",onSelect:()=>void i(y)}:null,y.origin?{label:"Copy its address",onSelect:()=>{navigator.clipboard?.writeText(y.origin).then(()=>u2("Copied"))}}:null,!k?{label:"Delete World…",danger:!0,onSelect:()=>void t(y.name)}:null]},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(Z_,{world:y.name,readOnly:k},void 0,!1,void 0,this)]},y.name,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),U1.length===0?M.jsxDEV("p",{className:"mode table-note",children:["No World matches “",W,"”."]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV(dR,{world:m,onClose:()=>V(null)},void 0,!1,void 0,this),M.jsxDEV(uR,{org:G,world:c,onClose:()=>r(null),onSaved:I},void 0,!1,void 0,this),M.jsxDEV(k0,{open:Boolean(E),onClose:()=>l(null),title:`A read-only link to ${E?.world??""}`,footer:M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>l(null),children:"Done"},void 0,!1,void 0,this),children:[M.jsxDEV("p",{className:"mode",children:"Whoever opens it sees the World's pages and changes nothing, without an account, for 30 days. Copy it now: it is shown this once. The World lists it under Settings › Keys, where revoking it closes the link at once."},void 0,!1,void 0,this),E?M.jsxDEV(W5,{label:"Link",value:E.url,secret:!0},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV(gR,{open:u,org:h,taken:L.map((y)=>y.name.split("/")[1]??""),onClose:()=>S(!1),onMade:(y)=>{S(!1),u2(`Created ${y}. Open it when you are ready`),I()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function gR({open:G,org:L,taken:A,onClose:O,onMade:w}){let[T,k]=x.useState(""),[I,h]=x.useState([]),[u,S]=x.useState(""),[W,v]=x.useState(!1),[m,V]=x.useState(null);x.useEffect(()=>{if(G)k(""),h([]),S(""),V(null)},[G]);let c=!T?null:!LY.test(T)?"Lowercase letters, digits and dashes, starting with a letter or digit.":A.includes(T)?`${L} already has a World named ${T}.`:null,r=M4(G?"/-/vendors":null),E=new Map(GY.map((n)=>[n.vendor,n.supported])),l=r.state==="ok"?r.data.vendors.map((n)=>({vendor:n,supported:E.get(n)??!0})).sort((n,X1)=>Number(X1.supported)-Number(n.supported)||n.vendor.localeCompare(X1.vendor)):GY.length?GY:["github","stripe","slack","openai","anthropic","aws","resend","twilio","linear","notion"].map((n)=>({vendor:n,supported:!0})),i=u.trim().toLowerCase(),_1=l.filter((n)=>!i||n.vendor.includes(i)||Q3(n.vendor).toLowerCase().includes(i)),U1=(n)=>h((X1)=>X1.includes(n)?X1.filter((i1)=>i1!==n):[...X1,n]),t=async(n)=>{if(n.preventDefault(),c||!T||I.length===0)return;v(!0),V(null);let X1=await a2("/-/worlds",{method:"POST",body:JSON.stringify({org:L,world:T,vendors:I})}).catch(()=>null);if(v(!1),!X1){V(`${X0} did not answer`);return}if(!X1.ok){V(await U8(X1));return}w(`${L}/${T}`)};return M.jsxDEV(k0,{open:G,onClose:()=>{if(!W)O()},title:"Create a World",wide:!0,footer:M.jsxDEV(M.Fragment,{children:[M.jsxDEV("button",{type:"button",onClick:O,disabled:W,children:"Cancel"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"submit",form:"create-world",disabled:W||!T||Boolean(c)||I.length===0,children:W?"Creating… about ten seconds":"Create World"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:M.jsxDEV("form",{id:"create-world",onSubmit:t,className:"stack","aria-label":"Create a World",children:[M.jsxDEV("label",{children:["Name ",M.jsxDEV("input",{autoFocus:!0,name:"world",value:T,onChange:(n)=>k(n.target.value.toLowerCase()),placeholder:"staging","aria-invalid":Boolean(c),"aria-describedby":"world-name-help",autoComplete:"off",spellCheck:!1},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("p",{id:"world-name-help",className:c?"field-error":"mode",children:c??M.jsxDEV(M.Fragment,{children:["Its address: ",M.jsxDEV("code",{children:[L,"/",T||"staging"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("fieldset",{className:"vendor-picker",children:[M.jsxDEV("legend",{children:["Stands in for ",I.length?M.jsxDEV("span",{className:"mode",children:["· ",I.length," picked"]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),I.length?M.jsxDEV("div",{className:"chips",children:I.map((n)=>M.jsxDEV("button",{type:"button",className:"chip",onClick:()=>U1(n),"aria-label":`Remove ${Q3(n)}`,children:[M.jsxDEV(_Z,{vendor:n},void 0,!1,void 0,this),Q3(n)," ",M.jsxDEV("span",{"aria-hidden":"true",children:"✕"},void 0,!1,void 0,this)]},n,!0,void 0,this))},void 0,!1,void 0,this):null,M.jsxDEV("input",{type:"search","aria-label":"Find a vendor",placeholder:"Find a vendor: Stripe, Slack, GitHub…",value:u,onChange:(n)=>S(n.target.value),onKeyDown:(n)=>{if(n.key==="Enter"){n.preventDefault();let X1=_1[0]?.vendor??(LY.test(i)?i:"");if(X1)U1(X1),S("")}}},void 0,!1,void 0,this),M.jsxDEV("div",{className:"vendor-grid",role:"group","aria-label":"Vendors",children:_1.slice(0,48).map((n)=>M.jsxDEV("button",{type:"button",className:"vendor-option","aria-pressed":I.includes(n.vendor),onClick:()=>U1(n.vendor),children:[M.jsxDEV(_Z,{vendor:n.vendor},void 0,!1,void 0,this),M.jsxDEV("span",{className:"vendor-label",children:Q3(n.vendor)},void 0,!1,void 0,this),!n.supported?M.jsxDEV("span",{className:"mode",children:"preview"},void 0,!1,void 0,this):null]},n.vendor,!0,void 0,this))},void 0,!1,void 0,this),_1.length===0?M.jsxDEV("p",{className:"mode",children:["No twin named “",u,"” in the catalog."]},void 0,!0,void 0,this):_1.length>48?M.jsxDEV("p",{className:"mode",children:[_1.length-48," more: type to narrow."]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),m?M.jsxDEV("p",{role:"alert",children:m},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function fR({org:G,me:L,onChanged:A}){let O=V2(G),w=E4(G),T=w||Boolean(G.security?.membersCanInvite),[k,I]=x.useState(0),h=()=>{I((t)=>t+1),A()},u=M4(`/-/orgs/${O}/members`,k),[S,W]=x.useState(!1),[v,m]=x.useState("");if(u.state!=="ok")return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Members"},void 0,!1,void 0,this),M.jsxDEV(D4,{load:u,what:"the members",retry:h},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let{members:V,pending:c=[]}=u.data,r=V.filter((t)=>t.role.endsWith("admin")).length,E=V.filter((t)=>`${t.name??""} ${t.email??""}`.toLowerCase().includes(v.trim().toLowerCase())),l=async(t,n)=>{if(await G2(`/-/orgs/${O}/members/${t.userId}`,{method:"PATCH",body:JSON.stringify({role:n})},`${t.name??t.email??"They"} ${n==="admin"?"is now an admin":"is now a member"}`))h()},i=async(t)=>{let n=t.userId===L,X1=t.name??t.email??t.userId;if(await H6(n?{title:`Leave ${G.name}?`,body:"You lose its Worlds at once. An admin can add you again.",action:"Leave org",danger:!0}:{title:`Remove ${X1}?`,body:M.jsxDEV(M.Fragment,{children:["They lose ",G.name," and every World in it at once. Keys they made in a World stay until revoked there."]},void 0,!0,void 0,this),action:"Remove member",danger:!0})&&await G2(`/-/orgs/${O}/members/${t.userId}`,{method:"DELETE"},n?`You left ${G.name}`:`Removed ${X1}`))if(n)window.location.assign("/");else h()},_1=async(t)=>{if(await G2(`/-/orgs/${O}/invitations/${t.id}`,{method:"DELETE"},`Invitation to ${t.email} revoked`))h()},U1=async(t)=>{if(await G2(`/-/orgs/${O}/invitations/${t.id}/resend`,{method:"POST"},`Sent ${t.email} a new invitation`))h()};return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Members",count:V.length,lede:"People in this org open its Worlds as themselves. Admins manage members, billing and settings.",children:[V.length>6?M.jsxDEV("input",{type:"search",className:"toolbar-search","aria-label":"Find a member",placeholder:"Find a member…",value:v,onChange:(t)=>m(t.target.value)},void 0,!1,void 0,this):null,T?M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>W(!0),children:"Invite people"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"block",children:[M.jsxDEV("table",{className:"dense","aria-label":`Members of ${O}`,children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"Member"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Role"},void 0,!1,void 0,this),M.jsxDEV("th",{className:"num",children:M.jsxDEV("span",{className:"sr",children:"Actions"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:E.map((t)=>{let n=t.email??t.userId,X1=t.role.endsWith("admin"),i1=t.userId===L,j=X1&&r===1;return M.jsxDEV("tr",{children:[M.jsxDEV("td",{children:M.jsxDEV("span",{className:"vendor-cell",children:[M.jsxDEV(L5,{of:t.name??n,small:!0},void 0,!1,void 0,this),M.jsxDEV("span",{className:"who",children:[M.jsxDEV("span",{children:[t.name??n,i1?M.jsxDEV("span",{className:"badge you",children:"you"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),t.name?M.jsxDEV("span",{className:"mode",children:n},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{children:w?M.jsxDEV("select",{"aria-label":`Role of ${n}`,value:X1?"admin":"member",disabled:j,title:j?"The only admin: make someone else an admin first":void 0,onChange:(y)=>void l(t,y.target.value==="admin"?"admin":"member"),children:[M.jsxDEV("option",{value:"admin",children:"Admin"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"member",children:"Member"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):M.jsxDEV("span",{className:"badge",children:X1?"admin":"member"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"num",children:w||i1?M.jsxDEV(q8,{label:`More for ${n}`,items:[i1?{label:"Leave org…",danger:!0,disabled:j,onSelect:()=>void i(t)}:null,w&&!i1?{label:"Remove from org…",danger:!0,disabled:j,onSelect:()=>void i(t)}:null]},void 0,!1,void 0,this):null},void 0,!1,void 0,this)]},t.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),r===1&&w?M.jsxDEV("p",{className:"mode table-note",children:"An org keeps at least one admin: to leave it or step down, make someone else an admin first."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),c.length>0?M.jsxDEV("div",{className:"block",children:[M.jsxDEV("div",{className:"block-head",children:M.jsxDEV("h3",{children:["Pending invitations ",M.jsxDEV("span",{className:"count",children:c.length},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("table",{className:"dense pending-table","aria-label":"Pending invitations",children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"Email"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Role"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Invited"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Expires"},void 0,!1,void 0,this),M.jsxDEV("th",{className:"num",children:M.jsxDEV("span",{className:"sr",children:"Actions"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:c.map((t)=>{let n=t.expiresAt?Date.parse(t.expiresAt)<=Date.now():!1;return M.jsxDEV("tr",{children:[M.jsxDEV("td",{children:t.email},void 0,!1,void 0,this),M.jsxDEV("td",{children:M.jsxDEV("span",{className:"badge",children:t.role.endsWith("admin")?"admin":"member"},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:t.createdAt?M.jsxDEV("span",{title:i0(t.createdAt),children:B3(t.createdAt)},void 0,!1,void 0,this):"—"},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:n?M.jsxDEV("span",{className:"badge warn",children:"expired"},void 0,!1,void 0,this):t.expiresAt?Y4(t.expiresAt):"—"},void 0,!1,void 0,this),M.jsxDEV("td",{className:"num",children:w?M.jsxDEV(q8,{label:`More for the invitation to ${t.email}`,items:[{label:"Resend invitation",onSelect:()=>void U1(t)},{label:"Revoke invitation",danger:!0,onSelect:()=>void _1(t)}]},void 0,!1,void 0,this):null},void 0,!1,void 0,this)]},t.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null,M.jsxDEV(hR,{open:S,org:G,onClose:()=>W(!1),onSent:()=>{W(!1),h()}},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function hR({open:G,org:L,onClose:A,onSent:O}){let w=V2(L),T=E4(L),[k,I]=x.useState([{email:"",role:"member"}]),[h,u]=x.useState(!1),[S,W]=x.useState(null);x.useEffect(()=>{if(G)I([{email:"",role:"member"}]),W(null)},[G]);let v=k.filter((V)=>V.email.trim()).every((V)=>/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(V.email.trim()))&&k.some((V)=>V.email.trim()),m=async(V)=>{if(V.preventDefault(),!v)return;u(!0),W(null);let c=[],r=[];for(let E of k.filter((l)=>l.email.trim())){let l=E.email.trim(),i=await a2(`/-/orgs/${w}/members`,{method:"POST",body:JSON.stringify({email:l,role:E.role})}).catch(()=>null);if(!i||!i.ok){r.push(`${l}: ${i?await U8(i):"no answer"}`);continue}let _1=await i.json().catch(()=>({}));if(!_1.pending&&E.role==="admin"){let t=(await a2(`/-/orgs/${w}/members`).then((n)=>n.json()).catch(()=>({members:[]}))).members.find((n)=>n.email?.toLowerCase()===l.toLowerCase());if(t)await a2(`/-/orgs/${w}/members/${t.userId}`,{method:"PATCH",body:JSON.stringify({role:"admin"})})}c.push(_1.pending?`invited ${l}`:`added ${l}`)}if(u(!1),c.length)u2(`${c.join(", ")}. They get an email`.replace(/^./,(E)=>E.toUpperCase()));if(r.length){W(r.join(`
237
237
  `));return}O()};return M.jsxDEV(k0,{open:G,onClose:()=>{if(!h)A()},title:`Invite people to ${L.name}`,footer:M.jsxDEV(M.Fragment,{children:[M.jsxDEV("button",{type:"button",onClick:A,disabled:h,children:"Cancel"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"submit",form:"invite",disabled:h||!v,children:h?"Sending…":k.filter((V)=>V.email.trim()).length>1?"Send invitations":"Send invitation"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:M.jsxDEV("form",{id:"invite",onSubmit:m,className:"stack","aria-label":"Invite people",children:[M.jsxDEV("p",{className:"mode",children:"Someone with an account here joins at once; anyone else gets an email and joins when they sign in with that address. Invitations last a week."},void 0,!1,void 0,this),k.map((V,c)=>M.jsxDEV("div",{className:"invite-row",children:[M.jsxDEV("label",{className:"grow",children:[c===0?"Email":M.jsxDEV("span",{className:"sr",children:"Email"},void 0,!1,void 0,this),M.jsxDEV("input",{autoFocus:c===0,type:"email",value:V.email,onChange:(r)=>I(k.map((E,l)=>l===c?{...E,email:r.target.value}:E)),placeholder:"teammate@company.com"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:[c===0?"Role":M.jsxDEV("span",{className:"sr",children:"Role"},void 0,!1,void 0,this),M.jsxDEV("select",{value:V.role,disabled:!T,onChange:(r)=>I(k.map((E,l)=>l===c?{...E,role:r.target.value==="admin"?"admin":"member"}:E)),children:[M.jsxDEV("option",{value:"member",children:"Member"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"admin",children:"Admin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),k.length>1?M.jsxDEV("button",{type:"button",className:"icon-button","aria-label":`Remove row ${c+1}`,onClick:()=>I(k.filter((r,E)=>E!==c)),children:"✕"},void 0,!1,void 0,this):null]},c,!0,void 0,this)),M.jsxDEV("button",{type:"button",className:"link-button",onClick:()=>I([...k,{email:"",role:"member"}]),children:"+ Add another"},void 0,!1,void 0,this),S?M.jsxDEV("p",{role:"alert",className:"pre",children:S},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var FZ=(G)=>G%100===0?`$${G/100}`:`$${(G/100).toFixed(2)}`;function VR({org:G,admin:L,version:A,flags:O}){let[w]=x.useState(()=>new URLSearchParams(window.location.search).has("upgraded")),[T]=x.useState(()=>{let y=qY();try{sessionStorage.removeItem(KY)}catch{}return y});x.useEffect(()=>{if(w)try{window.history.replaceState(null,"",window.location.pathname)}catch{}},[w]);let[k,I]=x.useState(0),h=M4(`/-/orgs/${G}/billing${w?"?fresh=1":""}`,A+k),[u,S]=x.useState(!1);if(h.state!=="ok")return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Billing"},void 0,!1,void 0,this),M.jsxDEV(D4,{load:h,what:"billing",retry:()=>I((y)=>y+1),lines:5},void 0,!1,void 0,this)]},void 0,!0,void 0,this);let W=h.data,v=async(y)=>{S(!0);let Y1=await G2(y,{method:"POST",body:"{}"});if(Y1?.url){if(Y1.pending)u2("You already have a checkout open: this is the same one");window.location.assign(Y1.url);return}S(!1)},m=async(y)=>{if(await G2(`/-/orgs/${G}/billing`,{method:"PATCH",body:JSON.stringify({spendCap:y})},y?"Spend cap on":"Spend cap off: hours beyond the plan are billed"))I((Y1)=>Y1+1)},V=W.subscription,c=W.plans.find((y)=>y.priceMonthly>0),r=c?.trialDays??null,E=V?.status==="trialing"?{label:"Trial",tone:"info"}:V?.cancelAtPeriodEnd?{label:"Cancels",tone:"warn"}:V?{label:"Active",tone:"ok"}:{label:"Free",tone:""},l=new Date,i=Date.UTC(l.getUTCFullYear(),l.getUTCMonth(),1),_1=Date.UTC(l.getUTCFullYear(),l.getUTCMonth()+1,1),U1=(l.getTime()-i)/(_1-i),t=W.usage.world_hours??0,n=U1>0.04&&t>0?Math.round(t/U1):null,X1=W.plan.limits.worldHours,i1=n!==null&&X1!==null&&n>X1,j=W.meters.filter((y)=>y.name!=="world_hours");return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Billing",lede:M.jsxDEV(M.Fragment,{children:["For ",G,". Payment, invoices and receipts are handled by Polar",L?"":"; an admin changes the plan","."]},void 0,!0,void 0,this)},void 0,!1,void 0,this),W.restriction?M.jsxDEV("div",{role:"alert",className:`notice ${W.restriction.status==="restricted"?"danger":"warn"}`,children:[M.jsxDEV("strong",{children:[W.restriction.status==="restricted"?"Restricted":"Over the plan","."]},void 0,!0,void 0,this)," ",jR(W)]},void 0,!0,void 0,this):null,W.paid?M.jsxDEV("div",{role:"status",className:"notice ok",children:[M.jsxDEV("strong",{children:"Payment received."},void 0,!1,void 0,this)," Your org is on ",W.plan.name,"."]},void 0,!0,void 0,this):null,(()=>{let y=T&&L&&W.plan.id==="free"&&!W.pendingCheckout?W.plans.find((Y1)=>Y1.id===T&&Y1.priceMonthly>0):void 0;return y?M.jsxDEV("div",{role:"status",className:"notice info",children:[M.jsxDEV("strong",{children:["You chose ",y.name,"."]},void 0,!0,void 0,this)," ",y.trialDays&&!V?`Its ${y.trialDays}-day trial starts at Polar's checkout, which asks for a card and charges it when the trial ends.`:"Polar's checkout takes the payment."," ",M.jsxDEV("button",{type:"button",className:"primary",disabled:u,onClick:()=>void v(`/-/orgs/${G}/checkout`),children:u?"Opening Polar…":y.trialDays&&!V?`Start the ${y.trialDays}-day trial`:`Upgrade to ${y.name}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null})(),W.pendingCheckout?M.jsxDEV("div",{role:"status",className:"notice info",children:["Your checkout at Polar is still open. ",M.jsxDEV("a",{href:W.pendingCheckout.url,children:"Continue to checkout"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,M.jsxDEV("div",{className:"billing-grid",children:[M.jsxDEV("section",{className:"card plan-card","aria-labelledby":"plan-now",children:[M.jsxDEV("p",{className:"eyebrow",children:"Current plan"},void 0,!1,void 0,this),M.jsxDEV("h3",{id:"plan-now",children:[W.plan.name," ",E.tone?M.jsxDEV("span",{className:`badge ${E.tone}`,children:E.label},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV("p",{className:"price-line",children:[M.jsxDEV("span",{className:"price",children:FZ(W.plan.priceMonthly)},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:[" / month",W.overageCentsPerHour&&W.spendCap===!1?`, plus ${FZ(W.overageCentsPerHour)} per world-hour beyond the plan`:""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("p",{className:"mode",children:V?.trialEnd&&V.status==="trialing"?`Trial ends ${Y4(V.trialEnd)}; the card is charged then.`:V?.cancelAtPeriodEnd&&V.currentPeriodEnd?`Ends ${Y4(V.currentPeriodEnd)}; back to Free after that.`:V?.currentPeriodEnd?`Renews ${Y4(V.currentPeriodEnd)}.`:"No card on file."},void 0,!1,void 0,this),L?M.jsxDEV("div",{className:"card-actions",children:[W.plan.id==="free"?M.jsxDEV("button",{type:"button",className:"primary",disabled:u,onClick:()=>void v(`/-/orgs/${G}/checkout`),children:u?"Opening Polar…":r&&!V?`Start a ${r}-day trial of ${c?.name??"Team"}`:`Upgrade to ${c?.name??"Team"}`},void 0,!1,void 0,this):M.jsxDEV("button",{type:"button",disabled:u,onClick:()=>void v(`/-/orgs/${G}/billing-portal`),children:u?"Opening Polar…":"Manage billing"},void 0,!1,void 0,this),W.plan.id!=="free"?M.jsxDEV("span",{className:"mode",children:"Invoices, payment method and cancellation are in Polar's portal."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV("section",{className:"card","aria-labelledby":"usage-now",children:[M.jsxDEV("p",{className:"eyebrow",children:["This period · ",new Date(i).toLocaleDateString(void 0,{month:"short",day:"numeric",timeZone:"UTC"})," to ",new Date(_1-1).toLocaleDateString(void 0,{month:"short",day:"numeric",timeZone:"UTC"})]},void 0,!0,void 0,this),M.jsxDEV("h3",{id:"usage-now",className:"sr",children:"Usage"},void 0,!1,void 0,this),M.jsxDEV("div",{className:"meters",children:[M.jsxDEV(QY,{label:"Worlds held",value:W.worlds,limit:W.plan.limits.worlds},void 0,!1,void 0,this),M.jsxDEV(QY,{label:"World-hours",value:t,limit:X1,note:n!==null?M.jsxDEV("span",{className:i1?"warn-text":void 0,children:["On pace for about ",n.toLocaleString()," by the end of the period",i1?W.spendCap===!1?`; the hours past ${X1} are billed`:`; past ${X1} the org is warned, then held`:"","."]},void 0,!0,void 0,this):null},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("dl",{className:"stats",children:j.map((y)=>M.jsxDEV("div",{children:[M.jsxDEV("dt",{children:y.label.charAt(0).toUpperCase()+y.label.slice(1)},void 0,!1,void 0,this),M.jsxDEV("dd",{children:(W.usage[y.name]??0).toLocaleString()},void 0,!1,void 0,this)]},y.name,!0,void 0,this))},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode small",children:W.lastTickAt?M.jsxDEV(M.Fragment,{children:["Metered hourly; last at ",M.jsxDEV(Gq,{iso:W.lastTickAt},void 0,!1,void 0,this),"."]},void 0,!0,void 0,this):"Metered hourly; the first hour has not been metered yet."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),O.usage_by_day&&W.usageByDay&&W.usageByDay.length>0?M.jsxDEV("section",{className:"card","aria-labelledby":"by-day",children:[M.jsxDEV("h3",{id:"by-day",children:"World-hours by day"},void 0,!1,void 0,this),M.jsxDEV("div",{className:"day-bars",role:"img","aria-label":"World-hours by day this period",children:W.usageByDay.map((y)=>{let Y1=Math.max(1,...W.usageByDay.map((R1)=>R1.hours));return M.jsxDEV("div",{className:"day-bar",title:`${y.day}: ${y.hours} h, ${y.worlds} World${y.worlds===1?"":"s"}`,children:[M.jsxDEV("span",{style:{height:`${Math.max(3,Math.round(y.hours/Y1*100))}%`}},void 0,!1,void 0,this),M.jsxDEV("em",{children:Number(y.day.slice(8))},void 0,!1,void 0,this)]},y.day,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,W.plan.id!=="free"&&W.overageCentsPerHour&&L?M.jsxDEV("section",{className:"card setting-row","aria-labelledby":"cap",children:[M.jsxDEV("div",{children:[M.jsxDEV("h3",{id:"cap",children:"Spend cap"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:W.spendCap!==!1?`On: past the plan's ${X1} world-hours, the org is warned and then held, never billed more.`:`Off: hours past the plan's ${X1} are billed at ${FZ(W.overageCentsPerHour)} each, and nothing is held.`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(t7,{label:"Spend cap",checked:W.spendCap!==!1,onChange:(y)=>void m(y)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,M.jsxDEV("h3",{className:"section-title",children:"Plans"},void 0,!1,void 0,this),M.jsxDEV("div",{className:"plans",children:W.plans.map((y)=>{let Y1=y.id===W.plan.id;return M.jsxDEV("section",{className:Y1?"card plan current":"card plan","aria-labelledby":`plan-${y.id}`,children:[M.jsxDEV("h4",{id:`plan-${y.id}`,children:[y.name," ",Y1?M.jsxDEV("span",{className:"badge",children:"current"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV("p",{className:"price-line",children:[M.jsxDEV("span",{className:"price",children:FZ(y.priceMonthly)},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:" / month"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("p",{className:"mode",children:y.pitch},void 0,!1,void 0,this),M.jsxDEV("ul",{className:"checks",children:y.features.map((R1)=>M.jsxDEV("li",{children:R1},R1,!1,void 0,this))},void 0,!1,void 0,this),!Y1&&L&&y.priceMonthly>W.plan.priceMonthly?M.jsxDEV("button",{type:"button",className:"primary",disabled:u,onClick:()=>void v(`/-/orgs/${G}/checkout`),children:y.trialDays&&!V?`Start a ${y.trialDays}-day trial`:`Upgrade to ${y.name}`},void 0,!1,void 0,this):null,!Y1&&L&&y.priceMonthly<W.plan.priceMonthly?M.jsxDEV("button",{type:"button",disabled:u,onClick:()=>void v(`/-/orgs/${G}/billing-portal`),children:"Downgrade in the portal"},void 0,!1,void 0,this):null]},y.id,!0,void 0,this)})},void 0,!1,void 0,this),W.reminders?.trialEnding||W.reminders?.renewal?M.jsxDEV("p",{className:"mode small",children:["We email the admins seven days before the ",W.reminders.trialEnding?"trial ends":"renewal"," (",Y4(W.reminders.trialEnding??W.reminders.renewal),")."]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)}function jR(G){let L=G.restriction,A=Y4(L.graceEnds),O=G.plan.limits.worlds??0;if(L.meter==="worlds"){let w=L.reason==="no_subscription"?`Your subscription ended, so this org is on the Free plan, which allows ${O} World${O===1?"":"s"}; it holds ${G.worlds}.`:`The ${G.plan.name} plan allows ${O} World${O===1?"":"s"}; this org holds ${G.worlds}.`;return L.status==="restricted"?`${w} Nothing was deleted, but since ${A} the Worlds no longer refresh and new ones are refused, until you upgrade or delete Worlds down to ${O}.`:`${w} Nothing is deleted, and the Worlds keep working until ${A}. New Worlds beyond ${O} are refused from now on.`}return L.status==="restricted"?`The plan's world-hours ran out and the grace period ended ${A}: upgrade to make and refresh Worlds again.`:`This period passed the plan's world-hours. Everything keeps working until ${A}; after that, making and refreshing Worlds is held until you upgrade or the next period begins.`}function t7({label:G,checked:L,onChange:A,disabled:O}){return M.jsxDEV("label",{className:"switch",children:[M.jsxDEV("input",{type:"checkbox",role:"switch","aria-label":G,checked:L,disabled:O,onChange:(w)=>A(w.target.checked)},void 0,!1,void 0,this),M.jsxDEV("span",{"aria-hidden":"true"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function mR({org:G,sub:L,info:A,version:O,onChanged:w,onDeleted:T}){let k=V2(G),I=wq.filter(([u])=>u!=="support"||A?.support),h=(u)=>({kind:"org",org:k,page:"settings",sub:u});return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Settings"},void 0,!1,void 0,this),M.jsxDEV(Rq,{label:"Settings",items:I.map(([u,S])=>({label:S,href:s7(h(u)),on:L===u,onClick:Oq(h(u))}))},void 0,!1,void 0,this),!E4(G)?M.jsxDEV(K5,{title:"Settings are for admins",children:["You are a member of ",G.name,". Ask one of its admins to change its settings."]},void 0,!0,void 0,this):M.jsxDEV("div",{className:"settings",children:[L==="general"?M.jsxDEV(DR,{org:G,onChanged:w,onDeleted:T},void 0,!1,void 0,this):null,L==="security"?M.jsxDEV(ER,{org:k,onChanged:w},void 0,!1,void 0,this):null,L==="tokens"?M.jsxDEV(Sq,{kind:"org",org:k},void 0,!1,void 0,this):null,L==="webhooks"?G.flags?.webhooks?M.jsxDEV(aR,{org:k},void 0,!1,void 0,this):M.jsxDEV(K5,{title:"Webhooks are in Labs",action:M.jsxDEV("a",{className:"button",href:s7(h("labs")),onClick:Oq(h("labs")),children:"Open Labs"},void 0,!1,void 0,this),children:["Turn them on for ",G.name," under Labs, then add an endpoint here."]},void 0,!0,void 0,this):null,L==="labs"?M.jsxDEV(lR,{org:k,onChanged:w},void 0,!1,void 0,this):null,L==="support"&&A?.support?M.jsxDEV(nR,{org:k,version:O},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function DR({org:G,onChanged:L,onDeleted:A}){let O=V2(G),w=G.worlds?.length??0,[T,k]=x.useState(G.name),[I,h]=x.useState(!1);x.useEffect(()=>{k(G.name)},[G.name]);let u=async(W)=>{if(W.preventDefault(),h(!0),await G2(`/-/orgs/${O}`,{method:"PATCH",body:JSON.stringify({name:T.trim()})},"Name saved"))L();h(!1)},S=async()=>{if(await H6({title:`Delete ${G.name}?`,body:M.jsxDEV(M.Fragment,{children:["This deletes the org for every member",w?M.jsxDEV(M.Fragment,{children:[", and its ",M.jsxDEV("strong",{children:[w," World",w===1?"":"s"]},void 0,!0,void 0,this)," with their whole history"]},void 0,!0,void 0,this):"",". Its members keep their accounts. This cannot be undone."]},void 0,!0,void 0,this),action:w?`Delete org and ${w} World${w===1?"":"s"}`:"Delete org",danger:!0,typed:O})&&await G2(`/-/orgs/${O}${w?"?everything=1":""}`,{method:"DELETE"},`Deleted ${G.name}`))A()};return M.jsxDEV(M.Fragment,{children:[M.jsxDEV("section",{className:"card","aria-labelledby":"general",children:[M.jsxDEV("h3",{id:"general",children:"Org name"},void 0,!1,void 0,this),M.jsxDEV("form",{onSubmit:u,className:"stack",children:[M.jsxDEV("label",{children:[M.jsxDEV("span",{className:"sr",children:"Org name"},void 0,!1,void 0,this),M.jsxDEV("input",{name:"orgRename",value:T,onChange:(W)=>k(W.target.value),maxLength:64,required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("p",{className:"mode",children:["The name people see. The org's address stays ",M.jsxDEV("code",{children:O},void 0,!1,void 0,this),", so nothing your code or the command points at moves."]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"card-actions",children:M.jsxDEV("button",{type:"submit",disabled:I||!T.trim()||T.trim()===G.name,children:"Save"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("section",{className:"card","aria-labelledby":"ids",children:[M.jsxDEV("h3",{id:"ids",children:"Address and id"},void 0,!1,void 0,this),M.jsxDEV(W5,{label:"Address",value:O},void 0,!1,void 0,this),M.jsxDEV(W5,{label:"Org id (the API's and the audit log's)",value:G.id},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("section",{className:"card danger-zone","aria-labelledby":"danger",children:[M.jsxDEV("h3",{id:"danger",children:"Danger zone"},void 0,!1,void 0,this),M.jsxDEV("div",{className:"setting-row",children:[M.jsxDEV("div",{children:[M.jsxDEV("strong",{children:"Delete this org"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:["For every member",w?`, with its ${w} World${w===1?"":"s"}`:"",". You type its address to confirm."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"button",className:"danger-outline",onClick:()=>void S(),children:"Delete org…"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function ER({org:G,onChanged:L}){let[A,O]=x.useState(0),w=M4(`/-/orgs/${G}/security`,A),[T,k]=x.useState(null);if(w.state!=="ok")return M.jsxDEV(D4,{load:w,what:"the security settings",retry:()=>O((S)=>S+1)},void 0,!1,void 0,this);let I=w.data.security,h=async(S,W)=>{if(await G2(`/-/orgs/${G}/security`,{method:"PATCH",body:JSON.stringify({...I,...S})},W))O((v)=>v+1),L()},u=T??I.approvedEmailDomains.join(", ");return M.jsxDEV("section",{className:"card","aria-label":"Security",children:[M.jsxDEV("div",{className:"setting-row",children:[M.jsxDEV("div",{children:[M.jsxDEV("strong",{children:"Members may invite"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:"Otherwise only admins add and invite people."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(t7,{label:"Members may invite",checked:I.membersCanInvite,onChange:(S)=>void h({membersCanInvite:S},S?"Members may invite":"Only admins invite")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"setting-row",children:[M.jsxDEV("div",{children:[M.jsxDEV("strong",{children:"Personal tokens may open this org"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:"Off: only people signed in, and org tokens, reach it; a member's personal token is refused."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(t7,{label:"Personal tokens may open this org",checked:I.membersCanUsePersonalTokens,onChange:(S)=>void h({membersCanUsePersonalTokens:S},S?"Personal tokens allowed":"Personal tokens refused")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("form",{className:"setting-row stack-row",onSubmit:(S)=>{S.preventDefault(),h({approvedEmailDomains:u.split(",").map((W)=>W.trim()).filter(Boolean)},"Approved domains saved").then(()=>k(null))},children:[M.jsxDEV("label",{className:"grow",children:[M.jsxDEV("strong",{children:"Approved email domains"},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:"Invitations go only to these domains. Empty: any."},void 0,!1,void 0,this),M.jsxDEV("input",{name:"approvedEmailDomains",value:u,onChange:(S)=>k(S.target.value),placeholder:"acme.com, acme.dev"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"submit",disabled:T===null,children:"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function Sq({kind:G,org:L}){let A=G==="org"?`/-/orgs/${L}/tokens`:"/-/tokens",[O,w]=x.useState(0),T=M4(A,O),[k,I]=x.useState(!1),[h,u]=x.useState(null),S=async(v)=>{if(await H6({title:`Revoke ${v.name}?`,body:M.jsxDEV(M.Fragment,{children:["Whatever uses the token ending ",M.jsxDEV("code",{children:["…",v.last4]},void 0,!0,void 0,this)," is refused from now on."]},void 0,!0,void 0,this),action:"Revoke token",danger:!0})&&await G2(`${A}/${v.id}`,{method:"DELETE"},`Revoked ${v.name}`))w((V)=>V+1)},W=G==="org"?"Org tokens":"Personal access tokens";return M.jsxDEV("section",{className:"card flush","aria-label":W,children:[M.jsxDEV("div",{className:"card-head",children:[M.jsxDEV("div",{children:[M.jsxDEV("h3",{children:W},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:G==="org"?M.jsxDEV(M.Fragment,{children:["Act as the org, not a person: for CI and scripts. ",M.jsxDEV("code",{children:["volter login ",X0," --token …"]},void 0,!0,void 0,this),", then ",M.jsxDEV("code",{children:["volter remote add origin ",L,"/<world>"]},void 0,!0,void 0,this),"."]},void 0,!0,void 0,this):M.jsxDEV(M.Fragment,{children:["Sign the ",M.jsxDEV("code",{children:"volter"},void 0,!1,void 0,this)," command in as you without a browser, for scripts and CI. In a terminal, ",M.jsxDEV("code",{children:["volter login ",X0]},void 0,!0,void 0,this)," does it through the browser instead."]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>I(!0),children:"Create token"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),T.state!=="ok"?M.jsxDEV(D4,{load:T,what:"the tokens",retry:()=>w((v)=>v+1)},void 0,!1,void 0,this):T.data.tokens.length===0?M.jsxDEV("p",{className:"mode table-note",children:"No tokens yet."},void 0,!1,void 0,this):M.jsxDEV("table",{className:"dense tokens-table","aria-label":G==="org"?"Org tokens":"Your tokens",children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"Name"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Access"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Created"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Last used"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Expires"},void 0,!1,void 0,this),M.jsxDEV("th",{className:"num",children:M.jsxDEV("span",{className:"sr",children:"Actions"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:T.data.tokens.map((v)=>{let m=v.expiresAt?Date.parse(v.expiresAt)<=Date.now():!1;return M.jsxDEV("tr",{children:[M.jsxDEV("td",{children:M.jsxDEV("span",{className:"who",children:[M.jsxDEV("span",{children:v.name},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode mono",children:["…",v.last4]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:pR(v.scopes)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:M.jsxDEV("span",{title:i0(v.createdAt),children:Y4(v.createdAt)},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:v.lastUsedAt?M.jsxDEV("span",{title:i0(v.lastUsedAt),children:B3(v.lastUsedAt)},void 0,!1,void 0,this):"never"},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:v.expiresAt===null?"never":m?M.jsxDEV("span",{className:"badge warn",children:"expired"},void 0,!1,void 0,this):v.expiresAt?Y4(v.expiresAt):"—"},void 0,!1,void 0,this),M.jsxDEV("td",{className:"num",children:M.jsxDEV(q8,{label:`More for ${v.name}`,items:[{label:"Revoke…",danger:!0,onSelect:()=>void S(v)}]},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},v.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(xR,{open:k,kind:G,base:A,onClose:()=>I(!1),onMade:(v)=>{I(!1),u(v),w((m)=>m+1)}},void 0,!1,void 0,this),M.jsxDEV(k0,{open:Boolean(h),onClose:()=>u(null),title:`${h?.name??"Token"} is ready`,footer:M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>u(null),children:"Done"},void 0,!1,void 0,this),children:[M.jsxDEV("p",{className:"notice warn",children:"Copy it now: it is shown this once and never again."},void 0,!1,void 0,this),h?M.jsxDEV(W5,{label:"Token",value:h.token,secret:!0},void 0,!1,void 0,this):null,h?M.jsxDEV(W5,{label:"Use it",value:`volter login ${X0} --token ${h.token}`,secret:!0},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function xR({open:G,kind:L,base:A,onClose:O,onMade:w}){let[T,k]=x.useState(""),[I,h]=x.useState("30"),[u,S]=x.useState(L==="org"?"read":"all"),[W,v]=x.useState({worlds:"read"}),[m,V]=x.useState(!1),[c,r]=x.useState(null);x.useEffect(()=>{if(G)k(""),h(L==="org"?"90":"30"),S(L==="org"?"read":"all"),r(null)},[G,L]);let E=async(l)=>{l.preventDefault(),V(!0),r(null);let i=await a2(A,{method:"POST",body:JSON.stringify({name:T.trim(),expiresInDays:I==="never"?null:Number(I),scopes:cR(u,W)})}).catch(()=>null);if(V(!1),!i){r(`${X0} did not answer`);return}let _1=await i.json().catch(()=>({}));if(!i.ok||!_1.token){r(_1.error??`answered ${i.status}`);return}w({token:_1.token,name:T.trim()})};return M.jsxDEV(k0,{open:G,onClose:()=>{if(!m)O()},title:L==="org"?"Create an org token":"Create a personal token",footer:M.jsxDEV(M.Fragment,{children:[M.jsxDEV("button",{type:"button",onClick:O,disabled:m,children:"Cancel"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"submit",form:"make-token",disabled:m||!T.trim(),children:m?"Creating…":"Create token"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:M.jsxDEV("form",{id:"make-token",onSubmit:E,className:"stack","aria-label":"Create a token",children:[M.jsxDEV("label",{children:["Name ",M.jsxDEV("input",{autoFocus:!0,name:"tokenName",value:T,onChange:(l)=>k(l.target.value),placeholder:L==="org"?"github-actions":"my laptop",maxLength:80,required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:["Expires ",M.jsxDEV("select",{name:"tokenExpiry",value:I,onChange:(l)=>h(l.target.value),children:[M.jsxDEV("option",{value:"7",children:"in 7 days"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"30",children:"in 30 days"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"90",children:"in 90 days"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"365",children:"in a year"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"never",children:"never (not recommended)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("fieldset",{className:"choice",children:[M.jsxDEV("legend",{children:"Access"},void 0,!1,void 0,this),[["all","Full access",L==="org"?"Everything an admin may do in the org.":"Everything you may do."],["read","Read only","Read Worlds, orgs, members, billing and activity; change nothing."],["custom","Choose","Pick read or read-and-write per kind of thing."]].map(([l,i,_1])=>M.jsxDEV("label",{className:u===l?"choice-card on":"choice-card",children:[M.jsxDEV("input",{type:"radio",name:"tokenAccess",value:l,checked:u===l,onChange:()=>S(l)},void 0,!1,void 0,this),M.jsxDEV("span",{children:[M.jsxDEV("strong",{children:i},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:_1},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},l,!0,void 0,this))]},void 0,!0,void 0,this),u==="custom"?M.jsxDEV("div",{className:"scope-grid",children:NZ.map((l)=>M.jsxDEV("label",{children:[M.jsxDEV("span",{children:l},void 0,!1,void 0,this),M.jsxDEV("select",{"aria-label":`Scope: ${l}`,value:W[l]??"none",onChange:(i)=>v({...W,[l]:i.target.value}),children:[M.jsxDEV("option",{value:"none",children:"No access"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"read",children:"Read"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"write",children:"Read and write"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},l,!0,void 0,this))},void 0,!1,void 0,this):null,c?M.jsxDEV("p",{role:"alert",children:c},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function uR({org:G,world:L,onClose:A,onSaved:O}){let w=V2(G),T=L?.split("/")[1]??"",[k,I]=x.useState(null),[h,u]=x.useState(!1),[S,W]=x.useState(new Set),[v,m]=x.useState(!1),[V,c]=x.useState(null);x.useEffect(()=>{if(!L)return;I(null),c(null),Promise.all([a2(`/-/worlds/${L}/access`).then((i)=>i.json()),a2(`/-/orgs/${w}/members`).then((i)=>i.json())]).then(([i,_1])=>{let U1=i,t=_1.members??[];if(U1.error){c(U1.error);return}u(Boolean(U1.restricted)),W(new Set(U1.members??[])),I(t)}).catch(()=>c(`${X0} did not answer`))},[L,w]);let r=(k??[]).filter((i)=>!i.role.endsWith("admin")),E=h?r.filter((i)=>!S.has(i.userId)).length:0,l=async(i)=>{if(i.preventDefault(),!L)return;m(!0);let _1=await G2(`/-/worlds/${L}/access`,{method:"PUT",body:JSON.stringify({restricted:h,members:h?[...S]:[]})},h?`${T} is kept to the members picked`:`Everyone in ${G.name} reaches ${T}`);if(m(!1),_1)O(),A()};return M.jsxDEV(k0,{open:L!==null,onClose:()=>{if(!v)A()},title:`Who reaches ${L??""}`,footer:M.jsxDEV(M.Fragment,{children:[M.jsxDEV("button",{type:"button",onClick:A,disabled:v,children:"Cancel"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"submit",form:"world-access",disabled:v||k===null,children:v?"Saving…":"Save"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:M.jsxDEV("form",{id:"world-access",onSubmit:l,className:"stack","aria-label":"Who reaches the World",children:V?M.jsxDEV("p",{role:"alert",children:V},void 0,!1,void 0,this):k===null?M.jsxDEV("p",{className:"mode",children:"Loading the members…"},void 0,!1,void 0,this):M.jsxDEV(M.Fragment,{children:[M.jsxDEV("fieldset",{className:"choice",children:[M.jsxDEV("legend",{children:"Access"},void 0,!1,void 0,this),M.jsxDEV("label",{className:!h?"choice-card on":"choice-card",children:[M.jsxDEV("input",{type:"radio",name:"worldAccess",checked:!h,onChange:()=>u(!1)},void 0,!1,void 0,this),M.jsxDEV("span",{children:[M.jsxDEV("strong",{children:["Everyone in ",G.name]},void 0,!0,void 0,this),M.jsxDEV("span",{className:"mode",children:"Every member, and everyone who joins later."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{className:h?"choice-card on":"choice-card",children:[M.jsxDEV("input",{type:"radio",name:"worldAccess",checked:h,onChange:()=>u(!0)},void 0,!1,void 0,this),M.jsxDEV("span",{children:[M.jsxDEV("strong",{children:"Only these members"},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:"Admins always reach it."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),h?M.jsxDEV("fieldset",{className:"member-pick",children:[M.jsxDEV("legend",{children:"Members"},void 0,!1,void 0,this),r.length===0?M.jsxDEV("p",{className:"mode",children:["Every member of ",G.name," is an admin, so everyone reaches it."]},void 0,!0,void 0,this):r.map((i)=>M.jsxDEV("label",{className:"check",children:[M.jsxDEV("input",{type:"checkbox",checked:S.has(i.userId),onChange:(_1)=>{let U1=new Set(S);if(_1.target.checked)U1.add(i.userId);else U1.delete(i.userId);W(U1)}},void 0,!1,void 0,this)," ",M.jsxDEV("span",{children:[i.name??i.email??i.userId,i.name&&i.email?M.jsxDEV("span",{className:"mode",children:[" ",i.email]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)]},i.userId,!0,void 0,this)),(k??[]).filter((i)=>i.role.endsWith("admin")).map((i)=>M.jsxDEV("label",{className:"check",children:[M.jsxDEV("input",{type:"checkbox",checked:!0,disabled:!0},void 0,!1,void 0,this)," ",M.jsxDEV("span",{children:[i.name??i.email??i.userId," ",M.jsxDEV("span",{className:"mode",children:"admin"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},i.userId,!0,void 0,this))]},void 0,!0,void 0,this):null,E>0?M.jsxDEV("p",{className:"mode",children:[E===1?"The member left out loses":`The ${E} members left out lose`," the keys they hold in ",T," when you save."]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)},void 0,!1,void 0,this)}function dR({world:G,onClose:L}){let[A,O]=x.useState(""),[w,T]=x.useState("write"),[k,I]=x.useState("90"),[h,u]=x.useState(!1),[S,W]=x.useState(null),[v,m]=x.useState(null);x.useEffect(()=>{if(G)O(""),T("write"),I("90"),W(null),m(null)},[G]);let V=async(c)=>{if(c.preventDefault(),!G)return;u(!0),W(null);let r=await a2(`/-/worlds/${G}/keys`,{method:"POST",body:JSON.stringify({name:A.trim(),scope:w,expiresInDays:k==="never"?null:Number(k)})}).catch(()=>null);u(!1);let E=r?await r.json().catch(()=>({})):{};if(!r||!r.ok||!E.key){W(E.error??(r?`answered ${r.status}`:`${X0} did not answer`));return}m({key:E.key,base:E.base??""})};return M.jsxDEV(k0,{open:G!==null,onClose:()=>{if(!h)L()},title:`Make a key for ${G??""}`,footer:v?M.jsxDEV("button",{type:"button",className:"primary",onClick:L,children:"Done"},void 0,!1,void 0,this):M.jsxDEV(M.Fragment,{children:[M.jsxDEV("button",{type:"button",onClick:L,disabled:h,children:"Cancel"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"submit",form:"world-key",disabled:h||!A.trim(),children:h?"Making…":"Make key"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:v?M.jsxDEV("div",{className:"stack",children:[M.jsxDEV("p",{children:"Copy it now: it is shown once. It is yours, and is revoked if you leave the org; its World lists it under Settings."},void 0,!1,void 0,this),M.jsxDEV(W5,{label:"Key",value:v.key,secret:!0},void 0,!1,void 0,this),v.base?M.jsxDEV(W5,{label:"The World's address",value:v.base},void 0,!1,void 0,this):null]},void 0,!0,void 0,this):M.jsxDEV("form",{id:"world-key",onSubmit:V,className:"stack","aria-label":"Make a key",children:[M.jsxDEV("label",{children:["Name ",M.jsxDEV("input",{autoFocus:!0,name:"keyName",value:A,onChange:(c)=>O(c.target.value),placeholder:"staging app",maxLength:80,required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:["Access ",M.jsxDEV("select",{name:"keyScope",value:w,onChange:(c)=>T(c.target.value==="read"?"read":"write"),children:[M.jsxDEV("option",{value:"write",children:"Read and write"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"read",children:"Read only"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:["Expires ",M.jsxDEV("select",{name:"keyExpiry",value:k,onChange:(c)=>I(c.target.value),children:[M.jsxDEV("option",{value:"7",children:"in 7 days"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"30",children:"in 30 days"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"90",children:"in 90 days"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"365",children:"in a year"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"never",children:"never (not recommended)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),S?M.jsxDEV("p",{role:"alert",children:S},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var NZ=["worlds","orgs","members","billing","tokens","activity"];function cR(G,L){if(G==="all")return["*"];if(G==="read")return NZ.map((O)=>`${O}:read`);let A=NZ.filter((O)=>L[O]&&L[O]!=="none").map((O)=>`${O}:${L[O]}`);return A.length?A:["worlds:read"]}function pR(G){if(!G||G.includes("*"))return"Full access";if(NZ.every((L)=>G.includes(`${L}:read`))&&G.every((L)=>L.endsWith(":read")))return"Read only";return G.map((L)=>L.replace(":write"," (write)").replace(":read","")).join(", ")}function lR({org:G,onChanged:L}){let[A,O]=x.useState(0),w=M4(`/-/orgs/${G}/labs`,A);if(w.state!=="ok")return M.jsxDEV(D4,{load:w,what:"Labs",retry:()=>O((h)=>h+1)},void 0,!1,void 0,this);let{features:T,earlyAdopter:k}=w.data,I=async(h,u)=>{if(await G2(`/-/orgs/${G}/labs`,{method:"PATCH",body:JSON.stringify(h)},u))O((S)=>S+1),L()};return M.jsxDEV("section",{className:"card","aria-label":"Labs",children:[M.jsxDEV("p",{className:"mode",children:"Features that are new: try them before everyone has them. Each can be turned off again."},void 0,!1,void 0,this),M.jsxDEV("div",{className:"setting-row",children:[M.jsxDEV("div",{children:[M.jsxDEV("strong",{children:"Early adopter"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:"Every new feature is on for this org as soon as it lands."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(t7,{label:"Early adopter",checked:k,onChange:(h)=>void I({earlyAdopter:h},h?"Every new feature is on":"Early adopter off")},void 0,!1,void 0,this)]},void 0,!0,void 0,this),T.map((h)=>M.jsxDEV("div",{className:"setting-row",children:[M.jsxDEV("div",{children:[M.jsxDEV("strong",{children:h.name},void 0,!1,void 0,this)," ",M.jsxDEV("span",{className:"badge",children:["since ",Y4(h.since)]},void 0,!0,void 0,this),M.jsxDEV("p",{className:"mode",children:h.description},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(t7,{label:h.name,checked:k||h.on,disabled:k,onChange:(u)=>void I({flags:{[h.key]:u}},`${h.name} ${u?"on":"off"}`)},void 0,!1,void 0,this)]},h.key,!0,void 0,this))]},void 0,!0,void 0,this)}function aR({org:G}){let[L,A]=x.useState(0),O=M4(`/-/orgs/${G}/webhooks`,L),[w,T]=x.useState(!1),[k,I]=x.useState(null),[h,u]=x.useState(null),[S,W]=x.useState(null),v=()=>A((E)=>E+1),m=async(E)=>{u(E),W(null);let l=await G2(`/-/orgs/${G}/webhooks/${E.id}/deliveries`,{});W(l?.deliveries??[])},V=async(E)=>{let l=await G2(`/-/orgs/${G}/webhooks/${E.id}/test`,{method:"POST"});if(l){let i=l.delivery.attempts[0];u2(l.delivery.state==="delivered"?`Test delivered (${i?.status})`:`Test not delivered (${i?.status??i?.response}); retrying`,l.delivery.state==="delivered"?"ok":"error"),v()}},c=async(E)=>{if(await H6({title:"Remove this endpoint?",body:M.jsxDEV(M.Fragment,{children:["Nothing more is sent to ",M.jsxDEV("code",{children:E.url},void 0,!1,void 0,this),"."]},void 0,!0,void 0,this),action:"Remove endpoint",danger:!0})&&await G2(`/-/orgs/${G}/webhooks/${E.id}`,{method:"DELETE"},"Endpoint removed"))v()};if(O.state!=="ok")return M.jsxDEV(D4,{load:O,what:"the webhooks",retry:v},void 0,!1,void 0,this);let r=(E)=>E.disabledAt?M.jsxDEV("span",{className:"badge warn",children:"disabled"},void 0,!1,void 0,this):E.consecutiveFailures>0?M.jsxDEV("span",{className:"badge warn",children:["failing · ",E.consecutiveFailures]},void 0,!0,void 0,this):M.jsxDEV("span",{className:"badge ok",children:"active"},void 0,!1,void 0,this);return M.jsxDEV("section",{className:"card flush","aria-label":"Webhooks",children:[M.jsxDEV("div",{className:"card-head",children:[M.jsxDEV("div",{children:[M.jsxDEV("h3",{children:"Webhooks"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:"Events the org raises (a World made, a member added, the plan changed) sent to your endpoint as JSON, signed with Standard Webhooks. Retried with backoff; twenty failures in a row disable the endpoint and email the admins."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>T(!0),children:"Add endpoint"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),O.data.webhooks.length===0?M.jsxDEV("p",{className:"mode table-note",children:"No endpoints yet."},void 0,!1,void 0,this):M.jsxDEV("table",{className:"dense","aria-label":"Endpoints",children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"Endpoint"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Events"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Status"},void 0,!1,void 0,this),M.jsxDEV("th",{className:"num",children:M.jsxDEV("span",{className:"sr",children:"Actions"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:O.data.webhooks.map((E)=>M.jsxDEV("tr",{children:[M.jsxDEV("td",{children:M.jsxDEV("span",{className:"who",children:[M.jsxDEV("code",{children:E.url},void 0,!1,void 0,this),E.description?M.jsxDEV("span",{className:"mode",children:E.description},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:E.events.includes("*")?"Every event":E.events.join(", ")},void 0,!1,void 0,this),M.jsxDEV("td",{children:r(E)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"num",children:M.jsxDEV(q8,{label:`More for ${E.url}`,items:[{label:"Send a test event",onSelect:()=>void V(E)},{label:"Deliveries",onSelect:()=>void m(E)},E.disabledAt?{label:"Enable",onSelect:()=>void G2(`/-/orgs/${G}/webhooks/${E.id}`,{method:"PATCH",body:JSON.stringify({enabled:!0})},"Endpoint enabled").then(v)}:{label:"Disable",onSelect:()=>void G2(`/-/orgs/${G}/webhooks/${E.id}`,{method:"PATCH",body:JSON.stringify({enabled:!1})},"Endpoint disabled").then(v)},{label:"Remove…",danger:!0,onSelect:()=>void c(E)}]},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},E.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(iR,{open:w,org:G,names:O.data.events,onClose:()=>T(!1),onMade:(E)=>{T(!1),I(E),v()}},void 0,!1,void 0,this),M.jsxDEV(k0,{open:Boolean(k),onClose:()=>I(null),title:"Endpoint added",footer:M.jsxDEV("button",{type:"button",className:"primary",onClick:()=>I(null),children:"Done"},void 0,!1,void 0,this),children:[M.jsxDEV("p",{className:"notice warn",children:"Copy its signing secret now: it is shown this once. Your receiver verifies each delivery with it."},void 0,!1,void 0,this),k?M.jsxDEV(W5,{label:"Signing secret",value:k,secret:!0},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV(k0,{open:Boolean(h),onClose:()=>u(null),title:"Deliveries",wide:!0,children:[h?M.jsxDEV("p",{className:"mode",children:[M.jsxDEV("code",{children:h.url},void 0,!1,void 0,this),": the last fifty, newest first."]},void 0,!0,void 0,this):null,S===null?M.jsxDEV(n7,{lines:4,label:"Loading the deliveries…"},void 0,!1,void 0,this):S.length===0?M.jsxDEV("p",{className:"mode",children:"No deliveries yet."},void 0,!1,void 0,this):M.jsxDEV("table",{className:"dense",children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"When"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Event"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Attempt"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Answer"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:S.map((E)=>{let l=E.attempts[E.attempts.length-1];return M.jsxDEV("tr",{children:[M.jsxDEV("td",{className:"mode",children:l?M.jsxDEV("span",{title:i0(l.at),children:B3(l.at)},void 0,!1,void 0,this):"—"},void 0,!1,void 0,this),M.jsxDEV("td",{children:E.event},void 0,!1,void 0,this),M.jsxDEV("td",{children:[E.attempt,E.state==="pending"?M.jsxDEV("span",{className:"mode",children:[" · next ",B3(E.nextAt)]},void 0,!0,void 0,this):M.jsxDEV("span",{className:`badge ${E.state==="delivered"?"ok":"warn"}`,children:E.state},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("td",{className:"mode",children:[l?.status??"—"," ",(l?.response??"").slice(0,60)]},void 0,!0,void 0,this)]},E.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function iR({open:G,org:L,names:A,onClose:O,onMade:w}){let[T,k]=x.useState(""),[I,h]=x.useState(""),[u,S]=x.useState(!0),[W,v]=x.useState([]),[m,V]=x.useState(null),[c,r]=x.useState(!1);x.useEffect(()=>{if(G)k(""),h(""),S(!0),v([]),V(null)},[G]);let E=async(l)=>{l.preventDefault(),r(!0),V(null);let i=await a2(`/-/orgs/${L}/webhooks`,{method:"POST",body:JSON.stringify({url:T,description:I,events:u?["*"]:W})}).catch(()=>null);r(!1);let _1=i?await i.json().catch(()=>({})):{error:`${X0} did not answer`};if(!i?.ok||!_1.secret){V(_1.error??"refused");return}w(_1.secret)};return M.jsxDEV(k0,{open:G,onClose:()=>{if(!c)O()},title:"Add an endpoint",footer:M.jsxDEV(M.Fragment,{children:[M.jsxDEV("button",{type:"button",onClick:O,disabled:c,children:"Cancel"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"submit",form:"add-endpoint",disabled:c||!T||!u&&W.length===0,children:c?"Adding…":"Add endpoint"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),children:M.jsxDEV("form",{id:"add-endpoint",onSubmit:E,className:"stack","aria-label":"Add an endpoint",children:[M.jsxDEV("label",{children:["Endpoint URL ",M.jsxDEV("input",{autoFocus:!0,name:"webhookUrl",type:"url",value:T,onChange:(l)=>k(l.target.value),placeholder:"https://example.com/hooks/volter",required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:[M.jsxDEV("span",{children:["Description ",M.jsxDEV("span",{className:"mode",children:"(optional)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("input",{name:"webhookDescription",value:I,onChange:(l)=>h(l.target.value),maxLength:200},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("fieldset",{className:"choice",children:[M.jsxDEV("legend",{children:"Events"},void 0,!1,void 0,this),M.jsxDEV("label",{className:u?"choice-card on":"choice-card",children:[M.jsxDEV("input",{type:"radio",name:"webhookEvents",checked:u,onChange:()=>S(!0)},void 0,!1,void 0,this),M.jsxDEV("span",{children:[M.jsxDEV("strong",{children:"Every event"},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:"Including ones added later."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{className:!u?"choice-card on":"choice-card",children:[M.jsxDEV("input",{type:"radio",name:"webhookEvents",checked:!u,onChange:()=>S(!1)},void 0,!1,void 0,this),M.jsxDEV("span",{children:M.jsxDEV("strong",{children:"Choose events"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!u?M.jsxDEV("div",{className:"scope-grid",children:A.map((l)=>M.jsxDEV("label",{className:"check",children:[M.jsxDEV("input",{type:"checkbox",checked:W.includes(l),onChange:(i)=>v(i.target.checked?[...W,l]:W.filter((_1)=>_1!==l))},void 0,!1,void 0,this)," ",M.jsxDEV("code",{children:l},void 0,!1,void 0,this)]},l,!0,void 0,this))},void 0,!1,void 0,this):null,m?M.jsxDEV("p",{role:"alert",children:m},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function nR({org:G,version:L}){let[A,O]=x.useState(0),w=M4(`/-/orgs/${G}/support-access`,L+A);if(w.state!=="ok")return M.jsxDEV(D4,{load:w,what:"support access"},void 0,!1,void 0,this);let T=w.data.supportAccess;return M.jsxDEV("section",{className:"card","aria-label":"Support access",children:M.jsxDEV("div",{className:"setting-row",children:[M.jsxDEV("div",{children:[M.jsxDEV("strong",{children:"Support may open this org"},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:T?M.jsxDEV(M.Fragment,{children:["Read only, until ",i0(T.until),". Each time they do is in Activity, with their reason."]},void 0,!0,void 0,this):"Not allowed. When you write to support from Help you can allow it for seven days, read only."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),T?M.jsxDEV("button",{type:"button",className:"danger-outline",onClick:()=>void G2(`/-/orgs/${G}/support-access`,{method:"DELETE"},"Support access revoked").then(()=>O((k)=>k+1)),children:"Revoke"},void 0,!1,void 0,this):M.jsxDEV("span",{className:"badge",children:"off"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}var Cq=[["all","All activity",/./],["worlds","Worlds",/^WORLD_/],["members","Members",/^(MEMBER_|INVITE_)/],["tokens","Tokens",/TOKEN/],["billing","Billing",/^(PLAN_|QUOTA_|SPEND_|REMINDER_)/],["settings","Settings",/^(ORG_|SECURITY_|LABS_|WEBHOOK_|SUPPORT_|IMPERSONATION)/]];function rR({org:G,version:L}){let[A,O]=x.useState(0),w=M4(`/-/orgs/${G}/audit`,L+A),[T,k]=x.useState("all"),[I,h]=x.useState(""),[u,S]=x.useState(50),W=(V)=>V.platform?"Volter World":V.operator?"Support":V.email??V.id??"?",v=Cq.find(([V])=>V===T)?.[2]??/./,m=w.state==="ok"?w.data.entries.filter((V)=>v.test(V.event)&&`${V.event} ${W(V.actor)} ${V.target??""}`.toLowerCase().includes(I.trim().toLowerCase())):[];return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Activity",lede:"Every admin act in the org, who did it and when.",children:[M.jsxDEV("a",{className:"button",href:`/-/orgs/${G}/audit.jsonl`,download:`${G}-activity.jsonl`,children:"Download log"},void 0,!1,void 0,this),M.jsxDEV("a",{className:"button",href:`/-/orgs/${G}/export`,download:`${G}-export.json`,children:"Export org"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"toolbar",children:[M.jsxDEV("select",{"aria-label":"Area",value:T,onChange:(V)=>{k(V.target.value),S(50)},children:Cq.map(([V,c])=>M.jsxDEV("option",{value:V,children:c},V,!1,void 0,this))},void 0,!1,void 0,this),M.jsxDEV("input",{type:"search","aria-label":"Search the activity",placeholder:"Search by person, act or thing…",value:I,onChange:(V)=>{h(V.target.value),S(50)}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),w.state!=="ok"?M.jsxDEV(D4,{load:w,what:"the activity",retry:()=>O((V)=>V+1),lines:6},void 0,!1,void 0,this):m.length===0?M.jsxDEV(K5,{title:w.data.entries.length===0?"Nothing yet":"Nothing matches",children:w.data.entries.length===0?"Acts in the org (a World made, a member added, a token made) show here.":"Try another area or search."},void 0,!1,void 0,this):M.jsxDEV("div",{className:"block",children:[M.jsxDEV("table",{className:"dense","aria-label":`${G}'s activity`,children:[M.jsxDEV("thead",{children:M.jsxDEV("tr",{children:[M.jsxDEV("th",{children:"When"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"What"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"Who"},void 0,!1,void 0,this),M.jsxDEV("th",{children:"On"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("tbody",{children:m.slice(0,u).map((V,c)=>M.jsxDEV("tr",{children:[M.jsxDEV("td",{className:"mode nowrap",children:M.jsxDEV("span",{title:i0(V.at),children:B3(V.at)},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{children:sR(V.event)},void 0,!1,void 0,this),M.jsxDEV("td",{children:M.jsxDEV("span",{className:"vendor-cell",children:[M.jsxDEV(L5,{of:W(V.actor),small:!0},void 0,!1,void 0,this),W(V.actor)]},void 0,!0,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("td",{className:"mode",children:V.target??""},void 0,!1,void 0,this)]},`${V.at}-${c}`,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),m.length>u?M.jsxDEV("div",{className:"table-note",children:M.jsxDEV("button",{type:"button",onClick:()=>S((V)=>V+50),children:["Show ",Math.min(50,m.length-u)," more"]},void 0,!0,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Tq={ORG_CREATE:"Created the org",ORG_RENAME:"Renamed the org",ORG_DELETE:"Deleted the org",MEMBER_INVITE:"Invited or added a member",MEMBER_JOIN:"Joined by invitation",INVITE_REVOKE:"Revoked an invitation",MEMBER_REMOVE:"Removed a member",MEMBER_ROLE:"Changed a role",WORLD_PROVISION:"Created a World",WORLD_DELETE:"Deleted a World",WORLD_ACCESS_SET:"Changed who reaches a World",WORLD_OPEN:"Opened a World",PREVIEW_CREATE:"Made a preview",PREVIEW_DELETE:"Removed a preview",WORLD_CLAIM:"Claimed a World into the org",TOKEN_CREATE:"Made a token",TOKEN_REVOKE:"Revoked a token",ORG_TOKEN_CREATE:"Made an org token",ORG_TOKEN_REVOKE:"Revoked an org token",SECURITY_CHANGE:"Changed security settings",SUPPORT_REQUEST:"Wrote to support",SUPPORT_ACCESS_GRANTED:"Allowed support access",SUPPORT_ACCESS_REVOKED:"Revoked support access",IMPERSONATION:"Support opened the org",WEBHOOK_CREATE:"Added a webhook endpoint",WEBHOOK_CHANGE:"Changed a webhook endpoint",WEBHOOK_DELETE:"Removed a webhook endpoint",WEBHOOK_DISABLED:"A webhook endpoint was disabled",SPEND_CAP_CHANGE:"Changed the spend cap",LABS_CHANGE:"Changed Labs",REMINDER_SENT:"Sent a billing reminder",PLAN_CHECKOUT:"Opened a checkout",PLAN_CHANGE:"The plan changed",QUOTA_WARNED:"Went over the plan",QUOTA_RESTRICTED:"The org was held",QUOTA_CLEARED:"Back within the plan"},sR=(G)=>{if(Tq[G])return Tq[G];let L=G.toLowerCase().replace(/_/g," ");return L.charAt(0).toUpperCase()+L.slice(1)};function tR({person:G,info:L,onSignOut:A}){return M.jsxDEV(M.Fragment,{children:[M.jsxDEV(B4,{title:"Account"},void 0,!1,void 0,this),M.jsxDEV("section",{className:"card profile","aria-labelledby":"you",children:[M.jsxDEV(L5,{of:G.name??G.email??"?"},void 0,!1,void 0,this),M.jsxDEV("div",{className:"grow",children:[M.jsxDEV("h3",{id:"you",children:G.name??G.email??G.id},void 0,!1,void 0,this),G.name&&G.email?M.jsxDEV("p",{className:"mode",children:G.email},void 0,!1,void 0,this):null,L?M.jsxDEV("p",{className:"mode",children:["Signed in with ",L.provider.name,L.provider.account?M.jsxDEV(M.Fragment,{children:". Your name, email and how you sign in are kept there."},void 0,!1,void 0,this):"."]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"card-actions",children:[L?.provider.account?M.jsxDEV("a",{className:"button",href:L.provider.account,children:["Manage your ",L.provider.name," account"]},void 0,!0,void 0,this):null,M.jsxDEV("button",{type:"button",onClick:A,children:"Sign out"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV(Sq,{kind:"personal"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function kq({list:G,onJoined:L}){let[A,O]=x.useState(null),w=async(T)=>{O(T.id);let k=await G2(`/-/invitations/${encodeURIComponent(T.id)}/join`,{method:"POST"});if(O(null),k?.joined)u2(`Joined ${T.org.name}`),await L(k.joined)};return M.jsxDEV("section",{className:"card","aria-labelledby":"invited",children:[M.jsxDEV("h3",{id:"invited",children:G.length===1?"You are invited":"You are invited to these orgs"},void 0,!1,void 0,this),M.jsxDEV("ul",{className:"invite-list",children:G.map((T)=>M.jsxDEV("li",{children:[M.jsxDEV("span",{className:"vendor-cell",children:[M.jsxDEV(L5,{of:T.org.name,small:!0},void 0,!1,void 0,this),M.jsxDEV("span",{children:[M.jsxDEV("strong",{children:T.org.name},void 0,!1,void 0,this)," ",M.jsxDEV("span",{className:"mode",children:["as ",T.role==="org:admin"?"an admin":"a member"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("button",{type:"button",className:"primary",disabled:A!==null,onClick:()=>void w(T),children:A===T.id?"Joining…":`Join ${T.org.name}`},void 0,!1,void 0,this)]},T.id,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function oR({first:G,site:L,invitations:A,onJoined:O,onMade:w}){let[T,k]=x.useState(""),[I,h]=x.useState(!1),[u,S]=x.useState(!1),[W,v]=x.useState(null),m=!T?null:!LY.test(T)?"Lowercase letters, digits and dashes, starting with a letter or digit.":Fq.includes(T)?`${T} is one of this platform's own pages: choose another.`:null,V=async(c)=>{if(c.preventDefault(),m||!T)return;S(!0),v(null);let r=await a2("/-/orgs",{method:"POST",body:JSON.stringify({name:T,...L?{accepted:I}:{}})}).catch(()=>null),E=r?await r.json().catch(()=>({})):{error:`${X0} did not answer`};if(!r?.ok){S(!1),v(E.error??"refused");return}u2(`Created ${E.slug??T}`),await w(E.slug??E.name??"")};return M.jsxDEV("div",{className:"narrow",children:[M.jsxDEV(B4,{title:G?"Welcome to Volter World":"Create an org",lede:G&&A.length?"Your team is waiting: join the org you were invited to, or make one of your own.":G?"An org holds your Worlds and your teammates. Make one to start; you can invite people and make more orgs later.":"An org holds Worlds and the people who work on them."},void 0,!1,void 0,this),A.length?M.jsxDEV(kq,{list:A,onJoined:O},void 0,!1,void 0,this):null,M.jsxDEV("section",{className:"card","aria-labelledby":"create-org",children:[M.jsxDEV("h3",{id:"create-org",className:A.length?void 0:"sr",children:A.length?"Or make your own org":"Create an org"},void 0,!1,void 0,this),M.jsxDEV("form",{onSubmit:V,className:"stack",children:[M.jsxDEV("label",{children:["Org name ",M.jsxDEV("input",{autoFocus:!A.length,name:"orgName",value:T,onChange:(c)=>k(c.target.value.toLowerCase()),placeholder:"acme","aria-invalid":Boolean(m),"aria-describedby":"org-name-help",autoComplete:"off",spellCheck:!1,required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("p",{id:"org-name-help",className:m?"field-error":"mode",children:m??M.jsxDEV(M.Fragment,{children:["Its address: ",M.jsxDEV("code",{children:[X0,"/",T||"acme"]},void 0,!0,void 0,this),", and ",M.jsxDEV("code",{children:[T||"acme","/<world>"]},void 0,!0,void 0,this)," for its Worlds. You can change the name people see later, not the address."]},void 0,!0,void 0,this)},void 0,!1,void 0,this),L?M.jsxDEV("label",{className:"check",children:[M.jsxDEV("input",{name:"accepted",type:"checkbox",checked:I,onChange:(c)=>h(c.target.checked),required:!0},void 0,!1,void 0,this)," ",M.jsxDEV("span",{children:["I agree to the ",M.jsxDEV("a",{href:`${L}/terms.html`,target:"_blank",rel:"noreferrer",children:"terms of service"},void 0,!1,void 0,this)," and the ",M.jsxDEV("a",{href:`${L}/privacy.html`,target:"_blank",rel:"noreferrer",children:"privacy policy"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null,W?M.jsxDEV("p",{role:"alert",children:W},void 0,!1,void 0,this):null,M.jsxDEV("div",{className:"card-actions",children:M.jsxDEV("button",{type:"submit",disabled:u||!T||Boolean(m)||Boolean(L)&&!I,children:u?"Creating…":"Create org"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}function eR({orgs:G,onChanged:L}){let[A,O]=x.useState("worlds"),[w,T]=x.useState("normal"),[k,I]=x.useState(""),[h,u]=x.useState(""),[S,W]=x.useState(G[0]??""),[v,m]=x.useState(""),[V,c]=x.useState(!1),[r,E]=x.useState(null),[l,i]=x.useState(!1);x.useEffect(()=>{if(!S&&G[0])W(G[0])},[G,S]);let _1=async(U1)=>{U1.preventDefault(),i(!0);let t=await G2("/-/support",{method:"POST",body:JSON.stringify({category:A,severity:w,subject:k,message:h,...S?{org:S}:{},...v?{world:v}:{},...V&&S?{allowAccessDays:7}:{}})});if(i(!1),t?.id)E({id:t.id,copyTo:t.copyTo??null,until:t.access?.until??null}),I(""),u(""),m(""),c(!1),L?.()};if(r)return M.jsxDEV("div",{className:"narrow",children:[M.jsxDEV(B4,{title:"Help"},void 0,!1,void 0,this),M.jsxDEV("section",{className:"card sent",role:"status",children:[M.jsxDEV("h3",{children:"We have your request"},void 0,!1,void 0,this),M.jsxDEV("p",{children:["Your ticket is ",M.jsxDEV("code",{children:r.id},void 0,!1,void 0,this),".",r.copyTo?` A copy went to ${r.copyTo}.`:""," A person answers, usually within a working day."]},void 0,!0,void 0,this),r.until?M.jsxDEV("p",{className:"mode",children:["Support may open ",S,", read only, until ",i0(r.until),". You can revoke it under Settings › Support access."]},void 0,!0,void 0,this):null,M.jsxDEV("div",{className:"card-actions",children:M.jsxDEV("button",{type:"button",onClick:()=>E(null),children:"Write another"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return M.jsxDEV("div",{className:"narrow",children:[M.jsxDEV(B4,{title:"Help",lede:"Ask a person. Say what you saw and where: the org and the World go along with it."},void 0,!1,void 0,this),M.jsxDEV("section",{className:"card","aria-label":"Write to support",children:M.jsxDEV("form",{onSubmit:_1,className:"stack",children:[M.jsxDEV("div",{className:"two",children:[M.jsxDEV("label",{children:["About ",M.jsxDEV("select",{name:"helpCategory",value:A,onChange:(U1)=>O(U1.target.value),children:[M.jsxDEV("option",{value:"worlds",children:"A World or a twin"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"billing",children:"Billing"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"account",children:"My account or team"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"security",children:"Security"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"other",children:"Something else"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:["How urgent ",M.jsxDEV("select",{name:"helpSeverity",value:w,onChange:(U1)=>T(U1.target.value),children:[M.jsxDEV("option",{value:"low",children:"Low: a question"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"normal",children:"Normal"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"high",children:"High: something is broken"},void 0,!1,void 0,this),M.jsxDEV("option",{value:"urgent",children:"Urgent: we cannot work"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"two",children:[G.length>0?M.jsxDEV("label",{children:["Org ",M.jsxDEV("select",{name:"helpOrg",value:S,onChange:(U1)=>W(U1.target.value),children:G.map((U1)=>M.jsxDEV("option",{value:U1,children:U1},U1,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,M.jsxDEV("label",{children:[M.jsxDEV("span",{children:["World ",M.jsxDEV("span",{className:"mode",children:"(optional)"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("input",{name:"helpWorld",value:v,onChange:(U1)=>m(U1.target.value),placeholder:"acme/staging"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:["Subject ",M.jsxDEV("input",{name:"helpSubject",value:k,onChange:(U1)=>I(U1.target.value),maxLength:200,required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("label",{children:["What happened ",M.jsxDEV("textarea",{name:"helpMessage",value:h,onChange:(U1)=>u(U1.target.value),rows:6,maxLength:5000,required:!0},void 0,!1,void 0,this)]},void 0,!0,void 0,this),S?M.jsxDEV("label",{className:"check",children:[M.jsxDEV("input",{type:"checkbox",name:"helpAllow",checked:V,onChange:(U1)=>c(U1.target.checked)},void 0,!1,void 0,this)," ",M.jsxDEV("span",{children:["Let support open ",S,", read only, for seven days, so they see what you see. Admins only; you can revoke it."]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):null,M.jsxDEV("div",{className:"card-actions",children:M.jsxDEV("button",{type:"submit",disabled:l||!k.trim()||!h.trim(),children:l?"Sending…":"Send to support"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function z_({orgs:G,worlds:L,firstWorld:A,version:O}){let[T,k]=x.useState(()=>{try{return localStorage.getItem("volter.console.onboarding")==="done"}catch{return!1}}),[I,h]=x.useState(null),u=x.useRef(!0);if(x.useEffect(()=>()=>{u.current=!1},[]),x.useEffect(()=>{a2("/-/tokens").then(async(m)=>{if(u.current)h(m.ok?(await m.json()).tokens.length>0:!1)}).catch(()=>{return})},[O]),T)return null;let S=G[0],W=[[G.length>0,"Create or join an org"],[I===!0,M.jsxDEV(M.Fragment,{children:["Install the command and sign it in: ",M.jsxDEV("code",{children:"npm install -g @volter/world"},void 0,!1,void 0,this),", then ",M.jsxDEV("code",{children:["volter login ",X0]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)],[L>0,M.jsxDEV(M.Fragment,{children:["In your app's folder, make its World here: ",M.jsxDEV("code",{children:"volter world init"},void 0,!1,void 0,this),", then ",M.jsxDEV("code",{children:["volter remote add origin ",A??`${S??"<org>"}/<world>`,A?"":" --create"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)],[!1,M.jsxDEV(M.Fragment,{children:["Send it what your app did: ",M.jsxDEV("code",{children:'volter world changeset -m "…"'},void 0,!1,void 0,this),", then ",M.jsxDEV("code",{children:"volter world push"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]],v=W.filter(([m])=>m).length;return M.jsxDEV("section",{"aria-labelledby":"getting-started",className:"onboarding",children:[M.jsxDEV("div",{className:"onboarding-head",children:[M.jsxDEV("h3",{id:"getting-started",children:"Get started"},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",children:[v," of ",W.length]},void 0,!0,void 0,this),M.jsxDEV("div",{className:"progress","aria-hidden":"true",children:M.jsxDEV("span",{style:{width:`${v/W.length*100}%`}},void 0,!1,void 0,this)},void 0,!1,void 0,this),M.jsxDEV("button",{type:"button",className:"icon-button","aria-label":"Dismiss getting started",onClick:()=>{try{localStorage.setItem("volter.console.onboarding","done")}catch{}k(!0)},children:"✕"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("ol",{children:W.map(([m,V],c)=>M.jsxDEV("li",{className:m?"done":void 0,children:[M.jsxDEV("span",{className:"tick","aria-hidden":"true",children:m?"✓":c+1},void 0,!1,void 0,this),M.jsxDEV("span",{children:V},void 0,!1,void 0,this),M.jsxDEV("span",{className:"sr",children:m?"(done)":""},void 0,!1,void 0,this)]},c,!0,void 0,this))},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode onboarding-alt",children:["No terminal? ",M.jsxDEV("strong",{children:"Create World"},void 0,!1,void 0,this)," above makes one here, with the vendors you pick."]},void 0,!0,void 0,this),M.jsxDEV(X_,{world:A},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function Z_({world:G,readOnly:L}){let[A,O]=x.useState([]),w=x.useCallback(()=>{a2(`/-/worlds/${G}/previews`).then(async(k)=>{if(k.ok)O((await k.json()).previews)}).catch(()=>{return})},[G]);x.useEffect(w,[w]);let T=async(k)=>{if(!await H6({title:`Remove the preview ${k}?`,body:"Its branch and everything written to it go; the pull request's next run makes a new one.",action:"Remove preview",danger:!0}))return;if(await G2(`/-/worlds/${G}/previews/${k}`,{method:"DELETE"},`Removed ${k}`))w()};if(!A.length)return null;return M.jsxDEV("tr",{className:"preview-row",children:M.jsxDEV("td",{colSpan:5,children:[M.jsxDEV("span",{className:"mode",children:"Previews"},void 0,!1,void 0,this),M.jsxDEV("ul",{className:"previews",children:A.map((k)=>M.jsxDEV("li",{children:[M.jsxDEV("code",{children:k.label},void 0,!1,void 0,this),M.jsxDEV("span",{className:"mode",title:i0(k.createdAt),children:[B3(k.createdAt),k.expiresAt?M.jsxDEV(M.Fragment,{children:[" · ends ",M.jsxDEV("span",{title:i0(k.expiresAt),children:Y4(k.expiresAt)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,k.live?null:" · not running"]},void 0,!0,void 0,this),k.live?M.jsxDEV("a",{href:k.open,children:"Open"},void 0,!1,void 0,this):null,!L?M.jsxDEV("button",{type:"button",className:"link-button",onClick:()=>void T(k.label),children:"Remove"},void 0,!1,void 0,this):null]},k.label,!0,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this)}function X_({world:G}){let L=Aq({platform:X0,...G?{world:G}:{}}),A=()=>{navigator.clipboard?.writeText(L).then(()=>u2("Copied the prompt: paste it into your coding agent"),()=>u2("Select the prompt and copy it","error"))};return M.jsxDEV("details",{className:"ask-agent",children:[M.jsxDEV("summary",{children:[M.jsxDEV("span",{children:"Or ask your coding agent to do all of this"},void 0,!1,void 0,this),M.jsxDEV("button",{type:"button",onClick:(O)=>{O.preventDefault(),A()},children:"Copy prompt"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),M.jsxDEV("pre",{children:L},void 0,!1,void 0,this),M.jsxDEV("p",{className:"mode",children:"Paste it into Claude Code, Cursor, VS Code or Codex. You approve the sign-in in your browser; the agent does the rest."},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}BY();vq.createRoot(WY).render(M.jsxDEV(M.Fragment,{children:[M.jsxDEV(vR,{},void 0,!1,void 0,this),M.jsxDEV(Kq,{},void 0,!1,void 0,this),M.jsxDEV(Wq,{},void 0,!1,void 0,this),M.jsxDEV(Lq,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this));
@@ -1833,7 +1833,7 @@ export function createPlatform(opts) {
1833
1833
  const asked = days === null ? null : Date.now() + days * 86_400_000;
1834
1834
  const tokenEnd = held?.expiresAt ? Date.parse(held.expiresAt) : null;
1835
1835
  const ends = tokenEnd === null ? asked : asked === null ? tokenEnd : Math.min(asked, tokenEnd);
1836
- const made = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: body.scope === 'read' ? 'read' : 'write', for: session.person.id, ...(ends !== null ? { expiresAt: new Date(ends).toISOString() } : {}) }) }).catch(() => null);
1836
+ const made = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: body.scope === 'read' ? 'read' : 'write', for: session.person.id, forName: session.person.email ?? session.person.id, ...(ends !== null ? { expiresAt: new Date(ends).toISOString() } : {}) }) }).catch(() => null);
1837
1837
  const key = made?.ok ? (await made.json()) : null;
1838
1838
  if (!key)
1839
1839
  return json({ error: `the World did not make a key (${made?.status ?? 'unreachable'})` }, 502);
@@ -1869,7 +1869,7 @@ export function createPlatform(opts) {
1869
1869
  // listed and revoked alone in the World's Settings; never the World's own token
1870
1870
  // for the person, ending when the token does, and one per token: asking again replaces it rather than piling keys up
1871
1871
  const keyName = `${held.name} · ${session.person.email ?? session.person.id} · ${held.hash.slice(0, 8)}`.slice(0, 80);
1872
- const madeKey = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: writes ? 'write' : 'read', for: session.person.id, replace: true, ...(held.expiresAt ? { expiresAt: held.expiresAt } : {}) }) }).catch(() => null);
1872
+ const madeKey = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: writes ? 'write' : 'read', for: session.person.id, forName: session.person.email ?? session.person.id, replace: true, ...(held.expiresAt ? { expiresAt: held.expiresAt } : {}) }) }).catch(() => null);
1873
1873
  const key = madeKey?.ok ? (await madeKey.json()) : null;
1874
1874
  if (!key)
1875
1875
  return json({ error: `the World did not make a key (${madeKey?.status ?? 'unreachable'})` }, 502);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volter/world-platform",
3
- "version": "2.0.34",
3
+ "version": "2.0.36",
4
4
  "description": "The Volter World platform: people and orgs through an access provider (Volter Identity, GitHub, or any OpenID Connect issuer), members and invitations, tokens, Worlds made on enrolled hosts, and opening a World for a person with a pass. Open and self-hostable; serves its own pages and never a twin.",
5
5
  "keywords": [
6
6
  "volter",
@@ -39,8 +39,8 @@
39
39
  "@aws-sdk/client-s3": "3.1081.0",
40
40
  "@volter/identity": "^0.1.0",
41
41
  "@volter/world-access": "2.0.2",
42
- "@volter/world-console": "2.0.13",
43
- "@volter/world-core": "2.0.31",
42
+ "@volter/world-console": "2.0.14",
43
+ "@volter/world-core": "2.0.33",
44
44
  "drizzle-orm": "0.45.3",
45
45
  "react": "^19.2.7",
46
46
  "react-dom": "^19.2.7",
@@ -51,9 +51,9 @@
51
51
  "@types/node": "^24.0.0",
52
52
  "@types/react": "^19.2.7",
53
53
  "@types/react-dom": "^19.2.7",
54
- "@volter/twin-volteridentity": "0.1.31",
55
- "@volter/world-host": "2.0.48",
56
- "@volter/world-runtime": "2.0.49",
54
+ "@volter/twin-volteridentity": "0.1.33",
55
+ "@volter/world-host": "2.0.50",
56
+ "@volter/world-runtime": "2.0.51",
57
57
  "@volter/world-tooling": "0.1.0",
58
58
  "drizzle-kit": "0.31.11",
59
59
  "playwright": "^1.61.0",
package/src/platform.ts CHANGED
@@ -1163,7 +1163,7 @@ export function createPlatform(opts: PlatformOptions): { fetch: (request: Reques
1163
1163
  const asked = days === null ? null : Date.now() + days * 86_400_000;
1164
1164
  const tokenEnd = held?.expiresAt ? Date.parse(held.expiresAt) : null;
1165
1165
  const ends = tokenEnd === null ? asked : asked === null ? tokenEnd : Math.min(asked, tokenEnd);
1166
- const made = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: body.scope === 'read' ? 'read' : 'write', for: session.person.id, ...(ends !== null ? { expiresAt: new Date(ends).toISOString() } : {}) }) }).catch(() => null);
1166
+ const made = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: body.scope === 'read' ? 'read' : 'write', for: session.person.id, forName: session.person.email ?? session.person.id, ...(ends !== null ? { expiresAt: new Date(ends).toISOString() } : {}) }) }).catch(() => null);
1167
1167
  const key = made?.ok ? (await made.json()) as { id: string; key: string; scope: string; expiresAt: string | null } : null;
1168
1168
  if (!key) return json({ error: `the World did not make a key (${made?.status ?? 'unreachable'})` }, 502);
1169
1169
  if (held) tokens?.noteWorldKey(held.hash, row.name, key.id, false); // revoked with the token (volter logout, or under Account)
@@ -1189,7 +1189,7 @@ export function createPlatform(opts: PlatformOptions): { fetch: (request: Reques
1189
1189
  // listed and revoked alone in the World's Settings; never the World's own token
1190
1190
  // for the person, ending when the token does, and one per token: asking again replaces it rather than piling keys up
1191
1191
  const keyName = `${held.name} · ${session.person.email ?? session.person.id} · ${held.hash.slice(0, 8)}`.slice(0, 80);
1192
- const madeKey = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: writes ? 'write' : 'read', for: session.person.id, replace: true, ...(held.expiresAt ? { expiresAt: held.expiresAt } : {}) }) }).catch(() => null);
1192
+ const madeKey = await fetch(`${new URL(row.base).origin}/-/${row.name}/keys`, { method: 'POST', headers: { 'x-volter-token': row.token, 'content-type': 'application/json' }, body: JSON.stringify({ name: keyName, scope: writes ? 'write' : 'read', for: session.person.id, forName: session.person.email ?? session.person.id, replace: true, ...(held.expiresAt ? { expiresAt: held.expiresAt } : {}) }) }).catch(() => null);
1193
1193
  const key = madeKey?.ok ? (await madeKey.json()) as { id: string; key: string; scope: string } : null;
1194
1194
  if (!key) return json({ error: `the World did not make a key (${madeKey?.status ?? 'unreachable'})` }, 502);
1195
1195
  tokens?.noteWorldKey(held.hash, row.name, key.id); // revoked with the token (volter logout, or under Account)