@studioindia/designx 1.0.2 → 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.2",
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";
@@ -47727,6 +47727,276 @@ app.get("/api/data/projects/:slug/export", (req, res) => {
47727
47727
  res.status(500).json({ error: String(err) });
47728
47728
  }
47729
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
+ });
47730
48000
  if (IS_PROD) {
47731
48001
  app.use(import_express.default.static(DIST_DIR));
47732
48002
  app.use((_req, res) => {