@studioindia/designx 1.0.1 → 1.0.4

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.
@@ -1,4 +1,4 @@
1
- import{g as Os,d as pn,e as Is}from"./index-CBUxOHiU.js";function Ns(e,n){for(var t=0;t<n.length;t++){const r=n[t];if(typeof r!="string"&&!Array.isArray(r)){for(const c in r)if(c!=="default"&&!(c in e)){const i=Object.getOwnPropertyDescriptor(r,c);i&&Object.defineProperty(e,c,i.get?i:{enumerable:!0,get:()=>r[c]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ze={},Ii="1.13.8",Fa=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},nr=Array.prototype,Ni=Object.prototype,Ca=typeof Symbol<"u"?Symbol.prototype:null,Ls=nr.push,dt=nr.slice,it=Ni.toString,Ms=Ni.hasOwnProperty,$c=typeof ArrayBuffer<"u",qs=typeof DataView<"u",Ps=Array.isArray,Sa=Object.keys,Ba=Object.create,ka=$c&&ArrayBuffer.isView,zs=isNaN,js=isFinite,Yc=!{toString:null}.propertyIsEnumerable("toString"),Wa=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Xs=Math.pow(2,53)-1;function ze(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),r=Array(t),c=0;c<t;c++)r[c]=arguments[c+n];switch(n){case 0:return e.call(this,r);case 1:return e.call(this,arguments[0],r);case 2:return e.call(this,arguments[0],arguments[1],r)}var i=Array(n+1);for(c=0;c<n;c++)i[c]=arguments[c];return i[n]=r,e.apply(this,i)}}function bn(e){var n=typeof e;return n==="function"||n==="object"&&!!e}function Kc(e){return e===null}function Li(e){return e===void 0}function Mi(e){return e===!0||e===!1||it.call(e)==="[object Boolean]"}function Qc(e){return!!(e&&e.nodeType===1)}function Pe(e){var n="[object "+e+"]";return function(t){return it.call(t)===n}}const tr=Pe("String"),qi=Pe("Number"),Jc=Pe("Date"),eu=Pe("RegExp"),nu=Pe("Error"),Pi=Pe("Symbol"),zi=Pe("ArrayBuffer");var tu=Pe("Function"),Vs=Fa.document&&Fa.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof Vs!="function"&&(tu=function(e){return typeof e=="function"||!1});const qe=tu,ru=Pe("Object");var iu=qs&&(!/\[native code\]/.test(String(DataView))||ru(new DataView(new ArrayBuffer(8)))),ji=typeof Map<"u"&&ru(new Map),Hs=Pe("DataView");function Gs(e){return e!=null&&qe(e.getInt8)&&zi(e.buffer)}const at=iu?Gs:Hs,yn=Ps||Pe("Array");function Dn(e,n){return e!=null&&Ms.call(e,n)}var Ri=Pe("Arguments");(function(){Ri(arguments)||(Ri=function(e){return Dn(e,"callee")})})();const rr=Ri;function au(e){return!Pi(e)&&js(e)&&!isNaN(parseFloat(e))}function Xi(e){return qi(e)&&zs(e)}function Vi(e){return function(){return e}}function ou(e){return function(n){var t=e(n);return typeof t=="number"&&t>=0&&t<=Xs}}function cu(e){return function(n){return n==null?void 0:n[e]}}const Yt=cu("byteLength"),Zs=ou(Yt);var $s=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function Ys(e){return ka?ka(e)&&!at(e):Zs(e)&&$s.test(it.call(e))}const Hi=$c?Ys:Vi(!1),Me=cu("length");function Ks(e){for(var n={},t=e.length,r=0;r<t;++r)n[e[r]]=!0;return{contains:function(c){return n[c]===!0},push:function(c){return n[c]=!0,e.push(c)}}}function uu(e,n){n=Ks(n);var t=Wa.length,r=e.constructor,c=qe(r)&&r.prototype||Ni,i="constructor";for(Dn(e,i)&&!n.contains(i)&&n.push(i);t--;)i=Wa[t],i in e&&e[i]!==c[i]&&!n.contains(i)&&n.push(i)}function Oe(e){if(!bn(e))return[];if(Sa)return Sa(e);var n=[];for(var t in e)Dn(e,t)&&n.push(t);return Yc&&uu(e,n),n}function su(e){if(e==null)return!0;var n=Me(e);return typeof n=="number"&&(yn(e)||tr(e)||rr(e))?n===0:Me(Oe(e))===0}function Gi(e,n){var t=Oe(n),r=t.length;if(e==null)return!r;for(var c=Object(e),i=0;i<r;i++){var a=t[i];if(n[a]!==c[a]||!(a in c))return!1}return!0}function Ae(e){if(e instanceof Ae)return e;if(!(this instanceof Ae))return new Ae(e);this._wrapped=e}Ae.VERSION=Ii;Ae.prototype.value=function(){return this._wrapped};Ae.prototype.valueOf=Ae.prototype.toJSON=Ae.prototype.value;Ae.prototype.toString=function(){return String(this._wrapped)};function Ra(e){return new Uint8Array(e.buffer||e,e.byteOffset||0,Yt(e))}var Oa="[object DataView]";function du(e,n){for(var t=[{a:e,b:n}],r=[],c=[];t.length;){var i=t.pop();if(i===!0){r.pop(),c.pop();continue}if(e=i.a,n=i.b,e===n){if(e!==0||1/e===1/n)continue;return!1}if(e==null||n==null)return!1;if(e!==e){if(n!==n)continue;return!1}var a=typeof e;if(a!=="function"&&a!=="object"&&typeof n!="object")return!1;e instanceof Ae&&(e=e._wrapped),n instanceof Ae&&(n=n._wrapped);var o=it.call(e);if(o!==it.call(n))return!1;if(iu&&o=="[object Object]"&&at(e)){if(!at(n))return!1;o=Oa}switch(o){case"[object RegExp]":case"[object String]":if(""+e==""+n)continue;return!1;case"[object Number]":t.push({a:+e,b:+n});continue;case"[object Date]":case"[object Boolean]":if(+e==+n)continue;return!1;case"[object Symbol]":if(Ca.valueOf.call(e)===Ca.valueOf.call(n))continue;return!1;case"[object ArrayBuffer]":case Oa:t.push({a:Ra(e),b:Ra(n)});continue}var u=o==="[object Array]";if(!u&&Hi(e)){var h=Yt(e);if(h!==Yt(n))return!1;if(e.buffer===n.buffer&&e.byteOffset===n.byteOffset)continue;u=!0}if(!u){if(typeof e!="object"||typeof n!="object")return!1;var b=e.constructor,m=n.constructor;if(b!==m&&!(qe(b)&&b instanceof b&&qe(m)&&m instanceof m)&&"constructor"in e&&"constructor"in n)return!1}for(var g=r.length;g--;)if(r[g]===e){if(c[g]===n)break;return!1}if(!(g>=0))if(r.push(e),c.push(n),t.push(!0),u){if(g=e.length,g!==n.length)return!1;for(;g--;)t.push({a:e[g],b:n[g]})}else{var f=Oe(e),y;if(g=f.length,Oe(n).length!==g)return!1;for(;g--;){if(y=f[g],!Dn(n,y))return!1;t.push({a:e[y],b:n[y]})}}}return!0}function jn(e){if(!bn(e))return[];var n=[];for(var t in e)n.push(t);return Yc&&uu(e,n),n}function Zi(e){var n=Me(e);return function(t){if(t==null)return!1;var r=jn(t);if(Me(r))return!1;for(var c=0;c<n;c++)if(!qe(t[e[c]]))return!1;return e!==hu||!qe(t[$i])}}var $i="forEach",lu="has",Yi=["clear","delete"],fu=["get",lu,"set"],Qs=Yi.concat($i,fu),hu=Yi.concat(fu),Js=["add"].concat(Yi,$i,lu);const pu=ji?Zi(Qs):Pe("Map"),gu=ji?Zi(hu):Pe("WeakMap"),mu=ji?Zi(Js):Pe("Set"),bu=Pe("WeakSet");function kn(e){for(var n=Oe(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=e[n[c]];return r}function yu(e){for(var n=Oe(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=[n[c],e[n[c]]];return r}function Ki(e){for(var n={},t=Oe(e),r=0,c=t.length;r<c;r++)n[e[t[r]]]=t[r];return n}function ot(e){var n=[];for(var t in e)qe(e[t])&&n.push(t);return n.sort()}function Qi(e,n){return function(t){var r=arguments.length;if(n&&(t=Object(t)),r<2||t==null)return t;for(var c=1;c<r;c++)for(var i=arguments[c],a=e(i),o=a.length,u=0;u<o;u++){var h=a[u];(!n||t[h]===void 0)&&(t[h]=i[h])}return t}}const Ji=Qi(jn),Pn=Qi(Oe),ea=Qi(jn,!0);function ed(){return function(){}}function Du(e){if(!bn(e))return{};if(Ba)return Ba(e);var n=ed();n.prototype=e;var t=new n;return n.prototype=null,t}function vu(e,n){var t=Du(e);return n&&Pn(t,n),t}function xu(e){return bn(e)?yn(e)?e.slice():Ji({},e):e}function _u(e,n){return n(e),e}function na(e){return yn(e)?e:[e]}Ae.toPath=na;function lt(e){return Ae.toPath(e)}function ta(e,n){for(var t=n.length,r=0;r<t;r++){if(e==null)return;e=e[n[r]]}return t?e:void 0}function ra(e,n,t){var r=ta(e,lt(n));return Li(r)?t:r}function Uu(e,n){n=lt(n);for(var t=n.length,r=0;r<t;r++){var c=n[r];if(!Dn(e,c))return!1;e=e[c]}return!!t}function ir(e){return e}function Bn(e){return e=Pn({},e),function(n){return Gi(n,e)}}function ar(e){return e=lt(e),function(n){return ta(n,e)}}function ft(e,n,t){if(n===void 0)return e;switch(t??3){case 1:return function(r){return e.call(n,r)};case 3:return function(r,c,i){return e.call(n,r,c,i)};case 4:return function(r,c,i,a){return e.call(n,r,c,i,a)}}return function(){return e.apply(n,arguments)}}function Tu(e,n,t){return e==null?ir:qe(e)?ft(e,n,t):bn(e)&&!yn(e)?Bn(e):ar(e)}function or(e,n){return Tu(e,n,1/0)}Ae.iteratee=or;function je(e,n,t){return Ae.iteratee!==or?Ae.iteratee(e,n):Tu(e,n,t)}function wu(e,n,t){n=je(n,t);for(var r=Oe(e),c=r.length,i={},a=0;a<c;a++){var o=r[a];i[o]=n(e[o],o,e)}return i}function ia(){}function Eu(e){return e==null?ia:function(n){return ra(e,n)}}function Au(e,n,t){var r=Array(Math.max(0,e));n=ft(n,t,1);for(var c=0;c<e;c++)r[c]=n(c);return r}function Kt(e,n){return n==null&&(n=e,e=0),e+Math.floor(Math.random()*(n-e+1))}const zn=Date.now||function(){return new Date().getTime()};function Fu(e){var n=function(i){return e[i]},t="(?:"+Oe(e).join("|")+")",r=RegExp(t),c=RegExp(t,"g");return function(i){return i=i==null?"":""+i,r.test(i)?i.replace(c,n):i}}const Cu={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Su=Fu(Cu),nd=Ki(Cu),Bu=Fu(nd),ku=Ae.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var Fr=/(.)^/,td={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},rd=/\\|'|\r|\n|\u2028|\u2029/g;function id(e){return"\\"+td[e]}var ad=/^\s*(\w|\$)+\s*$/;function Wu(e,n,t){!n&&t&&(n=t),n=ea({},n,Ae.templateSettings);var r=RegExp([(n.escape||Fr).source,(n.interpolate||Fr).source,(n.evaluate||Fr).source].join("|")+"|$","g"),c=0,i="__p+='";e.replace(r,function(h,b,m,g,f){return i+=e.slice(c,f).replace(rd,id),c=f+h.length,b?i+=`'+
1
+ import{g as Os,d as pn,e as Is}from"./index-B4DsP2aY.js";function Ns(e,n){for(var t=0;t<n.length;t++){const r=n[t];if(typeof r!="string"&&!Array.isArray(r)){for(const c in r)if(c!=="default"&&!(c in e)){const i=Object.getOwnPropertyDescriptor(r,c);i&&Object.defineProperty(e,c,i.get?i:{enumerable:!0,get:()=>r[c]})}}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}var Ze={},Ii="1.13.8",Fa=typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global||Function("return this")()||{},nr=Array.prototype,Ni=Object.prototype,Ca=typeof Symbol<"u"?Symbol.prototype:null,Ls=nr.push,dt=nr.slice,it=Ni.toString,Ms=Ni.hasOwnProperty,$c=typeof ArrayBuffer<"u",qs=typeof DataView<"u",Ps=Array.isArray,Sa=Object.keys,Ba=Object.create,ka=$c&&ArrayBuffer.isView,zs=isNaN,js=isFinite,Yc=!{toString:null}.propertyIsEnumerable("toString"),Wa=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"],Xs=Math.pow(2,53)-1;function ze(e,n){return n=n==null?e.length-1:+n,function(){for(var t=Math.max(arguments.length-n,0),r=Array(t),c=0;c<t;c++)r[c]=arguments[c+n];switch(n){case 0:return e.call(this,r);case 1:return e.call(this,arguments[0],r);case 2:return e.call(this,arguments[0],arguments[1],r)}var i=Array(n+1);for(c=0;c<n;c++)i[c]=arguments[c];return i[n]=r,e.apply(this,i)}}function bn(e){var n=typeof e;return n==="function"||n==="object"&&!!e}function Kc(e){return e===null}function Li(e){return e===void 0}function Mi(e){return e===!0||e===!1||it.call(e)==="[object Boolean]"}function Qc(e){return!!(e&&e.nodeType===1)}function Pe(e){var n="[object "+e+"]";return function(t){return it.call(t)===n}}const tr=Pe("String"),qi=Pe("Number"),Jc=Pe("Date"),eu=Pe("RegExp"),nu=Pe("Error"),Pi=Pe("Symbol"),zi=Pe("ArrayBuffer");var tu=Pe("Function"),Vs=Fa.document&&Fa.document.childNodes;typeof/./!="function"&&typeof Int8Array!="object"&&typeof Vs!="function"&&(tu=function(e){return typeof e=="function"||!1});const qe=tu,ru=Pe("Object");var iu=qs&&(!/\[native code\]/.test(String(DataView))||ru(new DataView(new ArrayBuffer(8)))),ji=typeof Map<"u"&&ru(new Map),Hs=Pe("DataView");function Gs(e){return e!=null&&qe(e.getInt8)&&zi(e.buffer)}const at=iu?Gs:Hs,yn=Ps||Pe("Array");function Dn(e,n){return e!=null&&Ms.call(e,n)}var Ri=Pe("Arguments");(function(){Ri(arguments)||(Ri=function(e){return Dn(e,"callee")})})();const rr=Ri;function au(e){return!Pi(e)&&js(e)&&!isNaN(parseFloat(e))}function Xi(e){return qi(e)&&zs(e)}function Vi(e){return function(){return e}}function ou(e){return function(n){var t=e(n);return typeof t=="number"&&t>=0&&t<=Xs}}function cu(e){return function(n){return n==null?void 0:n[e]}}const Yt=cu("byteLength"),Zs=ou(Yt);var $s=/\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\]/;function Ys(e){return ka?ka(e)&&!at(e):Zs(e)&&$s.test(it.call(e))}const Hi=$c?Ys:Vi(!1),Me=cu("length");function Ks(e){for(var n={},t=e.length,r=0;r<t;++r)n[e[r]]=!0;return{contains:function(c){return n[c]===!0},push:function(c){return n[c]=!0,e.push(c)}}}function uu(e,n){n=Ks(n);var t=Wa.length,r=e.constructor,c=qe(r)&&r.prototype||Ni,i="constructor";for(Dn(e,i)&&!n.contains(i)&&n.push(i);t--;)i=Wa[t],i in e&&e[i]!==c[i]&&!n.contains(i)&&n.push(i)}function Oe(e){if(!bn(e))return[];if(Sa)return Sa(e);var n=[];for(var t in e)Dn(e,t)&&n.push(t);return Yc&&uu(e,n),n}function su(e){if(e==null)return!0;var n=Me(e);return typeof n=="number"&&(yn(e)||tr(e)||rr(e))?n===0:Me(Oe(e))===0}function Gi(e,n){var t=Oe(n),r=t.length;if(e==null)return!r;for(var c=Object(e),i=0;i<r;i++){var a=t[i];if(n[a]!==c[a]||!(a in c))return!1}return!0}function Ae(e){if(e instanceof Ae)return e;if(!(this instanceof Ae))return new Ae(e);this._wrapped=e}Ae.VERSION=Ii;Ae.prototype.value=function(){return this._wrapped};Ae.prototype.valueOf=Ae.prototype.toJSON=Ae.prototype.value;Ae.prototype.toString=function(){return String(this._wrapped)};function Ra(e){return new Uint8Array(e.buffer||e,e.byteOffset||0,Yt(e))}var Oa="[object DataView]";function du(e,n){for(var t=[{a:e,b:n}],r=[],c=[];t.length;){var i=t.pop();if(i===!0){r.pop(),c.pop();continue}if(e=i.a,n=i.b,e===n){if(e!==0||1/e===1/n)continue;return!1}if(e==null||n==null)return!1;if(e!==e){if(n!==n)continue;return!1}var a=typeof e;if(a!=="function"&&a!=="object"&&typeof n!="object")return!1;e instanceof Ae&&(e=e._wrapped),n instanceof Ae&&(n=n._wrapped);var o=it.call(e);if(o!==it.call(n))return!1;if(iu&&o=="[object Object]"&&at(e)){if(!at(n))return!1;o=Oa}switch(o){case"[object RegExp]":case"[object String]":if(""+e==""+n)continue;return!1;case"[object Number]":t.push({a:+e,b:+n});continue;case"[object Date]":case"[object Boolean]":if(+e==+n)continue;return!1;case"[object Symbol]":if(Ca.valueOf.call(e)===Ca.valueOf.call(n))continue;return!1;case"[object ArrayBuffer]":case Oa:t.push({a:Ra(e),b:Ra(n)});continue}var u=o==="[object Array]";if(!u&&Hi(e)){var h=Yt(e);if(h!==Yt(n))return!1;if(e.buffer===n.buffer&&e.byteOffset===n.byteOffset)continue;u=!0}if(!u){if(typeof e!="object"||typeof n!="object")return!1;var b=e.constructor,m=n.constructor;if(b!==m&&!(qe(b)&&b instanceof b&&qe(m)&&m instanceof m)&&"constructor"in e&&"constructor"in n)return!1}for(var g=r.length;g--;)if(r[g]===e){if(c[g]===n)break;return!1}if(!(g>=0))if(r.push(e),c.push(n),t.push(!0),u){if(g=e.length,g!==n.length)return!1;for(;g--;)t.push({a:e[g],b:n[g]})}else{var f=Oe(e),y;if(g=f.length,Oe(n).length!==g)return!1;for(;g--;){if(y=f[g],!Dn(n,y))return!1;t.push({a:e[y],b:n[y]})}}}return!0}function jn(e){if(!bn(e))return[];var n=[];for(var t in e)n.push(t);return Yc&&uu(e,n),n}function Zi(e){var n=Me(e);return function(t){if(t==null)return!1;var r=jn(t);if(Me(r))return!1;for(var c=0;c<n;c++)if(!qe(t[e[c]]))return!1;return e!==hu||!qe(t[$i])}}var $i="forEach",lu="has",Yi=["clear","delete"],fu=["get",lu,"set"],Qs=Yi.concat($i,fu),hu=Yi.concat(fu),Js=["add"].concat(Yi,$i,lu);const pu=ji?Zi(Qs):Pe("Map"),gu=ji?Zi(hu):Pe("WeakMap"),mu=ji?Zi(Js):Pe("Set"),bu=Pe("WeakSet");function kn(e){for(var n=Oe(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=e[n[c]];return r}function yu(e){for(var n=Oe(e),t=n.length,r=Array(t),c=0;c<t;c++)r[c]=[n[c],e[n[c]]];return r}function Ki(e){for(var n={},t=Oe(e),r=0,c=t.length;r<c;r++)n[e[t[r]]]=t[r];return n}function ot(e){var n=[];for(var t in e)qe(e[t])&&n.push(t);return n.sort()}function Qi(e,n){return function(t){var r=arguments.length;if(n&&(t=Object(t)),r<2||t==null)return t;for(var c=1;c<r;c++)for(var i=arguments[c],a=e(i),o=a.length,u=0;u<o;u++){var h=a[u];(!n||t[h]===void 0)&&(t[h]=i[h])}return t}}const Ji=Qi(jn),Pn=Qi(Oe),ea=Qi(jn,!0);function ed(){return function(){}}function Du(e){if(!bn(e))return{};if(Ba)return Ba(e);var n=ed();n.prototype=e;var t=new n;return n.prototype=null,t}function vu(e,n){var t=Du(e);return n&&Pn(t,n),t}function xu(e){return bn(e)?yn(e)?e.slice():Ji({},e):e}function _u(e,n){return n(e),e}function na(e){return yn(e)?e:[e]}Ae.toPath=na;function lt(e){return Ae.toPath(e)}function ta(e,n){for(var t=n.length,r=0;r<t;r++){if(e==null)return;e=e[n[r]]}return t?e:void 0}function ra(e,n,t){var r=ta(e,lt(n));return Li(r)?t:r}function Uu(e,n){n=lt(n);for(var t=n.length,r=0;r<t;r++){var c=n[r];if(!Dn(e,c))return!1;e=e[c]}return!!t}function ir(e){return e}function Bn(e){return e=Pn({},e),function(n){return Gi(n,e)}}function ar(e){return e=lt(e),function(n){return ta(n,e)}}function ft(e,n,t){if(n===void 0)return e;switch(t??3){case 1:return function(r){return e.call(n,r)};case 3:return function(r,c,i){return e.call(n,r,c,i)};case 4:return function(r,c,i,a){return e.call(n,r,c,i,a)}}return function(){return e.apply(n,arguments)}}function Tu(e,n,t){return e==null?ir:qe(e)?ft(e,n,t):bn(e)&&!yn(e)?Bn(e):ar(e)}function or(e,n){return Tu(e,n,1/0)}Ae.iteratee=or;function je(e,n,t){return Ae.iteratee!==or?Ae.iteratee(e,n):Tu(e,n,t)}function wu(e,n,t){n=je(n,t);for(var r=Oe(e),c=r.length,i={},a=0;a<c;a++){var o=r[a];i[o]=n(e[o],o,e)}return i}function ia(){}function Eu(e){return e==null?ia:function(n){return ra(e,n)}}function Au(e,n,t){var r=Array(Math.max(0,e));n=ft(n,t,1);for(var c=0;c<e;c++)r[c]=n(c);return r}function Kt(e,n){return n==null&&(n=e,e=0),e+Math.floor(Math.random()*(n-e+1))}const zn=Date.now||function(){return new Date().getTime()};function Fu(e){var n=function(i){return e[i]},t="(?:"+Oe(e).join("|")+")",r=RegExp(t),c=RegExp(t,"g");return function(i){return i=i==null?"":""+i,r.test(i)?i.replace(c,n):i}}const Cu={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},Su=Fu(Cu),nd=Ki(Cu),Bu=Fu(nd),ku=Ae.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var Fr=/(.)^/,td={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},rd=/\\|'|\r|\n|\u2028|\u2029/g;function id(e){return"\\"+td[e]}var ad=/^\s*(\w|\$)+\s*$/;function Wu(e,n,t){!n&&t&&(n=t),n=ea({},n,Ae.templateSettings);var r=RegExp([(n.escape||Fr).source,(n.interpolate||Fr).source,(n.evaluate||Fr).source].join("|")+"|$","g"),c=0,i="__p+='";e.replace(r,function(h,b,m,g,f){return i+=e.slice(c,f).replace(rd,id),c=f+h.length,b?i+=`'+
2
2
  ((__t=(`+b+`))==null?'':_.escape(__t))+
3
3
  '`:m?i+=`'+
4
4
  ((__t=(`+m+`))==null?'':__t)+
@@ -0,0 +1,10 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Figtree:wght@400;500;600&family=Space+Mono:wght@400;700&display=swap";@font-face{font-family:Roobert;src:url(/fonts/Roobert-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Roobert;src:url(/fonts/Roobert-Medium.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Roobert;src:url(/fonts/Roobert-SemiBold.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
2
+ Theme: GitHub
3
+ Description: Light theme as seen on github.com
4
+ Author: github.com
5
+ Maintainer: @Hirse
6
+ Updated: 2021-05-15
7
+
8
+ Outdated base version: https://github.com/primer/github-syntax-light
9
+ Current colors taken from GitHub's CSS
10
+ */.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--dx-font-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--dx-surface-canvas: #faf9f7;--dx-surface-card: #ffffff;--dx-text-primary: #000000;--dx-text-secondary: #9f9b93;--dx-text-tertiary: #55534e;--dx-text-inverse: #ffffff;--dx-border-primary: #dad4c8;--dx-border-secondary: #eee9df;--dx-border-cool: #e6e8ec;--dx-border-dark: #525a69;--dx-phase-onboarding: #fbbd41;--dx-phase-discover: #3bd3fd;--dx-phase-ideate: #c1b0ff;--dx-phase-design: #84e7a5;--dx-phase-plan: #01418d;--dx-phase-deliver: #fc7981;--dx-phase-measure: #43089f;--dx-matcha-300: #84e7a5;--dx-matcha-600: #078a52;--dx-matcha-800: #02492a;--dx-slushie-500: #3bd3fd;--dx-slushie-800: #0089ad;--dx-lemon-400: #f8cc65;--dx-lemon-500: #fbbd41;--dx-lemon-700: #d08a11;--dx-lemon-800: #9d6a09;--dx-ube-300: #c1b0ff;--dx-ube-800: #43089f;--dx-ube-900: #32037d;--dx-pomegranate-400: #fc7981;--dx-blueberry-800: #01418d;--dx-status-success: #078a52;--dx-status-warning: #d08a11;--dx-status-error: #fc7981;--dx-status-info: #3bd3fd;--dx-shadow-clay: 0px 1px 1px rgba(0, 0, 0, .1), 0px -1px 1px rgba(0, 0, 0, .04) inset, 0px -.5px 1px rgba(0, 0, 0, .05);--dx-shadow-hover: -7px 7px 0px rgb(0, 0, 0);--dx-shadow-hover-lemon: -7px 7px 0px #fbbd41;--dx-shadow-hover-subtle: -3px 3px 0px rgb(0, 0, 0);--dx-radius-sharp: 4px;--dx-radius-standard: 8px;--dx-radius-card: 12px;--dx-radius-feature: 24px;--dx-radius-section: 40px;--dx-radius-pill: 1584px;--dx-font-primary: "Roobert", "Figtree", Arial, sans-serif;--dx-font-mono: "Space Mono", monospace;--dx-font-features-display: "ss01", "ss03", "ss10", "ss11", "ss12";--dx-font-features-body: "ss03", "ss10", "ss11", "ss12";--dx-focus-ring: 2px solid rgb(20, 110, 245)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--dx-font-primary);font-feature-settings:var(--dx-font-features-body);background-color:var(--dx-surface-canvas);color:var(--dx-text-primary);line-height:1.5;letter-spacing:-.16px;min-height:100dvh}::-moz-selection{background-color:var(--dx-ube-300);color:var(--dx-text-primary)}::selection{background-color:var(--dx-ube-300);color:var(--dx-text-primary)}:focus-visible{outline:var(--dx-focus-ring);outline-offset:2px}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.bottom-0{bottom:0}.bottom-16{bottom:4rem}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.right-0{right:0}.right-1\.5{right:.375rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-full{top:100%}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.z-\[60\]{z-index:60}.mx-3{margin-left:.75rem;margin-right:.75rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.-mt-0\.5{margin-top:-.125rem}.mb-0\.5{margin-bottom:.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-8{margin-top:2rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.h-0\.5{height:.125rem}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-\[160px\]{max-height:160px}.max-h-\[256px\]{max-height:256px}.max-h-\[600px\]{max-height:600px}.min-h-\[24px\]{min-height:24px}.min-h-\[56vh\]{min-height:56vh}.w-0\.5{width:.125rem}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/2{width:50%}.w-10{width:2.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[260px\]{width:260px}.w-\[380px\]{width:380px}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[140px\]{min-width:140px}.min-w-\[18px\]{min-width:18px}.min-w-\[240px\]{min-width:240px}.min-w-full{min-width:100%}.max-w-5xl{max-width:64rem}.max-w-\[220px\]{max-width:220px}.max-w-\[640px\]{max-width:640px}.max-w-\[720px\]{max-width:720px}.max-w-\[75\%\]{max-width:75%}.max-w-\[80\%\]{max-width:80%}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize-none{resize:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-border>:not([hidden])~:not([hidden]){border-color:var(--dx-border-primary)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overscroll-contain{overscroll-behavior:contain}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-card{border-radius:var(--dx-radius-card)}.rounded-feature{border-radius:var(--dx-radius-feature)}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-pill{border-radius:var(--dx-radius-pill)}.rounded-sharp{border-radius:var(--dx-radius-sharp)}.rounded-standard{border-radius:var(--dx-radius-standard)}.rounded-b-card{border-bottom-right-radius:var(--dx-radius-card);border-bottom-left-radius:var(--dx-radius-card)}.rounded-t-card{border-top-left-radius:var(--dx-radius-card);border-top-right-radius:var(--dx-radius-card)}.rounded-br-sharp{border-bottom-right-radius:var(--dx-radius-sharp)}.rounded-tr-card{border-top-right-radius:var(--dx-radius-card)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-b-0{border-bottom-width:0px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-amber-300{--tw-border-opacity: 1;border-color:rgb(252 211 77 / var(--tw-border-opacity, 1))}.border-border{border-color:var(--dx-border-primary)}.border-border-secondary{border-color:var(--dx-border-secondary)}.border-emerald-300{--tw-border-opacity: 1;border-color:rgb(110 231 183 / var(--tw-border-opacity, 1))}.border-lemon-500{border-color:var(--dx-lemon-500)}.border-matcha-300{border-color:var(--dx-matcha-300)}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-text-primary{border-color:var(--dx-text-primary)}.border-text-secondary{border-color:var(--dx-text-secondary)}.border-text-tertiary{border-color:var(--dx-text-tertiary)}.border-transparent{border-color:transparent}.border-ube-300{border-color:var(--dx-ube-300)}.bg-\[rgba\(0\,0\,0\,0\.35\)\]{background-color:#00000059}.bg-amber-500{--tw-bg-opacity: 1;background-color:rgb(245 158 11 / var(--tw-bg-opacity, 1))}.bg-black\/20{background-color:#0003}.bg-black\/30{background-color:#0000004d}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blueberry-800{background-color:var(--dx-blueberry-800)}.bg-border{background-color:var(--dx-border-primary)}.bg-border-secondary{background-color:var(--dx-border-secondary)}.bg-canvas{background-color:var(--dx-surface-canvas)}.bg-card{background-color:var(--dx-surface-card)}.bg-cyan-50{--tw-bg-opacity: 1;background-color:rgb(236 254 255 / var(--tw-bg-opacity, 1))}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-emerald-500{--tw-bg-opacity: 1;background-color:rgb(16 185 129 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-lemon-400{background-color:var(--dx-lemon-400)}.bg-lemon-500{background-color:var(--dx-lemon-500)}.bg-lemon-800{background-color:var(--dx-lemon-800)}.bg-matcha-300{background-color:var(--dx-matcha-300)}.bg-pomegranate-400{background-color:var(--dx-pomegranate-400)}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.bg-slushie-500{background-color:var(--dx-slushie-500)}.bg-text-primary{background-color:var(--dx-text-primary)}.bg-transparent{background-color:transparent}.bg-ube-300{background-color:var(--dx-ube-300)}.bg-ube-800{background-color:var(--dx-ube-800)}.bg-white\/50{background-color:#ffffff80}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-1{padding-bottom:.25rem}.pb-3{padding-bottom:.75rem}.pb-32{padding-bottom:8rem}.pb-36{padding-bottom:9rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-5{padding-left:1.25rem}.pr-8{padding-right:2rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-2\.5{padding-top:.625rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.align-middle{vertical-align:middle}.font-mono{font-family:var(--dx-font-mono)}.font-primary{font-family:var(--dx-font-primary)}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.82em\]{font-size:.82em}.text-\[0\.8em\]{font-size:.8em}.text-\[0\.9rem\]{font-size:.9rem}.text-base{font-size:1rem;line-height:1.5rem}.text-body{font-size:1.125rem;line-height:1.6;letter-spacing:-.36px;font-weight:400}.text-body-large{font-size:1.25rem;line-height:1.4;letter-spacing:normal;font-weight:400}.text-body-medium{font-size:1rem;line-height:1.4;letter-spacing:-.16px;font-weight:500}.text-body-standard{font-size:1rem;line-height:1.5;letter-spacing:normal;font-weight:400}.text-button{font-size:1rem;line-height:1.5;letter-spacing:-.16px;font-weight:500}.text-button-large{font-size:1.5rem;line-height:1.5;letter-spacing:normal;font-weight:400}.text-button-small{font-size:.8rem;line-height:1.5;letter-spacing:-.128px;font-weight:500}.text-caption{font-size:.875rem;line-height:1.5;letter-spacing:-.14px;font-weight:400}.text-card-heading{font-size:2rem;line-height:1.1;letter-spacing:-.64px;font-weight:600}.text-feature-title{font-size:1.25rem;line-height:1.4;letter-spacing:-.4px;font-weight:600}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-section-heading{font-size:2.75rem;line-height:1.1;letter-spacing:-1.32px;font-weight:600}.text-sm{font-size:.875rem;line-height:1.25rem}.text-small{font-size:.75rem;line-height:1.5;letter-spacing:normal;font-weight:400}.text-sub-heading{font-size:1.25rem;line-height:1.5;letter-spacing:-.16px;font-weight:500}.text-uppercase-label{font-size:.75rem;line-height:1.2;letter-spacing:1.08px;font-weight:600}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-canvas{color:var(--dx-surface-canvas)}.text-cyan-700{--tw-text-opacity: 1;color:rgb(14 116 144 / var(--tw-text-opacity, 1))}.text-emerald-700{--tw-text-opacity: 1;color:rgb(4 120 87 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-lemon-400{color:var(--dx-lemon-400)}.text-lemon-500{color:var(--dx-lemon-500)}.text-lemon-700{color:var(--dx-lemon-700)}.text-lemon-800{color:var(--dx-lemon-800)}.text-matcha-600{color:var(--dx-matcha-600)}.text-matcha-800{color:var(--dx-matcha-800)}.text-pomegranate-400{color:var(--dx-pomegranate-400)}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-rose-700{--tw-text-opacity: 1;color:rgb(190 18 60 / var(--tw-text-opacity, 1))}.text-status-success{color:var(--dx-status-success)}.text-text-inverse{color:var(--dx-text-inverse)}.text-text-primary{color:var(--dx-text-primary)}.text-text-secondary{color:var(--dx-text-secondary)}.text-text-tertiary{color:var(--dx-text-tertiary)}.text-ube-800{color:var(--dx-ube-800)}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-clay{--tw-shadow: var(--dx-shadow-clay);--tw-shadow-colored: var(--dx-shadow-clay);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-hover-subtle{--tw-shadow: var(--dx-shadow-hover-subtle);--tw-shadow-colored: var(--dx-shadow-hover-subtle);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.font-features-display{font-feature-settings:"ss01","ss03","ss10","ss11","ss12"}.\[a-z\:_-\]{a-z:-}.hljs{background:var(--dx-surface-canvas);padding:0}@keyframes artifact-spotlight{0%{box-shadow:0 0 0 2px var(--spotlight-color)}60%{box-shadow:0 0 0 2px var(--spotlight-color)}to{box-shadow:none}}.artifact-spotlight{animation:artifact-spotlight 1.6s ease-out forwards}.placeholder\:text-text-secondary::-moz-placeholder{color:var(--dx-text-secondary)}.placeholder\:text-text-secondary::placeholder{color:var(--dx-text-secondary)}.first\:pt-3:first-child{padding-top:.75rem}.last\:border-r-0:last-child{border-right-width:0px}.focus-within\:border-text-primary:focus-within{border-color:var(--dx-text-primary)}.hover\:-translate-y-0\.5:hover{--tw-translate-y: -.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-translate-y-1:hover{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-rotate-6:hover{--tw-rotate: -6deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-border:hover{border-color:var(--dx-border-primary)}.hover\:border-text-primary:hover{border-color:var(--dx-text-primary)}.hover\:border-text-tertiary:hover{border-color:var(--dx-text-tertiary)}.hover\:bg-\[rgba\(0\,0\,0\,0\.04\)\]:hover{background-color:#0000000a}.hover\:bg-border-secondary:hover{background-color:var(--dx-border-secondary)}.hover\:bg-lemon-400:hover{background-color:var(--dx-lemon-400)}.hover\:bg-text-secondary:hover{background-color:var(--dx-text-secondary)}.hover\:bg-white\/80:hover{background-color:#fffc}.hover\:text-pomegranate-400:hover{color:var(--dx-pomegranate-400)}.hover\:text-text-primary:hover{color:var(--dx-text-primary)}.hover\:text-text-secondary:hover{color:var(--dx-text-secondary)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-clay:hover{--tw-shadow: var(--dx-shadow-clay);--tw-shadow-colored: var(--dx-shadow-clay);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-hover-hard:hover{--tw-shadow: var(--dx-shadow-hover);--tw-shadow-colored: var(--dx-shadow-hover);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-hover-subtle:hover{--tw-shadow: var(--dx-shadow-hover-subtle);--tw-shadow-colored: var(--dx-shadow-hover-subtle);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-text-primary:focus{border-color:var(--dx-text-primary)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-lemon-500:focus-visible{--tw-ring-color: var(--dx-lemon-500)}.focus-visible\:ring-text-inverse:focus-visible{--tw-ring-color: var(--dx-text-inverse)}.focus-visible\:ring-text-primary:focus-visible{--tw-ring-color: var(--dx-text-primary)}.focus-visible\:ring-ube-300:focus-visible{--tw-ring-color: var(--dx-ube-300)}.enabled\:hover\:-translate-y-1:hover:enabled{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:enabled\:-translate-y-1:enabled:hover{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enabled\:hover\:-rotate-6:hover:enabled{--tw-rotate: -6deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:enabled\:-rotate-6:enabled:hover{--tw-rotate: -6deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.enabled\:hover\:shadow-hover-hard:hover:enabled{--tw-shadow: var(--dx-shadow-hover);--tw-shadow-colored: var(--dx-shadow-hover);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:enabled\:shadow-hover-hard:enabled:hover{--tw-shadow: var(--dx-shadow-hover);--tw-shadow-colored: var(--dx-shadow-hover);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:enabled\:shadow-hover-lemon:enabled:hover{--tw-shadow: var(--dx-shadow-hover-lemon);--tw-shadow-colored: var(--dx-shadow-hover-lemon);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:bg-text-primary{background-color:var(--dx-text-primary)}.group:hover .group-hover\:text-canvas{color:var(--dx-surface-canvas)}.group:hover .group-hover\:text-text-primary{color:var(--dx-text-primary)}.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}
package/dist/index.html CHANGED
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>DesignX</title>
7
- <script type="module" crossorigin src="/assets/index-CBUxOHiU.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-vZi_8zoX.css">
7
+ <script type="module" crossorigin src="/assets/index-B4DsP2aY.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-CQNunw04.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studioindia/designx",
3
- "version": "1.0.1",
3
+ "version": "1.0.4",
4
4
  "description": "AI-powered product design pipeline — from brief to working app",
5
5
  "type": "module",
6
6
  "engines": {
package/server.cjs CHANGED
@@ -46216,7 +46216,7 @@ var __dirname = import_node_path.default.dirname(__filename);
46216
46216
  var app = (0, import_express.default)();
46217
46217
  var IS_PROD = process.env.NODE_ENV === "production";
46218
46218
  var PORT = parseInt(process.env.PORT ?? "3001", 10);
46219
- var DESIGNX_DATA_DIR = process.env.DESIGNX_DATA_DIR ?? import_node_path.default.join((0, import_node_os.homedir)(), ".designx");
46219
+ var DESIGNX_DATA_DIR = process.env.DESIGNX_DATA_DIR ?? import_node_path.default.join((0, import_node_os.homedir)(), "DesignX");
46220
46220
  var DIST_DIR = import_node_path.default.join(__dirname, IS_PROD ? "dist" : "../dist");
46221
46221
  var COPILOT_API_URL = "https://api.githubcopilot.com";
46222
46222
  var AUTO_PINNED_MODEL = "claude-sonnet-4.6";
@@ -46257,7 +46257,7 @@ var agentRuns = loadAgentRuns();
46257
46257
  var diagnosticsEvents = [];
46258
46258
  var diagnosticsEventSequence = 0;
46259
46259
  var REQUEST_BODY_LIMIT_BYTES = parseByteLimitToBytes(REQUEST_BODY_LIMIT);
46260
- app.use((0, import_cors.default)({ origin: "http://localhost:5173" }));
46260
+ app.use((0, import_cors.default)({ origin: [`http://localhost:${PORT}`, "http://localhost:5173"] }));
46261
46261
  app.use((req, res, next) => {
46262
46262
  const diagnosticReq = req;
46263
46263
  const requestId = resolveRequestId(req);
@@ -47276,7 +47276,18 @@ app.use(
47276
47276
  (0, import_http_proxy_middleware.createProxyMiddleware)({
47277
47277
  target: "https://github.com",
47278
47278
  changeOrigin: true,
47279
- pathRewrite: { "^/api/github-auth": "" }
47279
+ pathRewrite: { "^/api/github-auth": "" },
47280
+ on: {
47281
+ proxyReq: (proxyReq, req) => {
47282
+ const body = req.body;
47283
+ if (body && typeof body === "object" && Object.keys(body).length > 0) {
47284
+ const bodyStr = new URLSearchParams(body).toString();
47285
+ proxyReq.setHeader("Content-Type", "application/x-www-form-urlencoded");
47286
+ proxyReq.setHeader("Content-Length", Buffer.byteLength(bodyStr));
47287
+ proxyReq.write(bodyStr);
47288
+ }
47289
+ }
47290
+ }
47280
47291
  })
47281
47292
  );
47282
47293
  app.use(
@@ -47456,7 +47467,7 @@ function writeJson(filePath, data) {
47456
47467
  }
47457
47468
  app.get("/api/config", (_req, res) => {
47458
47469
  res.json({
47459
- version: "1.0.0",
47470
+ version: "1.0.2",
47460
47471
  port: PORT,
47461
47472
  dataDir: DESIGNX_DATA_DIR,
47462
47473
  isProd: IS_PROD
@@ -47716,6 +47727,276 @@ app.get("/api/data/projects/:slug/export", (req, res) => {
47716
47727
  res.status(500).json({ error: String(err) });
47717
47728
  }
47718
47729
  });
47730
+ var AUTH_FILE = import_node_path.default.join(DESIGNX_DATA_DIR, "auth.json");
47731
+ app.get("/api/auth", (_req, res) => {
47732
+ try {
47733
+ if (!import_node_fs.default.existsSync(AUTH_FILE)) {
47734
+ res.json({});
47735
+ return;
47736
+ }
47737
+ res.json(readJson(AUTH_FILE, {}));
47738
+ } catch {
47739
+ res.json({});
47740
+ }
47741
+ });
47742
+ app.put("/api/auth", (req, res) => {
47743
+ try {
47744
+ writeJson(AUTH_FILE, req.body);
47745
+ try {
47746
+ import_node_fs.default.chmodSync(AUTH_FILE, 384);
47747
+ } catch {
47748
+ }
47749
+ res.json({ ok: true });
47750
+ } catch (err) {
47751
+ res.status(500).json({ error: String(err) });
47752
+ }
47753
+ });
47754
+ app.delete("/api/auth", (_req, res) => {
47755
+ try {
47756
+ if (import_node_fs.default.existsSync(AUTH_FILE)) import_node_fs.default.unlinkSync(AUTH_FILE);
47757
+ res.json({ ok: true });
47758
+ } catch (err) {
47759
+ res.status(500).json({ error: String(err) });
47760
+ }
47761
+ });
47762
+ var TOKEN_STATS_FILE = import_node_path.default.join(KB_JOBS_DIR, "token-stats.json");
47763
+ app.get("/api/data/token-stats", (_req, res) => {
47764
+ try {
47765
+ if (!import_node_fs.default.existsSync(TOKEN_STATS_FILE)) {
47766
+ res.json(null);
47767
+ return;
47768
+ }
47769
+ res.json(readJson(TOKEN_STATS_FILE, null));
47770
+ } catch {
47771
+ res.json(null);
47772
+ }
47773
+ });
47774
+ app.put("/api/data/token-stats", (req, res) => {
47775
+ try {
47776
+ writeJson(TOKEN_STATS_FILE, req.body);
47777
+ res.json({ ok: true });
47778
+ } catch (err) {
47779
+ res.status(500).json({ error: String(err) });
47780
+ }
47781
+ });
47782
+ app.get("/api/kb/:slug/context", (req, res) => {
47783
+ const { slug } = req.params;
47784
+ if (!safeSlug(slug)) {
47785
+ res.status(400).json({ error: "Invalid slug" });
47786
+ return;
47787
+ }
47788
+ try {
47789
+ const uploadDir = import_node_path.default.join(projectDir(slug), "uploads");
47790
+ if (!import_node_fs.default.existsSync(uploadDir)) {
47791
+ res.json({ entries: [], totalChars: 0 });
47792
+ return;
47793
+ }
47794
+ const TEXT_EXTS = /* @__PURE__ */ new Set([
47795
+ ".txt",
47796
+ ".md",
47797
+ ".mdx",
47798
+ ".json",
47799
+ ".yaml",
47800
+ ".yml",
47801
+ ".csv",
47802
+ ".html",
47803
+ ".htm",
47804
+ ".xml",
47805
+ ".js",
47806
+ ".ts",
47807
+ ".jsx",
47808
+ ".tsx",
47809
+ ".py",
47810
+ ".java",
47811
+ ".cs",
47812
+ ".go",
47813
+ ".rs",
47814
+ ".rb",
47815
+ ".php",
47816
+ ".sh",
47817
+ ".bash",
47818
+ ".zsh",
47819
+ ".env",
47820
+ ".conf",
47821
+ ".ini",
47822
+ ".toml"
47823
+ ]);
47824
+ const PER_FILE_CAP = 8e4;
47825
+ const TOTAL_CAP = 2e5;
47826
+ let totalChars = 0;
47827
+ const entries = [];
47828
+ for (const name of import_node_fs.default.readdirSync(uploadDir)) {
47829
+ if (totalChars >= TOTAL_CAP) break;
47830
+ const filePath = import_node_path.default.join(uploadDir, name);
47831
+ if (import_node_fs.default.statSync(filePath).isDirectory()) continue;
47832
+ const ext = import_node_path.default.extname(name).toLowerCase();
47833
+ if (ext && !TEXT_EXTS.has(ext)) continue;
47834
+ try {
47835
+ const raw = import_node_fs.default.readFileSync(filePath, "utf8");
47836
+ const limit = Math.min(PER_FILE_CAP, TOTAL_CAP - totalChars);
47837
+ const truncated = raw.length > limit;
47838
+ const content = truncated ? raw.slice(0, limit) : raw;
47839
+ entries.push({ name, content, truncated });
47840
+ totalChars += content.length;
47841
+ } catch {
47842
+ }
47843
+ }
47844
+ res.json({ entries, totalChars });
47845
+ } catch (err) {
47846
+ res.status(500).json({ error: String(err) });
47847
+ }
47848
+ });
47849
+ app.post("/api/byok/chat", async (req, res) => {
47850
+ const provider = req.headers["x-byok-provider"];
47851
+ const apiKey = req.headers["x-byok-key"];
47852
+ if (typeof provider !== "string" || typeof apiKey !== "string" || !provider || !apiKey) {
47853
+ res.status(400).json({ error: "x-byok-provider and x-byok-key headers required." });
47854
+ return;
47855
+ }
47856
+ if (provider !== "openai" && provider !== "anthropic") {
47857
+ res.status(400).json({ error: 'x-byok-provider must be "openai" or "anthropic".' });
47858
+ return;
47859
+ }
47860
+ const body = req.body;
47861
+ try {
47862
+ if (provider === "openai") {
47863
+ const upstream2 = await fetch("https://api.openai.com/v1/chat/completions", {
47864
+ method: "POST",
47865
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${apiKey}` },
47866
+ body: JSON.stringify(body),
47867
+ signal: AbortSignal.timeout(12e4)
47868
+ });
47869
+ res.status(upstream2.status);
47870
+ const ct = upstream2.headers.get("content-type");
47871
+ if (ct) res.setHeader("Content-Type", ct);
47872
+ if (!upstream2.body) {
47873
+ res.end();
47874
+ return;
47875
+ }
47876
+ const reader2 = upstream2.body.getReader();
47877
+ while (true) {
47878
+ const { done, value } = await reader2.read();
47879
+ if (done) {
47880
+ res.end();
47881
+ break;
47882
+ }
47883
+ res.write(Buffer.from(value));
47884
+ }
47885
+ return;
47886
+ }
47887
+ const inMessages = body.messages ?? [];
47888
+ const sysMsg = inMessages.find((m) => m.role === "system");
47889
+ const chatMsgs = inMessages.filter((m) => m.role !== "system");
47890
+ const anthropicBody = {
47891
+ model: body.model ?? "claude-3-5-sonnet-20241022",
47892
+ messages: chatMsgs,
47893
+ max_tokens: body.max_tokens ?? 4096,
47894
+ stream: true
47895
+ };
47896
+ if (sysMsg) anthropicBody.system = sysMsg.content;
47897
+ const upstream = await fetch("https://api.anthropic.com/v1/messages", {
47898
+ method: "POST",
47899
+ headers: {
47900
+ "Content-Type": "application/json",
47901
+ "x-api-key": apiKey,
47902
+ "anthropic-version": "2023-06-01"
47903
+ },
47904
+ body: JSON.stringify(anthropicBody)
47905
+ });
47906
+ if (!upstream.ok) {
47907
+ const errText = await upstream.text().catch(() => "");
47908
+ res.status(upstream.status).json({ error: errText.slice(0, 500) });
47909
+ return;
47910
+ }
47911
+ res.setHeader("Content-Type", "text/event-stream");
47912
+ res.setHeader("Cache-Control", "no-cache");
47913
+ res.setHeader("Connection", "keep-alive");
47914
+ if (!upstream.body) {
47915
+ res.end();
47916
+ return;
47917
+ }
47918
+ const reader = upstream.body.getReader();
47919
+ const decoder = new TextDecoder();
47920
+ let sseBuffer = "";
47921
+ const msgId = (0, import_node_crypto.randomUUID)();
47922
+ const modelId = String(body.model ?? "anthropic");
47923
+ while (true) {
47924
+ const { done, value } = await reader.read();
47925
+ if (done) {
47926
+ res.write("data: [DONE]\n\n");
47927
+ res.end();
47928
+ break;
47929
+ }
47930
+ sseBuffer += decoder.decode(value, { stream: true });
47931
+ const lines = sseBuffer.split("\n");
47932
+ sseBuffer = lines.pop() ?? "";
47933
+ for (const line of lines) {
47934
+ if (!line.startsWith("data: ")) continue;
47935
+ const raw = line.slice(6).trim();
47936
+ if (raw === "" || raw === "[DONE]") continue;
47937
+ try {
47938
+ const evt = JSON.parse(raw);
47939
+ if (evt.type === "content_block_delta" && evt.delta?.type === "text_delta" && evt.delta.text) {
47940
+ res.write(`data: ${JSON.stringify({ id: msgId, object: "chat.completion.chunk", model: modelId, choices: [{ index: 0, delta: { content: evt.delta.text }, finish_reason: null }] })}
47941
+
47942
+ `);
47943
+ } else if (evt.type === "message_delta" && evt.usage) {
47944
+ const outTok = evt.usage.output_tokens ?? 0;
47945
+ res.write(`data: ${JSON.stringify({ id: msgId, object: "chat.completion.chunk", model: modelId, choices: [{ index: 0, delta: {}, finish_reason: "stop" }], usage: { prompt_tokens: 0, completion_tokens: outTok, total_tokens: outTok } })}
47946
+
47947
+ `);
47948
+ }
47949
+ } catch {
47950
+ }
47951
+ }
47952
+ }
47953
+ } catch (err) {
47954
+ if (!res.headersSent) {
47955
+ res.status(502).json({ error: err instanceof Error ? err.message : "BYOK request failed." });
47956
+ }
47957
+ }
47958
+ });
47959
+ app.post("/api/byok/test", async (req, res) => {
47960
+ const provider = req.headers["x-byok-provider"];
47961
+ const apiKey = req.headers["x-byok-key"];
47962
+ if (typeof provider !== "string" || typeof apiKey !== "string" || !provider || !apiKey) {
47963
+ res.status(400).json({ ok: false, error: "x-byok-provider and x-byok-key headers required." });
47964
+ return;
47965
+ }
47966
+ try {
47967
+ if (provider === "openai") {
47968
+ const r = await fetch("https://api.openai.com/v1/chat/completions", {
47969
+ method: "POST",
47970
+ headers: { "Content-Type": "application/json", Authorization: `Bearer ${apiKey}` },
47971
+ body: JSON.stringify({ model: "gpt-4o-mini", messages: [{ role: "user", content: "Hi" }], max_tokens: 1, stream: false }),
47972
+ signal: AbortSignal.timeout(1e4)
47973
+ });
47974
+ if (r.ok) {
47975
+ res.json({ ok: true });
47976
+ return;
47977
+ }
47978
+ const t = await r.text().catch(() => "");
47979
+ res.json({ ok: false, error: `OpenAI ${r.status}: ${t.slice(0, 200)}` });
47980
+ } else if (provider === "anthropic") {
47981
+ const r = await fetch("https://api.anthropic.com/v1/messages", {
47982
+ method: "POST",
47983
+ headers: { "Content-Type": "application/json", "x-api-key": apiKey, "anthropic-version": "2023-06-01" },
47984
+ body: JSON.stringify({ model: "claude-3-5-haiku-20241022", messages: [{ role: "user", content: "Hi" }], max_tokens: 1, stream: false }),
47985
+ signal: AbortSignal.timeout(1e4)
47986
+ });
47987
+ if (r.ok) {
47988
+ res.json({ ok: true });
47989
+ return;
47990
+ }
47991
+ const t = await r.text().catch(() => "");
47992
+ res.json({ ok: false, error: `Anthropic ${r.status}: ${t.slice(0, 200)}` });
47993
+ } else {
47994
+ res.status(400).json({ ok: false, error: "Unknown provider." });
47995
+ }
47996
+ } catch (err) {
47997
+ res.json({ ok: false, error: err instanceof Error ? err.message : "Test failed." });
47998
+ }
47999
+ });
47719
48000
  if (IS_PROD) {
47720
48001
  app.use(import_express.default.static(DIST_DIR));
47721
48002
  app.use((_req, res) => {