@uicopilot/storybook-addon 0.5.47 → 0.5.48
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.
- package/dist/manager.mjs +12 -12
- package/package.json +1 -1
package/dist/manager.mjs
CHANGED
|
@@ -9,11 +9,11 @@ var vE=Object.create;var el=Object.defineProperty;var kE=Object.getOwnPropertyDe
|
|
|
9
9
|
value: `+(i||"<empty string>")+`
|
|
10
10
|
--------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,u),o.loc={source:n&&n.loc&&n.loc.source||"<unknown>",start:u,end:c},o}});function Ll(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===Al&&e.charCodeAt(t+1)===Al}function qb(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===Al&&e.charCodeAt(t+1)!==Al){let n=e.indexOf("-",t+2);if(n!==-1)return e.substring(t,n+1)}return""}function YA(e){if(El.has(e))return El.get(e);let t=e.toLowerCase(),n=El.get(t);if(n===void 0){let r=Ll(t,0),o=r?"":qb(t,0);n=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:r})}return El.set(e,n),n}function KA(e){if(Li.has(e))return Li.get(e);let t=e,n=e[0];n==="/"?n=e[1]==="/"?"//":"/":n!=="_"&&n!=="*"&&n!=="$"&&n!=="#"&&n!=="+"&&n!=="&"&&(n="");let r=Ll(t,n.length);if(!r&&(t=t.toLowerCase(),Li.has(t))){let a=Li.get(t);return Li.set(e,a),a}let o=r?"":qb(t,n.length),i=t.substr(0,n.length+o.length),s=Object.freeze({basename:t.substr(i.length),name:t.substr(n.length),hack:n,vendor:o,prefix:i,custom:r});return Li.set(e,s),s}var El,Li,Al,Pl,ap,Ml=U(()=>{"use strict";El=new Map,Li=new Map,Al=45,Pl=YA,ap=KA});var Mi,Bl=U(()=>{"use strict";Mi=["initial","inherit","unset","revert","revert-layer"]});function up(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function Ms(e,t,n){for(;e!==null&&(e.type===13||e.type===25);)e=n(++t);return t}function Eo(e,t,n,r){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===Bs||o===jr){if(n)return 0;t++}for(;t<e.value.length;t++)if(!Wt(e.value.charCodeAt(t)))return 0;return r+1}function cp(e,t,n){let r=!1,o=Ms(e,t,n);if(e=n(o),e===null)return t;if(e.type!==10)if(up(e,Bs)||up(e,jr)){if(r=!0,o=Ms(n(++o),o,n),e=n(o),e===null||e.type!==10)return 0}else return t;if(!r){let i=e.value.charCodeAt(0);if(i!==Bs&&i!==jr)return 0}return Eo(e,r?0:1,r,o)}function pp(e,t){let n=0;if(!e)return 0;if(e.type===10)return Eo(e,0,QA,n);if(e.type===1&&e.value.charCodeAt(0)===jr){if(!Zr(e.value,1,lp))return 0;switch(e.value.length){case 2:return cp(t(++n),n,t);case 3:return e.value.charCodeAt(2)!==jr?0:(n=Ms(t(++n),n,t),e=t(n),Eo(e,0,Bi,n));default:return e.value.charCodeAt(2)!==jr?0:Eo(e,3,Bi,n)}}else if(e.type===1||up(e,Bs)&&t(n+1).type===1){if(e.type!==1&&(e=t(++n)),e===null||!Zr(e.value,0,lp))return 0;switch(e.value.length){case 1:return cp(t(++n),n,t);case 2:return e.value.charCodeAt(1)!==jr?0:(n=Ms(t(++n),n,t),e=t(n),Eo(e,0,Bi,n));default:return e.value.charCodeAt(1)!==jr?0:Eo(e,2,Bi,n)}}else if(e.type===12){let r=e.value.charCodeAt(0),o=r===Bs||r===jr?1:0,i=o;for(;i<e.value.length&&Wt(e.value.charCodeAt(i));i++);return i===o||!Zr(e.value,i,lp)?0:i+1===e.value.length?cp(t(++n),n,t):e.value.charCodeAt(i+1)!==jr?0:i+2===e.value.length?(n=Ms(t(++n),n,t),e=t(n),Eo(e,0,Bi,n)):Eo(e,i+2,Bi,n)}return 0}var Bs,jr,lp,Bi,QA,Yb=U(()=>{"use strict";dr();Bs=43,jr=45,lp=110,Bi=!0,QA=!1});function dp(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function e2(e,t){return e.value.charCodeAt(0)===t}function Ds(e,t,n){let r=0;for(let o=t;o<e.value.length;o++){let i=e.value.charCodeAt(o);if(i===Kb&&n&&r!==0)return Ds(e,t+r+1,!1),6;if(!Un(i)||++r>6)return 0}return r}function Dl(e,t,n){if(!e)return 0;for(;dp(n(t),Xb);){if(++e>6)return 0;t++}return t}function gp(e,t){let n=0;if(e===null||e.type!==1||!Zr(e.value,0,ZA)||(e=t(++n),e===null))return 0;if(dp(e,JA))return e=t(++n),e===null?0:e.type===1?Dl(Ds(e,0,!0),++n,t):dp(e,Xb)?Dl(1,++n,t):0;if(e.type===10){let r=Ds(e,1,!0);return r===0?0:(e=t(++n),e===null?n:e.type===12||e.type===10?!e2(e,Kb)||!Ds(e,1,!1)?0:n+1:Dl(r,n,t))}return e.type===12?Dl(Ds(e,1,!0),++n,t):0}var JA,Kb,Xb,ZA,Qb=U(()=>{"use strict";dr();JA=43,Kb=45,Xb=63,ZA=117});function Er(e,t){return t<e.length?e.charCodeAt(t):0}function Zb(e,t){return eo(e,0,e.length,t)}function e0(e,t){for(let n=0;n<t.length;n++)if(Zb(e,t[n]))return!0;return!1}function t0(e,t){return t!==e.length-2?!1:Er(e,t)===92&&Wt(Er(e,t+1))}function Rl(e,t,n){if(e&&e.type==="Range"){let r=Number(n!==void 0&&n!==t.length?t.substr(0,n):t);if(isNaN(r)||e.min!==null&&r<e.min&&typeof e.min!="string"||e.max!==null&&r>e.max&&typeof e.max!="string")return!0}return!1}function i2(e,t){let n=0,r=[],o=0;e:do{switch(e.type){case 24:case 22:case 20:if(e.type!==n)break e;if(n=r.pop(),r.length===0){o++;break e}break;case 2:case 21:case 19:case 23:r.push(n),n=bp.get(e.type);break}o++}while(e=t(o));return o}function fr(e,t){return function(n,r,o){return n===null?0:n.type===2&&e0(n.value,t)?i2(n,r):e(n,r,o)}}function Mt(e){return function(t){return t===null||t.type!==e?0:1}}function s2(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return e0(t,Mi)||Zb(t,"default")?0:1}function n0(e){return e===null||e.type!==1||Er(e.value,0)!==45||Er(e.value,1)!==45?0:1}function a2(e){return!n0(e)||e.value==="--"?0:1}function l2(e){if(e===null||e.type!==4)return 0;let t=e.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let n=1;n<t;n++)if(!Un(Er(e.value,n)))return 0;return 1}function c2(e){return e===null||e.type!==4||!vi(Er(e.value,1),Er(e.value,2),Er(e.value,3))?0:1}function u2(e,t){if(!e)return 0;let n=0,r=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==n)break e;n=r.pop();break;case 17:if(n===0)break e;break;case 9:if(n===0&&e.value==="!")break e;break;case 2:case 21:case 19:case 23:r.push(n),n=bp.get(e.type);break}o++}while(e=t(o));return o}function p2(e,t){if(!e)return 0;let n=0,r=[],o=0;e:do{switch(e.type){case 6:case 8:break e;case 24:case 22:case 20:if(e.type!==n)break e;n=r.pop();break;case 2:case 21:case 19:case 23:r.push(n),n=bp.get(e.type);break}o++}while(e=t(o));return o}function io(e){return e&&(e=new Set(e)),function(t,n,r){if(t===null||t.type!==12)return 0;let o=Jo(t.value,0);if(e!==null){let i=t.value.indexOf("\\",o),s=i===-1||!t0(t.value,i)?t.value.substr(o):t.value.substring(o,i);if(e.has(s.toLowerCase())===!1)return 0}return Rl(r,t.value,o)?0:1}}function d2(e,t,n){return e===null||e.type!==11||Rl(n,e.value,e.value.length-1)?0:1}function r0(e){return typeof e!="function"&&(e=function(){return 0}),function(t,n,r){return t!==null&&t.type===10&&Number(t.value)===0?1:e(t,n,r)}}function g2(e,t,n){if(e===null)return 0;let r=Jo(e.value,0);return!(r===e.value.length)&&!t0(e.value,r)||Rl(n,e.value,r)?0:1}function f2(e,t,n){if(e===null||e.type!==10)return 0;let r=Er(e.value,0)===43||Er(e.value,0)===45?1:0;for(;r<e.value.length;r++)if(!Wt(Er(e.value,r)))return 0;return Rl(n,e.value,r)?0:1}function y2(e){let{angle:t,decibel:n,frequency:r,flex:o,length:i,resolution:s,semitones:a,time:u}=e||{};return{dimension:fr(io(null),oo),angle:fr(io(t),oo),decibel:fr(io(n),oo),frequency:fr(io(r),oo),flex:fr(io(o),oo),length:fr(r0(io(i)),oo),resolution:fr(io(s),oo),semitones:fr(io(a),oo),time:fr(io(u),oo)}}function b2(e){let t=new Set;for(let n of x2)if(Array.isArray(e[n]))for(let r of e[n])t.add(r.toLowerCase());return function(r){return r===null?0:r.type===9&&r.value==="%"||r.type===1&&t.has(r.value.toLowerCase())?1:0}}function o0(e){return{...m2,...h2,...y2(e),"attr-unit":b2(e)}}var fp,mp,hp,t2,n2,r2,xp,yp,Jb,o2,oo,bp,m2,h2,x2,i0=U(()=>{"use strict";Bl();Yb();Qb();dr();fp=["calc(","-moz-calc(","-webkit-calc("],mp=["min(","max(","clamp("],hp=["round(","mod(","rem("],t2=["sin(","cos(","tan("],n2=["asin(","acos(","atan(","atan2("],r2=["pow(","sqrt(","log(","exp(","sign("],xp=["hypot("],yp=["abs("],Jb=[...fp,...mp,...hp,...t2,...r2,...xp,...yp],o2=[...fp,...mp,...hp,...xp,...yp],oo=[...fp,...mp,...hp,...n2,...xp,...yp],bp=new Map([[2,22],[21,22],[19,20],[23,24]]);m2={"ident-token":Mt(1),"function-token":Mt(2),"at-keyword-token":Mt(3),"hash-token":Mt(4),"string-token":Mt(5),"bad-string-token":Mt(6),"url-token":Mt(7),"bad-url-token":Mt(8),"delim-token":Mt(9),"number-token":Mt(10),"percentage-token":Mt(11),"dimension-token":Mt(12),"whitespace-token":Mt(13),"CDO-token":Mt(14),"CDC-token":Mt(15),"colon-token":Mt(16),"semicolon-token":Mt(17),"comma-token":Mt(18),"[-token":Mt(19),"]-token":Mt(20),"(-token":Mt(21),")-token":Mt(22),"{-token":Mt(23),"}-token":Mt(24)},h2={string:Mt(5),ident:Mt(1),percentage:fr(d2,o2),zero:r0(),number:fr(g2,Jb),integer:fr(f2,Jb),"custom-ident":s2,"dashed-ident":n0,"custom-property-name":a2,"hex-color":l2,"id-selector":c2,"an-plus-b":pp,urange:gp,"declaration-value":u2,"any-value":p2},x2=["length","angle","time","frequency","resolution","flex","decibel","semitones"]});var zl={};Se(zl,{angle:()=>w2,decibel:()=>I2,flex:()=>T2,frequency:()=>k2,length:()=>S2,resolution:()=>C2,semitones:()=>F2,time:()=>v2});var S2,w2,v2,k2,C2,T2,I2,F2,s0=U(()=>{"use strict";S2=["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],w2=["deg","grad","rad","turn"],v2=["s","ms"],k2=["hz","khz"],C2=["dpi","dpcm","dppx","x"],T2=["fr"],I2=["db"],F2=["st"]});function a0(e,t,n){return Object.assign(ei("SyntaxError",e),{input:t,offset:n,rawMessage:e,message:e+`
|
|
11
11
|
`+t+`
|
|
12
|
-
--`+new Array((n||t.length)+1).join("-")+"^"})}var l0=U(()=>{"use strict";wl()});var E2,A2,P2,L2,M2,c0,Nl,u0=U(()=>{"use strict";l0();E2=9,A2=10,P2=12,L2=13,M2=32,c0=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),Nl=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t<this.str.length?this.str.charCodeAt(t):0}charCode(){return this.charCodeAt(this.pos)}isNameCharCode(t=this.charCode()){return t<128&&c0[t]===1}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(t){return this.charCodeAt(this.findWsEnd(t))}skipWs(){this.pos=this.findWsEnd(this.pos)}findWsEnd(t){for(;t<this.str.length;t++){let n=this.str.charCodeAt(t);if(n!==L2&&n!==A2&&n!==P2&&n!==M2&&n!==E2)break}return t}substringToPos(t){return this.str.substring(this.pos,this.pos=t)}eat(t){this.charCode()!==t&&this.error("Expect `"+String.fromCharCode(t)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(t){throw new a0(t,this.str,this.pos)}scanSpaces(){return this.substringToPos(this.findWsEnd(this.pos))}scanWord(){let t=this.pos;for(;t<this.str.length;t++){let n=this.str.charCodeAt(t);if(n>=128||c0[n]===0)break}return this.pos===t&&this.error("Expect a keyword"),this.substringToPos(t)}scanNumber(){let t=this.pos;for(;t<this.str.length;t++){let n=this.str.charCodeAt(t);if(n<48||n>57)break}return this.pos===t&&this.error("Expect a number"),this.substringToPos(t)}scanString(){let t=this.str.indexOf("'",this.pos+1);return t===-1&&(this.pos=this.str.length,this.error("Expect an apostrophe")),this.substringToPos(t+1)}}});function h0(e){let t=null,n=null;return e.eat($l),e.skipWs(),t=e.scanNumber(e),e.skipWs(),e.charCode()===Tp?(e.pos++,e.skipWs(),e.charCode()!==vp&&(n=e.scanNumber(e),e.skipWs())):n=t,e.eat(vp),{min:Number(t),max:n?Number(n):0}}function _2(e){let t=null,n=!1;switch(e.charCode()){case S0:e.pos++,t={min:0,max:0};break;case Cp:e.pos++,t={min:1,max:0};break;case _l:e.pos++,t={min:0,max:1};break;case kp:e.pos++,n=!0,e.charCode()===$l?t=h0(e):e.charCode()===_l?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case $l:t=h0(e);break;default:return null}return{type:"Multiplier",comma:n,min:t.min,max:t.max,term:null}}function so(e,t){let n=_2(e);return n!==null?(n.term=t,e.charCode()===kp&&e.charCodeAt(e.pos-1)===Cp||e.charCode()===_l&&e.charCodeAt(e.pos-1)===vp?so(e,n):n):t}function Sp(e){let t=e.peek();return t===""?null:so(e,{type:"Token",value:t})}function $2(e){let t;return e.eat(Ip),e.eat(Ol),t=e.scanWord(),e.eat(Ol),e.eat(wp),so(e,{type:"Property",name:t})}function U2(e){let t=null,n=null,r=1;return e.eat(Rs),e.charCode()===d0&&(e.peek(),r=-1),r==-1&&e.charCode()===f0?e.peek():(t=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(t+=e.scanWord())),e.skipWs(),e.eat(Tp),e.skipWs(),e.charCode()===f0?e.peek():(r=1,e.charCode()===d0&&(e.peek(),r=-1),n=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(n+=e.scanWord())),e.eat(Di),{type:"Range",min:t,max:n}}function j2(e){let t,n=null;if(e.eat(Ip),t=e.scanWord(),t==="boolean-expr"){e.eat(Rs);let r=Ul(e,Di);return e.eat(Di),e.eat(wp),so(e,{type:"Boolean",term:r.terms.length===1?r.terms[0]:r})}return e.charCode()===y0&&e.nextCharCode()===b0&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Rs&&(e.skipWs(),n=U2(e)),e.eat(wp),so(e,{type:"Type",name:t,opts:n})}function H2(e){let t=e.scanWord();return e.charCode()===y0?(e.pos++,{type:"Function",name:t}):so(e,{type:"Keyword",name:t})}function W2(e,t){function n(o,i){return{type:"Group",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let r;for(t=Object.keys(t).sort((o,i)=>m0[o]-m0[i]);t.length>0;){r=t.shift();let o=0,i=0;for(;o<e.length;o++){let s=e[o];s.type==="Combinator"&&(s.value===r?(i===-1&&(i=o-1),e.splice(o,1),o--):(i!==-1&&o-i>1&&(e.splice(i,o-i,n(e.slice(i,o),r)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,n(e.slice(i,o),r))}return r}function Ul(e,t=-1){let n=Object.create(null),r=[],o=null,i=e.pos,s=!1;for(;e.charCode()!==t;){let a=s?Ul(e,b0):G2(e);if(!a)break;if(a.type!=="Spaces"){if(s){if(a.terms.length===0){s=!1;continue}if(a.combinator===" "){for(;a.terms.length>1;)n[" "]=!0,r.push({type:"Combinator",value:" "},a.terms.shift());a=a.terms[0]}}a.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),n[a.value]=!0):o!==null&&o.type!=="Combinator"&&(n[" "]=!0,r.push({type:"Combinator",value:" "})),r.push(a),o=a,i=e.pos,s=a.type==="Function"}}return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:r,combinator:W2(r,n)||" ",disallowEmpty:!1,explicit:!1}}function V2(e){let t;return e.eat(Rs),t=Ul(e,Di),e.eat(Di),t.explicit=!0,e.charCode()===x0&&(e.pos++,t.disallowEmpty=!0),t}function G2(e){let t=e.charCode();switch(t){case Di:break;case Rs:return so(e,V2(e));case Ip:return e.nextCharCode()===Ol?$2(e):j2(e);case g0:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===g0?2:1))};case p0:return e.pos++,e.eat(p0),{type:"Combinator",value:"&&"};case Tp:return e.pos++,{type:"Comma"};case Ol:return so(e,{type:"String",value:e.scanString()});case N2:case B2:case D2:case z2:case R2:return{type:"Spaces",value:e.scanSpaces()};case O2:return t=e.nextCharCode(),e.isNameCharCode(t)?(e.pos++,{type:"AtKeyword",name:e.scanWord()}):Sp(e);case S0:case Cp:case _l:case kp:case x0:break;case $l:if(t=e.nextCharCode(),t<48||t>57)return Sp(e);break;default:return e.isNameCharCode(t)?H2(e):Sp(e)}}function zs(e){let t=new Nl(e),n=Ul(t);return t.pos!==e.length&&t.error("Unexpected input"),n.terms.length===1&&n.terms[0].type==="Group"?n.terms[0]:n}var B2,D2,R2,z2,N2,x0,kp,p0,Ol,y0,b0,S0,Cp,Tp,d0,Ip,wp,_l,O2,Rs,Di,$l,g0,vp,f0,m0,Fp=U(()=>{"use strict";u0();B2=9,D2=10,R2=12,z2=13,N2=32,x0=33,kp=35,p0=38,Ol=39,y0=40,b0=41,S0=42,Cp=43,Tp=44,d0=45,Ip=60,wp=62,_l=63,O2=64,Rs=91,Di=93,$l=123,g0=124,vp=125,f0=8734,m0={" ":1,"&&":2,"||":3,"|":4}});function w0(e){return typeof e=="function"?e:Ns}function Ep(e,t,n){function r(s){switch(o.call(n,s),s.type){case"Group":s.terms.forEach(r);break;case"Multiplier":case"Boolean":r(s.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+s.type)}i.call(n,s)}let o=Ns,i=Ns;if(typeof t=="function"?o=t:t&&(o=w0(t.enter),i=w0(t.leave)),o===Ns&&i===Ns)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");r(e,n)}var Ns,v0=U(()=>{"use strict";Ns=function(){}});var Ap=U(()=>{"use strict";sp();Fp();v0()});function K2(e){let t=[];return Fo(e,(n,r,o)=>t.push({type:n,value:e.slice(r,o),node:null})),t}function k0(e,t){return typeof e=="string"?K2(e):t.generate(e,Y2)}var Y2,C0=U(()=>{"use strict";dr();Y2={decorator(e){let t=[],n=null;return{...e,node(r){let o=n;n=r,e.node.call(this,r),n=o},emit(r,o,i){t.push({type:o,value:r,node:i?null:n})},result(){return t}}}}});function Tn(e,t,n){return t===mt&&n===Ct||e===mt&&t===mt&&n===mt?e:(e.type==="If"&&e.else===Ct&&t===mt&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:n})}function I0(e){return e.length>2&&e.charCodeAt(e.length-2)===X2&&e.charCodeAt(e.length-1)===Q2}function T0(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&I0(e.name)}function Ao(e,t=" ",n=!1){return{type:"Group",terms:e,combinator:t,disallowEmpty:!1,explicit:n}}function Os(e,t,n=new Set){if(!n.has(e))switch(n.add(e),e.type){case"If":e.match=Os(e.match,t,n),e.then=Os(e.then,t,n),e.else=Os(e.else,t,n);break;case"Type":return t[e.name]||e}return e}function Pp(e,t,n){switch(e){case" ":{let r=mt;for(let o=t.length-1;o>=0;o--){let i=t[o];r=Tn(i,r,Ct)}return r}case"|":{let r=Ct,o=null;for(let i=t.length-1;i>=0;i--){let s=t[i];if(T0(s)&&(o===null&&i>0&&T0(t[i-1])&&(o=Object.create(null),r=Tn({type:"Enum",map:o},mt,r)),o!==null)){let a=(I0(s.name)?s.name.slice(0,-1):s.name).toLowerCase();if(!(a in o)){o[a]=s;continue}}o=null,r=Tn(s,mt,r)}return r}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let r=Ct;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Pp(e,t.filter(function(a){return a!==i}),!1):s=mt,r=Tn(i,s,r)}return r}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let r=n?mt:Ct;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Pp(e,t.filter(function(a){return a!==i}),!0):s=mt,r=Tn(i,s,r)}return r}}}function J2(e){let t=mt,n=Ri(e.term);if(e.max===0)n=Tn(n,jl,Ct),t=Tn(n,null,Ct),t.then=Tn(mt,mt,t),e.comma&&(t.then.else=Tn({type:"Comma",syntax:e},t,Ct));else for(let r=e.min||1;r<=e.max;r++)e.comma&&t!==mt&&(t=Tn({type:"Comma",syntax:e},t,Ct)),t=Tn(n,Tn(mt,mt,t),Ct);if(e.min===0)t=Tn(mt,mt,t);else for(let r=0;r<e.min-1;r++)e.comma&&t!==mt&&(t=Tn({type:"Comma",syntax:e},t,Ct)),t=Tn(n,t,Ct);return t}function Ri(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=Pp(e.combinator,e.terms.map(Ri),!1);return e.disallowEmpty&&(t=Tn(t,jl,Ct)),t}case"Multiplier":return J2(e);case"Boolean":{let t=Ri(e.term),n=Ri(Ao([Ao([{type:"Keyword",name:"not"},{type:"Type",name:"!boolean-group"}]),Ao([{type:"Type",name:"!boolean-group"},Ao([{type:"Multiplier",comma:!1,min:0,max:0,term:Ao([{type:"Keyword",name:"and"},{type:"Type",name:"!boolean-group"}])},{type:"Multiplier",comma:!1,min:0,max:0,term:Ao([{type:"Keyword",name:"or"},{type:"Type",name:"!boolean-group"}])}],"|")])],"|")),r=Ri(Ao([{type:"Type",name:"!term"},Ao([{type:"Token",value:"("},{type:"Type",name:"!self"},{type:"Token",value:")"}]),{type:"Type",name:"general-enclosed"}],"|"));return Os(r,{"!term":t,"!self":n}),Os(n,{"!boolean-group":r}),n}case"Type":case"Property":return{type:e.type,name:e.name,syntax:e};case"Keyword":return{type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return{type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return{type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return e.value.length===3?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return{type:e.type,value:e.value,syntax:e};case"Comma":return{type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}function _s(e,t){return typeof e=="string"&&(e=zs(e)),{type:"MatchGraph",match:Ri(e),syntax:t||null,source:e}}var mt,Ct,jl,X2,Q2,Lp=U(()=>{"use strict";Fp();mt={type:"Match"},Ct={type:"Mismatch"},jl={type:"DisallowEmpty"},X2=40,Q2=41});function oP(e){let t=null,n=null,r=e;for(;r!==null;)n=r.prev,r.prev=t,t=r,r=n;return t}function Mp(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=t.charCodeAt(n),o=e.charCodeAt(n);if(o>=65&&o<=90&&(o=o|32),o!==r)return!1}return!0}function iP(e){return e.type!==9?!1:e.value!=="?"}function P0(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||iP(e)}function L0(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function sP(e,t,n){function r(){do v++,I=v<e.length?e[v]:null;while(I!==null&&(I.type===13||I.type===25))}function o(j){let B=v+j;return B<e.length?e[B]:null}function i(j,B){return{nextState:j,matchStack:N,syntaxStack:d,thenStack:g,tokenIndex:v,prev:B}}function s(j){g={nextState:j,matchStack:N,syntaxStack:d,prev:g}}function a(j){p=i(j,p)}function u(){N={type:eP,syntax:t.syntax,token:I,prev:N},r(),h=null,v>D&&(D=v)}function c(){d={syntax:t.syntax,opts:t.syntax.opts||d!==null&&d.opts||null,prev:d},N={type:Bp,syntax:t.syntax,token:N.token,prev:N}}function l(){N.type===Bp?N=N.prev:N={type:M0,syntax:d.syntax,token:N.token,prev:N},d=d.prev}let d=null,g=null,p=null,h=null,S=0,T=null,I=null,v=-1,D=0,N={type:Z2,syntax:null,token:null,prev:null};for(r();T===null&&++S<A0;)switch(t.type){case"Match":if(g===null){if(I!==null&&(v!==e.length-1||I.value!=="\\0"&&I.value!=="\\9")){t=Ct;break}T=E0;break}if(t=g.nextState,t===jl)if(g.matchStack===N){t=Ct;break}else t=mt;for(;g.syntaxStack!==d;)l();g=g.prev;break;case"Mismatch":if(h!==null&&h!==!1)(p===null||v>p.tokenIndex)&&(p=h,h=!1);else if(p===null){T=tP;break}t=p.nextState,g=p.thenStack,d=p.syntaxStack,N=p.matchStack,v=p.tokenIndex,I=v<e.length?e[v]:null,p=p.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==Ct&&a(t.else),t.then!==mt&&s(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let z=t.syntax.terms;if(t.index===z.length){if(t.mask===0||t.syntax.all){t=Ct;break}t=mt;break}if(t.mask===(1<<z.length)-1){t=mt;break}for(;t.index<z.length;t.index++){let m=1<<t.index;if((t.mask&m)===0){a(t),s({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|m}),t=z[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(I!==null){let z=I.value.toLowerCase();if(z.indexOf("\\")!==-1&&(z=z.replace(/\\[09].*$/,"")),F0.call(t.map,z)){t=t.map[z];break}}t=Ct;break;case"Generic":{let z=d!==null?d.opts:null,m=v+Math.floor(t.fn(I,o,z));if(!isNaN(m)&&m>v){for(;v<m;)u();t=mt}else t=Ct;break}case"Type":case"Property":{let z=t.type==="Type"?"types":"properties",m=F0.call(n,z)?n[z][t.name]:null;if(!m||!m.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(h!==!1&&I!==null&&t.type==="Type"&&(t.name==="custom-ident"&&I.type===1||t.name==="length"&&I.value==="0")){h===null&&(h=i(t,p)),t=Ct;break}c(),t=m.matchRef||m.match;break}case"Keyword":{let z=t.name;if(I!==null){let m=I.value;if(m.indexOf("\\")!==-1&&(m=m.replace(/\\[09].*$/,"")),Mp(m,z)){u(),t=mt;break}}t=Ct;break}case"AtKeyword":case"Function":if(I!==null&&Mp(I.value,t.name)){u(),t=mt;break}t=Ct;break;case"Token":if(I!==null&&I.value===t.value){u(),t=mt;break}t=Ct;break;case"Comma":I!==null&&I.type===18?P0(N.token)?t=Ct:(u(),t=L0(I)?Ct:mt):t=P0(N.token)||L0(I)?mt:Ct;break;case"String":let j="",B=v;for(;B<e.length&&j.length<t.value.length;B++)j+=e[B].value;if(Mp(j,t.value)){for(;v<B;)u();t=mt}else t=Ct;break;default:throw new Error("Unknown node type: "+t.type)}switch(rP+=S,T){case null:console.warn("[csstree-match] BREAK after "+A0+" iterations"),T=nP,N=null;break;case E0:for(;d!==null;)l();break;default:N=null}return{tokens:e,reason:T,iterations:S,match:N,longestMatch:D}}function Dp(e,t,n){let r=sP(e,t,n||{});if(r.match===null)return r;let o=r.match,i=r.match={syntax:t.syntax||null,match:[]},s=[i];for(o=oP(o).prev;o!==null;){switch(o.type){case Bp:i.match.push(i={syntax:o.syntax,match:[]}),s.push(i);break;case M0:s.pop(),i=s[s.length-1];break;default:i.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return r}var F0,Z2,eP,Bp,M0,E0,tP,nP,A0,rP,B0=U(()=>{"use strict";Lp();({hasOwnProperty:F0}=Object.prototype),Z2=0,eP=1,Bp=2,M0=3,E0="Match",tP="Mismatch",nP="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",A0=15e3,rP=0});var zp={};Se(zp,{getTrace:()=>D0,isKeyword:()=>cP,isProperty:()=>lP,isType:()=>aP});function D0(e){function t(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function n(o){if(Array.isArray(o.match)){for(let i=0;i<o.match.length;i++)if(n(o.match[i]))return t(o.syntax)&&r.unshift(o.syntax),!0}else if(o.node===e)return r=t(o.syntax)?[o.syntax]:[],!0;return!1}let r=null;return this.matched!==null&&n(this.matched),r}function aP(e,t){return Rp(this,e,n=>n.type==="Type"&&n.name===t)}function lP(e,t){return Rp(this,e,n=>n.type==="Property"&&n.name===t)}function cP(e){return Rp(this,e,t=>t.type==="Keyword")}function Rp(e,t,n){let r=D0.call(e,t);return r===null?!1:r.some(n)}var R0=U(()=>{"use strict"});function z0(e){return"node"in e?e.node:z0(e.match[0])}function N0(e){return"node"in e?e.node:N0(e.match[e.match.length-1])}function Np(e,t,n,r,o){function i(a){if(a.syntax!==null&&a.syntax.type===r&&a.syntax.name===o){let u=z0(a),c=N0(a);e.syntax.walk(t,function(l,d,g){if(l===u){let p=new rr;do{if(p.appendData(d.data),d.data===c)break;d=d.next}while(d!==null);s.push({parent:g,nodes:p})}})}Array.isArray(a.match)&&a.match.forEach(i)}let s=[];return n.matched!==null&&i(n.matched),s}var O0=U(()=>{"use strict";Fs()});function Op(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function _0(e){return!!e&&Op(e.offset)&&Op(e.line)&&Op(e.column)}function uP(e,t){return function(r,o){if(!r||r.constructor!==Object)return o(r,"Type of node should be an Object");for(let i in r){let s=!0;if($s.call(r,i)!==!1){if(i==="type")r.type!==e&&o(r,"Wrong node type `"+r.type+"`, expected `"+e+"`");else if(i==="loc"){if(r.loc===null)continue;if(r.loc&&r.loc.constructor===Object)if(typeof r.loc.source!="string")i+=".source";else if(!_0(r.loc.start))i+=".start";else if(!_0(r.loc.end))i+=".end";else continue;s=!1}else if(t.hasOwnProperty(i)){s=!1;for(let a=0;!s&&a<t[i].length;a++){let u=t[i][a];switch(u){case String:s=typeof r[i]=="string";break;case Boolean:s=typeof r[i]=="boolean";break;case null:s=r[i]===null;break;default:typeof u=="string"?s=r[i]&&r[i].type===u:Array.isArray(u)&&(s=r[i]instanceof rr)}}}else o(r,"Unknown field `"+i+"` for "+e+" node type");s||o(r,"Bad value for `"+e+"."+i+"`")}}for(let i in t)$s.call(t,i)&&$s.call(r,i)===!1&&o(r,"Field `"+e+"."+i+"` is missed")}}function $0(e,t){let n=[];for(let r=0;r<e.length;r++){let o=e[r];if(o===String||o===Boolean)n.push(o.name.toLowerCase());else if(o===null)n.push("null");else if(typeof o=="string")n.push(o);else if(Array.isArray(o))n.push("List<"+($0(o,t)||"any")+">");else throw new Error("Wrong value `"+o+"` in `"+t+"` structure definition")}return n.join(" | ")}function pP(e,t){let n=t.structure,r={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in n){if($s.call(n,i)===!1)continue;let s=r[i]=Array.isArray(n[i])?n[i].slice():[n[i]];o[i]=$0(s,e+"."+i)}return{docs:o,check:uP(e,r)}}function U0(e){let t={};if(e.node){for(let n in e.node)if($s.call(e.node,n)){let r=e.node[n];if(r.structure)t[n]=pP(n,r);else throw new Error("Missed `structure` field in `"+n+"` node type definition")}}return t}var $s,j0=U(()=>{"use strict";Fs();({hasOwnProperty:$s}=Object.prototype)});function _p(e,t,n){let r={};for(let o in e)e[o].syntax&&(r[o]=n?e[o].syntax:Ai(e[o].syntax,{compact:t}));return r}function dP(e,t,n){let r={};for(let[o,i]of Object.entries(e))r[o]={prelude:i.prelude&&(n?i.prelude.syntax:Ai(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&_p(i.descriptors,t,n)};return r}function gP(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function fP(e){let t=e.terms[0];return e.explicit===!1&&e.terms.length===1&&t.type==="Multiplier"&&t.comma===!0}function Ar(e,t,n){return{matched:e,iterations:n,error:t,...zp}}function zi(e,t,n,r){let o=k0(n,e.syntax),i;return gP(o)?Ar(null,new Error("Matching for a tree with var() is not supported")):(r&&(i=Dp(o,e.cssWideKeywordsSyntax,e)),(!r||!i.match)&&(i=Dp(o,t.match,e),!i.match)?Ar(null,new Vb(i.reason,t.syntax,n,i),i.iterations):Ar(i.match,null,i.iterations))}var Us,H0=U(()=>{"use strict";Gb();Ml();Bl();i0();s0();Ap();C0();Lp();B0();R0();O0();j0();Us=class{constructor(t,n,r){if(this.cssWideKeywords=Mi,this.syntax=n,this.generic=!1,this.units={...zl},this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=r||U0(t),t){if(t.cssWideKeywords&&(this.cssWideKeywords=t.cssWideKeywords),t.units)for(let o of Object.keys(zl))Array.isArray(t.units[o])&&(this.units[o]=t.units[o]);if(t.types)for(let[o,i]of Object.entries(t.types))this.addType_(o,i);if(t.generic){this.generic=!0;for(let[o,i]of Object.entries(o0(this.units)))this.addType_(o,i)}if(t.atrules)for(let[o,i]of Object.entries(t.atrules))this.addAtrule_(o,i);if(t.properties)for(let[o,i]of Object.entries(t.properties))this.addProperty_(o,i)}this.cssWideKeywordsSyntax=_s(this.cssWideKeywords.join(" | "))}checkStructure(t){function n(i,s){o.push({node:i,message:s})}let r=this.structure,o=[];return this.syntax.walk(t,function(i){r.hasOwnProperty(i.type)?r[i.type].check(i,n):n(i,"Unknown node type `"+i.type+"`")}),o.length?o:!1}createDescriptor(t,n,r,o=null){let i={type:n,name:r},s={type:n,name:r,parent:o,serializable:typeof t=="string"||t&&typeof t.type=="string",syntax:null,match:null,matchRef:null};return typeof t=="function"?s.match=_s(t,i):(typeof t=="string"?Object.defineProperty(s,"syntax",{get(){return Object.defineProperty(s,"syntax",{value:zs(t)}),s.syntax}}):s.syntax=t,Object.defineProperty(s,"match",{get(){return Object.defineProperty(s,"match",{value:_s(s.syntax,i)}),s.match}}),n==="Property"&&Object.defineProperty(s,"matchRef",{get(){let a=s.syntax,u=fP(a)?_s({...a,terms:[a.terms[0].term]},i):null;return Object.defineProperty(s,"matchRef",{value:u}),u}})),s}addAtrule_(t,n){n&&(this.atrules[t]={type:"Atrule",name:t,prelude:n.prelude?this.createDescriptor(n.prelude,"AtrulePrelude",t):null,descriptors:n.descriptors?Object.keys(n.descriptors).reduce((r,o)=>(r[o]=this.createDescriptor(n.descriptors[o],"AtruleDescriptor",o,t),r),Object.create(null)):null})}addProperty_(t,n){n&&(this.properties[t]=this.createDescriptor(n,"Property",t))}addType_(t,n){n&&(this.types[t]=this.createDescriptor(n,"Type",t))}checkAtruleName(t){if(!this.getAtrule(t))return new Pi("Unknown at-rule","@"+t)}checkAtrulePrelude(t,n){let r=this.checkAtruleName(t);if(r)return r;let o=this.getAtrule(t);if(!o.prelude&&n)return new SyntaxError("At-rule `@"+t+"` should not contain a prelude");if(o.prelude&&!n&&!zi(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+t+"` should contain a prelude")}checkAtruleDescriptorName(t,n){let r=this.checkAtruleName(t);if(r)return r;let o=this.getAtrule(t),i=Pl(n);if(!o.descriptors)return new SyntaxError("At-rule `@"+t+"` has no known descriptors");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new Pi("Unknown at-rule descriptor",n)}checkPropertyName(t){if(!this.getProperty(t))return new Pi("Unknown property",t)}matchAtrulePrelude(t,n){let r=this.checkAtrulePrelude(t,n);if(r)return Ar(null,r);let o=this.getAtrule(t);return o.prelude?zi(this,o.prelude,n||"",!1):Ar(null,null)}matchAtruleDescriptor(t,n,r){let o=this.checkAtruleDescriptorName(t,n);if(o)return Ar(null,o);let i=this.getAtrule(t),s=Pl(n);return zi(this,i.descriptors[s.name]||i.descriptors[s.basename],r,!1)}matchDeclaration(t){return t.type!=="Declaration"?Ar(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,n){if(ap(t).custom)return Ar(null,new Error("Lexer matching doesn't applicable for custom properties"));let r=this.checkPropertyName(t);return r?Ar(null,r):zi(this,this.getProperty(t),n,!0)}matchType(t,n){let r=this.getType(t);return r?zi(this,r,n,!1):Ar(null,new Pi("Unknown type",t))}match(t,n){return typeof t!="string"&&(!t||!t.type)?Ar(null,new Pi("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),zi(this,t,n,!1))}findValueFragments(t,n,r,o){return Np(this,n,this.matchProperty(t,n),r,o)}findDeclarationValueFragments(t,n,r){return Np(this,t.value,this.matchDeclaration(t),n,r)}findAllFragments(t,n,r){let o=[];return this.syntax.walk(t,{visit:"Declaration",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,n,r))}}),o}getAtrule(t,n=!0){let r=Pl(t);return(r.vendor&&n?this.atrules[r.name]||this.atrules[r.basename]:this.atrules[r.name])||null}getAtrulePrelude(t,n=!0){let r=this.getAtrule(t,n);return r&&r.prelude||null}getAtruleDescriptor(t,n){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[n]||null}getProperty(t,n=!0){let r=ap(t);return(r.vendor&&n?this.properties[r.name]||this.properties[r.basename]:this.properties[r.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(u,c){return c?`<${u}>`:`<'${u}'>`}function n(u,c,l,d){if(l.has(c))return l.get(c);l.set(c,!1),d.syntax!==null&&Ep(d.syntax,function(g){if(g.type!=="Type"&&g.type!=="Property")return;let p=g.type==="Type"?u.types:u.properties,h=g.type==="Type"?o:i;hasOwnProperty.call(p,g.name)?n(u,g.name,h,p[g.name])&&(r.push(`${t(c,l===o)} used broken syntax definition ${t(g.name,g.type==="Type")}`),l.set(c,!0)):(r.push(`${t(c,l===o)} used missed syntax definition ${t(g.name,g.type==="Type")}`),l.set(c,!0))},this)}let r=[],o=new Map,i=new Map;for(let u in this.types)n(this,u,o,this.types[u]);for(let u in this.properties)n(this,u,i,this.properties[u]);let s=[...o.keys()].filter(u=>o.get(u)),a=[...i.keys()].filter(u=>i.get(u));return s.length||a.length?{errors:r,types:s,properties:a}:null}dump(t,n){return{generic:this.generic,cssWideKeywords:this.cssWideKeywords,units:this.units,types:_p(this.types,!n,t),properties:_p(this.properties,!n,t),atrules:dP(this.atrules,!n,t)}}toString(){return JSON.stringify(this.dump())}}});function $p(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function mP(e,t){let n=Object.create(null);for(let r of Object.keys(e))t.includes(r)&&(n[r]=e[r]);return n}function Up(e,t,n){let r={...e};for(let[o,i]of Object.entries(t))r[o]={...r[o],...n?mP(i,n):i};return r}function js(e,t){let n={...e};for(let[r,o]of Object.entries(t))switch(r){case"generic":n[r]=!!o;break;case"cssWideKeywords":n[r]=e[r]?[...e[r],...o]:o||[];break;case"units":n[r]={...e[r]};for(let[i,s]of Object.entries(o))n[r][i]=Array.isArray(s)?s:[];break;case"atrules":n[r]={...e[r]};for(let[i,s]of Object.entries(o)){let a=n[r][i]||{},u=n[r][i]={prelude:a.prelude||null,descriptors:{...a.descriptors}};if(s){u.prelude=s.prelude?$p(u.prelude,s.prelude):u.prelude||null;for(let[c,l]of Object.entries(s.descriptors||{}))u.descriptors[c]=l?$p(u.descriptors[c],l):null;Object.keys(u.descriptors).length||(u.descriptors=null)}}break;case"types":case"properties":n[r]={...e[r]};for(let[i,s]of Object.entries(o))n[r][i]=$p(n[r][i],s);break;case"parseContext":n[r]={...e[r],...o};break;case"scope":case"features":n[r]=Up(e[r],o);break;case"atrule":case"pseudo":n[r]=Up(e[r],o,["parse"]);break;case"node":n[r]=Up(e[r],o,["name","structure","parse","generate","walkContext"]);break}return n}var W0=U(()=>{"use strict"});function V0(e){let t=sb(e),n=jb(e),r=Db(e),{fromPlainObject:o,toPlainObject:i}=zb(n),s={lexer:null,createLexer:a=>new Us(a,s,s.lexer.structure),tokenize:Fo,parse:t,generate:r,walk:n,find:n.find,findLast:n.findLast,findAll:n.findAll,fromPlainObject:o,toPlainObject:i,fork(a){let u=js({},e);return V0(typeof a=="function"?a(u):js(u,a))}};return s.lexer=new Us({generic:e.generic,cssWideKeywords:e.cssWideKeywords,units:e.units,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},s),s}var G0,q0=U(()=>{"use strict";dr();ab();Rb();Nb();Hb();H0();W0();G0=e=>V0(js({},e))});var Y0,K0=U(()=>{"use strict";Y0={generic:!0,cssWideKeywords:["initial","inherit","unset","revert","revert-layer"],units:{angle:["deg","grad","rad","turn"],decibel:["db"],flex:["fr"],frequency:["hz","khz"],length:["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],resolution:["dpi","dpcm","dppx","x"],semitones:["st"],time:["s","ms"]},types:{"abs()":"abs( <calc-sum> )","absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","acos()":"acos( <calc-sum> )","alpha-value":"<number>|<percentage>","an+b":"odd|even|<integer>|<n-dimension>|'+'? \u2020 n|-n|<ndashdigit-dimension>|'+'? \u2020 <ndashdigit-ident>|<dashndashdigit-ident>|<n-dimension> <signed-integer>|'+'? \u2020 n <signed-integer>|-n <signed-integer>|<ndash-dimension> <signless-integer>|'+'? \u2020 n- <signless-integer>|-n- <signless-integer>|<n-dimension> ['+'|'-'] <signless-integer>|'+'? \u2020 n ['+'|'-'] <signless-integer>|-n ['+'|'-'] <signless-integer>","anchor()":"anchor( <anchor-name>?&&<anchor-side> , <length-percentage>? )","anchor-name":"<dashed-ident>","anchor-side":"inside|outside|top|left|right|bottom|start|end|self-start|self-end|<percentage>|center","anchor-size":"width|height|block|inline|self-block|self-inline","anchor-size()":"anchor-size( [<anchor-name>||<anchor-size>]? , <length-percentage>? )","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>|<zero>","angular-color-stop":"<color> <color-stop-angle>?","angular-color-stop-list":"<angular-color-stop> , [<angular-color-hint>? , <angular-color-stop>]#?","animateable-feature":"scroll-position|contents|<custom-ident>","animation-action":"none|play|play-once|play-forwards|play-backwards|pause|reset|replay","asin()":"asin( <calc-sum> )","atan()":"atan( <calc-sum> )","atan2()":"atan2( <calc-sum> , <calc-sum> )",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <attr-type>? , <declaration-value>? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attr-type":"type( <syntax> )|raw-string|number|<attr-unit>","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?",axis:"block|inline|x|y","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<xywh()>|<rect()>|<circle()>|<ellipse()>|<polygon()>|<path()>","basic-shape-rect":"<inset()>|<rect()>|<xywh()>","bg-clip":"<visual-box>|border-area|text","bg-image":"<image>|none","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<visual-box>||<visual-box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage [0,\u221E]>|auto]{1,2}|cover|contain","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity","blur()":"blur( <length>? )","brightness()":"brightness( [<number>|<percentage>]? )","calc()":"calc( <calc-sum> )","calc-constant":"e|pi|infinity|-infinity|NaN","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-size()":"calc-size( <calc-size-basis> , <calc-sum> )","calc-size-basis":"<intrinsic-size-keyword>|<calc-size()>|any|<calc-sum>","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-value":"<number>|<dimension>|<percentage>|<calc-constant>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( <radial-size>? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<color-base>|currentColor|<system-color>|<device-cmyk()>|<light-dark()>|<-non-standard-color>","color()":"color( <colorspace-params> [/ [<alpha-value>|none]]? )","color-base":"<hex-color>|<color-function>|<named-color>|<color-mix()>|transparent","color-function":"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<oklab()>|<oklch()>|<color()>","color-interpolation-method":"in [<rectangular-color-space>|<polar-color-space> <hue-interpolation-method>?|<custom-color-space>]","color-mix()":"color-mix( <color-interpolation-method> , [<color>&&<percentage [0,100]>?]#{2} )","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"[<angle-percentage>|<zero>]{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"<linear-color-stop> , [<linear-color-hint>? , <linear-color-stop>]#?","colorspace-params":"[<predefined-rgb-params>|<xyz-params>]",combinator:"'>'|'+'|'~'|['|' '|']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|checkbox|radio|menulist|listbox|meter|progress-bar|button","compat-special":"textfield|menulist-button","complex-selector":"<complex-selector-unit> [<combinator>? <complex-selector-unit>]*","complex-selector-list":"<complex-selector>#","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>*]!","compound-selector-list":"<compound-selector>#","conic-gradient()":"conic-gradient( [<conic-gradient-syntax>] )","conic-gradient-syntax":"[[[from [<angle>|<zero>]]? [at <position>]?]||<color-interpolation-method>]? , <angular-color-stop-list>","container-condition":"not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]","container-name":"<custom-ident>","container-query":"not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contextual-alt-values":"[contextual|no-contextual]","contrast()":"contrast( [<number>|<percentage>]? )","coord-box":"content-box|padding-box|border-box|fill-box|stroke-box|view-box","corner-shape-value":"round|scoop|bevel|notch|square|squircle|<superellipse()>","cos()":"cos( <calc-sum> )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier()":"cubic-bezier( [<number [0,1]> , <number>]#{2} )","cubic-bezier-easing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","cursor-predefined":"auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing","custom-color-space":"<dashed-ident>","custom-params":"<dashed-ident> [<number>|<percentage>|none]+",dasharray:"[[<length-percentage>|<number>]+]#","dashndashdigit-ident":"<ident-token>","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonHighlight|ButtonShadow|CaptionText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( [<color>?&&<length>{2,3}] )","dynamic-range-limit-mix()":"dynamic-range-limit-mix( [<'dynamic-range-limit'>&&<percentage [0,100]>]#{2,} )","easing-function":"<linear-easing-function>|<cubic-bezier-easing-function>|<step-easing-function>","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( <radial-size>? [at <position>]? )","env()":"env( <custom-ident> , <declaration-value>? )","exp()":"exp( <calc-sum> )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-value-list":"[<filter-function>|<url>]+","final-bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<visual-box>||<visual-box>||<'background-color'>","fit-content()":"fit-content( <length-percentage [0,\u221E]> )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css2":"normal|small-caps","font-weight-absolute":"normal|bold|<number [1,1000]>","font-width-css3":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded","form-control-identifier":"select","frequency-percentage":"<frequency>|<percentage>","generic-complete":"serif|sans-serif|system-ui|cursive|fantasy|math|monospace","general-enclosed":"[<function-token> <any-value>? )]|[( <any-value>? )]","generic-family":"<generic-script-specific>|<generic-complete>|<generic-incomplete>|<-non-standard-generic-family>","generic-incomplete":"ui-serif|ui-sans-serif|ui-monospace|ui-rounded","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( [<number>|<percentage>]? )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )|hsl( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","hsla()":"hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )|hsla( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )",hue:"<number>|<angle>","hue-interpolation-method":"[shorter|longer|increasing|decreasing] hue","hue-rotate()":"hue-rotate( [<angle>|<zero>]? )","hwb()":"hwb( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","hypot()":"hypot( <calc-sum># )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length-percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( [<number>|<percentage>]? )","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-selector":"from|to|<percentage [0,100]>|<timeline-range-name> <percentage>","keyframes-name":"<custom-ident>|<string>","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","light-dark()":"light-dark( <color> , <color> )","line-name-list":"[<line-names>|<name-repeat>]+","line-names":"'[' <custom-ident>* ']'","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear()":"linear( [<number>&&<percentage>{0,2}]# )","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-easing-function":"linear|<linear()>","linear-gradient()":"linear-gradient( [<linear-gradient-syntax>] )","linear-gradient-syntax":"[[<angle>|<zero>|to <side-or-corner>]||<color-interpolation-method>]? , <color-stop-list>","log()":"log( <calc-sum> , <calc-sum>? )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length-percentage>|min-content|max-content|auto] , [<length-percentage>|<flex>|min-content|max-content|auto] )","mod()":"mod( <calc-sum> , <calc-sum> )","n-dimension":"<dimension-token>","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen","namespace-prefix":"<ident>","ndash-dimension":"<dimension-token>","ndashdigit-dimension":"<dimension-token>","ndashdigit-ident":"<ident-token>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]","offset-path":"<ray()>|<url>|<basic-shape>","oklab()":"oklab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","oklch()":"oklch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )","opacity()":"opacity( [<number>|<percentage>]? )","opacity-value":"<number>|<percentage>","outline-line-style":"none|dotted|dashed|solid|double|groove|ridge|inset|outset","outline-radius":"<length>|<percentage>","overflow-position":"unsafe|safe","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-selector-list":"[<page-selector>#]?","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke","paint()":"paint( <ident> , <declaration-value>? )","paint-box":"<visual-box>|fill-box|stroke-box","palette-identifier":"<dashed-ident>","palette-mix()":"palette-mix( <color-interpolation-method> , [[normal|light|dark|<palette-identifier>|<palette-mix()>]&&<percentage [0,100]>?]#{2} )","path()":"path( <'fill-rule'>? , <string> )","perspective()":"perspective( [<length [0,\u221E]>|none] )","polar-color-space":"hsl|hwb|lch|oklch","polygon()":"polygon( <'fill-rule'>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","position-area":"[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|center|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|center|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]","pow()":"pow( <calc-sum> , <calc-sum> )","predefined-rgb":"srgb|srgb-linear|display-p3|display-p3-linear|a98-rgb|prophoto-rgb|rec2020","predefined-rgb-params":"<predefined-rgb> [<number>|<percentage>|none]{3}","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>|<legacy-pseudo-element-selector>","pseudo-page":": [left|right|first|blank]","query-in-parens":"( <container-condition> )|( <size-feature> )|style( <style-query> )|<general-enclosed>",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-extent":"closest-corner|closest-side|farthest-corner|farthest-side","radial-gradient()":"radial-gradient( [<radial-gradient-syntax>] )","radial-gradient-syntax":"[[[<radial-shape>||<radial-size>]? [at <position>]?]||<color-interpolation-method>]? , <color-stop-list>","radial-shape":"circle|ellipse","radial-size":"<radial-extent>|<length [0,\u221E]>|<length-percentage [0,\u221E]>{2}",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","ray()":"ray( <angle>&&<ray-size>?&&contain?&&[at <position>]? )","ray-size":"closest-side|closest-corner|farthest-side|farthest-corner|sides","rect()":"rect( [<length-percentage>|auto]{4} [round <'border-radius'>]? )","rectangular-color-space":"srgb|srgb-linear|display-p3|display-p3-linear|a98-rgb|prophoto-rgb|rec2020|lab|oklab|xyz|xyz-d50|xyz-d65","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","rem()":"rem( <calc-sum> , <calc-sum> )","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [<conic-gradient-syntax>] )","repeating-linear-gradient()":"repeating-linear-gradient( [<linear-gradient-syntax>] )","repeating-radial-gradient()":"repeating-radial-gradient( [<radial-gradient-syntax>] )","reversed-counter-name":"reversed( <counter-name> )","rgb()":"rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )|rgb( [<number>|<percentage>|none]{3} [/ [<alpha-value>|none]]? )","rgba()":"rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )|rgba( [<number>|<percentage>|none]{3} [/ [<alpha-value>|none]]? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","round()":"round( <rounding-strategy>? , <calc-sum> , <calc-sum> )","rounding-strategy":"nearest|up|down|to-zero","saturate()":"saturate( [<number>|<percentage>]? )","scale()":"scale( [<number>|<percentage>]#{1,2} )","scale3d()":"scale3d( [<number>|<percentage>]#{3} )","scaleX()":"scaleX( [<number>|<percentage>] )","scaleY()":"scaleY( [<number>|<percentage>] )","scaleZ()":"scaleZ( [<number>|<percentage>] )","scope-end":"<forgiving-selector-list>","scope-start":"<forgiving-selector-list>","scroll()":"scroll( [<scroller>||<axis>]? )",scroller:"root|nearest|self","scroll-state-feature":"<media-query-list>","scroll-state-in-parens":"( <scroll-state-query> )|( <scroll-state-feature> )|<general-enclosed>","scroll-state-query":"not <scroll-state-in-parens>|<scroll-state-in-parens> [[and <scroll-state-in-parens>]*|[or <scroll-state-in-parens>]*]|<scroll-state-feature>","selector-list":"<complex-selector-list>","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","sepia()":"sepia( [<number>|<percentage>]? )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<visual-box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","sign()":"sign( <calc-sum> )","signed-integer":"<number-token>","signless-integer":"<number-token>","sin()":"sin( <calc-sum> )","single-animation":"<'animation-duration'>||<easing-function>||<'animation-delay'>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]||<single-animation-timeline>","single-animation-composition":"replace|add|accumulate","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<dashed-ident>|<scroll()>|<view()>","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>||<transition-behavior-value>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","size-feature":"<mf-plain>|<mf-boolean>|<mf-range>","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sqrt()":"sqrt( <calc-sum> )","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-easing-function":"step-start|step-end|<steps()>","steps()":"steps( <integer> , <step-position>? )","style-feature":"<declaration>","style-in-parens":"( <style-condition> )|( <style-feature> )|<general-enclosed>","style-query":"<style-condition>|<style-feature>","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","superellipse()":"superellipse( [<number>|infinity|-infinity] )","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-decl":"( <declaration> )","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>","symbols()":"symbols( <symbols-type>? [<string>|<image>]+ )","symbols-type":"cyclic|numeric|alphabetic|symbolic|fixed","system-color":"AccentColor|AccentColorText|ActiveText|ButtonBorder|ButtonFace|ButtonText|Canvas|CanvasText|Field|FieldText|GrayText|Highlight|HighlightText|LinkText|Mark|MarkText|SelectedItem|SelectedItemText|VisitedText","system-family-name":"caption|icon|menu|message-box|small-caption|status-bar","tan()":"tan( <calc-sum> )",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","text-edge":"[text|cap|ex|ideographic|ideographic-ink] [text|alphabetic|ideographic|ideographic-ink]?","time-percentage":"<time>|<percentage>","timeline-range-name":"cover|contain|entry|exit|entry-crossing|exit-crossing","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( <length-percentage> )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","transition-behavior-value":"normal|allow-discrete","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","try-size":"most-width|most-height|most-block-size|most-inline-size","try-tactic":"flip-block||flip-inline||flip-start","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","view()":"view( [<axis>||<'view-timeline-inset'>]? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","xywh()":"xywh( <length-percentage>{2} <length-percentage [0,\u221E]>{2} [round <'border-radius'>]? )",xyz:"xyz|xyz-d50|xyz-d65","xyz-params":"<xyz-space> [<number>|<percentage>|none]{3}","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"overlay|-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-size":"intrinsic|min-intrinsic|-webkit-fill-available|-webkit-fit-content|-webkit-min-content|-webkit-max-content|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>",autospace:"no-autospace|[ideograph-alpha||ideograph-numeric||punctuation]||[insert|replace]",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral","generic-script-specific":"generic( kai )|generic( fangsong )|generic( nastaliq )","-non-standard-generic-family":"-apple-system|BlinkMacSystemFont","intrinsic-size-keyword":"min-content|max-content|fit-content",left:"<length>|auto","device-cmyk()":"<legacy-device-cmyk-syntax>|<modern-device-cmyk-syntax>","legacy-device-cmyk-syntax":"device-cmyk( <number>#{4} )","modern-device-cmyk-syntax":"device-cmyk( <cmyk-component>{4} [/ [<alpha-value>|none]]? )","cmyk-component":"<number>|<percentage>|none","color-space":"<rectangular-color-space>|<polar-color-space>|<custom-color-space>",right:"<length>|auto","forgiving-selector-list":"<complex-real-selector-list>","forgiving-relative-selector-list":"<relative-real-selector-list>","complex-real-selector-list":"<complex-real-selector>#","simple-selector-list":"<simple-selector>#","relative-real-selector-list":"<relative-real-selector>#","complex-selector-unit":"[<compound-selector>? <pseudo-compound-selector>*]!","complex-real-selector":"<compound-selector> [<combinator>? <compound-selector>]*","relative-real-selector":"<combinator>? <complex-real-selector>","pseudo-compound-selector":"<pseudo-element-selector> <pseudo-class-selector>*","simple-selector":"<type-selector>|<subclass-selector>","legacy-pseudo-element-selector":"':' [before|after|first-line|first-letter]","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","xyz-space":"xyz|xyz-d50|xyz-d65","style-condition":"not <style-in-parens>|<style-in-parens> [[and <style-in-parens>]*|[or <style-in-parens>]*]","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box","inset-area":"[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]",syntax:"'*'|<syntax-component> [<syntax-combinator> <syntax-component>]*|<syntax-string>","syntax-component":"<syntax-single-component> <syntax-multiplier>?|'<' transform-list '>'","syntax-single-component":"'<' <syntax-type-name> '>'|<ident>","syntax-type-name":"angle|color|custom-ident|image|integer|length|length-percentage|number|percentage|resolution|string|time|url|transform-function","syntax-combinator":"'|'","syntax-multiplier":"'#'|'+'","syntax-string":"<string>"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-content-zooming":"none|zoom","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<visual-box>|border|padding|content|text]||[<visual-box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<coord-box>|no-clip|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<coord-box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","-webkit-user-select":"auto|none|text|all","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]|anchor-center","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>|anchor-center","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical",all:"initial|inherit|unset|revert|revert-layer","anchor-name":"none|<dashed-ident>#","anchor-scope":"none|all|<dashed-ident>#",animation:"<single-animation>#","animation-composition":"<single-animation-composition>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"[auto|<time [0s,\u221E]>]#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-range":"[<'animation-range-start'> <'animation-range-end'>?]#","animation-range-end":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","animation-range-start":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","animation-timeline":"<single-animation-timeline>#","animation-timing-function":"<easing-function>#","animation-trigger":"[none|[<dashed-ident> <animation-action>+]+]#",appearance:"none|auto|<compat-auto>|<compat-special>","aspect-ratio":"auto||<ratio>","backdrop-filter":"none|<filter-value-list>","backface-visibility":"visible|hidden",background:"<bg-layer>#? , <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<visual-box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","baseline-shift":"baseline|sub|super|<svg-length>","baseline-source":"auto|first|last","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-block-start'>","border-block-color":"<'border-top-color'>{1,2}","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-block-style":"<'border-top-style'>{1,2}","border-block-width":"<'border-top-width'>{1,2}","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage [0,\u221E]>{1,2}","border-bottom-right-radius":"<length-percentage [0,\u221E]>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"separate|collapse","border-color":"<color>{1,4}","border-end-end-radius":"<'border-top-left-radius'>","border-end-start-radius":"<'border-top-left-radius'>","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length [0,\u221E]>|<number [0,\u221E]>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"[<number [0,\u221E]>|<percentage [0,\u221E]>]{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage [0,\u221E]>|<number [0,\u221E]>|auto]{1,4}","border-inline":"<'border-block-start'>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-inline-style":"<'border-top-style'>{1,2}","border-inline-width":"<'border-top-width'>{1,2}","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage [0,\u221E]>{1,4} [/ <length-percentage [0,\u221E]>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length>{1,2}","border-start-end-radius":"<'border-top-left-radius'>","border-start-start-radius":"<'border-top-left-radius'>","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage [0,\u221E]>{1,2}","border-top-right-radius":"<length-percentage [0,\u221E]>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"auto|<length-percentage>|<anchor()>|<anchor-size()>","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom",caret:"<'caret-color'>||<'caret-animation'>||<'caret-shape'>","caret-animation":"auto|manual","caret-color":"auto|<color>","caret-shape":"auto|bar|block|underscore",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none","clip-rule":"nonzero|evenodd",color:"<color>","color-interpolation-filters":"auto|sRGB|linearRGB","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance","column-gap":"normal|<length-percentage>","column-height":"auto|<length [0,\u221E]>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"auto|<length [0,\u221E]>","column-wrap":"auto|nowrap|wrap",columns:"[<'column-width'>||<'column-count'>] [/ <'column-height'>]?",contain:"none|strict|content|[[size||inline-size]||layout||style||paint]","contain-intrinsic-block-size":"auto? [none|<length>]","contain-intrinsic-height":"auto? [none|<length>]","contain-intrinsic-inline-size":"auto? [none|<length>]","contain-intrinsic-size":"[auto? [none|<length>]]{1,2}","contain-intrinsic-width":"auto? [none|<length>]",container:"<'container-name'> [/ <'container-type'>]?","container-name":"none|<custom-ident>+","container-type":"normal||[size|inline-size]",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>|<attr()>]+]?","content-visibility":"visible|auto|hidden","corner-block-end-shape":"<corner-shape-value>{1,2}","corner-block-start-shape":"<corner-shape-value>{1,2}","corner-bottom-shape":"<corner-shape-value>{1,2}","corner-bottom-left-shape":"<corner-shape-value>","corner-bottom-right-shape":"<corner-shape-value>","corner-end-end-shape":"<corner-shape-value>","corner-end-start-shape":"<corner-shape-value>","corner-inline-end-shape":"<corner-shape-value>{1,2}","corner-inline-start-shape":"<corner-shape-value>{1,2}","corner-left-shape":"<corner-shape-value>{1,2}","corner-right-shape":"<corner-shape-value>{1,2}","corner-shape":"<corner-shape-value>{1,4}","corner-start-start-shape":"<corner-shape-value>","corner-start-end-shape":"<corner-shape-value>","corner-top-shape":"<corner-shape-value>{1,2}","corner-top-left-shape":"<corner-shape-value>","corner-top-right-shape":"<corner-shape-value>","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",cx:"<length>|<percentage>",cy:"<length>|<percentage>",d:"none|path( <string> )",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge","dynamic-range-limit":"standard|no-limit|constrained|<dynamic-range-limit-mix()>","empty-cells":"show|hide","field-sizing":"content|fixed",fill:"<paint>","fill-opacity":"<number-zero-one>|<percentage>","fill-rule":"nonzero|evenodd",filter:"none|<filter-value-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end","flood-color":"<color>","flood-opacity":"<'opacity'>",font:"[[<'font-style'>||<font-variant-css2>||<'font-weight'>||<font-width-css3>]? <'font-size'> [/ <'line-height'>]? <'font-family'>#]|<system-family-name>|<-non-standard-font>","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-palette":"normal|light|dark|<palette-identifier>|<palette-mix()>","font-size":"<absolute-size>|<relative-size>|<length-percentage [0,\u221E]>|math","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps||position]","font-synthesis-position":"auto|none","font-synthesis-small-caps":"auto|none","font-synthesis-style":"auto|none","font-synthesis-weight":"auto|none","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-emoji":"normal|text|emoji|unicode","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-variation-settings":"normal|[<string> <number>]#","font-weight":"<font-weight-absolute>|bolder|lighter","font-width":"normal|<percentage [0,\u221E]>|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded","forced-color-adjust":"auto|none|preserve-parent-color",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","hyphenate-character":"auto|<string>","hyphenate-limit-chars":"[auto|<integer>]{1,3}",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|smooth|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>","interpolate-size":"numeric-only|allow-keywords",isolation:"auto|isolate",interactivity:"auto|inert","interest-delay":"<'interest-delay-start'>{1,2}","interest-delay-end":"normal|<time>","interest-delay-start":"normal|<time>","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]|anchor-center","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|anchor-center","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"auto|<length-percentage>|<anchor()>|<anchor-size()>","letter-spacing":"normal|<length-percentage>","lighting-color":"<color>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"<'margin-top'>{1,4}","margin-block":"<'margin-top'>{1,2}","margin-block-end":"<'margin-top'>","margin-block-start":"<'margin-top'>","margin-bottom":"<length-percentage>|auto|<anchor-size()>","margin-inline":"<'margin-top'>{1,2}","margin-inline-end":"<'margin-top'>","margin-inline-start":"<'margin-top'>","margin-left":"<length-percentage>|auto|<anchor-size()>","margin-right":"<length-percentage>|auto|<anchor-size()>","margin-top":"<length-percentage>|auto|<anchor-size()>","margin-trim":"none|in-flow|all",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<coord-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<coord-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-depth":"auto-add|add( <integer> )|<integer>","math-shift":"normal|compact","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","min-block-size":"<'min-width'>","min-height":"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","min-inline-size":"<'min-width'>","min-width":"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","mix-blend-mode":"<blend-mode>|plus-darker|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>","object-view-box":"none|<basic-shape-rect>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|<offset-path>||<coord-box>","offset-position":"normal|auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<opacity-value>",order:"<integer>",orphans:"<integer>",outline:"<'outline-width'>||<'outline-style'>||<'outline-color'>","outline-color":"auto|<color>","outline-offset":"<length>","outline-style":"auto|<outline-line-style>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>","overflow-y":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>",overlay:"none|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"<'padding-top'>{1,4}","padding-block":"<'padding-top'>{1,2}","padding-block-end":"<'padding-top'>","padding-block-start":"<'padding-top'>","padding-bottom":"<length-percentage [0,\u221E]>","padding-inline":"<'padding-top'>{1,2}","padding-inline-end":"<'padding-top'>","padding-inline-start":"<'padding-top'>","padding-left":"<length-percentage [0,\u221E]>","padding-right":"<length-percentage [0,\u221E]>","padding-top":"<length-percentage [0,\u221E]>",page:"auto|<custom-ident>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky","position-anchor":"auto|none|<anchor-name>","position-area":"none|<position-area>","position-try":"<'position-try-order'>? <'position-try-fallbacks'>","position-try-fallbacks":"none|[[<dashed-ident>||<try-tactic>]|<'position-area'>]#","position-try-order":"normal|<try-size>","position-visibility":"always|[anchors-valid||anchors-visible||no-overflow]","print-color-adjust":"economy|exact",quotes:"none|auto|[<string> <string>]+",r:"<length>|<percentage>","reading-flow":"normal|source-order|flex-visual|flex-flow|grid-rows|grid-columns|grid-order","reading-order":"<integer>",resize:"none|both|horizontal|vertical|block|inline",right:"auto|<length-percentage>|<anchor()>|<anchor-size()>",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-overhang":"auto|none","ruby-position":"[alternate||[over|under]]|inter-character",rx:"<length>|<percentage>",ry:"<length>|<percentage>",scale:"none|[<number>|<percentage>]{1,3}","scroll-behavior":"auto|smooth","scroll-initial-target":"none|nearest","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-end":"<length>","scroll-margin-block-start":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-end":"<length>","scroll-margin-inline-start":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-marker-group":"none|before|after","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","scroll-target-group":"none|auto","scroll-timeline":"[<'scroll-timeline-name'> <'scroll-timeline-axis'>?]#","scroll-timeline-axis":"[block|inline|x|y]#","scroll-timeline-name":"[none|<dashed-ident>]#","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","shape-image-threshold":"<opacity-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]","stop-color":"<'color'>","stop-opacity":"<'opacity'>",stroke:"<paint>","stroke-color":"<color>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<'opacity'>","stroke-width":"<svg-length>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-anchor":"start|middle|end","text-autospace":"normal|<autospace>|auto","text-box":"normal|<'text-box-trim'>||<'text-box-edge'>","text-box-edge":"auto|<text-edge>","text-box-trim":"none|trim-start|trim-end|trim-both","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-inset":"<length>{1,2}|auto","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"auto|[over|under]&&[right|left]?","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-spacing-trim":"space-all|normal|space-first|trim-start","text-transform":"none|[capitalize|uppercase|lowercase]||full-width||full-size-kana|math-auto","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]","text-wrap":"<'text-wrap-mode'>||<'text-wrap-style'>","text-wrap-mode":"wrap|nowrap","text-wrap-style":"auto|balance|stable|pretty","timeline-scope":"none|<dashed-ident>#","timeline-trigger":"none|[<'timeline-trigger-name'> <'timeline-trigger-source'> <'timeline-trigger-range'> ['/' <'timeline-trigger-exit-range'>]?]#","timeline-trigger-name":"none|<dashed-ident>#","timeline-trigger-exit-range":"[<'timeline-trigger-exit-range-start'> <'timeline-trigger-exit-range-end'>?]#","timeline-trigger-exit-range-end":"[auto|normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-exit-range-start":"[auto|normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-range":"[<'timeline-trigger-range-start'> <'timeline-trigger-range-end'>?]#","timeline-trigger-range-end":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-range-start":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-source":"<single-animation-timeline>#",top:"auto|<length-percentage>|<anchor()>|<anchor-size()>","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-behavior":"<transition-behavior-value>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","trigger-scope":"none|all|<dashed-ident>#","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|all","vector-effect":"none|non-scaling-stroke|non-scaling-size|non-rotation|fixed-position","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>","view-timeline":"[<'view-timeline-name'> [<'view-timeline-axis'>||<'view-timeline-inset'>]?]#","view-timeline-axis":"[block|inline|x|y]#","view-timeline-inset":"[[auto|<length-percentage>]{1,2}]#","view-timeline-name":"[none|<dashed-ident>]#","view-transition-class":"none|<custom-ident>+","view-transition-name":"none|<custom-ident>|match-element",visibility:"visible|hidden|collapse","white-space":"normal|pre|pre-wrap|pre-line|<'white-space-collapse'>||<'text-wrap-mode'>","white-space-collapse":"collapse|preserve|preserve-breaks|preserve-spaces|break-spaces",widows:"<integer>",width:"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word|auto-phrase","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>",x:"<length>|<percentage>",y:"<length>|<percentage>","z-index":"auto|<integer>",zoom:"normal|reset|<number [0,\u221E]>||<percentage [0,\u221E]>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<visual-box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto",behavior:"<url>+",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong","position-try-options":"<'position-try-fallbacks'>",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong",speak:"auto|never|always","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]","white-space-trim":"none|discard-before||discard-after||discard-inner"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer [0,\u221E]>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer [0,\u221E]>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},container:{prelude:"[<container-name>]? <container-condition>",descriptors:null},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"auto|block|swap|fallback|optional","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-variation-settings":"normal|[<string> <number>]#","font-weight":"<font-weight-absolute>{1,2}","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},"font-palette-values":{prelude:"<dashed-ident>",descriptors:{"base-palette":"light|dark|<integer [0,\u221E]>","font-family":"<family-name>#","override-colors":"[<integer [0,\u221E]> <color>]#"}},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]","page-orientation":"upright|rotate-left|rotate-right",size:"<length [0,\u221E]>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},"position-try":{prelude:"<dashed-ident>",descriptors:{top:"<'top'>",left:"<'left'>",bottom:"<'bottom'>",right:"<'right'>","inset-block-start":"<'inset-block-start'>","inset-block-end":"<'inset-block-end'>","inset-inline-start":"<'inset-inline-start'>","inset-inline-end":"<'inset-inline-end'>","inset-block":"<'inset-block'>","inset-inline":"<'inset-inline'>",inset:"<'inset'>","margin-top":"<'margin-top'>","margin-left":"<'margin-left'>","margin-bottom":"<'margin-bottom'>","margin-right":"<'margin-right'>","margin-block-start":"<'margin-block-start'>","margin-block-end":"<'margin-block-end'>","margin-inline-start":"<'margin-inline-start'>","margin-inline-end":"<'margin-inline-end'>",margin:"<'margin'>","margin-block":"<'margin-block'>","margin-inline":"<'margin-inline'>",width:"<'width'>",height:"<'height'>","min-width":"<'min-width'>","min-height":"<'min-height'>","max-width":"<'max-width'>","max-height":"<'max-height'>","block-size":"<'block-size'>","inline-size":"<'inline-size'>","min-block-size":"<'min-block-size'>","min-inline-size":"<'min-inline-size'>","max-block-size":"<'max-block-size'>","max-inline-size":"<'max-inline-size'>","align-self":"<'align-self'>|anchor-center","justify-self":"<'justify-self'>|anchor-center"}},property:{prelude:"<custom-property-name>",descriptors:{inherits:"true|false","initial-value":"<declaration-value>?",syntax:"<string>"}},scope:{prelude:"[( <scope-start> )]? [to ( <scope-end> )]?",descriptors:null},"starting-style":{prelude:null,descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},"view-transition":{prelude:null,descriptors:{navigation:"auto|none",types:"none|<custom-ident>+"}},"font-features-values":{prelude:"[<string>|<custom-ident>]+",descriptors:{"font-display":"auto|block|swap|fallback|optional"}}}}});var Wp={};Se(Wp,{generate:()=>bP,name:()=>xP,parse:()=>Hp,structure:()=>yP});function Wl(e,t){let n=this.tokenStart+e,r=this.charCodeAt(n);for((r===Hr||r===or)&&(t&&this.error("Number sign is not allowed"),n++);n<this.tokenEnd;n++)Wt(this.charCodeAt(n))||this.error("Integer is expected",n)}function Ni(e){return Wl.call(this,0,e)}function Po(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let n="";switch(t){case Hl:n="N is expected";break;case or:n="HyphenMinus is expected";break}this.error(n,this.tokenStart+e)}}function jp(){let e=0,t=0,n=this.tokenType;for(;n===13||n===25;)n=this.lookupType(++e);if(n!==10)if(this.isDelim(Hr,e)||this.isDelim(or,e)){t=this.isDelim(Hr,e)?Hr:or;do n=this.lookupType(++e);while(n===13||n===25);n!==10&&(this.skip(e),Ni.call(this,ni))}else return null;return e>0&&this.skip(e),t===0&&(n=this.charCodeAt(this.tokenStart),n!==Hr&&n!==or&&this.error("Number sign is expected")),Ni.call(this,t!==0),t===or?"-"+this.consume(10):this.consume(10)}function Hp(){let e=this.tokenStart,t=null,n=null;if(this.tokenType===10)Ni.call(this,hP),n=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,or))switch(t="-1",Po.call(this,1,Hl),this.tokenEnd-this.tokenStart){case 2:this.next(),n=jp.call(this);break;case 3:Po.call(this,2,or),this.next(),this.skipSC(),Ni.call(this,ni),n="-"+this.consume(10);break;default:Po.call(this,2,or),Wl.call(this,3,ni),this.next(),n=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(Hr)&&this.lookupType(1)===1){let r=0;switch(t="1",this.isDelim(Hr)&&(r=1,this.next()),Po.call(this,0,Hl),this.tokenEnd-this.tokenStart){case 1:this.next(),n=jp.call(this);break;case 2:Po.call(this,1,or),this.next(),this.skipSC(),Ni.call(this,ni),n="-"+this.consume(10);break;default:Po.call(this,1,or),Wl.call(this,2,ni),this.next(),n=this.substrToCursor(e+r+1)}}else if(this.tokenType===12){let r=this.charCodeAt(this.tokenStart),o=r===Hr||r===or,i=this.tokenStart+o;for(;i<this.tokenEnd&&Wt(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Po.call(this,i-this.tokenStart,Hl),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),n=jp.call(this)):(Po.call(this,i-this.tokenStart+1,or),i+2===this.tokenEnd?(this.next(),this.skipSC(),Ni.call(this,ni),n="-"+this.consume(10)):(Wl.call(this,i-this.tokenStart+2,ni),this.next(),n=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===Hr&&(t=t.substr(1)),n!==null&&n.charCodeAt(0)===Hr&&(n=n.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:n}}function bP(e){if(e.a){let t=e.a==="+1"&&"n"||e.a==="1"&&"n"||e.a==="-1"&&"-n"||e.a+"n";if(e.b){let n=e.b[0]==="-"||e.b[0]==="+"?e.b:"+"+e.b;this.tokenize(t+n)}else this.tokenize(t)}else this.tokenize(e.b)}var Hr,or,Hl,ni,hP,xP,yP,Vp=U(()=>{"use strict";dr();Hr=43,or=45,Hl=110,ni=!0,hP=!1;xP="AnPlusB",yP={a:[String,null],b:[String,null]}});var qp={};Se(qp,{generate:()=>CP,name:()=>wP,parse:()=>Gp,structure:()=>kP,walkContext:()=>vP});function X0(){return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function SP(){for(let e=1,t;t=this.lookupType(e);e++){if(t===24)return!0;if(t===23||t===3)return!1}return!1}function Gp(e=!1){let t=this.tokenStart,n,r,o=null,i=null;switch(this.eat(3),n=this.substrToCursor(t+1),r=n.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?o=this.parseWithFallback(this.AtrulePrelude.bind(this,n,e),X0):o=X0.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,r)&&typeof this.atrule[r].block=="function"?i=this.atrule[r].block.call(this,e):i=this.Block(SP.call(this));break}return{type:"Atrule",loc:this.getLocation(t,this.tokenStart),name:n,prelude:o,block:i}}function CP(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var wP,vP,kP,Yp=U(()=>{"use strict";wP="Atrule",vP="atrule",kP={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]}});var Xp={};Se(Xp,{generate:()=>EP,name:()=>TP,parse:()=>Kp,structure:()=>FP,walkContext:()=>IP});function Kp(e){let t=null;return e!==null&&(e=e.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,e)&&typeof this.atrule[e].prelude=="function"?t=this.atrule[e].prelude.call(this):t=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}}function EP(e){this.children(e)}var TP,IP,FP,Qp=U(()=>{"use strict";TP="AtrulePrelude",IP="atrulePrelude",FP={children:[[]]}});var ed={};Se(ed,{generate:()=>zP,name:()=>DP,parse:()=>Zp,structure:()=>RP});function MP(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(Q0)?(t=!0,this.next()):this.isDelim(Jp)||this.eat(1),this.isDelim(Jp)?this.charCodeAt(this.tokenStart+1)!==Vl?(this.next(),this.eat(1)):t&&this.error("Identifier is expected",this.tokenEnd):t&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function BP(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==Vl&&t!==LP&&t!==PP&&t!==AP&&t!==Q0&&t!==Jp&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==Vl&&(this.isDelim(Vl)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}function Zp(){let e=this.tokenStart,t,n=null,r=null,o=null;return this.eat(19),this.skipSC(),t=MP.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(n=BP.call(this),this.skipSC(),r=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(e,this.tokenStart),name:t,matcher:n,value:r,flags:o}}function zP(e){this.token(9,"["),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,"]")}var AP,Q0,Vl,PP,Jp,LP,DP,RP,td=U(()=>{"use strict";AP=36,Q0=42,Vl=61,PP=94,Jp=124,LP=126;DP="AttributeSelector",RP={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]}});var rd={};Se(rd,{generate:()=>jP,name:()=>_P,parse:()=>nd,structure:()=>UP,walkContext:()=>$P});function eS(){return this.Raw(null,!0)}function J0(){return this.parseWithFallback(this.Rule,eS)}function Z0(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function OP(){if(this.tokenType===17)return Z0.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,Z0);return this.tokenType===17&&this.next(),e}function nd(e){let t=e?OP:J0,n=this.tokenStart,r=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:r.push(this.parseWithFallback(this.Atrule.bind(this,e),eS));break;default:e&&this.isDelim(NP)?r.push(J0.call(this)):r.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(n,this.tokenStart),children:r}}function jP(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var NP,_P,$P,UP,od=U(()=>{"use strict";NP=38;_P="Block",$P="block",UP={children:[["Atrule","Rule","Declaration"]]}});var sd={};Se(sd,{generate:()=>VP,name:()=>HP,parse:()=>id,structure:()=>WP});function id(e,t){let n=this.tokenStart,r=null;return this.eat(19),r=e.call(this,t),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(n,this.tokenStart),children:r}}function VP(e){this.token(9,"["),this.children(e),this.token(9,"]")}var HP,WP,ad=U(()=>{"use strict";HP="Brackets",WP={children:[[]]}});var cd={};Se(cd,{generate:()=>YP,name:()=>GP,parse:()=>ld,structure:()=>qP});function ld(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function YP(){this.token(15,"-->")}var GP,qP,ud=U(()=>{"use strict";GP="CDC",qP=[]});var dd={};Se(dd,{generate:()=>QP,name:()=>KP,parse:()=>pd,structure:()=>XP});function pd(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function QP(){this.token(14,"<!--")}var KP,XP,gd=U(()=>{"use strict";KP="CDO",XP=[]});var md={};Se(md,{generate:()=>tL,name:()=>ZP,parse:()=>fd,structure:()=>eL});function fd(){return this.eatDelim(JP),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function tL(e){this.token(9,"."),this.token(1,e.name)}var JP,ZP,eL,hd=U(()=>{"use strict";JP=46,ZP="ClassSelector",eL={name:String}});var yd={};Se(yd,{generate:()=>aL,name:()=>iL,parse:()=>xd,structure:()=>sL});function xd(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case rL:case nL:case oL:this.next();break;case tS:this.next(),this.eatIdent("deep"),this.eatDelim(tS);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function aL(e){this.tokenize(e.name)}var nL,tS,rL,oL,iL,sL,bd=U(()=>{"use strict";nL=43,tS=47,rL=62,oL=126,iL="Combinator",sL={name:String}});var wd={};Se(wd,{generate:()=>dL,name:()=>uL,parse:()=>Sd,structure:()=>pL});function Sd(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===lL&&this.charCodeAt(t-1)===cL&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function dL(e){this.token(25,"/*"+e.value+"*/")}var lL,cL,uL,pL,vd=U(()=>{"use strict";lL=42,cL=47,uL="Comment",pL={value:String}});var Cd={};Se(Cd,{generate:()=>xL,name:()=>fL,parse:()=>kd,structure:()=>mL});function nS(e){return this.lookupTypeNonSC(1)===1&&gL.has(this.lookupTypeNonSC(2))?this.Feature(e):this.FeatureRange(e)}function kd(e="media"){let t=this.createList();e:for(;!this.eof;)switch(this.tokenType){case 25:case 13:this.next();continue;case 1:t.push(this.Identifier());break;case 21:{let n=this.parseWithFallback(()=>hL[e].call(this,e),()=>null);n||(n=this.parseWithFallback(()=>{this.eat(21);let r=this.Condition(e);return this.eat(22),r},()=>this.GeneralEnclosed(e))),t.push(n);break}case 2:{let n=this.parseWithFallback(()=>this.FeatureFunction(e),()=>null);n||(n=this.GeneralEnclosed(e)),t.push(n);break}default:break e}return t.isEmpty&&this.error("Condition is expected"),{type:"Condition",loc:this.getLocationFromList(t),kind:e,children:t}}function xL(e){e.children.forEach(t=>{t.type==="Condition"?(this.token(21,"("),this.node(t),this.token(22,")")):this.node(t)})}var gL,fL,mL,hL,Td=U(()=>{"use strict";gL=new Set([16,22,0]),fL="Condition",mL={kind:String,children:[["Identifier","Feature","FeatureFunction","FeatureRange","SupportsDeclaration"]]};hL={media:nS,container:nS,supports(){return this.SupportsDeclaration()}}});var Fd={};Se(Fd,{generate:()=>AL,name:()=>IL,parse:()=>Id,structure:()=>EL,walkContext:()=>FL});function kL(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!0)}function CL(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!1)}function TL(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(oS)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}function Id(){let e=this.tokenStart,t=this.tokenIndex,n=PL.call(this),r=Ll(n),o=r?this.parseCustomProperty:this.parseValue,i=r?CL:kL,s=!1,a;this.skipSC(),this.eat(16);let u=this.tokenIndex;if(r||this.skipSC(),o?a=this.parseWithFallback(TL,i):a=i.call(this,this.tokenIndex),r&&a.type==="Value"&&a.children.isEmpty){for(let c=u-this.tokenIndex;c<=0;c++)if(this.lookupType(c)===13){a.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(oS)&&(s=LL.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(t)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(e,this.tokenStart),important:s,property:n,value:a}}function AL(e){this.token(1,e.property),this.token(16,":"),this.node(e.value),e.important&&(this.token(9,"!"),this.token(1,e.important===!0?"important":e.important))}function PL(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case wL:case bL:case vL:case yL:case SL:this.next();break;case rS:this.next(),this.isDelim(rS)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function LL(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var oS,yL,bL,SL,wL,vL,rS,IL,FL,EL,Ed=U(()=>{"use strict";Ml();oS=33,yL=35,bL=36,SL=38,wL=42,vL=43,rS=47;IL="Declaration",FL="declaration",EL={important:[Boolean,String],property:String,value:["Value","Raw"]}});var Ld={};Se(Ld,{generate:()=>RL,name:()=>BL,parse:()=>Pd,structure:()=>DL});function Ad(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function Pd(){let e=this.createList();for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;case 3:e.push(this.parseWithFallback(this.Atrule.bind(this,!0),Ad));break;default:this.isDelim(ML)?e.push(this.parseWithFallback(this.Rule,Ad)):e.push(this.parseWithFallback(this.Declaration,Ad))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function RL(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var ML,BL,DL,Md=U(()=>{"use strict";ML=38;BL="DeclarationList",DL={children:[["Declaration","Atrule","Rule"]]}});var Dd={};Se(Dd,{generate:()=>OL,name:()=>zL,parse:()=>Bd,structure:()=>NL});function Bd(){let e=this.tokenStart,t=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(e,this.tokenStart),value:t,unit:this.substring(e+t.length,this.tokenStart)}}function OL(e){this.token(12,e.value+e.unit)}var zL,NL,Rd=U(()=>{"use strict";zL="Dimension",NL={value:String,unit:String}});var Nd={};Se(Nd,{generate:()=>jL,name:()=>$L,parse:()=>zd,structure:()=>UL});function zd(e){let t=this.tokenStart,n,r=null;if(this.eat(21),this.skipSC(),n=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?r=this.Ratio():r=this.Number();break;case 12:r=this.Dimension();break;case 1:r=this.Identifier();break;case 2:r=this.parseWithFallback(()=>{let o=this.Function(this.readSequence,this.scope.Value);return this.skipSC(),this.isDelim(_L)&&this.error(),o},()=>this.Ratio());break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eof||this.eat(22),{type:"Feature",loc:this.getLocation(t,this.tokenStart),kind:e,name:n,value:r}}function jL(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var _L,$L,UL,Od=U(()=>{"use strict";_L=47,$L="Feature",UL={kind:String,name:String,value:["Identifier","Number","Dimension","Ratio","Function",null]}});var $d={};Se($d,{generate:()=>GL,name:()=>HL,parse:()=>_d,structure:()=>WL});function VL(e,t){let r=(this.features[e]||{})[t];return typeof r!="function"&&this.error(`Unknown feature ${t}()`),r}function _d(e="unknown"){let t=this.tokenStart,n=this.consumeFunctionName(),r=VL.call(this,e,n.toLowerCase());this.skipSC();let o=this.parseWithFallback(()=>{let i=this.tokenIndex,s=r.call(this);return this.eof===!1&&this.isBalanceEdge(i)===!1&&this.error(),s},()=>this.Raw(null,!1));return this.eof||this.eat(22),{type:"FeatureFunction",loc:this.getLocation(t,this.tokenStart),kind:e,feature:n,value:o}}function GL(e){this.token(2,e.feature+"("),this.node(e.value),this.token(22,")")}var HL,WL,Ud=U(()=>{"use strict";HL="FeatureFunction",WL={kind:String,feature:String,value:["Declaration","Selector"]}});var Wd={};Se(Wd,{generate:()=>QL,name:()=>KL,parse:()=>Hd,structure:()=>XL});function jd(){switch(this.skipSC(),this.tokenType){case 10:return this.isDelim(iS,this.lookupOffsetNonSC(1))?this.Ratio():this.Number();case 12:return this.Dimension();case 1:return this.Identifier();case 2:return this.parseWithFallback(()=>{let e=this.Function(this.readSequence,this.scope.Value);return this.skipSC(),this.isDelim(iS)&&this.error(),e},()=>this.Ratio());default:this.error("Number, dimension, ratio or identifier is expected")}}function aS(e){if(this.skipSC(),this.isDelim(qL)||this.isDelim(YL)){let t=this.source[this.tokenStart];return this.next(),this.isDelim(sS)?(this.next(),t+"="):t}if(this.isDelim(sS))return"=";this.error(`Expected ${e?'":", ':""}"<", ">", "=" or ")"`)}function Hd(e="unknown"){let t=this.tokenStart;this.skipSC(),this.eat(21);let n=jd.call(this),r=aS.call(this,n.type==="Identifier"),o=jd.call(this),i=null,s=null;return this.lookupNonWSType(0)!==22&&(i=aS.call(this),s=jd.call(this)),this.skipSC(),this.eat(22),{type:"FeatureRange",loc:this.getLocation(t,this.tokenStart),kind:e,left:n,leftComparison:r,middle:o,rightComparison:i,right:s}}function QL(e){this.token(21,"("),this.node(e.left),this.tokenize(e.leftComparison),this.node(e.middle),e.right&&(this.tokenize(e.rightComparison),this.node(e.right)),this.token(22,")")}var iS,qL,sS,YL,KL,XL,Vd=U(()=>{"use strict";iS=47,qL=60,sS=61,YL=62,KL="FeatureRange",XL={kind:String,left:["Identifier","Number","Dimension","Ratio","Function"],leftComparison:String,middle:["Identifier","Number","Dimension","Ratio","Function"],rightComparison:[String,null],right:["Identifier","Number","Dimension","Ratio","Function",null]}});var qd={};Se(qd,{generate:()=>tM,name:()=>JL,parse:()=>Gd,structure:()=>eM,walkContext:()=>ZL});function Gd(e,t){let n=this.tokenStart,r=this.consumeFunctionName(),o=r.toLowerCase(),i;return i=t.hasOwnProperty(o)?t[o].call(this,t):e.call(this,t),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(n,this.tokenStart),name:r,children:i}}function tM(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var JL,ZL,eM,Yd=U(()=>{"use strict";JL="Function",ZL="function",eM={name:String,children:[[]]}});var Xd={};Se(Xd,{generate:()=>oM,name:()=>nM,parse:()=>Kd,structure:()=>rM});function Kd(e){let t=this.tokenStart,n=null;this.tokenType===2?n=this.consumeFunctionName():this.eat(21);let r=this.parseWithFallback(()=>{let o=this.tokenIndex,i=this.readSequence(this.scope.Value);return this.eof===!1&&this.isBalanceEdge(o)===!1&&this.error(),i},()=>this.createSingleNodeList(this.Raw(null,!1)));return this.eof||this.eat(22),{type:"GeneralEnclosed",loc:this.getLocation(t,this.tokenStart),kind:e,function:n,children:r}}function oM(e){e.function?this.token(2,e.function+"("):this.token(21,"("),this.children(e),this.token(22,")")}var nM,rM,Qd=U(()=>{"use strict";nM="GeneralEnclosed",rM={kind:String,function:[String,null],children:[[]]}});var Zd={};Se(Zd,{generate:()=>lM,name:()=>sM,parse:()=>Jd,structure:()=>aM,xxx:()=>iM});function Jd(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function lM(e){this.token(4,"#"+e.value)}var iM,sM,aM,eg=U(()=>{"use strict";iM="XXX",sM="Hash",aM={value:String}});var ng={};Se(ng,{generate:()=>pM,name:()=>cM,parse:()=>tg,structure:()=>uM});function tg(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function pM(e){this.token(1,e.name)}var cM,uM,rg=U(()=>{"use strict";cM="Identifier",uM={name:String}});var ig={};Se(ig,{generate:()=>fM,name:()=>dM,parse:()=>og,structure:()=>gM});function og(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function fM(e){this.token(9,"#"+e.name)}var dM,gM,sg=U(()=>{"use strict";dM="IdSelector",gM={name:String}});var lg={};Se(lg,{generate:()=>yM,name:()=>hM,parse:()=>ag,structure:()=>xM});function ag(){let e=this.tokenStart,t=this.consume(1);for(;this.isDelim(mM);)this.eat(9),t+="."+this.consume(1);return{type:"Layer",loc:this.getLocation(e,this.tokenStart),name:t}}function yM(e){this.tokenize(e.name)}var mM,hM,xM,cg=U(()=>{"use strict";mM=46,hM="Layer",xM={name:String}});var pg={};Se(pg,{generate:()=>wM,name:()=>bM,parse:()=>ug,structure:()=>SM});function ug(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.Layer()),this.lookupTypeNonSC(0)===18);)this.skipSC(),this.next(),this.skipSC();return{type:"LayerList",loc:this.getLocationFromList(e),children:e}}function wM(e){this.children(e,()=>this.token(18,","))}var bM,SM,dg=U(()=>{"use strict";bM="LayerList",SM={children:[["Layer"]]}});var fg={};Se(fg,{generate:()=>CM,name:()=>vM,parse:()=>gg,structure:()=>kM});function gg(){let e=this.tokenStart,t=null,n=null,r=null;if(this.skipSC(),this.tokenType===1&&this.lookupTypeNonSC(1)!==21){let o=this.consume(1),i=o.toLowerCase();switch(i==="not"||i==="only"?(this.skipSC(),t=i,n=this.consume(1)):n=o,this.lookupTypeNonSC(0)){case 1:{this.skipSC(),this.eatIdent("and"),r=this.Condition("media");break}case 23:case 17:case 18:case 0:break;default:this.error("Identifier or parenthesis is expected")}}else switch(this.tokenType){case 1:case 21:case 2:{r=this.Condition("media");break}case 23:case 17:case 0:break;default:this.error("Identifier or parenthesis is expected")}return{type:"MediaQuery",loc:this.getLocation(e,this.tokenStart),modifier:t,mediaType:n,condition:r}}function CM(e){e.mediaType?(e.modifier&&this.token(1,e.modifier),this.token(1,e.mediaType),e.condition&&(this.token(1,"and"),this.node(e.condition))):e.condition&&this.node(e.condition)}var vM,kM,mg=U(()=>{"use strict";vM="MediaQuery",kM={modifier:[String,null],mediaType:[String,null],condition:["Condition",null]}});var xg={};Se(xg,{generate:()=>FM,name:()=>TM,parse:()=>hg,structure:()=>IM});function hg(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(e),children:e}}function FM(e){this.children(e,()=>this.token(18,","))}var TM,IM,yg=U(()=>{"use strict";TM="MediaQueryList",IM={children:[["MediaQuery"]]}});var Sg={};Se(Sg,{generate:()=>LM,name:()=>AM,parse:()=>bg,structure:()=>PM});function bg(){let e=this.tokenStart;return this.eatDelim(EM),{type:"NestingSelector",loc:this.getLocation(e,this.tokenStart)}}function LM(){this.token(9,"&")}var EM,AM,PM,wg=U(()=>{"use strict";EM=38,AM="NestingSelector",PM={}});var kg={};Se(kg,{generate:()=>DM,name:()=>MM,parse:()=>vg,structure:()=>BM});function vg(){this.skipSC();let e=this.tokenStart,t=e,n=null,r;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?r=this.Identifier():r=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),n=this.SelectorList(),t=this.tokenStart),{type:"Nth",loc:this.getLocation(e,t),nth:r,selector:n}}function DM(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var MM,BM,Cg=U(()=>{"use strict";MM="Nth",BM={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]}});var Ig={};Se(Ig,{generate:()=>NM,name:()=>RM,parse:()=>Tg,structure:()=>zM});function Tg(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function NM(e){this.token(10,e.value)}var RM,zM,Fg=U(()=>{"use strict";RM="Number",zM={value:String}});var Ag={};Se(Ag,{generate:()=>$M,name:()=>OM,parse:()=>Eg,structure:()=>_M});function Eg(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function $M(e){this.tokenize(e.value)}var OM,_M,Pg=U(()=>{"use strict";OM="Operator",_M={value:String}});var Mg={};Se(Mg,{generate:()=>HM,name:()=>UM,parse:()=>Lg,structure:()=>jM});function Lg(e,t){let n=this.tokenStart,r=null;return this.eat(21),r=e.call(this,t),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(n,this.tokenStart),children:r}}function HM(e){this.token(21,"("),this.children(e),this.token(22,")")}var UM,jM,Bg=U(()=>{"use strict";UM="Parentheses",jM={children:[[]]}});var Rg={};Se(Rg,{generate:()=>GM,name:()=>WM,parse:()=>Dg,structure:()=>VM});function Dg(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function GM(e){this.token(11,e.value+"%")}var WM,VM,zg=U(()=>{"use strict";WM="Percentage",VM={value:String}});var Og={};Se(Og,{generate:()=>XM,name:()=>qM,parse:()=>Ng,structure:()=>KM,walkContext:()=>YM});function Ng(){let e=this.tokenStart,t=null,n,r;return this.eat(16),this.tokenType===2?(n=this.consumeFunctionName(),r=n.toLowerCase(),this.lookupNonWSType(0)==22?t=this.createList():hasOwnProperty.call(this.pseudo,r)?(this.skipSC(),t=this.pseudo[r].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(null,!1))),this.eat(22)):n=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(e,this.tokenStart),name:n,children:t}}function XM(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var qM,YM,KM,_g=U(()=>{"use strict";qM="PseudoClassSelector",YM="function",KM={name:String,children:[["Raw"],null]}});var Ug={};Se(Ug,{generate:()=>eB,name:()=>QM,parse:()=>$g,structure:()=>ZM,walkContext:()=>JM});function $g(){let e=this.tokenStart,t=null,n,r;return this.eat(16),this.eat(16),this.tokenType===2?(n=this.consumeFunctionName(),r=n.toLowerCase(),this.lookupNonWSType(0)==22?t=this.createList():hasOwnProperty.call(this.pseudo,r)?(this.skipSC(),t=this.pseudo[r].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(null,!1))),this.eat(22)):n=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(e,this.tokenStart),name:n,children:t}}function eB(e){this.token(16,":"),this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var QM,JM,ZM,jg=U(()=>{"use strict";QM="PseudoElementSelector",JM="function",ZM={name:String,children:[["Raw"],null]}});var Wg={};Se(Wg,{generate:()=>rB,name:()=>tB,parse:()=>Hg,structure:()=>nB});function cS(){switch(this.skipSC(),this.tokenType){case 10:return this.Number();case 2:return this.Function(this.readSequence,this.scope.Value);default:this.error("Number of function is expected")}}function Hg(){let e=this.tokenStart,t=cS.call(this),n=null;return this.skipSC(),this.isDelim(lS)&&(this.eatDelim(lS),n=cS.call(this)),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:n}}function rB(e){this.node(e.left),this.token(9,"/"),e.right?this.node(e.right):this.node(10,1)}var lS,tB,nB,Vg=U(()=>{"use strict";lS=47;tB="Ratio",nB={left:["Number","Function"],right:["Number","Function",null]}});var qg={};Se(qg,{generate:()=>aB,name:()=>iB,parse:()=>Gg,structure:()=>sB});function oB(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}function Gg(e,t){let n=this.getTokenStart(this.tokenIndex),r;return this.skipUntilBalanced(this.tokenIndex,e||this.consumeUntilBalanceEnd),t&&this.tokenStart>n?r=oB.call(this):r=this.tokenStart,{type:"Raw",loc:this.getLocation(n,r),value:this.substring(n,r)}}function aB(e){this.tokenize(e.value)}var iB,sB,Yg=U(()=>{"use strict";iB="Raw",sB={value:String}});var Xg={};Se(Xg,{generate:()=>dB,name:()=>cB,parse:()=>Kg,structure:()=>pB,walkContext:()=>uB});function uS(){return this.Raw(this.consumeUntilLeftCurlyBracket,!0)}function lB(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}function Kg(){let e=this.tokenIndex,t=this.tokenStart,n,r;return this.parseRulePrelude?n=this.parseWithFallback(lB,uS):n=uS.call(this,e),r=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:n,block:r}}function dB(e){this.node(e.prelude),this.node(e.block)}var cB,uB,pB,Qg=U(()=>{"use strict";cB="Rule",uB="rule",pB={prelude:["SelectorList","Raw"],block:["Block"]}});var Zg={};Se(Zg,{generate:()=>mB,name:()=>gB,parse:()=>Jg,structure:()=>fB});function Jg(){let e=null,t=null;this.skipSC();let n=this.tokenStart;return this.tokenType===21&&(this.next(),this.skipSC(),e=this.parseWithFallback(this.SelectorList,()=>this.Raw(!1,!0)),this.skipSC(),this.eat(22)),this.lookupNonWSType(0)===1&&(this.skipSC(),this.eatIdent("to"),this.skipSC(),this.eat(21),this.skipSC(),t=this.parseWithFallback(this.SelectorList,()=>this.Raw(!1,!0)),this.skipSC(),this.eat(22)),{type:"Scope",loc:this.getLocation(n,this.tokenStart),root:e,limit:t}}function mB(e){e.root&&(this.token(21,"("),this.node(e.root),this.token(22,")")),e.limit&&(this.token(1,"to"),this.token(21,"("),this.node(e.limit),this.token(22,")"))}var gB,fB,ef=U(()=>{"use strict";gB="Scope",fB={root:["SelectorList","Raw",null],limit:["SelectorList","Raw",null]}});var nf={};Se(nf,{generate:()=>yB,name:()=>hB,parse:()=>tf,structure:()=>xB});function tf(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}}function yB(e){this.children(e)}var hB,xB,rf=U(()=>{"use strict";hB="Selector",xB={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator"]]}});var sf={};Se(sf,{generate:()=>vB,name:()=>bB,parse:()=>of,structure:()=>wB,walkContext:()=>SB});function of(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(e),children:e}}function vB(e){this.children(e,()=>this.token(18,","))}var bB,SB,wB,af=U(()=>{"use strict";bB="SelectorList",SB="selector",wB={children:[["Selector","Raw"]]}});function Gl(e){let t=e.length,n=e.charCodeAt(0),r=n===pS||n===dS?1:0,o=r===1&&t>1&&e.charCodeAt(t-1)===n?t-2:t-1,i="";for(let s=r;s<=o;s++){let a=e.charCodeAt(s);if(a===lf){if(s===o){s!==t-1&&(i=e.substr(s+1));break}if(a=e.charCodeAt(++s),$n(lf,a)){let u=s-1,c=to(e,u);s=c-1,i+=ml(e.substring(u+1,c))}else a===13&&e.charCodeAt(s+1)===10&&s++}else i+=e[s]}return i}function gS(e,t){let n=t?"'":'"',r=t?dS:pS,o="",i=!1;for(let s=0;s<e.length;s++){let a=e.charCodeAt(s);if(a===0){o+="\uFFFD";continue}if(a<=31||a===127){o+="\\"+a.toString(16),i=!0;continue}a===r||a===lf?(o+="\\"+e.charAt(s),i=!1):(i&&(Un(a)||Ur(a))&&(o+=" "),o+=e.charAt(s),i=!1)}return n+o+n}var lf,pS,dS,ql=U(()=>{"use strict";dr();lf=92,pS=34,dS=39});var uf={};Se(uf,{generate:()=>TB,name:()=>kB,parse:()=>cf,structure:()=>CB});function cf(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Gl(this.consume(5))}}function TB(e){this.token(5,gS(e.value))}var kB,CB,pf=U(()=>{"use strict";ql();kB="String",CB={value:String}});var gf={};Se(gf,{generate:()=>PB,name:()=>FB,parse:()=>df,structure:()=>AB,walkContext:()=>EB});function mS(){return this.Raw(null,!1)}function df(){let e=this.tokenStart,t=this.createList(),n;for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==IB){this.next();continue}n=this.Comment();break;case 14:n=this.CDO();break;case 15:n=this.CDC();break;case 3:n=this.parseWithFallback(this.Atrule,mS);break;default:n=this.parseWithFallback(this.Rule,mS)}t.push(n)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function PB(e){this.children(e)}var IB,FB,EB,AB,ff=U(()=>{"use strict";IB=33;FB="StyleSheet",EB="stylesheet",AB={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]}});var hf={};Se(hf,{generate:()=>BB,name:()=>LB,parse:()=>mf,structure:()=>MB});function mf(){let e=this.tokenStart;this.eat(21),this.skipSC();let t=this.Declaration();return this.eof||this.eat(22),{type:"SupportsDeclaration",loc:this.getLocation(e,this.tokenStart),declaration:t}}function BB(e){this.token(21,"("),this.node(e.declaration),this.token(22,")")}var LB,MB,xf=U(()=>{"use strict";LB="SupportsDeclaration",MB={declaration:"Declaration"}});var Sf={};Se(Sf,{generate:()=>NB,name:()=>RB,parse:()=>bf,structure:()=>zB});function yf(){this.tokenType!==1&&this.isDelim(DB)===!1&&this.error("Identifier or asterisk is expected"),this.next()}function bf(){let e=this.tokenStart;return this.isDelim(hS)?(this.next(),yf.call(this)):(yf.call(this),this.isDelim(hS)&&(this.next(),yf.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function NB(e){this.tokenize(e.name)}var DB,hS,RB,zB,wf=U(()=>{"use strict";DB=42,hS=124;RB="TypeSelector",zB={name:String}});var Cf={};Se(Cf,{generate:()=>jB,name:()=>$B,parse:()=>kf,structure:()=>UB});function Hs(e,t){let n=0;for(let r=this.tokenStart+e;r<this.tokenEnd;r++){let o=this.charCodeAt(r);if(o===yS&&t&&n!==0)return Hs.call(this,e+n+1,!1),-1;Un(o)||this.error(t&&n!==0?"Hyphen minus"+(n<6?" or hex digit":"")+" is expected":n<6?"Hex digit is expected":"Unexpected input",r),++n>6&&this.error("Too many hex digits",r)}return this.next(),n}function Yl(e){let t=0;for(;this.isDelim(vf);)++t>e&&this.error("Too many question marks"),this.next()}function OB(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===xS?"Plus sign":"Hyphen minus")+" is expected")}function _B(){let e=0;switch(this.tokenType){case 10:if(e=Hs.call(this,1,!0),this.isDelim(vf)){Yl.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){OB.call(this,yS),Hs.call(this,1,!1);break}break;case 12:e=Hs.call(this,1,!0),e>0&&Yl.call(this,6-e);break;default:if(this.eatDelim(xS),this.tokenType===1){e=Hs.call(this,0,!0),e>0&&Yl.call(this,6-e);break}if(this.isDelim(vf)){this.next(),Yl.call(this,5);break}this.error("Hex digit or question mark is expected")}}function kf(){let e=this.tokenStart;return this.eatIdent("u"),_B.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function jB(e){this.tokenize(e.value)}var xS,yS,vf,$B,UB,Tf=U(()=>{"use strict";dr();xS=43,yS=45,vf=63;$B="UnicodeRange",UB={value:String}});function SS(e){let t=e.length,n=4,r=e.charCodeAt(t-1)===bS?t-2:t-1,o="";for(;n<r&&Ur(e.charCodeAt(n));)n++;for(;n<r&&Ur(e.charCodeAt(r));)r--;for(let i=n;i<=r;i++){let s=e.charCodeAt(i);if(s===If){if(i===r){i!==t-1&&(o=e.substr(i+1));break}if(s=e.charCodeAt(++i),$n(If,s)){let a=i-1,u=to(e,a);i=u-1,o+=ml(e.substring(a+1,u))}else s===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function wS(e){let t="",n=!1;for(let r=0;r<e.length;r++){let o=e.charCodeAt(r);if(o===0){t+="\uFFFD";continue}if(o<=31||o===127){t+="\\"+o.toString(16),n=!0;continue}o===HB||o===If||o===WB||o===VB||o===GB||o===bS?(t+="\\"+e.charAt(r),n=!1):(n&&Un(o)&&(t+=" "),t+=e.charAt(r),n=!1)}return"url("+t+")"}var HB,If,WB,VB,GB,bS,Ff=U(()=>{"use strict";dr();HB=32,If=92,WB=34,VB=39,GB=40,bS=41});var Af={};Se(Af,{generate:()=>KB,name:()=>qB,parse:()=>Ef,structure:()=>YB});function Ef(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=SS(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),t=Gl(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(e,this.tokenStart),value:t}}function KB(e){this.token(7,wS(e.value))}var qB,YB,Pf=U(()=>{"use strict";Ff();ql();qB="Url",YB={value:String}});var Mf={};Se(Mf,{generate:()=>JB,name:()=>XB,parse:()=>Lf,structure:()=>QB});function Lf(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function JB(e){this.children(e)}var XB,QB,Bf=U(()=>{"use strict";XB="Value",QB={children:[[]]}});var Rf={};Se(Rf,{generate:()=>nD,name:()=>eD,parse:()=>Df,structure:()=>tD});function Df(){return this.eat(13),ZB}function nD(e){this.token(13,e.value)}var ZB,eD,tD,zf=U(()=>{"use strict";ZB=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),eD="WhiteSpace",tD={value:String}});var Ws={};Se(Ws,{AnPlusB:()=>Wp,Atrule:()=>qp,AtrulePrelude:()=>Xp,AttributeSelector:()=>ed,Block:()=>rd,Brackets:()=>sd,CDC:()=>cd,CDO:()=>dd,ClassSelector:()=>md,Combinator:()=>yd,Comment:()=>wd,Condition:()=>Cd,Declaration:()=>Fd,DeclarationList:()=>Ld,Dimension:()=>Dd,Feature:()=>Nd,FeatureFunction:()=>$d,FeatureRange:()=>Wd,Function:()=>qd,GeneralEnclosed:()=>Xd,Hash:()=>Zd,IdSelector:()=>ig,Identifier:()=>ng,Layer:()=>lg,LayerList:()=>pg,MediaQuery:()=>fg,MediaQueryList:()=>xg,NestingSelector:()=>Sg,Nth:()=>kg,Number:()=>Ig,Operator:()=>Ag,Parentheses:()=>Mg,Percentage:()=>Rg,PseudoClassSelector:()=>Og,PseudoElementSelector:()=>Ug,Ratio:()=>Wg,Raw:()=>qg,Rule:()=>Xg,Scope:()=>Zg,Selector:()=>nf,SelectorList:()=>sf,String:()=>uf,StyleSheet:()=>gf,SupportsDeclaration:()=>hf,TypeSelector:()=>Sf,UnicodeRange:()=>Cf,Url:()=>Af,Value:()=>Mf,WhiteSpace:()=>Rf});var Nf=U(()=>{"use strict";Vp();Yp();Qp();td();od();ad();ud();gd();hd();bd();vd();Td();Ed();Md();Rd();Od();Ud();Vd();Yd();Qd();eg();rg();sg();cg();dg();mg();yg();wg();Cg();Fg();Pg();Bg();zg();_g();jg();Vg();Yg();Qg();ef();rf();af();pf();ff();xf();wf();Tf();Pf();Bf();zf()});var kS,CS=U(()=>{"use strict";Bl();K0();Nf();kS={generic:!0,cssWideKeywords:Mi,...Y0,node:Ws}});function Vs(e){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,e.recognizer);case 19:return this.Brackets(this.readSequence,e.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,aD)&&this.cmpChar(this.tokenStart+1,TS)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===sD||t===oD||t===TS||t===iD)return this.Operator();t===rD&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var rD,oD,TS,iD,sD,aD,Of=U(()=>{"use strict";rD=35,oD=42,TS=43,iD=45,sD=47,aD=117});var IS,FS=U(()=>{"use strict";Of();IS={getNode:Vs}});function hD(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function xD(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===ES&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case pD:case gD:case mD:case dD:return this.Combinator();case ES:return this.ClassSelector();case uD:case fD:return this.TypeSelector();case lD:return this.IdSelector();case cD:return this.NestingSelector()}break}}}var lD,cD,uD,pD,dD,ES,gD,fD,mD,AS,PS=U(()=>{"use strict";lD=35,cD=38,uD=42,pD=43,dD=47,ES=46,gD=62,fD=124,mD=126;AS={onWhiteSpace:hD,getNode:xD}});function LS(){return this.createSingleNodeList(this.Raw(null,!1))}var MS=U(()=>{"use strict"});function BS(){let e=this.createList();if(this.skipSC(),e.push(this.Identifier()),this.skipSC(),this.tokenType===18){e.push(this.Operator());let t=this.tokenIndex,n=this.parseCustomProperty?this.Value(null):this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!1);if(n.type==="Value"&&n.children.isEmpty){for(let r=t-this.tokenIndex;r<=0;r++)if(this.lookupType(r)===13){n.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}e.push(n)}return e}var DS=U(()=>{"use strict"});function RS(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var zS,NS=U(()=>{"use strict";Of();MS();DS();zS={getNode:Vs,onWhiteSpace(e,t){RS(e)&&(e.value=" "+e.value),RS(t.last)&&(t.last.value+=" ")},expression:LS,var:BS}});var _f={};Se(_f,{AtrulePrelude:()=>IS,Selector:()=>AS,Value:()=>zS});var OS=U(()=>{"use strict";FS();PS();NS()});var yD,_S,$S=U(()=>{"use strict";yD=new Set(["none","and","not","or"]),_S={parse:{prelude(){let e=this.createList();if(this.tokenType===1){let t=this.substring(this.tokenStart,this.tokenEnd);yD.has(t.toLowerCase())||e.push(this.Identifier())}return e.push(this.Condition("container")),e},block(e=!1){return this.Block(e)}}}});var US,jS=U(()=>{"use strict";US={parse:{prelude:null,block(){return this.Block(!0)}}}});function $f(e,t){return this.parseWithFallback(()=>{try{return e.call(this)}finally{this.skipSC(),this.lookupNonWSType(0)!==22&&this.error()}},t||(()=>this.Raw(null,!0)))}var HS,WS,VS=U(()=>{"use strict";HS={layer(){this.skipSC();let e=this.createList(),t=$f.call(this,this.Layer);return(t.type!=="Raw"||t.value!=="")&&e.push(t),e},supports(){this.skipSC();let e=this.createList(),t=$f.call(this,this.Declaration,()=>$f.call(this,()=>this.Condition("supports")));return(t.type!=="Raw"||t.value!=="")&&e.push(t),e}},WS={parse:{prelude(){let e=this.createList();switch(this.tokenType){case 5:e.push(this.String());break;case 7:case 2:e.push(this.Url());break;default:this.error("String or url() is expected")}return this.skipSC(),this.tokenType===1&&this.cmpStr(this.tokenStart,this.tokenEnd,"layer")?e.push(this.Identifier()):this.tokenType===2&&this.cmpStr(this.tokenStart,this.tokenEnd,"layer(")&&e.push(this.Function(null,HS)),this.skipSC(),this.tokenType===2&&this.cmpStr(this.tokenStart,this.tokenEnd,"supports(")&&e.push(this.Function(null,HS)),(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}}});var GS,qS=U(()=>{"use strict";GS={parse:{prelude(){return this.createSingleNodeList(this.LayerList())},block(){return this.Block(!1)}}}});var YS,KS=U(()=>{"use strict";YS={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(e=!1){return this.Block(e)}}}});var XS,QS=U(()=>{"use strict";XS={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var JS,ZS=U(()=>{"use strict";JS={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var ew,tw=U(()=>{"use strict";ew={parse:{prelude(){return this.createSingleNodeList(this.Scope())},block(e=!1){return this.Block(e)}}}});var nw,rw=U(()=>{"use strict";nw={parse:{prelude:null,block(e=!1){return this.Block(e)}}}});var ow,iw=U(()=>{"use strict";ow={parse:{prelude(){return this.createSingleNodeList(this.Condition("supports"))},block(e=!1){return this.Block(e)}}}});var sw,aw=U(()=>{"use strict";$S();jS();VS();qS();KS();QS();ZS();tw();rw();iw();sw={container:_S,"font-face":US,import:WS,layer:GS,media:YS,nest:XS,page:JS,scope:ew,"starting-style":nw,supports:ow}});function lw(){let e=this.createList();this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 1:e.push(this.Identifier());break;case 5:e.push(this.String());break;case 18:e.push(this.Operator());break;case 22:break e;default:this.error("Identifier, string or comma is expected")}this.skipSC()}return e}var cw=U(()=>{"use strict"});var ri,Uf,bD,SD,Kl,uw,pw=U(()=>{"use strict";cw();ri={parse(){return this.createSingleNodeList(this.SelectorList())}},Uf={parse(){return this.createSingleNodeList(this.Selector())}},bD={parse(){return this.createSingleNodeList(this.Identifier())}},SD={parse:lw},Kl={parse(){return this.createSingleNodeList(this.Nth())}},uw={dir:bD,has:ri,lang:SD,matches:ri,is:ri,"-moz-any":ri,"-webkit-any":ri,where:ri,not:ri,"nth-child":Kl,"nth-last-child":Kl,"nth-last-of-type":Kl,"nth-of-type":Kl,slotted:Uf,host:Uf,"host-context":Uf}});var jf={};Se(jf,{AnPlusB:()=>Hp,Atrule:()=>Gp,AtrulePrelude:()=>Kp,AttributeSelector:()=>Zp,Block:()=>nd,Brackets:()=>id,CDC:()=>ld,CDO:()=>pd,ClassSelector:()=>fd,Combinator:()=>xd,Comment:()=>Sd,Condition:()=>kd,Declaration:()=>Id,DeclarationList:()=>Pd,Dimension:()=>Bd,Feature:()=>zd,FeatureFunction:()=>_d,FeatureRange:()=>Hd,Function:()=>Gd,GeneralEnclosed:()=>Kd,Hash:()=>Jd,IdSelector:()=>og,Identifier:()=>tg,Layer:()=>ag,LayerList:()=>ug,MediaQuery:()=>gg,MediaQueryList:()=>hg,NestingSelector:()=>bg,Nth:()=>vg,Number:()=>Tg,Operator:()=>Eg,Parentheses:()=>Lg,Percentage:()=>Dg,PseudoClassSelector:()=>Ng,PseudoElementSelector:()=>$g,Ratio:()=>Hg,Raw:()=>Gg,Rule:()=>Kg,Scope:()=>Jg,Selector:()=>tf,SelectorList:()=>of,String:()=>cf,StyleSheet:()=>df,SupportsDeclaration:()=>mf,TypeSelector:()=>bf,UnicodeRange:()=>kf,Url:()=>Ef,Value:()=>Lf,WhiteSpace:()=>Df});var dw=U(()=>{"use strict";Vp();Yp();Qp();td();od();ad();ud();gd();hd();bd();vd();Td();Ed();Md();Rd();Od();Ud();Vd();Yd();Qd();eg();rg();sg();cg();dg();mg();yg();wg();Cg();Fg();Pg();Bg();zg();_g();jg();Vg();Yg();Qg();ef();rf();af();pf();ff();xf();wf();Tf();Pf();Bf();zf()});var gw,fw=U(()=>{"use strict";OS();aw();pw();dw();gw={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",condition(e){return this.Condition(e.kind)},rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},features:{supports:{selector(){return this.Selector()}},container:{style(){return this.Declaration()}}},scope:_f,atrule:sw,pseudo:uw,node:jf}});var mw,hw=U(()=>{"use strict";Nf();mw={node:Ws}});var xw,yw=U(()=>{"use strict";q0();CS();fw();hw();xw=G0({...kS,...gw,...mw})});var bw=U(()=>{"use strict"});var Sw=U(()=>{"use strict"});var cK,ww,uK,pK,dK,vw,gK,fK,mK,hK,xK,yK,kw=U(()=>{"use strict";yw();bw();Ap();Ml();Sw();ql();Ff();({tokenize:cK,parse:ww,generate:uK,lexer:pK,createLexer:dK,walk:vw,find:gK,findLast:fK,findAll:mK,toPlainObject:hK,fromPlainObject:xK,fork:yK}=xw)});function CD(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Tw(e){try{let t=ww(e.trim(),{context:"value"}),n=[];return vw(t,{enter(r){if(r.type==="Dimension"){let o=parseFloat(r.value);n.push(`${o}${r.unit}`)}else if(r.type==="Number"){let o=parseFloat(r.value);n.push(`${o}`)}else r.type==="Percentage"?n.push(`${parseFloat(r.value)}%`):r.type==="Identifier"?n.push(r.name.toLowerCase()):r.type==="Hash"?n.push(`#${r.value.toLowerCase()}`):r.type}}),n}catch{return[e.trim().toLowerCase()]}}function TD(e,t){let n=CD(e);if(!kD.has(n))return t;let r=Tw(t);if(r.length<1||r.length>4)return t;let o=r.map(i=>i==="0"?"0px":i);return o.length===1?`${o[0]} ${o[0]} ${o[0]} ${o[0]}`:o.length===2?`${o[0]} ${o[1]} ${o[0]} ${o[1]}`:o.length===3?`${o[0]} ${o[1]} ${o[2]} ${o[1]}`:o.join(" ")}function Cw(e,t){let n=t.trim();if(!n)return"";let r=TD(e,n);return Tw(r).map(i=>i==="0"?"0px":i).join(" ")}function Iw(e,t,n){let r=Cw(e,t),o=Cw(e,n);return r!==""&&o!==""&&r===o}var kD,Fw=U(()=>{"use strict";kw();kD=new Set(["padding","margin","border-radius","borderradius","inset","border-width","borderwidth"])});function ID(e){let t=e.toLowerCase();return t.length===4?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t}function FD(e){let t=e.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*[\d.]+)?\s*\)/);if(!t)return null;let n=parseInt(t[1],10).toString(16).padStart(2,"0"),r=parseInt(t[2],10).toString(16).padStart(2,"0"),o=parseInt(t[3],10).toString(16).padStart(2,"0");return`#${n}${r}${o}`}function Ew(e){let t=typeof e=="string"?e:String(e??"");if(!t||t==="[object Object]")return"";let n=t.match(/rgba?\s*\(\s*\d+\s*,\s*\d+\s*,\s*\d+(?:\s*,\s*[\d.]+)?\s*\)/);if(n){let i=FD(n[0]);if(i)return i}let r=t.match(/#([0-9a-fA-F]{3,8})/);if(r)return ID(r[0]);let o=t.match(/(-?\d+\.?\d*)(px|em|rem|%|pt|vw|vh)?/g);return o&&o.length>1?o.join(" ").toLowerCase():o&&o.length===1?o[0].toLowerCase():t.toLowerCase().trim().replace(/\s+/g," ")}function oi(e,t,n){if(!e||!t)return!1;let r=String(e),o=String(t),i=r.toLowerCase(),s=o.toLowerCase(),a=i.includes("none"),u=s.includes("none");if(a!==u)return!1;let c=/\b(fill|stroke)\s*:/i,l=c.test(r),d=c.test(o);if(l!==d)return!1;let g=Ew(r),p=Ew(o);return!!(g===p||n&&Iw(n,r,o))}var Hf=U(()=>{"use strict";Fw()});function MD(e){let t=String(e.property||"").toLowerCase(),n=String(e.description||"").toLowerCase(),r=String(e.expected||e.suggestedValue||"").toLowerCase(),o=String(e.actual||e.currentValue||"").toLowerCase();if(t.includes("color")||t.includes("fill")||t.includes("background")||n.includes("color")||n.includes("fill"))return!0;let i=s=>/^#[0-9a-f]{3,8}$/i.test(s)||s.includes("rgb")||["white","black","red","blue","green","orange","yellow","transparent"].includes(s);return!!(i(r)||i(o)||e.relatedProperties?.some(s=>{let a=s.property?.toLowerCase()||"";return a.includes("color")||a.includes("fill")||a.includes("background")}))}function Aw(e){if(e.includes("\xD7")||/\d+px\s*x\s*\d+px/i.test(e))return!1;let t=e.match(/\d+px/g);return t?t.length>1:!1}function BD(e){let t=String(e.expected||e.suggestedValue||"").toLowerCase(),n=String(e.actual||e.currentValue||"").toLowerCase(),r=String(e.property||"").toLowerCase(),o=String(e.description||"").toLowerCase(),i=n.includes("margin")||t.includes("margin")||r==="margin",s=t.includes("gap")||o.includes("gap");return i&&s}function DD(e,t,n){if(!e||!t)return!1;let r=typeof e=="string"?e:String(e??""),o=typeof t=="string"?t:String(t??"");if(!r||!o||r==="[object Object]"||o==="[object Object]"||n&&MD(n)||Aw(r)||Aw(o)||n&&BD(n))return!1;let i=parseFloat(r),s=parseFloat(o);if(isNaN(i)||isNaN(s))return!1;let a=Math.abs(i-s);if(r.includes("px")||o.includes("px")){let u=n?.property?.toLowerCase()||"";return u==="width"||u==="height"||u.includes("width")||u.includes("height")?a<Mw:a<Lw}return r.includes("%")||o.includes("%")?a<1:!1}function RD(e){let t=`${e.description||""} ${e.title||""} ${e.suggestedFix||""}`.toLowerCase();if(LD.some(s=>t.includes(s))||!AD.some(s=>t.includes(s)))return!1;let o=e.expected||e.suggestedValue,i=e.actual||e.currentValue;return!(o&&i&&!oi(o,i,e.property))}function zD(e){let t=(e.expected!==void 0?"fill":"").toLowerCase(),n=e.actual!==void 0||e.currentValue!==void 0?"fill":"";if(!(t==="fill"||n==="fill"||e.description?.toLowerCase().includes("fill")||e.title?.toLowerCase().includes("fill")))return!1;let o=String(e.expected||e.suggestedValue||"").toLowerCase();if(!(o==="none"||o==="transparent"||o.includes("no fills")||o.includes("transparent")))return!1;let s=`${e.description||""} ${e.title||""}`.toLowerCase();return s.includes("container")||s.includes("svg ")||s.includes("<svg")||s.includes("wrapper")}function ND(e){let t=`${e.description||""} ${e.title||""}`.toLowerCase(),n=e.property?.toLowerCase()||"";if(!(t.includes("text ")||t.includes("text layer")||t.includes("text span")||t.includes("span ")||t.includes("label "))||!(n==="width"||n==="height"||n.includes("width")||n.includes("height")||t.includes("width")||t.includes("height")))return!1;let i=e.expected||e.suggestedValue||"",s=e.actual||e.currentValue||"",a=parseFloat(i),u=parseFloat(s);return isNaN(a)||isNaN(u)?!1:Math.abs(a-u)<Bw}function OD(e){let t=`${e.description||""} ${e.title||""} ${e.suggestedFix||""}`.toLowerCase(),n=String(e.expected||e.suggestedValue||"").toLowerCase(),r=String(e.actual||e.currentValue||"").toLowerCase();if(!PD.some(d=>t.includes(d)||n.includes(d)))return!1;let i=`${t} ${n} ${r}`;if(i.includes("min-width")||i.includes("max-width")||i.includes("min-height")||i.includes("max-height")||i.includes("explicit")||i.includes("constraint")||i.includes("forced"))return!1;let a=n.includes("hug")||n.includes("auto"),u=/\d+\.?\d*px/.test(r);if(!a||!u)return!1;let c=n.match(/(\d+\.?\d*)px/),l=r.match(/(\d+\.?\d*)px/);return!(c&&l&&Math.abs(parseFloat(c[1])-parseFloat(l[1]))>ED)}function _D(e){let t=String(e.expected||e.suggestedValue||"").toLowerCase(),n=String(e.actual||e.currentValue||"").toLowerCase();return(!n||!t||n.includes("see ")||t.includes("see ")||n.includes("image")||t.includes("image"))&&e.type==="visual"}function Pw(e){return typeof e!="string"?"":(e.split(",")[0]||"").replace(/['"]/g,"").replace(/[\s_-]/g,"").toLowerCase().trim()}function $D(e,t,n){if((n||"").toLowerCase().replace(/[\s_-]/g,"")!=="fontfamily")return!1;let o=Pw(e),i=Pw(t);return o.length>0&&i.length>0&&o===i}function Gs(e){let t=e.expected||e.suggestedValue,n=e.actual||e.currentValue;if($D(t,n,e.property))return{dismissed:!0,dismissReason:"Auto-dismissed: font-family naming difference (same font)",dismissedBy:"post-ai-validation"};if(e.programmaticallyVerified)return{dismissed:!1};if(e.fixRequired===!1)return{dismissed:!0,dismissReason:"Auto-dismissed: FixRequired is false (no code change needed)",dismissedBy:"post-ai-validation"};if(oi(t,n,e.property))return{dismissed:!0,dismissReason:"Auto-dismissed: expected equals actual (identical values)",dismissedBy:"post-ai-validation"};if(e.fixRequired===!0)return{dismissed:!1};if(ND(e))return{dismissed:!0,dismissReason:`Auto-dismissed: text dimension variance (<${Bw}px) - font rendering difference, not actionable`,dismissedBy:"post-ai-validation"};if(DD(t,n,e)){let r=e.property?.toLowerCase()||"";return{dismissed:!0,dismissReason:`Auto-dismissed: negligible difference (<${r==="width"||r==="height"||r.includes("width")||r.includes("height")?Mw:Lw}px)`,dismissedBy:"post-ai-validation"}}return _D(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no measurable values to compare",dismissedBy:"post-ai-validation"}:RD(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no fix needed",dismissedBy:"post-ai-validation"}:OD(e)?{dismissed:!0,dismissReason:"Auto-dismissed: HUG sizing - CSS auto-sizes content without explicit dimensions",dismissedBy:"post-ai-validation"}:zD(e)?{dismissed:!0,dismissReason:"Auto-dismissed: SVG container fill - child elements use their own fills",dismissedBy:"post-ai-validation"}:{dismissed:!1}}var Lw,Mw,Bw,ED,AD,PD,LD,Dw=U(()=>{"use strict";Hf();Lw=.5,Mw=2,Bw=2,ED=5,AD=["values match","values already match","already correct","correctly implemented","implementation is correct","css matches","matches figma","identical","same value","no difference","none - ","no changes needed","no fix needed"],PD=["hug","auto (hug)","should be hug","fixed pixel values are being rendered","fixed values are being rendered"],LD=["duplicate","extra","missing","additional","removed","should not exist","does not exist","not in figma","not in storybook","renders 2","renders two","has 1","has one"]});function Wf(e){let t=e.trim().match(/^#?([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/);if(!t)return null;let n=t[1];return n.length===3||n.length===4?n=n.slice(0,3).split("").map(r=>r+r).join(""):n.length===8&&(n=n.slice(0,6)),[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]}function UD(e){let t=e.trim().match(/^rgba?\(\s*([^)]+)\)$/i);if(!t)return null;let n=t[1].replace(/\//g," ").split(/[\s,]+/).filter(Boolean);if(n.length<3)return null;let r=u=>u.endsWith("%")?Math.round(parseFloat(u)/100*255):Math.round(parseFloat(u)),o=r(n[0]),i=r(n[1]),s=r(n[2]);if([o,i,s].some(u=>isNaN(u)))return null;let a=u=>Math.max(0,Math.min(255,u));return[a(o),a(i),a(s)]}function jD(e,t,n){let r=(1-Math.abs(2*n-1))*t,o=(e%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),s=0,a=0,u=0;o<1?[s,a,u]=[r,i,0]:o<2?[s,a,u]=[i,r,0]:o<3?[s,a,u]=[0,r,i]:o<4?[s,a,u]=[0,i,r]:o<5?[s,a,u]=[i,0,r]:[s,a,u]=[r,0,i];let c=n-r/2;return[Math.round((s+c)*255),Math.round((a+c)*255),Math.round((u+c)*255)]}function HD(e){let t=e.trim().match(/^hsla?\(\s*([^)]+)\)$/i);if(!t)return null;let n=t[1].replace(/\//g," ").split(/[\s,]+/).filter(Boolean);if(n.length<3)return null;let r=parseFloat(n[0]),o=parseFloat(n[1]),i=parseFloat(n[2]);return[r,o,i].some(s=>isNaN(s))?null:jD(r,o/100,i/100)}function VD(e){return WD[e.trim().toLowerCase()]??null}function Rw(e){return e?Wf(e)??UD(e)??HD(e)??Vf(e)??VD(e):null}function Vf(e){let t=e.trim().match(/^color\(\s*display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*[\d.]+)?\s*\)$/);if(!t)return null;let n=parseFloat(t[1]),r=parseFloat(t[2]),o=parseFloat(t[3]);if(isNaN(n)||isNaN(r)||isNaN(o))return null;let i=p=>p<=.04045?p/12.92:Math.pow((p+.055)/1.055,2.4),s=i(n),a=i(r),u=i(o),c=1.2249*s-.2247*a+0*u,l=-.042*s+1.0419*a+0*u,d=-.0197*s-.0786*a+1.0983*u,g=p=>{let h=Math.max(0,Math.min(1,p));return h<=.0031308?12.92*h:1.055*Math.pow(h,1/2.4)-.055};return[Math.round(g(c)*255),Math.round(g(l)*255),Math.round(g(d)*255)]}function zw(e,t,n){let r=I=>{let v=I/255;return v<=.04045?v/12.92:Math.pow((v+.055)/1.055,2.4)},o=r(e),i=r(t),s=r(n),a=o*.4124564+i*.3575761+s*.1804375,u=o*.2126729+i*.7151522+s*.072175,c=o*.0193339+i*.119192+s*.9503041,l=.95047,d=1,g=1.08883,p=I=>I>.008856?Math.cbrt(I):7.787*I+16/116,h=p(a/l),S=p(u/d),T=p(c/g);return[116*S-16,500*(h-S),200*(S-T)]}function Nw(e,t){let[n,r,o]=zw(...e),[i,s,a]=zw(...t),u=(n+i)/2,c=Math.sqrt(r*r+o*o),l=Math.sqrt(s*s+a*a),d=(c+l)/2,g=.5*(1-Math.sqrt(Math.pow(d,7)/(Math.pow(d,7)+Math.pow(25,7)))),p=(1+g)*r,h=(1+g)*s,S=Math.sqrt(p*p+o*o),T=Math.sqrt(h*h+a*a),I=(S+T)/2,v=(Math.atan2(o,p)*180/Math.PI+360)%360,D=(Math.atan2(a,h)*180/Math.PI+360)%360,N=D-v;Math.abs(N)>180&&(N-=Math.sign(N)*360);let j=i-n,B=T-S,z=2*Math.sqrt(S*T)*Math.sin(N*Math.PI/360),m=Math.abs(v-D)>180?(v+D+360)/2:(v+D)/2,b=1-.17*Math.cos((m-30)*Math.PI/180)+.24*Math.cos(2*m*Math.PI/180)+.32*Math.cos((3*m+6)*Math.PI/180)-.2*Math.cos((4*m-63)*Math.PI/180),k=1+.015*Math.pow(u-50,2)/Math.sqrt(20+Math.pow(u-50,2)),A=1+.045*I,f=1+.015*I*b,C=-2*Math.sqrt(Math.pow(I,7)/(Math.pow(I,7)+Math.pow(25,7)))*Math.sin(60*Math.exp(-Math.pow((m-275)/25,2))*Math.PI/180);return Math.sqrt(Math.pow(j/k,2)+Math.pow(B/A,2)+Math.pow(z/f,2)+C*(B/A)*(z/f))}function Ow(e){let t=(e.property||"").toLowerCase();if(!(t.includes("color")||t==="fill"||t==="background"||t==="backgroundcolor"))return!1;let r=String(e.expected||e.suggestedValue||""),o=String(e.actual||e.currentValue||""),i=Wf(r)??Wf(o),s=Vf(r)??Vf(o);return!i||!s||r===o?!1:Nw(i,s)<5}function _w(e){let t=String(e.expected??e.suggestedValue??""),n=String(e.actual??e.currentValue??"");if(!t||!n||t===n)return null;let r=Rw(t),o=Rw(n);return!r||!o?null:Nw(r,o)}function qs(e){let t=e.severity||"minor";if(t==="minor")return t;if(Ow(e))return"minor";let n=_w(e);if(n!==null)return n<2?"minor":n<5&&t==="critical"?"major":t;let r=["width","height","size","dimension","dimensions","r","cx","cy"],o=["dimension","layout"],i=new Set((e.property||"").replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),s=(e.type||"").toLowerCase();if(!(r.some(p=>i.has(p))||o.some(p=>s===p)))return t;let u=String(e.expected||e.suggestedValue||""),c=String(e.actual||e.currentValue||""),l=parseFloat(u.replace(/[^0-9.-]/g,"")),d=parseFloat(c.replace(/[^0-9.-]/g,""));if(isNaN(l)||isNaN(d))return t;let g=Math.abs(l-d);return g<5?"minor":g<10&&t==="critical"?"major":t}function Xl(e,t,n){return e>0?"D":t>0?"C":n>0?"B":"A"}function Ql(e){let t=e.filter(n=>!n.dismissed).map(n=>qs(n));return Xl(t.filter(n=>n==="critical").length,t.filter(n=>n==="major").length,t.filter(n=>n==="minor").length)}function lo(e,t,n){let r=100-n*1-t*3-e*10,o=ao[Xl(e,t,n)];return Math.max(0,Math.min(o,r))}var WD,ao,$w=U(()=>{"use strict";WD={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,128,0],blue:[0,0,255],yellow:[255,255,0],cyan:[0,255,255],aqua:[0,255,255],magenta:[255,0,255],fuchsia:[255,0,255],gray:[128,128,128],grey:[128,128,128],silver:[192,192,192],maroon:[128,0,0],olive:[128,128,0],lime:[0,255,0],teal:[0,128,128],navy:[0,0,128],purple:[128,0,128],orange:[255,165,0],pink:[255,192,203],brown:[165,42,42],gold:[255,215,0],beige:[245,245,220],ivory:[255,255,240],indigo:[75,0,130],violet:[238,130,238],coral:[255,127,80],salmon:[250,128,114],khaki:[240,230,140],crimson:[220,20,60],turquoise:[64,224,208],lightgray:[211,211,211],lightgrey:[211,211,211],darkgray:[169,169,169],darkgrey:[169,169,169],whitesmoke:[245,245,245],gainsboro:[220,220,220]};ao={A:100,B:99,C:89,D:69}});var Uw=U(()=>{"use strict"});var jw=U(()=>{"use strict"});var Gf=U(()=>{"use strict";Hf();Dw();$w();Uw();jw()});var ZD,eR,RK,qf=U(()=>{"use strict";ZD=["flex","inline-flex"],eR=["grid","inline-grid"],RK=[...ZD,...eR]});var Ww=U(()=>{"use strict";Gf();qf()});var Vw=U(()=>{"use strict"});var cn=U(()=>{"use strict";Ou();Hy();Wy();Gf();qf();Ww();Vw()});function nR(e){let{aiPrompt:t,aiResponse:n,...r}=e;return r}function ir(e){try{let t=e.map(nR),n=JSON.stringify(t,rR);sessionStorage.setItem(Yf,n)}catch(t){y.error("[SessionStorage] Failed to save review history:",t)}}function Kf(){try{let e=sessionStorage.getItem(Yf);if(!e)return[];let t=JSON.parse(e,oR);return Array.isArray(t)?t:[]}catch(e){return y.error("[SessionStorage] Failed to load review history:",e),[]}}function Gw(){try{let e=Kf();if(e.length===0)return;let t=!1,n=e.map(r=>{if(r.aiPrompt!==void 0||r.aiResponse!==void 0){t=!0;let{aiPrompt:o,aiResponse:i,...s}=r;return s}return r});t&&(ir(n),y.debug("[SessionStorage] Stripped aiPrompt/aiResponse from existing review history"))}catch(e){y.error("[SessionStorage] Failed to strip sensitive fields:",e)}}function qw(){try{sessionStorage.removeItem(Yf),y.debug("[SessionStorage] Review history cleared")}catch(e){y.error("[SessionStorage] Failed to clear review history:",e)}}function rR(e,t){return t instanceof Date?{__type:"Date",value:t.toISOString()}:t}function oR(e,t){return t&&t.__type==="Date"?new Date(t.value):t}var Yf,Xf=U(()=>{"use strict";Oe();Yf="uicopilot_review_history"});import iR,{createContext as sR,useContext as aR,useReducer as lR,useMemo as Yw,useRef as cR,useEffect as uR}from"react";function Jl(e){let t=e.length>Kw?e.slice(e.length-Kw):e,n=Math.max(0,t.length-pR);return n===0?t:t.map((r,o)=>{if(o>=n)return r;let i=r.storybookImageData?.startsWith("data:"),s=r.figmaImageData?.startsWith("data:");return!i&&!s?r:{...r,storybookImageData:i?void 0:r.storybookImageData,figmaImageData:s?void 0:r.figmaImageData}})}function dR(e,t){switch(t.type){case"SET_STATE":return{...e,...t.payload};case"ADD_STREAMING_MESSAGE":return{...e,streamingMessages:[...e.streamingMessages,t.payload]};case"UPDATE_STREAMING_MESSAGE":return{...e,streamingMessages:e.streamingMessages.map((n,r)=>r===t.payload.index?{...n,content:t.payload.content}:n)};case"CLEAR_STREAMING_MESSAGES":return{...e,streamingMessages:[]};case"TOGGLE_MODEL":{let n=e.selectedModels.includes(t.payload);return n&&e.selectedModels.length===1?e:{...e,selectedModels:n?e.selectedModels.filter(r=>r!==t.payload):[...e.selectedModels,t.payload]}}case"SET_REVIEW_RESULTS":{if(!t.payload)return{...e,reviewResults:null,currentReviewId:null};let n=e.userRole==="admin",r={id:t.payload.id,componentId:t.payload.componentId,storyId:t.payload.storyId,modelId:t.payload.modelId,complianceScore:t.payload.complianceScore,issuesCount:t.payload.issuesCount,issues:t.payload.issues,createdAt:t.payload.createdAt,visualSimilarity:t.payload.visualSimilarity,storybookImageData:e.storybookImageUrl||void 0,figmaImageData:e.figmaImageUrl||void 0,aiPrompt:n&&e.fullPrompt||void 0,aiResponse:n&&e.fullResponse||void 0,costUsd:t.payload.costUsd,inputTokens:t.payload.inputTokens,outputTokens:t.payload.outputTokens},o=e.reviewHistory.findIndex(s=>s.id===t.payload.id),i;return o>=0?i=e.reviewHistory.map((s,a)=>a===o?r:s):i=[...e.reviewHistory,r],i=Jl(i),ir(i),{...e,reviewResults:t.payload,reviewHistory:i,currentReviewId:t.payload.id,isNewReviewMode:!1}}case"UPDATE_MULTI_MODEL_STREAMING":return e.multiModelResults?{...e,multiModelResults:{...e.multiModelResults,byModel:{...e.multiModelResults.byModel,[t.payload.modelId]:{...e.multiModelResults.byModel[t.payload.modelId],streamingMessages:t.payload.messages}}}}:{...e,multiModelResults:{byModel:{[t.payload.modelId]:{streamingMessages:t.payload.messages}},activeModelId:t.payload.modelId}};case"SET_MODEL_COMPLETED":return e.multiModelResults?{...e,multiModelResults:{...e.multiModelResults,byModel:{...e.multiModelResults.byModel,[t.payload]:{...e.multiModelResults.byModel[t.payload],completed:!0}}}}:e;case"BULK_ADD_REVIEWS":{if(t.payload.length===0)return e;let n=new Map(e.reviewHistory.map(s=>[s.id,s])),r=!1,o=e.reviewHistory.slice();for(let s of t.payload){let a=n.get(s.id);if(!a){o.push(s),r=!0;continue}let u=s.issues?.length??0,c=a.issues?.length??0;if(u>c){let l=o.indexOf(a);l!==-1&&(o[l]=s,r=!0)}}if(!r)return e;let i=Jl(o);return ir(i),{...e,reviewHistory:i}}case"ADD_REVIEW":{let n=Jl([...e.reviewHistory,t.payload]);return ir(n),{...e,reviewHistory:n,currentReviewId:t.payload.id,isNewReviewMode:!1}}case"TOGGLE_ISSUE_SELECTION":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>r.id!==e.currentReviewId?r:{...r,issues:r.issues.map(o=>o.id===t.payload?{...o,selectedForFix:!o.selectedForFix}:o)});return ir(n),{...e,reviewHistory:n}}case"UPDATE_ISSUE_STATUS":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>r.id!==e.currentReviewId?r:{...r,issues:r.issues.map(o=>o.id===t.payload.issueId?{...o,status:t.payload.status,error:t.payload.error}:o)});return ir(n),{...e,reviewHistory:n}}case"UPDATE_ISSUE_GENERATED_FIX":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>r.id!==e.currentReviewId?r:{...r,issues:r.issues.map(o=>o.id===t.payload.issueId?{...o,generatedFix:o.generatedFix?{...o.generatedFix,...t.payload.generatedFix}:t.payload.generatedFix,selectedForFix:t.payload.generatedFix?.status==="failed"?!1:o.selectedForFix}:o)});return ir(n),{...e,reviewHistory:n}}case"BATCH_UPDATE_ISSUE_GENERATED_FIXES":{if(!e.currentReviewId)return e;let n=new Map(t.payload.map(o=>[o.issueId,o.generatedFix])),r=e.reviewHistory.map(o=>o.id!==e.currentReviewId?o:{...o,issues:o.issues.map(i=>{let s=n.get(i.id);return s?{...i,generatedFix:i.generatedFix?{...i.generatedFix,...s}:s,selectedForFix:s?.status==="failed"?!1:i.selectedForFix}:i})});return ir(r),{...e,reviewHistory:r}}case"DISMISS_ISSUE":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>{if(r.id!==e.currentReviewId)return r;let o=r.issues.map(c=>c.id===t.payload.issueId?{...c,dismissed:!0,dismissReason:t.payload.reason,dismissedAt:new Date,dismissedBy:t.payload.dismissedBy}:c),i=o.filter(c=>!c.dismissed),s=i.filter(c=>c.severity==="critical").length,a=i.filter(c=>c.severity==="major").length,u=i.filter(c=>c.severity==="minor").length;return{...r,issues:o,complianceScore:lo(s,a,u),issuesCount:i.length}});return ir(n),{...e,reviewHistory:n}}case"UNDISMISS_ISSUE":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>{if(r.id!==e.currentReviewId)return r;let o=r.issues.map(c=>c.id===t.payload?{...c,dismissed:!1,dismissReason:void 0,dismissedAt:void 0}:c),i=o.filter(c=>!c.dismissed),s=i.filter(c=>c.severity==="critical").length,a=i.filter(c=>c.severity==="major").length,u=i.filter(c=>c.severity==="minor").length;return{...r,issues:o,complianceScore:lo(s,a,u),issuesCount:i.length}});return ir(n),{...e,reviewHistory:n}}case"RECALCULATE_SCORE":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>{if(r.id!==e.currentReviewId)return r;let o=r.issues.filter(c=>!c.dismissed),i=o.filter(c=>c.severity==="critical").length,s=o.filter(c=>c.severity==="major").length,a=o.filter(c=>c.severity==="minor").length,u=lo(i,s,a);return y.debug(`[recalculateScore] Active: ${o.length}, score: ${u}`),{...r,complianceScore:u,issuesCount:o.length}});return ir(n),{...e,reviewHistory:n}}case"UPDATE_REVIEW_SCORE":{let n=e.reviewHistory.map(r=>r.id!==t.payload.reviewId?r:{...r,complianceScore:t.payload.newScore});return ir(n),{...e,reviewHistory:n}}case"CLEAR_ALL_REVIEWS":return qw(),{...e,reviewHistory:[],currentReviewId:null};case"CLEAR_STALE_REVIEWS":return{...e,currentReviewId:null,reviewResults:null,isNewReviewMode:!1};case"RESET_REVIEW":{let n=e.isReviewing;return{...e,isReviewing:!1,reviewError:null,reviewResults:n?null:e.reviewResults,multiModelResults:null,streamingMessages:[],streamingProgress:0,streamingStatus:"",reviewDetailTab:n?"chat":e.reviewDetailTab,fullPrompt:"",fullResponse:"",figmaImageUrl:n?null:e.figmaImageUrl,storybookImageUrl:n?null:e.storybookImageUrl,currentReviewId:n?null:e.currentReviewId}}case"RESET_PROMPT":return{...e,isGenerating:!1,generatedPrompt:null,promptError:null};case"TRIGGER_SCREENSHOT_REFRESH":return{...e,screenshotRefreshKey:e.screenshotRefreshKey+1};default:return e}}function Jf({children:e}){let[t,n]=lR(dR,xR),r=cR(t);uR(()=>{r.current=t},[t]);let o=Yw(()=>({setIsReviewing:s=>n({type:"SET_STATE",payload:{isReviewing:s}}),setReviewingStoryId:s=>n({type:"SET_STATE",payload:{reviewingStoryId:s}}),setReviewError:s=>n({type:"SET_STATE",payload:{reviewError:s}}),bulkAddReviews:s=>n({type:"BULK_ADD_REVIEWS",payload:s}),setReviewResults:s=>n({type:"SET_REVIEW_RESULTS",payload:s}),setMultiModelResults:s=>n({type:"SET_STATE",payload:{multiModelResults:s}}),updateMultiModelStreamingMessages:(s,a)=>n({type:"UPDATE_MULTI_MODEL_STREAMING",payload:{modelId:s,messages:a}}),setModelCompleted:s=>n({type:"SET_MODEL_COMPLETED",payload:s}),setActiveModelId:s=>{let a=r.current;a.multiModelResults&&n({type:"SET_STATE",payload:{multiModelResults:{...a.multiModelResults,activeModelId:s}}})},setShowReviewMenu:s=>n({type:"SET_STATE",payload:{showReviewMenu:s}}),setSeverityFilter:s=>n({type:"SET_STATE",payload:{severityFilter:s}}),setShowStreamingPanel:s=>n({type:"SET_STATE",payload:{showStreamingPanel:s}}),setStreamingPanelCollapsed:s=>n({type:"SET_STATE",payload:{streamingPanelCollapsed:s}}),addStreamingMessage:s=>n({type:"ADD_STREAMING_MESSAGE",payload:s}),updateStreamingMessage:(s,a)=>n({type:"UPDATE_STREAMING_MESSAGE",payload:{index:s,content:a}}),clearStreamingMessages:()=>n({type:"CLEAR_STREAMING_MESSAGES"}),setStreamingProgress:s=>n({type:"SET_STATE",payload:{streamingProgress:s}}),setStreamingStatus:s=>n({type:"SET_STATE",payload:{streamingStatus:s}}),setReviewDetailTab:s=>n({type:"SET_STATE",payload:{reviewDetailTab:s}}),setFullPrompt:s=>n({type:"SET_STATE",payload:{fullPrompt:s}}),setFullResponse:s=>n({type:"SET_STATE",payload:{fullResponse:s}}),setFigmaImageUrl:s=>n({type:"SET_STATE",payload:{figmaImageUrl:s}}),setStorybookImageUrl:s=>n({type:"SET_STATE",payload:{storybookImageUrl:s}}),setFigmaDimensions:s=>n({type:"SET_STATE",payload:{figmaDimensions:s}}),setSelectedModels:s=>n({type:"SET_STATE",payload:{selectedModels:s}}),toggleModel:s=>n({type:"TOGGLE_MODEL",payload:s}),setModelComparisonView:s=>n({type:"SET_STATE",payload:{modelComparisonView:s}}),resetReview:()=>n({type:"RESET_REVIEW"}),addReview:s=>n({type:"ADD_REVIEW",payload:s}),getCurrentReview:()=>{let s=r.current;return s.currentReviewId&&s.reviewHistory.find(a=>a.id===s.currentReviewId)||null},getReviewById:s=>r.current.reviewHistory.find(a=>a.id===s)||null,getParentReview:()=>{let s=r.current,a=s.reviewHistory.find(u=>u.id===s.currentReviewId);return a?.parentReviewId&&s.reviewHistory.find(u=>u.id===a.parentReviewId)||null},hasAppliedFixes:()=>{let s=r.current,a=s.reviewHistory.find(u=>u.id===s.currentReviewId);return!a||!Array.isArray(a.issues)||a.issues.length===0?!1:a.issues.some(u=>u.status==="applied"||u.generatedFix?.status==="applied")},toggleIssueSelection:s=>n({type:"TOGGLE_ISSUE_SELECTION",payload:s}),updateIssueStatus:(s,a,u)=>n({type:"UPDATE_ISSUE_STATUS",payload:{issueId:s,status:a,error:u}}),updateIssueGeneratedFix:(s,a)=>n({type:"UPDATE_ISSUE_GENERATED_FIX",payload:{issueId:s,generatedFix:a}}),batchUpdateIssueGeneratedFixes:s=>n({type:"BATCH_UPDATE_ISSUE_GENERATED_FIXES",payload:s}),dismissIssue:(s,a,u)=>n({type:"DISMISS_ISSUE",payload:{issueId:s,reason:a,dismissedBy:u}}),undismissIssue:s=>n({type:"UNDISMISS_ISSUE",payload:s}),recalculateScore:()=>n({type:"RECALCULATE_SCORE"}),updateReviewScore:(s,a)=>n({type:"UPDATE_REVIEW_SCORE",payload:{reviewId:s,newScore:a}}),clearAllReviews:()=>n({type:"CLEAR_ALL_REVIEWS"}),clearStaleReviewsForStory:s=>n({type:"CLEAR_STALE_REVIEWS",payload:s}),setIsApplying:s=>n({type:"SET_STATE",payload:{isApplying:s}}),setApplyFixesResult:s=>n({type:"SET_STATE",payload:{applyFixesResult:s}}),setIncludeComponentIssues:s=>n({type:"SET_STATE",payload:{includeComponentIssues:s}}),setIncludeTextComparison:s=>n({type:"SET_STATE",payload:{includeTextComparison:s}}),setUsePromptCache:s=>n({type:"SET_STATE",payload:{usePromptCache:s}}),setIsValidating:s=>n({type:"SET_STATE",payload:{isValidating:s}}),setReviewHistoryLoading:s=>n({type:"SET_STATE",payload:{reviewHistoryLoading:s}}),setValidationUsage:s=>n({type:"SET_STATE",payload:{validationUsage:s}}),setWorkspacePath:s=>n({type:"SET_STATE",payload:{workspacePath:s}}),triggerScreenshotRefresh:()=>n({type:"TRIGGER_SCREENSHOT_REFRESH"}),setHoveredIssueId:s=>n({type:"SET_STATE",payload:{hoveredIssueId:s}}),setNewReviewMode:s=>n({type:"SET_STATE",payload:{isNewReviewMode:s}}),setPendingSettingsOpen:s=>n({type:"SET_STATE",payload:{pendingSettingsOpen:s}}),setFeatureFlags:s=>n({type:"SET_STATE",payload:{featureFlags:s}}),setUserRole:s=>n({type:"SET_STATE",payload:{userRole:s}}),setRoleOverride:s=>{try{s?localStorage.setItem("uicopilot_role_override",s):localStorage.removeItem("uicopilot_role_override")}catch{}n({type:"SET_STATE",payload:{roleOverride:s}})},setReviewAllConcurrency:s=>{let a=Math.max(1,Math.min(5,s));try{localStorage.setItem("uicopilot_review_all_concurrency",String(a))}catch{}n({type:"SET_STATE",payload:{reviewAllConcurrency:a}})},setIsGenerating:s=>n({type:"SET_STATE",payload:{isGenerating:s}}),setGeneratedPrompt:s=>n({type:"SET_STATE",payload:{generatedPrompt:s}}),setPromptError:s=>n({type:"SET_STATE",payload:{promptError:s}}),resetPrompt:()=>n({type:"RESET_PROMPT"})}),[]),i=Yw(()=>({...t,...o}),[t,o]);return iR.createElement(Xw.Provider,{value:i},e)}function ue(){let e=aR(Xw);if(!e)throw new Error("useReviewStore must be used within a ReviewProvider");return e}var Kw,pR,gR,fR,Qf,mR,hR,xR,Xw,Zf=U(()=>{"use strict";cn();Xf();Oe();Kw=20,pR=5;gR=()=>{if(typeof localStorage>"u")return 3;try{let e=localStorage.getItem("uicopilot_review_all_concurrency");if(e)return Math.max(1,Math.min(5,parseInt(e,10)))}catch{}return 3},fR=()=>{if(typeof localStorage>"u")return null;try{let e=localStorage.getItem("uicopilot_role_override");if(e==="admin"||e==="beta")return e}catch{}return null},Qf={enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1},mR=()=>{if(typeof localStorage>"u")return Qf;try{let e=localStorage.getItem("uicopilot_feature_flags");if(!e)return Qf;let t=JSON.parse(e);return{enableFixGeneration:!!t.enableFixGeneration,enableFixApply:!!t.enableFixApply,enableAutoMap:!!t.enableAutoMap,enableReviewBadges:!!t.enableReviewBadges,showCosts:!!t.showCosts,enableParallelReview:!!t.enableParallelReview,enableModelSelection:!!t.enableModelSelection}}catch{}return Qf},hR=()=>{if(typeof localStorage>"u")return"beta";try{let e=localStorage.getItem("uicopilot_user_role");if(e==="admin"||e==="beta")return e}catch{}return"beta"},xR={isReviewing:!1,reviewingStoryId:null,reviewError:null,reviewResults:null,multiModelResults:null,showReviewMenu:!1,severityFilter:"all",showStreamingPanel:!1,streamingPanelCollapsed:!1,streamingMessages:[],streamingProgress:0,streamingStatus:"",reviewDetailTab:"chat",fullPrompt:"",fullResponse:"",figmaImageUrl:null,storybookImageUrl:null,figmaDimensions:null,selectedModels:["claude-sonnet-4-5-20250929"],modelComparisonView:"side-by-side",reviewHistory:Jl(Kf()),currentReviewId:null,includeComponentIssues:!0,includeTextComparison:!1,usePromptCache:!1,isApplying:!1,applyFixesResult:null,screenshotRefreshKey:0,isValidating:!1,reviewHistoryLoading:!1,validationUsage:null,lastAiCallTimestamp:null,aiRateLimitSeconds:0,isGenerating:!1,generatedPrompt:null,promptError:null,workspacePath:null,userRole:hR(),roleOverride:fR(),featureFlags:mR(),reviewAllConcurrency:gR(),hoveredIssueId:null,isNewReviewMode:!1,pendingSettingsOpen:!1},Xw=sR(null)});import Ys,{useMemo as yR}from"react";function tm({children:e}){return Ys.createElement(Mu,null,Ys.createElement(Du,null,Ys.createElement(zu,null,Ys.createElement(Jf,null,Ys.createElement(bR,null),e))))}function Qw(e){let t=ve(),n=Xe(),r=Ze(),o=ue(),i=yR(()=>({...t,...n,...r,...o}),[t,n,r,o]);return e?e(i):i}function bR(){return em=Qw(),null}var em,bt,Jw=U(()=>{"use strict";Bu();Ru();Nu();Zf();em=null,bt=Object.assign(Qw,{getState:()=>{if(!em)throw new Error("Store not initialized. Make sure StoreProvider is mounted.");return em}})});var Ce=U(()=>{"use strict";Jw();Bu();Ru();Nu();Zf()});function K(){return(process.env.STORYBOOK_UICOPILOT_URL||SR).replace(/\/$/,"")}var SR,Zw,_e=U(()=>{"use strict";SR="https://app.uiparity.com";Zw=3.6});async function se(e,t,n=3e4){let r=new AbortController,o=setTimeout(()=>r.abort(),n);try{return await fetch(e,{...t,signal:r.signal})}catch(i){throw i instanceof DOMException&&i.name==="AbortError"?new Error(`Request timed out after ${n}ms: ${e}`):i}finally{clearTimeout(o)}}var ct=U(()=>{"use strict"});import{useEffect as Mo,useState as nc,useRef as mv,useCallback as im}from"react";import{addons as sm}from"storybook/manager-api";async function vz(e,t,n){let r=`${e}:${t}`,o=am.get(r);if(o)return y.debug("[useReviewScreenshots] Reusing in-flight Figma image fetch for",r),o;let i=(async()=>{let s=await se(`${Sv}/api/figma/image?projectId=${e}&nodeId=${t}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`}});return s.ok?s.json():{imageUrl:null}})().finally(()=>{am.delete(r)});return am.set(r,i),i}function kz(e,t,n){try{sessionStorage.setItem(`${rc}${e}`,JSON.stringify({figmaNodeId:t,imageUrl:n,timestamp:Date.now()}))}catch{}}function Cz(e,t){try{let n=sessionStorage.getItem(`${rc}${e}`);if(!n)return null;let r=JSON.parse(n);if(r.figmaNodeId===t&&Date.now()-r.timestamp<1800*1e3)return r.imageUrl;sessionStorage.removeItem(`${rc}${e}`)}catch{}return null}function Tz(e){try{let t=sessionStorage.getItem(`${rc}${e}`);if(!t)return null;let n=JSON.parse(t);if(n.imageUrl&&Date.now()-n.timestamp<300*1e3)return n.imageUrl}catch{}return null}var hv,xv,yv,bv,$i,Sv,In,lm,am,rc,wv,vv,ii,Ui=U(()=>{"use strict";Ce();cm();Oe();_e();ct();hv="storyArgsUpdated",xv="storyRendered",yv="forceRemount",bv=null,$i=()=>bv,Sv=K(),In=new Map,lm=null,am=new Map;rc="uicopilot-figma-image-";wv=(e,t,n)=>{let r=In.get(e);r?(r.storybookImageUrl=t,n&&(r.figmaImageUrl=n)):In.set(e,{storybookImageUrl:t,figmaImageUrl:n??null}),y.debug("[useReviewScreenshots] Populated historical screenshots for story:",e)},vv=(e,t,n)=>{lm=t;let r=In.get(e);r?r.figmaImageUrl=n:In.set(e,{storybookImageUrl:null,figmaImageUrl:n}),y.debug("[useReviewScreenshots] Pre-set Figma image for mapping:",{storyId:e,figmaNodeId:t,imageUrl:n.substring(0,50)+"..."})},ii=()=>{let[e,t]=nc(!1),[n,r]=nc(!1),[o,i]=nc(!1),[s,a]=nc(null),u=mv(null),{screenshotRefreshKey:c,triggerScreenshotRefresh:l}=ue(),d=im(()=>{let B=bt.getState().currentStoryId;B&&(y.debug("[useReviewScreenshots] Refreshing screenshots for story:",B),In.delete(B),u.current=null,i(!0),l())},[l]),g=im(()=>{let B=bt.getState().currentStoryId;if(B){y.debug("[useReviewScreenshots] Refreshing Storybook screenshot only for story:",B);let z=In.get(B);z&&(z.storybookImageUrl=null),u.current=null,i(!0),l()}},[l]),{sessionToken:p}=ve(),{selectedProjectId:h}=Xe(),{currentStoryId:S,currentMapping:T,loadingMapping:I}=Ze(),{setStorybookImageUrl:v,setFigmaImageUrl:D}=ue(),N=mv(null);Mo(()=>{S&&N.current&&N.current!==S&&(y.debug("[useReviewScreenshots] Story switched, clearing images"),v(""),D("")),N.current=S},[S,v,D]),Mo(()=>{!S||I||T||D("")},[S,T,I,D]),Mo(()=>{if(!S)return;let B=Tz(S);B&&(y.debug("[useReviewScreenshots] Quick-restored Figma image for:",S),D(B))},[S,D]),Mo(()=>{if(!S||I)return;let B=T?.figmaFileUrl;if(B){y.debug("[useReviewScreenshots] Restoring Figma image from mapping.figmaFileUrl for:",S),D(B);let z=In.get(S);z?z.figmaImageUrl=B:In.set(S,{storybookImageUrl:null,figmaImageUrl:B})}},[S,T,I,D]),Mo(()=>{let B=!1;return(async()=>{if(!p||!h||!S){y.debug("[useReviewScreenshots] Missing required context, skipping auto-load");return}u.current&&u.current!==S&&(y.debug("[useReviewScreenshots] Story changed, clearing stale screenshots"),v(""),D(""));let m=bt.getState();if(u.current===S&&m.storybookImageUrl&&m.figmaImageUrl){y.debug("[useReviewScreenshots] Screenshots already loaded for this story, skipping capture");return}let b=T?.figmaNodeId??null;if(b!==lm){y.debug("[useReviewScreenshots] Figma mapping changed, invalidating Figma image only for story:",S);let P=In.get(S);P&&(P.figmaImageUrl=null),lm=b,u.current=null}let k=T?.figmaNodeId;if(k&&!In.get(S)?.figmaImageUrl){let P=Cz(S,k);if(P){y.debug("[useReviewScreenshots] Hydrated Figma image from sessionStorage for story:",S),D(P);let M=In.get(S);M?M.figmaImageUrl=P:In.set(S,{storybookImageUrl:null,figmaImageUrl:P})}}let A=In.get(S),f=A&&A.storybookImageUrl&&A.figmaImageUrl,C=A&&A.storybookImageUrl&&!A.figmaImageUrl,E=A&&!A.storybookImageUrl&&A.figmaImageUrl;if(f){y.debug("[useReviewScreenshots] Using fully cached screenshots for story:",S),v(A.storybookImageUrl),D(A.figmaImageUrl),u.current=S;return}let x=C&&T?.figmaNodeId;x&&(y.debug("[useReviewScreenshots] Using cached Storybook, fetching new Figma for story:",S),v(A.storybookImageUrl));let F=E;if(F&&(y.debug("[useReviewScreenshots] Using cached Figma, recapturing Storybook for story:",S),D(A.figmaImageUrl)),u.current===S&&T?.figmaNodeId){y.debug("[useReviewScreenshots] Screenshots already loaded for this story, skipping");return}try{if(a(null),x?r(!0):(F||(t(!0),r(!0)),i(!0)),u.current=S,B)return;let P=F?A.figmaImageUrl:null,M;if(F)y.debug("[useReviewScreenshots] Figma cached (storybookOnlyRefresh), skipping fetch"),r(!1);else if(k){y.debug("[useReviewScreenshots] Found Figma node ID from mapping:",k);let w=null;try{y.debug("[useReviewScreenshots] Fetching Figma image (with caching)...");let R=await vz(h,k,p);w=R.imageUrl||null;let W=R.cached?"(cached)":"(fresh)";y.debug(`[useReviewScreenshots] Figma image fetched ${W}:`,w?"success":"not found")}catch(R){y.warn("[useReviewScreenshots] Failed to fetch Figma image:",R)}if(w)try{y.debug("[useReviewScreenshots] Fetching Figma image via proxy...");let R=`${Sv}/api/proxy/image?url=${encodeURIComponent(w)}`,W=await se(R);if(W.ok){let L=await W.blob(),oe=new FileReader,X=await new Promise((xe,Ee)=>{oe.onloadend=()=>xe(oe.result),oe.onerror=Ee,oe.readAsDataURL(L)});P=X,D(X),y.debug("[useReviewScreenshots] Figma image loaded via proxy");let ne=new Image;await new Promise(xe=>{ne.onload=()=>{M={width:ne.naturalWidth,height:ne.naturalHeight},y.debug("[useReviewScreenshots] Figma dimensions:",M),xe()},ne.onerror=()=>xe(),ne.src=X})}else P=w,D(w),y.warn("[useReviewScreenshots] Proxy failed, using direct URL as fallback")}catch(R){y.warn("[useReviewScreenshots] Proxy error, using direct URL as fallback:",R),P=w,D(w)}else y.warn("[useReviewScreenshots] No thumbnail found for node:",k),D(null);P&&k&&kz(S,k,P),r(!1)}else y.debug("[useReviewScreenshots] No Figma mapping exists for this component"),D(null),r(!1);let O=A?.storybookImageUrl||null;if(O)y.debug("[useReviewScreenshots] Using cached Storybook screenshot"),i(!1);else{y.debug("[useReviewScreenshots] Capturing Storybook screenshot for story:",S);let w=await oc({storyId:S,sessionToken:p||void 0,...M&&{figmaWidth:M.width,figmaHeight:M.height}});w&&!B?(O=w,v(w),y.debug("[useReviewScreenshots] Storybook screenshot captured at dimensions:",M||"natural")):y.warn("[useReviewScreenshots] Failed to capture Storybook screenshot"),i(!1)}In.set(S,{storybookImageUrl:O,figmaImageUrl:P}),y.debug("[useReviewScreenshots] Screenshots cached for story:",S)}catch(P){y.error("[useReviewScreenshots] Error loading screenshots:",P),a(P instanceof Error?P.message:"Failed to load screenshots"),u.current=null,r(!1),i(!1)}finally{t(!1)}})(),()=>{B=!0}},[p,h,S,T?.figmaNodeId,c]),Mo(()=>{let B=sm.getChannel(),z=null,m=b=>{bv=b.args,y.debug("[useReviewScreenshots] Args updated for story:",b.storyId,"args:",b.args),z&&clearTimeout(z),z=setTimeout(()=>{y.debug("[useReviewScreenshots] Story args changed, refreshing screenshot"),d()},500)};return B.on(hv,m),()=>{B.off(hv,m),z&&clearTimeout(z)}},[d]),Mo(()=>{let B=sm.getChannel(),z=!1,m=null,b=()=>{y.debug("[useReviewScreenshots] FORCE_REMOUNT detected, showing Storybook loader"),z=!0,i(!0)},k=()=>{z&&(y.debug("[useReviewScreenshots] STORY_RENDERED after remount, waiting for styles to settle..."),m&&clearTimeout(m),m=setTimeout(()=>{z=!1,y.debug("[useReviewScreenshots] Refreshing Storybook screenshot after HMR (preserving Figma)"),g()},500))};return B.on(yv,b),B.on(xv,k),()=>{B.off(yv,b),B.off(xv,k),m&&clearTimeout(m)}},[g]),Mo(()=>{let B=sm.getChannel(),z=async m=>{if(!m?.snapshot?.html){y.debug("[useReviewScreenshots] DOM mutated but no snapshot available");return}y.debug("[useReviewScreenshots] DOM mutated, capturing snapshot screenshot"),i(!0);try{let b=bt.getState().currentStoryId,k=await fetch("/__uicopilot/screenshot-snapshot",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...m.snapshot,storyId:b})});if(k.ok){let A=await k.json();if(A.screenshot){v(A.screenshot);let f=bt.getState().currentStoryId;if(f){let C=In.get(f);C?C.storybookImageUrl=A.screenshot:In.set(f,{storybookImageUrl:A.screenshot,figmaImageUrl:null})}}}else y.error("[useReviewScreenshots] Snapshot screenshot failed:",await k.text())}catch(b){y.error("[useReviewScreenshots] Snapshot screenshot error:",b)}finally{i(!1)}};return B.on("UICOPILOT/STORY_DOM_MUTATED",z),()=>{B.off("UICOPILOT/STORY_DOM_MUTATED",z)}},[]);let j=im((B,z,m)=>{y.debug("[useReviewScreenshots] setFigmaImageDirect called - bypassing load"),vv(B,z,m),D(m),r(!1),u.current=B},[D]);return{isLoadingScreenshots:e,isLoadingFigma:n,isLoadingStorybook:o,screenshotError:s,refreshScreenshots:d,refreshStorybookOnly:g,setFigmaImageDirect:j}}});function Fz(){return!K().startsWith("http://localhost")}function Ez(e,t,n){let r=t.createElement("div");r.style.color=e,t.body.appendChild(r);let o=n.getComputedStyle(r).color;return r.remove(),o}function kv(e,t,n){let r=new Map;return e.replace(/(?:color|oklch|oklab|lab|lch)\([^)]+\)/g,o=>{if(r.has(o))return r.get(o);let i=Ez(o,t,n);return r.set(o,i),i})}async function Az(){let e=(await import("html2canvas")).default,t=document.getElementById("storybook-preview-iframe");if(!t?.contentDocument||!t.contentWindow)throw new Error("Storybook iframe not accessible");let n=t.contentDocument.querySelector("#storybook-root > *")||t.contentDocument.querySelector("#root > *");if(!n)throw new Error("Story element not found in iframe");let r=t.contentWindow,o=t.contentDocument;return(await e(n,{useCORS:!0,logging:!1,backgroundColor:null,onclone:s=>{s.querySelectorAll("style").forEach(u=>{let c=u.textContent||"";/(?:color|oklch|oklab|lab|lch)\(/.test(c)&&(u.textContent=kv(c,o,r))});let a=Array.from(o.styleSheets);s.querySelectorAll('link[rel="stylesheet"]').forEach(u=>{let c=u.href,l=a.find(d=>d.href===c);if(l)try{let d="";for(let g of Array.from(l.cssRules))d+=g.cssText+`
|
|
12
|
+
--`+new Array((n||t.length)+1).join("-")+"^"})}var l0=U(()=>{"use strict";wl()});var E2,A2,P2,L2,M2,c0,Nl,u0=U(()=>{"use strict";l0();E2=9,A2=10,P2=12,L2=13,M2=32,c0=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),Nl=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t<this.str.length?this.str.charCodeAt(t):0}charCode(){return this.charCodeAt(this.pos)}isNameCharCode(t=this.charCode()){return t<128&&c0[t]===1}nextCharCode(){return this.charCodeAt(this.pos+1)}nextNonWsCode(t){return this.charCodeAt(this.findWsEnd(t))}skipWs(){this.pos=this.findWsEnd(this.pos)}findWsEnd(t){for(;t<this.str.length;t++){let n=this.str.charCodeAt(t);if(n!==L2&&n!==A2&&n!==P2&&n!==M2&&n!==E2)break}return t}substringToPos(t){return this.str.substring(this.pos,this.pos=t)}eat(t){this.charCode()!==t&&this.error("Expect `"+String.fromCharCode(t)+"`"),this.pos++}peek(){return this.pos<this.str.length?this.str.charAt(this.pos++):""}error(t){throw new a0(t,this.str,this.pos)}scanSpaces(){return this.substringToPos(this.findWsEnd(this.pos))}scanWord(){let t=this.pos;for(;t<this.str.length;t++){let n=this.str.charCodeAt(t);if(n>=128||c0[n]===0)break}return this.pos===t&&this.error("Expect a keyword"),this.substringToPos(t)}scanNumber(){let t=this.pos;for(;t<this.str.length;t++){let n=this.str.charCodeAt(t);if(n<48||n>57)break}return this.pos===t&&this.error("Expect a number"),this.substringToPos(t)}scanString(){let t=this.str.indexOf("'",this.pos+1);return t===-1&&(this.pos=this.str.length,this.error("Expect an apostrophe")),this.substringToPos(t+1)}}});function h0(e){let t=null,n=null;return e.eat($l),e.skipWs(),t=e.scanNumber(e),e.skipWs(),e.charCode()===Tp?(e.pos++,e.skipWs(),e.charCode()!==vp&&(n=e.scanNumber(e),e.skipWs())):n=t,e.eat(vp),{min:Number(t),max:n?Number(n):0}}function _2(e){let t=null,n=!1;switch(e.charCode()){case S0:e.pos++,t={min:0,max:0};break;case Cp:e.pos++,t={min:1,max:0};break;case _l:e.pos++,t={min:0,max:1};break;case kp:e.pos++,n=!0,e.charCode()===$l?t=h0(e):e.charCode()===_l?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case $l:t=h0(e);break;default:return null}return{type:"Multiplier",comma:n,min:t.min,max:t.max,term:null}}function so(e,t){let n=_2(e);return n!==null?(n.term=t,e.charCode()===kp&&e.charCodeAt(e.pos-1)===Cp||e.charCode()===_l&&e.charCodeAt(e.pos-1)===vp?so(e,n):n):t}function Sp(e){let t=e.peek();return t===""?null:so(e,{type:"Token",value:t})}function $2(e){let t;return e.eat(Ip),e.eat(Ol),t=e.scanWord(),e.eat(Ol),e.eat(wp),so(e,{type:"Property",name:t})}function U2(e){let t=null,n=null,r=1;return e.eat(Rs),e.charCode()===d0&&(e.peek(),r=-1),r==-1&&e.charCode()===f0?e.peek():(t=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(t+=e.scanWord())),e.skipWs(),e.eat(Tp),e.skipWs(),e.charCode()===f0?e.peek():(r=1,e.charCode()===d0&&(e.peek(),r=-1),n=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(n+=e.scanWord())),e.eat(Di),{type:"Range",min:t,max:n}}function j2(e){let t,n=null;if(e.eat(Ip),t=e.scanWord(),t==="boolean-expr"){e.eat(Rs);let r=Ul(e,Di);return e.eat(Di),e.eat(wp),so(e,{type:"Boolean",term:r.terms.length===1?r.terms[0]:r})}return e.charCode()===y0&&e.nextCharCode()===b0&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Rs&&(e.skipWs(),n=U2(e)),e.eat(wp),so(e,{type:"Type",name:t,opts:n})}function H2(e){let t=e.scanWord();return e.charCode()===y0?(e.pos++,{type:"Function",name:t}):so(e,{type:"Keyword",name:t})}function W2(e,t){function n(o,i){return{type:"Group",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let r;for(t=Object.keys(t).sort((o,i)=>m0[o]-m0[i]);t.length>0;){r=t.shift();let o=0,i=0;for(;o<e.length;o++){let s=e[o];s.type==="Combinator"&&(s.value===r?(i===-1&&(i=o-1),e.splice(o,1),o--):(i!==-1&&o-i>1&&(e.splice(i,o-i,n(e.slice(i,o),r)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,n(e.slice(i,o),r))}return r}function Ul(e,t=-1){let n=Object.create(null),r=[],o=null,i=e.pos,s=!1;for(;e.charCode()!==t;){let a=s?Ul(e,b0):G2(e);if(!a)break;if(a.type!=="Spaces"){if(s){if(a.terms.length===0){s=!1;continue}if(a.combinator===" "){for(;a.terms.length>1;)n[" "]=!0,r.push({type:"Combinator",value:" "},a.terms.shift());a=a.terms[0]}}a.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),n[a.value]=!0):o!==null&&o.type!=="Combinator"&&(n[" "]=!0,r.push({type:"Combinator",value:" "})),r.push(a),o=a,i=e.pos,s=a.type==="Function"}}return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:r,combinator:W2(r,n)||" ",disallowEmpty:!1,explicit:!1}}function V2(e){let t;return e.eat(Rs),t=Ul(e,Di),e.eat(Di),t.explicit=!0,e.charCode()===x0&&(e.pos++,t.disallowEmpty=!0),t}function G2(e){let t=e.charCode();switch(t){case Di:break;case Rs:return so(e,V2(e));case Ip:return e.nextCharCode()===Ol?$2(e):j2(e);case g0:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===g0?2:1))};case p0:return e.pos++,e.eat(p0),{type:"Combinator",value:"&&"};case Tp:return e.pos++,{type:"Comma"};case Ol:return so(e,{type:"String",value:e.scanString()});case N2:case B2:case D2:case z2:case R2:return{type:"Spaces",value:e.scanSpaces()};case O2:return t=e.nextCharCode(),e.isNameCharCode(t)?(e.pos++,{type:"AtKeyword",name:e.scanWord()}):Sp(e);case S0:case Cp:case _l:case kp:case x0:break;case $l:if(t=e.nextCharCode(),t<48||t>57)return Sp(e);break;default:return e.isNameCharCode(t)?H2(e):Sp(e)}}function zs(e){let t=new Nl(e),n=Ul(t);return t.pos!==e.length&&t.error("Unexpected input"),n.terms.length===1&&n.terms[0].type==="Group"?n.terms[0]:n}var B2,D2,R2,z2,N2,x0,kp,p0,Ol,y0,b0,S0,Cp,Tp,d0,Ip,wp,_l,O2,Rs,Di,$l,g0,vp,f0,m0,Fp=U(()=>{"use strict";u0();B2=9,D2=10,R2=12,z2=13,N2=32,x0=33,kp=35,p0=38,Ol=39,y0=40,b0=41,S0=42,Cp=43,Tp=44,d0=45,Ip=60,wp=62,_l=63,O2=64,Rs=91,Di=93,$l=123,g0=124,vp=125,f0=8734,m0={" ":1,"&&":2,"||":3,"|":4}});function w0(e){return typeof e=="function"?e:Ns}function Ep(e,t,n){function r(s){switch(o.call(n,s),s.type){case"Group":s.terms.forEach(r);break;case"Multiplier":case"Boolean":r(s.term);break;case"Type":case"Property":case"Keyword":case"AtKeyword":case"Function":case"String":case"Token":case"Comma":break;default:throw new Error("Unknown type: "+s.type)}i.call(n,s)}let o=Ns,i=Ns;if(typeof t=="function"?o=t:t&&(o=w0(t.enter),i=w0(t.leave)),o===Ns&&i===Ns)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");r(e,n)}var Ns,v0=U(()=>{"use strict";Ns=function(){}});var Ap=U(()=>{"use strict";sp();Fp();v0()});function K2(e){let t=[];return Fo(e,(n,r,o)=>t.push({type:n,value:e.slice(r,o),node:null})),t}function k0(e,t){return typeof e=="string"?K2(e):t.generate(e,Y2)}var Y2,C0=U(()=>{"use strict";dr();Y2={decorator(e){let t=[],n=null;return{...e,node(r){let o=n;n=r,e.node.call(this,r),n=o},emit(r,o,i){t.push({type:o,value:r,node:i?null:n})},result(){return t}}}}});function Tn(e,t,n){return t===mt&&n===Ct||e===mt&&t===mt&&n===mt?e:(e.type==="If"&&e.else===Ct&&t===mt&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:n})}function I0(e){return e.length>2&&e.charCodeAt(e.length-2)===X2&&e.charCodeAt(e.length-1)===Q2}function T0(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&I0(e.name)}function Ao(e,t=" ",n=!1){return{type:"Group",terms:e,combinator:t,disallowEmpty:!1,explicit:n}}function Os(e,t,n=new Set){if(!n.has(e))switch(n.add(e),e.type){case"If":e.match=Os(e.match,t,n),e.then=Os(e.then,t,n),e.else=Os(e.else,t,n);break;case"Type":return t[e.name]||e}return e}function Pp(e,t,n){switch(e){case" ":{let r=mt;for(let o=t.length-1;o>=0;o--){let i=t[o];r=Tn(i,r,Ct)}return r}case"|":{let r=Ct,o=null;for(let i=t.length-1;i>=0;i--){let s=t[i];if(T0(s)&&(o===null&&i>0&&T0(t[i-1])&&(o=Object.create(null),r=Tn({type:"Enum",map:o},mt,r)),o!==null)){let a=(I0(s.name)?s.name.slice(0,-1):s.name).toLowerCase();if(!(a in o)){o[a]=s;continue}}o=null,r=Tn(s,mt,r)}return r}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let r=Ct;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Pp(e,t.filter(function(a){return a!==i}),!1):s=mt,r=Tn(i,s,r)}return r}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let r=n?mt:Ct;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Pp(e,t.filter(function(a){return a!==i}),!0):s=mt,r=Tn(i,s,r)}return r}}}function J2(e){let t=mt,n=Ri(e.term);if(e.max===0)n=Tn(n,jl,Ct),t=Tn(n,null,Ct),t.then=Tn(mt,mt,t),e.comma&&(t.then.else=Tn({type:"Comma",syntax:e},t,Ct));else for(let r=e.min||1;r<=e.max;r++)e.comma&&t!==mt&&(t=Tn({type:"Comma",syntax:e},t,Ct)),t=Tn(n,Tn(mt,mt,t),Ct);if(e.min===0)t=Tn(mt,mt,t);else for(let r=0;r<e.min-1;r++)e.comma&&t!==mt&&(t=Tn({type:"Comma",syntax:e},t,Ct)),t=Tn(n,t,Ct);return t}function Ri(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=Pp(e.combinator,e.terms.map(Ri),!1);return e.disallowEmpty&&(t=Tn(t,jl,Ct)),t}case"Multiplier":return J2(e);case"Boolean":{let t=Ri(e.term),n=Ri(Ao([Ao([{type:"Keyword",name:"not"},{type:"Type",name:"!boolean-group"}]),Ao([{type:"Type",name:"!boolean-group"},Ao([{type:"Multiplier",comma:!1,min:0,max:0,term:Ao([{type:"Keyword",name:"and"},{type:"Type",name:"!boolean-group"}])},{type:"Multiplier",comma:!1,min:0,max:0,term:Ao([{type:"Keyword",name:"or"},{type:"Type",name:"!boolean-group"}])}],"|")])],"|")),r=Ri(Ao([{type:"Type",name:"!term"},Ao([{type:"Token",value:"("},{type:"Type",name:"!self"},{type:"Token",value:")"}]),{type:"Type",name:"general-enclosed"}],"|"));return Os(r,{"!term":t,"!self":n}),Os(n,{"!boolean-group":r}),n}case"Type":case"Property":return{type:e.type,name:e.name,syntax:e};case"Keyword":return{type:e.type,name:e.name.toLowerCase(),syntax:e};case"AtKeyword":return{type:e.type,name:"@"+e.name.toLowerCase(),syntax:e};case"Function":return{type:e.type,name:e.name.toLowerCase()+"(",syntax:e};case"String":return e.value.length===3?{type:"Token",value:e.value.charAt(1),syntax:e}:{type:e.type,value:e.value.substr(1,e.value.length-2).replace(/\\'/g,"'"),syntax:e};case"Token":return{type:e.type,value:e.value,syntax:e};case"Comma":return{type:e.type,syntax:e};default:throw new Error("Unknown node type:",e.type)}}function _s(e,t){return typeof e=="string"&&(e=zs(e)),{type:"MatchGraph",match:Ri(e),syntax:t||null,source:e}}var mt,Ct,jl,X2,Q2,Lp=U(()=>{"use strict";Fp();mt={type:"Match"},Ct={type:"Mismatch"},jl={type:"DisallowEmpty"},X2=40,Q2=41});function oP(e){let t=null,n=null,r=e;for(;r!==null;)n=r.prev,r.prev=t,t=r,r=n;return t}function Mp(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=t.charCodeAt(n),o=e.charCodeAt(n);if(o>=65&&o<=90&&(o=o|32),o!==r)return!1}return!0}function iP(e){return e.type!==9?!1:e.value!=="?"}function P0(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||iP(e)}function L0(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function sP(e,t,n){function r(){do v++,I=v<e.length?e[v]:null;while(I!==null&&(I.type===13||I.type===25))}function o(j){let B=v+j;return B<e.length?e[B]:null}function i(j,B){return{nextState:j,matchStack:N,syntaxStack:d,thenStack:g,tokenIndex:v,prev:B}}function s(j){g={nextState:j,matchStack:N,syntaxStack:d,prev:g}}function a(j){p=i(j,p)}function u(){N={type:eP,syntax:t.syntax,token:I,prev:N},r(),h=null,v>D&&(D=v)}function c(){d={syntax:t.syntax,opts:t.syntax.opts||d!==null&&d.opts||null,prev:d},N={type:Bp,syntax:t.syntax,token:N.token,prev:N}}function l(){N.type===Bp?N=N.prev:N={type:M0,syntax:d.syntax,token:N.token,prev:N},d=d.prev}let d=null,g=null,p=null,h=null,S=0,T=null,I=null,v=-1,D=0,N={type:Z2,syntax:null,token:null,prev:null};for(r();T===null&&++S<A0;)switch(t.type){case"Match":if(g===null){if(I!==null&&(v!==e.length-1||I.value!=="\\0"&&I.value!=="\\9")){t=Ct;break}T=E0;break}if(t=g.nextState,t===jl)if(g.matchStack===N){t=Ct;break}else t=mt;for(;g.syntaxStack!==d;)l();g=g.prev;break;case"Mismatch":if(h!==null&&h!==!1)(p===null||v>p.tokenIndex)&&(p=h,h=!1);else if(p===null){T=tP;break}t=p.nextState,g=p.thenStack,d=p.syntaxStack,N=p.matchStack,v=p.tokenIndex,I=v<e.length?e[v]:null,p=p.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==Ct&&a(t.else),t.then!==mt&&s(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let z=t.syntax.terms;if(t.index===z.length){if(t.mask===0||t.syntax.all){t=Ct;break}t=mt;break}if(t.mask===(1<<z.length)-1){t=mt;break}for(;t.index<z.length;t.index++){let m=1<<t.index;if((t.mask&m)===0){a(t),s({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|m}),t=z[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(I!==null){let z=I.value.toLowerCase();if(z.indexOf("\\")!==-1&&(z=z.replace(/\\[09].*$/,"")),F0.call(t.map,z)){t=t.map[z];break}}t=Ct;break;case"Generic":{let z=d!==null?d.opts:null,m=v+Math.floor(t.fn(I,o,z));if(!isNaN(m)&&m>v){for(;v<m;)u();t=mt}else t=Ct;break}case"Type":case"Property":{let z=t.type==="Type"?"types":"properties",m=F0.call(n,z)?n[z][t.name]:null;if(!m||!m.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(h!==!1&&I!==null&&t.type==="Type"&&(t.name==="custom-ident"&&I.type===1||t.name==="length"&&I.value==="0")){h===null&&(h=i(t,p)),t=Ct;break}c(),t=m.matchRef||m.match;break}case"Keyword":{let z=t.name;if(I!==null){let m=I.value;if(m.indexOf("\\")!==-1&&(m=m.replace(/\\[09].*$/,"")),Mp(m,z)){u(),t=mt;break}}t=Ct;break}case"AtKeyword":case"Function":if(I!==null&&Mp(I.value,t.name)){u(),t=mt;break}t=Ct;break;case"Token":if(I!==null&&I.value===t.value){u(),t=mt;break}t=Ct;break;case"Comma":I!==null&&I.type===18?P0(N.token)?t=Ct:(u(),t=L0(I)?Ct:mt):t=P0(N.token)||L0(I)?mt:Ct;break;case"String":let j="",B=v;for(;B<e.length&&j.length<t.value.length;B++)j+=e[B].value;if(Mp(j,t.value)){for(;v<B;)u();t=mt}else t=Ct;break;default:throw new Error("Unknown node type: "+t.type)}switch(rP+=S,T){case null:console.warn("[csstree-match] BREAK after "+A0+" iterations"),T=nP,N=null;break;case E0:for(;d!==null;)l();break;default:N=null}return{tokens:e,reason:T,iterations:S,match:N,longestMatch:D}}function Dp(e,t,n){let r=sP(e,t,n||{});if(r.match===null)return r;let o=r.match,i=r.match={syntax:t.syntax||null,match:[]},s=[i];for(o=oP(o).prev;o!==null;){switch(o.type){case Bp:i.match.push(i={syntax:o.syntax,match:[]}),s.push(i);break;case M0:s.pop(),i=s[s.length-1];break;default:i.match.push({syntax:o.syntax||null,token:o.token.value,node:o.token.node})}o=o.prev}return r}var F0,Z2,eP,Bp,M0,E0,tP,nP,A0,rP,B0=U(()=>{"use strict";Lp();({hasOwnProperty:F0}=Object.prototype),Z2=0,eP=1,Bp=2,M0=3,E0="Match",tP="Mismatch",nP="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",A0=15e3,rP=0});var zp={};Se(zp,{getTrace:()=>D0,isKeyword:()=>cP,isProperty:()=>lP,isType:()=>aP});function D0(e){function t(o){return o===null?!1:o.type==="Type"||o.type==="Property"||o.type==="Keyword"}function n(o){if(Array.isArray(o.match)){for(let i=0;i<o.match.length;i++)if(n(o.match[i]))return t(o.syntax)&&r.unshift(o.syntax),!0}else if(o.node===e)return r=t(o.syntax)?[o.syntax]:[],!0;return!1}let r=null;return this.matched!==null&&n(this.matched),r}function aP(e,t){return Rp(this,e,n=>n.type==="Type"&&n.name===t)}function lP(e,t){return Rp(this,e,n=>n.type==="Property"&&n.name===t)}function cP(e){return Rp(this,e,t=>t.type==="Keyword")}function Rp(e,t,n){let r=D0.call(e,t);return r===null?!1:r.some(n)}var R0=U(()=>{"use strict"});function z0(e){return"node"in e?e.node:z0(e.match[0])}function N0(e){return"node"in e?e.node:N0(e.match[e.match.length-1])}function Np(e,t,n,r,o){function i(a){if(a.syntax!==null&&a.syntax.type===r&&a.syntax.name===o){let u=z0(a),c=N0(a);e.syntax.walk(t,function(l,d,g){if(l===u){let p=new rr;do{if(p.appendData(d.data),d.data===c)break;d=d.next}while(d!==null);s.push({parent:g,nodes:p})}})}Array.isArray(a.match)&&a.match.forEach(i)}let s=[];return n.matched!==null&&i(n.matched),s}var O0=U(()=>{"use strict";Fs()});function Op(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function _0(e){return!!e&&Op(e.offset)&&Op(e.line)&&Op(e.column)}function uP(e,t){return function(r,o){if(!r||r.constructor!==Object)return o(r,"Type of node should be an Object");for(let i in r){let s=!0;if($s.call(r,i)!==!1){if(i==="type")r.type!==e&&o(r,"Wrong node type `"+r.type+"`, expected `"+e+"`");else if(i==="loc"){if(r.loc===null)continue;if(r.loc&&r.loc.constructor===Object)if(typeof r.loc.source!="string")i+=".source";else if(!_0(r.loc.start))i+=".start";else if(!_0(r.loc.end))i+=".end";else continue;s=!1}else if(t.hasOwnProperty(i)){s=!1;for(let a=0;!s&&a<t[i].length;a++){let u=t[i][a];switch(u){case String:s=typeof r[i]=="string";break;case Boolean:s=typeof r[i]=="boolean";break;case null:s=r[i]===null;break;default:typeof u=="string"?s=r[i]&&r[i].type===u:Array.isArray(u)&&(s=r[i]instanceof rr)}}}else o(r,"Unknown field `"+i+"` for "+e+" node type");s||o(r,"Bad value for `"+e+"."+i+"`")}}for(let i in t)$s.call(t,i)&&$s.call(r,i)===!1&&o(r,"Field `"+e+"."+i+"` is missed")}}function $0(e,t){let n=[];for(let r=0;r<e.length;r++){let o=e[r];if(o===String||o===Boolean)n.push(o.name.toLowerCase());else if(o===null)n.push("null");else if(typeof o=="string")n.push(o);else if(Array.isArray(o))n.push("List<"+($0(o,t)||"any")+">");else throw new Error("Wrong value `"+o+"` in `"+t+"` structure definition")}return n.join(" | ")}function pP(e,t){let n=t.structure,r={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in n){if($s.call(n,i)===!1)continue;let s=r[i]=Array.isArray(n[i])?n[i].slice():[n[i]];o[i]=$0(s,e+"."+i)}return{docs:o,check:uP(e,r)}}function U0(e){let t={};if(e.node){for(let n in e.node)if($s.call(e.node,n)){let r=e.node[n];if(r.structure)t[n]=pP(n,r);else throw new Error("Missed `structure` field in `"+n+"` node type definition")}}return t}var $s,j0=U(()=>{"use strict";Fs();({hasOwnProperty:$s}=Object.prototype)});function _p(e,t,n){let r={};for(let o in e)e[o].syntax&&(r[o]=n?e[o].syntax:Ai(e[o].syntax,{compact:t}));return r}function dP(e,t,n){let r={};for(let[o,i]of Object.entries(e))r[o]={prelude:i.prelude&&(n?i.prelude.syntax:Ai(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&_p(i.descriptors,t,n)};return r}function gP(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function fP(e){let t=e.terms[0];return e.explicit===!1&&e.terms.length===1&&t.type==="Multiplier"&&t.comma===!0}function Ar(e,t,n){return{matched:e,iterations:n,error:t,...zp}}function zi(e,t,n,r){let o=k0(n,e.syntax),i;return gP(o)?Ar(null,new Error("Matching for a tree with var() is not supported")):(r&&(i=Dp(o,e.cssWideKeywordsSyntax,e)),(!r||!i.match)&&(i=Dp(o,t.match,e),!i.match)?Ar(null,new Vb(i.reason,t.syntax,n,i),i.iterations):Ar(i.match,null,i.iterations))}var Us,H0=U(()=>{"use strict";Gb();Ml();Bl();i0();s0();Ap();C0();Lp();B0();R0();O0();j0();Us=class{constructor(t,n,r){if(this.cssWideKeywords=Mi,this.syntax=n,this.generic=!1,this.units={...zl},this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=r||U0(t),t){if(t.cssWideKeywords&&(this.cssWideKeywords=t.cssWideKeywords),t.units)for(let o of Object.keys(zl))Array.isArray(t.units[o])&&(this.units[o]=t.units[o]);if(t.types)for(let[o,i]of Object.entries(t.types))this.addType_(o,i);if(t.generic){this.generic=!0;for(let[o,i]of Object.entries(o0(this.units)))this.addType_(o,i)}if(t.atrules)for(let[o,i]of Object.entries(t.atrules))this.addAtrule_(o,i);if(t.properties)for(let[o,i]of Object.entries(t.properties))this.addProperty_(o,i)}this.cssWideKeywordsSyntax=_s(this.cssWideKeywords.join(" | "))}checkStructure(t){function n(i,s){o.push({node:i,message:s})}let r=this.structure,o=[];return this.syntax.walk(t,function(i){r.hasOwnProperty(i.type)?r[i.type].check(i,n):n(i,"Unknown node type `"+i.type+"`")}),o.length?o:!1}createDescriptor(t,n,r,o=null){let i={type:n,name:r},s={type:n,name:r,parent:o,serializable:typeof t=="string"||t&&typeof t.type=="string",syntax:null,match:null,matchRef:null};return typeof t=="function"?s.match=_s(t,i):(typeof t=="string"?Object.defineProperty(s,"syntax",{get(){return Object.defineProperty(s,"syntax",{value:zs(t)}),s.syntax}}):s.syntax=t,Object.defineProperty(s,"match",{get(){return Object.defineProperty(s,"match",{value:_s(s.syntax,i)}),s.match}}),n==="Property"&&Object.defineProperty(s,"matchRef",{get(){let a=s.syntax,u=fP(a)?_s({...a,terms:[a.terms[0].term]},i):null;return Object.defineProperty(s,"matchRef",{value:u}),u}})),s}addAtrule_(t,n){n&&(this.atrules[t]={type:"Atrule",name:t,prelude:n.prelude?this.createDescriptor(n.prelude,"AtrulePrelude",t):null,descriptors:n.descriptors?Object.keys(n.descriptors).reduce((r,o)=>(r[o]=this.createDescriptor(n.descriptors[o],"AtruleDescriptor",o,t),r),Object.create(null)):null})}addProperty_(t,n){n&&(this.properties[t]=this.createDescriptor(n,"Property",t))}addType_(t,n){n&&(this.types[t]=this.createDescriptor(n,"Type",t))}checkAtruleName(t){if(!this.getAtrule(t))return new Pi("Unknown at-rule","@"+t)}checkAtrulePrelude(t,n){let r=this.checkAtruleName(t);if(r)return r;let o=this.getAtrule(t);if(!o.prelude&&n)return new SyntaxError("At-rule `@"+t+"` should not contain a prelude");if(o.prelude&&!n&&!zi(this,o.prelude,"",!1).matched)return new SyntaxError("At-rule `@"+t+"` should contain a prelude")}checkAtruleDescriptorName(t,n){let r=this.checkAtruleName(t);if(r)return r;let o=this.getAtrule(t),i=Pl(n);if(!o.descriptors)return new SyntaxError("At-rule `@"+t+"` has no known descriptors");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new Pi("Unknown at-rule descriptor",n)}checkPropertyName(t){if(!this.getProperty(t))return new Pi("Unknown property",t)}matchAtrulePrelude(t,n){let r=this.checkAtrulePrelude(t,n);if(r)return Ar(null,r);let o=this.getAtrule(t);return o.prelude?zi(this,o.prelude,n||"",!1):Ar(null,null)}matchAtruleDescriptor(t,n,r){let o=this.checkAtruleDescriptorName(t,n);if(o)return Ar(null,o);let i=this.getAtrule(t),s=Pl(n);return zi(this,i.descriptors[s.name]||i.descriptors[s.basename],r,!1)}matchDeclaration(t){return t.type!=="Declaration"?Ar(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,n){if(ap(t).custom)return Ar(null,new Error("Lexer matching doesn't applicable for custom properties"));let r=this.checkPropertyName(t);return r?Ar(null,r):zi(this,this.getProperty(t),n,!0)}matchType(t,n){let r=this.getType(t);return r?zi(this,r,n,!1):Ar(null,new Pi("Unknown type",t))}match(t,n){return typeof t!="string"&&(!t||!t.type)?Ar(null,new Pi("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),zi(this,t,n,!1))}findValueFragments(t,n,r,o){return Np(this,n,this.matchProperty(t,n),r,o)}findDeclarationValueFragments(t,n,r){return Np(this,t.value,this.matchDeclaration(t),n,r)}findAllFragments(t,n,r){let o=[];return this.syntax.walk(t,{visit:"Declaration",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,n,r))}}),o}getAtrule(t,n=!0){let r=Pl(t);return(r.vendor&&n?this.atrules[r.name]||this.atrules[r.basename]:this.atrules[r.name])||null}getAtrulePrelude(t,n=!0){let r=this.getAtrule(t,n);return r&&r.prelude||null}getAtruleDescriptor(t,n){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[n]||null}getProperty(t,n=!0){let r=ap(t);return(r.vendor&&n?this.properties[r.name]||this.properties[r.basename]:this.properties[r.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(u,c){return c?`<${u}>`:`<'${u}'>`}function n(u,c,l,d){if(l.has(c))return l.get(c);l.set(c,!1),d.syntax!==null&&Ep(d.syntax,function(g){if(g.type!=="Type"&&g.type!=="Property")return;let p=g.type==="Type"?u.types:u.properties,h=g.type==="Type"?o:i;hasOwnProperty.call(p,g.name)?n(u,g.name,h,p[g.name])&&(r.push(`${t(c,l===o)} used broken syntax definition ${t(g.name,g.type==="Type")}`),l.set(c,!0)):(r.push(`${t(c,l===o)} used missed syntax definition ${t(g.name,g.type==="Type")}`),l.set(c,!0))},this)}let r=[],o=new Map,i=new Map;for(let u in this.types)n(this,u,o,this.types[u]);for(let u in this.properties)n(this,u,i,this.properties[u]);let s=[...o.keys()].filter(u=>o.get(u)),a=[...i.keys()].filter(u=>i.get(u));return s.length||a.length?{errors:r,types:s,properties:a}:null}dump(t,n){return{generic:this.generic,cssWideKeywords:this.cssWideKeywords,units:this.units,types:_p(this.types,!n,t),properties:_p(this.properties,!n,t),atrules:dP(this.atrules,!n,t)}}toString(){return JSON.stringify(this.dump())}}});function $p(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function mP(e,t){let n=Object.create(null);for(let r of Object.keys(e))t.includes(r)&&(n[r]=e[r]);return n}function Up(e,t,n){let r={...e};for(let[o,i]of Object.entries(t))r[o]={...r[o],...n?mP(i,n):i};return r}function js(e,t){let n={...e};for(let[r,o]of Object.entries(t))switch(r){case"generic":n[r]=!!o;break;case"cssWideKeywords":n[r]=e[r]?[...e[r],...o]:o||[];break;case"units":n[r]={...e[r]};for(let[i,s]of Object.entries(o))n[r][i]=Array.isArray(s)?s:[];break;case"atrules":n[r]={...e[r]};for(let[i,s]of Object.entries(o)){let a=n[r][i]||{},u=n[r][i]={prelude:a.prelude||null,descriptors:{...a.descriptors}};if(s){u.prelude=s.prelude?$p(u.prelude,s.prelude):u.prelude||null;for(let[c,l]of Object.entries(s.descriptors||{}))u.descriptors[c]=l?$p(u.descriptors[c],l):null;Object.keys(u.descriptors).length||(u.descriptors=null)}}break;case"types":case"properties":n[r]={...e[r]};for(let[i,s]of Object.entries(o))n[r][i]=$p(n[r][i],s);break;case"parseContext":n[r]={...e[r],...o};break;case"scope":case"features":n[r]=Up(e[r],o);break;case"atrule":case"pseudo":n[r]=Up(e[r],o,["parse"]);break;case"node":n[r]=Up(e[r],o,["name","structure","parse","generate","walkContext"]);break}return n}var W0=U(()=>{"use strict"});function V0(e){let t=sb(e),n=jb(e),r=Db(e),{fromPlainObject:o,toPlainObject:i}=zb(n),s={lexer:null,createLexer:a=>new Us(a,s,s.lexer.structure),tokenize:Fo,parse:t,generate:r,walk:n,find:n.find,findLast:n.findLast,findAll:n.findAll,fromPlainObject:o,toPlainObject:i,fork(a){let u=js({},e);return V0(typeof a=="function"?a(u):js(u,a))}};return s.lexer=new Us({generic:e.generic,cssWideKeywords:e.cssWideKeywords,units:e.units,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},s),s}var G0,q0=U(()=>{"use strict";dr();ab();Rb();Nb();Hb();H0();W0();G0=e=>V0(js({},e))});var Y0,K0=U(()=>{"use strict";Y0={generic:!0,cssWideKeywords:["initial","inherit","unset","revert","revert-layer"],units:{angle:["deg","grad","rad","turn"],decibel:["db"],flex:["fr"],frequency:["hz","khz"],length:["cm","mm","q","in","pt","pc","px","em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh","vw","svw","lvw","dvw","vh","svh","lvh","dvh","vi","svi","lvi","dvi","vb","svb","lvb","dvb","vmin","svmin","lvmin","dvmin","vmax","svmax","lvmax","dvmax","cqw","cqh","cqi","cqb","cqmin","cqmax"],resolution:["dpi","dpcm","dppx","x"],semitones:["st"],time:["s","ms"]},types:{"abs()":"abs( <calc-sum> )","absolute-size":"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large","acos()":"acos( <calc-sum> )","alpha-value":"<number>|<percentage>","an+b":"odd|even|<integer>|<n-dimension>|'+'? \u2020 n|-n|<ndashdigit-dimension>|'+'? \u2020 <ndashdigit-ident>|<dashndashdigit-ident>|<n-dimension> <signed-integer>|'+'? \u2020 n <signed-integer>|-n <signed-integer>|<ndash-dimension> <signless-integer>|'+'? \u2020 n- <signless-integer>|-n- <signless-integer>|<n-dimension> ['+'|'-'] <signless-integer>|'+'? \u2020 n ['+'|'-'] <signless-integer>|-n ['+'|'-'] <signless-integer>","anchor()":"anchor( <anchor-name>?&&<anchor-side> , <length-percentage>? )","anchor-name":"<dashed-ident>","anchor-side":"inside|outside|top|left|right|bottom|start|end|self-start|self-end|<percentage>|center","anchor-size":"width|height|block|inline|self-block|self-inline","anchor-size()":"anchor-size( [<anchor-name>||<anchor-size>]? , <length-percentage>? )","angle-percentage":"<angle>|<percentage>","angular-color-hint":"<angle-percentage>|<zero>","angular-color-stop":"<color> <color-stop-angle>?","angular-color-stop-list":"<angular-color-stop> , [<angular-color-hint>? , <angular-color-stop>]#?","animateable-feature":"scroll-position|contents|<custom-ident>","animation-action":"none|play|play-once|play-forwards|play-backwards|pause|reset|replay","asin()":"asin( <calc-sum> )","atan()":"atan( <calc-sum> )","atan2()":"atan2( <calc-sum> , <calc-sum> )",attachment:"scroll|fixed|local","attr()":"attr( <attr-name> <attr-type>? , <declaration-value>? )","attr-matcher":"['~'|'|'|'^'|'$'|'*']? '='","attr-modifier":"i|s","attr-type":"type( <syntax> )|raw-string|number|<attr-unit>","attribute-selector":"'[' <wq-name> ']'|'[' <wq-name> <attr-matcher> [<string-token>|<ident-token>] <attr-modifier>? ']'","auto-repeat":"repeat( [auto-fill|auto-fit] , [<line-names>? <fixed-size>]+ <line-names>? )","auto-track-list":"[<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>? <auto-repeat> [<line-names>? [<fixed-size>|<fixed-repeat>]]* <line-names>?",axis:"block|inline|x|y","baseline-position":"[first|last]? baseline","basic-shape":"<inset()>|<xywh()>|<rect()>|<circle()>|<ellipse()>|<polygon()>|<path()>","basic-shape-rect":"<inset()>|<rect()>|<xywh()>","bg-clip":"<visual-box>|border-area|text","bg-image":"<image>|none","bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<visual-box>||<visual-box>","bg-position":"[[left|center|right|top|bottom|<length-percentage>]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]|[center|[left|right] <length-percentage>?]&&[center|[top|bottom] <length-percentage>?]]","bg-size":"[<length-percentage [0,\u221E]>|auto]{1,2}|cover|contain","blend-mode":"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity","blur()":"blur( <length>? )","brightness()":"brightness( [<number>|<percentage>]? )","calc()":"calc( <calc-sum> )","calc-constant":"e|pi|infinity|-infinity|NaN","calc-product":"<calc-value> ['*' <calc-value>|'/' <number>]*","calc-size()":"calc-size( <calc-size-basis> , <calc-sum> )","calc-size-basis":"<intrinsic-size-keyword>|<calc-size()>|any|<calc-sum>","calc-sum":"<calc-product> [['+'|'-'] <calc-product>]*","calc-value":"<number>|<dimension>|<percentage>|<calc-constant>|( <calc-sum> )","cf-final-image":"<image>|<color>","cf-mixing-image":"<percentage>?&&<image>","circle()":"circle( <radial-size>? [at <position>]? )","clamp()":"clamp( <calc-sum>#{3} )","class-selector":"'.' <ident-token>","clip-source":"<url>",color:"<color-base>|currentColor|<system-color>|<device-cmyk()>|<light-dark()>|<-non-standard-color>","color()":"color( <colorspace-params> [/ [<alpha-value>|none]]? )","color-base":"<hex-color>|<color-function>|<named-color>|<color-mix()>|transparent","color-function":"<rgb()>|<rgba()>|<hsl()>|<hsla()>|<hwb()>|<lab()>|<lch()>|<oklab()>|<oklch()>|<color()>","color-interpolation-method":"in [<rectangular-color-space>|<polar-color-space> <hue-interpolation-method>?|<custom-color-space>]","color-mix()":"color-mix( <color-interpolation-method> , [<color>&&<percentage [0,100]>?]#{2} )","color-stop":"<color-stop-length>|<color-stop-angle>","color-stop-angle":"[<angle-percentage>|<zero>]{1,2}","color-stop-length":"<length-percentage>{1,2}","color-stop-list":"<linear-color-stop> , [<linear-color-hint>? , <linear-color-stop>]#?","colorspace-params":"[<predefined-rgb-params>|<xyz-params>]",combinator:"'>'|'+'|'~'|['|' '|']","common-lig-values":"[common-ligatures|no-common-ligatures]","compat-auto":"searchfield|textarea|checkbox|radio|menulist|listbox|meter|progress-bar|button","compat-special":"textfield|menulist-button","complex-selector":"<complex-selector-unit> [<combinator>? <complex-selector-unit>]*","complex-selector-list":"<complex-selector>#","composite-style":"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor","compositing-operator":"add|subtract|intersect|exclude","compound-selector":"[<type-selector>? <subclass-selector>*]!","compound-selector-list":"<compound-selector>#","conic-gradient()":"conic-gradient( [<conic-gradient-syntax>] )","conic-gradient-syntax":"[[[from [<angle>|<zero>]]? [at <position>]?]||<color-interpolation-method>]? , <angular-color-stop-list>","container-condition":"not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]","container-name":"<custom-ident>","container-query":"not <query-in-parens>|<query-in-parens> [[and <query-in-parens>]*|[or <query-in-parens>]*]","content-distribution":"space-between|space-around|space-evenly|stretch","content-list":"[<string>|contents|<image>|<counter>|<quote>|<target>|<leader()>|<attr()>]+","content-position":"center|start|end|flex-start|flex-end","content-replacement":"<image>","contextual-alt-values":"[contextual|no-contextual]","contrast()":"contrast( [<number>|<percentage>]? )","coord-box":"content-box|padding-box|border-box|fill-box|stroke-box|view-box","corner-shape-value":"round|scoop|bevel|notch|square|squircle|<superellipse()>","cos()":"cos( <calc-sum> )",counter:"<counter()>|<counters()>","counter()":"counter( <counter-name> , <counter-style>? )","counter-name":"<custom-ident>","counter-style":"<counter-style-name>|symbols( )","counter-style-name":"<custom-ident>","counters()":"counters( <counter-name> , <string> , <counter-style>? )","cross-fade()":"cross-fade( <cf-mixing-image> , <cf-final-image>? )","cubic-bezier()":"cubic-bezier( [<number [0,1]> , <number>]#{2} )","cubic-bezier-easing-function":"ease|ease-in|ease-out|ease-in-out|cubic-bezier( <number [0,1]> , <number> , <number [0,1]> , <number> )","cursor-predefined":"auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing","custom-color-space":"<dashed-ident>","custom-params":"<dashed-ident> [<number>|<percentage>|none]+",dasharray:"[[<length-percentage>|<number>]+]#","dashndashdigit-ident":"<ident-token>","deprecated-system-color":"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonHighlight|ButtonShadow|CaptionText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText","discretionary-lig-values":"[discretionary-ligatures|no-discretionary-ligatures]","display-box":"contents|none","display-inside":"flow|flow-root|table|flex|grid|ruby","display-internal":"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container","display-legacy":"inline-block|inline-list-item|inline-table|inline-flex|inline-grid","display-listitem":"<display-outside>?&&[flow|flow-root]?&&list-item","display-outside":"block|inline|run-in","drop-shadow()":"drop-shadow( [<color>?&&<length>{2,3}] )","dynamic-range-limit-mix()":"dynamic-range-limit-mix( [<'dynamic-range-limit'>&&<percentage [0,100]>]#{2,} )","easing-function":"<linear-easing-function>|<cubic-bezier-easing-function>|<step-easing-function>","east-asian-variant-values":"[jis78|jis83|jis90|jis04|simplified|traditional]","east-asian-width-values":"[full-width|proportional-width]","element()":"element( <custom-ident> , [first|start|last|first-except]? )|element( <id-selector> )","ellipse()":"ellipse( <radial-size>? [at <position>]? )","env()":"env( <custom-ident> , <declaration-value>? )","exp()":"exp( <calc-sum> )","explicit-track-list":"[<line-names>? <track-size>]+ <line-names>?","family-name":"<string>|<custom-ident>+","feature-tag-value":"<string> [<integer>|on|off]?","feature-type":"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation","feature-value-block":"<feature-type> '{' <feature-value-declaration-list> '}'","feature-value-block-list":"<feature-value-block>+","feature-value-declaration":"<custom-ident> : <integer>+ ;","feature-value-declaration-list":"<feature-value-declaration>","feature-value-name":"<custom-ident>","filter-function":"<blur()>|<brightness()>|<contrast()>|<drop-shadow()>|<grayscale()>|<hue-rotate()>|<invert()>|<opacity()>|<saturate()>|<sepia()>","filter-value-list":"[<filter-function>|<url>]+","final-bg-layer":"<bg-image>||<bg-position> [/ <bg-size>]?||<repeat-style>||<attachment>||<visual-box>||<visual-box>||<'background-color'>","fit-content()":"fit-content( <length-percentage [0,\u221E]> )","fixed-breadth":"<length-percentage>","fixed-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <fixed-size>]+ <line-names>? )","fixed-size":"<fixed-breadth>|minmax( <fixed-breadth> , <track-breadth> )|minmax( <inflexible-breadth> , <fixed-breadth> )","font-stretch-absolute":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|<percentage>","font-variant-css2":"normal|small-caps","font-weight-absolute":"normal|bold|<number [1,1000]>","font-width-css3":"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded","form-control-identifier":"select","frequency-percentage":"<frequency>|<percentage>","generic-complete":"serif|sans-serif|system-ui|cursive|fantasy|math|monospace","general-enclosed":"[<function-token> <any-value>? )]|[( <any-value>? )]","generic-family":"<generic-script-specific>|<generic-complete>|<generic-incomplete>|<-non-standard-generic-family>","generic-incomplete":"ui-serif|ui-sans-serif|ui-monospace|ui-rounded","geometry-box":"<shape-box>|fill-box|stroke-box|view-box",gradient:"<linear-gradient()>|<repeating-linear-gradient()>|<radial-gradient()>|<repeating-radial-gradient()>|<conic-gradient()>|<repeating-conic-gradient()>|<-legacy-gradient>","grayscale()":"grayscale( [<number>|<percentage>]? )","grid-line":"auto|<custom-ident>|[<integer>&&<custom-ident>?]|[span&&[<integer>||<custom-ident>]]","historical-lig-values":"[historical-ligatures|no-historical-ligatures]","hsl()":"hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )|hsl( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","hsla()":"hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )|hsla( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )",hue:"<number>|<angle>","hue-interpolation-method":"[shorter|longer|increasing|decreasing] hue","hue-rotate()":"hue-rotate( [<angle>|<zero>]? )","hwb()":"hwb( [<hue>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","hypot()":"hypot( <calc-sum># )",image:"<url>|<image()>|<image-set()>|<element()>|<paint()>|<cross-fade()>|<gradient>","image()":"image( <image-tags>? [<image-src>? , <color>?]! )","image-set()":"image-set( <image-set-option># )","image-set-option":"[<image>|<string>] [<resolution>||type( <string> )]","image-src":"<url>|<string>","image-tags":"ltr|rtl","inflexible-breadth":"<length-percentage>|min-content|max-content|auto","inset()":"inset( <length-percentage>{1,4} [round <'border-radius'>]? )","invert()":"invert( [<number>|<percentage>]? )","keyframe-block":"<keyframe-selector># { <declaration-list> }","keyframe-selector":"from|to|<percentage [0,100]>|<timeline-range-name> <percentage>","keyframes-name":"<custom-ident>|<string>","lab()":"lab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","layer()":"layer( <layer-name> )","layer-name":"<ident> ['.' <ident>]*","lch()":"lch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )","leader()":"leader( <leader-type> )","leader-type":"dotted|solid|space|<string>","length-percentage":"<length>|<percentage>","light-dark()":"light-dark( <color> , <color> )","line-name-list":"[<line-names>|<name-repeat>]+","line-names":"'[' <custom-ident>* ']'","line-style":"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset","line-width":"<length>|thin|medium|thick","linear()":"linear( [<number>&&<percentage>{0,2}]# )","linear-color-hint":"<length-percentage>","linear-color-stop":"<color> <color-stop-length>?","linear-easing-function":"linear|<linear()>","linear-gradient()":"linear-gradient( [<linear-gradient-syntax>] )","linear-gradient-syntax":"[[<angle>|<zero>|to <side-or-corner>]||<color-interpolation-method>]? , <color-stop-list>","log()":"log( <calc-sum> , <calc-sum>? )","mask-layer":"<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||<geometry-box>||[<geometry-box>|no-clip]||<compositing-operator>||<masking-mode>","mask-position":"[<length-percentage>|left|center|right] [<length-percentage>|top|center|bottom]?","mask-reference":"none|<image>|<mask-source>","mask-source":"<url>","masking-mode":"alpha|luminance|match-source","matrix()":"matrix( <number>#{6} )","matrix3d()":"matrix3d( <number>#{16} )","max()":"max( <calc-sum># )","media-and":"<media-in-parens> [and <media-in-parens>]+","media-condition":"<media-not>|<media-and>|<media-or>|<media-in-parens>","media-condition-without-or":"<media-not>|<media-and>|<media-in-parens>","media-feature":"( [<mf-plain>|<mf-boolean>|<mf-range>] )","media-in-parens":"( <media-condition> )|<media-feature>|<general-enclosed>","media-not":"not <media-in-parens>","media-or":"<media-in-parens> [or <media-in-parens>]+","media-query":"<media-condition>|[not|only]? <media-type> [and <media-condition-without-or>]?","media-query-list":"<media-query>#","media-type":"<ident>","mf-boolean":"<mf-name>","mf-name":"<ident>","mf-plain":"<mf-name> : <mf-value>","mf-range":"<mf-name> ['<'|'>']? '='? <mf-value>|<mf-value> ['<'|'>']? '='? <mf-name>|<mf-value> '<' '='? <mf-name> '<' '='? <mf-value>|<mf-value> '>' '='? <mf-name> '>' '='? <mf-value>","mf-value":"<number>|<dimension>|<ident>|<ratio>","min()":"min( <calc-sum># )","minmax()":"minmax( [<length-percentage>|min-content|max-content|auto] , [<length-percentage>|<flex>|min-content|max-content|auto] )","mod()":"mod( <calc-sum> , <calc-sum> )","n-dimension":"<dimension-token>","name-repeat":"repeat( [<integer [1,\u221E]>|auto-fill] , <line-names>+ )","named-color":"aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen","namespace-prefix":"<ident>","ndash-dimension":"<dimension-token>","ndashdigit-dimension":"<dimension-token>","ndashdigit-ident":"<ident-token>","ns-prefix":"[<ident-token>|'*']? '|'","number-percentage":"<number>|<percentage>","numeric-figure-values":"[lining-nums|oldstyle-nums]","numeric-fraction-values":"[diagonal-fractions|stacked-fractions]","numeric-spacing-values":"[proportional-nums|tabular-nums]","offset-path":"<ray()>|<url>|<basic-shape>","oklab()":"oklab( [<percentage>|<number>|none] [<percentage>|<number>|none] [<percentage>|<number>|none] [/ [<alpha-value>|none]]? )","oklch()":"oklch( [<percentage>|<number>|none] [<percentage>|<number>|none] [<hue>|none] [/ [<alpha-value>|none]]? )","opacity()":"opacity( [<number>|<percentage>]? )","opacity-value":"<number>|<percentage>","outline-line-style":"none|dotted|dashed|solid|double|groove|ridge|inset|outset","outline-radius":"<length>|<percentage>","overflow-position":"unsafe|safe","page-body":"<declaration>? [; <page-body>]?|<page-margin-box> <page-body>","page-margin-box":"<page-margin-box-type> '{' <declaration-list> '}'","page-margin-box-type":"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom","page-selector":"<pseudo-page>+|<ident> <pseudo-page>*","page-selector-list":"[<page-selector>#]?","page-size":"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger",paint:"none|<color>|<url> [none|<color>]?|context-fill|context-stroke","paint()":"paint( <ident> , <declaration-value>? )","paint-box":"<visual-box>|fill-box|stroke-box","palette-identifier":"<dashed-ident>","palette-mix()":"palette-mix( <color-interpolation-method> , [[normal|light|dark|<palette-identifier>|<palette-mix()>]&&<percentage [0,100]>?]#{2} )","path()":"path( <'fill-rule'>? , <string> )","perspective()":"perspective( [<length [0,\u221E]>|none] )","polar-color-space":"hsl|hwb|lch|oklch","polygon()":"polygon( <'fill-rule'>? , [<length-percentage> <length-percentage>]# )",position:"[[left|center|right]||[top|center|bottom]|[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]?|[[left|right] <length-percentage>]&&[[top|bottom] <length-percentage>]]","position-area":"[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|center|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|center|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]","pow()":"pow( <calc-sum> , <calc-sum> )","predefined-rgb":"srgb|srgb-linear|display-p3|display-p3-linear|a98-rgb|prophoto-rgb|rec2020","predefined-rgb-params":"<predefined-rgb> [<number>|<percentage>|none]{3}","pseudo-class-selector":"':' <ident-token>|':' <function-token> <any-value> ')'","pseudo-element-selector":"':' <pseudo-class-selector>|<legacy-pseudo-element-selector>","pseudo-page":": [left|right|first|blank]","query-in-parens":"( <container-condition> )|( <size-feature> )|style( <style-query> )|<general-enclosed>",quote:"open-quote|close-quote|no-open-quote|no-close-quote","radial-extent":"closest-corner|closest-side|farthest-corner|farthest-side","radial-gradient()":"radial-gradient( [<radial-gradient-syntax>] )","radial-gradient-syntax":"[[[<radial-shape>||<radial-size>]? [at <position>]?]||<color-interpolation-method>]? , <color-stop-list>","radial-shape":"circle|ellipse","radial-size":"<radial-extent>|<length [0,\u221E]>|<length-percentage [0,\u221E]>{2}",ratio:"<number [0,\u221E]> [/ <number [0,\u221E]>]?","ray()":"ray( <angle>&&<ray-size>?&&contain?&&[at <position>]? )","ray-size":"closest-side|closest-corner|farthest-side|farthest-corner|sides","rect()":"rect( [<length-percentage>|auto]{4} [round <'border-radius'>]? )","rectangular-color-space":"srgb|srgb-linear|display-p3|display-p3-linear|a98-rgb|prophoto-rgb|rec2020|lab|oklab|xyz|xyz-d50|xyz-d65","relative-selector":"<combinator>? <complex-selector>","relative-selector-list":"<relative-selector>#","relative-size":"larger|smaller","rem()":"rem( <calc-sum> , <calc-sum> )","repeat-style":"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}","repeating-conic-gradient()":"repeating-conic-gradient( [<conic-gradient-syntax>] )","repeating-linear-gradient()":"repeating-linear-gradient( [<linear-gradient-syntax>] )","repeating-radial-gradient()":"repeating-radial-gradient( [<radial-gradient-syntax>] )","reversed-counter-name":"reversed( <counter-name> )","rgb()":"rgb( <percentage>#{3} , <alpha-value>? )|rgb( <number>#{3} , <alpha-value>? )|rgb( [<number>|<percentage>|none]{3} [/ [<alpha-value>|none]]? )","rgba()":"rgba( <percentage>#{3} , <alpha-value>? )|rgba( <number>#{3} , <alpha-value>? )|rgba( [<number>|<percentage>|none]{3} [/ [<alpha-value>|none]]? )","rotate()":"rotate( [<angle>|<zero>] )","rotate3d()":"rotate3d( <number> , <number> , <number> , [<angle>|<zero>] )","rotateX()":"rotateX( [<angle>|<zero>] )","rotateY()":"rotateY( [<angle>|<zero>] )","rotateZ()":"rotateZ( [<angle>|<zero>] )","round()":"round( <rounding-strategy>? , <calc-sum> , <calc-sum> )","rounding-strategy":"nearest|up|down|to-zero","saturate()":"saturate( [<number>|<percentage>]? )","scale()":"scale( [<number>|<percentage>]#{1,2} )","scale3d()":"scale3d( [<number>|<percentage>]#{3} )","scaleX()":"scaleX( [<number>|<percentage>] )","scaleY()":"scaleY( [<number>|<percentage>] )","scaleZ()":"scaleZ( [<number>|<percentage>] )","scope-end":"<forgiving-selector-list>","scope-start":"<forgiving-selector-list>","scroll()":"scroll( [<scroller>||<axis>]? )",scroller:"root|nearest|self","scroll-state-feature":"<media-query-list>","scroll-state-in-parens":"( <scroll-state-query> )|( <scroll-state-feature> )|<general-enclosed>","scroll-state-query":"not <scroll-state-in-parens>|<scroll-state-in-parens> [[and <scroll-state-in-parens>]*|[or <scroll-state-in-parens>]*]|<scroll-state-feature>","selector-list":"<complex-selector-list>","self-position":"center|start|end|self-start|self-end|flex-start|flex-end","sepia()":"sepia( [<number>|<percentage>]? )",shadow:"inset?&&<length>{2,4}&&<color>?","shadow-t":"[<length>{2,3}&&<color>?]",shape:"rect( <top> , <right> , <bottom> , <left> )|rect( <top> <right> <bottom> <left> )","shape-box":"<visual-box>|margin-box","side-or-corner":"[left|right]||[top|bottom]","sign()":"sign( <calc-sum> )","signed-integer":"<number-token>","signless-integer":"<number-token>","sin()":"sin( <calc-sum> )","single-animation":"<'animation-duration'>||<easing-function>||<'animation-delay'>||<single-animation-iteration-count>||<single-animation-direction>||<single-animation-fill-mode>||<single-animation-play-state>||[none|<keyframes-name>]||<single-animation-timeline>","single-animation-composition":"replace|add|accumulate","single-animation-direction":"normal|reverse|alternate|alternate-reverse","single-animation-fill-mode":"none|forwards|backwards|both","single-animation-iteration-count":"infinite|<number>","single-animation-play-state":"running|paused","single-animation-timeline":"auto|none|<dashed-ident>|<scroll()>|<view()>","single-transition":"[none|<single-transition-property>]||<time>||<easing-function>||<time>||<transition-behavior-value>","single-transition-property":"all|<custom-ident>",size:"closest-side|farthest-side|closest-corner|farthest-corner|<length>|<length-percentage>{2}","size-feature":"<mf-plain>|<mf-boolean>|<mf-range>","skew()":"skew( [<angle>|<zero>] , [<angle>|<zero>]? )","skewX()":"skewX( [<angle>|<zero>] )","skewY()":"skewY( [<angle>|<zero>] )","sqrt()":"sqrt( <calc-sum> )","step-position":"jump-start|jump-end|jump-none|jump-both|start|end","step-easing-function":"step-start|step-end|<steps()>","steps()":"steps( <integer> , <step-position>? )","style-feature":"<declaration>","style-in-parens":"( <style-condition> )|( <style-feature> )|<general-enclosed>","style-query":"<style-condition>|<style-feature>","subclass-selector":"<id-selector>|<class-selector>|<attribute-selector>|<pseudo-class-selector>","superellipse()":"superellipse( [<number>|infinity|-infinity] )","supports-condition":"not <supports-in-parens>|<supports-in-parens> [and <supports-in-parens>]*|<supports-in-parens> [or <supports-in-parens>]*","supports-decl":"( <declaration> )","supports-feature":"<supports-decl>|<supports-selector-fn>","supports-in-parens":"( <supports-condition> )|<supports-feature>|<general-enclosed>","supports-selector-fn":"selector( <complex-selector> )",symbol:"<string>|<image>|<custom-ident>","symbols()":"symbols( <symbols-type>? [<string>|<image>]+ )","symbols-type":"cyclic|numeric|alphabetic|symbolic|fixed","system-color":"AccentColor|AccentColorText|ActiveText|ButtonBorder|ButtonFace|ButtonText|Canvas|CanvasText|Field|FieldText|GrayText|Highlight|HighlightText|LinkText|Mark|MarkText|SelectedItem|SelectedItemText|VisitedText","system-family-name":"caption|icon|menu|message-box|small-caption|status-bar","tan()":"tan( <calc-sum> )",target:"<target-counter()>|<target-counters()>|<target-text()>","target-counter()":"target-counter( [<string>|<url>] , <custom-ident> , <counter-style>? )","target-counters()":"target-counters( [<string>|<url>] , <custom-ident> , <string> , <counter-style>? )","target-text()":"target-text( [<string>|<url>] , [content|before|after|first-letter]? )","text-edge":"[text|cap|ex|ideographic|ideographic-ink] [text|alphabetic|ideographic|ideographic-ink]?","time-percentage":"<time>|<percentage>","timeline-range-name":"cover|contain|entry|exit|entry-crossing|exit-crossing","track-breadth":"<length-percentage>|<flex>|min-content|max-content|auto","track-list":"[<line-names>? [<track-size>|<track-repeat>]]+ <line-names>?","track-repeat":"repeat( [<integer [1,\u221E]>] , [<line-names>? <track-size>]+ <line-names>? )","track-size":"<track-breadth>|minmax( <inflexible-breadth> , <track-breadth> )|fit-content( <length-percentage> )","transform-function":"<matrix()>|<translate()>|<translateX()>|<translateY()>|<scale()>|<scaleX()>|<scaleY()>|<rotate()>|<skew()>|<skewX()>|<skewY()>|<matrix3d()>|<translate3d()>|<translateZ()>|<scale3d()>|<scaleZ()>|<rotate3d()>|<rotateX()>|<rotateY()>|<rotateZ()>|<perspective()>","transform-list":"<transform-function>+","transition-behavior-value":"normal|allow-discrete","translate()":"translate( <length-percentage> , <length-percentage>? )","translate3d()":"translate3d( <length-percentage> , <length-percentage> , <length> )","translateX()":"translateX( <length-percentage> )","translateY()":"translateY( <length-percentage> )","translateZ()":"translateZ( <length> )","try-size":"most-width|most-height|most-block-size|most-inline-size","try-tactic":"flip-block||flip-inline||flip-start","type-or-unit":"string|color|url|integer|number|length|angle|time|frequency|cap|ch|em|ex|ic|lh|rlh|rem|vb|vi|vw|vh|vmin|vmax|mm|Q|cm|in|pt|pc|px|deg|grad|rad|turn|ms|s|Hz|kHz|%","type-selector":"<wq-name>|<ns-prefix>? '*'","var()":"var( <custom-property-name> , <declaration-value>? )","view()":"view( [<axis>||<'view-timeline-inset'>]? )","viewport-length":"auto|<length-percentage>","visual-box":"content-box|padding-box|border-box","wq-name":"<ns-prefix>? <ident-token>","xywh()":"xywh( <length-percentage>{2} <length-percentage [0,\u221E]>{2} [round <'border-radius'>]? )",xyz:"xyz|xyz-d50|xyz-d65","xyz-params":"<xyz-space> [<number>|<percentage>|none]{3}","-legacy-gradient":"<-webkit-gradient()>|<-legacy-linear-gradient>|<-legacy-repeating-linear-gradient>|<-legacy-radial-gradient>|<-legacy-repeating-radial-gradient>","-legacy-linear-gradient":"-moz-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-repeating-linear-gradient":"-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )|-o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )","-legacy-linear-gradient-arguments":"[<angle>|<side-or-corner>]? , <color-stop-list>","-legacy-radial-gradient":"-moz-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-repeating-radial-gradient":"-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )|-o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )","-legacy-radial-gradient-arguments":"[<position> ,]? [[[<-legacy-radial-gradient-shape>||<-legacy-radial-gradient-size>]|[<length>|<percentage>]{2}] ,]? <color-stop-list>","-legacy-radial-gradient-size":"closest-side|closest-corner|farthest-side|farthest-corner|contain|cover","-legacy-radial-gradient-shape":"circle|ellipse","-non-standard-font":"-apple-system-body|-apple-system-headline|-apple-system-subheadline|-apple-system-caption1|-apple-system-caption2|-apple-system-footnote|-apple-system-short-body|-apple-system-short-headline|-apple-system-short-subheadline|-apple-system-short-caption1|-apple-system-short-footnote|-apple-system-tall-body","-non-standard-color":"-moz-ButtonDefault|-moz-ButtonHoverFace|-moz-ButtonHoverText|-moz-CellHighlight|-moz-CellHighlightText|-moz-Combobox|-moz-ComboboxText|-moz-Dialog|-moz-DialogText|-moz-dragtargetzone|-moz-EvenTreeRow|-moz-Field|-moz-FieldText|-moz-html-CellHighlight|-moz-html-CellHighlightText|-moz-mac-accentdarkestshadow|-moz-mac-accentdarkshadow|-moz-mac-accentface|-moz-mac-accentlightesthighlight|-moz-mac-accentlightshadow|-moz-mac-accentregularhighlight|-moz-mac-accentregularshadow|-moz-mac-chrome-active|-moz-mac-chrome-inactive|-moz-mac-focusring|-moz-mac-menuselect|-moz-mac-menushadow|-moz-mac-menutextselect|-moz-MenuHover|-moz-MenuHoverText|-moz-MenuBarText|-moz-MenuBarHoverText|-moz-nativehyperlinktext|-moz-OddTreeRow|-moz-win-communicationstext|-moz-win-mediatext|-moz-activehyperlinktext|-moz-default-background-color|-moz-default-color|-moz-hyperlinktext|-moz-visitedhyperlinktext|-webkit-activelink|-webkit-focus-ring-color|-webkit-link|-webkit-text","-non-standard-image-rendering":"optimize-contrast|-moz-crisp-edges|-o-crisp-edges|-webkit-optimize-contrast","-non-standard-overflow":"overlay|-moz-scrollbars-none|-moz-scrollbars-horizontal|-moz-scrollbars-vertical|-moz-hidden-unscrollable","-non-standard-size":"intrinsic|min-intrinsic|-webkit-fill-available|-webkit-fit-content|-webkit-min-content|-webkit-max-content|-moz-available|-moz-fit-content|-moz-min-content|-moz-max-content","-webkit-gradient()":"-webkit-gradient( <-webkit-gradient-type> , <-webkit-gradient-point> [, <-webkit-gradient-point>|, <-webkit-gradient-radius> , <-webkit-gradient-point>] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )","-webkit-gradient-color-stop":"from( <color> )|color-stop( [<number-zero-one>|<percentage>] , <color> )|to( <color> )","-webkit-gradient-point":"[left|center|right|<length-percentage>] [top|center|bottom|<length-percentage>]","-webkit-gradient-radius":"<length>|<percentage>","-webkit-gradient-type":"linear|radial","-webkit-mask-box-repeat":"repeat|stretch|round","-ms-filter-function-list":"<-ms-filter-function>+","-ms-filter-function":"<-ms-filter-function-progid>|<-ms-filter-function-legacy>","-ms-filter-function-progid":"'progid:' [<ident-token> '.']* [<ident-token>|<function-token> <any-value>? )]","-ms-filter-function-legacy":"<ident-token>|<function-token> <any-value>? )",age:"child|young|old","attr-name":"<wq-name>","attr-fallback":"<any-value>",autospace:"no-autospace|[ideograph-alpha||ideograph-numeric||punctuation]||[insert|replace]",bottom:"<length>|auto","generic-voice":"[<age>? <gender> <integer>?]",gender:"male|female|neutral","generic-script-specific":"generic( kai )|generic( fangsong )|generic( nastaliq )","-non-standard-generic-family":"-apple-system|BlinkMacSystemFont","intrinsic-size-keyword":"min-content|max-content|fit-content",left:"<length>|auto","device-cmyk()":"<legacy-device-cmyk-syntax>|<modern-device-cmyk-syntax>","legacy-device-cmyk-syntax":"device-cmyk( <number>#{4} )","modern-device-cmyk-syntax":"device-cmyk( <cmyk-component>{4} [/ [<alpha-value>|none]]? )","cmyk-component":"<number>|<percentage>|none","color-space":"<rectangular-color-space>|<polar-color-space>|<custom-color-space>",right:"<length>|auto","forgiving-selector-list":"<complex-real-selector-list>","forgiving-relative-selector-list":"<relative-real-selector-list>","complex-real-selector-list":"<complex-real-selector>#","simple-selector-list":"<simple-selector>#","relative-real-selector-list":"<relative-real-selector>#","complex-selector-unit":"[<compound-selector>? <pseudo-compound-selector>*]!","complex-real-selector":"<compound-selector> [<combinator>? <compound-selector>]*","relative-real-selector":"<combinator>? <complex-real-selector>","pseudo-compound-selector":"<pseudo-element-selector> <pseudo-class-selector>*","simple-selector":"<type-selector>|<subclass-selector>","legacy-pseudo-element-selector":"':' [before|after|first-line|first-letter]","svg-length":"<percentage>|<length>|<number>","svg-writing-mode":"lr-tb|rl-tb|tb-rl|lr|rl|tb",top:"<length>|auto",x:"<number>",y:"<number>",declaration:"<ident-token> : <declaration-value>? ['!' important]?","declaration-list":"[<declaration>? ';']* <declaration>?",url:"url( <string> <url-modifier>* )|<url-token>","url-modifier":"<ident>|<function-token> <any-value> )","number-zero-one":"<number [0,1]>","number-one-or-greater":"<number [1,\u221E]>","xyz-space":"xyz|xyz-d50|xyz-d65","style-condition":"not <style-in-parens>|<style-in-parens> [[and <style-in-parens>]*|[or <style-in-parens>]*]","-non-standard-display":"-ms-inline-flexbox|-ms-grid|-ms-inline-grid|-webkit-flex|-webkit-inline-flex|-webkit-box|-webkit-inline-box|-moz-inline-stack|-moz-box|-moz-inline-box","inset-area":"[[left|center|right|span-left|span-right|x-start|x-end|span-x-start|span-x-end|x-self-start|x-self-end|span-x-self-start|span-x-self-end|span-all]||[top|center|bottom|span-top|span-bottom|y-start|y-end|span-y-start|span-y-end|y-self-start|y-self-end|span-y-self-start|span-y-self-end|span-all]|[block-start|center|block-end|span-block-start|span-block-end|span-all]||[inline-start|center|inline-end|span-inline-start|span-inline-end|span-all]|[self-block-start|self-block-end|span-self-block-start|span-self-block-end|span-all]||[self-inline-start|self-inline-end|span-self-inline-start|span-self-inline-end|span-all]|[start|center|end|span-start|span-end|span-all]{1,2}|[self-start|center|self-end|span-self-start|span-self-end|span-all]{1,2}]",syntax:"'*'|<syntax-component> [<syntax-combinator> <syntax-component>]*|<syntax-string>","syntax-component":"<syntax-single-component> <syntax-multiplier>?|'<' transform-list '>'","syntax-single-component":"'<' <syntax-type-name> '>'|<ident>","syntax-type-name":"angle|color|custom-ident|image|integer|length|length-percentage|number|percentage|resolution|string|time|url|transform-function","syntax-combinator":"'|'","syntax-multiplier":"'#'|'+'","syntax-string":"<string>"},properties:{"--*":"<declaration-value>","-ms-accelerator":"false|true","-ms-block-progression":"tb|rl|bt|lr","-ms-content-zoom-chaining":"none|chained","-ms-content-zoom-limit":"<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>","-ms-content-zoom-limit-max":"<percentage>","-ms-content-zoom-limit-min":"<percentage>","-ms-content-zoom-snap":"<'-ms-content-zoom-snap-type'>||<'-ms-content-zoom-snap-points'>","-ms-content-zoom-snap-points":"snapInterval( <percentage> , <percentage> )|snapList( <percentage># )","-ms-content-zoom-snap-type":"none|proximity|mandatory","-ms-content-zooming":"none|zoom","-ms-filter":"<string>","-ms-flow-from":"[none|<custom-ident>]#","-ms-flow-into":"[none|<custom-ident>]#","-ms-grid-columns":"none|<track-list>|<auto-track-list>","-ms-grid-rows":"none|<track-list>|<auto-track-list>","-ms-high-contrast-adjust":"auto|none","-ms-hyphenate-limit-chars":"auto|<integer>{1,3}","-ms-hyphenate-limit-lines":"no-limit|<integer>","-ms-hyphenate-limit-zone":"<percentage>|<length>","-ms-ime-align":"auto|after","-ms-overflow-style":"auto|none|scrollbar|-ms-autohiding-scrollbar","-ms-scroll-chaining":"chained|none","-ms-scroll-limit":"<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>","-ms-scroll-limit-x-max":"auto|<length>","-ms-scroll-limit-x-min":"<length>","-ms-scroll-limit-y-max":"auto|<length>","-ms-scroll-limit-y-min":"<length>","-ms-scroll-rails":"none|railed","-ms-scroll-snap-points-x":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-points-y":"snapInterval( <length-percentage> , <length-percentage> )|snapList( <length-percentage># )","-ms-scroll-snap-type":"none|proximity|mandatory","-ms-scroll-snap-x":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>","-ms-scroll-snap-y":"<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>","-ms-scroll-translation":"none|vertical-to-horizontal","-ms-scrollbar-3dlight-color":"<color>","-ms-scrollbar-arrow-color":"<color>","-ms-scrollbar-base-color":"<color>","-ms-scrollbar-darkshadow-color":"<color>","-ms-scrollbar-face-color":"<color>","-ms-scrollbar-highlight-color":"<color>","-ms-scrollbar-shadow-color":"<color>","-ms-scrollbar-track-color":"<color>","-ms-text-autospace":"none|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space","-ms-touch-select":"grippers|none","-ms-user-select":"none|element|text","-ms-wrap-flow":"auto|both|start|end|maximum|clear","-ms-wrap-margin":"<length>","-ms-wrap-through":"wrap|none","-moz-appearance":"none|button|button-arrow-down|button-arrow-next|button-arrow-previous|button-arrow-up|button-bevel|button-focus|caret|checkbox|checkbox-container|checkbox-label|checkmenuitem|dualbutton|groupbox|listbox|listitem|menuarrow|menubar|menucheckbox|menuimage|menuitem|menuitemtext|menulist|menulist-button|menulist-text|menulist-textfield|menupopup|menuradio|menuseparator|meterbar|meterchunk|progressbar|progressbar-vertical|progresschunk|progresschunk-vertical|radio|radio-container|radio-label|radiomenuitem|range|range-thumb|resizer|resizerpanel|scale-horizontal|scalethumbend|scalethumb-horizontal|scalethumbstart|scalethumbtick|scalethumb-vertical|scale-vertical|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|separator|sheet|spinner|spinner-downbutton|spinner-textfield|spinner-upbutton|splitter|statusbar|statusbarpanel|tab|tabpanel|tabpanels|tab-scroll-arrow-back|tab-scroll-arrow-forward|textfield|textfield-multiline|toolbar|toolbarbutton|toolbarbutton-dropdown|toolbargripper|toolbox|tooltip|treeheader|treeheadercell|treeheadersortarrow|treeitem|treeline|treetwisty|treetwistyopen|treeview|-moz-mac-unified-toolbar|-moz-win-borderless-glass|-moz-win-browsertabbar-toolbox|-moz-win-communicationstext|-moz-win-communications-toolbox|-moz-win-exclude-glass|-moz-win-glass|-moz-win-mediatext|-moz-win-media-toolbox|-moz-window-button-box|-moz-window-button-box-maximized|-moz-window-button-close|-moz-window-button-maximize|-moz-window-button-minimize|-moz-window-button-restore|-moz-window-frame-bottom|-moz-window-frame-left|-moz-window-frame-right|-moz-window-titlebar|-moz-window-titlebar-maximized","-moz-binding":"<url>|none","-moz-border-bottom-colors":"<color>+|none","-moz-border-left-colors":"<color>+|none","-moz-border-right-colors":"<color>+|none","-moz-border-top-colors":"<color>+|none","-moz-context-properties":"none|[fill|fill-opacity|stroke|stroke-opacity]#","-moz-float-edge":"border-box|content-box|margin-box|padding-box","-moz-force-broken-image-icon":"0|1","-moz-orient":"inline|block|horizontal|vertical","-moz-outline-radius":"<outline-radius>{1,4} [/ <outline-radius>{1,4}]?","-moz-outline-radius-bottomleft":"<outline-radius>","-moz-outline-radius-bottomright":"<outline-radius>","-moz-outline-radius-topleft":"<outline-radius>","-moz-outline-radius-topright":"<outline-radius>","-moz-stack-sizing":"ignore|stretch-to-fit","-moz-text-blink":"none|blink","-moz-user-focus":"ignore|normal|select-after|select-before|select-menu|select-same|select-all|none","-moz-user-input":"auto|none|enabled|disabled","-moz-user-modify":"read-only|read-write|write-only","-moz-window-dragging":"drag|no-drag","-moz-window-shadow":"default|menu|tooltip|sheet|none","-webkit-appearance":"none|button|button-bevel|caps-lock-indicator|caret|checkbox|default-button|inner-spin-button|listbox|listitem|media-controls-background|media-controls-fullscreen-background|media-current-time-display|media-enter-fullscreen-button|media-exit-fullscreen-button|media-fullscreen-button|media-mute-button|media-overlay-play-button|media-play-button|media-seek-back-button|media-seek-forward-button|media-slider|media-sliderthumb|media-time-remaining-display|media-toggle-closed-captions-button|media-volume-slider|media-volume-slider-container|media-volume-sliderthumb|menulist|menulist-button|menulist-text|menulist-textfield|meter|progress-bar|progress-bar-value|push-button|radio|scrollbarbutton-down|scrollbarbutton-left|scrollbarbutton-right|scrollbarbutton-up|scrollbargripper-horizontal|scrollbargripper-vertical|scrollbarthumb-horizontal|scrollbarthumb-vertical|scrollbartrack-horizontal|scrollbartrack-vertical|searchfield|searchfield-cancel-button|searchfield-decoration|searchfield-results-button|searchfield-results-decoration|slider-horizontal|slider-vertical|sliderthumb-horizontal|sliderthumb-vertical|square-button|textarea|textfield|-apple-pay-button","-webkit-border-before":"<'border-width'>||<'border-style'>||<color>","-webkit-border-before-color":"<color>","-webkit-border-before-style":"<'border-style'>","-webkit-border-before-width":"<'border-width'>","-webkit-box-reflect":"[above|below|right|left]? <length>? <image>?","-webkit-line-clamp":"none|<integer>","-webkit-mask":"[<mask-reference>||<position> [/ <bg-size>]?||<repeat-style>||[<visual-box>|border|padding|content|text]||[<visual-box>|border|padding|content]]#","-webkit-mask-attachment":"<attachment>#","-webkit-mask-clip":"[<coord-box>|no-clip|border|padding|content|text]#","-webkit-mask-composite":"<composite-style>#","-webkit-mask-image":"<mask-reference>#","-webkit-mask-origin":"[<coord-box>|border|padding|content]#","-webkit-mask-position":"<position>#","-webkit-mask-position-x":"[<length-percentage>|left|center|right]#","-webkit-mask-position-y":"[<length-percentage>|top|center|bottom]#","-webkit-mask-repeat":"<repeat-style>#","-webkit-mask-repeat-x":"repeat|no-repeat|space|round","-webkit-mask-repeat-y":"repeat|no-repeat|space|round","-webkit-mask-size":"<bg-size>#","-webkit-overflow-scrolling":"auto|touch","-webkit-tap-highlight-color":"<color>","-webkit-text-fill-color":"<color>","-webkit-text-stroke":"<length>||<color>","-webkit-text-stroke-color":"<color>","-webkit-text-stroke-width":"<length>","-webkit-touch-callout":"default|none","-webkit-user-modify":"read-only|read-write|read-write-plaintext-only","-webkit-user-select":"auto|none|text|all","accent-color":"auto|<color>","align-content":"normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>","align-items":"normal|stretch|<baseline-position>|[<overflow-position>? <self-position>]|anchor-center","align-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? <self-position>|anchor-center","align-tracks":"[normal|<baseline-position>|<content-distribution>|<overflow-position>? <content-position>]#","alignment-baseline":"auto|baseline|before-edge|text-before-edge|middle|central|after-edge|text-after-edge|ideographic|alphabetic|hanging|mathematical",all:"initial|inherit|unset|revert|revert-layer","anchor-name":"none|<dashed-ident>#","anchor-scope":"none|all|<dashed-ident>#",animation:"<single-animation>#","animation-composition":"<single-animation-composition>#","animation-delay":"<time>#","animation-direction":"<single-animation-direction>#","animation-duration":"[auto|<time [0s,\u221E]>]#","animation-fill-mode":"<single-animation-fill-mode>#","animation-iteration-count":"<single-animation-iteration-count>#","animation-name":"[none|<keyframes-name>]#","animation-play-state":"<single-animation-play-state>#","animation-range":"[<'animation-range-start'> <'animation-range-end'>?]#","animation-range-end":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","animation-range-start":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","animation-timeline":"<single-animation-timeline>#","animation-timing-function":"<easing-function>#","animation-trigger":"[none|[<dashed-ident> <animation-action>+]+]#",appearance:"none|auto|<compat-auto>|<compat-special>","aspect-ratio":"auto||<ratio>","backdrop-filter":"none|<filter-value-list>","backface-visibility":"visible|hidden",background:"<bg-layer>#? , <final-bg-layer>","background-attachment":"<attachment>#","background-blend-mode":"<blend-mode>#","background-clip":"<bg-clip>#","background-color":"<color>","background-image":"<bg-image>#","background-origin":"<visual-box>#","background-position":"<bg-position>#","background-position-x":"[center|[[left|right|x-start|x-end]? <length-percentage>?]!]#","background-position-y":"[center|[[top|bottom|y-start|y-end]? <length-percentage>?]!]#","background-repeat":"<repeat-style>#","background-size":"<bg-size>#","baseline-shift":"baseline|sub|super|<svg-length>","baseline-source":"auto|first|last","block-size":"<'width'>",border:"<line-width>||<line-style>||<color>","border-block":"<'border-block-start'>","border-block-color":"<'border-top-color'>{1,2}","border-block-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-end-color":"<'border-top-color'>","border-block-end-style":"<'border-top-style'>","border-block-end-width":"<'border-top-width'>","border-block-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-block-start-color":"<'border-top-color'>","border-block-start-style":"<'border-top-style'>","border-block-start-width":"<'border-top-width'>","border-block-style":"<'border-top-style'>{1,2}","border-block-width":"<'border-top-width'>{1,2}","border-bottom":"<line-width>||<line-style>||<color>","border-bottom-color":"<'border-top-color'>","border-bottom-left-radius":"<length-percentage [0,\u221E]>{1,2}","border-bottom-right-radius":"<length-percentage [0,\u221E]>{1,2}","border-bottom-style":"<line-style>","border-bottom-width":"<line-width>","border-collapse":"separate|collapse","border-color":"<color>{1,4}","border-end-end-radius":"<'border-top-left-radius'>","border-end-start-radius":"<'border-top-left-radius'>","border-image":"<'border-image-source'>||<'border-image-slice'> [/ <'border-image-width'>|/ <'border-image-width'>? / <'border-image-outset'>]?||<'border-image-repeat'>","border-image-outset":"[<length [0,\u221E]>|<number [0,\u221E]>]{1,4}","border-image-repeat":"[stretch|repeat|round|space]{1,2}","border-image-slice":"[<number [0,\u221E]>|<percentage [0,\u221E]>]{1,4}&&fill?","border-image-source":"none|<image>","border-image-width":"[<length-percentage [0,\u221E]>|<number [0,\u221E]>|auto]{1,4}","border-inline":"<'border-block-start'>","border-inline-color":"<'border-top-color'>{1,2}","border-inline-end":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-end-color":"<'border-top-color'>","border-inline-end-style":"<'border-top-style'>","border-inline-end-width":"<'border-top-width'>","border-inline-start":"<'border-top-width'>||<'border-top-style'>||<color>","border-inline-start-color":"<'border-top-color'>","border-inline-start-style":"<'border-top-style'>","border-inline-start-width":"<'border-top-width'>","border-inline-style":"<'border-top-style'>{1,2}","border-inline-width":"<'border-top-width'>{1,2}","border-left":"<line-width>||<line-style>||<color>","border-left-color":"<color>","border-left-style":"<line-style>","border-left-width":"<line-width>","border-radius":"<length-percentage [0,\u221E]>{1,4} [/ <length-percentage [0,\u221E]>{1,4}]?","border-right":"<line-width>||<line-style>||<color>","border-right-color":"<color>","border-right-style":"<line-style>","border-right-width":"<line-width>","border-spacing":"<length>{1,2}","border-start-end-radius":"<'border-top-left-radius'>","border-start-start-radius":"<'border-top-left-radius'>","border-style":"<line-style>{1,4}","border-top":"<line-width>||<line-style>||<color>","border-top-color":"<color>","border-top-left-radius":"<length-percentage [0,\u221E]>{1,2}","border-top-right-radius":"<length-percentage [0,\u221E]>{1,2}","border-top-style":"<line-style>","border-top-width":"<line-width>","border-width":"<line-width>{1,4}",bottom:"auto|<length-percentage>|<anchor()>|<anchor-size()>","box-align":"start|center|end|baseline|stretch","box-decoration-break":"slice|clone","box-direction":"normal|reverse|inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single|multiple","box-ordinal-group":"<integer>","box-orient":"horizontal|vertical|inline-axis|block-axis|inherit","box-pack":"start|center|end|justify","box-shadow":"none|<shadow>#","box-sizing":"content-box|border-box","break-after":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-before":"auto|avoid|always|all|avoid-page|page|left|right|recto|verso|avoid-column|column|avoid-region|region","break-inside":"auto|avoid|avoid-page|avoid-column|avoid-region","caption-side":"top|bottom",caret:"<'caret-color'>||<'caret-animation'>||<'caret-shape'>","caret-animation":"auto|manual","caret-color":"auto|<color>","caret-shape":"auto|bar|block|underscore",clear:"none|left|right|both|inline-start|inline-end",clip:"<shape>|auto","clip-path":"<clip-source>|[<basic-shape>||<geometry-box>]|none","clip-rule":"nonzero|evenodd",color:"<color>","color-interpolation-filters":"auto|sRGB|linearRGB","color-scheme":"normal|[light|dark|<custom-ident>]+&&only?","column-count":"<integer>|auto","column-fill":"auto|balance","column-gap":"normal|<length-percentage>","column-height":"auto|<length [0,\u221E]>","column-rule":"<'column-rule-width'>||<'column-rule-style'>||<'column-rule-color'>","column-rule-color":"<color>","column-rule-style":"<'border-style'>","column-rule-width":"<'border-width'>","column-span":"none|all","column-width":"auto|<length [0,\u221E]>","column-wrap":"auto|nowrap|wrap",columns:"[<'column-width'>||<'column-count'>] [/ <'column-height'>]?",contain:"none|strict|content|[[size||inline-size]||layout||style||paint]","contain-intrinsic-block-size":"auto? [none|<length>]","contain-intrinsic-height":"auto? [none|<length>]","contain-intrinsic-inline-size":"auto? [none|<length>]","contain-intrinsic-size":"[auto? [none|<length>]]{1,2}","contain-intrinsic-width":"auto? [none|<length>]",container:"<'container-name'> [/ <'container-type'>]?","container-name":"none|<custom-ident>+","container-type":"normal||[size|inline-size]",content:"normal|none|[<content-replacement>|<content-list>] [/ [<string>|<counter>|<attr()>]+]?","content-visibility":"visible|auto|hidden","corner-block-end-shape":"<corner-shape-value>{1,2}","corner-block-start-shape":"<corner-shape-value>{1,2}","corner-bottom-shape":"<corner-shape-value>{1,2}","corner-bottom-left-shape":"<corner-shape-value>","corner-bottom-right-shape":"<corner-shape-value>","corner-end-end-shape":"<corner-shape-value>","corner-end-start-shape":"<corner-shape-value>","corner-inline-end-shape":"<corner-shape-value>{1,2}","corner-inline-start-shape":"<corner-shape-value>{1,2}","corner-left-shape":"<corner-shape-value>{1,2}","corner-right-shape":"<corner-shape-value>{1,2}","corner-shape":"<corner-shape-value>{1,4}","corner-start-start-shape":"<corner-shape-value>","corner-start-end-shape":"<corner-shape-value>","corner-top-shape":"<corner-shape-value>{1,2}","corner-top-left-shape":"<corner-shape-value>","corner-top-right-shape":"<corner-shape-value>","counter-increment":"[<counter-name> <integer>?]+|none","counter-reset":"[<counter-name> <integer>?|<reversed-counter-name> <integer>?]+|none","counter-set":"[<counter-name> <integer>?]+|none",cursor:"[[<url> [<x> <y>]? ,]* [auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing|hand|-webkit-grab|-webkit-grabbing|-webkit-zoom-in|-webkit-zoom-out|-moz-grab|-moz-grabbing|-moz-zoom-in|-moz-zoom-out]]",cx:"<length>|<percentage>",cy:"<length>|<percentage>",d:"none|path( <string> )",direction:"ltr|rtl",display:"[<display-outside>||<display-inside>]|<display-listitem>|<display-internal>|<display-box>|<display-legacy>|<-non-standard-display>","dominant-baseline":"auto|use-script|no-change|reset-size|ideographic|alphabetic|hanging|mathematical|central|middle|text-after-edge|text-before-edge","dynamic-range-limit":"standard|no-limit|constrained|<dynamic-range-limit-mix()>","empty-cells":"show|hide","field-sizing":"content|fixed",fill:"<paint>","fill-opacity":"<number-zero-one>|<percentage>","fill-rule":"nonzero|evenodd",filter:"none|<filter-value-list>|<-ms-filter-function-list>",flex:"none|[<'flex-grow'> <'flex-shrink'>?||<'flex-basis'>]","flex-basis":"content|<'width'>","flex-direction":"row|row-reverse|column|column-reverse","flex-flow":"<'flex-direction'>||<'flex-wrap'>","flex-grow":"<number>","flex-shrink":"<number>","flex-wrap":"nowrap|wrap|wrap-reverse",float:"left|right|none|inline-start|inline-end","flood-color":"<color>","flood-opacity":"<'opacity'>",font:"[[<'font-style'>||<font-variant-css2>||<'font-weight'>||<font-width-css3>]? <'font-size'> [/ <'line-height'>]? <'font-family'>#]|<system-family-name>|<-non-standard-font>","font-family":"[<family-name>|<generic-family>]#","font-feature-settings":"normal|<feature-tag-value>#","font-kerning":"auto|normal|none","font-language-override":"normal|<string>","font-optical-sizing":"auto|none","font-palette":"normal|light|dark|<palette-identifier>|<palette-mix()>","font-size":"<absolute-size>|<relative-size>|<length-percentage [0,\u221E]>|math","font-size-adjust":"none|[ex-height|cap-height|ch-width|ic-width|ic-height]? [from-font|<number>]","font-smooth":"auto|never|always|<absolute-size>|<length>","font-stretch":"<font-stretch-absolute>","font-style":"normal|italic|oblique <angle>?","font-synthesis":"none|[weight||style||small-caps||position]","font-synthesis-position":"auto|none","font-synthesis-small-caps":"auto|none","font-synthesis-style":"auto|none","font-synthesis-weight":"auto|none","font-variant":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>||stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )||[small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps]||<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero||<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-alternates":"normal|[stylistic( <feature-value-name> )||historical-forms||styleset( <feature-value-name># )||character-variant( <feature-value-name># )||swash( <feature-value-name> )||ornaments( <feature-value-name> )||annotation( <feature-value-name> )]","font-variant-caps":"normal|small-caps|all-small-caps|petite-caps|all-petite-caps|unicase|titling-caps","font-variant-east-asian":"normal|[<east-asian-variant-values>||<east-asian-width-values>||ruby]","font-variant-emoji":"normal|text|emoji|unicode","font-variant-ligatures":"normal|none|[<common-lig-values>||<discretionary-lig-values>||<historical-lig-values>||<contextual-alt-values>]","font-variant-numeric":"normal|[<numeric-figure-values>||<numeric-spacing-values>||<numeric-fraction-values>||ordinal||slashed-zero]","font-variant-position":"normal|sub|super","font-variation-settings":"normal|[<string> <number>]#","font-weight":"<font-weight-absolute>|bolder|lighter","font-width":"normal|<percentage [0,\u221E]>|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded","forced-color-adjust":"auto|none|preserve-parent-color",gap:"<'row-gap'> <'column-gap'>?",grid:"<'grid-template'>|<'grid-template-rows'> / [auto-flow&&dense?] <'grid-auto-columns'>?|[auto-flow&&dense?] <'grid-auto-rows'>? / <'grid-template-columns'>","grid-area":"<grid-line> [/ <grid-line>]{0,3}","grid-auto-columns":"<track-size>+","grid-auto-flow":"[row|column]||dense","grid-auto-rows":"<track-size>+","grid-column":"<grid-line> [/ <grid-line>]?","grid-column-end":"<grid-line>","grid-column-gap":"<length-percentage>","grid-column-start":"<grid-line>","grid-gap":"<'grid-row-gap'> <'grid-column-gap'>?","grid-row":"<grid-line> [/ <grid-line>]?","grid-row-end":"<grid-line>","grid-row-gap":"<length-percentage>","grid-row-start":"<grid-line>","grid-template":"none|[<'grid-template-rows'> / <'grid-template-columns'>]|[<line-names>? <string> <track-size>? <line-names>?]+ [/ <explicit-track-list>]?","grid-template-areas":"none|<string>+","grid-template-columns":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","grid-template-rows":"none|<track-list>|<auto-track-list>|subgrid <line-name-list>?","hanging-punctuation":"none|[first||[force-end|allow-end]||last]",height:"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","hyphenate-character":"auto|<string>","hyphenate-limit-chars":"[auto|<integer>]{1,3}",hyphens:"none|manual|auto","image-orientation":"from-image|<angle>|[<angle>? flip]","image-rendering":"auto|crisp-edges|pixelated|smooth|optimizeSpeed|optimizeQuality|<-non-standard-image-rendering>","image-resolution":"[from-image||<resolution>]&&snap?","ime-mode":"auto|normal|active|inactive|disabled","initial-letter":"normal|[<number> <integer>?]","initial-letter-align":"[auto|alphabetic|hanging|ideographic]","inline-size":"<'width'>",inset:"<'top'>{1,4}","inset-block":"<'top'>{1,2}","inset-block-end":"<'top'>","inset-block-start":"<'top'>","inset-inline":"<'top'>{1,2}","inset-inline-end":"<'top'>","inset-inline-start":"<'top'>","interpolate-size":"numeric-only|allow-keywords",isolation:"auto|isolate",interactivity:"auto|inert","interest-delay":"<'interest-delay-start'>{1,2}","interest-delay-end":"normal|<time>","interest-delay-start":"normal|<time>","justify-content":"normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]","justify-items":"normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|legacy|legacy&&[left|right|center]|anchor-center","justify-self":"auto|normal|stretch|<baseline-position>|<overflow-position>? [<self-position>|left|right]|anchor-center","justify-tracks":"[normal|<content-distribution>|<overflow-position>? [<content-position>|left|right]]#",left:"auto|<length-percentage>|<anchor()>|<anchor-size()>","letter-spacing":"normal|<length-percentage>","lighting-color":"<color>","line-break":"auto|loose|normal|strict|anywhere","line-clamp":"none|<integer>","line-height":"normal|<number>|<length>|<percentage>","line-height-step":"<length>","list-style":"<'list-style-type'>||<'list-style-position'>||<'list-style-image'>","list-style-image":"<image>|none","list-style-position":"inside|outside","list-style-type":"<counter-style>|<string>|none",margin:"<'margin-top'>{1,4}","margin-block":"<'margin-top'>{1,2}","margin-block-end":"<'margin-top'>","margin-block-start":"<'margin-top'>","margin-bottom":"<length-percentage>|auto|<anchor-size()>","margin-inline":"<'margin-top'>{1,2}","margin-inline-end":"<'margin-top'>","margin-inline-start":"<'margin-top'>","margin-left":"<length-percentage>|auto|<anchor-size()>","margin-right":"<length-percentage>|auto|<anchor-size()>","margin-top":"<length-percentage>|auto|<anchor-size()>","margin-trim":"none|in-flow|all",marker:"none|<url>","marker-end":"none|<url>","marker-mid":"none|<url>","marker-start":"none|<url>",mask:"<mask-layer>#","mask-border":"<'mask-border-source'>||<'mask-border-slice'> [/ <'mask-border-width'>? [/ <'mask-border-outset'>]?]?||<'mask-border-repeat'>||<'mask-border-mode'>","mask-border-mode":"luminance|alpha","mask-border-outset":"[<length>|<number>]{1,4}","mask-border-repeat":"[stretch|repeat|round|space]{1,2}","mask-border-slice":"<number-percentage>{1,4} fill?","mask-border-source":"none|<image>","mask-border-width":"[<length-percentage>|<number>|auto]{1,4}","mask-clip":"[<coord-box>|no-clip]#","mask-composite":"<compositing-operator>#","mask-image":"<mask-reference>#","mask-mode":"<masking-mode>#","mask-origin":"<coord-box>#","mask-position":"<position>#","mask-repeat":"<repeat-style>#","mask-size":"<bg-size>#","mask-type":"luminance|alpha","masonry-auto-flow":"[pack|next]||[definite-first|ordered]","math-depth":"auto-add|add( <integer> )|<integer>","math-shift":"normal|compact","math-style":"normal|compact","max-block-size":"<'max-width'>","max-height":"none|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","max-inline-size":"<'max-width'>","max-lines":"none|<integer>","max-width":"none|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","min-block-size":"<'min-width'>","min-height":"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","min-inline-size":"<'min-width'>","min-width":"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","mix-blend-mode":"<blend-mode>|plus-darker|plus-lighter","object-fit":"fill|contain|cover|none|scale-down","object-position":"<position>","object-view-box":"none|<basic-shape-rect>",offset:"[<'offset-position'>? [<'offset-path'> [<'offset-distance'>||<'offset-rotate'>]?]?]! [/ <'offset-anchor'>]?","offset-anchor":"auto|<position>","offset-distance":"<length-percentage>","offset-path":"none|<offset-path>||<coord-box>","offset-position":"normal|auto|<position>","offset-rotate":"[auto|reverse]||<angle>",opacity:"<opacity-value>",order:"<integer>",orphans:"<integer>",outline:"<'outline-width'>||<'outline-style'>||<'outline-color'>","outline-color":"auto|<color>","outline-offset":"<length>","outline-style":"auto|<outline-line-style>","outline-width":"<line-width>",overflow:"[visible|hidden|clip|scroll|auto]{1,2}|<-non-standard-overflow>","overflow-anchor":"auto|none","overflow-block":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>","overflow-clip-box":"padding-box|content-box","overflow-clip-margin":"<visual-box>||<length [0,\u221E]>","overflow-inline":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>","overflow-wrap":"normal|break-word|anywhere","overflow-x":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>","overflow-y":"visible|hidden|clip|scroll|auto|<-non-standard-overflow>",overlay:"none|auto","overscroll-behavior":"[contain|none|auto]{1,2}","overscroll-behavior-block":"contain|none|auto","overscroll-behavior-inline":"contain|none|auto","overscroll-behavior-x":"contain|none|auto","overscroll-behavior-y":"contain|none|auto",padding:"<'padding-top'>{1,4}","padding-block":"<'padding-top'>{1,2}","padding-block-end":"<'padding-top'>","padding-block-start":"<'padding-top'>","padding-bottom":"<length-percentage [0,\u221E]>","padding-inline":"<'padding-top'>{1,2}","padding-inline-end":"<'padding-top'>","padding-inline-start":"<'padding-top'>","padding-left":"<length-percentage [0,\u221E]>","padding-right":"<length-percentage [0,\u221E]>","padding-top":"<length-percentage [0,\u221E]>",page:"auto|<custom-ident>","page-break-after":"auto|always|avoid|left|right|recto|verso","page-break-before":"auto|always|avoid|left|right|recto|verso","page-break-inside":"auto|avoid","paint-order":"normal|[fill||stroke||markers]",perspective:"none|<length>","perspective-origin":"<position>","place-content":"<'align-content'> <'justify-content'>?","place-items":"<'align-items'> <'justify-items'>?","place-self":"<'align-self'> <'justify-self'>?","pointer-events":"auto|none|visiblePainted|visibleFill|visibleStroke|visible|painted|fill|stroke|all|inherit",position:"static|relative|absolute|sticky|fixed|-webkit-sticky","position-anchor":"auto|none|<anchor-name>","position-area":"none|<position-area>","position-try":"<'position-try-order'>? <'position-try-fallbacks'>","position-try-fallbacks":"none|[[<dashed-ident>||<try-tactic>]|<'position-area'>]#","position-try-order":"normal|<try-size>","position-visibility":"always|[anchors-valid||anchors-visible||no-overflow]","print-color-adjust":"economy|exact",quotes:"none|auto|[<string> <string>]+",r:"<length>|<percentage>","reading-flow":"normal|source-order|flex-visual|flex-flow|grid-rows|grid-columns|grid-order","reading-order":"<integer>",resize:"none|both|horizontal|vertical|block|inline",right:"auto|<length-percentage>|<anchor()>|<anchor-size()>",rotate:"none|<angle>|[x|y|z|<number>{3}]&&<angle>","row-gap":"normal|<length-percentage>","ruby-align":"start|center|space-between|space-around","ruby-merge":"separate|collapse|auto","ruby-overhang":"auto|none","ruby-position":"[alternate||[over|under]]|inter-character",rx:"<length>|<percentage>",ry:"<length>|<percentage>",scale:"none|[<number>|<percentage>]{1,3}","scroll-behavior":"auto|smooth","scroll-initial-target":"none|nearest","scroll-margin":"<length>{1,4}","scroll-margin-block":"<length>{1,2}","scroll-margin-block-end":"<length>","scroll-margin-block-start":"<length>","scroll-margin-bottom":"<length>","scroll-margin-inline":"<length>{1,2}","scroll-margin-inline-end":"<length>","scroll-margin-inline-start":"<length>","scroll-margin-left":"<length>","scroll-margin-right":"<length>","scroll-margin-top":"<length>","scroll-marker-group":"none|before|after","scroll-padding":"[auto|<length-percentage>]{1,4}","scroll-padding-block":"[auto|<length-percentage>]{1,2}","scroll-padding-block-end":"auto|<length-percentage>","scroll-padding-block-start":"auto|<length-percentage>","scroll-padding-bottom":"auto|<length-percentage>","scroll-padding-inline":"[auto|<length-percentage>]{1,2}","scroll-padding-inline-end":"auto|<length-percentage>","scroll-padding-inline-start":"auto|<length-percentage>","scroll-padding-left":"auto|<length-percentage>","scroll-padding-right":"auto|<length-percentage>","scroll-padding-top":"auto|<length-percentage>","scroll-snap-align":"[none|start|end|center]{1,2}","scroll-snap-coordinate":"none|<position>#","scroll-snap-destination":"<position>","scroll-snap-points-x":"none|repeat( <length-percentage> )","scroll-snap-points-y":"none|repeat( <length-percentage> )","scroll-snap-stop":"normal|always","scroll-snap-type":"none|[x|y|block|inline|both] [mandatory|proximity]?","scroll-snap-type-x":"none|mandatory|proximity","scroll-snap-type-y":"none|mandatory|proximity","scroll-target-group":"none|auto","scroll-timeline":"[<'scroll-timeline-name'> <'scroll-timeline-axis'>?]#","scroll-timeline-axis":"[block|inline|x|y]#","scroll-timeline-name":"[none|<dashed-ident>]#","scrollbar-color":"auto|<color>{2}","scrollbar-gutter":"auto|stable&&both-edges?","scrollbar-width":"auto|thin|none","shape-image-threshold":"<opacity-value>","shape-margin":"<length-percentage>","shape-outside":"none|[<shape-box>||<basic-shape>]|<image>","shape-rendering":"auto|optimizeSpeed|crispEdges|geometricPrecision","speak-as":"normal|spell-out||digits||[literal-punctuation|no-punctuation]","stop-color":"<'color'>","stop-opacity":"<'opacity'>",stroke:"<paint>","stroke-color":"<color>","stroke-dasharray":"none|[<svg-length>+]#","stroke-dashoffset":"<svg-length>","stroke-linecap":"butt|round|square","stroke-linejoin":"miter|round|bevel","stroke-miterlimit":"<number-one-or-greater>","stroke-opacity":"<'opacity'>","stroke-width":"<svg-length>","tab-size":"<integer>|<length>","table-layout":"auto|fixed","text-align":"start|end|left|right|center|justify|match-parent","text-align-last":"auto|start|end|left|right|center|justify","text-anchor":"start|middle|end","text-autospace":"normal|<autospace>|auto","text-box":"normal|<'text-box-trim'>||<'text-box-edge'>","text-box-edge":"auto|<text-edge>","text-box-trim":"none|trim-start|trim-end|trim-both","text-combine-upright":"none|all|[digits <integer>?]","text-decoration":"<'text-decoration-line'>||<'text-decoration-style'>||<'text-decoration-color'>||<'text-decoration-thickness'>","text-decoration-color":"<color>","text-decoration-inset":"<length>{1,2}|auto","text-decoration-line":"none|[underline||overline||line-through||blink]|spelling-error|grammar-error","text-decoration-skip":"none|[objects||[spaces|[leading-spaces||trailing-spaces]]||edges||box-decoration]","text-decoration-skip-ink":"auto|all|none","text-decoration-style":"solid|double|dotted|dashed|wavy","text-decoration-thickness":"auto|from-font|<length>|<percentage>","text-emphasis":"<'text-emphasis-style'>||<'text-emphasis-color'>","text-emphasis-color":"<color>","text-emphasis-position":"auto|[over|under]&&[right|left]?","text-emphasis-style":"none|[[filled|open]||[dot|circle|double-circle|triangle|sesame]]|<string>","text-indent":"<length-percentage>&&hanging?&&each-line?","text-justify":"auto|inter-character|inter-word|none","text-orientation":"mixed|upright|sideways","text-overflow":"[clip|ellipsis|<string>]{1,2}","text-rendering":"auto|optimizeSpeed|optimizeLegibility|geometricPrecision","text-shadow":"none|<shadow-t>#","text-size-adjust":"none|auto|<percentage>","text-spacing-trim":"space-all|normal|space-first|trim-start","text-transform":"none|[capitalize|uppercase|lowercase]||full-width||full-size-kana|math-auto","text-underline-offset":"auto|<length>|<percentage>","text-underline-position":"auto|from-font|[under||[left|right]]","text-wrap":"<'text-wrap-mode'>||<'text-wrap-style'>","text-wrap-mode":"wrap|nowrap","text-wrap-style":"auto|balance|stable|pretty","timeline-scope":"none|<dashed-ident>#","timeline-trigger":"none|[<'timeline-trigger-name'> <'timeline-trigger-source'> <'timeline-trigger-range'> ['/' <'timeline-trigger-exit-range'>]?]#","timeline-trigger-name":"none|<dashed-ident>#","timeline-trigger-exit-range":"[<'timeline-trigger-exit-range-start'> <'timeline-trigger-exit-range-end'>?]#","timeline-trigger-exit-range-end":"[auto|normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-exit-range-start":"[auto|normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-range":"[<'timeline-trigger-range-start'> <'timeline-trigger-range-end'>?]#","timeline-trigger-range-end":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-range-start":"[normal|<length-percentage>|<timeline-range-name> <length-percentage>?]#","timeline-trigger-source":"<single-animation-timeline>#",top:"auto|<length-percentage>|<anchor()>|<anchor-size()>","touch-action":"auto|none|[[pan-x|pan-left|pan-right]||[pan-y|pan-up|pan-down]||pinch-zoom]|manipulation",transform:"none|<transform-list>","transform-box":"content-box|border-box|fill-box|stroke-box|view-box","transform-origin":"[<length-percentage>|left|center|right|top|bottom]|[[<length-percentage>|left|center|right]&&[<length-percentage>|top|center|bottom]] <length>?","transform-style":"flat|preserve-3d",transition:"<single-transition>#","transition-behavior":"<transition-behavior-value>#","transition-delay":"<time>#","transition-duration":"<time>#","transition-property":"none|<single-transition-property>#","transition-timing-function":"<easing-function>#",translate:"none|<length-percentage> [<length-percentage> <length>?]?","trigger-scope":"none|all|<dashed-ident>#","unicode-bidi":"normal|embed|isolate|bidi-override|isolate-override|plaintext|-moz-isolate|-moz-isolate-override|-moz-plaintext|-webkit-isolate|-webkit-isolate-override|-webkit-plaintext","user-select":"auto|text|none|all","vector-effect":"none|non-scaling-stroke|non-scaling-size|non-rotation|fixed-position","vertical-align":"baseline|sub|super|text-top|text-bottom|middle|top|bottom|<percentage>|<length>","view-timeline":"[<'view-timeline-name'> [<'view-timeline-axis'>||<'view-timeline-inset'>]?]#","view-timeline-axis":"[block|inline|x|y]#","view-timeline-inset":"[[auto|<length-percentage>]{1,2}]#","view-timeline-name":"[none|<dashed-ident>]#","view-transition-class":"none|<custom-ident>+","view-transition-name":"none|<custom-ident>|match-element",visibility:"visible|hidden|collapse","white-space":"normal|pre|pre-wrap|pre-line|<'white-space-collapse'>||<'text-wrap-mode'>","white-space-collapse":"collapse|preserve|preserve-breaks|preserve-spaces|break-spaces",widows:"<integer>",width:"auto|<length-percentage [0,\u221E]>|min-content|max-content|fit-content|fit-content( <length-percentage [0,\u221E]> )|<calc-size()>|<anchor-size()>|stretch|<-non-standard-size>","will-change":"auto|<animateable-feature>#","word-break":"normal|break-all|keep-all|break-word|auto-phrase","word-spacing":"normal|<length>","word-wrap":"normal|break-word","writing-mode":"horizontal-tb|vertical-rl|vertical-lr|sideways-rl|sideways-lr|<svg-writing-mode>",x:"<length>|<percentage>",y:"<length>|<percentage>","z-index":"auto|<integer>",zoom:"normal|reset|<number [0,\u221E]>||<percentage [0,\u221E]>","-moz-background-clip":"padding|border","-moz-border-radius-bottomleft":"<'border-bottom-left-radius'>","-moz-border-radius-bottomright":"<'border-bottom-right-radius'>","-moz-border-radius-topleft":"<'border-top-left-radius'>","-moz-border-radius-topright":"<'border-bottom-right-radius'>","-moz-control-character-visibility":"visible|hidden","-moz-osx-font-smoothing":"auto|grayscale","-moz-user-select":"none|text|all|-moz-none","-ms-flex-align":"start|end|center|baseline|stretch","-ms-flex-item-align":"auto|start|end|center|baseline|stretch","-ms-flex-line-pack":"start|end|center|justify|distribute|stretch","-ms-flex-negative":"<'flex-shrink'>","-ms-flex-pack":"start|end|center|justify|distribute","-ms-flex-order":"<integer>","-ms-flex-positive":"<'flex-grow'>","-ms-flex-preferred-size":"<'flex-basis'>","-ms-interpolation-mode":"nearest-neighbor|bicubic","-ms-grid-column-align":"start|end|center|stretch","-ms-grid-row-align":"start|end|center|stretch","-ms-hyphenate-limit-last":"none|always|column|page|spread","-webkit-background-clip":"[<visual-box>|border|padding|content|text]#","-webkit-column-break-after":"always|auto|avoid","-webkit-column-break-before":"always|auto|avoid","-webkit-column-break-inside":"always|auto|avoid","-webkit-font-smoothing":"auto|none|antialiased|subpixel-antialiased","-webkit-mask-box-image":"[<url>|<gradient>|none] [<length-percentage>{4} <-webkit-mask-box-repeat>{2}]?","-webkit-print-color-adjust":"economy|exact","-webkit-text-security":"none|circle|disc|square","-webkit-user-drag":"none|element|auto",behavior:"<url>+",cue:"<'cue-before'> <'cue-after'>?","cue-after":"<url> <decibel>?|none","cue-before":"<url> <decibel>?|none","glyph-orientation-horizontal":"<angle>","glyph-orientation-vertical":"<angle>",kerning:"auto|<svg-length>",pause:"<'pause-before'> <'pause-after'>?","pause-after":"<time>|none|x-weak|weak|medium|strong|x-strong","pause-before":"<time>|none|x-weak|weak|medium|strong|x-strong","position-try-options":"<'position-try-fallbacks'>",rest:"<'rest-before'> <'rest-after'>?","rest-after":"<time>|none|x-weak|weak|medium|strong|x-strong","rest-before":"<time>|none|x-weak|weak|medium|strong|x-strong",speak:"auto|never|always","voice-balance":"<number>|left|center|right|leftwards|rightwards","voice-duration":"auto|<time>","voice-family":"[[<family-name>|<generic-voice>] ,]* [<family-name>|<generic-voice>]|preserve","voice-pitch":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-range":"<frequency>&&absolute|[[x-low|low|medium|high|x-high]||[<frequency>|<semitones>|<percentage>]]","voice-rate":"[normal|x-slow|slow|medium|fast|x-fast]||<percentage>","voice-stress":"normal|strong|moderate|none|reduced","voice-volume":"silent|[[x-soft|soft|medium|loud|x-loud]||<decibel>]","white-space-trim":"none|discard-before||discard-after||discard-inner"},atrules:{charset:{prelude:"<string>",descriptors:null},"counter-style":{prelude:"<counter-style-name>",descriptors:{"additive-symbols":"[<integer [0,\u221E]>&&<symbol>]#",fallback:"<counter-style-name>",negative:"<symbol> <symbol>?",pad:"<integer [0,\u221E]>&&<symbol>",prefix:"<symbol>",range:"[[<integer>|infinite]{2}]#|auto","speak-as":"auto|bullets|numbers|words|spell-out|<counter-style-name>",suffix:"<symbol>",symbols:"<symbol>+",system:"cyclic|numeric|alphabetic|symbolic|additive|[fixed <integer>?]|[extends <counter-style-name>]"}},container:{prelude:"[<container-name>]? <container-condition>",descriptors:null},document:{prelude:"[<url>|url-prefix( <string> )|domain( <string> )|media-document( <string> )|regexp( <string> )]#",descriptors:null},"font-face":{prelude:null,descriptors:{"ascent-override":"normal|<percentage>","descent-override":"normal|<percentage>","font-display":"auto|block|swap|fallback|optional","font-family":"<family-name>","font-feature-settings":"normal|<feature-tag-value>#","font-stretch":"<font-stretch-absolute>{1,2}","font-style":"normal|italic|oblique <angle>{0,2}","font-variation-settings":"normal|[<string> <number>]#","font-weight":"<font-weight-absolute>{1,2}","line-gap-override":"normal|<percentage>","size-adjust":"<percentage>",src:"[<url> [format( <string># )]?|local( <family-name> )]#","unicode-range":"<urange>#"}},"font-feature-values":{prelude:"<family-name>#",descriptors:null},"font-palette-values":{prelude:"<dashed-ident>",descriptors:{"base-palette":"light|dark|<integer [0,\u221E]>","font-family":"<family-name>#","override-colors":"[<integer [0,\u221E]> <color>]#"}},import:{prelude:"[<string>|<url>] [layer|layer( <layer-name> )]? [supports( [<supports-condition>|<declaration>] )]? <media-query-list>?",descriptors:null},keyframes:{prelude:"<keyframes-name>",descriptors:null},layer:{prelude:"[<layer-name>#|<layer-name>?]",descriptors:null},media:{prelude:"<media-query-list>",descriptors:null},namespace:{prelude:"<namespace-prefix>? [<string>|<url>]",descriptors:null},page:{prelude:"<page-selector-list>",descriptors:{bleed:"auto|<length>",marks:"none|[crop||cross]","page-orientation":"upright|rotate-left|rotate-right",size:"<length [0,\u221E]>{1,2}|auto|[<page-size>||[portrait|landscape]]"}},"position-try":{prelude:"<dashed-ident>",descriptors:{top:"<'top'>",left:"<'left'>",bottom:"<'bottom'>",right:"<'right'>","inset-block-start":"<'inset-block-start'>","inset-block-end":"<'inset-block-end'>","inset-inline-start":"<'inset-inline-start'>","inset-inline-end":"<'inset-inline-end'>","inset-block":"<'inset-block'>","inset-inline":"<'inset-inline'>",inset:"<'inset'>","margin-top":"<'margin-top'>","margin-left":"<'margin-left'>","margin-bottom":"<'margin-bottom'>","margin-right":"<'margin-right'>","margin-block-start":"<'margin-block-start'>","margin-block-end":"<'margin-block-end'>","margin-inline-start":"<'margin-inline-start'>","margin-inline-end":"<'margin-inline-end'>",margin:"<'margin'>","margin-block":"<'margin-block'>","margin-inline":"<'margin-inline'>",width:"<'width'>",height:"<'height'>","min-width":"<'min-width'>","min-height":"<'min-height'>","max-width":"<'max-width'>","max-height":"<'max-height'>","block-size":"<'block-size'>","inline-size":"<'inline-size'>","min-block-size":"<'min-block-size'>","min-inline-size":"<'min-inline-size'>","max-block-size":"<'max-block-size'>","max-inline-size":"<'max-inline-size'>","align-self":"<'align-self'>|anchor-center","justify-self":"<'justify-self'>|anchor-center"}},property:{prelude:"<custom-property-name>",descriptors:{inherits:"true|false","initial-value":"<declaration-value>?",syntax:"<string>"}},scope:{prelude:"[( <scope-start> )]? [to ( <scope-end> )]?",descriptors:null},"starting-style":{prelude:null,descriptors:null},supports:{prelude:"<supports-condition>",descriptors:null},"view-transition":{prelude:null,descriptors:{navigation:"auto|none",types:"none|<custom-ident>+"}},"font-features-values":{prelude:"[<string>|<custom-ident>]+",descriptors:{"font-display":"auto|block|swap|fallback|optional"}}}}});var Wp={};Se(Wp,{generate:()=>bP,name:()=>xP,parse:()=>Hp,structure:()=>yP});function Wl(e,t){let n=this.tokenStart+e,r=this.charCodeAt(n);for((r===Hr||r===or)&&(t&&this.error("Number sign is not allowed"),n++);n<this.tokenEnd;n++)Wt(this.charCodeAt(n))||this.error("Integer is expected",n)}function Ni(e){return Wl.call(this,0,e)}function Po(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let n="";switch(t){case Hl:n="N is expected";break;case or:n="HyphenMinus is expected";break}this.error(n,this.tokenStart+e)}}function jp(){let e=0,t=0,n=this.tokenType;for(;n===13||n===25;)n=this.lookupType(++e);if(n!==10)if(this.isDelim(Hr,e)||this.isDelim(or,e)){t=this.isDelim(Hr,e)?Hr:or;do n=this.lookupType(++e);while(n===13||n===25);n!==10&&(this.skip(e),Ni.call(this,ni))}else return null;return e>0&&this.skip(e),t===0&&(n=this.charCodeAt(this.tokenStart),n!==Hr&&n!==or&&this.error("Number sign is expected")),Ni.call(this,t!==0),t===or?"-"+this.consume(10):this.consume(10)}function Hp(){let e=this.tokenStart,t=null,n=null;if(this.tokenType===10)Ni.call(this,hP),n=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,or))switch(t="-1",Po.call(this,1,Hl),this.tokenEnd-this.tokenStart){case 2:this.next(),n=jp.call(this);break;case 3:Po.call(this,2,or),this.next(),this.skipSC(),Ni.call(this,ni),n="-"+this.consume(10);break;default:Po.call(this,2,or),Wl.call(this,3,ni),this.next(),n=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(Hr)&&this.lookupType(1)===1){let r=0;switch(t="1",this.isDelim(Hr)&&(r=1,this.next()),Po.call(this,0,Hl),this.tokenEnd-this.tokenStart){case 1:this.next(),n=jp.call(this);break;case 2:Po.call(this,1,or),this.next(),this.skipSC(),Ni.call(this,ni),n="-"+this.consume(10);break;default:Po.call(this,1,or),Wl.call(this,2,ni),this.next(),n=this.substrToCursor(e+r+1)}}else if(this.tokenType===12){let r=this.charCodeAt(this.tokenStart),o=r===Hr||r===or,i=this.tokenStart+o;for(;i<this.tokenEnd&&Wt(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Po.call(this,i-this.tokenStart,Hl),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),n=jp.call(this)):(Po.call(this,i-this.tokenStart+1,or),i+2===this.tokenEnd?(this.next(),this.skipSC(),Ni.call(this,ni),n="-"+this.consume(10)):(Wl.call(this,i-this.tokenStart+2,ni),this.next(),n=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===Hr&&(t=t.substr(1)),n!==null&&n.charCodeAt(0)===Hr&&(n=n.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:n}}function bP(e){if(e.a){let t=e.a==="+1"&&"n"||e.a==="1"&&"n"||e.a==="-1"&&"-n"||e.a+"n";if(e.b){let n=e.b[0]==="-"||e.b[0]==="+"?e.b:"+"+e.b;this.tokenize(t+n)}else this.tokenize(t)}else this.tokenize(e.b)}var Hr,or,Hl,ni,hP,xP,yP,Vp=U(()=>{"use strict";dr();Hr=43,or=45,Hl=110,ni=!0,hP=!1;xP="AnPlusB",yP={a:[String,null],b:[String,null]}});var qp={};Se(qp,{generate:()=>CP,name:()=>wP,parse:()=>Gp,structure:()=>kP,walkContext:()=>vP});function X0(){return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function SP(){for(let e=1,t;t=this.lookupType(e);e++){if(t===24)return!0;if(t===23||t===3)return!1}return!1}function Gp(e=!1){let t=this.tokenStart,n,r,o=null,i=null;switch(this.eat(3),n=this.substrToCursor(t+1),r=n.toLowerCase(),this.skipSC(),this.eof===!1&&this.tokenType!==23&&this.tokenType!==17&&(this.parseAtrulePrelude?o=this.parseWithFallback(this.AtrulePrelude.bind(this,n,e),X0):o=X0.call(this,this.tokenIndex),this.skipSC()),this.tokenType){case 17:this.next();break;case 23:hasOwnProperty.call(this.atrule,r)&&typeof this.atrule[r].block=="function"?i=this.atrule[r].block.call(this,e):i=this.Block(SP.call(this));break}return{type:"Atrule",loc:this.getLocation(t,this.tokenStart),name:n,prelude:o,block:i}}function CP(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var wP,vP,kP,Yp=U(()=>{"use strict";wP="Atrule",vP="atrule",kP={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]}});var Xp={};Se(Xp,{generate:()=>EP,name:()=>TP,parse:()=>Kp,structure:()=>FP,walkContext:()=>IP});function Kp(e){let t=null;return e!==null&&(e=e.toLowerCase()),this.skipSC(),hasOwnProperty.call(this.atrule,e)&&typeof this.atrule[e].prelude=="function"?t=this.atrule[e].prelude.call(this):t=this.readSequence(this.scope.AtrulePrelude),this.skipSC(),this.eof!==!0&&this.tokenType!==23&&this.tokenType!==17&&this.error("Semicolon or block is expected"),{type:"AtrulePrelude",loc:this.getLocationFromList(t),children:t}}function EP(e){this.children(e)}var TP,IP,FP,Qp=U(()=>{"use strict";TP="AtrulePrelude",IP="atrulePrelude",FP={children:[[]]}});var ed={};Se(ed,{generate:()=>zP,name:()=>DP,parse:()=>Zp,structure:()=>RP});function MP(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(Q0)?(t=!0,this.next()):this.isDelim(Jp)||this.eat(1),this.isDelim(Jp)?this.charCodeAt(this.tokenStart+1)!==Vl?(this.next(),this.eat(1)):t&&this.error("Identifier is expected",this.tokenEnd):t&&this.error("Vertical line is expected"),{type:"Identifier",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function BP(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==Vl&&t!==LP&&t!==PP&&t!==AP&&t!==Q0&&t!==Jp&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==Vl&&(this.isDelim(Vl)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}function Zp(){let e=this.tokenStart,t,n=null,r=null,o=null;return this.eat(19),this.skipSC(),t=MP.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(n=BP.call(this),this.skipSC(),r=this.tokenType===5?this.String():this.Identifier(),this.skipSC()),this.tokenType===1&&(o=this.consume(1),this.skipSC())),this.eat(20),{type:"AttributeSelector",loc:this.getLocation(e,this.tokenStart),name:t,matcher:n,value:r,flags:o}}function zP(e){this.token(9,"["),this.node(e.name),e.matcher!==null&&(this.tokenize(e.matcher),this.node(e.value)),e.flags!==null&&this.token(1,e.flags),this.token(9,"]")}var AP,Q0,Vl,PP,Jp,LP,DP,RP,td=U(()=>{"use strict";AP=36,Q0=42,Vl=61,PP=94,Jp=124,LP=126;DP="AttributeSelector",RP={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]}});var rd={};Se(rd,{generate:()=>jP,name:()=>_P,parse:()=>nd,structure:()=>UP,walkContext:()=>$P});function eS(){return this.Raw(null,!0)}function J0(){return this.parseWithFallback(this.Rule,eS)}function Z0(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function OP(){if(this.tokenType===17)return Z0.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,Z0);return this.tokenType===17&&this.next(),e}function nd(e){let t=e?OP:J0,n=this.tokenStart,r=this.createList();this.eat(23);e:for(;!this.eof;)switch(this.tokenType){case 24:break e;case 13:case 25:this.next();break;case 3:r.push(this.parseWithFallback(this.Atrule.bind(this,e),eS));break;default:e&&this.isDelim(NP)?r.push(J0.call(this)):r.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(n,this.tokenStart),children:r}}function jP(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var NP,_P,$P,UP,od=U(()=>{"use strict";NP=38;_P="Block",$P="block",UP={children:[["Atrule","Rule","Declaration"]]}});var sd={};Se(sd,{generate:()=>VP,name:()=>HP,parse:()=>id,structure:()=>WP});function id(e,t){let n=this.tokenStart,r=null;return this.eat(19),r=e.call(this,t),this.eof||this.eat(20),{type:"Brackets",loc:this.getLocation(n,this.tokenStart),children:r}}function VP(e){this.token(9,"["),this.children(e),this.token(9,"]")}var HP,WP,ad=U(()=>{"use strict";HP="Brackets",WP={children:[[]]}});var cd={};Se(cd,{generate:()=>YP,name:()=>GP,parse:()=>ld,structure:()=>qP});function ld(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function YP(){this.token(15,"-->")}var GP,qP,ud=U(()=>{"use strict";GP="CDC",qP=[]});var dd={};Se(dd,{generate:()=>QP,name:()=>KP,parse:()=>pd,structure:()=>XP});function pd(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function QP(){this.token(14,"<!--")}var KP,XP,gd=U(()=>{"use strict";KP="CDO",XP=[]});var md={};Se(md,{generate:()=>tL,name:()=>ZP,parse:()=>fd,structure:()=>eL});function fd(){return this.eatDelim(JP),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function tL(e){this.token(9,"."),this.token(1,e.name)}var JP,ZP,eL,hd=U(()=>{"use strict";JP=46,ZP="ClassSelector",eL={name:String}});var yd={};Se(yd,{generate:()=>aL,name:()=>iL,parse:()=>xd,structure:()=>sL});function xd(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case rL:case nL:case oL:this.next();break;case tS:this.next(),this.eatIdent("deep"),this.eatDelim(tS);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function aL(e){this.tokenize(e.name)}var nL,tS,rL,oL,iL,sL,bd=U(()=>{"use strict";nL=43,tS=47,rL=62,oL=126,iL="Combinator",sL={name:String}});var wd={};Se(wd,{generate:()=>dL,name:()=>uL,parse:()=>Sd,structure:()=>pL});function Sd(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===lL&&this.charCodeAt(t-1)===cL&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function dL(e){this.token(25,"/*"+e.value+"*/")}var lL,cL,uL,pL,vd=U(()=>{"use strict";lL=42,cL=47,uL="Comment",pL={value:String}});var Cd={};Se(Cd,{generate:()=>xL,name:()=>fL,parse:()=>kd,structure:()=>mL});function nS(e){return this.lookupTypeNonSC(1)===1&&gL.has(this.lookupTypeNonSC(2))?this.Feature(e):this.FeatureRange(e)}function kd(e="media"){let t=this.createList();e:for(;!this.eof;)switch(this.tokenType){case 25:case 13:this.next();continue;case 1:t.push(this.Identifier());break;case 21:{let n=this.parseWithFallback(()=>hL[e].call(this,e),()=>null);n||(n=this.parseWithFallback(()=>{this.eat(21);let r=this.Condition(e);return this.eat(22),r},()=>this.GeneralEnclosed(e))),t.push(n);break}case 2:{let n=this.parseWithFallback(()=>this.FeatureFunction(e),()=>null);n||(n=this.GeneralEnclosed(e)),t.push(n);break}default:break e}return t.isEmpty&&this.error("Condition is expected"),{type:"Condition",loc:this.getLocationFromList(t),kind:e,children:t}}function xL(e){e.children.forEach(t=>{t.type==="Condition"?(this.token(21,"("),this.node(t),this.token(22,")")):this.node(t)})}var gL,fL,mL,hL,Td=U(()=>{"use strict";gL=new Set([16,22,0]),fL="Condition",mL={kind:String,children:[["Identifier","Feature","FeatureFunction","FeatureRange","SupportsDeclaration"]]};hL={media:nS,container:nS,supports(){return this.SupportsDeclaration()}}});var Fd={};Se(Fd,{generate:()=>AL,name:()=>IL,parse:()=>Id,structure:()=>EL,walkContext:()=>FL});function kL(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!0)}function CL(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!1)}function TL(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(oS)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}function Id(){let e=this.tokenStart,t=this.tokenIndex,n=PL.call(this),r=Ll(n),o=r?this.parseCustomProperty:this.parseValue,i=r?CL:kL,s=!1,a;this.skipSC(),this.eat(16);let u=this.tokenIndex;if(r||this.skipSC(),o?a=this.parseWithFallback(TL,i):a=i.call(this,this.tokenIndex),r&&a.type==="Value"&&a.children.isEmpty){for(let c=u-this.tokenIndex;c<=0;c++)if(this.lookupType(c)===13){a.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(oS)&&(s=LL.call(this),this.skipSC()),this.eof===!1&&this.tokenType!==17&&this.isBalanceEdge(t)===!1&&this.error(),{type:"Declaration",loc:this.getLocation(e,this.tokenStart),important:s,property:n,value:a}}function AL(e){this.token(1,e.property),this.token(16,":"),this.node(e.value),e.important&&(this.token(9,"!"),this.token(1,e.important===!0?"important":e.important))}function PL(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case wL:case bL:case vL:case yL:case SL:this.next();break;case rS:this.next(),this.isDelim(rS)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function LL(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var oS,yL,bL,SL,wL,vL,rS,IL,FL,EL,Ed=U(()=>{"use strict";Ml();oS=33,yL=35,bL=36,SL=38,wL=42,vL=43,rS=47;IL="Declaration",FL="declaration",EL={important:[Boolean,String],property:String,value:["Value","Raw"]}});var Ld={};Se(Ld,{generate:()=>RL,name:()=>BL,parse:()=>Pd,structure:()=>DL});function Ad(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function Pd(){let e=this.createList();for(;!this.eof;)switch(this.tokenType){case 13:case 25:case 17:this.next();break;case 3:e.push(this.parseWithFallback(this.Atrule.bind(this,!0),Ad));break;default:this.isDelim(ML)?e.push(this.parseWithFallback(this.Rule,Ad)):e.push(this.parseWithFallback(this.Declaration,Ad))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function RL(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var ML,BL,DL,Md=U(()=>{"use strict";ML=38;BL="DeclarationList",DL={children:[["Declaration","Atrule","Rule"]]}});var Dd={};Se(Dd,{generate:()=>OL,name:()=>zL,parse:()=>Bd,structure:()=>NL});function Bd(){let e=this.tokenStart,t=this.consumeNumber(12);return{type:"Dimension",loc:this.getLocation(e,this.tokenStart),value:t,unit:this.substring(e+t.length,this.tokenStart)}}function OL(e){this.token(12,e.value+e.unit)}var zL,NL,Rd=U(()=>{"use strict";zL="Dimension",NL={value:String,unit:String}});var Nd={};Se(Nd,{generate:()=>jL,name:()=>$L,parse:()=>zd,structure:()=>UL});function zd(e){let t=this.tokenStart,n,r=null;if(this.eat(21),this.skipSC(),n=this.consume(1),this.skipSC(),this.tokenType!==22){switch(this.eat(16),this.skipSC(),this.tokenType){case 10:this.lookupNonWSType(1)===9?r=this.Ratio():r=this.Number();break;case 12:r=this.Dimension();break;case 1:r=this.Identifier();break;case 2:r=this.parseWithFallback(()=>{let o=this.Function(this.readSequence,this.scope.Value);return this.skipSC(),this.isDelim(_L)&&this.error(),o},()=>this.Ratio());break;default:this.error("Number, dimension, ratio or identifier is expected")}this.skipSC()}return this.eof||this.eat(22),{type:"Feature",loc:this.getLocation(t,this.tokenStart),kind:e,name:n,value:r}}function jL(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var _L,$L,UL,Od=U(()=>{"use strict";_L=47,$L="Feature",UL={kind:String,name:String,value:["Identifier","Number","Dimension","Ratio","Function",null]}});var $d={};Se($d,{generate:()=>GL,name:()=>HL,parse:()=>_d,structure:()=>WL});function VL(e,t){let r=(this.features[e]||{})[t];return typeof r!="function"&&this.error(`Unknown feature ${t}()`),r}function _d(e="unknown"){let t=this.tokenStart,n=this.consumeFunctionName(),r=VL.call(this,e,n.toLowerCase());this.skipSC();let o=this.parseWithFallback(()=>{let i=this.tokenIndex,s=r.call(this);return this.eof===!1&&this.isBalanceEdge(i)===!1&&this.error(),s},()=>this.Raw(null,!1));return this.eof||this.eat(22),{type:"FeatureFunction",loc:this.getLocation(t,this.tokenStart),kind:e,feature:n,value:o}}function GL(e){this.token(2,e.feature+"("),this.node(e.value),this.token(22,")")}var HL,WL,Ud=U(()=>{"use strict";HL="FeatureFunction",WL={kind:String,feature:String,value:["Declaration","Selector"]}});var Wd={};Se(Wd,{generate:()=>QL,name:()=>KL,parse:()=>Hd,structure:()=>XL});function jd(){switch(this.skipSC(),this.tokenType){case 10:return this.isDelim(iS,this.lookupOffsetNonSC(1))?this.Ratio():this.Number();case 12:return this.Dimension();case 1:return this.Identifier();case 2:return this.parseWithFallback(()=>{let e=this.Function(this.readSequence,this.scope.Value);return this.skipSC(),this.isDelim(iS)&&this.error(),e},()=>this.Ratio());default:this.error("Number, dimension, ratio or identifier is expected")}}function aS(e){if(this.skipSC(),this.isDelim(qL)||this.isDelim(YL)){let t=this.source[this.tokenStart];return this.next(),this.isDelim(sS)?(this.next(),t+"="):t}if(this.isDelim(sS))return"=";this.error(`Expected ${e?'":", ':""}"<", ">", "=" or ")"`)}function Hd(e="unknown"){let t=this.tokenStart;this.skipSC(),this.eat(21);let n=jd.call(this),r=aS.call(this,n.type==="Identifier"),o=jd.call(this),i=null,s=null;return this.lookupNonWSType(0)!==22&&(i=aS.call(this),s=jd.call(this)),this.skipSC(),this.eat(22),{type:"FeatureRange",loc:this.getLocation(t,this.tokenStart),kind:e,left:n,leftComparison:r,middle:o,rightComparison:i,right:s}}function QL(e){this.token(21,"("),this.node(e.left),this.tokenize(e.leftComparison),this.node(e.middle),e.right&&(this.tokenize(e.rightComparison),this.node(e.right)),this.token(22,")")}var iS,qL,sS,YL,KL,XL,Vd=U(()=>{"use strict";iS=47,qL=60,sS=61,YL=62,KL="FeatureRange",XL={kind:String,left:["Identifier","Number","Dimension","Ratio","Function"],leftComparison:String,middle:["Identifier","Number","Dimension","Ratio","Function"],rightComparison:[String,null],right:["Identifier","Number","Dimension","Ratio","Function",null]}});var qd={};Se(qd,{generate:()=>tM,name:()=>JL,parse:()=>Gd,structure:()=>eM,walkContext:()=>ZL});function Gd(e,t){let n=this.tokenStart,r=this.consumeFunctionName(),o=r.toLowerCase(),i;return i=t.hasOwnProperty(o)?t[o].call(this,t):e.call(this,t),this.eof||this.eat(22),{type:"Function",loc:this.getLocation(n,this.tokenStart),name:r,children:i}}function tM(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var JL,ZL,eM,Yd=U(()=>{"use strict";JL="Function",ZL="function",eM={name:String,children:[[]]}});var Xd={};Se(Xd,{generate:()=>oM,name:()=>nM,parse:()=>Kd,structure:()=>rM});function Kd(e){let t=this.tokenStart,n=null;this.tokenType===2?n=this.consumeFunctionName():this.eat(21);let r=this.parseWithFallback(()=>{let o=this.tokenIndex,i=this.readSequence(this.scope.Value);return this.eof===!1&&this.isBalanceEdge(o)===!1&&this.error(),i},()=>this.createSingleNodeList(this.Raw(null,!1)));return this.eof||this.eat(22),{type:"GeneralEnclosed",loc:this.getLocation(t,this.tokenStart),kind:e,function:n,children:r}}function oM(e){e.function?this.token(2,e.function+"("):this.token(21,"("),this.children(e),this.token(22,")")}var nM,rM,Qd=U(()=>{"use strict";nM="GeneralEnclosed",rM={kind:String,function:[String,null],children:[[]]}});var Zd={};Se(Zd,{generate:()=>lM,name:()=>sM,parse:()=>Jd,structure:()=>aM,xxx:()=>iM});function Jd(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function lM(e){this.token(4,"#"+e.value)}var iM,sM,aM,eg=U(()=>{"use strict";iM="XXX",sM="Hash",aM={value:String}});var ng={};Se(ng,{generate:()=>pM,name:()=>cM,parse:()=>tg,structure:()=>uM});function tg(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function pM(e){this.token(1,e.name)}var cM,uM,rg=U(()=>{"use strict";cM="Identifier",uM={name:String}});var ig={};Se(ig,{generate:()=>fM,name:()=>dM,parse:()=>og,structure:()=>gM});function og(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function fM(e){this.token(9,"#"+e.name)}var dM,gM,sg=U(()=>{"use strict";dM="IdSelector",gM={name:String}});var lg={};Se(lg,{generate:()=>yM,name:()=>hM,parse:()=>ag,structure:()=>xM});function ag(){let e=this.tokenStart,t=this.consume(1);for(;this.isDelim(mM);)this.eat(9),t+="."+this.consume(1);return{type:"Layer",loc:this.getLocation(e,this.tokenStart),name:t}}function yM(e){this.tokenize(e.name)}var mM,hM,xM,cg=U(()=>{"use strict";mM=46,hM="Layer",xM={name:String}});var pg={};Se(pg,{generate:()=>wM,name:()=>bM,parse:()=>ug,structure:()=>SM});function ug(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.Layer()),this.lookupTypeNonSC(0)===18);)this.skipSC(),this.next(),this.skipSC();return{type:"LayerList",loc:this.getLocationFromList(e),children:e}}function wM(e){this.children(e,()=>this.token(18,","))}var bM,SM,dg=U(()=>{"use strict";bM="LayerList",SM={children:[["Layer"]]}});var fg={};Se(fg,{generate:()=>CM,name:()=>vM,parse:()=>gg,structure:()=>kM});function gg(){let e=this.tokenStart,t=null,n=null,r=null;if(this.skipSC(),this.tokenType===1&&this.lookupTypeNonSC(1)!==21){let o=this.consume(1),i=o.toLowerCase();switch(i==="not"||i==="only"?(this.skipSC(),t=i,n=this.consume(1)):n=o,this.lookupTypeNonSC(0)){case 1:{this.skipSC(),this.eatIdent("and"),r=this.Condition("media");break}case 23:case 17:case 18:case 0:break;default:this.error("Identifier or parenthesis is expected")}}else switch(this.tokenType){case 1:case 21:case 2:{r=this.Condition("media");break}case 23:case 17:case 0:break;default:this.error("Identifier or parenthesis is expected")}return{type:"MediaQuery",loc:this.getLocation(e,this.tokenStart),modifier:t,mediaType:n,condition:r}}function CM(e){e.mediaType?(e.modifier&&this.token(1,e.modifier),this.token(1,e.mediaType),e.condition&&(this.token(1,"and"),this.node(e.condition))):e.condition&&this.node(e.condition)}var vM,kM,mg=U(()=>{"use strict";vM="MediaQuery",kM={modifier:[String,null],mediaType:[String,null],condition:["Condition",null]}});var xg={};Se(xg,{generate:()=>FM,name:()=>TM,parse:()=>hg,structure:()=>IM});function hg(){let e=this.createList();for(this.skipSC();!this.eof&&(e.push(this.MediaQuery()),this.tokenType===18);)this.next();return{type:"MediaQueryList",loc:this.getLocationFromList(e),children:e}}function FM(e){this.children(e,()=>this.token(18,","))}var TM,IM,yg=U(()=>{"use strict";TM="MediaQueryList",IM={children:[["MediaQuery"]]}});var Sg={};Se(Sg,{generate:()=>LM,name:()=>AM,parse:()=>bg,structure:()=>PM});function bg(){let e=this.tokenStart;return this.eatDelim(EM),{type:"NestingSelector",loc:this.getLocation(e,this.tokenStart)}}function LM(){this.token(9,"&")}var EM,AM,PM,wg=U(()=>{"use strict";EM=38,AM="NestingSelector",PM={}});var kg={};Se(kg,{generate:()=>DM,name:()=>MM,parse:()=>vg,structure:()=>BM});function vg(){this.skipSC();let e=this.tokenStart,t=e,n=null,r;return this.lookupValue(0,"odd")||this.lookupValue(0,"even")?r=this.Identifier():r=this.AnPlusB(),t=this.tokenStart,this.skipSC(),this.lookupValue(0,"of")&&(this.next(),n=this.SelectorList(),t=this.tokenStart),{type:"Nth",loc:this.getLocation(e,t),nth:r,selector:n}}function DM(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var MM,BM,Cg=U(()=>{"use strict";MM="Nth",BM={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]}});var Ig={};Se(Ig,{generate:()=>NM,name:()=>RM,parse:()=>Tg,structure:()=>zM});function Tg(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function NM(e){this.token(10,e.value)}var RM,zM,Fg=U(()=>{"use strict";RM="Number",zM={value:String}});var Ag={};Se(Ag,{generate:()=>$M,name:()=>OM,parse:()=>Eg,structure:()=>_M});function Eg(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function $M(e){this.tokenize(e.value)}var OM,_M,Pg=U(()=>{"use strict";OM="Operator",_M={value:String}});var Mg={};Se(Mg,{generate:()=>HM,name:()=>UM,parse:()=>Lg,structure:()=>jM});function Lg(e,t){let n=this.tokenStart,r=null;return this.eat(21),r=e.call(this,t),this.eof||this.eat(22),{type:"Parentheses",loc:this.getLocation(n,this.tokenStart),children:r}}function HM(e){this.token(21,"("),this.children(e),this.token(22,")")}var UM,jM,Bg=U(()=>{"use strict";UM="Parentheses",jM={children:[[]]}});var Rg={};Se(Rg,{generate:()=>GM,name:()=>WM,parse:()=>Dg,structure:()=>VM});function Dg(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function GM(e){this.token(11,e.value+"%")}var WM,VM,zg=U(()=>{"use strict";WM="Percentage",VM={value:String}});var Og={};Se(Og,{generate:()=>XM,name:()=>qM,parse:()=>Ng,structure:()=>KM,walkContext:()=>YM});function Ng(){let e=this.tokenStart,t=null,n,r;return this.eat(16),this.tokenType===2?(n=this.consumeFunctionName(),r=n.toLowerCase(),this.lookupNonWSType(0)==22?t=this.createList():hasOwnProperty.call(this.pseudo,r)?(this.skipSC(),t=this.pseudo[r].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(null,!1))),this.eat(22)):n=this.consume(1),{type:"PseudoClassSelector",loc:this.getLocation(e,this.tokenStart),name:n,children:t}}function XM(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var qM,YM,KM,_g=U(()=>{"use strict";qM="PseudoClassSelector",YM="function",KM={name:String,children:[["Raw"],null]}});var Ug={};Se(Ug,{generate:()=>eB,name:()=>QM,parse:()=>$g,structure:()=>ZM,walkContext:()=>JM});function $g(){let e=this.tokenStart,t=null,n,r;return this.eat(16),this.eat(16),this.tokenType===2?(n=this.consumeFunctionName(),r=n.toLowerCase(),this.lookupNonWSType(0)==22?t=this.createList():hasOwnProperty.call(this.pseudo,r)?(this.skipSC(),t=this.pseudo[r].call(this),this.skipSC()):(t=this.createList(),t.push(this.Raw(null,!1))),this.eat(22)):n=this.consume(1),{type:"PseudoElementSelector",loc:this.getLocation(e,this.tokenStart),name:n,children:t}}function eB(e){this.token(16,":"),this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var QM,JM,ZM,jg=U(()=>{"use strict";QM="PseudoElementSelector",JM="function",ZM={name:String,children:[["Raw"],null]}});var Wg={};Se(Wg,{generate:()=>rB,name:()=>tB,parse:()=>Hg,structure:()=>nB});function cS(){switch(this.skipSC(),this.tokenType){case 10:return this.Number();case 2:return this.Function(this.readSequence,this.scope.Value);default:this.error("Number of function is expected")}}function Hg(){let e=this.tokenStart,t=cS.call(this),n=null;return this.skipSC(),this.isDelim(lS)&&(this.eatDelim(lS),n=cS.call(this)),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:n}}function rB(e){this.node(e.left),this.token(9,"/"),e.right?this.node(e.right):this.node(10,1)}var lS,tB,nB,Vg=U(()=>{"use strict";lS=47;tB="Ratio",nB={left:["Number","Function"],right:["Number","Function",null]}});var qg={};Se(qg,{generate:()=>aB,name:()=>iB,parse:()=>Gg,structure:()=>sB});function oB(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}function Gg(e,t){let n=this.getTokenStart(this.tokenIndex),r;return this.skipUntilBalanced(this.tokenIndex,e||this.consumeUntilBalanceEnd),t&&this.tokenStart>n?r=oB.call(this):r=this.tokenStart,{type:"Raw",loc:this.getLocation(n,r),value:this.substring(n,r)}}function aB(e){this.tokenize(e.value)}var iB,sB,Yg=U(()=>{"use strict";iB="Raw",sB={value:String}});var Xg={};Se(Xg,{generate:()=>dB,name:()=>cB,parse:()=>Kg,structure:()=>pB,walkContext:()=>uB});function uS(){return this.Raw(this.consumeUntilLeftCurlyBracket,!0)}function lB(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}function Kg(){let e=this.tokenIndex,t=this.tokenStart,n,r;return this.parseRulePrelude?n=this.parseWithFallback(lB,uS):n=uS.call(this,e),r=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:n,block:r}}function dB(e){this.node(e.prelude),this.node(e.block)}var cB,uB,pB,Qg=U(()=>{"use strict";cB="Rule",uB="rule",pB={prelude:["SelectorList","Raw"],block:["Block"]}});var Zg={};Se(Zg,{generate:()=>mB,name:()=>gB,parse:()=>Jg,structure:()=>fB});function Jg(){let e=null,t=null;this.skipSC();let n=this.tokenStart;return this.tokenType===21&&(this.next(),this.skipSC(),e=this.parseWithFallback(this.SelectorList,()=>this.Raw(!1,!0)),this.skipSC(),this.eat(22)),this.lookupNonWSType(0)===1&&(this.skipSC(),this.eatIdent("to"),this.skipSC(),this.eat(21),this.skipSC(),t=this.parseWithFallback(this.SelectorList,()=>this.Raw(!1,!0)),this.skipSC(),this.eat(22)),{type:"Scope",loc:this.getLocation(n,this.tokenStart),root:e,limit:t}}function mB(e){e.root&&(this.token(21,"("),this.node(e.root),this.token(22,")")),e.limit&&(this.token(1,"to"),this.token(21,"("),this.node(e.limit),this.token(22,")"))}var gB,fB,ef=U(()=>{"use strict";gB="Scope",fB={root:["SelectorList","Raw",null],limit:["SelectorList","Raw",null]}});var nf={};Se(nf,{generate:()=>yB,name:()=>hB,parse:()=>tf,structure:()=>xB});function tf(){let e=this.readSequence(this.scope.Selector);return this.getFirstListNode(e)===null&&this.error("Selector is expected"),{type:"Selector",loc:this.getLocationFromList(e),children:e}}function yB(e){this.children(e)}var hB,xB,rf=U(()=>{"use strict";hB="Selector",xB={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator"]]}});var sf={};Se(sf,{generate:()=>vB,name:()=>bB,parse:()=>of,structure:()=>wB,walkContext:()=>SB});function of(){let e=this.createList();for(;!this.eof;){if(e.push(this.Selector()),this.tokenType===18){this.next();continue}break}return{type:"SelectorList",loc:this.getLocationFromList(e),children:e}}function vB(e){this.children(e,()=>this.token(18,","))}var bB,SB,wB,af=U(()=>{"use strict";bB="SelectorList",SB="selector",wB={children:[["Selector","Raw"]]}});function Gl(e){let t=e.length,n=e.charCodeAt(0),r=n===pS||n===dS?1:0,o=r===1&&t>1&&e.charCodeAt(t-1)===n?t-2:t-1,i="";for(let s=r;s<=o;s++){let a=e.charCodeAt(s);if(a===lf){if(s===o){s!==t-1&&(i=e.substr(s+1));break}if(a=e.charCodeAt(++s),$n(lf,a)){let u=s-1,c=to(e,u);s=c-1,i+=ml(e.substring(u+1,c))}else a===13&&e.charCodeAt(s+1)===10&&s++}else i+=e[s]}return i}function gS(e,t){let n=t?"'":'"',r=t?dS:pS,o="",i=!1;for(let s=0;s<e.length;s++){let a=e.charCodeAt(s);if(a===0){o+="\uFFFD";continue}if(a<=31||a===127){o+="\\"+a.toString(16),i=!0;continue}a===r||a===lf?(o+="\\"+e.charAt(s),i=!1):(i&&(Un(a)||Ur(a))&&(o+=" "),o+=e.charAt(s),i=!1)}return n+o+n}var lf,pS,dS,ql=U(()=>{"use strict";dr();lf=92,pS=34,dS=39});var uf={};Se(uf,{generate:()=>TB,name:()=>kB,parse:()=>cf,structure:()=>CB});function cf(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Gl(this.consume(5))}}function TB(e){this.token(5,gS(e.value))}var kB,CB,pf=U(()=>{"use strict";ql();kB="String",CB={value:String}});var gf={};Se(gf,{generate:()=>PB,name:()=>FB,parse:()=>df,structure:()=>AB,walkContext:()=>EB});function mS(){return this.Raw(null,!1)}function df(){let e=this.tokenStart,t=this.createList(),n;for(;!this.eof;){switch(this.tokenType){case 13:this.next();continue;case 25:if(this.charCodeAt(this.tokenStart+2)!==IB){this.next();continue}n=this.Comment();break;case 14:n=this.CDO();break;case 15:n=this.CDC();break;case 3:n=this.parseWithFallback(this.Atrule,mS);break;default:n=this.parseWithFallback(this.Rule,mS)}t.push(n)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function PB(e){this.children(e)}var IB,FB,EB,AB,ff=U(()=>{"use strict";IB=33;FB="StyleSheet",EB="stylesheet",AB={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]}});var hf={};Se(hf,{generate:()=>BB,name:()=>LB,parse:()=>mf,structure:()=>MB});function mf(){let e=this.tokenStart;this.eat(21),this.skipSC();let t=this.Declaration();return this.eof||this.eat(22),{type:"SupportsDeclaration",loc:this.getLocation(e,this.tokenStart),declaration:t}}function BB(e){this.token(21,"("),this.node(e.declaration),this.token(22,")")}var LB,MB,xf=U(()=>{"use strict";LB="SupportsDeclaration",MB={declaration:"Declaration"}});var Sf={};Se(Sf,{generate:()=>NB,name:()=>RB,parse:()=>bf,structure:()=>zB});function yf(){this.tokenType!==1&&this.isDelim(DB)===!1&&this.error("Identifier or asterisk is expected"),this.next()}function bf(){let e=this.tokenStart;return this.isDelim(hS)?(this.next(),yf.call(this)):(yf.call(this),this.isDelim(hS)&&(this.next(),yf.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function NB(e){this.tokenize(e.name)}var DB,hS,RB,zB,wf=U(()=>{"use strict";DB=42,hS=124;RB="TypeSelector",zB={name:String}});var Cf={};Se(Cf,{generate:()=>jB,name:()=>$B,parse:()=>kf,structure:()=>UB});function Hs(e,t){let n=0;for(let r=this.tokenStart+e;r<this.tokenEnd;r++){let o=this.charCodeAt(r);if(o===yS&&t&&n!==0)return Hs.call(this,e+n+1,!1),-1;Un(o)||this.error(t&&n!==0?"Hyphen minus"+(n<6?" or hex digit":"")+" is expected":n<6?"Hex digit is expected":"Unexpected input",r),++n>6&&this.error("Too many hex digits",r)}return this.next(),n}function Yl(e){let t=0;for(;this.isDelim(vf);)++t>e&&this.error("Too many question marks"),this.next()}function OB(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===xS?"Plus sign":"Hyphen minus")+" is expected")}function _B(){let e=0;switch(this.tokenType){case 10:if(e=Hs.call(this,1,!0),this.isDelim(vf)){Yl.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){OB.call(this,yS),Hs.call(this,1,!1);break}break;case 12:e=Hs.call(this,1,!0),e>0&&Yl.call(this,6-e);break;default:if(this.eatDelim(xS),this.tokenType===1){e=Hs.call(this,0,!0),e>0&&Yl.call(this,6-e);break}if(this.isDelim(vf)){this.next(),Yl.call(this,5);break}this.error("Hex digit or question mark is expected")}}function kf(){let e=this.tokenStart;return this.eatIdent("u"),_B.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function jB(e){this.tokenize(e.value)}var xS,yS,vf,$B,UB,Tf=U(()=>{"use strict";dr();xS=43,yS=45,vf=63;$B="UnicodeRange",UB={value:String}});function SS(e){let t=e.length,n=4,r=e.charCodeAt(t-1)===bS?t-2:t-1,o="";for(;n<r&&Ur(e.charCodeAt(n));)n++;for(;n<r&&Ur(e.charCodeAt(r));)r--;for(let i=n;i<=r;i++){let s=e.charCodeAt(i);if(s===If){if(i===r){i!==t-1&&(o=e.substr(i+1));break}if(s=e.charCodeAt(++i),$n(If,s)){let a=i-1,u=to(e,a);i=u-1,o+=ml(e.substring(a+1,u))}else s===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function wS(e){let t="",n=!1;for(let r=0;r<e.length;r++){let o=e.charCodeAt(r);if(o===0){t+="\uFFFD";continue}if(o<=31||o===127){t+="\\"+o.toString(16),n=!0;continue}o===HB||o===If||o===WB||o===VB||o===GB||o===bS?(t+="\\"+e.charAt(r),n=!1):(n&&Un(o)&&(t+=" "),t+=e.charAt(r),n=!1)}return"url("+t+")"}var HB,If,WB,VB,GB,bS,Ff=U(()=>{"use strict";dr();HB=32,If=92,WB=34,VB=39,GB=40,bS=41});var Af={};Se(Af,{generate:()=>KB,name:()=>qB,parse:()=>Ef,structure:()=>YB});function Ef(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=SS(this.consume(7));break;case 2:this.cmpStr(this.tokenStart,this.tokenEnd,"url(")||this.error("Function name must be `url`"),this.eat(2),this.skipSC(),t=Gl(this.consume(5)),this.skipSC(),this.eof||this.eat(22);break;default:this.error("Url or Function is expected")}return{type:"Url",loc:this.getLocation(e,this.tokenStart),value:t}}function KB(e){this.token(7,wS(e.value))}var qB,YB,Pf=U(()=>{"use strict";Ff();ql();qB="Url",YB={value:String}});var Mf={};Se(Mf,{generate:()=>JB,name:()=>XB,parse:()=>Lf,structure:()=>QB});function Lf(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function JB(e){this.children(e)}var XB,QB,Bf=U(()=>{"use strict";XB="Value",QB={children:[[]]}});var Rf={};Se(Rf,{generate:()=>nD,name:()=>eD,parse:()=>Df,structure:()=>tD});function Df(){return this.eat(13),ZB}function nD(e){this.token(13,e.value)}var ZB,eD,tD,zf=U(()=>{"use strict";ZB=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),eD="WhiteSpace",tD={value:String}});var Ws={};Se(Ws,{AnPlusB:()=>Wp,Atrule:()=>qp,AtrulePrelude:()=>Xp,AttributeSelector:()=>ed,Block:()=>rd,Brackets:()=>sd,CDC:()=>cd,CDO:()=>dd,ClassSelector:()=>md,Combinator:()=>yd,Comment:()=>wd,Condition:()=>Cd,Declaration:()=>Fd,DeclarationList:()=>Ld,Dimension:()=>Dd,Feature:()=>Nd,FeatureFunction:()=>$d,FeatureRange:()=>Wd,Function:()=>qd,GeneralEnclosed:()=>Xd,Hash:()=>Zd,IdSelector:()=>ig,Identifier:()=>ng,Layer:()=>lg,LayerList:()=>pg,MediaQuery:()=>fg,MediaQueryList:()=>xg,NestingSelector:()=>Sg,Nth:()=>kg,Number:()=>Ig,Operator:()=>Ag,Parentheses:()=>Mg,Percentage:()=>Rg,PseudoClassSelector:()=>Og,PseudoElementSelector:()=>Ug,Ratio:()=>Wg,Raw:()=>qg,Rule:()=>Xg,Scope:()=>Zg,Selector:()=>nf,SelectorList:()=>sf,String:()=>uf,StyleSheet:()=>gf,SupportsDeclaration:()=>hf,TypeSelector:()=>Sf,UnicodeRange:()=>Cf,Url:()=>Af,Value:()=>Mf,WhiteSpace:()=>Rf});var Nf=U(()=>{"use strict";Vp();Yp();Qp();td();od();ad();ud();gd();hd();bd();vd();Td();Ed();Md();Rd();Od();Ud();Vd();Yd();Qd();eg();rg();sg();cg();dg();mg();yg();wg();Cg();Fg();Pg();Bg();zg();_g();jg();Vg();Yg();Qg();ef();rf();af();pf();ff();xf();wf();Tf();Pf();Bf();zf()});var kS,CS=U(()=>{"use strict";Bl();K0();Nf();kS={generic:!0,cssWideKeywords:Mi,...Y0,node:Ws}});function Vs(e){switch(this.tokenType){case 4:return this.Hash();case 18:return this.Operator();case 21:return this.Parentheses(this.readSequence,e.recognizer);case 19:return this.Brackets(this.readSequence,e.recognizer);case 5:return this.String();case 12:return this.Dimension();case 11:return this.Percentage();case 10:return this.Number();case 2:return this.cmpStr(this.tokenStart,this.tokenEnd,"url(")?this.Url():this.Function(this.readSequence,e.recognizer);case 7:return this.Url();case 1:return this.cmpChar(this.tokenStart,aD)&&this.cmpChar(this.tokenStart+1,TS)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===sD||t===oD||t===TS||t===iD)return this.Operator();t===rD&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var rD,oD,TS,iD,sD,aD,Of=U(()=>{"use strict";rD=35,oD=42,TS=43,iD=45,sD=47,aD=117});var IS,FS=U(()=>{"use strict";Of();IS={getNode:Vs}});function hD(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function xD(){switch(this.tokenType){case 19:return this.AttributeSelector();case 4:return this.IdSelector();case 16:return this.lookupType(1)===16?this.PseudoElementSelector():this.PseudoClassSelector();case 1:return this.TypeSelector();case 10:case 11:return this.Percentage();case 12:this.charCodeAt(this.tokenStart)===ES&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case pD:case gD:case mD:case dD:return this.Combinator();case ES:return this.ClassSelector();case uD:case fD:return this.TypeSelector();case lD:return this.IdSelector();case cD:return this.NestingSelector()}break}}}var lD,cD,uD,pD,dD,ES,gD,fD,mD,AS,PS=U(()=>{"use strict";lD=35,cD=38,uD=42,pD=43,dD=47,ES=46,gD=62,fD=124,mD=126;AS={onWhiteSpace:hD,getNode:xD}});function LS(){return this.createSingleNodeList(this.Raw(null,!1))}var MS=U(()=>{"use strict"});function BS(){let e=this.createList();if(this.skipSC(),e.push(this.Identifier()),this.skipSC(),this.tokenType===18){e.push(this.Operator());let t=this.tokenIndex,n=this.parseCustomProperty?this.Value(null):this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!1);if(n.type==="Value"&&n.children.isEmpty){for(let r=t-this.tokenIndex;r<=0;r++)if(this.lookupType(r)===13){n.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}e.push(n)}return e}var DS=U(()=>{"use strict"});function RS(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var zS,NS=U(()=>{"use strict";Of();MS();DS();zS={getNode:Vs,onWhiteSpace(e,t){RS(e)&&(e.value=" "+e.value),RS(t.last)&&(t.last.value+=" ")},expression:LS,var:BS}});var _f={};Se(_f,{AtrulePrelude:()=>IS,Selector:()=>AS,Value:()=>zS});var OS=U(()=>{"use strict";FS();PS();NS()});var yD,_S,$S=U(()=>{"use strict";yD=new Set(["none","and","not","or"]),_S={parse:{prelude(){let e=this.createList();if(this.tokenType===1){let t=this.substring(this.tokenStart,this.tokenEnd);yD.has(t.toLowerCase())||e.push(this.Identifier())}return e.push(this.Condition("container")),e},block(e=!1){return this.Block(e)}}}});var US,jS=U(()=>{"use strict";US={parse:{prelude:null,block(){return this.Block(!0)}}}});function $f(e,t){return this.parseWithFallback(()=>{try{return e.call(this)}finally{this.skipSC(),this.lookupNonWSType(0)!==22&&this.error()}},t||(()=>this.Raw(null,!0)))}var HS,WS,VS=U(()=>{"use strict";HS={layer(){this.skipSC();let e=this.createList(),t=$f.call(this,this.Layer);return(t.type!=="Raw"||t.value!=="")&&e.push(t),e},supports(){this.skipSC();let e=this.createList(),t=$f.call(this,this.Declaration,()=>$f.call(this,()=>this.Condition("supports")));return(t.type!=="Raw"||t.value!=="")&&e.push(t),e}},WS={parse:{prelude(){let e=this.createList();switch(this.tokenType){case 5:e.push(this.String());break;case 7:case 2:e.push(this.Url());break;default:this.error("String or url() is expected")}return this.skipSC(),this.tokenType===1&&this.cmpStr(this.tokenStart,this.tokenEnd,"layer")?e.push(this.Identifier()):this.tokenType===2&&this.cmpStr(this.tokenStart,this.tokenEnd,"layer(")&&e.push(this.Function(null,HS)),this.skipSC(),this.tokenType===2&&this.cmpStr(this.tokenStart,this.tokenEnd,"supports(")&&e.push(this.Function(null,HS)),(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}}});var GS,qS=U(()=>{"use strict";GS={parse:{prelude(){return this.createSingleNodeList(this.LayerList())},block(){return this.Block(!1)}}}});var YS,KS=U(()=>{"use strict";YS={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(e=!1){return this.Block(e)}}}});var XS,QS=U(()=>{"use strict";XS={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var JS,ZS=U(()=>{"use strict";JS={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var ew,tw=U(()=>{"use strict";ew={parse:{prelude(){return this.createSingleNodeList(this.Scope())},block(e=!1){return this.Block(e)}}}});var nw,rw=U(()=>{"use strict";nw={parse:{prelude:null,block(e=!1){return this.Block(e)}}}});var ow,iw=U(()=>{"use strict";ow={parse:{prelude(){return this.createSingleNodeList(this.Condition("supports"))},block(e=!1){return this.Block(e)}}}});var sw,aw=U(()=>{"use strict";$S();jS();VS();qS();KS();QS();ZS();tw();rw();iw();sw={container:_S,"font-face":US,import:WS,layer:GS,media:YS,nest:XS,page:JS,scope:ew,"starting-style":nw,supports:ow}});function lw(){let e=this.createList();this.skipSC();e:for(;!this.eof;){switch(this.tokenType){case 1:e.push(this.Identifier());break;case 5:e.push(this.String());break;case 18:e.push(this.Operator());break;case 22:break e;default:this.error("Identifier, string or comma is expected")}this.skipSC()}return e}var cw=U(()=>{"use strict"});var ri,Uf,bD,SD,Kl,uw,pw=U(()=>{"use strict";cw();ri={parse(){return this.createSingleNodeList(this.SelectorList())}},Uf={parse(){return this.createSingleNodeList(this.Selector())}},bD={parse(){return this.createSingleNodeList(this.Identifier())}},SD={parse:lw},Kl={parse(){return this.createSingleNodeList(this.Nth())}},uw={dir:bD,has:ri,lang:SD,matches:ri,is:ri,"-moz-any":ri,"-webkit-any":ri,where:ri,not:ri,"nth-child":Kl,"nth-last-child":Kl,"nth-last-of-type":Kl,"nth-of-type":Kl,slotted:Uf,host:Uf,"host-context":Uf}});var jf={};Se(jf,{AnPlusB:()=>Hp,Atrule:()=>Gp,AtrulePrelude:()=>Kp,AttributeSelector:()=>Zp,Block:()=>nd,Brackets:()=>id,CDC:()=>ld,CDO:()=>pd,ClassSelector:()=>fd,Combinator:()=>xd,Comment:()=>Sd,Condition:()=>kd,Declaration:()=>Id,DeclarationList:()=>Pd,Dimension:()=>Bd,Feature:()=>zd,FeatureFunction:()=>_d,FeatureRange:()=>Hd,Function:()=>Gd,GeneralEnclosed:()=>Kd,Hash:()=>Jd,IdSelector:()=>og,Identifier:()=>tg,Layer:()=>ag,LayerList:()=>ug,MediaQuery:()=>gg,MediaQueryList:()=>hg,NestingSelector:()=>bg,Nth:()=>vg,Number:()=>Tg,Operator:()=>Eg,Parentheses:()=>Lg,Percentage:()=>Dg,PseudoClassSelector:()=>Ng,PseudoElementSelector:()=>$g,Ratio:()=>Hg,Raw:()=>Gg,Rule:()=>Kg,Scope:()=>Jg,Selector:()=>tf,SelectorList:()=>of,String:()=>cf,StyleSheet:()=>df,SupportsDeclaration:()=>mf,TypeSelector:()=>bf,UnicodeRange:()=>kf,Url:()=>Ef,Value:()=>Lf,WhiteSpace:()=>Df});var dw=U(()=>{"use strict";Vp();Yp();Qp();td();od();ad();ud();gd();hd();bd();vd();Td();Ed();Md();Rd();Od();Ud();Vd();Yd();Qd();eg();rg();sg();cg();dg();mg();yg();wg();Cg();Fg();Pg();Bg();zg();_g();jg();Vg();Yg();Qg();ef();rf();af();pf();ff();xf();wf();Tf();Pf();Bf();zf()});var gw,fw=U(()=>{"use strict";OS();aw();pw();dw();gw={parseContext:{default:"StyleSheet",stylesheet:"StyleSheet",atrule:"Atrule",atrulePrelude(e){return this.AtrulePrelude(e.atrule?String(e.atrule):null)},mediaQueryList:"MediaQueryList",mediaQuery:"MediaQuery",condition(e){return this.Condition(e.kind)},rule:"Rule",selectorList:"SelectorList",selector:"Selector",block(){return this.Block(!0)},declarationList:"DeclarationList",declaration:"Declaration",value:"Value"},features:{supports:{selector(){return this.Selector()}},container:{style(){return this.Declaration()}}},scope:_f,atrule:sw,pseudo:uw,node:jf}});var mw,hw=U(()=>{"use strict";Nf();mw={node:Ws}});var xw,yw=U(()=>{"use strict";q0();CS();fw();hw();xw=G0({...kS,...gw,...mw})});var bw=U(()=>{"use strict"});var Sw=U(()=>{"use strict"});var cK,ww,uK,pK,dK,vw,gK,fK,mK,hK,xK,yK,kw=U(()=>{"use strict";yw();bw();Ap();Ml();Sw();ql();Ff();({tokenize:cK,parse:ww,generate:uK,lexer:pK,createLexer:dK,walk:vw,find:gK,findLast:fK,findAll:mK,toPlainObject:hK,fromPlainObject:xK,fork:yK}=xw)});function CD(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Tw(e){try{let t=ww(e.trim(),{context:"value"}),n=[];return vw(t,{enter(r){if(r.type==="Dimension"){let o=parseFloat(r.value);n.push(`${o}${r.unit}`)}else if(r.type==="Number"){let o=parseFloat(r.value);n.push(`${o}`)}else r.type==="Percentage"?n.push(`${parseFloat(r.value)}%`):r.type==="Identifier"?n.push(r.name.toLowerCase()):r.type==="Hash"?n.push(`#${r.value.toLowerCase()}`):r.type}}),n}catch{return[e.trim().toLowerCase()]}}function TD(e,t){let n=CD(e);if(!kD.has(n))return t;let r=Tw(t);if(r.length<1||r.length>4)return t;let o=r.map(i=>i==="0"?"0px":i);return o.length===1?`${o[0]} ${o[0]} ${o[0]} ${o[0]}`:o.length===2?`${o[0]} ${o[1]} ${o[0]} ${o[1]}`:o.length===3?`${o[0]} ${o[1]} ${o[2]} ${o[1]}`:o.join(" ")}function Cw(e,t){let n=t.trim();if(!n)return"";let r=TD(e,n);return Tw(r).map(i=>i==="0"?"0px":i).join(" ")}function Iw(e,t,n){let r=Cw(e,t),o=Cw(e,n);return r!==""&&o!==""&&r===o}var kD,Fw=U(()=>{"use strict";kw();kD=new Set(["padding","margin","border-radius","borderradius","inset","border-width","borderwidth"])});function ID(e){let t=e.toLowerCase();return t.length===4?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t}function FD(e){let t=e.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*[\d.]+)?\s*\)/);if(!t)return null;let n=parseInt(t[1],10).toString(16).padStart(2,"0"),r=parseInt(t[2],10).toString(16).padStart(2,"0"),o=parseInt(t[3],10).toString(16).padStart(2,"0");return`#${n}${r}${o}`}function Ew(e){let t=typeof e=="string"?e:String(e??"");if(!t||t==="[object Object]")return"";let n=t.match(/rgba?\s*\(\s*\d+\s*,\s*\d+\s*,\s*\d+(?:\s*,\s*[\d.]+)?\s*\)/);if(n){let i=FD(n[0]);if(i)return i}let r=t.match(/#([0-9a-fA-F]{3,8})/);if(r)return ID(r[0]);let o=t.match(/(-?\d+\.?\d*)(px|em|rem|%|pt|vw|vh)?/g);return o&&o.length>1?o.join(" ").toLowerCase():o&&o.length===1?o[0].toLowerCase():t.toLowerCase().trim().replace(/\s+/g," ")}function oi(e,t,n){if(!e||!t)return!1;let r=String(e),o=String(t),i=r.toLowerCase(),s=o.toLowerCase(),a=i.includes("none"),u=s.includes("none");if(a!==u)return!1;let c=/\b(fill|stroke)\s*:/i,l=c.test(r),d=c.test(o);if(l!==d)return!1;let g=Ew(r),p=Ew(o);return!!(g===p||n&&Iw(n,r,o))}var Hf=U(()=>{"use strict";Fw()});function MD(e){let t=String(e.property||"").toLowerCase(),n=String(e.description||"").toLowerCase(),r=String(e.expected||e.suggestedValue||"").toLowerCase(),o=String(e.actual||e.currentValue||"").toLowerCase();if(t.includes("color")||t.includes("fill")||t.includes("background")||n.includes("color")||n.includes("fill"))return!0;let i=s=>/^#[0-9a-f]{3,8}$/i.test(s)||s.includes("rgb")||["white","black","red","blue","green","orange","yellow","transparent"].includes(s);return!!(i(r)||i(o)||e.relatedProperties?.some(s=>{let a=s.property?.toLowerCase()||"";return a.includes("color")||a.includes("fill")||a.includes("background")}))}function Aw(e){if(e.includes("\xD7")||/\d+px\s*x\s*\d+px/i.test(e))return!1;let t=e.match(/\d+px/g);return t?t.length>1:!1}function BD(e){let t=String(e.expected||e.suggestedValue||"").toLowerCase(),n=String(e.actual||e.currentValue||"").toLowerCase(),r=String(e.property||"").toLowerCase(),o=String(e.description||"").toLowerCase(),i=n.includes("margin")||t.includes("margin")||r==="margin",s=t.includes("gap")||o.includes("gap");return i&&s}function DD(e,t,n){if(!e||!t)return!1;let r=typeof e=="string"?e:String(e??""),o=typeof t=="string"?t:String(t??"");if(!r||!o||r==="[object Object]"||o==="[object Object]"||n&&MD(n)||Aw(r)||Aw(o)||n&&BD(n))return!1;let i=parseFloat(r),s=parseFloat(o);if(isNaN(i)||isNaN(s))return!1;let a=Math.abs(i-s);if(r.includes("px")||o.includes("px")){let u=n?.property?.toLowerCase()||"";return u==="width"||u==="height"||u.includes("width")||u.includes("height")?a<Mw:a<Lw}return r.includes("%")||o.includes("%")?a<1:!1}function RD(e){let t=`${e.description||""} ${e.title||""} ${e.suggestedFix||""}`.toLowerCase();if(LD.some(s=>t.includes(s))||!AD.some(s=>t.includes(s)))return!1;let o=e.expected||e.suggestedValue,i=e.actual||e.currentValue;return!(o&&i&&!oi(o,i,e.property))}function zD(e){let t=(e.expected!==void 0?"fill":"").toLowerCase(),n=e.actual!==void 0||e.currentValue!==void 0?"fill":"";if(!(t==="fill"||n==="fill"||e.description?.toLowerCase().includes("fill")||e.title?.toLowerCase().includes("fill")))return!1;let o=String(e.expected||e.suggestedValue||"").toLowerCase();if(!(o==="none"||o==="transparent"||o.includes("no fills")||o.includes("transparent")))return!1;let s=`${e.description||""} ${e.title||""}`.toLowerCase();return s.includes("container")||s.includes("svg ")||s.includes("<svg")||s.includes("wrapper")}function ND(e){let t=`${e.description||""} ${e.title||""}`.toLowerCase(),n=e.property?.toLowerCase()||"";if(!(t.includes("text ")||t.includes("text layer")||t.includes("text span")||t.includes("span ")||t.includes("label "))||!(n==="width"||n==="height"||n.includes("width")||n.includes("height")||t.includes("width")||t.includes("height")))return!1;let i=e.expected||e.suggestedValue||"",s=e.actual||e.currentValue||"",a=parseFloat(i),u=parseFloat(s);return isNaN(a)||isNaN(u)?!1:Math.abs(a-u)<Bw}function OD(e){let t=`${e.description||""} ${e.title||""} ${e.suggestedFix||""}`.toLowerCase(),n=String(e.expected||e.suggestedValue||"").toLowerCase(),r=String(e.actual||e.currentValue||"").toLowerCase();if(!PD.some(d=>t.includes(d)||n.includes(d)))return!1;let i=`${t} ${n} ${r}`;if(i.includes("min-width")||i.includes("max-width")||i.includes("min-height")||i.includes("max-height")||i.includes("explicit")||i.includes("constraint")||i.includes("forced"))return!1;let a=n.includes("hug")||n.includes("auto"),u=/\d+\.?\d*px/.test(r);if(!a||!u)return!1;let c=n.match(/(\d+\.?\d*)px/),l=r.match(/(\d+\.?\d*)px/);return!(c&&l&&Math.abs(parseFloat(c[1])-parseFloat(l[1]))>ED)}function _D(e){let t=String(e.expected||e.suggestedValue||"").toLowerCase(),n=String(e.actual||e.currentValue||"").toLowerCase();return(!n||!t||n.includes("see ")||t.includes("see ")||n.includes("image")||t.includes("image"))&&e.type==="visual"}function Pw(e){return typeof e!="string"?"":(e.split(",")[0]||"").replace(/['"]/g,"").replace(/[\s_-]/g,"").toLowerCase().trim()}function $D(e,t,n){if((n||"").toLowerCase().replace(/[\s_-]/g,"")!=="fontfamily")return!1;let o=Pw(e),i=Pw(t);return o.length>0&&i.length>0&&o===i}function Gs(e){let t=e.expected||e.suggestedValue,n=e.actual||e.currentValue;if($D(t,n,e.property))return{dismissed:!0,dismissReason:"Auto-dismissed: font-family naming difference (same font)",dismissedBy:"post-ai-validation"};if(e.programmaticallyVerified)return{dismissed:!1};if(e.fixRequired===!1)return{dismissed:!0,dismissReason:"Auto-dismissed: FixRequired is false (no code change needed)",dismissedBy:"post-ai-validation"};if(oi(t,n,e.property))return{dismissed:!0,dismissReason:"Auto-dismissed: expected equals actual (identical values)",dismissedBy:"post-ai-validation"};if(e.fixRequired===!0)return{dismissed:!1};if(ND(e))return{dismissed:!0,dismissReason:`Auto-dismissed: text dimension variance (<${Bw}px) - font rendering difference, not actionable`,dismissedBy:"post-ai-validation"};if(DD(t,n,e)){let r=e.property?.toLowerCase()||"";return{dismissed:!0,dismissReason:`Auto-dismissed: negligible difference (<${r==="width"||r==="height"||r.includes("width")||r.includes("height")?Mw:Lw}px)`,dismissedBy:"post-ai-validation"}}return _D(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no measurable values to compare",dismissedBy:"post-ai-validation"}:RD(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no fix needed",dismissedBy:"post-ai-validation"}:OD(e)?{dismissed:!0,dismissReason:"Auto-dismissed: HUG sizing - CSS auto-sizes content without explicit dimensions",dismissedBy:"post-ai-validation"}:zD(e)?{dismissed:!0,dismissReason:"Auto-dismissed: SVG container fill - child elements use their own fills",dismissedBy:"post-ai-validation"}:{dismissed:!1}}var Lw,Mw,Bw,ED,AD,PD,LD,Dw=U(()=>{"use strict";Hf();Lw=.5,Mw=2,Bw=2,ED=5,AD=["values match","values already match","already correct","correctly implemented","implementation is correct","css matches","matches figma","identical","same value","no difference","none - ","no changes needed","no fix needed"],PD=["hug","auto (hug)","should be hug","fixed pixel values are being rendered","fixed values are being rendered"],LD=["duplicate","extra","missing","additional","removed","should not exist","does not exist","not in figma","not in storybook","renders 2","renders two","has 1","has one"]});function Wf(e){let t=e.trim().match(/^#?([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/);if(!t)return null;let n=t[1];return n.length===3||n.length===4?n=n.slice(0,3).split("").map(r=>r+r).join(""):n.length===8&&(n=n.slice(0,6)),[parseInt(n.slice(0,2),16),parseInt(n.slice(2,4),16),parseInt(n.slice(4,6),16)]}function UD(e){let t=e.trim().match(/^rgba?\(\s*([^)]+)\)$/i);if(!t)return null;let n=t[1].replace(/\//g," ").split(/[\s,]+/).filter(Boolean);if(n.length<3)return null;let r=u=>u.endsWith("%")?Math.round(parseFloat(u)/100*255):Math.round(parseFloat(u)),o=r(n[0]),i=r(n[1]),s=r(n[2]);if([o,i,s].some(u=>isNaN(u)))return null;let a=u=>Math.max(0,Math.min(255,u));return[a(o),a(i),a(s)]}function jD(e,t,n){let r=(1-Math.abs(2*n-1))*t,o=(e%360+360)%360/60,i=r*(1-Math.abs(o%2-1)),s=0,a=0,u=0;o<1?[s,a,u]=[r,i,0]:o<2?[s,a,u]=[i,r,0]:o<3?[s,a,u]=[0,r,i]:o<4?[s,a,u]=[0,i,r]:o<5?[s,a,u]=[i,0,r]:[s,a,u]=[r,0,i];let c=n-r/2;return[Math.round((s+c)*255),Math.round((a+c)*255),Math.round((u+c)*255)]}function HD(e){let t=e.trim().match(/^hsla?\(\s*([^)]+)\)$/i);if(!t)return null;let n=t[1].replace(/\//g," ").split(/[\s,]+/).filter(Boolean);if(n.length<3)return null;let r=parseFloat(n[0]),o=parseFloat(n[1]),i=parseFloat(n[2]);return[r,o,i].some(s=>isNaN(s))?null:jD(r,o/100,i/100)}function VD(e){return WD[e.trim().toLowerCase()]??null}function Rw(e){return e?Wf(e)??UD(e)??HD(e)??Vf(e)??VD(e):null}function Vf(e){let t=e.trim().match(/^color\(\s*display-p3\s+([\d.]+)\s+([\d.]+)\s+([\d.]+)(?:\s*\/\s*[\d.]+)?\s*\)$/);if(!t)return null;let n=parseFloat(t[1]),r=parseFloat(t[2]),o=parseFloat(t[3]);if(isNaN(n)||isNaN(r)||isNaN(o))return null;let i=p=>p<=.04045?p/12.92:Math.pow((p+.055)/1.055,2.4),s=i(n),a=i(r),u=i(o),c=1.2249*s-.2247*a+0*u,l=-.042*s+1.0419*a+0*u,d=-.0197*s-.0786*a+1.0983*u,g=p=>{let h=Math.max(0,Math.min(1,p));return h<=.0031308?12.92*h:1.055*Math.pow(h,1/2.4)-.055};return[Math.round(g(c)*255),Math.round(g(l)*255),Math.round(g(d)*255)]}function zw(e,t,n){let r=I=>{let v=I/255;return v<=.04045?v/12.92:Math.pow((v+.055)/1.055,2.4)},o=r(e),i=r(t),s=r(n),a=o*.4124564+i*.3575761+s*.1804375,u=o*.2126729+i*.7151522+s*.072175,c=o*.0193339+i*.119192+s*.9503041,l=.95047,d=1,g=1.08883,p=I=>I>.008856?Math.cbrt(I):7.787*I+16/116,h=p(a/l),S=p(u/d),T=p(c/g);return[116*S-16,500*(h-S),200*(S-T)]}function Nw(e,t){let[n,r,o]=zw(...e),[i,s,a]=zw(...t),u=(n+i)/2,c=Math.sqrt(r*r+o*o),l=Math.sqrt(s*s+a*a),d=(c+l)/2,g=.5*(1-Math.sqrt(Math.pow(d,7)/(Math.pow(d,7)+Math.pow(25,7)))),p=(1+g)*r,h=(1+g)*s,S=Math.sqrt(p*p+o*o),T=Math.sqrt(h*h+a*a),I=(S+T)/2,v=(Math.atan2(o,p)*180/Math.PI+360)%360,D=(Math.atan2(a,h)*180/Math.PI+360)%360,N=D-v;Math.abs(N)>180&&(N-=Math.sign(N)*360);let j=i-n,B=T-S,z=2*Math.sqrt(S*T)*Math.sin(N*Math.PI/360),m=Math.abs(v-D)>180?(v+D+360)/2:(v+D)/2,b=1-.17*Math.cos((m-30)*Math.PI/180)+.24*Math.cos(2*m*Math.PI/180)+.32*Math.cos((3*m+6)*Math.PI/180)-.2*Math.cos((4*m-63)*Math.PI/180),k=1+.015*Math.pow(u-50,2)/Math.sqrt(20+Math.pow(u-50,2)),A=1+.045*I,f=1+.015*I*b,C=-2*Math.sqrt(Math.pow(I,7)/(Math.pow(I,7)+Math.pow(25,7)))*Math.sin(60*Math.exp(-Math.pow((m-275)/25,2))*Math.PI/180);return Math.sqrt(Math.pow(j/k,2)+Math.pow(B/A,2)+Math.pow(z/f,2)+C*(B/A)*(z/f))}function Ow(e){let t=(e.property||"").toLowerCase();if(!(t.includes("color")||t==="fill"||t==="background"||t==="backgroundcolor"))return!1;let r=String(e.expected||e.suggestedValue||""),o=String(e.actual||e.currentValue||""),i=Wf(r)??Wf(o),s=Vf(r)??Vf(o);return!i||!s||r===o?!1:Nw(i,s)<5}function _w(e){let t=String(e.expected??e.suggestedValue??""),n=String(e.actual??e.currentValue??"");if(!t||!n||t===n)return null;let r=Rw(t),o=Rw(n);return!r||!o?null:Nw(r,o)}function qs(e){let t=e.severity||"minor";if(t==="minor")return t;if(Ow(e))return"minor";let n=_w(e);if(n!==null)return n<2?"minor":n<5&&t==="critical"?"major":t;let r=["width","height","size","dimension","dimensions","r","cx","cy"],o=["dimension","layout"],i=new Set((e.property||"").replace(/([a-z])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)),s=(e.type||"").toLowerCase();if(!(r.some(p=>i.has(p))||o.some(p=>s===p)))return t;let u=String(e.expected||e.suggestedValue||""),c=String(e.actual||e.currentValue||""),l=parseFloat(u.replace(/[^0-9.-]/g,"")),d=parseFloat(c.replace(/[^0-9.-]/g,""));if(isNaN(l)||isNaN(d))return t;let g=Math.abs(l-d);return g<5?"minor":g<10&&t==="critical"?"major":t}function Xl(e,t,n){return e>0?"D":t>0?"C":n>0?"B":"A"}function Ql(e){let t=e.filter(n=>!n.dismissed).map(n=>qs(n));return Xl(t.filter(n=>n==="critical").length,t.filter(n=>n==="major").length,t.filter(n=>n==="minor").length)}function lo(e,t,n){let r=100-n*1-t*3-e*10,o=ao[Xl(e,t,n)];return Math.max(0,Math.min(o,r))}var WD,ao,$w=U(()=>{"use strict";WD={white:[255,255,255],black:[0,0,0],red:[255,0,0],green:[0,128,0],blue:[0,0,255],yellow:[255,255,0],cyan:[0,255,255],aqua:[0,255,255],magenta:[255,0,255],fuchsia:[255,0,255],gray:[128,128,128],grey:[128,128,128],silver:[192,192,192],maroon:[128,0,0],olive:[128,128,0],lime:[0,255,0],teal:[0,128,128],navy:[0,0,128],purple:[128,0,128],orange:[255,165,0],pink:[255,192,203],brown:[165,42,42],gold:[255,215,0],beige:[245,245,220],ivory:[255,255,240],indigo:[75,0,130],violet:[238,130,238],coral:[255,127,80],salmon:[250,128,114],khaki:[240,230,140],crimson:[220,20,60],turquoise:[64,224,208],lightgray:[211,211,211],lightgrey:[211,211,211],darkgray:[169,169,169],darkgrey:[169,169,169],whitesmoke:[245,245,245],gainsboro:[220,220,220]};ao={A:100,B:99,C:89,D:69}});var Uw=U(()=>{"use strict"});var jw=U(()=>{"use strict"});var Gf=U(()=>{"use strict";Hf();Dw();$w();Uw();jw()});var ZD,eR,RK,qf=U(()=>{"use strict";ZD=["flex","inline-flex"],eR=["grid","inline-grid"],RK=[...ZD,...eR]});var Ww=U(()=>{"use strict";Gf();qf()});var Vw=U(()=>{"use strict"});var cn=U(()=>{"use strict";Ou();Hy();Wy();Gf();qf();Ww();Vw()});function nR(e){let{aiPrompt:t,aiResponse:n,...r}=e;return r}function ir(e){try{let t=e.map(nR),n=JSON.stringify(t,rR);sessionStorage.setItem(Yf,n)}catch(t){y.error("[SessionStorage] Failed to save review history:",t)}}function Kf(){try{let e=sessionStorage.getItem(Yf);if(!e)return[];let t=JSON.parse(e,oR);return Array.isArray(t)?t:[]}catch(e){return y.error("[SessionStorage] Failed to load review history:",e),[]}}function Gw(){try{let e=Kf();if(e.length===0)return;let t=!1,n=e.map(r=>{if(r.aiPrompt!==void 0||r.aiResponse!==void 0){t=!0;let{aiPrompt:o,aiResponse:i,...s}=r;return s}return r});t&&(ir(n),y.debug("[SessionStorage] Stripped aiPrompt/aiResponse from existing review history"))}catch(e){y.error("[SessionStorage] Failed to strip sensitive fields:",e)}}function qw(){try{sessionStorage.removeItem(Yf),y.debug("[SessionStorage] Review history cleared")}catch(e){y.error("[SessionStorage] Failed to clear review history:",e)}}function rR(e,t){return t instanceof Date?{__type:"Date",value:t.toISOString()}:t}function oR(e,t){return t&&t.__type==="Date"?new Date(t.value):t}var Yf,Xf=U(()=>{"use strict";Oe();Yf="uicopilot_review_history"});import iR,{createContext as sR,useContext as aR,useReducer as lR,useMemo as Yw,useRef as cR,useEffect as uR}from"react";function Jl(e){let t=e.length>Kw?e.slice(e.length-Kw):e,n=Math.max(0,t.length-pR);return n===0?t:t.map((r,o)=>{if(o>=n)return r;let i=r.storybookImageData?.startsWith("data:"),s=r.figmaImageData?.startsWith("data:");return!i&&!s?r:{...r,storybookImageData:i?void 0:r.storybookImageData,figmaImageData:s?void 0:r.figmaImageData}})}function dR(e,t){switch(t.type){case"SET_STATE":return{...e,...t.payload};case"ADD_STREAMING_MESSAGE":return{...e,streamingMessages:[...e.streamingMessages,t.payload]};case"UPDATE_STREAMING_MESSAGE":return{...e,streamingMessages:e.streamingMessages.map((n,r)=>r===t.payload.index?{...n,content:t.payload.content}:n)};case"CLEAR_STREAMING_MESSAGES":return{...e,streamingMessages:[]};case"TOGGLE_MODEL":{let n=e.selectedModels.includes(t.payload);return n&&e.selectedModels.length===1?e:{...e,selectedModels:n?e.selectedModels.filter(r=>r!==t.payload):[...e.selectedModels,t.payload]}}case"SET_REVIEW_RESULTS":{if(!t.payload)return{...e,reviewResults:null,currentReviewId:null};let n=e.userRole==="admin",r={id:t.payload.id,componentId:t.payload.componentId,storyId:t.payload.storyId,modelId:t.payload.modelId,complianceScore:t.payload.complianceScore,issuesCount:t.payload.issuesCount,issues:t.payload.issues,createdAt:t.payload.createdAt,visualSimilarity:t.payload.visualSimilarity,storybookImageData:e.storybookImageUrl||void 0,figmaImageData:e.figmaImageUrl||void 0,aiPrompt:n&&e.fullPrompt||void 0,aiResponse:n&&e.fullResponse||void 0,costUsd:t.payload.costUsd,inputTokens:t.payload.inputTokens,outputTokens:t.payload.outputTokens},o=e.reviewHistory.findIndex(s=>s.id===t.payload.id),i;return o>=0?i=e.reviewHistory.map((s,a)=>a===o?r:s):i=[...e.reviewHistory,r],i=Jl(i),ir(i),{...e,reviewResults:t.payload,reviewHistory:i,currentReviewId:t.payload.id,isNewReviewMode:!1}}case"UPDATE_MULTI_MODEL_STREAMING":return e.multiModelResults?{...e,multiModelResults:{...e.multiModelResults,byModel:{...e.multiModelResults.byModel,[t.payload.modelId]:{...e.multiModelResults.byModel[t.payload.modelId],streamingMessages:t.payload.messages}}}}:{...e,multiModelResults:{byModel:{[t.payload.modelId]:{streamingMessages:t.payload.messages}},activeModelId:t.payload.modelId}};case"SET_MODEL_COMPLETED":return e.multiModelResults?{...e,multiModelResults:{...e.multiModelResults,byModel:{...e.multiModelResults.byModel,[t.payload]:{...e.multiModelResults.byModel[t.payload],completed:!0}}}}:e;case"BULK_ADD_REVIEWS":{if(t.payload.length===0)return e;let n=new Map(e.reviewHistory.map(s=>[s.id,s])),r=!1,o=e.reviewHistory.slice();for(let s of t.payload){let a=n.get(s.id);if(!a){o.push(s),r=!0;continue}let u=s.issues?.length??0,c=a.issues?.length??0;if(u>c){let l=o.indexOf(a);l!==-1&&(o[l]=s,r=!0)}}if(!r)return e;let i=Jl(o);return ir(i),{...e,reviewHistory:i}}case"ADD_REVIEW":{let n=Jl([...e.reviewHistory,t.payload]);return ir(n),{...e,reviewHistory:n,currentReviewId:t.payload.id,isNewReviewMode:!1}}case"TOGGLE_ISSUE_SELECTION":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>r.id!==e.currentReviewId?r:{...r,issues:r.issues.map(o=>o.id===t.payload?{...o,selectedForFix:!o.selectedForFix}:o)});return ir(n),{...e,reviewHistory:n}}case"UPDATE_ISSUE_STATUS":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>r.id!==e.currentReviewId?r:{...r,issues:r.issues.map(o=>o.id===t.payload.issueId?{...o,status:t.payload.status,error:t.payload.error}:o)});return ir(n),{...e,reviewHistory:n}}case"UPDATE_ISSUE_GENERATED_FIX":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>r.id!==e.currentReviewId?r:{...r,issues:r.issues.map(o=>o.id===t.payload.issueId?{...o,generatedFix:o.generatedFix?{...o.generatedFix,...t.payload.generatedFix}:t.payload.generatedFix,selectedForFix:t.payload.generatedFix?.status==="failed"?!1:o.selectedForFix}:o)});return ir(n),{...e,reviewHistory:n}}case"BATCH_UPDATE_ISSUE_GENERATED_FIXES":{if(!e.currentReviewId)return e;let n=new Map(t.payload.map(o=>[o.issueId,o.generatedFix])),r=e.reviewHistory.map(o=>o.id!==e.currentReviewId?o:{...o,issues:o.issues.map(i=>{let s=n.get(i.id);return s?{...i,generatedFix:i.generatedFix?{...i.generatedFix,...s}:s,selectedForFix:s?.status==="failed"?!1:i.selectedForFix}:i})});return ir(r),{...e,reviewHistory:r}}case"DISMISS_ISSUE":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>{if(r.id!==e.currentReviewId)return r;let o=r.issues.map(c=>c.id===t.payload.issueId?{...c,dismissed:!0,dismissReason:t.payload.reason,dismissedAt:new Date,dismissedBy:t.payload.dismissedBy}:c),i=o.filter(c=>!c.dismissed),s=i.filter(c=>c.severity==="critical").length,a=i.filter(c=>c.severity==="major").length,u=i.filter(c=>c.severity==="minor").length;return{...r,issues:o,complianceScore:lo(s,a,u),issuesCount:i.length}});return ir(n),{...e,reviewHistory:n}}case"UNDISMISS_ISSUE":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>{if(r.id!==e.currentReviewId)return r;let o=r.issues.map(c=>c.id===t.payload?{...c,dismissed:!1,dismissReason:void 0,dismissedAt:void 0}:c),i=o.filter(c=>!c.dismissed),s=i.filter(c=>c.severity==="critical").length,a=i.filter(c=>c.severity==="major").length,u=i.filter(c=>c.severity==="minor").length;return{...r,issues:o,complianceScore:lo(s,a,u),issuesCount:i.length}});return ir(n),{...e,reviewHistory:n}}case"RECALCULATE_SCORE":{if(!e.currentReviewId)return e;let n=e.reviewHistory.map(r=>{if(r.id!==e.currentReviewId)return r;let o=r.issues.filter(c=>!c.dismissed),i=o.filter(c=>c.severity==="critical").length,s=o.filter(c=>c.severity==="major").length,a=o.filter(c=>c.severity==="minor").length,u=lo(i,s,a);return y.debug(`[recalculateScore] Active: ${o.length}, score: ${u}`),{...r,complianceScore:u,issuesCount:o.length}});return ir(n),{...e,reviewHistory:n}}case"UPDATE_REVIEW_SCORE":{let n=e.reviewHistory.map(r=>r.id!==t.payload.reviewId?r:{...r,complianceScore:t.payload.newScore});return ir(n),{...e,reviewHistory:n}}case"CLEAR_ALL_REVIEWS":return qw(),{...e,reviewHistory:[],currentReviewId:null};case"CLEAR_STALE_REVIEWS":return{...e,currentReviewId:null,reviewResults:null,isNewReviewMode:!1};case"RESET_REVIEW":{let n=e.isReviewing;return{...e,isReviewing:!1,reviewError:null,reviewResults:n?null:e.reviewResults,multiModelResults:null,streamingMessages:[],streamingProgress:0,streamingStatus:"",reviewDetailTab:n?"chat":e.reviewDetailTab,fullPrompt:"",fullResponse:"",figmaImageUrl:n?null:e.figmaImageUrl,storybookImageUrl:n?null:e.storybookImageUrl,currentReviewId:n?null:e.currentReviewId}}case"RESET_PROMPT":return{...e,isGenerating:!1,generatedPrompt:null,promptError:null};case"TRIGGER_SCREENSHOT_REFRESH":return{...e,screenshotRefreshKey:e.screenshotRefreshKey+1};default:return e}}function Jf({children:e}){let[t,n]=lR(dR,xR),r=cR(t);uR(()=>{r.current=t},[t]);let o=Yw(()=>({setIsReviewing:s=>n({type:"SET_STATE",payload:{isReviewing:s}}),setReviewingStoryId:s=>n({type:"SET_STATE",payload:{reviewingStoryId:s}}),setReviewError:s=>n({type:"SET_STATE",payload:{reviewError:s}}),bulkAddReviews:s=>n({type:"BULK_ADD_REVIEWS",payload:s}),setReviewResults:s=>n({type:"SET_REVIEW_RESULTS",payload:s}),setMultiModelResults:s=>n({type:"SET_STATE",payload:{multiModelResults:s}}),updateMultiModelStreamingMessages:(s,a)=>n({type:"UPDATE_MULTI_MODEL_STREAMING",payload:{modelId:s,messages:a}}),setModelCompleted:s=>n({type:"SET_MODEL_COMPLETED",payload:s}),setActiveModelId:s=>{let a=r.current;a.multiModelResults&&n({type:"SET_STATE",payload:{multiModelResults:{...a.multiModelResults,activeModelId:s}}})},setShowReviewMenu:s=>n({type:"SET_STATE",payload:{showReviewMenu:s}}),setSeverityFilter:s=>n({type:"SET_STATE",payload:{severityFilter:s}}),setShowStreamingPanel:s=>n({type:"SET_STATE",payload:{showStreamingPanel:s}}),setStreamingPanelCollapsed:s=>n({type:"SET_STATE",payload:{streamingPanelCollapsed:s}}),addStreamingMessage:s=>n({type:"ADD_STREAMING_MESSAGE",payload:s}),updateStreamingMessage:(s,a)=>n({type:"UPDATE_STREAMING_MESSAGE",payload:{index:s,content:a}}),clearStreamingMessages:()=>n({type:"CLEAR_STREAMING_MESSAGES"}),setStreamingProgress:s=>n({type:"SET_STATE",payload:{streamingProgress:s}}),setStreamingStatus:s=>n({type:"SET_STATE",payload:{streamingStatus:s}}),setReviewDetailTab:s=>n({type:"SET_STATE",payload:{reviewDetailTab:s}}),setFullPrompt:s=>n({type:"SET_STATE",payload:{fullPrompt:s}}),setFullResponse:s=>n({type:"SET_STATE",payload:{fullResponse:s}}),setFigmaImageUrl:s=>n({type:"SET_STATE",payload:{figmaImageUrl:s}}),setStorybookImageUrl:s=>n({type:"SET_STATE",payload:{storybookImageUrl:s}}),setFigmaDimensions:s=>n({type:"SET_STATE",payload:{figmaDimensions:s}}),setSelectedModels:s=>n({type:"SET_STATE",payload:{selectedModels:s}}),toggleModel:s=>n({type:"TOGGLE_MODEL",payload:s}),setModelComparisonView:s=>n({type:"SET_STATE",payload:{modelComparisonView:s}}),resetReview:()=>n({type:"RESET_REVIEW"}),addReview:s=>n({type:"ADD_REVIEW",payload:s}),getCurrentReview:()=>{let s=r.current;return s.currentReviewId&&s.reviewHistory.find(a=>a.id===s.currentReviewId)||null},getReviewById:s=>r.current.reviewHistory.find(a=>a.id===s)||null,getParentReview:()=>{let s=r.current,a=s.reviewHistory.find(u=>u.id===s.currentReviewId);return a?.parentReviewId&&s.reviewHistory.find(u=>u.id===a.parentReviewId)||null},hasAppliedFixes:()=>{let s=r.current,a=s.reviewHistory.find(u=>u.id===s.currentReviewId);return!a||!Array.isArray(a.issues)||a.issues.length===0?!1:a.issues.some(u=>u.status==="applied"||u.generatedFix?.status==="applied")},toggleIssueSelection:s=>n({type:"TOGGLE_ISSUE_SELECTION",payload:s}),updateIssueStatus:(s,a,u)=>n({type:"UPDATE_ISSUE_STATUS",payload:{issueId:s,status:a,error:u}}),updateIssueGeneratedFix:(s,a)=>n({type:"UPDATE_ISSUE_GENERATED_FIX",payload:{issueId:s,generatedFix:a}}),batchUpdateIssueGeneratedFixes:s=>n({type:"BATCH_UPDATE_ISSUE_GENERATED_FIXES",payload:s}),dismissIssue:(s,a,u)=>n({type:"DISMISS_ISSUE",payload:{issueId:s,reason:a,dismissedBy:u}}),undismissIssue:s=>n({type:"UNDISMISS_ISSUE",payload:s}),recalculateScore:()=>n({type:"RECALCULATE_SCORE"}),updateReviewScore:(s,a)=>n({type:"UPDATE_REVIEW_SCORE",payload:{reviewId:s,newScore:a}}),clearAllReviews:()=>n({type:"CLEAR_ALL_REVIEWS"}),clearStaleReviewsForStory:s=>n({type:"CLEAR_STALE_REVIEWS",payload:s}),setIsApplying:s=>n({type:"SET_STATE",payload:{isApplying:s}}),setApplyFixesResult:s=>n({type:"SET_STATE",payload:{applyFixesResult:s}}),setIncludeComponentIssues:s=>n({type:"SET_STATE",payload:{includeComponentIssues:s}}),setIncludeTextComparison:s=>n({type:"SET_STATE",payload:{includeTextComparison:s}}),setUsePromptCache:s=>n({type:"SET_STATE",payload:{usePromptCache:s}}),setIsValidating:s=>n({type:"SET_STATE",payload:{isValidating:s}}),setReviewHistoryLoading:s=>n({type:"SET_STATE",payload:{reviewHistoryLoading:s}}),setValidationUsage:s=>n({type:"SET_STATE",payload:{validationUsage:s}}),setWorkspacePath:s=>n({type:"SET_STATE",payload:{workspacePath:s}}),triggerScreenshotRefresh:()=>n({type:"TRIGGER_SCREENSHOT_REFRESH"}),setHoveredIssueId:s=>n({type:"SET_STATE",payload:{hoveredIssueId:s}}),setNewReviewMode:s=>n({type:"SET_STATE",payload:{isNewReviewMode:s}}),setPendingSettingsOpen:s=>n({type:"SET_STATE",payload:{pendingSettingsOpen:s}}),setFeatureFlags:s=>n({type:"SET_STATE",payload:{featureFlags:s}}),setUserRole:s=>n({type:"SET_STATE",payload:{userRole:s}}),setRoleOverride:s=>{try{s?localStorage.setItem("uicopilot_role_override",s):localStorage.removeItem("uicopilot_role_override")}catch{}n({type:"SET_STATE",payload:{roleOverride:s}})},setReviewAllConcurrency:s=>{let a=Math.max(1,Math.min(5,s));try{localStorage.setItem("uicopilot_review_all_concurrency",String(a))}catch{}n({type:"SET_STATE",payload:{reviewAllConcurrency:a}})},setIsGenerating:s=>n({type:"SET_STATE",payload:{isGenerating:s}}),setGeneratedPrompt:s=>n({type:"SET_STATE",payload:{generatedPrompt:s}}),setPromptError:s=>n({type:"SET_STATE",payload:{promptError:s}}),resetPrompt:()=>n({type:"RESET_PROMPT"})}),[]),i=Yw(()=>({...t,...o}),[t,o]);return iR.createElement(Xw.Provider,{value:i},e)}function ue(){let e=aR(Xw);if(!e)throw new Error("useReviewStore must be used within a ReviewProvider");return e}var Kw,pR,gR,fR,Qf,mR,hR,xR,Xw,Zf=U(()=>{"use strict";cn();Xf();Oe();Kw=20,pR=5;gR=()=>{if(typeof localStorage>"u")return 3;try{let e=localStorage.getItem("uicopilot_review_all_concurrency");if(e)return Math.max(1,Math.min(5,parseInt(e,10)))}catch{}return 3},fR=()=>{if(typeof localStorage>"u")return null;try{let e=localStorage.getItem("uicopilot_role_override");if(e==="admin"||e==="beta")return e}catch{}return null},Qf={enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1},mR=()=>{if(typeof localStorage>"u")return Qf;try{let e=localStorage.getItem("uicopilot_feature_flags");if(!e)return Qf;let t=JSON.parse(e);return{enableFixGeneration:!!t.enableFixGeneration,enableFixApply:!!t.enableFixApply,enableAutoMap:!!t.enableAutoMap,enableReviewBadges:!!t.enableReviewBadges,showCosts:!!t.showCosts,enableParallelReview:!!t.enableParallelReview,enableModelSelection:!!t.enableModelSelection}}catch{}return Qf},hR=()=>{if(typeof localStorage>"u")return"beta";try{let e=localStorage.getItem("uicopilot_user_role");if(e==="admin"||e==="beta")return e}catch{}return"beta"},xR={isReviewing:!1,reviewingStoryId:null,reviewError:null,reviewResults:null,multiModelResults:null,showReviewMenu:!1,severityFilter:"all",showStreamingPanel:!1,streamingPanelCollapsed:!1,streamingMessages:[],streamingProgress:0,streamingStatus:"",reviewDetailTab:"chat",fullPrompt:"",fullResponse:"",figmaImageUrl:null,storybookImageUrl:null,figmaDimensions:null,selectedModels:["claude-sonnet-4-5-20250929"],modelComparisonView:"side-by-side",reviewHistory:Jl(Kf()),currentReviewId:null,includeComponentIssues:!0,includeTextComparison:!1,usePromptCache:!1,isApplying:!1,applyFixesResult:null,screenshotRefreshKey:0,isValidating:!1,reviewHistoryLoading:!1,validationUsage:null,lastAiCallTimestamp:null,aiRateLimitSeconds:0,isGenerating:!1,generatedPrompt:null,promptError:null,workspacePath:null,userRole:hR(),roleOverride:fR(),featureFlags:mR(),reviewAllConcurrency:gR(),hoveredIssueId:null,isNewReviewMode:!1,pendingSettingsOpen:!1},Xw=sR(null)});import Ys,{useMemo as yR}from"react";function tm({children:e}){return Ys.createElement(Mu,null,Ys.createElement(Du,null,Ys.createElement(zu,null,Ys.createElement(Jf,null,Ys.createElement(bR,null),e))))}function Qw(e){let t=ve(),n=Xe(),r=Ze(),o=ue(),i=yR(()=>({...t,...n,...r,...o}),[t,n,r,o]);return e?e(i):i}function bR(){return em=Qw(),null}var em,bt,Jw=U(()=>{"use strict";Bu();Ru();Nu();Zf();em=null,bt=Object.assign(Qw,{getState:()=>{if(!em)throw new Error("Store not initialized. Make sure StoreProvider is mounted.");return em}})});var Ce=U(()=>{"use strict";Jw();Bu();Ru();Nu();Zf()});function K(){return(process.env.STORYBOOK_UICOPILOT_URL||SR).replace(/\/$/,"")}var SR,Zw,_e=U(()=>{"use strict";SR="https://app.uiparity.com";Zw=3.6});async function se(e,t,n=3e4){let r=new AbortController,o=setTimeout(()=>r.abort(),n);try{return await fetch(e,{...t,signal:r.signal})}catch(i){throw i instanceof DOMException&&i.name==="AbortError"?new Error(`Request timed out after ${n}ms: ${e}`):i}finally{clearTimeout(o)}}var ct=U(()=>{"use strict"});import{useEffect as Mo,useState as nc,useRef as mv,useCallback as im}from"react";import{addons as sm}from"storybook/manager-api";async function vz(e,t,n){let r=`${e}:${t}`,o=am.get(r);if(o)return y.debug("[useReviewScreenshots] Reusing in-flight Figma image fetch for",r),o;let i=(async()=>{let s=await se(`${Sv}/api/figma/image?projectId=${e}&nodeId=${t}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`}});return s.ok?s.json():{imageUrl:null}})().finally(()=>{am.delete(r)});return am.set(r,i),i}function kz(e,t,n){try{sessionStorage.setItem(`${rc}${e}`,JSON.stringify({figmaNodeId:t,imageUrl:n,timestamp:Date.now()}))}catch{}}function Cz(e,t){try{let n=sessionStorage.getItem(`${rc}${e}`);if(!n)return null;let r=JSON.parse(n);if(r.figmaNodeId===t&&Date.now()-r.timestamp<1800*1e3)return r.imageUrl;sessionStorage.removeItem(`${rc}${e}`)}catch{}return null}function Tz(e){try{let t=sessionStorage.getItem(`${rc}${e}`);if(!t)return null;let n=JSON.parse(t);if(n.imageUrl&&Date.now()-n.timestamp<300*1e3)return n.imageUrl}catch{}return null}var hv,xv,yv,bv,$i,Sv,In,lm,am,rc,wv,vv,ii,Ui=U(()=>{"use strict";Ce();cm();Oe();_e();ct();hv="storyArgsUpdated",xv="storyRendered",yv="forceRemount",bv=null,$i=()=>bv,Sv=K(),In=new Map,lm=null,am=new Map;rc="uicopilot-figma-image-";wv=(e,t,n)=>{let r=In.get(e);r?(r.storybookImageUrl=t,n&&(r.figmaImageUrl=n)):In.set(e,{storybookImageUrl:t,figmaImageUrl:n??null}),y.debug("[useReviewScreenshots] Populated historical screenshots for story:",e)},vv=(e,t,n)=>{lm=t;let r=In.get(e);r?r.figmaImageUrl=n:In.set(e,{storybookImageUrl:null,figmaImageUrl:n}),y.debug("[useReviewScreenshots] Pre-set Figma image for mapping:",{storyId:e,figmaNodeId:t,imageUrl:n.substring(0,50)+"..."})},ii=()=>{let[e,t]=nc(!1),[n,r]=nc(!1),[o,i]=nc(!1),[s,a]=nc(null),u=mv(null),{screenshotRefreshKey:c,triggerScreenshotRefresh:l}=ue(),d=im(()=>{let B=bt.getState().currentStoryId;B&&(y.debug("[useReviewScreenshots] Refreshing screenshots for story:",B),In.delete(B),u.current=null,i(!0),l())},[l]),g=im(()=>{let B=bt.getState().currentStoryId;if(B){y.debug("[useReviewScreenshots] Refreshing Storybook screenshot only for story:",B);let z=In.get(B);z&&(z.storybookImageUrl=null),u.current=null,i(!0),l()}},[l]),{sessionToken:p}=ve(),{selectedProjectId:h}=Xe(),{currentStoryId:S,currentMapping:T,loadingMapping:I}=Ze(),{setStorybookImageUrl:v,setFigmaImageUrl:D}=ue(),N=mv(null);Mo(()=>{S&&N.current&&N.current!==S&&(y.debug("[useReviewScreenshots] Story switched, clearing images"),v(""),D("")),N.current=S},[S,v,D]),Mo(()=>{!S||I||T||D("")},[S,T,I,D]),Mo(()=>{if(!S)return;let B=Tz(S);B&&(y.debug("[useReviewScreenshots] Quick-restored Figma image for:",S),D(B))},[S,D]),Mo(()=>{if(!S||I)return;let B=T?.figmaFileUrl;if(B){y.debug("[useReviewScreenshots] Restoring Figma image from mapping.figmaFileUrl for:",S),D(B);let z=In.get(S);z?z.figmaImageUrl=B:In.set(S,{storybookImageUrl:null,figmaImageUrl:B})}},[S,T,I,D]),Mo(()=>{let B=!1;return(async()=>{if(!p||!h||!S){y.debug("[useReviewScreenshots] Missing required context, skipping auto-load");return}u.current&&u.current!==S&&(y.debug("[useReviewScreenshots] Story changed, clearing stale screenshots"),v(""),D(""));let m=bt.getState();if(u.current===S&&m.storybookImageUrl&&m.figmaImageUrl){y.debug("[useReviewScreenshots] Screenshots already loaded for this story, skipping capture");return}let b=T?.figmaNodeId??null;if(b!==lm){y.debug("[useReviewScreenshots] Figma mapping changed, invalidating Figma image only for story:",S);let P=In.get(S);P&&(P.figmaImageUrl=null),lm=b,u.current=null}let k=T?.figmaNodeId;if(k&&!In.get(S)?.figmaImageUrl){let P=Cz(S,k);if(P){y.debug("[useReviewScreenshots] Hydrated Figma image from sessionStorage for story:",S),D(P);let L=In.get(S);L?L.figmaImageUrl=P:In.set(S,{storybookImageUrl:null,figmaImageUrl:P})}}let A=In.get(S),f=A&&A.storybookImageUrl&&A.figmaImageUrl,C=A&&A.storybookImageUrl&&!A.figmaImageUrl,E=A&&!A.storybookImageUrl&&A.figmaImageUrl;if(f){y.debug("[useReviewScreenshots] Using fully cached screenshots for story:",S),v(A.storybookImageUrl),D(A.figmaImageUrl),u.current=S;return}let x=C&&T?.figmaNodeId;x&&(y.debug("[useReviewScreenshots] Using cached Storybook, fetching new Figma for story:",S),v(A.storybookImageUrl));let F=E;if(F&&(y.debug("[useReviewScreenshots] Using cached Figma, recapturing Storybook for story:",S),D(A.figmaImageUrl)),u.current===S&&T?.figmaNodeId){y.debug("[useReviewScreenshots] Screenshots already loaded for this story, skipping");return}try{if(a(null),x?r(!0):(F||(t(!0),r(!0)),i(!0)),u.current=S,B)return;let P=F?A.figmaImageUrl:null,L;if(F)y.debug("[useReviewScreenshots] Figma cached (storybookOnlyRefresh), skipping fetch"),r(!1);else if(k){y.debug("[useReviewScreenshots] Found Figma node ID from mapping:",k);let w=null;try{y.debug("[useReviewScreenshots] Fetching Figma image (with caching)...");let R=await vz(h,k,p);w=R.imageUrl||null;let W=R.cached?"(cached)":"(fresh)";y.debug(`[useReviewScreenshots] Figma image fetched ${W}:`,w?"success":"not found")}catch(R){y.warn("[useReviewScreenshots] Failed to fetch Figma image:",R)}if(w)try{y.debug("[useReviewScreenshots] Fetching Figma image via proxy...");let R=`${Sv}/api/proxy/image?url=${encodeURIComponent(w)}`,W=await se(R);if(W.ok){let M=await W.blob(),oe=new FileReader,X=await new Promise((xe,Ee)=>{oe.onloadend=()=>xe(oe.result),oe.onerror=Ee,oe.readAsDataURL(M)});P=X,D(X),y.debug("[useReviewScreenshots] Figma image loaded via proxy");let ne=new Image;await new Promise(xe=>{ne.onload=()=>{L={width:ne.naturalWidth,height:ne.naturalHeight},y.debug("[useReviewScreenshots] Figma dimensions:",L),xe()},ne.onerror=()=>xe(),ne.src=X})}else P=w,D(w),y.warn("[useReviewScreenshots] Proxy failed, using direct URL as fallback")}catch(R){y.warn("[useReviewScreenshots] Proxy error, using direct URL as fallback:",R),P=w,D(w)}else y.warn("[useReviewScreenshots] No thumbnail found for node:",k),D(null);P&&k&&kz(S,k,P),r(!1)}else y.debug("[useReviewScreenshots] No Figma mapping exists for this component"),D(null),r(!1);let O=A?.storybookImageUrl||null;if(O)y.debug("[useReviewScreenshots] Using cached Storybook screenshot"),i(!1);else{y.debug("[useReviewScreenshots] Capturing Storybook screenshot for story:",S);let w=await oc({storyId:S,sessionToken:p||void 0,...L&&{figmaWidth:L.width,figmaHeight:L.height}});w&&!B?(O=w,v(w),y.debug("[useReviewScreenshots] Storybook screenshot captured at dimensions:",L||"natural")):y.warn("[useReviewScreenshots] Failed to capture Storybook screenshot"),i(!1)}In.set(S,{storybookImageUrl:O,figmaImageUrl:P}),y.debug("[useReviewScreenshots] Screenshots cached for story:",S)}catch(P){y.error("[useReviewScreenshots] Error loading screenshots:",P),a(P instanceof Error?P.message:"Failed to load screenshots"),u.current=null,r(!1),i(!1)}finally{t(!1)}})(),()=>{B=!0}},[p,h,S,T?.figmaNodeId,c]),Mo(()=>{let B=sm.getChannel(),z=null,m=b=>{bv=b.args,y.debug("[useReviewScreenshots] Args updated for story:",b.storyId,"args:",b.args),z&&clearTimeout(z),z=setTimeout(()=>{y.debug("[useReviewScreenshots] Story args changed, refreshing screenshot"),d()},500)};return B.on(hv,m),()=>{B.off(hv,m),z&&clearTimeout(z)}},[d]),Mo(()=>{let B=sm.getChannel(),z=!1,m=null,b=()=>{y.debug("[useReviewScreenshots] FORCE_REMOUNT detected, showing Storybook loader"),z=!0,i(!0)},k=()=>{z&&(y.debug("[useReviewScreenshots] STORY_RENDERED after remount, waiting for styles to settle..."),m&&clearTimeout(m),m=setTimeout(()=>{z=!1,y.debug("[useReviewScreenshots] Refreshing Storybook screenshot after HMR (preserving Figma)"),g()},500))};return B.on(yv,b),B.on(xv,k),()=>{B.off(yv,b),B.off(xv,k),m&&clearTimeout(m)}},[g]),Mo(()=>{let B=sm.getChannel(),z=async m=>{if(!m?.snapshot?.html){y.debug("[useReviewScreenshots] DOM mutated but no snapshot available");return}y.debug("[useReviewScreenshots] DOM mutated, capturing snapshot screenshot"),i(!0);try{let b=bt.getState().currentStoryId,k=await fetch("/__uicopilot/screenshot-snapshot",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...m.snapshot,storyId:b})});if(k.ok){let A=await k.json();if(A.screenshot){v(A.screenshot);let f=bt.getState().currentStoryId;if(f){let C=In.get(f);C?C.storybookImageUrl=A.screenshot:In.set(f,{storybookImageUrl:A.screenshot,figmaImageUrl:null})}}}else y.error("[useReviewScreenshots] Snapshot screenshot failed:",await k.text())}catch(b){y.error("[useReviewScreenshots] Snapshot screenshot error:",b)}finally{i(!1)}};return B.on("UICOPILOT/STORY_DOM_MUTATED",z),()=>{B.off("UICOPILOT/STORY_DOM_MUTATED",z)}},[]);let j=im((B,z,m)=>{y.debug("[useReviewScreenshots] setFigmaImageDirect called - bypassing load"),vv(B,z,m),D(m),r(!1),u.current=B},[D]);return{isLoadingScreenshots:e,isLoadingFigma:n,isLoadingStorybook:o,screenshotError:s,refreshScreenshots:d,refreshStorybookOnly:g,setFigmaImageDirect:j}}});function Fz(){return!K().startsWith("http://localhost")}function Ez(e,t,n){let r=t.createElement("div");r.style.color=e,t.body.appendChild(r);let o=n.getComputedStyle(r).color;return r.remove(),o}function kv(e,t,n){let r=new Map;return e.replace(/(?:color|oklch|oklab|lab|lch)\([^)]+\)/g,o=>{if(r.has(o))return r.get(o);let i=Ez(o,t,n);return r.set(o,i),i})}async function Az(){let e=(await import("html2canvas")).default,t=document.getElementById("storybook-preview-iframe");if(!t?.contentDocument||!t.contentWindow)throw new Error("Storybook iframe not accessible");let n=t.contentDocument.querySelector("#storybook-root > *")||t.contentDocument.querySelector("#root > *");if(!n)throw new Error("Story element not found in iframe");let r=t.contentWindow,o=t.contentDocument;return(await e(n,{useCORS:!0,logging:!1,backgroundColor:null,onclone:s=>{s.querySelectorAll("style").forEach(u=>{let c=u.textContent||"";/(?:color|oklch|oklab|lab|lch)\(/.test(c)&&(u.textContent=kv(c,o,r))});let a=Array.from(o.styleSheets);s.querySelectorAll('link[rel="stylesheet"]').forEach(u=>{let c=u.href,l=a.find(d=>d.href===c);if(l)try{let d="";for(let g of Array.from(l.cssRules))d+=g.cssText+`
|
|
13
13
|
`;if(/(?:color|oklch|oklab|lab|lch)\(/.test(d)){let g=s.createElement("style");g.textContent=kv(d,o,r),u.replaceWith(g)}}catch{}})}})).toDataURL("image/png")}function Pz(e){let t=[];for(let[n,r]of Object.entries(e)){if(r===void 0)continue;let o;typeof r=="boolean"?o=`!${r}`:typeof r=="number"?o=String(r):typeof r=="string"?o=encodeURIComponent(r).replace(/%20/g,"+"):o=encodeURIComponent(JSON.stringify(r)),t.push(`${n}:${o}`)}return t.join(";")}async function Lz(e,t){y.debug("[Screenshot] Using server-side Chrome capture for:",e);let n={"Content-Type":"application/json"};t?.sessionToken&&(n.Authorization=`Bearer ${t.sessionToken}`);let r=await se(`${Iz}/api/screenshot`,{method:"POST",headers:n,body:JSON.stringify({url:e,selector:t?.selector,width:t?.width,height:t?.height,scale:t?.scale||1,figmaWidth:t?.figmaWidth,figmaHeight:t?.figmaHeight})});if(!r.ok){let i=await r.json().catch(()=>({error:"Unknown error"}));throw new Error(i.error||`Screenshot failed: ${r.status}`)}return(await r.json()).screenshot}function Mz(e){let t={};if(!e)return t;let n=e.split(";");for(let r of n){let o=r.indexOf(":");if(o===-1)continue;let i=r.slice(0,o),s=r.slice(o+1);typeof s=="string"&&(s==="!true"?s=!0:s==="!false"?s=!1:!isNaN(Number(s))&&s!==""?s=Number(s):s=decodeURIComponent(s.replace(/\+/g," "))),t[i]=s}return t}function Bz(e){let t=new URLSearchParams(window.location.search),n=e;if(n||(n=(t.get("path")||"").replace("/story/","").replace("/docs/",""),y.debug("[Screenshot] Warning: Using story ID from URL (fallback):",n)),!n)throw new Error("Could not determine current story ID. Please select a story first.");let r=window.location.origin,o=Date.now(),i=`${r}/iframe.html?viewMode=story&id=${n}&globals=&_cb=${o}`,s=$i();if(!s||Object.keys(s).length===0){let a=t.get("args");a&&(s=Mz(a),y.debug("[Screenshot] Parsed args from URL:",s))}if(s&&Object.keys(s).length>0){let a=Pz(s);i+=`&args=${a}`,y.debug("[Screenshot] Using URL with current args:",i)}else y.debug("[Screenshot] No current args, using default URL:",i);return i}async function Dz(e){try{let t=await fetch(`/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`);if(t.status===501)return y.info("[Screenshot] Local Puppeteer not available, falling back"),null;if(!t.ok){let r=await t.json().catch(()=>({error:"Unknown"}));throw new Error(r.error||`Screenshot failed: ${t.status}`)}let n=await t.json();return y.info("[Screenshot] Captured via local Puppeteer (pixel-perfect)"),n.screenshot}catch(t){if(t instanceof TypeError&&t.message.includes("fetch"))return null;throw t}}async function oc(e){let t=e?.storyId||Rz();if(t){let n=um.get(t);if(n)return y.debug("[Screenshot] Reusing in-flight capture for",t),n;let r=Cv(t,e).finally(()=>{um.delete(t)});return um.set(t,r),r}return Cv(void 0,e)}async function Cv(e,t){try{if(e){let n=await Dz(e);if(n)return n}if(!Fz()){let n=Bz(t?.storyId);return await Lz(n,{...t,selector:"#storybook-root > *"})}return y.info("[Screenshot] Using client-side capture (html2canvas fallback)"),await Az()}catch(n){throw y.error("Error capturing screenshot:",n),new Error(`Failed to capture screenshot: ${n instanceof Error?n.message:"Unknown error"}`)}}function Rz(){return(new URLSearchParams(window.location.search).get("path")||"").replace("/story/","").replace("/docs/","")||void 0}var Iz,um,cm=U(()=>{"use strict";_e();Ui();Oe();ct();Iz=K();um=new Map});function Dn(e){if(e==="transparent"||e==="rgba(0, 0, 0, 0)")return"transparent";let t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/);if(!t)return e;let[,n,r,o,i]=t,s=i?parseFloat(i):1;return s<1?`rgba(${n}, ${r}, ${o}, ${s})`:`#${[n,r,o].map(u=>parseInt(u).toString(16).padStart(2,"0")).join("")}`}function Vn(e,t){let r={backgroundColor:["transparent","rgba(0, 0, 0, 0)"],border:["none","0px none","0px none rgb(0, 0, 0)"],borderRadius:["0px"],boxShadow:["none"],opacity:["1"],gap:["normal","0px"],flexDirection:["row"],justifyContent:["normal","flex-start"],alignItems:["normal","stretch"],textAlign:["start","left"],letterSpacing:["normal","0px"],margin:["0px","0px 0px 0px 0px"],padding:["0px","0px 0px 0px 0px"]}[e];return r?r.includes(t):!1}function ta(e){return e.split(",").map(n=>n.trim().replace(/['"]/g,""))[0]||e}function Tv(e){let t=e.ownerDocument,r=(t.defaultView||window).getComputedStyle(e);if("fonts"in t){let T=r.fontSize||"16px",I=r.fontWeight||"400";if(r.fontFamily.includes("Roboto")){let v=t.fonts.check(`${I} ${T} Roboto`);if(y.debug("[computedStyles] Roboto check:",{cssFamily:r.fontFamily,robotoLoaded:v,fontWeight:I,fontSize:T,isIframe:t!==document,fontStatus:Array.from(t.fonts).map(D=>({family:D.family,status:D.status}))}),v)return"Roboto"}}let o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",s=t.createElement("canvas").getContext("2d");if(!s)return"unknown";let a=r.fontSize,u=r.fontWeight,c=r.fontStyle,l=r.fontFamily.split(",").map(T=>T.trim().replace(/['"]/g,"")),d=["Arial","Helvetica","Helvetica Neue","Times New Roman","Georgia","Courier New","Verdana","Tahoma","Trebuchet MS","sans-serif","serif","monospace"],g=[...new Set([...l,...d])];s.font=`${c} ${u} ${a} monospace`;let p=s.measureText(o).width,h="unknown",S=new Map;for(let T of g){s.font=`${c} ${u} ${a} "${T}", monospace`;let I=s.measureText(o).width;if(S.set(T,I),I!==p){s.font=`${c} ${u} ${a} "${T}"`;let v=s.measureText(o).width;s.font=`${c} ${u} ${a} ${r.fontFamily}`;let D=s.measureText(o).width;if(Math.abs(v-D)<.1){h=T;break}}}return y.debug("[computedStyles] Font detection:",{declared:r.fontFamily,detected:h,declaredFonts:l,fontWidths:Array.from(S.entries()),isIframe:t!==document}),h}var na=U(()=>{"use strict";Oe()});function ji(e,t){if(!t)return e;let n=t.split(" ").filter(i=>i.trim()),r=n.find(i=>!i.includes("--")),o=n.filter(i=>i.includes("--"));return r&&o.length>0?`${e}.${r}.${o[0]}`:r?`${e}.${r}`:n[0]?`${e}.${n[0]}`:e}function pm(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e);return y.debug("[computedStyles] Extracting styles:",{fontFamily:n.fontFamily,fontWeight:n.fontWeight,borderRadius:n.borderRadius,backgroundColor:n.backgroundColor,padding:{top:n.paddingTop,right:n.paddingRight,bottom:n.paddingBottom,left:n.paddingLeft},isIframeContext:e.ownerDocument!==document}),{color:Dn(n.color),backgroundColor:Dn(n.backgroundColor),borderColor:Dn(n.borderColor),padding:{top:n.paddingTop,right:n.paddingRight,bottom:n.paddingBottom,left:n.paddingLeft},margin:{top:n.marginTop,right:n.marginRight,bottom:n.marginBottom,left:n.marginLeft},gap:n.gap,fontFamily:n.fontFamily,renderedFont:Tv(e),fontSize:n.fontSize,fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,textAlign:n.textAlign,textTransform:n.textTransform,width:n.width,height:n.height,minWidth:n.minWidth,minHeight:n.minHeight,maxWidth:n.maxWidth,maxHeight:n.maxHeight,borderWidth:n.borderWidth,borderStyle:n.borderStyle,borderRadius:n.borderRadius,boxShadow:n.boxShadow,textShadow:n.textShadow,display:n.display,flexDirection:n.display==="flex"?n.flexDirection:void 0,justifyContent:n.display==="flex"?n.justifyContent:void 0,alignItems:n.display==="flex"?n.alignItems:void 0,position:n.position,opacity:n.opacity,cursor:n.cursor}}function dm(e,t){let n={width:null,height:null,minWidth:null,minHeight:null,maxWidth:null,maxHeight:null,display:null,flexGrow:null,flexShrink:null,flexBasis:null};try{let r=Array.from(t.styleSheets);for(let i of r)try{let s=i.cssRules||i.rules;if(!s)continue;for(let a of Array.from(s))if(a.type===1){let u=a;try{if(e.matches(u.selectorText)){let c=u.style;c.width&&(n.width=c.width),c.height&&(n.height=c.height),c.minWidth&&(n.minWidth=c.minWidth),c.minHeight&&(n.minHeight=c.minHeight),c.maxWidth&&(n.maxWidth=c.maxWidth),c.maxHeight&&(n.maxHeight=c.maxHeight),c.display&&(n.display=c.display),c.flexGrow&&(n.flexGrow=c.flexGrow),c.flexShrink&&(n.flexShrink=c.flexShrink),c.flexBasis&&(n.flexBasis=c.flexBasis)}}catch{continue}}}catch{continue}let o=e.style;o.width&&(n.width=o.width),o.height&&(n.height=o.height),o.minWidth&&(n.minWidth=o.minWidth),o.minHeight&&(n.minHeight=o.minHeight),o.maxWidth&&(n.maxWidth=o.maxWidth),o.maxHeight&&(n.maxHeight=o.maxHeight),o.display&&(n.display=o.display),o.flexGrow&&(n.flexGrow=o.flexGrow),o.flexShrink&&(n.flexShrink=o.flexShrink),o.flexBasis&&(n.flexBasis=o.flexBasis)}catch(r){y.error("Error extracting declared styles:",r)}return n}var ic=U(()=>{"use strict";Oe();na()});function zz(e){let t=[],n=new Set,r=Iv.join(", "),o=e.querySelectorAll(r);for(let i of Array.from(o)){let s=`${i.tagName.toLowerCase()}.${i.className}`;n.has(s)||(n.add(s),t.push(i))}if(Iv.includes(e.tagName.toLowerCase())){let i=`${e.tagName.toLowerCase()}.${e.className}`;n.has(i)||t.unshift(e)}return t}function Nz(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e),r=e.tagName.toLowerCase(),o=e.className,i=typeof o=="string"?o:o?.baseVal||"";return{selector:ji(r,i),tagName:r,className:i,styles:{fontSize:n.fontSize,fontFamily:ta(n.fontFamily),fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,color:Dn(n.color),textAlign:n.textAlign,textTransform:n.textTransform}}}function Oz(e,t=2){let n=[e],r=new Set,o=s=>{let a=s.className;return typeof a=="string"?a:a?.baseVal||""};r.add(`${e.tagName}.${o(e)}`);function i(s,a){if(a>=t)return;let u=Array.from(s.children);for(let c of u){let l=c.tagName.toLowerCase();if(["script","style","link","meta","br","hr"].includes(l))continue;let d=`${c.tagName}.${o(c)}`;r.has(d)||(r.add(d),n.push(c),i(c,a+1))}}return i(e,0),n}function _z(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e),r=e.tagName.toLowerCase(),o=e.className,i=typeof o=="string"?o:o?.baseVal||"",s=n.borderWidth!=="0px",a=n.backgroundColor!=="transparent"&&n.backgroundColor!=="rgba(0, 0, 0, 0)",u=n.borderRadius!=="0px",c=n.gap!=="normal"&&n.gap!=="0px";if(!s&&!a&&!u&&!c)return null;let l=n.borderWidth,d=n.borderStyle,g=Dn(n.borderColor),p=s?`${l} ${d} ${g}`:"none";return{selector:ji(r,i),className:i,border:p,borderRadius:n.borderRadius,backgroundColor:Dn(n.backgroundColor),gap:n.gap}}function ra(){y.debug("[computedStyles] extractStoryStyles called - FULL CONTEXT VERSION");try{let e=document.getElementById("storybook-preview-iframe");if(!e||!e.contentDocument)throw new Error("Storybook preview iframe not found");let t=e.contentDocument,n=t.getElementById("storybook-root");if(!n)throw new Error("Story root element not found");let r=n.firstElementChild;if(!r)throw new Error("Component element not found in story root");let o=Oz(r,2),i=o.map(_z).filter(a=>a!==null);y.debug("[computedStyles] Extracted visual styles from nested elements:",{total:o.length,withVisuals:i.length,elements:i.map(a=>({selector:a.selector,border:a.border,background:a.backgroundColor,borderRadius:a.borderRadius}))});let s=[];try{let a=zz(r);s=a.map(Nz),y.debug("[computedStyles] Text elements found:",{count:a.length,elements:s.map(u=>({selector:u.selector,fontSize:u.styles.fontSize,fontWeight:u.styles.fontWeight}))})}catch(a){y.error("[computedStyles] Error extracting text elements:",a)}return{computed:pm(r),declared:dm(r,t),markup:r.outerHTML,textElementStyles:s,nestedElementStyles:i}}catch(e){return y.error("Error extracting computed styles:",e),null}}var Iv,Fv=U(()=>{"use strict";Oe();na();ic();Iv=["input","textarea","button","select","label","span","a","p","h1","h2","h3","h4","h5","h6"]});function gm(e,t,n,r){return e===t&&t===n&&n===r?e:e===n&&t===r?`${e} ${t}`:t===r?`${e} ${t} ${n}`:`${e} ${t} ${n} ${r}`}function Uz(e,t,n){if(!(e==="0px"||t==="none"))return`${e} ${t} ${n}`}function jz(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e),r={},o=Dn(n.backgroundColor);Vn("backgroundColor",o)||(r.backgroundColor=o);let i=Uz(n.borderWidth,n.borderStyle,Dn(n.borderColor));i&&(r.border=i),Vn("borderRadius",n.borderRadius)||(r.borderRadius=n.borderRadius),Vn("boxShadow",n.boxShadow)||(r.boxShadow=n.boxShadow),Vn("opacity",n.opacity)||(r.opacity=n.opacity);let s=e.tagName.toLowerCase(),a=["svg","circle","rect","ellipse","line","polyline","polygon","path","text","tspan","g","use","defs","clipPath","mask"];if(e instanceof SVGElement||a.includes(s)){for(let T=0;T<e.attributes.length;T++){let I=e.attributes[T];if(["class","style","id","xmlns","xmlns:xlink"].includes(I.name))continue;let v=I.name.replace(/-([a-z])/g,(N,j)=>j.toUpperCase()),D=I.value.startsWith("rgb")?Dn(I.value):I.value;v==="d"&&D.length>100?r[v]=D.substring(0,100)+"...":r[v]=D}let p=n.getPropertyValue("fill"),h=n.getPropertyValue("stroke");if(p&&p!=="none"&&(r.fill=p.startsWith("rgb")?Dn(p):p),h&&h!=="none"&&(r.stroke=h.startsWith("rgb")?Dn(h):h),["circle","ellipse","rect","path","line","polyline","polygon"].includes(s)){let T=e.getBoundingClientRect();T.width>0&&(r.width=`${Math.round(T.width*100)/100}px`),T.height>0&&(r.height=`${Math.round(T.height*100)/100}px`)}}let c=e.textContent&&e.textContent.trim().length>0,l=$z.includes(e.tagName.toLowerCase());(c||l)&&(r.fontSize=n.fontSize,r.fontFamily=ta(n.fontFamily),r.fontWeight=n.fontWeight,r.lineHeight=n.lineHeight,r.color=Dn(n.color),Vn("letterSpacing",n.letterSpacing)||(r.letterSpacing=n.letterSpacing),Vn("textAlign",n.textAlign)||(r.textAlign=n.textAlign)),r.display=n.display;let d=gm(n.paddingTop,n.paddingRight,n.paddingBottom,n.paddingLeft);Vn("padding",d)||(r.padding=d);let g=gm(n.marginTop,n.marginRight,n.marginBottom,n.marginLeft);return Vn("margin",g)||(r.margin=g),Vn("gap",n.gap)||(r.gap=n.gap),(n.display==="flex"||n.display==="inline-flex")&&(Vn("flexDirection",n.flexDirection)||(r.flexDirection=n.flexDirection),Vn("justifyContent",n.justifyContent)||(r.justifyContent=n.justifyContent),Vn("alignItems",n.alignItems)||(r.alignItems=n.alignItems)),r.width||(r.width=n.width),r.height||(r.height=n.height),r}function Ev(e){let t=1;for(let n of e.children)t+=Ev(n);return t}function Av(e,t=4){function n(o,i){let s=o.tagName.toLowerCase(),a=o.className,u=typeof a=="string"?a:a?.baseVal||"",c=o.id||void 0,l=o.getAttribute("role")||void 0,d;for(let S of Array.from(o.childNodes))if(S.nodeType===Node.TEXT_NODE){let T=S.textContent?.trim();if(T){d=T.length>50?T.substring(0,50)+"...":T;break}}let g=s;c?g=`${s}#${c}`:u&&(g=ji(s,u));let p=jz(o),h=[];if(i<t){let S=Array.from(o.children);for(let T of S){let I=T.tagName.toLowerCase();if(["script","style","link","meta","br","hr","noscript"].includes(I))continue;let D=(T.ownerDocument.defaultView||window).getComputedStyle(T);D.display==="none"||D.visibility==="hidden"||h.push(n(T,i+1))}}return{selector:g,tagName:s,className:u,id:c,role:l,textContent:d,styles:p,children:h}}y.debug("[computedStyles] Extracting DOM tree with maxDepth:",t);let r=n(e,0);return y.debug("[computedStyles] DOM tree extracted:",{rootSelector:r.selector,childrenCount:r.children.length,totalNodes:Ev(r)}),r}function fm(e=4){y.debug("[extractStoryDOMTree] Starting DOM tree extraction...");try{let t=document.getElementById("storybook-preview-iframe");if(y.debug("[extractStoryDOMTree] iframe found:",!!t),!t)throw new Error("Storybook preview iframe not found");if(y.debug("[extractStoryDOMTree] iframe.contentDocument:",!!t.contentDocument),!t.contentDocument)throw new Error("iframe.contentDocument is not accessible (possible cross-origin issue)");let n=t.contentDocument.getElementById("storybook-root");if(y.debug("[extractStoryDOMTree] storyRoot found:",!!n),!n)throw new Error("Story root element not found");let r=n.firstElementChild;if(y.debug("[extractStoryDOMTree] componentElement found:",!!r,r?.tagName),!r)throw new Error("Component element not found in story root");let o=Av(r,e);return y.debug("[extractStoryDOMTree] DOM tree extracted successfully:",{selector:o.selector,childrenCount:o.children.length}),o}catch(t){return y.error("[extractStoryDOMTree] Error extracting DOM tree:",t),null}}var $z,Pv=U(()=>{"use strict";Oe();na();ic();$z=["input","textarea","button","select","label","span","a","p","h1","h2","h3","h4","h5","h6"]});var mm=U(()=>{"use strict";na();ic();Fv();Pv()});var nk=cr((kJ,tk)=>{"use strict";tk.exports={compareTwoStrings:ek,findBestMatch:gN};function ek(e,t){if(e=e.replace(/\s+/g,""),t=t.replace(/\s+/g,""),e===t)return 1;if(e.length<2||t.length<2)return 0;let n=new Map;for(let o=0;o<e.length-1;o++){let i=e.substring(o,o+2),s=n.has(i)?n.get(i)+1:1;n.set(i,s)}let r=0;for(let o=0;o<t.length-1;o++){let i=t.substring(o,o+2),s=n.has(i)?n.get(i):0;s>0&&(n.set(i,s-1),r++)}return 2*r/(e.length+t.length-2)}function gN(e,t){if(!fN(e,t))throw new Error("Bad arguments: First argument should be a string, second should be an array of strings");let n=[],r=0;for(let i=0;i<t.length;i++){let s=t[i],a=ek(e,s);n.push({target:s,rating:a}),a>n[r].rating&&(r=i)}let o=n[r];return{ratings:n,bestMatch:o,bestMatchIndex:r}}function fN(e,t){return!(typeof e!="string"||!Array.isArray(t)||!t.length||t.find(function(n){return typeof n!="string"}))}});var eT=cr((Jae,Z1)=>{"use strict";var K1=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,P3=/\n/g,L3=/^\s*/,M3=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,B3=/^:\s*/,D3=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,R3=/^[;\s]*/,z3=/^\s+|\s+$/g,N3=`
|
|
14
|
-
`,X1="/",Q1="*",di="",O3="comment",_3="declaration";function $3(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function o(h){var S=h.match(P3);S&&(n+=S.length);var T=h.lastIndexOf(N3);r=~T?h.length-T:r+h.length}function i(){var h={line:n,column:r};return function(S){return S.position=new s(h),c(),S}}function s(h){this.start=h,this.end={line:n,column:r},this.source=t.source}s.prototype.content=e;function a(h){var S=new Error(t.source+":"+n+":"+r+": "+h);if(S.reason=h,S.filename=t.source,S.line=n,S.column=r,S.source=e,!t.silent)throw S}function u(h){var S=h.exec(e);if(S){var T=S[0];return o(T),e=e.slice(T.length),S}}function c(){u(L3)}function l(h){var S;for(h=h||[];S=d();)S!==!1&&h.push(S);return h}function d(){var h=i();if(!(X1!=e.charAt(0)||Q1!=e.charAt(1))){for(var S=2;di!=e.charAt(S)&&(Q1!=e.charAt(S)||X1!=e.charAt(S+1));)++S;if(S+=2,di===e.charAt(S-1))return a("End of comment missing");var T=e.slice(2,S-2);return r+=2,o(T),e=e.slice(S),r+=2,h({type:O3,comment:T})}}function g(){var h=i(),S=u(M3);if(S){if(d(),!u(B3))return a("property missing ':'");var T=u(D3),I=h({type:_3,property:J1(S[0].replace(K1,di)),value:T?J1(T[0].replace(K1,di)):di});return u(R3),I}}function p(){var h=[];l(h);for(var S;S=g();)S!==!1&&(h.push(S),l(h));return h}return c(),p()}function J1(e){return e?e.replace(z3,di):di}Z1.exports=$3});var tT=cr(Ta=>{"use strict";var U3=Ta&&Ta.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ta,"__esModule",{value:!0});Ta.default=H3;var j3=U3(eT());function H3(e,t){let n=null;if(!e||typeof e!="string")return n;let r=(0,j3.default)(e),o=typeof t=="function";return r.forEach(i=>{if(i.type!=="declaration")return;let{property:s,value:a}=i;o?t(s,a,i):a&&(n=n||{},n[s]=a)}),n}});var rT=cr($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.camelCase=void 0;var W3=/^--[a-zA-Z0-9_-]+$/,V3=/-([a-z])/g,G3=/^[^-]+$/,q3=/^-(webkit|moz|ms|o|khtml)-/,Y3=/^-(ms)-/,K3=function(e){return!e||G3.test(e)||W3.test(e)},X3=function(e,t){return t.toUpperCase()},nT=function(e,t){return"".concat(t,"-")},Q3=function(e,t){return t===void 0&&(t={}),K3(e)?e:(e=e.toLowerCase(),t.reactCompat?e=e.replace(Y3,nT):e=e.replace(q3,nT),e.replace(V3,X3))};$c.camelCase=Q3});var iT=cr((Kh,oT)=>{"use strict";var J3=Kh&&Kh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},Z3=J3(tT()),e6=rT();function Yh(e,t){var n={};return!e||typeof e!="string"||(0,Z3.default)(e,function(r,o){r&&o&&(n[(0,e6.camelCase)(r,t)]=o)}),n}Yh.default=Yh;oT.exports=Yh});var MI=cr((Fge,LI)=>{"use strict";var cu=Object.prototype.hasOwnProperty,PI=Object.prototype.toString,CI=Object.defineProperty,TI=Object.getOwnPropertyDescriptor,II=function(t){return typeof Array.isArray=="function"?Array.isArray(t):PI.call(t)==="[object Array]"},FI=function(t){if(!t||PI.call(t)!=="[object Object]")return!1;var n=cu.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&cu.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var o;for(o in t);return typeof o>"u"||cu.call(t,o)},EI=function(t,n){CI&&n.name==="__proto__"?CI(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},AI=function(t,n){if(n==="__proto__")if(cu.call(t,n)){if(TI)return TI(t,n).value}else return;return t[n]};LI.exports=function e(){var t,n,r,o,i,s,a=arguments[0],u=1,c=arguments.length,l=!1;for(typeof a=="boolean"&&(l=a,a=arguments[1]||{},u=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});u<c;++u)if(t=arguments[u],t!=null)for(n in t)r=AI(a,n),o=AI(t,n),a!==o&&(l&&o&&(FI(o)||(i=II(o)))?(i?(i=!1,s=r&&II(r)?r:[]):s=r&&FI(r)?r:{},EI(a,{name:n,newValue:e(l,s,o)})):typeof o<"u"&&EI(a,{name:n,newValue:o}));return a}});import Ja from"react";import{addons as Cu,types as ky,experimental_getStatusStore as Cy}from"storybook/manager-api";import{AddonPanel as L9}from"storybook/internal/components";import Ot,{useState as QV,useEffect as tE}from"react";import{styled as vr}from"storybook/theming";import By from"react";import{styled as zt}from"storybook/theming";var le="#ea580c",Eu="#c2410c",nl="#ff6b35";var Fy=zt.div(({theme:e})=>({fontFamily:e.typography.fonts.base,height:"100%",display:"flex",flexDirection:"column",backgroundColor:e.background.content,color:e.color.defaultText})),Ey=zt.div({flex:1,overflow:"auto",padding:"6px 20px 20px"}),vo=zt.div({marginBottom:"20px"}),ko=zt.label(({theme:e})=>({display:"block",marginBottom:`${e.layoutMargin*.6}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),ys=zt.input(({theme:e})=>({width:"100%",padding:`${e.layoutMargin*.8}px ${e.layoutMargin}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:e.input.background,color:e.color.defaultText,"&:focus":{outline:"none",borderColor:e.color.secondary,boxShadow:`0 0 0 2px ${e.color.secondary}20`}})),vn=zt.select(({theme:e})=>({width:"100%",padding:`${e.layoutMargin*.8}px 32px ${e.layoutMargin*.8}px ${e.layoutMargin}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:e.input.background,color:e.color.defaultText,cursor:"pointer",appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 10px center",backgroundSize:"12px",transition:"border-color 0.15s, box-shadow 0.15s","&:focus":{outline:"none",borderColor:e.color.secondary,boxShadow:`0 0 0 2px ${e.color.secondary}20`},"&:hover":{borderColor:e.color.mediumdark},"&:disabled":{opacity:.6,cursor:"not-allowed"}})),Ay=zt(vn)(({theme:e})=>({width:"auto",padding:`${e.layoutMargin*.6}px 28px ${e.layoutMargin*.6}px ${e.layoutMargin}px`,fontSize:e.typography.size.s1})),rl=e=>({padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,border:"none",borderRadius:e.appBorderRadius,cursor:"pointer",transition:"all 0.15s","&:disabled":{opacity:.5,cursor:"not-allowed"}}),Mn=zt.button(({theme:e})=>({...rl(e),backgroundColor:e.color.secondary,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9}})),sn=zt.button(({theme:e})=>({...rl(e),backgroundColor:le,color:e.color.inverseText,boxShadow:`0 2px 4px ${le}4d`,"&:hover:not(:disabled)":{backgroundColor:Eu,transform:"translateY(-1px)",boxShadow:`0 4px 8px ${le}66`}})),$r=zt.button(({theme:e})=>({...rl(e),backgroundColor:"transparent",border:`1px solid ${e.appBorderColor}`,color:e.color.defaultText,"&:hover:not(:disabled)":{backgroundColor:e.background.hoverable}})),Py=zt.button(({theme:e})=>({...rl(e),backgroundColor:e.color.negative,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9}})),Bn=zt.button(({theme:e})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",padding:`${e.layoutMargin*.4}px`,fontSize:e.typography.size.s2,color:e.color.mediumdark,backgroundColor:"transparent",border:"none",borderRadius:e.appBorderRadius,cursor:"pointer",transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),Au=zt.button(({theme:e})=>({padding:0,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.base,color:e.color.secondary,backgroundColor:"transparent",border:"none",cursor:"pointer",textDecoration:"none","&:hover":{textDecoration:"underline"},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),Co=zt.button(({theme:e,active:t})=>({padding:`${e.layoutMargin*.6}px ${e.layoutMargin*1.2}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:t?e.typography.weight.bold:400,color:t?e.color.secondary:e.color.mediumdark,backgroundColor:"transparent",border:"none",borderBottom:t?`2px solid ${e.color.secondary}`:"2px solid transparent",cursor:"pointer",transition:"all 0.15s","&:hover":{color:t?e.color.secondary:e.color.defaultText}})),To=zt(ys)(({theme:e})=>({paddingLeft:`${e.layoutMargin*3}px`,backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:`${e.layoutMargin}px center`,backgroundSize:"14px"})),_9=zt.div(({theme:e})=>({padding:`${e.layoutMargin*1.6}px`,borderRadius:e.appBorderRadius,border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content})),Ly=zt.h2(({theme:e})=>({margin:`0 0 ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s3,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),$9=zt.h3(({theme:e})=>({margin:`0 0 ${e.layoutMargin*1.2}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),bs=zt.p(({theme:e})=>({margin:`0 0 ${e.layoutMargin*.8}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,color:e.color.defaultText,lineHeight:1.5})),U9=zt.div(({theme:e,width:t="100%",height:n="40px"})=>({width:t,height:n,backgroundColor:e.background.hoverable,borderRadius:e.appBorderRadius,position:"relative",overflow:"hidden","&::after":{content:'""',position:"absolute",top:0,left:0,width:"100%",height:"100%",background:`linear-gradient(90deg, transparent, ${e.color.mediumlight}33, transparent)`,animation:"shimmer 1.5s infinite"},"@keyframes shimmer":{"0%":{transform:"translateX(-100%)"},"100%":{transform:"translateX(100%)"}}})),My=zt.span(({theme:e,variant:t="default"})=>{let n={default:{bg:e.background.hoverable,color:e.color.defaultText},success:{bg:`${e.color.positive}40`,color:e.color.positive},warning:{bg:`${e.color.warning}40`,color:e.color.warning},error:{bg:`${e.color.negative}40`,color:e.color.negative}};return{display:"inline-block",padding:"2px 8px",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,borderRadius:"3px",backgroundColor:n[t].bg,color:n[t].color}}),j9=zt.div(({theme:e})=>({padding:"40px 20px",textAlign:"center",color:e.color.mediumdark})),H9=zt.div(({theme:e})=>({fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,marginBottom:`${e.layoutMargin*.8}px`,color:e.color.defaultText})),W9=zt.div(({theme:e})=>({fontSize:e.typography.size.s2,color:e.color.mediumdark}));var Pu=({header:e,children:t,footer:n})=>By.createElement(Fy,null,e,By.createElement(Ey,null,t),n);import AE from"react";import{styled as PE}from"storybook/theming";var LE=PE.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"6px 12px",borderBottom:`1px solid ${e.appBorderColor}`,position:"sticky",top:0,zIndex:100,backgroundColor:e.background.content})),Lu=({toolbar:e})=>AE.createElement(LE,null,e);import eG from"react";import{styled as ol}from"storybook/theming";var rG=ol.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 12px",borderBottom:`1px solid ${e.appBorderColor}`,position:"sticky",top:0,zIndex:100,backgroundColor:e.background.content})),oG=ol.div({display:"flex",flex:1}),iG=ol(Co)(({theme:e,disabled:t})=>({padding:"6px 12px",...t?{color:e.color.mediumlight,cursor:"not-allowed",opacity:.5,"&:hover":{}}:{}})),sG=ol.div({display:"flex",gap:"8px",alignItems:"center"});import tn,{useState as rm,useCallback as pv,useEffect as dv}from"react";import{styled as co}from"storybook/theming";import ke,{useEffect as ev}from"react";import{styled as st}from"storybook/theming";Ce();_e();Oe();ct();var tv=st.div({position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:1e4}),nv=st.div(({theme:e})=>({position:"absolute",top:"100%",right:0,marginTop:"8px",backgroundColor:e.background.content,borderRadius:"12px",width:"360px",maxWidth:"90vw",boxShadow:"0 10px 40px rgba(0, 0, 0, 0.3)",overflow:"hidden",zIndex:10001})),wR=st.div({display:"flex",alignItems:"center",gap:"12px",padding:"16px 16px 12px"}),vR=st.div({width:"36px",height:"36px",borderRadius:"50%",backgroundColor:le,display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:"14px",fontWeight:700,flexShrink:0}),kR=st.div({display:"flex",flexDirection:"column",gap:"4px"}),CR=st.div(({theme:e})=>({fontSize:"15px",fontWeight:600,color:e.color.defaultText,lineHeight:1.2})),TR=st.span({display:"inline-block",alignSelf:"flex-start",padding:"2px 10px",borderRadius:"6px",fontSize:"11px",fontWeight:600,color:"#7c3aed",backgroundColor:"rgba(124, 58, 237, 0.1)",letterSpacing:"0.3px"}),IR=st.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 16px 8px",fontSize:"14px",color:e.color.defaultText})),FR=st.span(({theme:e})=>({color:e.textMutedColor,fontSize:"13px"})),ER=st.span(({theme:e})=>({color:e.color.defaultText,fontSize:"15px",fontWeight:600})),AR=st.div(({theme:e})=>({height:"8px",borderRadius:"4px",backgroundColor:e.base==="dark"?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)",margin:"0 16px 8px",overflow:"hidden"})),PR=st.div(({percent:e})=>({height:"100%",width:`${Math.min(100,Math.max(0,e))}%`,background:`linear-gradient(90deg, #f59e0b 0%, ${le} 100%)`,transition:"width 0.3s ease"})),LR=st.div(({theme:e})=>({padding:"0 16px 14px",fontSize:"12px",color:e.textMutedColor})),MR=st.div(({theme:e})=>({height:"1px",backgroundColor:e.appBorderColor})),BR=st.button({width:"100%",padding:"14px 16px",background:"transparent",border:"none",color:le,fontSize:"14px",fontWeight:500,textAlign:"left",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px","&:hover":{backgroundColor:"rgba(0, 0, 0, 0.03)"}}),rv=st.button(({theme:e})=>({position:"absolute",top:"12px",right:"12px",width:"24px",height:"24px",borderRadius:"4px",border:"none",background:"transparent",color:e.textMutedColor,cursor:"pointer",fontSize:"16px",display:"flex",alignItems:"center",justifyContent:"center","&:hover":{backgroundColor:e.background.hoverable}})),DR=st.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px",borderBottom:`1px solid ${e.appBorderColor}`})),RR=st.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"10px",color:e.color.defaultText,fontSize:"14px",fontWeight:500})),zR=st.div(({theme:e})=>({width:"32px",height:"32px",borderRadius:"50%",backgroundColor:le,display:"flex",alignItems:"center",justifyContent:"center",color:e.color.inverseText,fontSize:"14px",fontWeight:600})),NR=st.div({display:"flex",gap:"8px"}),ov=st(Bn)({fontSize:"18px"}),OR=st.div({padding:"20px 16px"}),_R=st.div(({theme:e})=>({padding:"16px",borderRadius:"8px",background:"linear-gradient(135deg, #10B981 0%, #3B82F6 100%)",marginBottom:"16px",color:"#fff"})),$R=st.div({fontSize:"12px",fontWeight:500,opacity:.9,marginBottom:"4px"}),UR=st.div({fontSize:"28px",fontWeight:700}),jR=st.div({fontSize:"11px",opacity:.8,marginTop:"4px"}),HR=st.div(({theme:e})=>({padding:"16px",borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px"})),WR=st.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),VR=st.div({display:"flex",alignItems:"center",gap:"8px"}),GR=st.span(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),qR=st.span(({theme:e})=>({fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:le,color:e.color.inverseText})),YR=st.button(({theme:e})=>({background:"none",border:"none",color:le,fontSize:"12px",cursor:"pointer","&:hover":{textDecoration:"underline"}})),KR=st.div(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),XR=st.button(({theme:e,variant:t="primary"})=>({width:"100%",padding:"12px",borderRadius:"6px",fontSize:"14px",fontWeight:600,cursor:"pointer",border:"none",marginBottom:"12px",backgroundColor:t==="primary"?le:e.background.hoverable,color:t==="primary"?e.color.inverseText:e.color.defaultText,"&:hover":{opacity:.9}})),QR=30*1e3,iv=({onClose:e})=>{let{sessionToken:t,resetAuth:n,usageData:r,usageLastFetched:o,setUsageData:i}=ve(),{featureFlags:s}=ue(),a=s.showCosts,u=r,c=!r&&t,l=async(h=!1)=>{if(!t)return;let S=o&&Date.now()-o<QR;if(!(!h&&S&&r))try{let T=K(),I=await se(`${T}/api/addon/account`,{headers:{Authorization:`Bearer ${t}`}});if(I.ok){let v=await I.json();i(v)}}catch(T){y.error("Failed to fetch usage:",T)}};ev(()=>{l()},[t]),ev(()=>{let h=()=>{document.visibilityState==="visible"&&(y.debug("[TokenUsageModal] Tab visible, refreshing balance..."),l(!0))};return document.addEventListener("visibilitychange",h),()=>document.removeEventListener("visibilitychange",h)},[t]);let d=async()=>{if(t){let h=K();try{await fetch(`${h}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${t}`}})}catch{}}n(),e()},g=()=>{let h=K();window.open(`${h}/pricing`,"_blank")},p=()=>{let h=K();window.open(`${h}/pricing#add-credits`,"_blank")};if(t&&!a&&!c){let h=Math.floor(u?.creditBalance??0),T=Math.max(h,10),I=Math.max(0,T-h),v=T>0?h/T*100:0;return ke.createElement(ke.Fragment,null,ke.createElement(tv,{onClick:e}),ke.createElement(nv,{onClick:D=>D.stopPropagation(),style:{width:"320px"}},ke.createElement(wR,null,ke.createElement(vR,null,u?.email?u.email[0].toUpperCase():"U"),ke.createElement(kR,null,ke.createElement(CR,null,"UI Review"),ke.createElement(TR,null,(u?.plan||"BETA").toUpperCase())),ke.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:"2px"}},ke.createElement(rv,{onClick:d,title:"Sign out",style:{position:"static"}},ke.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),ke.createElement("polyline",{points:"16 17 21 12 16 7"}),ke.createElement("line",{x1:"21",y1:"12",x2:"9",y2:"12"}))),ke.createElement(rv,{onClick:e,title:"Close",style:{position:"static"}},"\xD7"))),ke.createElement(IR,null,ke.createElement(FR,null,"Credits"),ke.createElement(ER,null,h," left")),ke.createElement(AR,null,ke.createElement(PR,{percent:v})),ke.createElement(LR,null,I," used \xB7 ",h," remaining"),ke.createElement(MR,null),ke.createElement(BR,{onClick:()=>window.open("mailto:hello@uiparity.com?subject=Credits request","_blank")},"Contact us for credits \u2192")))}return ke.createElement(ke.Fragment,null,ke.createElement(tv,{onClick:e}),ke.createElement(nv,{onClick:h=>h.stopPropagation()},ke.createElement(DR,null,ke.createElement(RR,null,ke.createElement(zR,null,u?.email?u.email[0].toUpperCase():"U"),ke.createElement("span",null,u?.email||"Loading...")),ke.createElement(NR,null,ke.createElement(ov,{onClick:d,title:"Sign out"},ke.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),ke.createElement("polyline",{points:"16 17 21 12 16 7"}),ke.createElement("line",{x1:"21",y1:"12",x2:"9",y2:"12"}))),ke.createElement(ov,{onClick:e,title:"Close"},"\xD7"))),ke.createElement(OR,null,c?ke.createElement("div",{style:{textAlign:"center",padding:"20px"}},"Loading..."):t?ke.createElement(ke.Fragment,null,ke.createElement(_R,null,ke.createElement($R,null,"Credit Balance"),ke.createElement(UR,null,"$",(u?.creditBalance??0).toFixed(2)),ke.createElement(jR,null,(u?.creditBalance??0)<2?"Low balance - consider topping up":"Pay only for what you use")),ke.createElement(HR,null,ke.createElement(WR,null,ke.createElement(VR,null,ke.createElement(GR,null,"Current Plan"),ke.createElement(qR,null,u?.plan||"Free")),ke.createElement(YR,{onClick:g},"View detail >")),ke.createElement(KR,null,"~$0.02-0.05 per review depending on complexity"),ke.createElement(XR,{onClick:p,style:{marginTop:"16px"}},"Add Credits"))):ke.createElement("div",{style:{textAlign:"center",padding:"20px"}},"Please sign in to view usage"))))};Ce();import Oi from"react";import{styled as sv}from"storybook/theming";_e();Ce();ct();Oe();var JR=sv.div({display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}),ZR=sv.span(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark})),ez={admin:{enableFixGeneration:!0,enableFixApply:!0,enableAutoMap:!0,enableReviewBadges:!0,showCosts:!0,enableParallelReview:!0,enableModelSelection:!0},beta:{enableFixGeneration:!0,enableFixApply:!1,enableAutoMap:!0,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1}},av=()=>{let{userRole:e,roleOverride:t,setRoleOverride:n,setFeatureFlags:r}=ue(),{sessionToken:o}=ve();return e!=="admin"?null:Oi.createElement(JR,null,Oi.createElement(ZR,null,"View as:"),Oi.createElement(Ay,{value:t??e,onChange:a=>{let u=a.target.value;if(u===e)n(null),o&&se(`${K()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(c=>c.json()).then(c=>{let l={enableFixGeneration:!!c.enableFixGeneration,enableFixApply:!!c.enableFixApply,enableAutoMap:!!c.enableAutoMap,enableReviewBadges:!!c.enableReviewBadges,showCosts:!!c.showCosts,enableParallelReview:!!c.enableParallelReview,enableModelSelection:!!c.enableModelSelection};r(l);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(l))}catch{}}).catch(c=>y.warn("[RoleSwitcher] Failed to re-fetch flags:",c.message));else{n(u);let c=ez[u];r(c);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(c))}catch{}}},style:{width:"auto",minWidth:"100px"}},Oi.createElement("option",{value:"admin"},"Admin"),Oi.createElement("option",{value:"beta"},"Beta Tester")),t&&Oi.createElement(My,{variant:"warning"},"Previewing as ",t))};_e();Ce();ct();import vt,{useState as Ks,useCallback as nm}from"react";import{styled as Pr}from"storybook/theming";var tz="0.5.7",nz=[{value:"bug",label:"\u{1F41E} Bug \u2014 something broke"},{value:"ux",label:"\u{1F9ED} UX \u2014 confusing or slow"},{value:"feature",label:"\u2728 Feature \u2014 missing something"},{value:"praise",label:"\u{1F49A} Praise \u2014 works great"},{value:"other",label:"\u{1F4AC} Other"}],rz=Pr.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center"}),oz=Pr.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"12px",width:"460px",maxWidth:"94%",maxHeight:"90vh",overflow:"auto",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.25)"})),iz=Pr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px 12px",borderBottom:`1px solid ${e.appBorderColor}`})),sz=Pr.h3(({theme:e})=>({margin:0,fontSize:"15px",fontWeight:600,color:e.color.defaultText,display:"flex",alignItems:"center",gap:"8px"})),az=Pr.button(({theme:e})=>({background:"transparent",border:"none",fontSize:"20px",color:e.color.mediumdark,cursor:"pointer",padding:"0 6px",lineHeight:1,"&:hover":{color:e.color.defaultText}})),lz=Pr.div({padding:"16px 20px",display:"flex",flexDirection:"column",gap:"14px"}),cz=Pr.textarea(({theme:e})=>({width:"100%",minHeight:"110px",padding:"8px 10px",borderRadius:e.appBorderRadius,border:`1px solid ${e.appBorderColor}`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.defaultText,backgroundColor:e.background.app,resize:"vertical",boxSizing:"border-box","&:focus":{outline:"none",borderColor:le}})),lv=Pr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 20px 16px",borderTop:`1px solid ${e.appBorderColor}`,gap:"8px"})),cv=Pr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s1,color:e.color.mediumdark,lineHeight:1.4})),uz=Pr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s1,color:e.color.negative})),pz=Pr.div(({theme:e})=>({padding:"24px 20px",textAlign:"center",display:"flex",flexDirection:"column",gap:"10px","& h4":{margin:0,fontSize:"15px",fontWeight:600,color:e.color.positive},"& p":{margin:0,fontSize:e.typography.size.s2,color:e.color.mediumdark}}));function uv({isOpen:e,onClose:t}){let{sessionToken:n,isConnected:r}=ve(),{selectedProjectId:o}=Xe(),{currentStoryId:i}=Ze(),[s,a]=Ks("other"),[u,c]=Ks(""),[l,d]=Ks(!1),[g,p]=Ks(!1),[h,S]=Ks(null),T=nm(()=>{c(""),a("other"),p(!1),S(null),d(!1)},[]),I=nm(()=>{T(),t()},[T,t]),v=nm(async D=>{if(D.preventDefault(),!u.trim()){S("Please write a message.");return}if(!r||!n){S("Sign in to send feedback.");return}d(!0),S(null);try{let N=await se(`${K()}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({message:u.trim(),severity:s,projectId:o||void 0,storyId:i||void 0,addonVersion:tz})});if(!N.ok){let j=await N.json().catch(()=>({}));throw new Error(j.error||`Request failed (${N.status})`)}p(!0)}catch(N){S(N instanceof Error?N.message:"Something went wrong")}finally{d(!1)}},[u,s,n,r,o,i]);return e?vt.createElement(rz,{onClick:I},vt.createElement(oz,{onClick:D=>D.stopPropagation()},vt.createElement(iz,null,vt.createElement(sz,null,vt.createElement("span",null,"\u{1F4AC}"),"Send feedback"),vt.createElement(az,{onClick:I,"aria-label":"Close"},"\xD7")),g?vt.createElement(vt.Fragment,null,vt.createElement(pz,null,vt.createElement("h4",null,"Thanks \u2014 got it."),vt.createElement("p",null,"We read every message. If it's a bug, we'll likely follow up by email.")),vt.createElement(lv,null,vt.createElement("span",null),vt.createElement(Mn,{onClick:I},"Close"))):vt.createElement("form",{onSubmit:v},vt.createElement(lz,null,vt.createElement(vo,null,vt.createElement(ko,{htmlFor:"feedback-severity"},"Type"),vt.createElement(vn,{id:"feedback-severity",value:s,onChange:D=>a(D.target.value),disabled:l},nz.map(D=>vt.createElement("option",{key:D.value,value:D.value},D.label)))),vt.createElement(vo,null,vt.createElement(ko,{htmlFor:"feedback-message"},"What happened?"),vt.createElement(cz,{id:"feedback-message",value:u,onChange:D=>c(D.target.value),placeholder:"Tell us what you were doing, what you expected, and what happened.",disabled:l,autoFocus:!0,maxLength:5e3})),vt.createElement(cv,null,"We auto-attach your current story and project so we can reproduce it. No screenshots sent."),h&&vt.createElement(uz,null,h)),vt.createElement(lv,null,vt.createElement(cv,null,i?`Context: ${i}`:"No story selected"),vt.createElement("div",{style:{display:"flex",gap:"8px"}},vt.createElement(Mn,{type:"button",onClick:I,disabled:l},"Cancel"),vt.createElement(sn,{type:"submit",disabled:l||!u.trim()},l?"Sending\u2026":"Send")))))):null}Ce();_e();ct();var dz=co.div({display:"flex",alignItems:"center"}),_i=co.div(({theme:e})=>({display:"flex",alignItems:"center",paddingLeft:"8px",borderLeft:`1px solid ${e.appBorderColor}`,"&:first-of-type":{paddingLeft:0,borderLeft:"none"}})),gz=co.span(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.secondary,fontWeight:e.typography.weight.bold,paddingRight:"8px",opacity:.8})),fz=co.div({position:"relative"}),mz=co.button(({theme:e})=>({width:"26px",height:"26px",padding:0,background:`linear-gradient(135deg, ${e.color.secondary} 0%, ${e.color.secondary}cc 100%)`,border:"none",borderRadius:"50%",color:e.color.inverseText,cursor:"pointer",fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s","&:hover":{transform:"scale(1.05)",boxShadow:`0 2px 8px ${e.color.secondary}66`}})),gv=co.button(({isLow:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"4px 10px",background:e?"#FEF3C7":"linear-gradient(135deg, #10B981 0%, #3B82F6 100%)",border:"none",borderRadius:"12px",color:e?"#92400E":"#fff",cursor:"pointer",fontSize:"12px",fontWeight:600,transition:"all 0.2s",minWidth:"60px",justifyContent:"center","&:hover":{transform:"scale(1.02)",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})),hz=co.span({display:"inline-block",width:"12px",height:"12px",border:"2px solid rgba(255,255,255,0.3)",borderTopColor:"#fff",borderRadius:"50%",animation:"credit-spin 0.8s linear infinite","@keyframes credit-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}}),xz=co.button(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",gap:"4px",padding:"4px 10px",height:"28px",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:"transparent",color:e.color.mediumdark,fontSize:"12px",fontWeight:500,cursor:"pointer",transition:"all 0.15s","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText,borderColor:e.color.mediumdark}})),yz=co.button({position:"fixed",bottom:"20px",right:"20px",width:"48px",height:"48px",borderRadius:"50%",backgroundColor:le,color:"white",border:"none",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"22px",cursor:"pointer",boxShadow:`0 4px 14px ${le}66, 0 2px 4px rgba(0,0,0,0.1)`,transition:"all 0.2s ease",zIndex:9999,"&:hover":{transform:"scale(1.08)",boxShadow:`0 6px 20px ${le}88, 0 3px 6px rgba(0,0,0,0.15)`},"&:active":{transform:"scale(0.96)"}}),bz=30*1e3,om=({onOpenSettings:e})=>{let[t,n]=rm(!1),[r,o]=rm(!1),[i,s]=rm(!1),{usageData:a,usageLastFetched:u,setUsageData:c,sessionToken:l}=ve(),{userRole:d,roleOverride:g,featureFlags:p}=ue(),h=g??d;dv(()=>{(async()=>{if(!(!l||u&&Date.now()-u<bz&&a)){s(!0);try{let j=K(),B=await se(`${j}/api/addon/account`,{headers:{Authorization:`Bearer ${l}`}});if(B.ok){let z=await B.json();c(z)}}catch(j){console.error("Failed to fetch balance:",j)}finally{s(!1)}}})()},[l,u,a,c]),dv(()=>{let D=()=>{document.visibilityState==="visible"&&t&&n(!1)},N=()=>{t&&n(!1)};return document.addEventListener("visibilitychange",D),window.addEventListener("focus",N),()=>{document.removeEventListener("visibilitychange",D),window.removeEventListener("focus",N)}},[t]);let S=pv(()=>{n(!0)},[]),T=pv(()=>{n(!1)},[]),I=a?.creditBalance??0,v=I<2&&!i;return tn.createElement(dz,null,e&&tn.createElement(_i,null,tn.createElement(xz,{onClick:e,title:"Settings"},tn.createElement("span",{style:{fontSize:"14px"}},"\u2699"),"Settings")),l&&d==="admin"&&h==="admin"&&tn.createElement(_i,null,tn.createElement(av,null)),tn.createElement(_i,null,tn.createElement(gz,null,"v","0.5.47")),l&&p.showCosts&&tn.createElement(_i,null,tn.createElement(gv,{onClick:S,isLow:v,title:i?"Loading...":a?v?"Low balance - click to top up":"Credit balance - click for details":"Click to load balance"},i?tn.createElement(hz,null):a?`$${I.toFixed(2)}`:"...")),l&&!p.showCosts&&a&&tn.createElement(_i,null,tn.createElement(gv,{onClick:S,isLow:Math.floor(I)<=3,title:`${Math.floor(I)} review credits \u2014 click for details`},"\u26A1 ",Math.floor(I))),tn.createElement(_i,null,tn.createElement(fz,null,tn.createElement(mz,{title:"Account & Usage",onClick:S},a?.email?a.email[0].toUpperCase():"?"),t&&tn.createElement(iv,{onClose:T}))),l&&tn.createElement(yz,{onClick:()=>o(!0),title:"Send feedback","aria-label":"Send feedback"},"\u{1F4AC}"),tn.createElement(uv,{isOpen:r,onClose:()=>o(!1)}))};import Rt,{useEffect as T5,useRef as I5}from"react";import{styled as yr}from"storybook/theming";import et from"react";Ce();Oe();_e();ct();cn();import{useState as Sz,useCallback as Lo,useRef as wz,useEffect as fv}from"react";var Lr=K();y.debug("[useAuth] Module loaded, APP_URL:",Lr);var Zl=null,ec=null,Xs=null;function Qs(){Zl&&(clearInterval(Zl),Zl=null),ec&&(clearTimeout(ec),ec=null)}var Js=()=>{let e=wz(null),{sessionToken:t,apiKey:n,authMethod:r,deviceCode:o,userCode:i,verificationUri:s,isConnected:a,authError:u,setSessionToken:c,setApiKey:l,setAuthMethod:d,setDeviceCode:g,setUserCode:p,setVerificationUri:h,setPollingInterval:S,setAuthError:T,resetAuth:I}=ve(),[v,D]=Sz(!1),N=Lo(()=>{Qs(),Xs=null},[]),j=Lo(f=>{Xs=f,Qs();let C=async()=>{let E=Xs;if(!E){Qs();return}try{let F=await(await fetch(`${Lr}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:E})})).json();F.status==="authorized"&&F.session_token?(y.debug("[useAuth] \u2705 OAuth poll successful! Got token."),Qs(),Xs=null,localStorage.setItem("uicopilot_session_token",F.session_token),c(F.session_token),D(!1)):F.status==="expired"&&(y.debug("[useAuth] OAuth poll_code expired"),Qs(),Xs=null,D(!1))}catch(x){y.error("[useAuth] OAuth poll error:",x)}};Zl=setInterval(C,2e3),ec=setTimeout(C,1e3)},[c]);fv(()=>{function f(C){if(!C.origin.startsWith(Lr))return;let E=C.data;if(!E||typeof E!="object")return;let x=E;if(x.type==="UICOPILOT_AUTH_ERROR"){y.debug("[useAuth] Popup reported auth error:",x.step,x.detail),N(),D(!1);let F=typeof x.step=="string"?x.step:"auth",P=typeof x.detail=="string"?x.detail:"Unknown error";T(`${At.NAME} auth failed (${F}): ${P}`)}else x.type==="UICOPILOT_AUTH_POLL_CODE"&&typeof x.pollCode=="string"&&x.pollCode&&(y.debug("[useAuth] Popup handed us a fresh poll_code, switching"),T(null),j(x.pollCode))}return window.addEventListener("message",f),()=>window.removeEventListener("message",f)},[j,N,T]);let B=Lo(async()=>{try{y.debug("[useAuth] Starting OAuth flow, requesting poll_code...");let f;try{f=await se(`${Lr}/api/addon/auth/oauth-poll`,{method:"POST"})}catch(F){let M=F instanceof Error&&F.message.includes("timed out")?`Cannot reach ${At.NAME} server at ${Lr}. Is the dashboard running?`:`Connection failed: ${Lr} is not responding.`;T(M),y.error("[useAuth]",M);return}if(!f.ok){let F=`Cannot reach ${At.NAME} server. Is the dashboard running?`;T(F),y.error("[useAuth]",F);return}let{poll_code:C}=await f.json();y.debug("[useAuth] Got poll_code:",C.substring(0,15)+"...");let E=localStorage.getItem("uicopilot_force_sign_in")==="true";E&&localStorage.removeItem("uicopilot_force_sign_in");let x=`${Lr}/addon/auth?poll_code=${C}${E?"&force_sign_in=true":""}`;D(!0),window.open(x,"uiparity-auth","width=520,height=620,left=300,top=150"),y.debug("[useAuth] Starting OAuth poll for token..."),j(C)}catch(f){y.error("[useAuth] OAuth flow error:",f),T(`Connection failed. Is the dashboard running at ${Lr}?`),D(!1)}},[T,j]),z=Lo(async()=>{try{let f=await fetch(`${Lr}/api/addon/auth/device`,{method:"POST"});if(!f.ok)throw new Error("Failed to start device code flow");let C=await f.json();g(C.device_code),p(C.user_code),h(C.verification_uri),window.open(C.verification_uri,"_blank"),m(C.device_code,C.interval*1e3)}catch(f){throw y.error("[useAuth] Device code flow error:",f),f}},[g,p,h]),m=Lo((f,C)=>{y.debug("[useAuth] Starting polling. Device code:",f,"Interval:",C),e.current&&clearInterval(e.current);let E=async()=>{try{let F=await(await fetch(`${Lr}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:f})})).json();F.status==="authorized"?(y.debug("[useAuth] Device code authorization successful!"),e.current&&(clearInterval(e.current),e.current=null),g(null),p(null),h(null),localStorage.setItem("uicopilot_session_token",F.session_token),c(F.session_token),D(!1)):(F.status==="expired"||F.status==="denied")&&(y.debug("[useAuth] Device code expired or denied"),e.current&&(clearInterval(e.current),e.current=null),g(null),p(null),h(null))}catch(x){y.error("[useAuth] Polling error:",x)}};e.current=setInterval(E,C),S(C)},[g,p,h,c,S]),b=Lo(()=>{e.current&&(clearInterval(e.current),e.current=null),g(null),p(null),h(null),S(null)},[g,p,h,S]),k=Lo(f=>{l(f),c(f),localStorage.setItem("uicopilot_api_key",f)},[l,c]),A=Lo(async()=>{if(t)try{await se(`${Lr}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${t}`}})}catch{}I(),D(!1),e.current&&(clearInterval(e.current),e.current=null),N()},[t,I,N]);return fv(()=>()=>{e.current&&clearInterval(e.current)},[]),{sessionToken:t,apiKey:n,authMethod:r,deviceCode:o,userCode:i,verificationUri:s,isConnected:a,authError:u,oauthPending:v,setAuthMethod:d,startOAuth:B,startDeviceCode:z,cancelDeviceCode:b,saveApiKey:k,logout:A}};Ce();Oe();_e();ct();import{useCallback as tc}from"react";var Zs=K(),uo=()=>{let{projects:e,selectedProjectId:t,loadingProjects:n,setProjects:r,setSelectedProjectId:o,setLoadingProjects:i,getSelectedProject:s}=Xe(),{sessionToken:a}=ve(),u=tc(async()=>{if(!a){y.debug("[useProjects] No session token, skipping fetch");return}try{i(!0),y.debug("[useProjects] Fetching from:",`${Zs}/api/projects`);let g=await se(`${Zs}/api/projects`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`}});if(g.ok){let p=await g.json();y.debug("[useProjects] Projects:",p.projects),r(p.projects||[])}else y.error("[useProjects] Failed to fetch projects:",g.status,g.statusText)}catch(g){y.error("[useProjects] Error fetching projects:",g)}finally{i(!1)}},[a,r,i]),c=tc(async g=>{if(!a)throw new Error("Not authenticated");let p=await se(`${Zs}/api/projects`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify(g)});if(!p.ok)throw new Error("Failed to create project");let h=await p.json();return await u(),h.project},[a,u]),l=tc(async(g,p)=>{if(!a)throw new Error("Not authenticated");let h={};if(p.name!==void 0&&(h.name=p.name),p.description!==void 0&&(h.description=p.description),p.figmaFileUrl!==void 0&&(h.figmaFileId=p.figmaFileUrl===""?null:p.figmaFileUrl),!(await se(`${Zs}/api/projects/${g}`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify(h)})).ok)throw new Error("Failed to update project");await u()},[a,u]),d=tc(async g=>{if(!a)throw new Error("Not authenticated");if(!(await se(`${Zs}/api/projects/${g}`,{method:"DELETE",headers:{Authorization:`Bearer ${a}`}})).ok)throw new Error("Failed to delete project");await u(),t===g&&o(null)},[a,t,u,o]);return{projects:e,selectedProjectId:t,selectedProject:s(),loadingProjects:n,setSelectedProjectId:o,fetchProjects:u,createProject:c,updateProject:l,deleteProject:d}};Ce();var ea=()=>{let{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:s,setFigmaFileUrl:a,setCurrentMapping:u,setMappingSource:c,setLoadingMapping:l,setShowFigmaQuality:d}=Ze();return{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:s,setFigmaFileUrl:a,setCurrentMapping:u,setMappingSource:c,setLoadingMapping:l,setShowFigmaQuality:d,openComponentBrowser:()=>s(!0),closeComponentBrowser:()=>s(!1)}};Ce();cm();mm();import{useCallback as la,useRef as gc}from"react";Oe();function sc(){return new Promise(e=>{let t=document.getElementById("storybook-preview-iframe");if(!t||!t.contentWindow){y.warn("[iframeReload] No preview iframe found"),e();return}let n=t.contentWindow.location.href,r=new URL(n);r.searchParams.set("_cb",Date.now().toString());let o=r.toString();y.debug("[iframeReload] Triggering cache-busted reload:",o);let i=setTimeout(()=>{y.warn("[iframeReload] Iframe reload timed out after 5s"),t.removeEventListener("load",s),e()},5e3),s=()=>{clearTimeout(i),t.removeEventListener("load",s),y.debug("[iframeReload] Iframe loaded, waiting for HMR and styles to settle..."),setTimeout(()=>{y.debug("[iframeReload] Iframe reloaded and styles should be fresh"),e()},2e3)};t.addEventListener("load",s),t.contentWindow.location.href=o})}function ac(e){return e&&e!=="admin"?{"X-UIC-Role-Preview":e}:{}}var lc=BigInt(4294967295),Lv=BigInt(32);function Hz(e,t=!1){return t?{h:Number(e&lc),l:Number(e>>Lv&lc)}:{h:Number(e>>Lv&lc)|0,l:Number(e&lc)|0}}function Mv(e,t=!1){let n=e.length,r=new Uint32Array(n),o=new Uint32Array(n);for(let i=0;i<n;i++){let{h:s,l:a}=Hz(e[i],t);[r[i],o[i]]=[s,a]}return[r,o]}var Bv=(e,t,n)=>e<<n|t>>>32-n,Dv=(e,t,n)=>t<<n|e>>>32-n,Rv=(e,t,n)=>t<<n-32|e>>>64-n,zv=(e,t,n)=>e<<n-32|t>>>64-n;function Wz(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function hm(e,t=""){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw new Error(`${n}expected integer >= 0, got ${e}`)}}function cc(e,t,n=""){let r=Wz(e),o=e?.length,i=t!==void 0;if(!r||i&&o!==t){let s=n&&`"${n}" `,a=i?` of length ${t}`:"",u=r?`length=${o}`:`type=${typeof e}`;throw new Error(s+"expected Uint8Array"+a+", got "+u)}return e}function xm(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Nv(e,t){cc(e,void 0,"digestInto() output");let n=t.outputLen;if(e.length<n)throw new Error('"digestInto() output" expected to be of length >='+n)}function Ov(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function ym(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var Vz=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Gz(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function qz(e){for(let t=0;t<e.length;t++)e[t]=Gz(e[t]);return e}var bm=Vz?e=>e:qz;function _v(e,t={}){let n=(o,i)=>e(i).update(o).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=o=>e(o),Object.assign(n,t),Object.freeze(n)}var $v=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var Yz=BigInt(0),oa=BigInt(1),Kz=BigInt(2),Xz=BigInt(7),Qz=BigInt(256),Jz=BigInt(113),Hv=[],Wv=[],Vv=[];for(let e=0,t=oa,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Hv.push(2*(5*r+n)),Wv.push((e+1)*(e+2)/2%64);let o=Yz;for(let i=0;i<7;i++)t=(t<<oa^(t>>Xz)*Jz)%Qz,t&Kz&&(o^=oa<<(oa<<BigInt(i))-oa);Vv.push(o)}var Gv=Mv(Vv,!0),Zz=Gv[0],eN=Gv[1],Uv=(e,t,n)=>n>32?Rv(e,t,n):Bv(e,t,n),jv=(e,t,n)=>n>32?zv(e,t,n):Dv(e,t,n);function tN(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let s=0;s<10;s++)n[s]=e[s]^e[s+10]^e[s+20]^e[s+30]^e[s+40];for(let s=0;s<10;s+=2){let a=(s+8)%10,u=(s+2)%10,c=n[u],l=n[u+1],d=Uv(c,l,1)^n[a],g=jv(c,l,1)^n[a+1];for(let p=0;p<50;p+=10)e[s+p]^=d,e[s+p+1]^=g}let o=e[2],i=e[3];for(let s=0;s<24;s++){let a=Wv[s],u=Uv(o,i,a),c=jv(o,i,a),l=Hv[s];o=e[l],i=e[l+1],e[l]=u,e[l+1]=c}for(let s=0;s<50;s+=10){for(let a=0;a<10;a++)n[a]=e[s+a];for(let a=0;a<10;a++)e[s+a]^=~n[(a+2)%10]&n[(a+4)%10]}e[0]^=Zz[r],e[1]^=eN[r]}ym(n)}var Sm=class e{constructor(t,n,r,o=!1,i=24){ur(this,"state");ur(this,"pos",0);ur(this,"posOut",0);ur(this,"finished",!1);ur(this,"state32");ur(this,"destroyed",!1);ur(this,"blockLen");ur(this,"suffix");ur(this,"outputLen");ur(this,"enableXOF",!1);ur(this,"rounds");if(this.blockLen=t,this.suffix=n,this.outputLen=r,this.enableXOF=o,this.rounds=i,hm(r,"outputLen"),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ov(this.state)}clone(){return this._cloneInto()}keccak(){bm(this.state32),tN(this.state32,this.rounds),bm(this.state32),this.posOut=0,this.pos=0}update(t){xm(this),cc(t);let{blockLen:n,state:r}=this,o=t.length;for(let i=0;i<o;){let s=Math.min(n-this.pos,o-i);for(let a=0;a<s;a++)r[this.pos++]^=t[i++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:t,suffix:n,pos:r,blockLen:o}=this;t[r]^=n,(n&128)!==0&&r===o-1&&this.keccak(),t[o-1]^=128,this.keccak()}writeInto(t){xm(this,!1),cc(t),this.finish();let n=this.state,{blockLen:r}=this;for(let o=0,i=t.length;o<i;){this.posOut>=r&&this.keccak();let s=Math.min(r-this.posOut,i-o);t.set(n.subarray(this.posOut,this.posOut+s),o),this.posOut+=s,o+=s}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return hm(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Nv(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,ym(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:o,rounds:i,enableXOF:s}=this;return t||(t=new e(n,r,o,s,i)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=i,t.suffix=r,t.outputLen=o,t.enableXOF=s,t.destroyed=this.destroyed,t}},nN=(e,t,n,r={})=>_v(()=>new Sm(t,e,n),r);var qv=nN(6,72,64,$v(10));var rN=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,wm=Math.ceil,hr=Math.floor,Gn="[BigNumber Error] ",Yv=Gn+"Number primitive has more than 15 significant digits: ",Mr=1e14,He=14,vm=9007199254740991,km=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Bo=1e7,un=1e9;function Kv(e){var t,n,r,o=v.prototype={constructor:v,toString:null,valueOf:null},i=new v(1),s=20,a=4,u=-7,c=21,l=-1e7,d=1e7,g=!1,p=1,h=0,S={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},T="0123456789abcdefghijklmnopqrstuvwxyz",I=!0;function v(m,b){var k,A,f,C,E,x,F,P,M=this;if(!(M instanceof v))return new v(m,b);if(b==null){if(m&&m._isBigNumber===!0){M.s=m.s,!m.c||m.e>d?M.c=M.e=null:m.e<l?M.c=[M.e=0]:(M.e=m.e,M.c=m.c.slice());return}if((x=typeof m=="number")&&m*0==0){if(M.s=1/m<0?(m=-m,-1):1,m===~~m){for(C=0,E=m;E>=10;E/=10,C++);C>d?M.c=M.e=null:(M.e=C,M.c=[m]);return}P=String(m)}else{if(!rN.test(P=String(m)))return r(M,P,x);M.s=P.charCodeAt(0)==45?(P=P.slice(1),-1):1}(C=P.indexOf("."))>-1&&(P=P.replace(".","")),(E=P.search(/e/i))>0?(C<0&&(C=E),C+=+P.slice(E+1),P=P.substring(0,E)):C<0&&(C=P.length)}else{if($t(b,2,T.length,"Base"),b==10&&I)return M=new v(m),B(M,s+M.e+1,a);if(P=String(m),x=typeof m=="number"){if(m*0!=0)return r(M,P,x,b);if(M.s=1/m<0?(P=P.slice(1),-1):1,v.DEBUG&&P.replace(/^0\.0*|\./,"").length>15)throw Error(Yv+m)}else M.s=P.charCodeAt(0)===45?(P=P.slice(1),-1):1;for(k=T.slice(0,b),C=E=0,F=P.length;E<F;E++)if(k.indexOf(A=P.charAt(E))<0){if(A=="."){if(E>C){C=F;continue}}else if(!f&&(P==P.toUpperCase()&&(P=P.toLowerCase())||P==P.toLowerCase()&&(P=P.toUpperCase()))){f=!0,E=-1,C=0;continue}return r(M,String(m),x,b)}x=!1,P=n(P,b,10,M.s),(C=P.indexOf("."))>-1?P=P.replace(".",""):C=P.length}for(E=0;P.charCodeAt(E)===48;E++);for(F=P.length;P.charCodeAt(--F)===48;);if(P=P.slice(E,++F)){if(F-=E,x&&v.DEBUG&&F>15&&(m>vm||m!==hr(m)))throw Error(Yv+M.s*m);if((C=C-E-1)>d)M.c=M.e=null;else if(C<l)M.c=[M.e=0];else{if(M.e=C,M.c=[],E=(C+1)%He,C<0&&(E+=He),E<F){for(E&&M.c.push(+P.slice(0,E)),F-=He;E<F;)M.c.push(+P.slice(E,E+=He));E=He-(P=P.slice(E)).length}else E-=F;for(;E--;P+="0");M.c.push(+P)}}else M.c=[M.e=0]}v.clone=Kv,v.ROUND_UP=0,v.ROUND_DOWN=1,v.ROUND_CEIL=2,v.ROUND_FLOOR=3,v.ROUND_HALF_UP=4,v.ROUND_HALF_DOWN=5,v.ROUND_HALF_EVEN=6,v.ROUND_HALF_CEIL=7,v.ROUND_HALF_FLOOR=8,v.EUCLID=9,v.config=v.set=function(m){var b,k;if(m!=null)if(typeof m=="object"){if(m.hasOwnProperty(b="DECIMAL_PLACES")&&(k=m[b],$t(k,0,un,b),s=k),m.hasOwnProperty(b="ROUNDING_MODE")&&(k=m[b],$t(k,0,8,b),a=k),m.hasOwnProperty(b="EXPONENTIAL_AT")&&(k=m[b],k&&k.pop?($t(k[0],-un,0,b),$t(k[1],0,un,b),u=k[0],c=k[1]):($t(k,-un,un,b),u=-(c=k<0?-k:k))),m.hasOwnProperty(b="RANGE"))if(k=m[b],k&&k.pop)$t(k[0],-un,-1,b),$t(k[1],1,un,b),l=k[0],d=k[1];else if($t(k,-un,un,b),k)l=-(d=k<0?-k:k);else throw Error(Gn+b+" cannot be zero: "+k);if(m.hasOwnProperty(b="CRYPTO"))if(k=m[b],k===!!k)if(k)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))g=k;else throw g=!k,Error(Gn+"crypto unavailable");else g=k;else throw Error(Gn+b+" not true or false: "+k);if(m.hasOwnProperty(b="MODULO_MODE")&&(k=m[b],$t(k,0,9,b),p=k),m.hasOwnProperty(b="POW_PRECISION")&&(k=m[b],$t(k,0,un,b),h=k),m.hasOwnProperty(b="FORMAT"))if(k=m[b],typeof k=="object")S=k;else throw Error(Gn+b+" not an object: "+k);if(m.hasOwnProperty(b="ALPHABET"))if(k=m[b],typeof k=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(k))I=k.slice(0,10)=="0123456789",T=k;else throw Error(Gn+b+" invalid: "+k)}else throw Error(Gn+"Object expected: "+m);return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[u,c],RANGE:[l,d],CRYPTO:g,MODULO_MODE:p,POW_PRECISION:h,FORMAT:S,ALPHABET:T}},v.isBigNumber=function(m){if(!m||m._isBigNumber!==!0)return!1;if(!v.DEBUG)return!0;var b,k,A=m.c,f=m.e,C=m.s;e:if({}.toString.call(A)=="[object Array]"){if((C===1||C===-1)&&f>=-un&&f<=un&&f===hr(f)){if(A[0]===0){if(f===0&&A.length===1)return!0;break e}if(b=(f+1)%He,b<1&&(b+=He),String(A[0]).length==b){for(b=0;b<A.length;b++)if(k=A[b],k<0||k>=Mr||k!==hr(k))break e;if(k!==0)return!0}}}else if(A===null&&f===null&&(C===null||C===1||C===-1))return!0;throw Error(Gn+"Invalid BigNumber: "+m)},v.maximum=v.max=function(){return N(arguments,-1)},v.minimum=v.min=function(){return N(arguments,1)},v.random=(function(){var m=9007199254740992,b=Math.random()*m&2097151?function(){return hr(Math.random()*m)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(k){var A,f,C,E,x,F=0,P=[],M=new v(i);if(k==null?k=s:$t(k,0,un),E=wm(k/He),g)if(crypto.getRandomValues){for(A=crypto.getRandomValues(new Uint32Array(E*=2));F<E;)x=A[F]*131072+(A[F+1]>>>11),x>=9e15?(f=crypto.getRandomValues(new Uint32Array(2)),A[F]=f[0],A[F+1]=f[1]):(P.push(x%1e14),F+=2);F=E/2}else if(crypto.randomBytes){for(A=crypto.randomBytes(E*=7);F<E;)x=(A[F]&31)*281474976710656+A[F+1]*1099511627776+A[F+2]*4294967296+A[F+3]*16777216+(A[F+4]<<16)+(A[F+5]<<8)+A[F+6],x>=9e15?crypto.randomBytes(7).copy(A,F):(P.push(x%1e14),F+=7);F=E/7}else throw g=!1,Error(Gn+"crypto unavailable");if(!g)for(;F<E;)x=b(),x<9e15&&(P[F++]=x%1e14);for(E=P[--F],k%=He,E&&k&&(x=km[He-k],P[F]=hr(E/x)*x);P[F]===0;P.pop(),F--);if(F<0)P=[C=0];else{for(C=-1;P[0]===0;P.splice(0,1),C-=He);for(F=1,x=P[0];x>=10;x/=10,F++);F<He&&(C-=He-F)}return M.e=C,M.c=P,M}})(),v.sum=function(){for(var m=1,b=arguments,k=new v(b[0]);m<b.length;)k=k.plus(b[m++]);return k},n=(function(){var m="0123456789";function b(k,A,f,C){for(var E,x=[0],F,P=0,M=k.length;P<M;){for(F=x.length;F--;x[F]*=A);for(x[0]+=C.indexOf(k.charAt(P++)),E=0;E<x.length;E++)x[E]>f-1&&(x[E+1]==null&&(x[E+1]=0),x[E+1]+=x[E]/f|0,x[E]%=f)}return x.reverse()}return function(k,A,f,C,E){var x,F,P,M,O,w,R,W,L=k.indexOf("."),oe=s,X=a;for(L>=0&&(M=h,h=0,k=k.replace(".",""),W=new v(A),w=W.pow(k.length-L),h=M,W.c=b(po(mr(w.c),w.e,"0"),10,f,m),W.e=W.c.length),R=b(k,A,f,E?(x=T,m):(x=m,T)),P=M=R.length;R[--M]==0;R.pop());if(!R[0])return x.charAt(0);if(L<0?--P:(w.c=R,w.e=P,w.s=C,w=t(w,W,oe,X,f),R=w.c,O=w.r,P=w.e),F=P+oe+1,L=R[F],M=f/2,O=O||F<0||R[F+1]!=null,O=X<4?(L!=null||O)&&(X==0||X==(w.s<0?3:2)):L>M||L==M&&(X==4||O||X==6&&R[F-1]&1||X==(w.s<0?8:7)),F<1||!R[0])k=O?po(x.charAt(1),-oe,x.charAt(0)):x.charAt(0);else{if(R.length=F,O)for(--f;++R[--F]>f;)R[F]=0,F||(++P,R=[1].concat(R));for(M=R.length;!R[--M];);for(L=0,k="";L<=M;k+=x.charAt(R[L++]));k=po(k,P,x.charAt(0))}return k}})(),t=(function(){function m(A,f,C){var E,x,F,P,M=0,O=A.length,w=f%Bo,R=f/Bo|0;for(A=A.slice();O--;)F=A[O]%Bo,P=A[O]/Bo|0,E=R*F+P*w,x=w*F+E%Bo*Bo+M,M=(x/C|0)+(E/Bo|0)+R*P,A[O]=x%C;return M&&(A=[M].concat(A)),A}function b(A,f,C,E){var x,F;if(C!=E)F=C>E?1:-1;else for(x=F=0;x<C;x++)if(A[x]!=f[x]){F=A[x]>f[x]?1:-1;break}return F}function k(A,f,C,E){for(var x=0;C--;)A[C]-=x,x=A[C]<f[C]?1:0,A[C]=x*E+A[C]-f[C];for(;!A[0]&&A.length>1;A.splice(0,1));}return function(A,f,C,E,x){var F,P,M,O,w,R,W,L,oe,X,ne,xe,Ee,nt,Pe,ge,dt,fe=A.s==f.s?1:-1,ce=A.c,pe=f.c;if(!ce||!ce[0]||!pe||!pe[0])return new v(!A.s||!f.s||(ce?pe&&ce[0]==pe[0]:!pe)?NaN:ce&&ce[0]==0||!pe?fe*0:fe/0);for(L=new v(fe),oe=L.c=[],P=A.e-f.e,fe=C+P+1,x||(x=Mr,P=xr(A.e/He)-xr(f.e/He),fe=fe/He|0),M=0;pe[M]==(ce[M]||0);M++);if(pe[M]>(ce[M]||0)&&P--,fe<0)oe.push(1),O=!0;else{for(nt=ce.length,ge=pe.length,M=0,fe+=2,w=hr(x/(pe[0]+1)),w>1&&(pe=m(pe,w,x),ce=m(ce,w,x),ge=pe.length,nt=ce.length),Ee=ge,X=ce.slice(0,ge),ne=X.length;ne<ge;X[ne++]=0);dt=pe.slice(),dt=[0].concat(dt),Pe=pe[0],pe[1]>=x/2&&Pe++;do{if(w=0,F=b(pe,X,ge,ne),F<0){if(xe=X[0],ge!=ne&&(xe=xe*x+(X[1]||0)),w=hr(xe/Pe),w>1)for(w>=x&&(w=x-1),R=m(pe,w,x),W=R.length,ne=X.length;b(R,X,W,ne)==1;)w--,k(R,ge<W?dt:pe,W,x),W=R.length,F=1;else w==0&&(F=w=1),R=pe.slice(),W=R.length;if(W<ne&&(R=[0].concat(R)),k(X,R,ne,x),ne=X.length,F==-1)for(;b(pe,X,ge,ne)<1;)w++,k(X,ge<ne?dt:pe,ne,x),ne=X.length}else F===0&&(w++,X=[0]);oe[M++]=w,X[0]?X[ne++]=ce[Ee]||0:(X=[ce[Ee]],ne=1)}while((Ee++<nt||X[0]!=null)&&fe--);O=X[0]!=null,oe[0]||oe.splice(0,1)}if(x==Mr){for(M=1,fe=oe[0];fe>=10;fe/=10,M++);B(L,C+(L.e=M+P*He-1)+1,E,O)}else L.e=P,L.r=+O;return L}})();function D(m,b,k,A){var f,C,E,x,F;if(k==null?k=a:$t(k,0,8),!m.c)return m.toString();if(f=m.c[0],E=m.e,b==null)F=mr(m.c),F=A==1||A==2&&(E<=u||E>=c)?pc(F,E):po(F,E,"0");else if(m=B(new v(m),b,k),C=m.e,F=mr(m.c),x=F.length,A==1||A==2&&(b<=C||C<=u)){for(;x<b;F+="0",x++);F=pc(F,C)}else if(b-=E+(A===2&&C>E),F=po(F,C,"0"),C+1>x){if(--b>0)for(F+=".";b--;F+="0");}else if(b+=C-x,b>0)for(C+1==x&&(F+=".");b--;F+="0");return m.s<0&&f?"-"+F:F}function N(m,b){for(var k,A,f=1,C=new v(m[0]);f<m.length;f++)A=new v(m[f]),(!A.s||(k=si(C,A))===b||k===0&&C.s===b)&&(C=A);return C}function j(m,b,k){for(var A=1,f=b.length;!b[--f];b.pop());for(f=b[0];f>=10;f/=10,A++);return(k=A+k*He-1)>d?m.c=m.e=null:k<l?m.c=[m.e=0]:(m.e=k,m.c=b),m}r=(function(){var m=/^(-?)0([xbo])(?=\w[\w.]*$)/i,b=/^([^.]+)\.$/,k=/^\.([^.]+)$/,A=/^-?(Infinity|NaN)$/,f=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(C,E,x,F){var P,M=x?E:E.replace(f,"");if(A.test(M))C.s=isNaN(M)?null:M<0?-1:1;else{if(!x&&(M=M.replace(m,function(O,w,R){return P=(R=R.toLowerCase())=="x"?16:R=="b"?2:8,!F||F==P?w:O}),F&&(P=F,M=M.replace(b,"$1").replace(k,"0.$1")),E!=M))return new v(M,P);if(v.DEBUG)throw Error(Gn+"Not a"+(F?" base "+F:"")+" number: "+E);C.s=null}C.c=C.e=null}})();function B(m,b,k,A){var f,C,E,x,F,P,M,O=m.c,w=km;if(O){e:{for(f=1,x=O[0];x>=10;x/=10,f++);if(C=b-f,C<0)C+=He,E=b,F=O[P=0],M=hr(F/w[f-E-1]%10);else if(P=wm((C+1)/He),P>=O.length)if(A){for(;O.length<=P;O.push(0));F=M=0,f=1,C%=He,E=C-He+1}else break e;else{for(F=x=O[P],f=1;x>=10;x/=10,f++);C%=He,E=C-He+f,M=E<0?0:hr(F/w[f-E-1]%10)}if(A=A||b<0||O[P+1]!=null||(E<0?F:F%w[f-E-1]),A=k<4?(M||A)&&(k==0||k==(m.s<0?3:2)):M>5||M==5&&(k==4||A||k==6&&(C>0?E>0?F/w[f-E]:0:O[P-1])%10&1||k==(m.s<0?8:7)),b<1||!O[0])return O.length=0,A?(b-=m.e+1,O[0]=w[(He-b%He)%He],m.e=-b||0):O[0]=m.e=0,m;if(C==0?(O.length=P,x=1,P--):(O.length=P+1,x=w[He-C],O[P]=E>0?hr(F/w[f-E]%w[E])*x:0),A)for(;;)if(P==0){for(C=1,E=O[0];E>=10;E/=10,C++);for(E=O[0]+=x,x=1;E>=10;E/=10,x++);C!=x&&(m.e++,O[0]==Mr&&(O[0]=1));break}else{if(O[P]+=x,O[P]!=Mr)break;O[P--]=0,x=1}for(C=O.length;O[--C]===0;O.pop());}m.e>d?m.c=m.e=null:m.e<l&&(m.c=[m.e=0])}return m}function z(m){var b,k=m.e;return k===null?m.toString():(b=mr(m.c),b=k<=u||k>=c?pc(b,k):po(b,k,"0"),m.s<0?"-"+b:b)}return o.absoluteValue=o.abs=function(){var m=new v(this);return m.s<0&&(m.s=1),m},o.comparedTo=function(m,b){return si(this,new v(m,b))},o.decimalPlaces=o.dp=function(m,b){var k,A,f,C=this;if(m!=null)return $t(m,0,un),b==null?b=a:$t(b,0,8),B(new v(C),m+C.e+1,b);if(!(k=C.c))return null;if(A=((f=k.length-1)-xr(this.e/He))*He,f=k[f])for(;f%10==0;f/=10,A--);return A<0&&(A=0),A},o.dividedBy=o.div=function(m,b){return t(this,new v(m,b),s,a)},o.dividedToIntegerBy=o.idiv=function(m,b){return t(this,new v(m,b),0,1)},o.exponentiatedBy=o.pow=function(m,b){var k,A,f,C,E,x,F,P,M,O=this;if(m=new v(m),m.c&&!m.isInteger())throw Error(Gn+"Exponent not an integer: "+z(m));if(b!=null&&(b=new v(b)),x=m.e>14,!O.c||!O.c[0]||O.c[0]==1&&!O.e&&O.c.length==1||!m.c||!m.c[0])return M=new v(Math.pow(+z(O),x?m.s*(2-uc(m)):+z(m))),b?M.mod(b):M;if(F=m.s<0,b){if(b.c?!b.c[0]:!b.s)return new v(NaN);A=!F&&O.isInteger()&&b.isInteger(),A&&(O=O.mod(b))}else{if(m.e>9&&(O.e>0||O.e<-1||(O.e==0?O.c[0]>1||x&&O.c[1]>=24e7:O.c[0]<8e13||x&&O.c[0]<=9999975e7)))return C=O.s<0&&uc(m)?-0:0,O.e>-1&&(C=1/C),new v(F?1/C:C);h&&(C=wm(h/He+2))}for(x?(k=new v(.5),F&&(m.s=1),P=uc(m)):(f=Math.abs(+z(m)),P=f%2),M=new v(i);;){if(P){if(M=M.times(O),!M.c)break;C?M.c.length>C&&(M.c.length=C):A&&(M=M.mod(b))}if(f){if(f=hr(f/2),f===0)break;P=f%2}else if(m=m.times(k),B(m,m.e+1,1),m.e>14)P=uc(m);else{if(f=+z(m),f===0)break;P=f%2}O=O.times(O),C?O.c&&O.c.length>C&&(O.c.length=C):A&&(O=O.mod(b))}return A?M:(F&&(M=i.div(M)),b?M.mod(b):C?B(M,h,a,E):M)},o.integerValue=function(m){var b=new v(this);return m==null?m=a:$t(m,0,8),B(b,b.e+1,m)},o.isEqualTo=o.eq=function(m,b){return si(this,new v(m,b))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(m,b){return si(this,new v(m,b))>0},o.isGreaterThanOrEqualTo=o.gte=function(m,b){return(b=si(this,new v(m,b)))===1||b===0},o.isInteger=function(){return!!this.c&&xr(this.e/He)>this.c.length-2},o.isLessThan=o.lt=function(m,b){return si(this,new v(m,b))<0},o.isLessThanOrEqualTo=o.lte=function(m,b){return(b=si(this,new v(m,b)))===-1||b===0},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&this.c[0]==0},o.minus=function(m,b){var k,A,f,C,E=this,x=E.s;if(m=new v(m,b),b=m.s,!x||!b)return new v(NaN);if(x!=b)return m.s=-b,E.plus(m);var F=E.e/He,P=m.e/He,M=E.c,O=m.c;if(!F||!P){if(!M||!O)return M?(m.s=-b,m):new v(O?E:NaN);if(!M[0]||!O[0])return O[0]?(m.s=-b,m):new v(M[0]?E:a==3?-0:0)}if(F=xr(F),P=xr(P),M=M.slice(),x=F-P){for((C=x<0)?(x=-x,f=M):(P=F,f=O),f.reverse(),b=x;b--;f.push(0));f.reverse()}else for(A=(C=(x=M.length)<(b=O.length))?x:b,x=b=0;b<A;b++)if(M[b]!=O[b]){C=M[b]<O[b];break}if(C&&(f=M,M=O,O=f,m.s=-m.s),b=(A=O.length)-(k=M.length),b>0)for(;b--;M[k++]=0);for(b=Mr-1;A>x;){if(M[--A]<O[A]){for(k=A;k&&!M[--k];M[k]=b);--M[k],M[A]+=Mr}M[A]-=O[A]}for(;M[0]==0;M.splice(0,1),--P);return M[0]?j(m,M,P):(m.s=a==3?-1:1,m.c=[m.e=0],m)},o.modulo=o.mod=function(m,b){var k,A,f=this;return m=new v(m,b),!f.c||!m.s||m.c&&!m.c[0]?new v(NaN):!m.c||f.c&&!f.c[0]?new v(f):(p==9?(A=m.s,m.s=1,k=t(f,m,0,3),m.s=A,k.s*=A):k=t(f,m,0,p),m=f.minus(k.times(m)),!m.c[0]&&p==1&&(m.s=f.s),m)},o.multipliedBy=o.times=function(m,b){var k,A,f,C,E,x,F,P,M,O,w,R,W,L,oe,X=this,ne=X.c,xe=(m=new v(m,b)).c;if(!ne||!xe||!ne[0]||!xe[0])return!X.s||!m.s||ne&&!ne[0]&&!xe||xe&&!xe[0]&&!ne?m.c=m.e=m.s=null:(m.s*=X.s,!ne||!xe?m.c=m.e=null:(m.c=[0],m.e=0)),m;for(A=xr(X.e/He)+xr(m.e/He),m.s*=X.s,F=ne.length,O=xe.length,F<O&&(W=ne,ne=xe,xe=W,f=F,F=O,O=f),f=F+O,W=[];f--;W.push(0));for(L=Mr,oe=Bo,f=O;--f>=0;){for(k=0,w=xe[f]%oe,R=xe[f]/oe|0,E=F,C=f+E;C>f;)P=ne[--E]%oe,M=ne[E]/oe|0,x=R*P+M*w,P=w*P+x%oe*oe+W[C]+k,k=(P/L|0)+(x/oe|0)+R*M,W[C--]=P%L;W[C]=k}return k?++A:W.splice(0,1),j(m,W,A)},o.negated=function(){var m=new v(this);return m.s=-m.s||null,m},o.plus=function(m,b){var k,A=this,f=A.s;if(m=new v(m,b),b=m.s,!f||!b)return new v(NaN);if(f!=b)return m.s=-b,A.minus(m);var C=A.e/He,E=m.e/He,x=A.c,F=m.c;if(!C||!E){if(!x||!F)return new v(f/0);if(!x[0]||!F[0])return F[0]?m:new v(x[0]?A:f*0)}if(C=xr(C),E=xr(E),x=x.slice(),f=C-E){for(f>0?(E=C,k=F):(f=-f,k=x),k.reverse();f--;k.push(0));k.reverse()}for(f=x.length,b=F.length,f-b<0&&(k=F,F=x,x=k,b=f),f=0;b;)f=(x[--b]=x[b]+F[b]+f)/Mr|0,x[b]=Mr===x[b]?0:x[b]%Mr;return f&&(x=[f].concat(x),++E),j(m,x,E)},o.precision=o.sd=function(m,b){var k,A,f,C=this;if(m!=null&&m!==!!m)return $t(m,1,un),b==null?b=a:$t(b,0,8),B(new v(C),m,b);if(!(k=C.c))return null;if(f=k.length-1,A=f*He+1,f=k[f]){for(;f%10==0;f/=10,A--);for(f=k[0];f>=10;f/=10,A++);}return m&&C.e+1>A&&(A=C.e+1),A},o.shiftedBy=function(m){return $t(m,-vm,vm),this.times("1e"+m)},o.squareRoot=o.sqrt=function(){var m,b,k,A,f,C=this,E=C.c,x=C.s,F=C.e,P=s+4,M=new v("0.5");if(x!==1||!E||!E[0])return new v(!x||x<0&&(!E||E[0])?NaN:E?C:1/0);if(x=Math.sqrt(+z(C)),x==0||x==1/0?(b=mr(E),(b.length+F)%2==0&&(b+="0"),x=Math.sqrt(+b),F=xr((F+1)/2)-(F<0||F%2),x==1/0?b="5e"+F:(b=x.toExponential(),b=b.slice(0,b.indexOf("e")+1)+F),k=new v(b)):k=new v(x+""),k.c[0]){for(F=k.e,x=F+P,x<3&&(x=0);;)if(f=k,k=M.times(f.plus(t(C,f,P,1))),mr(f.c).slice(0,x)===(b=mr(k.c)).slice(0,x))if(k.e<F&&--x,b=b.slice(x-3,x+1),b=="9999"||!A&&b=="4999"){if(!A&&(B(f,f.e+s+2,0),f.times(f).eq(C))){k=f;break}P+=4,x+=4,A=1}else{(!+b||!+b.slice(1)&&b.charAt(0)=="5")&&(B(k,k.e+s+2,1),m=!k.times(k).eq(C));break}}return B(k,k.e+s+1,a,m)},o.toExponential=function(m,b){return m!=null&&($t(m,0,un),m++),D(this,m,b,1)},o.toFixed=function(m,b){return m!=null&&($t(m,0,un),m=m+this.e+1),D(this,m,b)},o.toFormat=function(m,b,k){var A,f=this;if(k==null)m!=null&&b&&typeof b=="object"?(k=b,b=null):m&&typeof m=="object"?(k=m,m=b=null):k=S;else if(typeof k!="object")throw Error(Gn+"Argument not an object: "+k);if(A=f.toFixed(m,b),f.c){var C,E=A.split("."),x=+k.groupSize,F=+k.secondaryGroupSize,P=k.groupSeparator||"",M=E[0],O=E[1],w=f.s<0,R=w?M.slice(1):M,W=R.length;if(F&&(C=x,x=F,F=C,W-=C),x>0&&W>0){for(C=W%x||x,M=R.substr(0,C);C<W;C+=x)M+=P+R.substr(C,x);F>0&&(M+=P+R.slice(C)),w&&(M="-"+M)}A=O?M+(k.decimalSeparator||"")+((F=+k.fractionGroupSize)?O.replace(new RegExp("\\d{"+F+"}\\B","g"),"$&"+(k.fractionGroupSeparator||"")):O):M}return(k.prefix||"")+A+(k.suffix||"")},o.toFraction=function(m){var b,k,A,f,C,E,x,F,P,M,O,w,R=this,W=R.c;if(m!=null&&(x=new v(m),!x.isInteger()&&(x.c||x.s!==1)||x.lt(i)))throw Error(Gn+"Argument "+(x.isInteger()?"out of range: ":"not an integer: ")+z(x));if(!W)return new v(R);for(b=new v(i),P=k=new v(i),A=F=new v(i),w=mr(W),C=b.e=w.length-R.e-1,b.c[0]=km[(E=C%He)<0?He+E:E],m=!m||x.comparedTo(b)>0?C>0?b:P:x,E=d,d=1/0,x=new v(w),F.c[0]=0;M=t(x,b,0,1),f=k.plus(M.times(A)),f.comparedTo(m)!=1;)k=A,A=f,P=F.plus(M.times(f=P)),F=f,b=x.minus(M.times(f=b)),x=f;return f=t(m.minus(k),A,0,1),F=F.plus(f.times(P)),k=k.plus(f.times(A)),F.s=P.s=R.s,C=C*2,O=t(P,A,C,a).minus(R).abs().comparedTo(t(F,k,C,a).minus(R).abs())<1?[P,A]:[F,k],d=E,O},o.toNumber=function(){return+z(this)},o.toPrecision=function(m,b){return m!=null&&$t(m,1,un),D(this,m,b,2)},o.toString=function(m){var b,k=this,A=k.s,f=k.e;return f===null?A?(b="Infinity",A<0&&(b="-"+b)):b="NaN":(m==null?b=f<=u||f>=c?pc(mr(k.c),f):po(mr(k.c),f,"0"):m===10&&I?(k=B(new v(k),s+f+1,a),b=po(mr(k.c),k.e,"0")):($t(m,2,T.length,"Base"),b=n(po(mr(k.c),f,"0"),10,m,A,!0)),A<0&&k.c[0]&&(b="-"+b)),b},o.valueOf=o.toJSON=function(){return z(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,e!=null&&v.set(e),v}function xr(e){var t=e|0;return e>0||e===t?t:t-1}function mr(e){for(var t,n,r=1,o=e.length,i=e[0]+"";r<o;){for(t=e[r++]+"",n=He-t.length;n--;t="0"+t);i+=t}for(o=i.length;i.charCodeAt(--o)===48;);return i.slice(0,o+1||1)}function si(e,t){var n,r,o=e.c,i=t.c,s=e.s,a=t.s,u=e.e,c=t.e;if(!s||!a)return null;if(n=o&&!o[0],r=i&&!i[0],n||r)return n?r?0:-a:s;if(s!=a)return s;if(n=s<0,r=u==c,!o||!i)return r?0:!o^n?1:-1;if(!r)return u>c^n?1:-1;for(a=(u=o.length)<(c=i.length)?u:c,s=0;s<a;s++)if(o[s]!=i[s])return o[s]>i[s]^n?1:-1;return u==c?0:u>c^n?1:-1}function $t(e,t,n,r){if(e<t||e>n||e!==hr(e))throw Error(Gn+(r||"Argument")+(typeof e=="number"?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function uc(e){var t=e.c.length-1;return xr(e.e/He)==t&&e.c[t]%2!=0}function pc(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function po(e,t,n){var r,o;if(t<0){for(o=n+".";++t;o+=n);e=o+e}else if(r=e.length,++t>r){for(o=n,t-=r;--t;o+=n);e+=o}else t<r&&(e=e.slice(0,t)+"."+e.slice(t));return e}var oN=Kv(),Xv=oN;var iN=24,ia=32,sN=()=>typeof globalThis<"u"&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues=="function"?()=>{let e=new Uint32Array(1);return globalThis.crypto.getRandomValues(e),e[0]/4294967296}:Math.random,Tm=sN(),Cm=(e=4,t=Tm)=>{let n="";for(;n.length<e;)n=n+Math.floor(t()*36).toString(36);return n};function aN(e){let t=new Xv(0);for(let n of e.values())t=t.multipliedBy(256).plus(n);return t}var Jv=(e="")=>{let t=new TextEncoder;return aN(qv(t.encode(e))).toString(36).slice(1)},Qv=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),lN=e=>Qv[Math.floor(e()*Qv.length)],cN=({globalObj:e=typeof global<"u"?global:typeof window<"u"?window:{},random:t=Tm}={})=>{let n=Object.keys(e).toString(),r=n.length?n+Cm(ia,t):Cm(ia,t);return Jv(r).substring(0,ia)},uN=e=>()=>e++,pN=476782367,Zv=({random:e=Tm,counter:t=uN(Math.floor(e()*pN)),length:n=iN,fingerprint:r=cN({random:e})}={})=>{if(n>ia)throw new Error(`Length must be between 2 and ${ia}. Received: ${n}`);return function(){let i=lN(e),s=Date.now().toString(36),a=t().toString(36),u=Cm(n,e),c=`${s+u+a+r}`;return`${i+Jv(c).substring(1,n)}`}},Do=dN(Zv);function dN(e){let t;return()=>(t||(t=e()),t())}var mN=tl(nk());cn();Oe();var dc=/\[([^\]]+)\]\s*\[([^\]]+)\]\s*\[([^\]]+)\]\s*-\s*(.+)/g;function hN(e){return e.replace(/\*\*/g,"").replace(/\*/g,"").replace(/__/g,"").replace(/_/g," ").trim()}function Im(e,t){let n=[],r=e.split(`
|
|
14
|
+
`,X1="/",Q1="*",di="",O3="comment",_3="declaration";function $3(e,t){if(typeof e!="string")throw new TypeError("First argument must be a string");if(!e)return[];t=t||{};var n=1,r=1;function o(h){var S=h.match(P3);S&&(n+=S.length);var T=h.lastIndexOf(N3);r=~T?h.length-T:r+h.length}function i(){var h={line:n,column:r};return function(S){return S.position=new s(h),c(),S}}function s(h){this.start=h,this.end={line:n,column:r},this.source=t.source}s.prototype.content=e;function a(h){var S=new Error(t.source+":"+n+":"+r+": "+h);if(S.reason=h,S.filename=t.source,S.line=n,S.column=r,S.source=e,!t.silent)throw S}function u(h){var S=h.exec(e);if(S){var T=S[0];return o(T),e=e.slice(T.length),S}}function c(){u(L3)}function l(h){var S;for(h=h||[];S=d();)S!==!1&&h.push(S);return h}function d(){var h=i();if(!(X1!=e.charAt(0)||Q1!=e.charAt(1))){for(var S=2;di!=e.charAt(S)&&(Q1!=e.charAt(S)||X1!=e.charAt(S+1));)++S;if(S+=2,di===e.charAt(S-1))return a("End of comment missing");var T=e.slice(2,S-2);return r+=2,o(T),e=e.slice(S),r+=2,h({type:O3,comment:T})}}function g(){var h=i(),S=u(M3);if(S){if(d(),!u(B3))return a("property missing ':'");var T=u(D3),I=h({type:_3,property:J1(S[0].replace(K1,di)),value:T?J1(T[0].replace(K1,di)):di});return u(R3),I}}function p(){var h=[];l(h);for(var S;S=g();)S!==!1&&(h.push(S),l(h));return h}return c(),p()}function J1(e){return e?e.replace(z3,di):di}Z1.exports=$3});var tT=cr(Ta=>{"use strict";var U3=Ta&&Ta.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ta,"__esModule",{value:!0});Ta.default=H3;var j3=U3(eT());function H3(e,t){let n=null;if(!e||typeof e!="string")return n;let r=(0,j3.default)(e),o=typeof t=="function";return r.forEach(i=>{if(i.type!=="declaration")return;let{property:s,value:a}=i;o?t(s,a,i):a&&(n=n||{},n[s]=a)}),n}});var rT=cr($c=>{"use strict";Object.defineProperty($c,"__esModule",{value:!0});$c.camelCase=void 0;var W3=/^--[a-zA-Z0-9_-]+$/,V3=/-([a-z])/g,G3=/^[^-]+$/,q3=/^-(webkit|moz|ms|o|khtml)-/,Y3=/^-(ms)-/,K3=function(e){return!e||G3.test(e)||W3.test(e)},X3=function(e,t){return t.toUpperCase()},nT=function(e,t){return"".concat(t,"-")},Q3=function(e,t){return t===void 0&&(t={}),K3(e)?e:(e=e.toLowerCase(),t.reactCompat?e=e.replace(Y3,nT):e=e.replace(q3,nT),e.replace(V3,X3))};$c.camelCase=Q3});var iT=cr((Kh,oT)=>{"use strict";var J3=Kh&&Kh.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},Z3=J3(tT()),e6=rT();function Yh(e,t){var n={};return!e||typeof e!="string"||(0,Z3.default)(e,function(r,o){r&&o&&(n[(0,e6.camelCase)(r,t)]=o)}),n}Yh.default=Yh;oT.exports=Yh});var MI=cr((Fge,LI)=>{"use strict";var cu=Object.prototype.hasOwnProperty,PI=Object.prototype.toString,CI=Object.defineProperty,TI=Object.getOwnPropertyDescriptor,II=function(t){return typeof Array.isArray=="function"?Array.isArray(t):PI.call(t)==="[object Array]"},FI=function(t){if(!t||PI.call(t)!=="[object Object]")return!1;var n=cu.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&cu.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var o;for(o in t);return typeof o>"u"||cu.call(t,o)},EI=function(t,n){CI&&n.name==="__proto__"?CI(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},AI=function(t,n){if(n==="__proto__")if(cu.call(t,n)){if(TI)return TI(t,n).value}else return;return t[n]};LI.exports=function e(){var t,n,r,o,i,s,a=arguments[0],u=1,c=arguments.length,l=!1;for(typeof a=="boolean"&&(l=a,a=arguments[1]||{},u=2),(a==null||typeof a!="object"&&typeof a!="function")&&(a={});u<c;++u)if(t=arguments[u],t!=null)for(n in t)r=AI(a,n),o=AI(t,n),a!==o&&(l&&o&&(FI(o)||(i=II(o)))?(i?(i=!1,s=r&&II(r)?r:[]):s=r&&FI(r)?r:{},EI(a,{name:n,newValue:e(l,s,o)})):typeof o<"u"&&EI(a,{name:n,newValue:o}));return a}});import Ja from"react";import{addons as Cu,types as ky,experimental_getStatusStore as Cy}from"storybook/manager-api";import{AddonPanel as L9}from"storybook/internal/components";import Ot,{useState as QV,useEffect as tE}from"react";import{styled as vr}from"storybook/theming";import By from"react";import{styled as zt}from"storybook/theming";var le="#ea580c",Eu="#c2410c",nl="#ff6b35";var Fy=zt.div(({theme:e})=>({fontFamily:e.typography.fonts.base,height:"100%",display:"flex",flexDirection:"column",backgroundColor:e.background.content,color:e.color.defaultText})),Ey=zt.div({flex:1,overflow:"auto",padding:"6px 20px 20px"}),vo=zt.div({marginBottom:"20px"}),ko=zt.label(({theme:e})=>({display:"block",marginBottom:`${e.layoutMargin*.6}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),ys=zt.input(({theme:e})=>({width:"100%",padding:`${e.layoutMargin*.8}px ${e.layoutMargin}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:e.input.background,color:e.color.defaultText,"&:focus":{outline:"none",borderColor:e.color.secondary,boxShadow:`0 0 0 2px ${e.color.secondary}20`}})),vn=zt.select(({theme:e})=>({width:"100%",padding:`${e.layoutMargin*.8}px 32px ${e.layoutMargin*.8}px ${e.layoutMargin}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:e.input.background,color:e.color.defaultText,cursor:"pointer",appearance:"none",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 10px center",backgroundSize:"12px",transition:"border-color 0.15s, box-shadow 0.15s","&:focus":{outline:"none",borderColor:e.color.secondary,boxShadow:`0 0 0 2px ${e.color.secondary}20`},"&:hover":{borderColor:e.color.mediumdark},"&:disabled":{opacity:.6,cursor:"not-allowed"}})),Ay=zt(vn)(({theme:e})=>({width:"auto",padding:`${e.layoutMargin*.6}px 28px ${e.layoutMargin*.6}px ${e.layoutMargin}px`,fontSize:e.typography.size.s1})),rl=e=>({padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,border:"none",borderRadius:e.appBorderRadius,cursor:"pointer",transition:"all 0.15s","&:disabled":{opacity:.5,cursor:"not-allowed"}}),Mn=zt.button(({theme:e})=>({...rl(e),backgroundColor:e.color.secondary,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9}})),sn=zt.button(({theme:e})=>({...rl(e),backgroundColor:le,color:e.color.inverseText,boxShadow:`0 2px 4px ${le}4d`,"&:hover:not(:disabled)":{backgroundColor:Eu,transform:"translateY(-1px)",boxShadow:`0 4px 8px ${le}66`}})),$r=zt.button(({theme:e})=>({...rl(e),backgroundColor:"transparent",border:`1px solid ${e.appBorderColor}`,color:e.color.defaultText,"&:hover:not(:disabled)":{backgroundColor:e.background.hoverable}})),Py=zt.button(({theme:e})=>({...rl(e),backgroundColor:e.color.negative,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9}})),Bn=zt.button(({theme:e})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",padding:`${e.layoutMargin*.4}px`,fontSize:e.typography.size.s2,color:e.color.mediumdark,backgroundColor:"transparent",border:"none",borderRadius:e.appBorderRadius,cursor:"pointer",transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),Au=zt.button(({theme:e})=>({padding:0,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.base,color:e.color.secondary,backgroundColor:"transparent",border:"none",cursor:"pointer",textDecoration:"none","&:hover":{textDecoration:"underline"},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),Co=zt.button(({theme:e,active:t})=>({padding:`${e.layoutMargin*.6}px ${e.layoutMargin*1.2}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:t?e.typography.weight.bold:400,color:t?e.color.secondary:e.color.mediumdark,backgroundColor:"transparent",border:"none",borderBottom:t?`2px solid ${e.color.secondary}`:"2px solid transparent",cursor:"pointer",transition:"all 0.15s","&:hover":{color:t?e.color.secondary:e.color.defaultText}})),To=zt(ys)(({theme:e})=>({paddingLeft:`${e.layoutMargin*3}px`,backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:`${e.layoutMargin}px center`,backgroundSize:"14px"})),_9=zt.div(({theme:e})=>({padding:`${e.layoutMargin*1.6}px`,borderRadius:e.appBorderRadius,border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content})),Ly=zt.h2(({theme:e})=>({margin:`0 0 ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s3,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),$9=zt.h3(({theme:e})=>({margin:`0 0 ${e.layoutMargin*1.2}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),bs=zt.p(({theme:e})=>({margin:`0 0 ${e.layoutMargin*.8}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,color:e.color.defaultText,lineHeight:1.5})),U9=zt.div(({theme:e,width:t="100%",height:n="40px"})=>({width:t,height:n,backgroundColor:e.background.hoverable,borderRadius:e.appBorderRadius,position:"relative",overflow:"hidden","&::after":{content:'""',position:"absolute",top:0,left:0,width:"100%",height:"100%",background:`linear-gradient(90deg, transparent, ${e.color.mediumlight}33, transparent)`,animation:"shimmer 1.5s infinite"},"@keyframes shimmer":{"0%":{transform:"translateX(-100%)"},"100%":{transform:"translateX(100%)"}}})),My=zt.span(({theme:e,variant:t="default"})=>{let n={default:{bg:e.background.hoverable,color:e.color.defaultText},success:{bg:`${e.color.positive}40`,color:e.color.positive},warning:{bg:`${e.color.warning}40`,color:e.color.warning},error:{bg:`${e.color.negative}40`,color:e.color.negative}};return{display:"inline-block",padding:"2px 8px",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,borderRadius:"3px",backgroundColor:n[t].bg,color:n[t].color}}),j9=zt.div(({theme:e})=>({padding:"40px 20px",textAlign:"center",color:e.color.mediumdark})),H9=zt.div(({theme:e})=>({fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,marginBottom:`${e.layoutMargin*.8}px`,color:e.color.defaultText})),W9=zt.div(({theme:e})=>({fontSize:e.typography.size.s2,color:e.color.mediumdark}));var Pu=({header:e,children:t,footer:n})=>By.createElement(Fy,null,e,By.createElement(Ey,null,t),n);import AE from"react";import{styled as PE}from"storybook/theming";var LE=PE.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"flex-end",padding:"6px 12px",borderBottom:`1px solid ${e.appBorderColor}`,position:"sticky",top:0,zIndex:100,backgroundColor:e.background.content})),Lu=({toolbar:e})=>AE.createElement(LE,null,e);import eG from"react";import{styled as ol}from"storybook/theming";var rG=ol.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"6px 12px",borderBottom:`1px solid ${e.appBorderColor}`,position:"sticky",top:0,zIndex:100,backgroundColor:e.background.content})),oG=ol.div({display:"flex",flex:1}),iG=ol(Co)(({theme:e,disabled:t})=>({padding:"6px 12px",...t?{color:e.color.mediumlight,cursor:"not-allowed",opacity:.5,"&:hover":{}}:{}})),sG=ol.div({display:"flex",gap:"8px",alignItems:"center"});import tn,{useState as rm,useCallback as pv,useEffect as dv}from"react";import{styled as co}from"storybook/theming";import ke,{useEffect as ev}from"react";import{styled as st}from"storybook/theming";Ce();_e();Oe();ct();var tv=st.div({position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:1e4}),nv=st.div(({theme:e})=>({position:"absolute",top:"100%",right:0,marginTop:"8px",backgroundColor:e.background.content,borderRadius:"12px",width:"360px",maxWidth:"90vw",boxShadow:"0 10px 40px rgba(0, 0, 0, 0.3)",overflow:"hidden",zIndex:10001})),wR=st.div({display:"flex",alignItems:"center",gap:"12px",padding:"16px 16px 12px"}),vR=st.div({width:"36px",height:"36px",borderRadius:"50%",backgroundColor:le,display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:"14px",fontWeight:700,flexShrink:0}),kR=st.div({display:"flex",flexDirection:"column",gap:"4px"}),CR=st.div(({theme:e})=>({fontSize:"15px",fontWeight:600,color:e.color.defaultText,lineHeight:1.2})),TR=st.span({display:"inline-block",alignSelf:"flex-start",padding:"2px 10px",borderRadius:"6px",fontSize:"11px",fontWeight:600,color:"#7c3aed",backgroundColor:"rgba(124, 58, 237, 0.1)",letterSpacing:"0.3px"}),IR=st.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 16px 8px",fontSize:"14px",color:e.color.defaultText})),FR=st.span(({theme:e})=>({color:e.textMutedColor,fontSize:"13px"})),ER=st.span(({theme:e})=>({color:e.color.defaultText,fontSize:"15px",fontWeight:600})),AR=st.div(({theme:e})=>({height:"8px",borderRadius:"4px",backgroundColor:e.base==="dark"?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.08)",margin:"0 16px 8px",overflow:"hidden"})),PR=st.div(({percent:e})=>({height:"100%",width:`${Math.min(100,Math.max(0,e))}%`,background:`linear-gradient(90deg, #f59e0b 0%, ${le} 100%)`,transition:"width 0.3s ease"})),LR=st.div(({theme:e})=>({padding:"0 16px 14px",fontSize:"12px",color:e.textMutedColor})),MR=st.div(({theme:e})=>({height:"1px",backgroundColor:e.appBorderColor})),BR=st.button({width:"100%",padding:"14px 16px",background:"transparent",border:"none",color:le,fontSize:"14px",fontWeight:500,textAlign:"left",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px","&:hover":{backgroundColor:"rgba(0, 0, 0, 0.03)"}}),rv=st.button(({theme:e})=>({position:"absolute",top:"12px",right:"12px",width:"24px",height:"24px",borderRadius:"4px",border:"none",background:"transparent",color:e.textMutedColor,cursor:"pointer",fontSize:"16px",display:"flex",alignItems:"center",justifyContent:"center","&:hover":{backgroundColor:e.background.hoverable}})),DR=st.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px",borderBottom:`1px solid ${e.appBorderColor}`})),RR=st.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"10px",color:e.color.defaultText,fontSize:"14px",fontWeight:500})),zR=st.div(({theme:e})=>({width:"32px",height:"32px",borderRadius:"50%",backgroundColor:le,display:"flex",alignItems:"center",justifyContent:"center",color:e.color.inverseText,fontSize:"14px",fontWeight:600})),NR=st.div({display:"flex",gap:"8px"}),ov=st(Bn)({fontSize:"18px"}),OR=st.div({padding:"20px 16px"}),_R=st.div(({theme:e})=>({padding:"16px",borderRadius:"8px",background:"linear-gradient(135deg, #10B981 0%, #3B82F6 100%)",marginBottom:"16px",color:"#fff"})),$R=st.div({fontSize:"12px",fontWeight:500,opacity:.9,marginBottom:"4px"}),UR=st.div({fontSize:"28px",fontWeight:700}),jR=st.div({fontSize:"11px",opacity:.8,marginTop:"4px"}),HR=st.div(({theme:e})=>({padding:"16px",borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px"})),WR=st.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),VR=st.div({display:"flex",alignItems:"center",gap:"8px"}),GR=st.span(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),qR=st.span(({theme:e})=>({fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:le,color:e.color.inverseText})),YR=st.button(({theme:e})=>({background:"none",border:"none",color:le,fontSize:"12px",cursor:"pointer","&:hover":{textDecoration:"underline"}})),KR=st.div(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),XR=st.button(({theme:e,variant:t="primary"})=>({width:"100%",padding:"12px",borderRadius:"6px",fontSize:"14px",fontWeight:600,cursor:"pointer",border:"none",marginBottom:"12px",backgroundColor:t==="primary"?le:e.background.hoverable,color:t==="primary"?e.color.inverseText:e.color.defaultText,"&:hover":{opacity:.9}})),QR=30*1e3,iv=({onClose:e})=>{let{sessionToken:t,resetAuth:n,usageData:r,usageLastFetched:o,setUsageData:i}=ve(),{featureFlags:s}=ue(),a=s.showCosts,u=r,c=!r&&t,l=async(h=!1)=>{if(!t)return;let S=o&&Date.now()-o<QR;if(!(!h&&S&&r))try{let T=K(),I=await se(`${T}/api/addon/account`,{headers:{Authorization:`Bearer ${t}`}});if(I.ok){let v=await I.json();i(v)}}catch(T){y.error("Failed to fetch usage:",T)}};ev(()=>{l()},[t]),ev(()=>{let h=()=>{document.visibilityState==="visible"&&(y.debug("[TokenUsageModal] Tab visible, refreshing balance..."),l(!0))};return document.addEventListener("visibilitychange",h),()=>document.removeEventListener("visibilitychange",h)},[t]);let d=async()=>{if(t){let h=K();try{await fetch(`${h}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${t}`}})}catch{}}n(),e()},g=()=>{let h=K();window.open(`${h}/pricing`,"_blank")},p=()=>{let h=K();window.open(`${h}/pricing#add-credits`,"_blank")};if(t&&!a&&!c){let h=Math.floor(u?.creditBalance??0),T=Math.max(h,10),I=Math.max(0,T-h),v=T>0?h/T*100:0;return ke.createElement(ke.Fragment,null,ke.createElement(tv,{onClick:e}),ke.createElement(nv,{onClick:D=>D.stopPropagation(),style:{width:"320px"}},ke.createElement(wR,null,ke.createElement(vR,null,u?.email?u.email[0].toUpperCase():"U"),ke.createElement(kR,null,ke.createElement(CR,null,"UI Review"),ke.createElement(TR,null,(u?.plan||"BETA").toUpperCase())),ke.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:"2px"}},ke.createElement(rv,{onClick:d,title:"Sign out",style:{position:"static"}},ke.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),ke.createElement("polyline",{points:"16 17 21 12 16 7"}),ke.createElement("line",{x1:"21",y1:"12",x2:"9",y2:"12"}))),ke.createElement(rv,{onClick:e,title:"Close",style:{position:"static"}},"\xD7"))),ke.createElement(IR,null,ke.createElement(FR,null,"Credits"),ke.createElement(ER,null,h," left")),ke.createElement(AR,null,ke.createElement(PR,{percent:v})),ke.createElement(LR,null,I," used \xB7 ",h," remaining"),ke.createElement(MR,null),ke.createElement(BR,{onClick:()=>window.open("mailto:hello@uiparity.com?subject=Credits request","_blank")},"Contact us for credits \u2192")))}return ke.createElement(ke.Fragment,null,ke.createElement(tv,{onClick:e}),ke.createElement(nv,{onClick:h=>h.stopPropagation()},ke.createElement(DR,null,ke.createElement(RR,null,ke.createElement(zR,null,u?.email?u.email[0].toUpperCase():"U"),ke.createElement("span",null,u?.email||"Loading...")),ke.createElement(NR,null,ke.createElement(ov,{onClick:d,title:"Sign out"},ke.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},ke.createElement("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),ke.createElement("polyline",{points:"16 17 21 12 16 7"}),ke.createElement("line",{x1:"21",y1:"12",x2:"9",y2:"12"}))),ke.createElement(ov,{onClick:e,title:"Close"},"\xD7"))),ke.createElement(OR,null,c?ke.createElement("div",{style:{textAlign:"center",padding:"20px"}},"Loading..."):t?ke.createElement(ke.Fragment,null,ke.createElement(_R,null,ke.createElement($R,null,"Credit Balance"),ke.createElement(UR,null,"$",(u?.creditBalance??0).toFixed(2)),ke.createElement(jR,null,(u?.creditBalance??0)<2?"Low balance - consider topping up":"Pay only for what you use")),ke.createElement(HR,null,ke.createElement(WR,null,ke.createElement(VR,null,ke.createElement(GR,null,"Current Plan"),ke.createElement(qR,null,u?.plan||"Free")),ke.createElement(YR,{onClick:g},"View detail >")),ke.createElement(KR,null,"~$0.02-0.05 per review depending on complexity"),ke.createElement(XR,{onClick:p,style:{marginTop:"16px"}},"Add Credits"))):ke.createElement("div",{style:{textAlign:"center",padding:"20px"}},"Please sign in to view usage"))))};Ce();import Oi from"react";import{styled as sv}from"storybook/theming";_e();Ce();ct();Oe();var JR=sv.div({display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}),ZR=sv.span(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark})),ez={admin:{enableFixGeneration:!0,enableFixApply:!0,enableAutoMap:!0,enableReviewBadges:!0,showCosts:!0,enableParallelReview:!0,enableModelSelection:!0},beta:{enableFixGeneration:!0,enableFixApply:!1,enableAutoMap:!0,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1}},av=()=>{let{userRole:e,roleOverride:t,setRoleOverride:n,setFeatureFlags:r}=ue(),{sessionToken:o}=ve();return e!=="admin"?null:Oi.createElement(JR,null,Oi.createElement(ZR,null,"View as:"),Oi.createElement(Ay,{value:t??e,onChange:a=>{let u=a.target.value;if(u===e)n(null),o&&se(`${K()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(c=>c.json()).then(c=>{let l={enableFixGeneration:!!c.enableFixGeneration,enableFixApply:!!c.enableFixApply,enableAutoMap:!!c.enableAutoMap,enableReviewBadges:!!c.enableReviewBadges,showCosts:!!c.showCosts,enableParallelReview:!!c.enableParallelReview,enableModelSelection:!!c.enableModelSelection};r(l);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(l))}catch{}}).catch(c=>y.warn("[RoleSwitcher] Failed to re-fetch flags:",c.message));else{n(u);let c=ez[u];r(c);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(c))}catch{}}},style:{width:"auto",minWidth:"100px"}},Oi.createElement("option",{value:"admin"},"Admin"),Oi.createElement("option",{value:"beta"},"Beta Tester")),t&&Oi.createElement(My,{variant:"warning"},"Previewing as ",t))};_e();Ce();ct();import vt,{useState as Ks,useCallback as nm}from"react";import{styled as Pr}from"storybook/theming";var tz="0.5.7",nz=[{value:"bug",label:"\u{1F41E} Bug \u2014 something broke"},{value:"ux",label:"\u{1F9ED} UX \u2014 confusing or slow"},{value:"feature",label:"\u2728 Feature \u2014 missing something"},{value:"praise",label:"\u{1F49A} Praise \u2014 works great"},{value:"other",label:"\u{1F4AC} Other"}],rz=Pr.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center"}),oz=Pr.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"12px",width:"460px",maxWidth:"94%",maxHeight:"90vh",overflow:"auto",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.25)"})),iz=Pr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px 12px",borderBottom:`1px solid ${e.appBorderColor}`})),sz=Pr.h3(({theme:e})=>({margin:0,fontSize:"15px",fontWeight:600,color:e.color.defaultText,display:"flex",alignItems:"center",gap:"8px"})),az=Pr.button(({theme:e})=>({background:"transparent",border:"none",fontSize:"20px",color:e.color.mediumdark,cursor:"pointer",padding:"0 6px",lineHeight:1,"&:hover":{color:e.color.defaultText}})),lz=Pr.div({padding:"16px 20px",display:"flex",flexDirection:"column",gap:"14px"}),cz=Pr.textarea(({theme:e})=>({width:"100%",minHeight:"110px",padding:"8px 10px",borderRadius:e.appBorderRadius,border:`1px solid ${e.appBorderColor}`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.defaultText,backgroundColor:e.background.app,resize:"vertical",boxSizing:"border-box","&:focus":{outline:"none",borderColor:le}})),lv=Pr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 20px 16px",borderTop:`1px solid ${e.appBorderColor}`,gap:"8px"})),cv=Pr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s1,color:e.color.mediumdark,lineHeight:1.4})),uz=Pr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s1,color:e.color.negative})),pz=Pr.div(({theme:e})=>({padding:"24px 20px",textAlign:"center",display:"flex",flexDirection:"column",gap:"10px","& h4":{margin:0,fontSize:"15px",fontWeight:600,color:e.color.positive},"& p":{margin:0,fontSize:e.typography.size.s2,color:e.color.mediumdark}}));function uv({isOpen:e,onClose:t}){let{sessionToken:n,isConnected:r}=ve(),{selectedProjectId:o}=Xe(),{currentStoryId:i}=Ze(),[s,a]=Ks("other"),[u,c]=Ks(""),[l,d]=Ks(!1),[g,p]=Ks(!1),[h,S]=Ks(null),T=nm(()=>{c(""),a("other"),p(!1),S(null),d(!1)},[]),I=nm(()=>{T(),t()},[T,t]),v=nm(async D=>{if(D.preventDefault(),!u.trim()){S("Please write a message.");return}if(!r||!n){S("Sign in to send feedback.");return}d(!0),S(null);try{let N=await se(`${K()}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({message:u.trim(),severity:s,projectId:o||void 0,storyId:i||void 0,addonVersion:tz})});if(!N.ok){let j=await N.json().catch(()=>({}));throw new Error(j.error||`Request failed (${N.status})`)}p(!0)}catch(N){S(N instanceof Error?N.message:"Something went wrong")}finally{d(!1)}},[u,s,n,r,o,i]);return e?vt.createElement(rz,{onClick:I},vt.createElement(oz,{onClick:D=>D.stopPropagation()},vt.createElement(iz,null,vt.createElement(sz,null,vt.createElement("span",null,"\u{1F4AC}"),"Send feedback"),vt.createElement(az,{onClick:I,"aria-label":"Close"},"\xD7")),g?vt.createElement(vt.Fragment,null,vt.createElement(pz,null,vt.createElement("h4",null,"Thanks \u2014 got it."),vt.createElement("p",null,"We read every message. If it's a bug, we'll likely follow up by email.")),vt.createElement(lv,null,vt.createElement("span",null),vt.createElement(Mn,{onClick:I},"Close"))):vt.createElement("form",{onSubmit:v},vt.createElement(lz,null,vt.createElement(vo,null,vt.createElement(ko,{htmlFor:"feedback-severity"},"Type"),vt.createElement(vn,{id:"feedback-severity",value:s,onChange:D=>a(D.target.value),disabled:l},nz.map(D=>vt.createElement("option",{key:D.value,value:D.value},D.label)))),vt.createElement(vo,null,vt.createElement(ko,{htmlFor:"feedback-message"},"What happened?"),vt.createElement(cz,{id:"feedback-message",value:u,onChange:D=>c(D.target.value),placeholder:"Tell us what you were doing, what you expected, and what happened.",disabled:l,autoFocus:!0,maxLength:5e3})),vt.createElement(cv,null,"We auto-attach your current story and project so we can reproduce it. No screenshots sent."),h&&vt.createElement(uz,null,h)),vt.createElement(lv,null,vt.createElement(cv,null,i?`Context: ${i}`:"No story selected"),vt.createElement("div",{style:{display:"flex",gap:"8px"}},vt.createElement(Mn,{type:"button",onClick:I,disabled:l},"Cancel"),vt.createElement(sn,{type:"submit",disabled:l||!u.trim()},l?"Sending\u2026":"Send")))))):null}Ce();_e();ct();var dz=co.div({display:"flex",alignItems:"center"}),_i=co.div(({theme:e})=>({display:"flex",alignItems:"center",paddingLeft:"8px",borderLeft:`1px solid ${e.appBorderColor}`,"&:first-of-type":{paddingLeft:0,borderLeft:"none"}})),gz=co.span(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.secondary,fontWeight:e.typography.weight.bold,paddingRight:"8px",opacity:.8})),fz=co.div({position:"relative"}),mz=co.button(({theme:e})=>({width:"26px",height:"26px",padding:0,background:`linear-gradient(135deg, ${e.color.secondary} 0%, ${e.color.secondary}cc 100%)`,border:"none",borderRadius:"50%",color:e.color.inverseText,cursor:"pointer",fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s","&:hover":{transform:"scale(1.05)",boxShadow:`0 2px 8px ${e.color.secondary}66`}})),gv=co.button(({isLow:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"4px 10px",background:e?"#FEF3C7":"linear-gradient(135deg, #10B981 0%, #3B82F6 100%)",border:"none",borderRadius:"12px",color:e?"#92400E":"#fff",cursor:"pointer",fontSize:"12px",fontWeight:600,transition:"all 0.2s",minWidth:"60px",justifyContent:"center","&:hover":{transform:"scale(1.02)",boxShadow:"0 2px 8px rgba(0,0,0,0.15)"}})),hz=co.span({display:"inline-block",width:"12px",height:"12px",border:"2px solid rgba(255,255,255,0.3)",borderTopColor:"#fff",borderRadius:"50%",animation:"credit-spin 0.8s linear infinite","@keyframes credit-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}}),xz=co.button(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",gap:"4px",padding:"4px 10px",height:"28px",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:"transparent",color:e.color.mediumdark,fontSize:"12px",fontWeight:500,cursor:"pointer",transition:"all 0.15s","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText,borderColor:e.color.mediumdark}})),yz=co.button({position:"fixed",bottom:"20px",right:"20px",width:"48px",height:"48px",borderRadius:"50%",backgroundColor:le,color:"white",border:"none",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"22px",cursor:"pointer",boxShadow:`0 4px 14px ${le}66, 0 2px 4px rgba(0,0,0,0.1)`,transition:"all 0.2s ease",zIndex:9999,"&:hover":{transform:"scale(1.08)",boxShadow:`0 6px 20px ${le}88, 0 3px 6px rgba(0,0,0,0.15)`},"&:active":{transform:"scale(0.96)"}}),bz=30*1e3,om=({onOpenSettings:e})=>{let[t,n]=rm(!1),[r,o]=rm(!1),[i,s]=rm(!1),{usageData:a,usageLastFetched:u,setUsageData:c,sessionToken:l}=ve(),{userRole:d,roleOverride:g,featureFlags:p}=ue(),h=g??d;dv(()=>{(async()=>{if(!(!l||u&&Date.now()-u<bz&&a)){s(!0);try{let j=K(),B=await se(`${j}/api/addon/account`,{headers:{Authorization:`Bearer ${l}`}});if(B.ok){let z=await B.json();c(z)}}catch(j){console.error("Failed to fetch balance:",j)}finally{s(!1)}}})()},[l,u,a,c]),dv(()=>{let D=()=>{document.visibilityState==="visible"&&t&&n(!1)},N=()=>{t&&n(!1)};return document.addEventListener("visibilitychange",D),window.addEventListener("focus",N),()=>{document.removeEventListener("visibilitychange",D),window.removeEventListener("focus",N)}},[t]);let S=pv(()=>{n(!0)},[]),T=pv(()=>{n(!1)},[]),I=a?.creditBalance??0,v=I<2&&!i;return tn.createElement(dz,null,e&&tn.createElement(_i,null,tn.createElement(xz,{onClick:e,title:"Settings"},tn.createElement("span",{style:{fontSize:"14px"}},"\u2699"),"Settings")),l&&d==="admin"&&h==="admin"&&tn.createElement(_i,null,tn.createElement(av,null)),tn.createElement(_i,null,tn.createElement(gz,null,"v","0.5.48")),l&&p.showCosts&&tn.createElement(_i,null,tn.createElement(gv,{onClick:S,isLow:v,title:i?"Loading...":a?v?"Low balance - click to top up":"Credit balance - click for details":"Click to load balance"},i?tn.createElement(hz,null):a?`$${I.toFixed(2)}`:"...")),l&&!p.showCosts&&a&&tn.createElement(_i,null,tn.createElement(gv,{onClick:S,isLow:Math.floor(I)<=3,title:`${Math.floor(I)} review credits \u2014 click for details`},"\u26A1 ",Math.floor(I))),tn.createElement(_i,null,tn.createElement(fz,null,tn.createElement(mz,{title:"Account & Usage",onClick:S},a?.email?a.email[0].toUpperCase():"?"),t&&tn.createElement(iv,{onClose:T}))),l&&tn.createElement(yz,{onClick:()=>o(!0),title:"Send feedback","aria-label":"Send feedback"},"\u{1F4AC}"),tn.createElement(uv,{isOpen:r,onClose:()=>o(!1)}))};import Rt,{useEffect as T5,useRef as I5}from"react";import{styled as yr}from"storybook/theming";import et from"react";Ce();Oe();_e();ct();cn();import{useState as Sz,useCallback as Lo,useRef as wz,useEffect as fv}from"react";var Lr=K();y.debug("[useAuth] Module loaded, APP_URL:",Lr);var Zl=null,ec=null,Xs=null;function Qs(){Zl&&(clearInterval(Zl),Zl=null),ec&&(clearTimeout(ec),ec=null)}var Js=()=>{let e=wz(null),{sessionToken:t,apiKey:n,authMethod:r,deviceCode:o,userCode:i,verificationUri:s,isConnected:a,authError:u,setSessionToken:c,setApiKey:l,setAuthMethod:d,setDeviceCode:g,setUserCode:p,setVerificationUri:h,setPollingInterval:S,setAuthError:T,resetAuth:I}=ve(),[v,D]=Sz(!1),N=Lo(()=>{Qs(),Xs=null},[]),j=Lo(f=>{Xs=f,Qs();let C=async()=>{let E=Xs;if(!E){Qs();return}try{let F=await(await fetch(`${Lr}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:E})})).json();F.status==="authorized"&&F.session_token?(y.debug("[useAuth] \u2705 OAuth poll successful! Got token."),Qs(),Xs=null,localStorage.setItem("uicopilot_session_token",F.session_token),c(F.session_token),D(!1)):F.status==="expired"&&(y.debug("[useAuth] OAuth poll_code expired"),Qs(),Xs=null,D(!1))}catch(x){y.error("[useAuth] OAuth poll error:",x)}};Zl=setInterval(C,2e3),ec=setTimeout(C,1e3)},[c]);fv(()=>{function f(C){if(!C.origin.startsWith(Lr))return;let E=C.data;if(!E||typeof E!="object")return;let x=E;if(x.type==="UICOPILOT_AUTH_ERROR"){y.debug("[useAuth] Popup reported auth error:",x.step,x.detail),N(),D(!1);let F=typeof x.step=="string"?x.step:"auth",P=typeof x.detail=="string"?x.detail:"Unknown error";T(`${At.NAME} auth failed (${F}): ${P}`)}else x.type==="UICOPILOT_AUTH_POLL_CODE"&&typeof x.pollCode=="string"&&x.pollCode&&(y.debug("[useAuth] Popup handed us a fresh poll_code, switching"),T(null),j(x.pollCode))}return window.addEventListener("message",f),()=>window.removeEventListener("message",f)},[j,N,T]);let B=Lo(async()=>{let f="width=440,height=580,left=320,top=160",C=null;try{C=window.open("about:blank","uiparity-auth",f)}catch{}try{y.debug("[useAuth] Starting OAuth flow, requesting poll_code...");let E;try{E=await se(`${Lr}/api/addon/auth/oauth-poll`,{method:"POST"})}catch(L){let w=L instanceof Error&&L.message.includes("timed out")?`Cannot reach ${At.NAME} server at ${Lr}. Is the dashboard running?`:`Connection failed: ${Lr} is not responding.`;T(w),y.error("[useAuth]",w),C?.close();return}if(!E.ok){let L=`Cannot reach ${At.NAME} server. Is the dashboard running?`;T(L),y.error("[useAuth]",L),C?.close();return}let{poll_code:x}=await E.json();y.debug("[useAuth] Got poll_code:",x.substring(0,15)+"...");let F=localStorage.getItem("uicopilot_force_sign_in")==="true";F&&localStorage.removeItem("uicopilot_force_sign_in");let P=`${Lr}/addon/auth?poll_code=${x}${F?"&force_sign_in=true":""}`;D(!0),C&&!C.closed?C.location.href=P:window.open(P,"uiparity-auth",f),y.debug("[useAuth] Starting OAuth poll for token..."),j(x)}catch(E){y.error("[useAuth] OAuth flow error:",E),T(`Connection failed. Is the dashboard running at ${Lr}?`),D(!1),C?.close()}},[T,j]),z=Lo(async()=>{try{let f=await fetch(`${Lr}/api/addon/auth/device`,{method:"POST"});if(!f.ok)throw new Error("Failed to start device code flow");let C=await f.json();g(C.device_code),p(C.user_code),h(C.verification_uri),window.open(C.verification_uri,"_blank"),m(C.device_code,C.interval*1e3)}catch(f){throw y.error("[useAuth] Device code flow error:",f),f}},[g,p,h]),m=Lo((f,C)=>{y.debug("[useAuth] Starting polling. Device code:",f,"Interval:",C),e.current&&clearInterval(e.current);let E=async()=>{try{let F=await(await fetch(`${Lr}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:f})})).json();F.status==="authorized"?(y.debug("[useAuth] Device code authorization successful!"),e.current&&(clearInterval(e.current),e.current=null),g(null),p(null),h(null),localStorage.setItem("uicopilot_session_token",F.session_token),c(F.session_token),D(!1)):(F.status==="expired"||F.status==="denied")&&(y.debug("[useAuth] Device code expired or denied"),e.current&&(clearInterval(e.current),e.current=null),g(null),p(null),h(null))}catch(x){y.error("[useAuth] Polling error:",x)}};e.current=setInterval(E,C),S(C)},[g,p,h,c,S]),b=Lo(()=>{e.current&&(clearInterval(e.current),e.current=null),g(null),p(null),h(null),S(null)},[g,p,h,S]),k=Lo(f=>{l(f),c(f),localStorage.setItem("uicopilot_api_key",f)},[l,c]),A=Lo(async()=>{if(t)try{await se(`${Lr}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${t}`}})}catch{}I(),D(!1),e.current&&(clearInterval(e.current),e.current=null),N()},[t,I,N]);return fv(()=>()=>{e.current&&clearInterval(e.current)},[]),{sessionToken:t,apiKey:n,authMethod:r,deviceCode:o,userCode:i,verificationUri:s,isConnected:a,authError:u,oauthPending:v,setAuthMethod:d,startOAuth:B,startDeviceCode:z,cancelDeviceCode:b,saveApiKey:k,logout:A}};Ce();Oe();_e();ct();import{useCallback as tc}from"react";var Zs=K(),uo=()=>{let{projects:e,selectedProjectId:t,loadingProjects:n,setProjects:r,setSelectedProjectId:o,setLoadingProjects:i,getSelectedProject:s}=Xe(),{sessionToken:a}=ve(),u=tc(async()=>{if(!a){y.debug("[useProjects] No session token, skipping fetch");return}try{i(!0),y.debug("[useProjects] Fetching from:",`${Zs}/api/projects`);let g=await se(`${Zs}/api/projects`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`}});if(g.ok){let p=await g.json();y.debug("[useProjects] Projects:",p.projects),r(p.projects||[])}else y.error("[useProjects] Failed to fetch projects:",g.status,g.statusText)}catch(g){y.error("[useProjects] Error fetching projects:",g)}finally{i(!1)}},[a,r,i]),c=tc(async g=>{if(!a)throw new Error("Not authenticated");let p=await se(`${Zs}/api/projects`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify(g)});if(!p.ok)throw new Error("Failed to create project");let h=await p.json();return await u(),h.project},[a,u]),l=tc(async(g,p)=>{if(!a)throw new Error("Not authenticated");let h={};if(p.name!==void 0&&(h.name=p.name),p.description!==void 0&&(h.description=p.description),p.figmaFileUrl!==void 0&&(h.figmaFileId=p.figmaFileUrl===""?null:p.figmaFileUrl),!(await se(`${Zs}/api/projects/${g}`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a}`},body:JSON.stringify(h)})).ok)throw new Error("Failed to update project");await u()},[a,u]),d=tc(async g=>{if(!a)throw new Error("Not authenticated");if(!(await se(`${Zs}/api/projects/${g}`,{method:"DELETE",headers:{Authorization:`Bearer ${a}`}})).ok)throw new Error("Failed to delete project");await u(),t===g&&o(null)},[a,t,u,o]);return{projects:e,selectedProjectId:t,selectedProject:s(),loadingProjects:n,setSelectedProjectId:o,fetchProjects:u,createProject:c,updateProject:l,deleteProject:d}};Ce();var ea=()=>{let{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:s,setFigmaFileUrl:a,setCurrentMapping:u,setMappingSource:c,setLoadingMapping:l,setShowFigmaQuality:d}=Ze();return{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:s,setFigmaFileUrl:a,setCurrentMapping:u,setMappingSource:c,setLoadingMapping:l,setShowFigmaQuality:d,openComponentBrowser:()=>s(!0),closeComponentBrowser:()=>s(!1)}};Ce();cm();mm();import{useCallback as la,useRef as gc}from"react";Oe();function sc(){return new Promise(e=>{let t=document.getElementById("storybook-preview-iframe");if(!t||!t.contentWindow){y.warn("[iframeReload] No preview iframe found"),e();return}let n=t.contentWindow.location.href,r=new URL(n);r.searchParams.set("_cb",Date.now().toString());let o=r.toString();y.debug("[iframeReload] Triggering cache-busted reload:",o);let i=setTimeout(()=>{y.warn("[iframeReload] Iframe reload timed out after 5s"),t.removeEventListener("load",s),e()},5e3),s=()=>{clearTimeout(i),t.removeEventListener("load",s),y.debug("[iframeReload] Iframe loaded, waiting for HMR and styles to settle..."),setTimeout(()=>{y.debug("[iframeReload] Iframe reloaded and styles should be fresh"),e()},2e3)};t.addEventListener("load",s),t.contentWindow.location.href=o})}function ac(e){return e&&e!=="admin"?{"X-UIC-Role-Preview":e}:{}}var lc=BigInt(4294967295),Lv=BigInt(32);function Hz(e,t=!1){return t?{h:Number(e&lc),l:Number(e>>Lv&lc)}:{h:Number(e>>Lv&lc)|0,l:Number(e&lc)|0}}function Mv(e,t=!1){let n=e.length,r=new Uint32Array(n),o=new Uint32Array(n);for(let i=0;i<n;i++){let{h:s,l:a}=Hz(e[i],t);[r[i],o[i]]=[s,a]}return[r,o]}var Bv=(e,t,n)=>e<<n|t>>>32-n,Dv=(e,t,n)=>t<<n|e>>>32-n,Rv=(e,t,n)=>t<<n-32|e>>>64-n,zv=(e,t,n)=>e<<n-32|t>>>64-n;function Wz(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function hm(e,t=""){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw new Error(`${n}expected integer >= 0, got ${e}`)}}function cc(e,t,n=""){let r=Wz(e),o=e?.length,i=t!==void 0;if(!r||i&&o!==t){let s=n&&`"${n}" `,a=i?` of length ${t}`:"",u=r?`length=${o}`:`type=${typeof e}`;throw new Error(s+"expected Uint8Array"+a+", got "+u)}return e}function xm(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Nv(e,t){cc(e,void 0,"digestInto() output");let n=t.outputLen;if(e.length<n)throw new Error('"digestInto() output" expected to be of length >='+n)}function Ov(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function ym(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var Vz=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Gz(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function qz(e){for(let t=0;t<e.length;t++)e[t]=Gz(e[t]);return e}var bm=Vz?e=>e:qz;function _v(e,t={}){let n=(o,i)=>e(i).update(o).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.create=o=>e(o),Object.assign(n,t),Object.freeze(n)}var $v=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var Yz=BigInt(0),oa=BigInt(1),Kz=BigInt(2),Xz=BigInt(7),Qz=BigInt(256),Jz=BigInt(113),Hv=[],Wv=[],Vv=[];for(let e=0,t=oa,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],Hv.push(2*(5*r+n)),Wv.push((e+1)*(e+2)/2%64);let o=Yz;for(let i=0;i<7;i++)t=(t<<oa^(t>>Xz)*Jz)%Qz,t&Kz&&(o^=oa<<(oa<<BigInt(i))-oa);Vv.push(o)}var Gv=Mv(Vv,!0),Zz=Gv[0],eN=Gv[1],Uv=(e,t,n)=>n>32?Rv(e,t,n):Bv(e,t,n),jv=(e,t,n)=>n>32?zv(e,t,n):Dv(e,t,n);function tN(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let s=0;s<10;s++)n[s]=e[s]^e[s+10]^e[s+20]^e[s+30]^e[s+40];for(let s=0;s<10;s+=2){let a=(s+8)%10,u=(s+2)%10,c=n[u],l=n[u+1],d=Uv(c,l,1)^n[a],g=jv(c,l,1)^n[a+1];for(let p=0;p<50;p+=10)e[s+p]^=d,e[s+p+1]^=g}let o=e[2],i=e[3];for(let s=0;s<24;s++){let a=Wv[s],u=Uv(o,i,a),c=jv(o,i,a),l=Hv[s];o=e[l],i=e[l+1],e[l]=u,e[l+1]=c}for(let s=0;s<50;s+=10){for(let a=0;a<10;a++)n[a]=e[s+a];for(let a=0;a<10;a++)e[s+a]^=~n[(a+2)%10]&n[(a+4)%10]}e[0]^=Zz[r],e[1]^=eN[r]}ym(n)}var Sm=class e{constructor(t,n,r,o=!1,i=24){ur(this,"state");ur(this,"pos",0);ur(this,"posOut",0);ur(this,"finished",!1);ur(this,"state32");ur(this,"destroyed",!1);ur(this,"blockLen");ur(this,"suffix");ur(this,"outputLen");ur(this,"enableXOF",!1);ur(this,"rounds");if(this.blockLen=t,this.suffix=n,this.outputLen=r,this.enableXOF=o,this.rounds=i,hm(r,"outputLen"),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=Ov(this.state)}clone(){return this._cloneInto()}keccak(){bm(this.state32),tN(this.state32,this.rounds),bm(this.state32),this.posOut=0,this.pos=0}update(t){xm(this),cc(t);let{blockLen:n,state:r}=this,o=t.length;for(let i=0;i<o;){let s=Math.min(n-this.pos,o-i);for(let a=0;a<s;a++)r[this.pos++]^=t[i++];this.pos===n&&this.keccak()}return this}finish(){if(this.finished)return;this.finished=!0;let{state:t,suffix:n,pos:r,blockLen:o}=this;t[r]^=n,(n&128)!==0&&r===o-1&&this.keccak(),t[o-1]^=128,this.keccak()}writeInto(t){xm(this,!1),cc(t),this.finish();let n=this.state,{blockLen:r}=this;for(let o=0,i=t.length;o<i;){this.posOut>=r&&this.keccak();let s=Math.min(r-this.posOut,i-o);t.set(n.subarray(this.posOut,this.posOut+s),o),this.posOut+=s,o+=s}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return hm(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(Nv(t,this),this.finished)throw new Error("digest() was already called");return this.writeInto(t),this.destroy(),t}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,ym(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:o,rounds:i,enableXOF:s}=this;return t||(t=new e(n,r,o,s,i)),t.state32.set(this.state32),t.pos=this.pos,t.posOut=this.posOut,t.finished=this.finished,t.rounds=i,t.suffix=r,t.outputLen=o,t.enableXOF=s,t.destroyed=this.destroyed,t}},nN=(e,t,n,r={})=>_v(()=>new Sm(t,e,n),r);var qv=nN(6,72,64,$v(10));var rN=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,wm=Math.ceil,hr=Math.floor,Gn="[BigNumber Error] ",Yv=Gn+"Number primitive has more than 15 significant digits: ",Mr=1e14,He=14,vm=9007199254740991,km=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Bo=1e7,un=1e9;function Kv(e){var t,n,r,o=v.prototype={constructor:v,toString:null,valueOf:null},i=new v(1),s=20,a=4,u=-7,c=21,l=-1e7,d=1e7,g=!1,p=1,h=0,S={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},T="0123456789abcdefghijklmnopqrstuvwxyz",I=!0;function v(m,b){var k,A,f,C,E,x,F,P,L=this;if(!(L instanceof v))return new v(m,b);if(b==null){if(m&&m._isBigNumber===!0){L.s=m.s,!m.c||m.e>d?L.c=L.e=null:m.e<l?L.c=[L.e=0]:(L.e=m.e,L.c=m.c.slice());return}if((x=typeof m=="number")&&m*0==0){if(L.s=1/m<0?(m=-m,-1):1,m===~~m){for(C=0,E=m;E>=10;E/=10,C++);C>d?L.c=L.e=null:(L.e=C,L.c=[m]);return}P=String(m)}else{if(!rN.test(P=String(m)))return r(L,P,x);L.s=P.charCodeAt(0)==45?(P=P.slice(1),-1):1}(C=P.indexOf("."))>-1&&(P=P.replace(".","")),(E=P.search(/e/i))>0?(C<0&&(C=E),C+=+P.slice(E+1),P=P.substring(0,E)):C<0&&(C=P.length)}else{if($t(b,2,T.length,"Base"),b==10&&I)return L=new v(m),B(L,s+L.e+1,a);if(P=String(m),x=typeof m=="number"){if(m*0!=0)return r(L,P,x,b);if(L.s=1/m<0?(P=P.slice(1),-1):1,v.DEBUG&&P.replace(/^0\.0*|\./,"").length>15)throw Error(Yv+m)}else L.s=P.charCodeAt(0)===45?(P=P.slice(1),-1):1;for(k=T.slice(0,b),C=E=0,F=P.length;E<F;E++)if(k.indexOf(A=P.charAt(E))<0){if(A=="."){if(E>C){C=F;continue}}else if(!f&&(P==P.toUpperCase()&&(P=P.toLowerCase())||P==P.toLowerCase()&&(P=P.toUpperCase()))){f=!0,E=-1,C=0;continue}return r(L,String(m),x,b)}x=!1,P=n(P,b,10,L.s),(C=P.indexOf("."))>-1?P=P.replace(".",""):C=P.length}for(E=0;P.charCodeAt(E)===48;E++);for(F=P.length;P.charCodeAt(--F)===48;);if(P=P.slice(E,++F)){if(F-=E,x&&v.DEBUG&&F>15&&(m>vm||m!==hr(m)))throw Error(Yv+L.s*m);if((C=C-E-1)>d)L.c=L.e=null;else if(C<l)L.c=[L.e=0];else{if(L.e=C,L.c=[],E=(C+1)%He,C<0&&(E+=He),E<F){for(E&&L.c.push(+P.slice(0,E)),F-=He;E<F;)L.c.push(+P.slice(E,E+=He));E=He-(P=P.slice(E)).length}else E-=F;for(;E--;P+="0");L.c.push(+P)}}else L.c=[L.e=0]}v.clone=Kv,v.ROUND_UP=0,v.ROUND_DOWN=1,v.ROUND_CEIL=2,v.ROUND_FLOOR=3,v.ROUND_HALF_UP=4,v.ROUND_HALF_DOWN=5,v.ROUND_HALF_EVEN=6,v.ROUND_HALF_CEIL=7,v.ROUND_HALF_FLOOR=8,v.EUCLID=9,v.config=v.set=function(m){var b,k;if(m!=null)if(typeof m=="object"){if(m.hasOwnProperty(b="DECIMAL_PLACES")&&(k=m[b],$t(k,0,un,b),s=k),m.hasOwnProperty(b="ROUNDING_MODE")&&(k=m[b],$t(k,0,8,b),a=k),m.hasOwnProperty(b="EXPONENTIAL_AT")&&(k=m[b],k&&k.pop?($t(k[0],-un,0,b),$t(k[1],0,un,b),u=k[0],c=k[1]):($t(k,-un,un,b),u=-(c=k<0?-k:k))),m.hasOwnProperty(b="RANGE"))if(k=m[b],k&&k.pop)$t(k[0],-un,-1,b),$t(k[1],1,un,b),l=k[0],d=k[1];else if($t(k,-un,un,b),k)l=-(d=k<0?-k:k);else throw Error(Gn+b+" cannot be zero: "+k);if(m.hasOwnProperty(b="CRYPTO"))if(k=m[b],k===!!k)if(k)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))g=k;else throw g=!k,Error(Gn+"crypto unavailable");else g=k;else throw Error(Gn+b+" not true or false: "+k);if(m.hasOwnProperty(b="MODULO_MODE")&&(k=m[b],$t(k,0,9,b),p=k),m.hasOwnProperty(b="POW_PRECISION")&&(k=m[b],$t(k,0,un,b),h=k),m.hasOwnProperty(b="FORMAT"))if(k=m[b],typeof k=="object")S=k;else throw Error(Gn+b+" not an object: "+k);if(m.hasOwnProperty(b="ALPHABET"))if(k=m[b],typeof k=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(k))I=k.slice(0,10)=="0123456789",T=k;else throw Error(Gn+b+" invalid: "+k)}else throw Error(Gn+"Object expected: "+m);return{DECIMAL_PLACES:s,ROUNDING_MODE:a,EXPONENTIAL_AT:[u,c],RANGE:[l,d],CRYPTO:g,MODULO_MODE:p,POW_PRECISION:h,FORMAT:S,ALPHABET:T}},v.isBigNumber=function(m){if(!m||m._isBigNumber!==!0)return!1;if(!v.DEBUG)return!0;var b,k,A=m.c,f=m.e,C=m.s;e:if({}.toString.call(A)=="[object Array]"){if((C===1||C===-1)&&f>=-un&&f<=un&&f===hr(f)){if(A[0]===0){if(f===0&&A.length===1)return!0;break e}if(b=(f+1)%He,b<1&&(b+=He),String(A[0]).length==b){for(b=0;b<A.length;b++)if(k=A[b],k<0||k>=Mr||k!==hr(k))break e;if(k!==0)return!0}}}else if(A===null&&f===null&&(C===null||C===1||C===-1))return!0;throw Error(Gn+"Invalid BigNumber: "+m)},v.maximum=v.max=function(){return N(arguments,-1)},v.minimum=v.min=function(){return N(arguments,1)},v.random=(function(){var m=9007199254740992,b=Math.random()*m&2097151?function(){return hr(Math.random()*m)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(k){var A,f,C,E,x,F=0,P=[],L=new v(i);if(k==null?k=s:$t(k,0,un),E=wm(k/He),g)if(crypto.getRandomValues){for(A=crypto.getRandomValues(new Uint32Array(E*=2));F<E;)x=A[F]*131072+(A[F+1]>>>11),x>=9e15?(f=crypto.getRandomValues(new Uint32Array(2)),A[F]=f[0],A[F+1]=f[1]):(P.push(x%1e14),F+=2);F=E/2}else if(crypto.randomBytes){for(A=crypto.randomBytes(E*=7);F<E;)x=(A[F]&31)*281474976710656+A[F+1]*1099511627776+A[F+2]*4294967296+A[F+3]*16777216+(A[F+4]<<16)+(A[F+5]<<8)+A[F+6],x>=9e15?crypto.randomBytes(7).copy(A,F):(P.push(x%1e14),F+=7);F=E/7}else throw g=!1,Error(Gn+"crypto unavailable");if(!g)for(;F<E;)x=b(),x<9e15&&(P[F++]=x%1e14);for(E=P[--F],k%=He,E&&k&&(x=km[He-k],P[F]=hr(E/x)*x);P[F]===0;P.pop(),F--);if(F<0)P=[C=0];else{for(C=-1;P[0]===0;P.splice(0,1),C-=He);for(F=1,x=P[0];x>=10;x/=10,F++);F<He&&(C-=He-F)}return L.e=C,L.c=P,L}})(),v.sum=function(){for(var m=1,b=arguments,k=new v(b[0]);m<b.length;)k=k.plus(b[m++]);return k},n=(function(){var m="0123456789";function b(k,A,f,C){for(var E,x=[0],F,P=0,L=k.length;P<L;){for(F=x.length;F--;x[F]*=A);for(x[0]+=C.indexOf(k.charAt(P++)),E=0;E<x.length;E++)x[E]>f-1&&(x[E+1]==null&&(x[E+1]=0),x[E+1]+=x[E]/f|0,x[E]%=f)}return x.reverse()}return function(k,A,f,C,E){var x,F,P,L,O,w,R,W,M=k.indexOf("."),oe=s,X=a;for(M>=0&&(L=h,h=0,k=k.replace(".",""),W=new v(A),w=W.pow(k.length-M),h=L,W.c=b(po(mr(w.c),w.e,"0"),10,f,m),W.e=W.c.length),R=b(k,A,f,E?(x=T,m):(x=m,T)),P=L=R.length;R[--L]==0;R.pop());if(!R[0])return x.charAt(0);if(M<0?--P:(w.c=R,w.e=P,w.s=C,w=t(w,W,oe,X,f),R=w.c,O=w.r,P=w.e),F=P+oe+1,M=R[F],L=f/2,O=O||F<0||R[F+1]!=null,O=X<4?(M!=null||O)&&(X==0||X==(w.s<0?3:2)):M>L||M==L&&(X==4||O||X==6&&R[F-1]&1||X==(w.s<0?8:7)),F<1||!R[0])k=O?po(x.charAt(1),-oe,x.charAt(0)):x.charAt(0);else{if(R.length=F,O)for(--f;++R[--F]>f;)R[F]=0,F||(++P,R=[1].concat(R));for(L=R.length;!R[--L];);for(M=0,k="";M<=L;k+=x.charAt(R[M++]));k=po(k,P,x.charAt(0))}return k}})(),t=(function(){function m(A,f,C){var E,x,F,P,L=0,O=A.length,w=f%Bo,R=f/Bo|0;for(A=A.slice();O--;)F=A[O]%Bo,P=A[O]/Bo|0,E=R*F+P*w,x=w*F+E%Bo*Bo+L,L=(x/C|0)+(E/Bo|0)+R*P,A[O]=x%C;return L&&(A=[L].concat(A)),A}function b(A,f,C,E){var x,F;if(C!=E)F=C>E?1:-1;else for(x=F=0;x<C;x++)if(A[x]!=f[x]){F=A[x]>f[x]?1:-1;break}return F}function k(A,f,C,E){for(var x=0;C--;)A[C]-=x,x=A[C]<f[C]?1:0,A[C]=x*E+A[C]-f[C];for(;!A[0]&&A.length>1;A.splice(0,1));}return function(A,f,C,E,x){var F,P,L,O,w,R,W,M,oe,X,ne,xe,Ee,nt,Pe,ge,dt,fe=A.s==f.s?1:-1,ce=A.c,pe=f.c;if(!ce||!ce[0]||!pe||!pe[0])return new v(!A.s||!f.s||(ce?pe&&ce[0]==pe[0]:!pe)?NaN:ce&&ce[0]==0||!pe?fe*0:fe/0);for(M=new v(fe),oe=M.c=[],P=A.e-f.e,fe=C+P+1,x||(x=Mr,P=xr(A.e/He)-xr(f.e/He),fe=fe/He|0),L=0;pe[L]==(ce[L]||0);L++);if(pe[L]>(ce[L]||0)&&P--,fe<0)oe.push(1),O=!0;else{for(nt=ce.length,ge=pe.length,L=0,fe+=2,w=hr(x/(pe[0]+1)),w>1&&(pe=m(pe,w,x),ce=m(ce,w,x),ge=pe.length,nt=ce.length),Ee=ge,X=ce.slice(0,ge),ne=X.length;ne<ge;X[ne++]=0);dt=pe.slice(),dt=[0].concat(dt),Pe=pe[0],pe[1]>=x/2&&Pe++;do{if(w=0,F=b(pe,X,ge,ne),F<0){if(xe=X[0],ge!=ne&&(xe=xe*x+(X[1]||0)),w=hr(xe/Pe),w>1)for(w>=x&&(w=x-1),R=m(pe,w,x),W=R.length,ne=X.length;b(R,X,W,ne)==1;)w--,k(R,ge<W?dt:pe,W,x),W=R.length,F=1;else w==0&&(F=w=1),R=pe.slice(),W=R.length;if(W<ne&&(R=[0].concat(R)),k(X,R,ne,x),ne=X.length,F==-1)for(;b(pe,X,ge,ne)<1;)w++,k(X,ge<ne?dt:pe,ne,x),ne=X.length}else F===0&&(w++,X=[0]);oe[L++]=w,X[0]?X[ne++]=ce[Ee]||0:(X=[ce[Ee]],ne=1)}while((Ee++<nt||X[0]!=null)&&fe--);O=X[0]!=null,oe[0]||oe.splice(0,1)}if(x==Mr){for(L=1,fe=oe[0];fe>=10;fe/=10,L++);B(M,C+(M.e=L+P*He-1)+1,E,O)}else M.e=P,M.r=+O;return M}})();function D(m,b,k,A){var f,C,E,x,F;if(k==null?k=a:$t(k,0,8),!m.c)return m.toString();if(f=m.c[0],E=m.e,b==null)F=mr(m.c),F=A==1||A==2&&(E<=u||E>=c)?pc(F,E):po(F,E,"0");else if(m=B(new v(m),b,k),C=m.e,F=mr(m.c),x=F.length,A==1||A==2&&(b<=C||C<=u)){for(;x<b;F+="0",x++);F=pc(F,C)}else if(b-=E+(A===2&&C>E),F=po(F,C,"0"),C+1>x){if(--b>0)for(F+=".";b--;F+="0");}else if(b+=C-x,b>0)for(C+1==x&&(F+=".");b--;F+="0");return m.s<0&&f?"-"+F:F}function N(m,b){for(var k,A,f=1,C=new v(m[0]);f<m.length;f++)A=new v(m[f]),(!A.s||(k=si(C,A))===b||k===0&&C.s===b)&&(C=A);return C}function j(m,b,k){for(var A=1,f=b.length;!b[--f];b.pop());for(f=b[0];f>=10;f/=10,A++);return(k=A+k*He-1)>d?m.c=m.e=null:k<l?m.c=[m.e=0]:(m.e=k,m.c=b),m}r=(function(){var m=/^(-?)0([xbo])(?=\w[\w.]*$)/i,b=/^([^.]+)\.$/,k=/^\.([^.]+)$/,A=/^-?(Infinity|NaN)$/,f=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(C,E,x,F){var P,L=x?E:E.replace(f,"");if(A.test(L))C.s=isNaN(L)?null:L<0?-1:1;else{if(!x&&(L=L.replace(m,function(O,w,R){return P=(R=R.toLowerCase())=="x"?16:R=="b"?2:8,!F||F==P?w:O}),F&&(P=F,L=L.replace(b,"$1").replace(k,"0.$1")),E!=L))return new v(L,P);if(v.DEBUG)throw Error(Gn+"Not a"+(F?" base "+F:"")+" number: "+E);C.s=null}C.c=C.e=null}})();function B(m,b,k,A){var f,C,E,x,F,P,L,O=m.c,w=km;if(O){e:{for(f=1,x=O[0];x>=10;x/=10,f++);if(C=b-f,C<0)C+=He,E=b,F=O[P=0],L=hr(F/w[f-E-1]%10);else if(P=wm((C+1)/He),P>=O.length)if(A){for(;O.length<=P;O.push(0));F=L=0,f=1,C%=He,E=C-He+1}else break e;else{for(F=x=O[P],f=1;x>=10;x/=10,f++);C%=He,E=C-He+f,L=E<0?0:hr(F/w[f-E-1]%10)}if(A=A||b<0||O[P+1]!=null||(E<0?F:F%w[f-E-1]),A=k<4?(L||A)&&(k==0||k==(m.s<0?3:2)):L>5||L==5&&(k==4||A||k==6&&(C>0?E>0?F/w[f-E]:0:O[P-1])%10&1||k==(m.s<0?8:7)),b<1||!O[0])return O.length=0,A?(b-=m.e+1,O[0]=w[(He-b%He)%He],m.e=-b||0):O[0]=m.e=0,m;if(C==0?(O.length=P,x=1,P--):(O.length=P+1,x=w[He-C],O[P]=E>0?hr(F/w[f-E]%w[E])*x:0),A)for(;;)if(P==0){for(C=1,E=O[0];E>=10;E/=10,C++);for(E=O[0]+=x,x=1;E>=10;E/=10,x++);C!=x&&(m.e++,O[0]==Mr&&(O[0]=1));break}else{if(O[P]+=x,O[P]!=Mr)break;O[P--]=0,x=1}for(C=O.length;O[--C]===0;O.pop());}m.e>d?m.c=m.e=null:m.e<l&&(m.c=[m.e=0])}return m}function z(m){var b,k=m.e;return k===null?m.toString():(b=mr(m.c),b=k<=u||k>=c?pc(b,k):po(b,k,"0"),m.s<0?"-"+b:b)}return o.absoluteValue=o.abs=function(){var m=new v(this);return m.s<0&&(m.s=1),m},o.comparedTo=function(m,b){return si(this,new v(m,b))},o.decimalPlaces=o.dp=function(m,b){var k,A,f,C=this;if(m!=null)return $t(m,0,un),b==null?b=a:$t(b,0,8),B(new v(C),m+C.e+1,b);if(!(k=C.c))return null;if(A=((f=k.length-1)-xr(this.e/He))*He,f=k[f])for(;f%10==0;f/=10,A--);return A<0&&(A=0),A},o.dividedBy=o.div=function(m,b){return t(this,new v(m,b),s,a)},o.dividedToIntegerBy=o.idiv=function(m,b){return t(this,new v(m,b),0,1)},o.exponentiatedBy=o.pow=function(m,b){var k,A,f,C,E,x,F,P,L,O=this;if(m=new v(m),m.c&&!m.isInteger())throw Error(Gn+"Exponent not an integer: "+z(m));if(b!=null&&(b=new v(b)),x=m.e>14,!O.c||!O.c[0]||O.c[0]==1&&!O.e&&O.c.length==1||!m.c||!m.c[0])return L=new v(Math.pow(+z(O),x?m.s*(2-uc(m)):+z(m))),b?L.mod(b):L;if(F=m.s<0,b){if(b.c?!b.c[0]:!b.s)return new v(NaN);A=!F&&O.isInteger()&&b.isInteger(),A&&(O=O.mod(b))}else{if(m.e>9&&(O.e>0||O.e<-1||(O.e==0?O.c[0]>1||x&&O.c[1]>=24e7:O.c[0]<8e13||x&&O.c[0]<=9999975e7)))return C=O.s<0&&uc(m)?-0:0,O.e>-1&&(C=1/C),new v(F?1/C:C);h&&(C=wm(h/He+2))}for(x?(k=new v(.5),F&&(m.s=1),P=uc(m)):(f=Math.abs(+z(m)),P=f%2),L=new v(i);;){if(P){if(L=L.times(O),!L.c)break;C?L.c.length>C&&(L.c.length=C):A&&(L=L.mod(b))}if(f){if(f=hr(f/2),f===0)break;P=f%2}else if(m=m.times(k),B(m,m.e+1,1),m.e>14)P=uc(m);else{if(f=+z(m),f===0)break;P=f%2}O=O.times(O),C?O.c&&O.c.length>C&&(O.c.length=C):A&&(O=O.mod(b))}return A?L:(F&&(L=i.div(L)),b?L.mod(b):C?B(L,h,a,E):L)},o.integerValue=function(m){var b=new v(this);return m==null?m=a:$t(m,0,8),B(b,b.e+1,m)},o.isEqualTo=o.eq=function(m,b){return si(this,new v(m,b))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(m,b){return si(this,new v(m,b))>0},o.isGreaterThanOrEqualTo=o.gte=function(m,b){return(b=si(this,new v(m,b)))===1||b===0},o.isInteger=function(){return!!this.c&&xr(this.e/He)>this.c.length-2},o.isLessThan=o.lt=function(m,b){return si(this,new v(m,b))<0},o.isLessThanOrEqualTo=o.lte=function(m,b){return(b=si(this,new v(m,b)))===-1||b===0},o.isNaN=function(){return!this.s},o.isNegative=function(){return this.s<0},o.isPositive=function(){return this.s>0},o.isZero=function(){return!!this.c&&this.c[0]==0},o.minus=function(m,b){var k,A,f,C,E=this,x=E.s;if(m=new v(m,b),b=m.s,!x||!b)return new v(NaN);if(x!=b)return m.s=-b,E.plus(m);var F=E.e/He,P=m.e/He,L=E.c,O=m.c;if(!F||!P){if(!L||!O)return L?(m.s=-b,m):new v(O?E:NaN);if(!L[0]||!O[0])return O[0]?(m.s=-b,m):new v(L[0]?E:a==3?-0:0)}if(F=xr(F),P=xr(P),L=L.slice(),x=F-P){for((C=x<0)?(x=-x,f=L):(P=F,f=O),f.reverse(),b=x;b--;f.push(0));f.reverse()}else for(A=(C=(x=L.length)<(b=O.length))?x:b,x=b=0;b<A;b++)if(L[b]!=O[b]){C=L[b]<O[b];break}if(C&&(f=L,L=O,O=f,m.s=-m.s),b=(A=O.length)-(k=L.length),b>0)for(;b--;L[k++]=0);for(b=Mr-1;A>x;){if(L[--A]<O[A]){for(k=A;k&&!L[--k];L[k]=b);--L[k],L[A]+=Mr}L[A]-=O[A]}for(;L[0]==0;L.splice(0,1),--P);return L[0]?j(m,L,P):(m.s=a==3?-1:1,m.c=[m.e=0],m)},o.modulo=o.mod=function(m,b){var k,A,f=this;return m=new v(m,b),!f.c||!m.s||m.c&&!m.c[0]?new v(NaN):!m.c||f.c&&!f.c[0]?new v(f):(p==9?(A=m.s,m.s=1,k=t(f,m,0,3),m.s=A,k.s*=A):k=t(f,m,0,p),m=f.minus(k.times(m)),!m.c[0]&&p==1&&(m.s=f.s),m)},o.multipliedBy=o.times=function(m,b){var k,A,f,C,E,x,F,P,L,O,w,R,W,M,oe,X=this,ne=X.c,xe=(m=new v(m,b)).c;if(!ne||!xe||!ne[0]||!xe[0])return!X.s||!m.s||ne&&!ne[0]&&!xe||xe&&!xe[0]&&!ne?m.c=m.e=m.s=null:(m.s*=X.s,!ne||!xe?m.c=m.e=null:(m.c=[0],m.e=0)),m;for(A=xr(X.e/He)+xr(m.e/He),m.s*=X.s,F=ne.length,O=xe.length,F<O&&(W=ne,ne=xe,xe=W,f=F,F=O,O=f),f=F+O,W=[];f--;W.push(0));for(M=Mr,oe=Bo,f=O;--f>=0;){for(k=0,w=xe[f]%oe,R=xe[f]/oe|0,E=F,C=f+E;C>f;)P=ne[--E]%oe,L=ne[E]/oe|0,x=R*P+L*w,P=w*P+x%oe*oe+W[C]+k,k=(P/M|0)+(x/oe|0)+R*L,W[C--]=P%M;W[C]=k}return k?++A:W.splice(0,1),j(m,W,A)},o.negated=function(){var m=new v(this);return m.s=-m.s||null,m},o.plus=function(m,b){var k,A=this,f=A.s;if(m=new v(m,b),b=m.s,!f||!b)return new v(NaN);if(f!=b)return m.s=-b,A.minus(m);var C=A.e/He,E=m.e/He,x=A.c,F=m.c;if(!C||!E){if(!x||!F)return new v(f/0);if(!x[0]||!F[0])return F[0]?m:new v(x[0]?A:f*0)}if(C=xr(C),E=xr(E),x=x.slice(),f=C-E){for(f>0?(E=C,k=F):(f=-f,k=x),k.reverse();f--;k.push(0));k.reverse()}for(f=x.length,b=F.length,f-b<0&&(k=F,F=x,x=k,b=f),f=0;b;)f=(x[--b]=x[b]+F[b]+f)/Mr|0,x[b]=Mr===x[b]?0:x[b]%Mr;return f&&(x=[f].concat(x),++E),j(m,x,E)},o.precision=o.sd=function(m,b){var k,A,f,C=this;if(m!=null&&m!==!!m)return $t(m,1,un),b==null?b=a:$t(b,0,8),B(new v(C),m,b);if(!(k=C.c))return null;if(f=k.length-1,A=f*He+1,f=k[f]){for(;f%10==0;f/=10,A--);for(f=k[0];f>=10;f/=10,A++);}return m&&C.e+1>A&&(A=C.e+1),A},o.shiftedBy=function(m){return $t(m,-vm,vm),this.times("1e"+m)},o.squareRoot=o.sqrt=function(){var m,b,k,A,f,C=this,E=C.c,x=C.s,F=C.e,P=s+4,L=new v("0.5");if(x!==1||!E||!E[0])return new v(!x||x<0&&(!E||E[0])?NaN:E?C:1/0);if(x=Math.sqrt(+z(C)),x==0||x==1/0?(b=mr(E),(b.length+F)%2==0&&(b+="0"),x=Math.sqrt(+b),F=xr((F+1)/2)-(F<0||F%2),x==1/0?b="5e"+F:(b=x.toExponential(),b=b.slice(0,b.indexOf("e")+1)+F),k=new v(b)):k=new v(x+""),k.c[0]){for(F=k.e,x=F+P,x<3&&(x=0);;)if(f=k,k=L.times(f.plus(t(C,f,P,1))),mr(f.c).slice(0,x)===(b=mr(k.c)).slice(0,x))if(k.e<F&&--x,b=b.slice(x-3,x+1),b=="9999"||!A&&b=="4999"){if(!A&&(B(f,f.e+s+2,0),f.times(f).eq(C))){k=f;break}P+=4,x+=4,A=1}else{(!+b||!+b.slice(1)&&b.charAt(0)=="5")&&(B(k,k.e+s+2,1),m=!k.times(k).eq(C));break}}return B(k,k.e+s+1,a,m)},o.toExponential=function(m,b){return m!=null&&($t(m,0,un),m++),D(this,m,b,1)},o.toFixed=function(m,b){return m!=null&&($t(m,0,un),m=m+this.e+1),D(this,m,b)},o.toFormat=function(m,b,k){var A,f=this;if(k==null)m!=null&&b&&typeof b=="object"?(k=b,b=null):m&&typeof m=="object"?(k=m,m=b=null):k=S;else if(typeof k!="object")throw Error(Gn+"Argument not an object: "+k);if(A=f.toFixed(m,b),f.c){var C,E=A.split("."),x=+k.groupSize,F=+k.secondaryGroupSize,P=k.groupSeparator||"",L=E[0],O=E[1],w=f.s<0,R=w?L.slice(1):L,W=R.length;if(F&&(C=x,x=F,F=C,W-=C),x>0&&W>0){for(C=W%x||x,L=R.substr(0,C);C<W;C+=x)L+=P+R.substr(C,x);F>0&&(L+=P+R.slice(C)),w&&(L="-"+L)}A=O?L+(k.decimalSeparator||"")+((F=+k.fractionGroupSize)?O.replace(new RegExp("\\d{"+F+"}\\B","g"),"$&"+(k.fractionGroupSeparator||"")):O):L}return(k.prefix||"")+A+(k.suffix||"")},o.toFraction=function(m){var b,k,A,f,C,E,x,F,P,L,O,w,R=this,W=R.c;if(m!=null&&(x=new v(m),!x.isInteger()&&(x.c||x.s!==1)||x.lt(i)))throw Error(Gn+"Argument "+(x.isInteger()?"out of range: ":"not an integer: ")+z(x));if(!W)return new v(R);for(b=new v(i),P=k=new v(i),A=F=new v(i),w=mr(W),C=b.e=w.length-R.e-1,b.c[0]=km[(E=C%He)<0?He+E:E],m=!m||x.comparedTo(b)>0?C>0?b:P:x,E=d,d=1/0,x=new v(w),F.c[0]=0;L=t(x,b,0,1),f=k.plus(L.times(A)),f.comparedTo(m)!=1;)k=A,A=f,P=F.plus(L.times(f=P)),F=f,b=x.minus(L.times(f=b)),x=f;return f=t(m.minus(k),A,0,1),F=F.plus(f.times(P)),k=k.plus(f.times(A)),F.s=P.s=R.s,C=C*2,O=t(P,A,C,a).minus(R).abs().comparedTo(t(F,k,C,a).minus(R).abs())<1?[P,A]:[F,k],d=E,O},o.toNumber=function(){return+z(this)},o.toPrecision=function(m,b){return m!=null&&$t(m,1,un),D(this,m,b,2)},o.toString=function(m){var b,k=this,A=k.s,f=k.e;return f===null?A?(b="Infinity",A<0&&(b="-"+b)):b="NaN":(m==null?b=f<=u||f>=c?pc(mr(k.c),f):po(mr(k.c),f,"0"):m===10&&I?(k=B(new v(k),s+f+1,a),b=po(mr(k.c),k.e,"0")):($t(m,2,T.length,"Base"),b=n(po(mr(k.c),f,"0"),10,m,A,!0)),A<0&&k.c[0]&&(b="-"+b)),b},o.valueOf=o.toJSON=function(){return z(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,e!=null&&v.set(e),v}function xr(e){var t=e|0;return e>0||e===t?t:t-1}function mr(e){for(var t,n,r=1,o=e.length,i=e[0]+"";r<o;){for(t=e[r++]+"",n=He-t.length;n--;t="0"+t);i+=t}for(o=i.length;i.charCodeAt(--o)===48;);return i.slice(0,o+1||1)}function si(e,t){var n,r,o=e.c,i=t.c,s=e.s,a=t.s,u=e.e,c=t.e;if(!s||!a)return null;if(n=o&&!o[0],r=i&&!i[0],n||r)return n?r?0:-a:s;if(s!=a)return s;if(n=s<0,r=u==c,!o||!i)return r?0:!o^n?1:-1;if(!r)return u>c^n?1:-1;for(a=(u=o.length)<(c=i.length)?u:c,s=0;s<a;s++)if(o[s]!=i[s])return o[s]>i[s]^n?1:-1;return u==c?0:u>c^n?1:-1}function $t(e,t,n,r){if(e<t||e>n||e!==hr(e))throw Error(Gn+(r||"Argument")+(typeof e=="number"?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function uc(e){var t=e.c.length-1;return xr(e.e/He)==t&&e.c[t]%2!=0}function pc(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function po(e,t,n){var r,o;if(t<0){for(o=n+".";++t;o+=n);e=o+e}else if(r=e.length,++t>r){for(o=n,t-=r;--t;o+=n);e+=o}else t<r&&(e=e.slice(0,t)+"."+e.slice(t));return e}var oN=Kv(),Xv=oN;var iN=24,ia=32,sN=()=>typeof globalThis<"u"&&globalThis.crypto&&typeof globalThis.crypto.getRandomValues=="function"?()=>{let e=new Uint32Array(1);return globalThis.crypto.getRandomValues(e),e[0]/4294967296}:Math.random,Tm=sN(),Cm=(e=4,t=Tm)=>{let n="";for(;n.length<e;)n=n+Math.floor(t()*36).toString(36);return n};function aN(e){let t=new Xv(0);for(let n of e.values())t=t.multipliedBy(256).plus(n);return t}var Jv=(e="")=>{let t=new TextEncoder;return aN(qv(t.encode(e))).toString(36).slice(1)},Qv=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),lN=e=>Qv[Math.floor(e()*Qv.length)],cN=({globalObj:e=typeof global<"u"?global:typeof window<"u"?window:{},random:t=Tm}={})=>{let n=Object.keys(e).toString(),r=n.length?n+Cm(ia,t):Cm(ia,t);return Jv(r).substring(0,ia)},uN=e=>()=>e++,pN=476782367,Zv=({random:e=Tm,counter:t=uN(Math.floor(e()*pN)),length:n=iN,fingerprint:r=cN({random:e})}={})=>{if(n>ia)throw new Error(`Length must be between 2 and ${ia}. Received: ${n}`);return function(){let i=lN(e),s=Date.now().toString(36),a=t().toString(36),u=Cm(n,e),c=`${s+u+a+r}`;return`${i+Jv(c).substring(1,n)}`}},Do=dN(Zv);function dN(e){let t;return()=>(t||(t=e()),t())}var mN=tl(nk());cn();Oe();var dc=/\[([^\]]+)\]\s*\[([^\]]+)\]\s*\[([^\]]+)\]\s*-\s*(.+)/g;function hN(e){return e.replace(/\*\*/g,"").replace(/\*/g,"").replace(/__/g,"").replace(/_/g," ").trim()}function Im(e,t){let n=[],r=e.split(`
|
|
15
15
|
`);for(let s=0;s<r.length;s++){let a=hN(r[s]),u=dc.exec(a);if(u){let[,c,l,,d]=u,g=xN(l),p=yN(r,s+1),h={id:Do(),reviewId:t,type:c.trim(),severity:g,title:d.trim(),description:p.description,file:p.file,lineNumber:p.lineNumber,property:p.property,currentValue:p.currentValue,suggestedValue:p.suggestedValue,suggestedCode:p.suggestedCode,suggestedFix:p.suggestedFix,fixTarget:p.fixTarget,fixRequired:p.fixRequired,status:"pending",selectedForFix:!1,createdAt:new Date};n.push(h)}dc.lastIndex=0}return n.map(s=>{let a=Gs(s);return a.dismissed?(y.debug(`[parseIssues] Auto-dismissed: ${s.title} - ${a.dismissReason}`),{...s,dismissed:!0,dismissReason:a.dismissReason,dismissedBy:a.dismissedBy,dismissedAt:new Date}):s})}function xN(e){let t=e.toLowerCase().trim();return t.includes("critical")||t.includes("high")?"critical":t.includes("major")||t.includes("medium")?"major":"minor"}function yN(e,t){let n={description:"",file:void 0,lineNumber:void 0,property:void 0,currentValue:void 0,suggestedValue:void 0,suggestedCode:void 0,suggestedFix:void 0,fixTarget:void 0,fixRequired:void 0},r=[];for(let o=t;o<e.length;o++){let i=e[o].trim();if(!i||dc.test(i)){dc.lastIndex=0;break}if(i.startsWith("Expected:"))n.suggestedValue=i.replace("Expected:","").trim();else if(i.startsWith("Actual:")||i.startsWith("Current:"))n.currentValue=i.replace(/^(Actual|Current):/,"").trim();else if(i.startsWith("File:")){let s=i.replace("File:","").trim(),a=s.match(/^(.+?):(\d+)$/);a?(n.file=a[1],n.lineNumber=parseInt(a[2],10)):n.file=s}else if(i.startsWith("Property:"))n.property=i.replace("Property:","").trim();else if(i.startsWith("FixTarget:")){let s=i.replace("FixTarget:","").trim().toLowerCase();(s==="css"||s==="component")&&(n.fixTarget=s)}else if(i.startsWith("FixRequired:")){let s=i.replace("FixRequired:","").trim().toLowerCase();n.fixRequired=s==="true"}else if(i.startsWith("Fix:"))n.suggestedFix=i.replace("Fix:","").trim();else if(i.startsWith("```")){let s=[];for(o++;o<e.length&&!e[o].trim().startsWith("```");)s.push(e[o]),o++;n.suggestedCode=s.join(`
|
|
16
|
-
`)}else r.push(i)}return n.description=r.join(" ").trim(),n}Oe();var sa=null,rk=0,bN=3e4;async function SN(){let e=Date.now();if(sa&&e-rk<bN)return sa;try{let t=await fetch("/index.json");if(!t.ok)throw new Error(`Failed to fetch index.json: ${t.status}`);let n=await t.json();return sa=n.entries||n.stories||{},rk=e,y.debug("[storyFilePaths] Fetched index.json, entries:",Object.keys(sa).length),sa}catch(t){throw y.error("[storyFilePaths] Error fetching index.json:",t),t}}async function aa(e){try{let n=(await SN())[e];if(!n?.importPath)return y.warn("[storyFilePaths] No importPath found for story:",e),null;let r=n.importPath;y.debug("[storyFilePaths] Found importPath:",r);let o=r.replace(/^\.\//,""),i;n.componentPath?(i=n.componentPath.replace(/^\.\//,""),y.debug("[storyFilePaths] Using Storybook componentPath:",i)):(i=`${o.replace(/\.stories\.tsx$/,"").replace(/\.stories\.ts$/,"").replace(/\.stories\.jsx$/,"").replace(/\.stories\.js$/,"")}.tsx`,y.debug("[storyFilePaths] Derived componentFile:",i));let s=i.replace(/\.tsx$/,".css").replace(/\.ts$/,".css").replace(/\.jsx$/,".css").replace(/\.js$/,".css"),a=i.substring(0,i.lastIndexOf("/")),u={storyFile:o,componentFile:i,cssFile:s,baseDir:a};return y.debug("[storyFilePaths] Final paths:",u),u}catch(t){return y.error("[storyFilePaths] Error getting file paths:",t),null}}function Fm(e,t){if(e==="css")return t.cssFile;if(e==="component")return t.componentFile;if(e==="story")return t.storyFile}function wN(e,t){let n=e.toLowerCase().trim();return["color","spacing","typography","dimension","border","shadow","layout","background","font","size","margin","padding"].some(i=>n.includes(i))?t.cssFile:t.componentFile}function Em(e,t){let n=e.property?.toLowerCase()||"",r=e.domElement?.toLowerCase()||"",o=r.startsWith("svg"),i=r.startsWith("img"),s=n==="width"||n==="height",a=/\[(?:width|height)=/.test(r);return(o||i)&&s||a?(y.debug(`[storyFilePaths] \u{1F50D} INLINE ATTRIBUTE: domElement="${e.domElement}", property="${e.property}" \u2192 component file`),t.componentFile):wN(e.type,t)}cn();Oe();function vN(e){let t=(e.description||"").toLowerCase(),n=(e.title||"").toLowerCase(),r=`${t} ${n}`;return r.includes("inner icon")||r.includes("inner vector")?"inner-icon":r.includes("second icon")?"icon-2":r.includes("first icon")?"icon-1":r.includes("icon")||r.includes("vector")||r.includes("svg")?"icon":r.includes("button")?"button":r.includes("text")||r.includes("label")?"text":r.includes("container")||r.includes("wrapper")?"container":"other"}function kN(e){let t=(e.property||"").toLowerCase(),n=(e.description||"").toLowerCase();return t.includes("width")||t.includes("height")||t.includes("size")||t.includes("dimensions")?"dimensions":t.includes("padding")||t.includes("margin")||t.includes("gap")?"spacing":t.includes("color")||t.includes("background")||t.includes("fill")?"colors":t.includes("font")||t.includes("text")||t.includes("line-height")?"typography":t.includes("border")||t.includes("radius")?"border":n.includes("overall")||n.includes("visual fidelity")||n.includes("pixel similarity")||t.includes("overall")?"summary":"other"}function CN(e){let t=(e.property||"").toLowerCase(),n=(e.description||"").toLowerCase();return t.includes("overall")||t.includes("visual fidelity")||n.includes("pixel similarity score")||n.includes("primarily explained by")||n.includes("visual discrepancy")}function TN(e,t,n){let r={critical:3,major:2,minor:1},i=[...e].sort((c,l)=>(r[l.severity]||0)-(r[c.severity]||0))[0],s=e.length,a,u;if(t.includes("icon")&&n==="dimensions"){let c=e.map(d=>d.currentValue).filter(Boolean),l=e.map(d=>d.suggestedValue).filter(Boolean);a=`Icon sizing is incorrect (${s} related issues)`,u=`Icons are rendered at wrong dimensions. Current: ${c[0]||"10px"}, Expected: ${l[0]||"20px"}. This single CSS fix will resolve all ${s} icon dimension issues.`}else a=`${t} ${n} issues (${s} related)`,u=`${s} related ${n} issues for ${t}. ${i.description}`;return{...i,id:`merged-${t}-${n}-${i.id}`,title:a,description:u,currentValue:i.currentValue,suggestedValue:i.suggestedValue,mergedCount:s,mergedIssueIds:e.map(c=>c.id)}}function Am(e){if(!e||e.length===0)return[];let t=e.filter(i=>!CN(i)),n=[],r=[];for(let i of t){let s=vN(i),a=kN(i);s.includes("icon")&&a==="dimensions"?n.push(i):r.push(i)}let o=[];return n.length>0&&(n.length===1?o.push(n[0]):o.push(TN(n,"icon","dimensions"))),o.push(...r),y.debug("[deduplicateIssues] Input:",e.length,"issues, Output:",o.length,"issues"),y.debug("[deduplicateIssues] Removed",e.length-t.length,"summary issues"),y.debug("[deduplicateIssues] Merged",n.length,"icon issues into",n.length>0?1:0),o}Oe();cn();var IN=[/Failed to fetch/i,/NetworkError/i,/network request failed/i,/load failed/i,/ERR_(NETWORK|INTERNET|CONNECTION|NAME_NOT_RESOLVED)/i,/timed out/i,/aborted/i],FN=[/credits?/i,/Rate limit/i,/Figma connection expired/i,/Map.*to Figma|Figma mapping required/i,/No project selected/i,/Not authenticated/i,/No story/i,/Monthly review limit/i,/Upgrade your plan/i];function ok(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"Review failed";return FN.some(n=>n.test(t))?t:IN.some(n=>n.test(t))?`Can't reach ${At.NAME}. Check your internet connection and try again. If the dashboard URL is wrong, fix it in Settings.`:/Unauthorized|401/i.test(t)?"Your session expired. Sign out and back in from Settings to continue.":/Internal Server Error|5\d\d|server error/i.test(t)?`${At.NAME}'s servers had a hiccup. Try the review again in a moment. If it keeps failing, send feedback.`:/parsing|SSE|stream|structured result|failed to receive/i.test(t)?"Review completed but the result was malformed. Try again, or send feedback if it keeps happening.":`Review failed: ${t}. Try again, or send feedback if this keeps happening.`}_e();import{addons as Vi}from"storybook/manager-api";var Pm="uireview/badge",Hi={REVIEW_START:"uireview/review-start",REVIEW_COMPLETE:"uireview/review-complete",REVIEW_ERROR:"uireview/review-error"};function EN(e){return e.score<70?"status-value:error":e.score<90?"status-value:warning":"status-value:success"}function AN(e){let t=[`Score: ${e.score}`];return e.criticalCount>0&&t.push(`${e.criticalCount} critical`),e.majorCount>0&&t.push(`${e.majorCount} major`),e.minorCount>0&&t.push(`${e.minorCount} minor`),t.join(" \xB7 ")}function PN(e){return e.score>=90?`\u2713 Score ${e.score}`:e.score>=70?`\u26A0 Score ${e.score}`:`\u2717 Score ${e.score}`}function Wi(){try{let e=localStorage.getItem("uicopilot_feature_flags");return e?!!JSON.parse(e).enableReviewBadges:!1}catch{return!1}}function ak(e){if(Wi())try{Vi.getChannel().emit(Hi.REVIEW_START,{storyId:e})}catch{}}function Wr(e,t){if(Wi())try{Vi.getChannel().emit(Hi.REVIEW_COMPLETE,{storyId:e,summary:t})}catch{}}function lk(e){if(Wi())try{Vi.getChannel().emit(Hi.REVIEW_ERROR,{storyId:e})}catch{}}function ik(e){try{typeof e.unset=="function"?e.unset():typeof e.set=="function"&&e.set([])}catch{}}var sk=null;function ck(e){if(sk!==null)return;let t=Vi.getChannel(),n=o=>i=>{Wi()&&o(i)};t.on(Hi.REVIEW_START,n(({storyId:o})=>{e.set([{value:"status-value:pending",typeId:Pm,storyId:o,title:"Reviewing...",description:"AI review in progress"}])})),t.on(Hi.REVIEW_COMPLETE,n(({storyId:o,summary:i})=>{e.set([{value:EN(i),typeId:Pm,storyId:o,title:PN(i),description:AN(i)}])})),t.on(Hi.REVIEW_ERROR,n(({storyId:o})=>{e.set([{value:"status-value:error",typeId:Pm,storyId:o,title:"Review Failed",description:"An error occurred during review"}])}));let r=Wi();r||ik(e),sk=setInterval(()=>{let o=Wi();o!==r&&(r=o,o||ik(e))},1500)}var LN="uireview/mapped",uk="uireview/mappings-updated";function pk(e){try{Vi.getChannel().emit(uk,{storyIds:e})}catch{}}function dk(e){Vi.getChannel().on(uk,({storyIds:n})=>{n.length&&e.set(n.map(r=>({value:"status-value:success",typeId:LN,storyId:r,title:"\u2713 Linked to Figma",description:"Story has a Figma mapping"})))})}var Lm=K(),Mm=180;function Ro(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="object"){let t=e;if("value"in t&&typeof t.value=="string")return t.value;if("top"in t||"left"in t){let n=[t.top,t.right,t.bottom,t.left].filter(Boolean);if(n.length>0)return n.join(" ")}return JSON.stringify(e)}return String(e)}var Bm=()=>{let{isReviewing:e,reviewError:t,reviewResults:n,showReviewMenu:r,severityFilter:o,showStreamingPanel:i,streamingPanelCollapsed:s,streamingMessages:a,streamingProgress:u,streamingStatus:c,selectedModels:l,setIsReviewing:d,setReviewingStoryId:g,setReviewError:p,setReviewResults:h,setShowReviewMenu:S,setSeverityFilter:T,setShowStreamingPanel:I,setStreamingPanelCollapsed:v,addStreamingMessage:D,updateStreamingMessage:N,clearStreamingMessages:j,setStreamingProgress:B,setStreamingStatus:z,setFullPrompt:m,setFullResponse:b,setFigmaImageUrl:k,storybookImageUrl:A,setStorybookImageUrl:f,setFigmaDimensions:C,setMultiModelResults:E,updateMultiModelStreamingMessages:x,setModelCompleted:F,setActiveModelId:P,resetReview:M,addReview:O,setReviewDetailTab:w,includeTextComparison:R,usePromptCache:W,setApplyFixesResult:L,featureFlags:oe,roleOverride:X,setPendingSettingsOpen:ne}=ue(),{sessionToken:xe,usageData:Ee,setUsageData:nt}=ve(),{selectedProjectId:Pe}=Xe(),{currentStoryId:ge,currentStoryName:dt}=Ze(),fe=gc(Ee);fe.current=Ee;let ce=gc(null),pe=gc(null),at=gc({}),It=la((lt,ie)=>{D({role:lt,content:ie})},[D]),gt=la((lt,ie)=>{B(lt),z(ie)},[B,z]),On=la(async lt=>{let{isIteration:ie=!1,parentReviewId:J=null}=lt||{};if(!xe)throw new Error("Not authenticated");if(!Pe)throw new Error("No project selected");if(!ge||!dt)throw new Error("No story is currently selected in Storybook");if(e){y.debug("[useAIReview] Review already in progress, ignoring duplicate request");return}let me=Date.now();try{d(!0),g(ge),p(null),h(null),w("issues"),L(null),ge&&oe.enableReviewBadges&&ak(ge),pe.current&&clearTimeout(pe.current),pe.current=setTimeout(()=>{y.debug(`[useAIReview] Auto-stopping review after ${Mm}s timeout`),ce.current&&ce.current.abort(),D({role:"system",content:`Review auto-stopped after ${Mm} seconds timeout.`})},Mm*1e3),m(""),b(""),I(!0),v(!1),j(),gt(0,"Starting review..."),gt(5,"Refreshing component preview..."),y.debug("[Review] Forcing iframe reload for fresh styles..."),await sc(),y.debug("[Review] Iframe reloaded, styles should be fresh"),gt(20,"Capturing screenshot & extracting styles..."),y.debug("[Review] Starting parallel data collection...");let[$,_,G]=await Promise.all([oc({sessionToken:xe||void 0}),Promise.resolve(ra()),Promise.resolve(fm())]);if($&&$!==A&&(f($),y.debug("[Review] Storybook screenshot captured and set")),!_)throw new Error("Failed to extract styles from component");let{computed:q,declared:V,markup:he,textElementStyles:Te,nestedElementStyles:Sn}=_;G?y.debug("[Review] DOM tree extracted:",{selector:G.selector,childrenCount:G.children.length}):(y.error("[Review] DOM tree extraction FAILED - domTree is null"),y.error("[Review] This will cause AI to use comparison table instead of tree comparison")),gt(50,"Preparing metadata..."),y.debug("[Review] Current story:",{id:ge,name:dt});let Dt=bt.getState().currentMapping?.figmaNodeId??null,kr=bt.getState().figmaImageUrl;if(Dt&&(y.debug("[Review] Using Figma node ID from store:",Dt),kr&&(gt(65,"Using existing Figma design..."),y.debug("[Review] Reusing already-loaded Figma image"))),!Dt)try{let Ke=await fetch(`${Lm}/api/mappings?projectId=${Pe}&storyId=${ge}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${xe}`}});if(Ke.ok){let _t=await Ke.json();_t.mapping?.figmaNodeId?(Dt=_t.mapping.figmaNodeId,y.debug("[Review] Found Figma node ID from API:",Dt)):y.debug("[Review] No mapping found for story:",ge)}else y.debug("[Review] Failed to fetch mapping:",Ke.status)}catch(Ke){y.error("[Review] Error fetching mapping:",Ke)}if(Dt&&!kr){gt(65,"Fetching Figma design...");try{let Ke=await fetch(`${Lm}/api/figma/frames?projectId=${Pe}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${xe}`}});if(Ke.ok){let Ht=(await Ke.json()).thumbnails?.[Dt];Ht?(k(Ht),y.debug("[Review] Figma thumbnail fetched and displayed:",Ht)):y.warn("[Review] No thumbnail found for node:",Dt)}else y.warn("[Review] Failed to fetch Figma frames:",Ke.status)}catch(Ke){y.error("[Review] Error fetching Figma frames:",Ke)}}if(!Dt)throw new Error('Figma mapping required. Please link this story to a Figma frame using the "Map to Figma" button before reviewing.');gt(80,"AI is analyzing your component..."),y.debug("[Review] Sending to streaming API...");let wn={projectId:Pe,storyId:ge,storyName:dt,storybookScreenshot:$,computedStyles:q,declaredStyles:V,textElementStyles:Te,nestedElementStyles:Sn,componentMarkup:he,domTree:G,figmaNodeId:Dt,figmaImageUrl:kr||void 0,aiModels:l,includeTextComparison:R,usePromptCache:W,parentReviewId:ie?J:void 0,isIteration:ie};y.debug("[Review] Request payload:",{...wn,storybookScreenshot:$?`${$.substring(0,50)}...`:null,domTree:G?{selector:G.selector,childrenCount:G.children.length}:null}),ce.current=new AbortController;let Pn=await fetch(`${Lm}/api/review/stream`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",Authorization:`Bearer ${xe}`,...ac(X)},body:JSON.stringify(wn),signal:ce.current.signal});if(y.debug("[Review] Response status:",Pn.status,Pn.statusText),!Pn.ok){let Ke=await Pn.json();if(y.error("[Review] API error response:",Ke),Pn.status===429){let _t=Ke.retryAfter||60;throw new Error(`Rate limit exceeded. Please wait ${_t} seconds before trying again.`)}if(Pn.status===402){if(Ke.code==="INSUFFICIENT_CREDITS"){let _t=Ke.details?.required??1,Ht=Ke.details?.balance??0;throw new Error(`Not enough credits. This review requires ${_t} credit(s) but you have ${Ht}. Visit Settings to add more.`)}throw Ke.code==="SUBSCRIPTION_LIMIT_EXCEEDED"?new Error(Ke.message||"Monthly review limit reached. Upgrade your plan to continue."):new Error(Ke.message||"Payment required")}throw Pn.status===401&&Ke.code==="FIGMA_AUTH_EXPIRED"?(ne(!0),new Error("Figma connection expired. Reconnect your Figma account in Settings to continue.")):new Error(Ke.error||Ke.message||"Review request failed")}let lr=Pn.body?.getReader(),wE=new TextDecoder,Iu="",wo="",$e=null,Fu=null,Ty=l.length>1,Qo={},hs={},D9={};if(!lr)throw new Error("Response body is not readable");let Iy=bt.getState().streamingMessages.length;for(It("assistant","");;){let{done:Ke,value:_t}=await lr.read();if(Ke)break;Iu+=wE.decode(_t,{stream:!0});let Ht=Iu.split(`
|
|
16
|
+
`)}else r.push(i)}return n.description=r.join(" ").trim(),n}Oe();var sa=null,rk=0,bN=3e4;async function SN(){let e=Date.now();if(sa&&e-rk<bN)return sa;try{let t=await fetch("/index.json");if(!t.ok)throw new Error(`Failed to fetch index.json: ${t.status}`);let n=await t.json();return sa=n.entries||n.stories||{},rk=e,y.debug("[storyFilePaths] Fetched index.json, entries:",Object.keys(sa).length),sa}catch(t){throw y.error("[storyFilePaths] Error fetching index.json:",t),t}}async function aa(e){try{let n=(await SN())[e];if(!n?.importPath)return y.warn("[storyFilePaths] No importPath found for story:",e),null;let r=n.importPath;y.debug("[storyFilePaths] Found importPath:",r);let o=r.replace(/^\.\//,""),i;n.componentPath?(i=n.componentPath.replace(/^\.\//,""),y.debug("[storyFilePaths] Using Storybook componentPath:",i)):(i=`${o.replace(/\.stories\.tsx$/,"").replace(/\.stories\.ts$/,"").replace(/\.stories\.jsx$/,"").replace(/\.stories\.js$/,"")}.tsx`,y.debug("[storyFilePaths] Derived componentFile:",i));let s=i.replace(/\.tsx$/,".css").replace(/\.ts$/,".css").replace(/\.jsx$/,".css").replace(/\.js$/,".css"),a=i.substring(0,i.lastIndexOf("/")),u={storyFile:o,componentFile:i,cssFile:s,baseDir:a};return y.debug("[storyFilePaths] Final paths:",u),u}catch(t){return y.error("[storyFilePaths] Error getting file paths:",t),null}}function Fm(e,t){if(e==="css")return t.cssFile;if(e==="component")return t.componentFile;if(e==="story")return t.storyFile}function wN(e,t){let n=e.toLowerCase().trim();return["color","spacing","typography","dimension","border","shadow","layout","background","font","size","margin","padding"].some(i=>n.includes(i))?t.cssFile:t.componentFile}function Em(e,t){let n=e.property?.toLowerCase()||"",r=e.domElement?.toLowerCase()||"",o=r.startsWith("svg"),i=r.startsWith("img"),s=n==="width"||n==="height",a=/\[(?:width|height)=/.test(r);return(o||i)&&s||a?(y.debug(`[storyFilePaths] \u{1F50D} INLINE ATTRIBUTE: domElement="${e.domElement}", property="${e.property}" \u2192 component file`),t.componentFile):wN(e.type,t)}cn();Oe();function vN(e){let t=(e.description||"").toLowerCase(),n=(e.title||"").toLowerCase(),r=`${t} ${n}`;return r.includes("inner icon")||r.includes("inner vector")?"inner-icon":r.includes("second icon")?"icon-2":r.includes("first icon")?"icon-1":r.includes("icon")||r.includes("vector")||r.includes("svg")?"icon":r.includes("button")?"button":r.includes("text")||r.includes("label")?"text":r.includes("container")||r.includes("wrapper")?"container":"other"}function kN(e){let t=(e.property||"").toLowerCase(),n=(e.description||"").toLowerCase();return t.includes("width")||t.includes("height")||t.includes("size")||t.includes("dimensions")?"dimensions":t.includes("padding")||t.includes("margin")||t.includes("gap")?"spacing":t.includes("color")||t.includes("background")||t.includes("fill")?"colors":t.includes("font")||t.includes("text")||t.includes("line-height")?"typography":t.includes("border")||t.includes("radius")?"border":n.includes("overall")||n.includes("visual fidelity")||n.includes("pixel similarity")||t.includes("overall")?"summary":"other"}function CN(e){let t=(e.property||"").toLowerCase(),n=(e.description||"").toLowerCase();return t.includes("overall")||t.includes("visual fidelity")||n.includes("pixel similarity score")||n.includes("primarily explained by")||n.includes("visual discrepancy")}function TN(e,t,n){let r={critical:3,major:2,minor:1},i=[...e].sort((c,l)=>(r[l.severity]||0)-(r[c.severity]||0))[0],s=e.length,a,u;if(t.includes("icon")&&n==="dimensions"){let c=e.map(d=>d.currentValue).filter(Boolean),l=e.map(d=>d.suggestedValue).filter(Boolean);a=`Icon sizing is incorrect (${s} related issues)`,u=`Icons are rendered at wrong dimensions. Current: ${c[0]||"10px"}, Expected: ${l[0]||"20px"}. This single CSS fix will resolve all ${s} icon dimension issues.`}else a=`${t} ${n} issues (${s} related)`,u=`${s} related ${n} issues for ${t}. ${i.description}`;return{...i,id:`merged-${t}-${n}-${i.id}`,title:a,description:u,currentValue:i.currentValue,suggestedValue:i.suggestedValue,mergedCount:s,mergedIssueIds:e.map(c=>c.id)}}function Am(e){if(!e||e.length===0)return[];let t=e.filter(i=>!CN(i)),n=[],r=[];for(let i of t){let s=vN(i),a=kN(i);s.includes("icon")&&a==="dimensions"?n.push(i):r.push(i)}let o=[];return n.length>0&&(n.length===1?o.push(n[0]):o.push(TN(n,"icon","dimensions"))),o.push(...r),y.debug("[deduplicateIssues] Input:",e.length,"issues, Output:",o.length,"issues"),y.debug("[deduplicateIssues] Removed",e.length-t.length,"summary issues"),y.debug("[deduplicateIssues] Merged",n.length,"icon issues into",n.length>0?1:0),o}Oe();cn();var IN=[/Failed to fetch/i,/NetworkError/i,/network request failed/i,/load failed/i,/ERR_(NETWORK|INTERNET|CONNECTION|NAME_NOT_RESOLVED)/i,/timed out/i,/aborted/i],FN=[/credits?/i,/Rate limit/i,/Figma connection expired/i,/Map.*to Figma|Figma mapping required/i,/No project selected/i,/Not authenticated/i,/No story/i,/Monthly review limit/i,/Upgrade your plan/i];function ok(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"Review failed";return FN.some(n=>n.test(t))?t:IN.some(n=>n.test(t))?`Can't reach ${At.NAME}. Check your internet connection and try again. If the dashboard URL is wrong, fix it in Settings.`:/Unauthorized|401/i.test(t)?"Your session expired. Sign out and back in from Settings to continue.":/Internal Server Error|5\d\d|server error/i.test(t)?`${At.NAME}'s servers had a hiccup. Try the review again in a moment. If it keeps failing, send feedback.`:/parsing|SSE|stream|structured result|failed to receive/i.test(t)?"Review completed but the result was malformed. Try again, or send feedback if it keeps happening.":`Review failed: ${t}. Try again, or send feedback if this keeps happening.`}_e();import{addons as Vi}from"storybook/manager-api";var Pm="uireview/badge",Hi={REVIEW_START:"uireview/review-start",REVIEW_COMPLETE:"uireview/review-complete",REVIEW_ERROR:"uireview/review-error"};function EN(e){return e.score<70?"status-value:error":e.score<90?"status-value:warning":"status-value:success"}function AN(e){let t=[`Score: ${e.score}`];return e.criticalCount>0&&t.push(`${e.criticalCount} critical`),e.majorCount>0&&t.push(`${e.majorCount} major`),e.minorCount>0&&t.push(`${e.minorCount} minor`),t.join(" \xB7 ")}function PN(e){return e.score>=90?`\u2713 Score ${e.score}`:e.score>=70?`\u26A0 Score ${e.score}`:`\u2717 Score ${e.score}`}function Wi(){try{let e=localStorage.getItem("uicopilot_feature_flags");return e?!!JSON.parse(e).enableReviewBadges:!1}catch{return!1}}function ak(e){if(Wi())try{Vi.getChannel().emit(Hi.REVIEW_START,{storyId:e})}catch{}}function Wr(e,t){if(Wi())try{Vi.getChannel().emit(Hi.REVIEW_COMPLETE,{storyId:e,summary:t})}catch{}}function lk(e){if(Wi())try{Vi.getChannel().emit(Hi.REVIEW_ERROR,{storyId:e})}catch{}}function ik(e){try{typeof e.unset=="function"?e.unset():typeof e.set=="function"&&e.set([])}catch{}}var sk=null;function ck(e){if(sk!==null)return;let t=Vi.getChannel(),n=o=>i=>{Wi()&&o(i)};t.on(Hi.REVIEW_START,n(({storyId:o})=>{e.set([{value:"status-value:pending",typeId:Pm,storyId:o,title:"Reviewing...",description:"AI review in progress"}])})),t.on(Hi.REVIEW_COMPLETE,n(({storyId:o,summary:i})=>{e.set([{value:EN(i),typeId:Pm,storyId:o,title:PN(i),description:AN(i)}])})),t.on(Hi.REVIEW_ERROR,n(({storyId:o})=>{e.set([{value:"status-value:error",typeId:Pm,storyId:o,title:"Review Failed",description:"An error occurred during review"}])}));let r=Wi();r||ik(e),sk=setInterval(()=>{let o=Wi();o!==r&&(r=o,o||ik(e))},1500)}var LN="uireview/mapped",uk="uireview/mappings-updated";function pk(e){try{Vi.getChannel().emit(uk,{storyIds:e})}catch{}}function dk(e){Vi.getChannel().on(uk,({storyIds:n})=>{n.length&&e.set(n.map(r=>({value:"status-value:success",typeId:LN,storyId:r,title:"\u2713 Linked to Figma",description:"Story has a Figma mapping"})))})}var Lm=K(),Mm=180;function Ro(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="object"){let t=e;if("value"in t&&typeof t.value=="string")return t.value;if("top"in t||"left"in t){let n=[t.top,t.right,t.bottom,t.left].filter(Boolean);if(n.length>0)return n.join(" ")}return JSON.stringify(e)}return String(e)}var Bm=()=>{let{isReviewing:e,reviewError:t,reviewResults:n,showReviewMenu:r,severityFilter:o,showStreamingPanel:i,streamingPanelCollapsed:s,streamingMessages:a,streamingProgress:u,streamingStatus:c,selectedModels:l,setIsReviewing:d,setReviewingStoryId:g,setReviewError:p,setReviewResults:h,setShowReviewMenu:S,setSeverityFilter:T,setShowStreamingPanel:I,setStreamingPanelCollapsed:v,addStreamingMessage:D,updateStreamingMessage:N,clearStreamingMessages:j,setStreamingProgress:B,setStreamingStatus:z,setFullPrompt:m,setFullResponse:b,setFigmaImageUrl:k,storybookImageUrl:A,setStorybookImageUrl:f,setFigmaDimensions:C,setMultiModelResults:E,updateMultiModelStreamingMessages:x,setModelCompleted:F,setActiveModelId:P,resetReview:L,addReview:O,setReviewDetailTab:w,includeTextComparison:R,usePromptCache:W,setApplyFixesResult:M,featureFlags:oe,roleOverride:X,setPendingSettingsOpen:ne}=ue(),{sessionToken:xe,usageData:Ee,setUsageData:nt}=ve(),{selectedProjectId:Pe}=Xe(),{currentStoryId:ge,currentStoryName:dt}=Ze(),fe=gc(Ee);fe.current=Ee;let ce=gc(null),pe=gc(null),at=gc({}),It=la((lt,ie)=>{D({role:lt,content:ie})},[D]),gt=la((lt,ie)=>{B(lt),z(ie)},[B,z]),On=la(async lt=>{let{isIteration:ie=!1,parentReviewId:J=null}=lt||{};if(!xe)throw new Error("Not authenticated");if(!Pe)throw new Error("No project selected");if(!ge||!dt)throw new Error("No story is currently selected in Storybook");if(e){y.debug("[useAIReview] Review already in progress, ignoring duplicate request");return}let me=Date.now();try{d(!0),g(ge),p(null),h(null),w("issues"),M(null),ge&&oe.enableReviewBadges&&ak(ge),pe.current&&clearTimeout(pe.current),pe.current=setTimeout(()=>{y.debug(`[useAIReview] Auto-stopping review after ${Mm}s timeout`),ce.current&&ce.current.abort(),D({role:"system",content:`Review auto-stopped after ${Mm} seconds timeout.`})},Mm*1e3),m(""),b(""),I(!0),v(!1),j(),gt(0,"Starting review..."),gt(5,"Refreshing component preview..."),y.debug("[Review] Forcing iframe reload for fresh styles..."),await sc(),y.debug("[Review] Iframe reloaded, styles should be fresh"),gt(20,"Capturing screenshot & extracting styles..."),y.debug("[Review] Starting parallel data collection...");let[$,_,G]=await Promise.all([oc({sessionToken:xe||void 0}),Promise.resolve(ra()),Promise.resolve(fm())]);if($&&$!==A&&(f($),y.debug("[Review] Storybook screenshot captured and set")),!_)throw new Error("Failed to extract styles from component");let{computed:q,declared:V,markup:he,textElementStyles:Te,nestedElementStyles:Sn}=_;G?y.debug("[Review] DOM tree extracted:",{selector:G.selector,childrenCount:G.children.length}):(y.error("[Review] DOM tree extraction FAILED - domTree is null"),y.error("[Review] This will cause AI to use comparison table instead of tree comparison")),gt(50,"Preparing metadata..."),y.debug("[Review] Current story:",{id:ge,name:dt});let Dt=bt.getState().currentMapping?.figmaNodeId??null,kr=bt.getState().figmaImageUrl;if(Dt&&(y.debug("[Review] Using Figma node ID from store:",Dt),kr&&(gt(65,"Using existing Figma design..."),y.debug("[Review] Reusing already-loaded Figma image"))),!Dt)try{let Ke=await fetch(`${Lm}/api/mappings?projectId=${Pe}&storyId=${ge}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${xe}`}});if(Ke.ok){let _t=await Ke.json();_t.mapping?.figmaNodeId?(Dt=_t.mapping.figmaNodeId,y.debug("[Review] Found Figma node ID from API:",Dt)):y.debug("[Review] No mapping found for story:",ge)}else y.debug("[Review] Failed to fetch mapping:",Ke.status)}catch(Ke){y.error("[Review] Error fetching mapping:",Ke)}if(Dt&&!kr){gt(65,"Fetching Figma design...");try{let Ke=await fetch(`${Lm}/api/figma/frames?projectId=${Pe}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${xe}`}});if(Ke.ok){let Ht=(await Ke.json()).thumbnails?.[Dt];Ht?(k(Ht),y.debug("[Review] Figma thumbnail fetched and displayed:",Ht)):y.warn("[Review] No thumbnail found for node:",Dt)}else y.warn("[Review] Failed to fetch Figma frames:",Ke.status)}catch(Ke){y.error("[Review] Error fetching Figma frames:",Ke)}}if(!Dt)throw new Error('Figma mapping required. Please link this story to a Figma frame using the "Map to Figma" button before reviewing.');gt(80,"AI is analyzing your component..."),y.debug("[Review] Sending to streaming API...");let wn={projectId:Pe,storyId:ge,storyName:dt,storybookScreenshot:$,computedStyles:q,declaredStyles:V,textElementStyles:Te,nestedElementStyles:Sn,componentMarkup:he,domTree:G,figmaNodeId:Dt,figmaImageUrl:kr||void 0,aiModels:l,includeTextComparison:R,usePromptCache:W,parentReviewId:ie?J:void 0,isIteration:ie};y.debug("[Review] Request payload:",{...wn,storybookScreenshot:$?`${$.substring(0,50)}...`:null,domTree:G?{selector:G.selector,childrenCount:G.children.length}:null}),ce.current=new AbortController;let Pn=await fetch(`${Lm}/api/review/stream`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",Authorization:`Bearer ${xe}`,...ac(X)},body:JSON.stringify(wn),signal:ce.current.signal});if(y.debug("[Review] Response status:",Pn.status,Pn.statusText),!Pn.ok){let Ke=await Pn.json();if(y.error("[Review] API error response:",Ke),Pn.status===429){let _t=Ke.retryAfter||60;throw new Error(`Rate limit exceeded. Please wait ${_t} seconds before trying again.`)}if(Pn.status===402){if(Ke.code==="INSUFFICIENT_CREDITS"){let _t=Ke.details?.required??1,Ht=Ke.details?.balance??0;throw new Error(`Not enough credits. This review requires ${_t} credit(s) but you have ${Ht}. Visit Settings to add more.`)}throw Ke.code==="SUBSCRIPTION_LIMIT_EXCEEDED"?new Error(Ke.message||"Monthly review limit reached. Upgrade your plan to continue."):new Error(Ke.message||"Payment required")}throw Pn.status===401&&Ke.code==="FIGMA_AUTH_EXPIRED"?(ne(!0),new Error("Figma connection expired. Reconnect your Figma account in Settings to continue.")):new Error(Ke.error||Ke.message||"Review request failed")}let lr=Pn.body?.getReader(),wE=new TextDecoder,Iu="",wo="",$e=null,Fu=null,Ty=l.length>1,Qo={},hs={},D9={};if(!lr)throw new Error("Response body is not readable");let Iy=bt.getState().streamingMessages.length;for(It("assistant","");;){let{done:Ke,value:_t}=await lr.read();if(Ke)break;Iu+=wE.decode(_t,{stream:!0});let Ht=Iu.split(`
|
|
17
17
|
`);Iu=Ht.pop()||"";for(let er of Ht)if(er.startsWith("data: ")){let mn=er.slice(6);if(mn==="[DONE]")continue;try{let ae=JSON.parse(mn);if(ae.type!=="text"&&ae.type!=="content"&&y.debug("[Review] SSE Event received:",ae.type),ae.type==="prompt")ae.prompt&&(m(ae.prompt),y.debug("[Review] Prompt received early"));else if(ae.type==="model_started")y.debug("[Review] Model started:",ae.modelId),Qo[ae.modelId]||(Qo[ae.modelId]="",hs[ae.modelId]=[{role:"assistant",content:""}]);else if(ae.type==="text"||ae.type==="content")if(Ty&&ae.modelId){Qo[ae.modelId]||(Qo[ae.modelId]="",hs[ae.modelId]=[{role:"assistant",content:""}]),Qo[ae.modelId]+=ae.content,hs[ae.modelId][0].content=Qo[ae.modelId],x(ae.modelId,hs[ae.modelId]);let Xt=Object.entries(Qo).map(([hn,it])=>`[${hn}]
|
|
18
18
|
${it}`).join(`
|
|
19
19
|
|
|
@@ -27,7 +27,7 @@ ${it}`).join(`
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
\u2705 ${ae} issue${ae>1?"s were":" was"} auto-dismissed as false positive${ae>1?"s":""} (values already match design spec). Score recalculated to reflect active issues only.`));let Xt=$e.complianceScore??$e.validation?.complianceScore;if(y.debug("[Review] Score sources:",{directScore:$e.complianceScore,validationScore:$e.validation?.complianceScore,parsedScore:Xt}),Xt==null){let Ie=_t.match(/(?:\*?\*?(?:##?)?\s*)?SCORE:\s*(\d+)/i);Xt=Ie?parseInt(Ie[1],10):void 0,y.debug("[Review] Parsed score from response:",Xt)}let hn=at.current[ge];hn||(hn=await aa(ge)||{storyFile:"",componentFile:"[Component].tsx",cssFile:"[Component].css",baseDir:""},hn.storyFile&&(at.current[ge]=hn)),y.debug("[Review] Story file paths:",hn);let it=mn.map(Ie=>({...Ie,file:Ie.file||Fm(Ie.fixTarget,hn)||Em(Ie,hn)}));if(it=Am(it),y.debug("[Review] After de-duplication:",it.length,"issues"),!R){let Ie=it.length;it=it.filter(ye=>ye.property?.toLowerCase()!=="textcontent"&&!ye.description?.toLowerCase().includes("text content")),Ie!==it.length&&y.debug("[Review] Filtered out",Ie-it.length,"textContent issues (toggle OFF)")}let _r;ie&&J&&(_r=(bt.getState().reviewHistory.find(ye=>ye.id===J)?.iterationNumber||0)+1);let _n={id:Ke,componentId:ge,storyId:ge,modelId:l[0],parentReviewId:ie&&J||void 0,iterationNumber:_r,figmaFileKey:void 0,figmaNodeId:Dt||void 0,figmaFileUrl:kr||void 0,complianceScore:Xt,visualSimilarity:$e.visualSimilarity,issuesCount:it.filter(Ie=>!Ie.dismissed).length,issues:it,createdAt:new Date,reviewDurationMs:Date.now()-me,costUsd:$e.costUsd,inputTokens:$e.inputTokens,outputTokens:$e.outputTokens,cacheCreationTokens:$e.cacheCreationTokens,cacheReadTokens:$e.cacheReadTokens,variantMismatch:$e.variantMismatch,storybookVariant:$e.storybookVariant,figmaVariant:$e.figmaVariant};if(y.debug("[useAIReview] About to call addReview with review:",{id:_n.id,storyId:_n.storyId,issueCount:_n.issues?.length,complianceScore:_n.complianceScore,createdAt:_n.createdAt?.toISOString(),inputTokens:_n.inputTokens,outputTokens:_n.outputTokens,costUsd:_n.costUsd,cacheCreationTokens:_n.cacheCreationTokens,cacheReadTokens:_n.cacheReadTokens}),O(_n),y.debug("[useAIReview] addReview called successfully"),ge&&oe.enableReviewBadges){let Ie=it.filter(ye=>!ye.dismissed);Wr(ge,{score:Xt??100,issueCount:Ie.length,criticalCount:Ie.filter(ye=>ye.severity==="critical").length,majorCount:Ie.filter(ye=>ye.severity==="major").length,minorCount:Ie.filter(ye=>ye.severity==="minor").length})}w("issues");let xs=it.filter(Ie=>!Ie.dismissed).length;y.debug("[Review] Created review with",xs,"active issues,",it.length-xs,"dismissed");let Za=Dt||bt.getState().currentMapping?.figmaNodeId;y.debug("[Review] Validation check:",{figmaNodeId:Dt,effectiveFigmaNodeIdSingle:Za,hasSessionToken:!!xe,selectedProjectId:Pe,issueCount:it.length}),y.debug("[Review] Issue validation handled server-side. Active:",it.filter(Ie=>!Ie.dismissed).length,"Dismissed:",it.filter(Ie=>Ie.dismissed).length)}catch(Ke){y.error("[Review] Failed to parse issues:",Ke)}}else throw wo?(y.error("[Review] ERROR: No structured result received from backend!"),y.error("[Review] Streaming text length:",wo.length),y.error("[Review] This indicates a bug in SSE parsing or backend not sending complete event"),new Error("Review completed but failed to receive structured result. Check console for details.")):new Error("No results received from API")}catch($){if($ instanceof Error&&$.name==="AbortError"){y.debug("[useAIReview] Review cancelled by user"),gt(0,"Review cancelled");return}y.error("[useAIReview] Review error:",$);let _=ok($);throw p(_),ge&&oe.enableReviewBadges&&lk(ge),gt(0,`Error: ${_}`),$}finally{d(!1),g(null),ce.current=null,pe.current&&(clearTimeout(pe.current),pe.current=null),nt(null)}},[e,xe,Pe,ge,dt,l,d,p,h,E,x,F,P,I,v,j,It,gt,N,f,k,m,b,nt,ne]),Zn=la(()=>n?.issues?o==="all"?n.issues:n.issues.filter(lt=>lt.severity===o):[],[n,o]),Ge=la(()=>{ce.current&&(y.debug("[useAIReview] Cancelling review..."),ce.current.abort())},[]);return{isReviewing:e,reviewError:t,reviewResults:n,showReviewMenu:r,severityFilter:o,showStreamingPanel:i,streamingPanelCollapsed:s,streamingMessages:a,streamingProgress:u,streamingStatus:c,startReview:On,cancelReview:Ge,setShowReviewMenu:S,setSeverityFilter:T,setShowStreamingPanel:I,setStreamingPanelCollapsed:v,addStreamingMessage:D,updateStreamingMessage:N,clearStreamingMessages:j,setStreamingProgress:B,setStreamingStatus:z,resetReview:M,getFilteredIssues:Zn}};Ce();Oe();_e();import{useCallback as tZ}from"react";var iZ=K();Ce();Oe();import{useEffect as gk,useRef as fk}from"react";import{useStorybookApi as MN,useStorybookState as BN,addons as DN}from"storybook/manager-api";var mk="storyArgsUpdated",Dm=()=>{let e=MN(),t=BN(),{currentStoryId:n,currentStoryName:r,setCurrentStoryId:o,setCurrentStoryName:i}=Ze(),{clearStaleReviewsForStory:s,resetReview:a,isReviewing:u,isValidating:c}=ue(),l=fk(null),d=fk(0);return gk(()=>{let g=t.storyId;if(g){l.current!==g&&(y.debug("[useCurrentStory] Story changed from",l.current,"to",g),s(g),l.current=g,d.current=Date.now()),o(g);let p=e.getData(g),h=p?.name&&p.name!=="default"?`${p.title} / ${p.name}`:p?.title||g;i(h),y.debug("[useCurrentStory] Current story:",{storyId:g,fullName:h})}else o(null),i(""),l.current=null},[t.storyId,e,o,i,s]),gk(()=>{let g=DN.getChannel(),p=null,h=S=>{if(S.storyId===n){if(u||c){y.debug("[useCurrentStory] Story args changed but review in progress, skipping reset");return}p&&clearTimeout(p),p=setTimeout(()=>{let{isReviewing:T,isValidating:I}=bt.getState();if(T||I){y.debug("[useCurrentStory] Story args changed but review started, skipping reset");return}if(Date.now()-d.current<2e3){y.debug("[useCurrentStory] Story args changed but story just navigated, skipping reset");return}y.debug("[useCurrentStory] Story args changed, clearing stale review"),a()},500)}};return g.on(mk,h),()=>{g.off(mk,h),p&&clearTimeout(p)}},[n,a,u,c]),{currentStoryId:n,currentStoryName:r}};Ce();_e();ct();import{useCallback as hk}from"react";import{addons as xk}from"storybook/manager-api";var yk=K(),ai=()=>{let{currentMapping:e,loadingMapping:t,setCurrentMapping:n,refreshMappings:r}=Ze(),{sessionToken:o}=ve(),{selectedProjectId:i}=Xe(),s=hk(async c=>{if(!o)throw new Error("Not authenticated");if(!i)throw new Error("No project selected");let l=await se(`${yk}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify({projectId:i,...c})});if(!l.ok)throw new Error("Failed to create mapping");let d=await l.json();r();try{xk.getChannel().emit("uireview/mappings-changed")}catch{}return d.mapping},[o,i,r]),a=hk(async c=>{if(!o)throw new Error("Not authenticated");if(!(await se(`${yk}/api/mappings?id=${encodeURIComponent(c)}`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}})).ok)throw new Error("Failed to delete mapping");r();try{xk.getChannel().emit("uireview/mappings-changed")}catch{}},[o,r]);return{currentMapping:e,loadingMapping:t,hasMapping:!!e,setCurrentMapping:n,createMapping:s,deleteMapping:a,refreshMappings:r}};Ui();Ce();import{useCallback as Rm,useEffect as bk,useRef as RN}from"react";import{useChannel as zN,addons as Sk}from"storybook/manager-api";Oe();var NN=3e4,ON="forceRemount";function _N(e,t){let n=parseFloat(e.replace(/[^0-9.-]/g,"")),r=parseFloat(t.replace(/[^0-9.-]/g,""));if(isNaN(n)||isNaN(r))return!1;let o=Math.abs(n-r);return e.includes("px")||t.includes("px")?o<.5:e.includes("%")||t.includes("%")?o<1:o<.5}function $N(e){let t=["design system","design token","css variable","var(--","hard-coded"],n=`${e.description} ${e.suggestedFix||""} ${e.suggestedValue||""}`.toLowerCase();return t.some(r=>n.includes(r))}var UN="UICOPILOT/APPLY_FIXES",jN="UICOPILOT/FIX_STARTED",HN="UICOPILOT/FIX_COMPLETED",WN="UICOPILOT/FIX_FAILED",VN="UICOPILOT/ALL_FIXES_APPLIED",zm=(e={})=>{let{onComplete:t,storybookRoot:n}=e,{isApplying:r,setIsApplying:o,setApplyFixesResult:i,updateIssueStatus:s,updateIssueGeneratedFix:a,setReviewDetailTab:u}=ue(),c=RN(null),l=Rm(()=>{c.current&&(clearTimeout(c.current),c.current=null)},[]);bk(()=>()=>l(),[l]),bk(()=>{let h=Sk.getChannel(),S=()=>{bt.getState().isApplying&&(y.error("[useApplyFixes] WebSocket disconnected while applying fixes"),l(),o(!1),i({succeeded:0,failed:0,total:0,error:"Connection lost. Please restart Storybook and try again."}))};return h.on("channelWSDisconnect",S),()=>h.off("channelWSDisconnect",S)},[l,o,i]);let d=zN({[jN]:({issueId:h})=>{y.debug(`[useApplyFixes] Fix started for issue: ${h}`),a(h,{status:"applying"})},[HN]:({issueId:h,result:S})=>{y.debug(`[useApplyFixes] Fix completed for issue: ${h}`,S),s(h,"applied"),a(h,{status:"applied"})},[WN]:({issueId:h,error:S})=>{y.error(`[useApplyFixes] Fix failed for issue: ${h}`,S),s(h,"failed",S),a(h,{status:"failed",error:S})},[VN]:async({summary:h})=>{if(y.debug("[useApplyFixes] All fixes applied:",h),l(),o(!1),i({succeeded:h.succeeded,failed:h.failed,total:h.total}),h.failed>0?y.warn(`Applied ${h.succeeded}/${h.total} fixes. ${h.failed} failed.`):y.debug(`Successfully applied all ${h.total} fixes!`),h.succeeded>0){y.debug("[useApplyFixes] Emitting FORCE_REMOUNT to refresh story...");try{Sk.getChannel().emit(ON,{storyId:bt.getState().currentStoryId}),y.debug("[useApplyFixes] FORCE_REMOUNT emitted")}catch(S){y.warn("[useApplyFixes] Failed to emit FORCE_REMOUNT:",S)}y.debug("[useApplyFixes] Reloading Storybook preview to load fresh CSS..."),await sc(),y.debug("[useApplyFixes] Storybook preview reloaded")}t&&(y.debug("[useApplyFixes] Triggering screenshot refresh after fixes"),t()),y.debug("[useApplyFixes] Switching to Issues tab to show results"),u("issues")}}),g=Rm(h=>{let S=[],T=[],I=[];for(let v of h){let D=v.currentValue||v.actual||"",N=v.suggestedValue||v.expected||"";if(D&&N&&_N(D,N)){S.push(v);continue}if($N(v)){T.push(v);continue}let j=v.generatedFix?.filePath||v.file||"";if(!j){y.warn(`[useApplyFixes] Skipping issue ${v.id} - no target file path`);continue}let B=j.toLowerCase().split(".").pop()||"",z=["tsx","jsx","ts","js"].includes(B)?"component":"css";I.push({...v,targetFilePath:j,targetFileType:z})}return{actionable:I,negligible:S,designTokens:T}},[]);return{applyFixes:Rm(h=>{if(r){y.warn("[useApplyFixes] Already applying fixes");return}if(h.length===0){y.warn("[useApplyFixes] No issues to fix");return}let S=g(h);if(S.negligible.length>0&&y.debug(`[useApplyFixes] Filtered ${S.negligible.length} negligible issue(s)`),S.designTokens.length>0&&y.debug(`[useApplyFixes] Skipped ${S.designTokens.length} design token suggestion(s)`),S.actionable.length===0){y.warn("[useApplyFixes] No actionable issues to fix after filtering");return}let T=S.actionable.filter(D=>D.targetFileType==="css"),I=S.actionable.filter(D=>D.targetFileType==="component");if(y.debug("[useApplyFixes] Applying fixes:"),T.length>0){let D=[...new Set(T.map(N=>N.targetFilePath))];y.debug(` - ${T.length} CSS issue(s) in: ${D.join(", ")}`)}if(I.length>0){let D=[...new Set(I.map(N=>N.targetFilePath))];y.debug(` - ${I.length} component issue(s) in: ${D.join(", ")}`),y.warn(" \u26A0\uFE0F Component files will be modified - review changes carefully!")}if(!document.querySelector("#storybook-preview-iframe")?.contentWindow){y.error("[useApplyFixes] Storybook preview iframe not found \u2014 connection lost"),i({succeeded:0,failed:0,total:S.actionable.length,error:"Connection lost. Please reload the page and try again."});return}o(!0),l(),c.current=setTimeout(()=>{bt.getState().isApplying&&(y.error("[useApplyFixes] Apply timed out \u2014 no response from server"),o(!1),i({succeeded:0,failed:0,total:S.actionable.length,error:"Apply timed out. The Storybook server may have disconnected. Please reload the page and try again."}))},NN),d(UN,{issues:S.actionable,storybookRoot:n||void 0})},[d,r,o,i,g,n,l]),isApplying:r}};Ce();_e();import{useState as IZ}from"react";var AZ=K();Ce();import{useState as li}from"react";_e();Oe();ct();var GN=K();async function fc(e,t,n,r,o){if(!e)return y.warn("[DismissalSync] No database ID provided, skipping server sync"),{success:!1,error:"No database ID"};try{let i=await se(`${GN}/api/issues/dismiss`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},credentials:"include",body:JSON.stringify({issueId:e,dismissed:t,dismissReason:n,dismissedBy:r})});if(!i.ok){let a=await i.text();return y.error("[DismissalSync] API error:",i.status,a),{success:!1,error:`API error: ${i.status}`}}let s=await i.json();return y.debug(`[DismissalSync] Synced issue ${e}, new score: ${s.newScore}`),{success:!0,newScore:s.newScore,activeIssuesCount:s.activeIssuesCount}}catch(i){return y.error("[DismissalSync] Failed to sync:",i),{success:!1,error:i.message}}}async function wk(e,t){let n=e.filter(i=>i.dbId);if(n.length===0)return y.warn("[DismissalSync] No valid dismissals to sync (missing dbIds)"),{success:!1,error:"No valid dismissals"};let o=(await Promise.all(n.map(i=>fc(i.dbId,i.dismissed,i.dismissReason,i.dismissedBy,t)))).filter(i=>i.success);if(o.length>0){let i=o[o.length-1];return y.debug(`[DismissalSync] Batch synced ${o.length}/${n.length} dismissals`),i}return{success:!1,error:"All dismissals failed"}}cn();mm();Ui();Oe();_e();var qN=["no-fix-needed","no-fix-required","no-change-needed","no-changes-needed","no-change-required","no-changes-required","no-action-needed","no-action-required","no_fix_needed","no_change_needed","no_changes_needed","already-correct","values-match","values-already-match","already-matches","css-matches","matches-figma","correctly-implemented","implementation-correct","none-needed","none-required","skipped","skip"],YN=["no changes required","no changes needed","no fix required","no fix needed","values already match","already matches","matches expected","correctly implemented","implementation is correct"],KN=K();function Nm(){let[e,t]=li(!1),[n,r]=li(null),[o,i]=li(null),[s,a]=li(null),[u,c]=li(null),[l,d]=li(null),[g,p]=li(null),{sessionToken:h}=ve(),{selectedProjectId:S}=Xe(),{currentStoryId:T,currentStoryName:I}=Ze(),{workspacePath:v,updateIssueGeneratedFix:D,batchUpdateIssueGeneratedFixes:N,includeComponentIssues:j,dismissIssue:B,recalculateScore:z,addStreamingMessage:m,roleOverride:b}=ue();return{generateBatchFixes:async A=>{if(!h){r("Not authenticated");return}if(!S){r("No project selected");return}if(!T){r("No story selected");return}if(A.length===0){r("No issues provided");return}t(!0),r(null),i(null),c(null),d(null),a({total:A.length,completed:0});let f=A.map(C=>({issueId:C.id,generatedFix:{code:"",diffPreview:"",filePath:C.file||"",confidence:0,strategy:"",status:"generating"}}));N(f);try{y.debug("[useBatchGenerateFixes] Generating fixes for",A.length,"issues");let C=null;try{let R=ra();R?.computed&&(C=R.computed,y.debug("[useBatchGenerateFixes] Extracted computed styles for fix context"))}catch(R){y.warn("[useBatchGenerateFixes] Could not extract computed styles:",R)}let E=null;try{E=await aa(T),E&&y.debug("[useBatchGenerateFixes] Resolved file paths from index.json:",E)}catch(R){y.warn("[useBatchGenerateFixes] Could not resolve story file paths:",R)}let x=await fetch(`${KN}/api/fixes/generate-batch`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`,...ac(b)},body:JSON.stringify({projectId:S,storyId:T,workspacePath:v,includeComponentIssues:j,computedStyles:C,storyFilePaths:E,reviewContext:{storyName:I||void 0,variantArgs:$i()||void 0},issues:A.map(R=>({id:R.id,dbId:R.dbId,title:R.title,description:R.description,property:R.property,currentValue:R.currentValue,suggestedValue:R.suggestedValue,file:R.file,lineNumber:R.lineNumber,severity:R.severity,type:R.type,fixTarget:R.fixTarget,domElement:R.domElement,figmaContext:R.figmaContext,suggestedFix:R.suggestedFix}))})});if(!x.ok){let R=await x.json().catch(()=>({}));throw new Error(R.error||"Batch fix generation failed")}let F=await x.json();if(!F.success)throw new Error(F.error||"Batch fix generation failed");if(y.debug("[useBatchGenerateFixes] Generated",F.result.fixes.length,"fixes"),F.result.storybookRoot&&(p(F.result.storybookRoot),y.debug("[useBatchGenerateFixes] Stored storybookRoot:",F.result.storybookRoot)),F.result.selfReview&&(d(F.result.selfReview),y.debug("[useBatchGenerateFixes] Self-review:",F.result.selfReview)),F.result.partialFailure){let{failedBatches:R,errors:W}=F.result.partialFailure;y.warn(`[useBatchGenerateFixes] Partial failure: ${R.join(", ")} batch(es) failed`),y.warn("[useBatchGenerateFixes] Errors:",W),r(`Some fixes couldn't be generated (${R.join(", ")}): ${W[0]||"Unknown error"}`)}a({total:A.length,completed:F.result.fixes.length});let P=new Set(F.result.fixes.map(R=>R.issueId)),M=A.filter(R=>!P.has(R.id));M.length>0&&(y.warn(`[useBatchGenerateFixes] ${M.length} issues not returned by API, marking as failed`),M.forEach(R=>{D(R.id,{code:"",diffPreview:"",filePath:R.file||"",confidence:0,strategy:"skipped",status:"failed",error:"Fix generation skipped by server"})})),F.timing&&(i({durationSec:F.timing.durationSec,issueCount:F.timing.issueCount,avgPerIssueSec:F.timing.avgPerIssueSec}),y.debug(`[useBatchGenerateFixes] Generation took ${F.timing.durationSec}s for ${F.timing.issueCount} issues`)),F.result?.usage&&(c({inputTokens:F.result.usage.inputTokens||0,outputTokens:F.result.usage.outputTokens||0,costUsd:F.result.usage.costUsd||0,modelId:F.result.usage.modelId||"unknown",provider:F.result.usage.provider||"unknown"}),y.debug(`[useBatchGenerateFixes] Token usage: ${F.result.usage.inputTokens} in, ${F.result.usage.outputTokens} out, $${F.result.usage.costUsd?.toFixed(4)}`));let O=[],w=[];if(F.result.fixes.forEach(R=>{let W=R.noChangesNeeded===!0;if(!W){let X=(R.fixStrategy||"").toLowerCase(),ne=(R.generatedCode||"").toLowerCase(),xe=(R.diffPreview||"").toLowerCase(),Ee=qN.some(Pe=>X.includes(Pe.toLowerCase())||X.replace(/[-_]/g,"").includes(Pe.replace(/[-_]/g,""))),nt=YN.some(Pe=>ne.includes(Pe)||xe.includes(Pe));W=Ee||nt}let L=A.find(X=>X.id===R.issueId);if(W&&L){let X=L.suggestedValue,ne=L.currentValue;X&&ne&&!oi(X,ne)&&(y.debug(`[useBatchGenerateFixes] SAFETY CHECK: values differ (expected="${X}", actual="${ne}"), NOT auto-dismissing issue ${R.issueId}`),W=!1)}let oe=L?.programmaticallyVerified===!0;if(y.debug(`[useBatchGenerateFixes] Processing fix for issue ${R.issueId}:`,{isFalsePositive:W,isProgrammaticIssue:oe,detectedBy:L?.detectedBy,noChangesNeeded:R.noChangesNeeded,fixStrategy:R.fixStrategy,title:L?.title?.substring(0,50)}),oe&&W&&(y.debug(`[useBatchGenerateFixes] SKIPPING auto-dismiss for programmatic issue ${R.issueId} (detectedBy: ${L?.detectedBy})`),W=!1),W){let X=`Auto-dismissed: ${R.fixStrategy} - values already match`;y.debug(`[useBatchGenerateFixes] Auto-dismissing issue ${R.issueId} - noChangesNeeded: ${R.noChangesNeeded}, strategy: "${R.fixStrategy}"`),B(R.issueId,X),O.push({localId:R.issueId,dbId:L?.dbId,dismissReason:X}),w.push({issueId:R.issueId,generatedFix:{code:R.generatedCode||"",diffPreview:R.diffPreview||"",filePath:R.filePath,confidence:R.confidence,strategy:R.fixStrategy,status:"ready",error:void 0,noChangesExplanation:R.noChangesExplanation}})}else{let X=R.error||R.fixStrategy==="skipped"?"failed":"ready";w.push({issueId:R.issueId,generatedFix:{code:R.generatedCode,diffPreview:R.diffPreview,filePath:R.filePath,confidence:R.confidence,strategy:R.fixStrategy,status:X,error:R.error,noChangesExplanation:R.noChangesExplanation}})}}),w.length>0&&(y.debug(`[useBatchGenerateFixes] Applying ${w.length} fix updates in batch`),N(w)),O.length>0){if(y.debug(`[useBatchGenerateFixes] Auto-dismissed ${O.length} false positive(s), recalculating score`),z(),h){let W=O.filter(L=>L.dbId).map(L=>({dbId:L.dbId,dismissed:!0,dismissReason:L.dismissReason,dismissedBy:"system"}));W.length>0&&(y.debug(`[useBatchGenerateFixes] Syncing ${W.length} dismissals to server`),wk(W,h).then(L=>{L.success?y.debug(`[useBatchGenerateFixes] Server score updated to: ${L.newScore}`):y.warn("[useBatchGenerateFixes] Failed to sync dismissals:",L.error)}).catch(L=>{y.error("[useBatchGenerateFixes] Error syncing dismissals:",L)}))}let R=O.length===1?"1 issue was auto-dismissed as a false positive (values already match the design). The compliance score has been recalculated.":`${O.length} issues were auto-dismissed as false positives (values already match the design). The compliance score has been recalculated.`;m({role:"system",content:R})}y.debug("[useBatchGenerateFixes] Updated",F.result.fixes.length,"issues with fixes")}catch(C){y.error("[useBatchGenerateFixes] Failed to generate batch fixes:",C),r(C?.message||"Failed to generate batch fixes");let E=A.map(x=>({issueId:x.id,generatedFix:{code:"",diffPreview:"",filePath:x.file||"",confidence:0,strategy:"",status:"failed",error:C?.message||"Failed to generate fix"}}));N(E)}finally{t(!1),setTimeout(()=>a(null),1500)}},isGenerating:e,error:n,timing:o,progress:s,usage:u,selfReview:l,lastStorybookRoot:g}}Ce();Oe();_e();ct();import{useState as Om,useCallback as _m}from"react";var XN=K();function $m(){let[e,t]=Om([]),[n,r]=Om(!1),[o,i]=Om(null),{sessionToken:s}=ve(),{selectedProjectId:a}=Xe(),{currentStoryId:u}=Ze(),{setReviewResults:c}=ue(),l=_m(async()=>{if(!(!s||!a)){r(!0),i(null);try{let p=new URLSearchParams({projectId:a,limit:"10"});u&&p.append("storyId",u);let h=await se(`${XN}/api/reviews/list?${p.toString()}`,{method:"GET",credentials:"include",headers:{Authorization:`Bearer ${s}`}});if(!h.ok){let T=await h.json().catch(()=>({}));throw new Error(T.error||"Failed to fetch reviews")}let S=await h.json();if(!S.success)throw new Error("Failed to fetch reviews");y.debug("[useReviewHistory] Fetched",S.reviews.length,"reviews for:",u),t(S.reviews)}catch(p){y.error("[useReviewHistory] Failed to fetch reviews:",p),i(p instanceof Error?p.message:"Failed to fetch reviews")}finally{r(!1)}}},[s,a,u]),d=_m(p=>{y.debug("[useReviewHistory] Applying review:",p.id,"with",p.issues.length,"issues");let h=[];if(typeof p.models=="string")try{h=JSON.parse(p.models)}catch(v){y.error("[useReviewHistory] Failed to parse models:",v),h=["claude-sonnet-4-20250514"]}else h=p.models;let S=p.issues.map(v=>({id:v.id,reviewId:p.id,type:v.type,severity:v.severity,title:v.description,description:v.description,file:void 0,lineNumber:void 0,property:v.property,currentValue:v.actual,suggestedValue:v.expected,suggestedCode:v.suggestedFix||void 0,status:v.status,dismissed:v.dismissed||!1,dismissReason:v.dismissReason,dismissedBy:v.dismissedBy,selectedForFix:!1,error:void 0,createdAt:new Date(v.createdAt)})),T=p.completedAt&&p.createdAt?new Date(p.completedAt).getTime()-new Date(p.createdAt).getTime():void 0,I=p.storyId||"";if(c({id:p.id,componentId:"",storyId:I,modelId:h[0]||"claude-sonnet-4-6",complianceScore:p.complianceScore,issuesCount:p.issuesCount,issues:S,createdAt:new Date(p.createdAt),timestamp:new Date(p.createdAt).toISOString(),costUsd:p.costUsd,inputTokens:p.inputTokens,outputTokens:p.outputTokens,reviewDurationMs:T}),I){let v=p.issues.filter(B=>!B.dismissed),D=v.filter(B=>B.severity==="critical").length,N=v.filter(B=>B.severity==="major").length,j=v.filter(B=>B.severity==="minor").length;Wr(I,{score:p.complianceScore,issueCount:v.length,criticalCount:D,majorCount:N,minorCount:j})}},[c]),g=_m(p=>{let h=e.find(S=>S.id===p);if(!h){y.error("[useReviewHistory] Review not found:",p);return}d(h)},[e,d]);return{reviews:e,isLoading:n,error:o,fetchReviews:l,loadReview:g}}Ce();Oe();import{useEffect as QN,useState as JN,useRef as mc}from"react";import{useChannel as ZN}from"storybook/manager-api";var eO="UICOPILOT/WORKSPACE_PATH",vk="UICOPILOT/REQUEST_WORKSPACE_PATH",tO=3e3,nO=500,rO=5,Um=()=>{let[e,t]=JN({isSupported:!1,isDetecting:!0,workspacePath:null}),{setWorkspacePath:n}=ue(),r=mc(!1),o=mc(null),i=mc(0),s=mc(null),a=ZN({[eO]:({path:u})=>{r.current||(r.current=!0,o.current&&clearTimeout(o.current),s.current&&clearInterval(s.current),y.debug("[useAutoApplySupport] Server responded - auto-apply supported"),y.debug("[useAutoApplySupport] Workspace path:",u),t({isSupported:!0,isDetecting:!1,workspacePath:u}),n(u))}});return QN(()=>(y.debug("[useAutoApplySupport] Requesting workspace path from server (retry 0)..."),a(vk,{}),s.current=setInterval(()=>{!r.current&&i.current<rO&&(i.current++,y.debug(`[useAutoApplySupport] Requesting workspace path from server (retry ${i.current})...`),a(vk,{}))},nO),o.current=setTimeout(async()=>{if(s.current&&clearInterval(s.current),!r.current){y.debug("[useAutoApplySupport] Channel detection timed out, trying HTTP fallback...");try{let u=await fetch("/__uicopilot/health");if(u.ok){let c=await u.json();if(c.ok&&c.workspacePath&&!r.current){r.current=!0,y.debug("[useAutoApplySupport] HTTP fallback succeeded - auto-apply supported"),y.debug("[useAutoApplySupport] Workspace path:",c.workspacePath),t({isSupported:!0,isDetecting:!1,workspacePath:c.workspacePath}),n(c.workspacePath);return}}}catch{}r.current||(r.current=!0,y.debug("[useAutoApplySupport] Both channel and HTTP detection failed - auto-apply NOT supported"),t({isSupported:!1,isDetecting:!1,workspacePath:null}))}},tO),()=>{o.current&&clearTimeout(o.current),s.current&&clearInterval(s.current)}),[a]),e},jm=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",document.body.appendChild(t),t.focus(),t.select();let n=document.execCommand("copy");return document.body.removeChild(t),n}}catch(t){return y.error("[copyToClipboard] Failed to copy:",t),!1}};Ce();_e();import{useEffect as oO,useRef as iO}from"react";var aee=K(),sO=new Set;function Hm(){let{sessionToken:e}=ve(),{selectedProjectId:t}=Xe(),n=iO(!1);oO(()=>{t&&sO.add(t)},[e,t])}Ce();cn();import{useCallback as uee,useState as pee}from"react";import{useState as ci,useMemo as Bk,useCallback as Yi}from"react";_e();Oe();ct();cn();import{useState as go,useEffect as hc,useRef as Gi,useCallback as Wm}from"react";var aO=300;function kk({projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o=20,enabled:i=!0}){let[s,a]=go([]),[u,c]=go({}),[l,d]=go(0),[g,p]=go([]),[h,S]=go(new Set),[T,I]=go(!1),[v,D]=go(!1),[N,j]=go(null),B=Gi(1),z=Gi(null),m=Gi(null),[b,k]=go(0),A=Gi(!1),f=Gi({projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o});f.current={projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o};let C=Wm(async(M,O,w=!1)=>{let{projectId:R,typeFilter:W,search:L,figmaPage:oe,limit:X}=f.current;if(!R||!W)return;z.current&&z.current.abort();let ne=new AbortController;z.current=ne,O?D(!0):I(!0),j(null);try{let xe=K(),Ee=localStorage.getItem("uicopilot_session_token");if(!Ee)throw new Error(`Not authenticated. Please connect to ${At.NAME} first.`);let nt=new URLSearchParams({projectId:R,page:String(M),limit:String(X)});W&&nt.append("type",W),oe&&nt.append("figmaPage",oe),L.trim()&&nt.append("search",L.trim()),w&&nt.append("refresh","true");let Pe=await fetch(`${xe}/api/figma/frames?${nt.toString()}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${Ee}`},signal:ne.signal});if(!Pe.ok){let pe=await Pe.json();throw new Error(pe.error||"Failed to fetch frames")}let ge=await Pe.json(),dt=ge.frames||[],fe=ge.thumbnails||{},ce=Pe.headers.get("X-Cache-Status");if(dt.length===0&&M===1&&!O&&!w&&!A.current&&ce!=="HIT"){y.debug("[useFigmaFrameFetch] Empty result (cache miss), retrying with refresh=true"),A.current=!0,await C(1,!1,!0);return}O?(a(pe=>[...pe,...dt]),c(pe=>({...pe,...fe}))):(a(dt),c(fe)),d(ge.total||dt.length),ge.pages&&p(ge.pages),ge.cacheDiff?.added&&S(new Set(ge.cacheDiff.added)),B.current=M}catch(xe){if(xe instanceof DOMException&&xe.name==="AbortError")return;let Ee=xe instanceof Error?xe.message:"Failed to fetch Figma frames.";j(Ee),y.error("Error fetching frames:",xe)}finally{ne.signal.aborted||(I(!1),D(!1))}},[]);hc(()=>{if(!i||!e||!t)return;A.current=!1,m.current&&clearTimeout(m.current);let M=n.trim()?aO:0;return m.current=setTimeout(()=>{B.current=1,C(1,!1)},M),()=>{m.current&&clearTimeout(m.current)}},[e,t,n,r,i,b,C]);let E=Gi(new Set);hc(()=>{if(s.length===0)return;let M={};for(let O of s)O.thumbnailCdnUrl&&!u[O.id]&&(M[O.id]=O.thumbnailCdnUrl);Object.keys(M).length>0&&c(O=>({...O,...M}))},[s]),hc(()=>{if(s.length===0)return;let M=s.filter(w=>!w.thumbnailCdnUrl&&!u[w.id]&&!E.current.has(w.id)).map(w=>w.id);if(M.length===0)return;M.forEach(w=>E.current.add(w)),(async()=>{try{let{projectId:w}=f.current,R=K(),W=localStorage.getItem("uicopilot_session_token");if(!W||!w)return;let L=await se(`${R}/api/figma/frames?projectId=${w}&thumbnailIds=${M.join(",")}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${W}`}},6e4);if(L.ok){let oe=await L.json();oe.thumbnails&&Object.keys(oe.thumbnails).length>0&&c(X=>({...X,...oe.thumbnails}))}}catch(w){M.forEach(R=>E.current.delete(R)),y.error("Failed to fetch frame thumbnails:",w)}})()},[s,u]),hc(()=>()=>{z.current&&z.current.abort(),m.current&&clearTimeout(m.current)},[]);let x=Wm(async()=>{let M=B.current+1;await C(M,!0)},[C]),F=Wm(()=>{A.current=!1,B.current=1,a([]),c({}),k(M=>M+1)},[]),P=s.length<l;return{frames:s,thumbnails:u,totalFrames:l,availablePages:g,recentlyAdded:h,isLoading:T,loadingMore:v,hasMore:P,loadMore:x,refresh:F,error:N}}_e();Oe();ct();import{useState as qi,useCallback as xc,useRef as lO}from"react";function Ck({projectId:e}){let[t,n]=qi({}),[r,o]=qi({}),[i,s]=qi(new Set),[a,u]=qi(new Set),[c,l]=qi({}),[d,g]=qi(null),p=lO({}),h=xc(async v=>{if(!(!e||i.has(v))){s(D=>new Set(D).add(v));try{let D=K(),N=localStorage.getItem("uicopilot_session_token"),j=await se(`${D}/api/figma/variants?projectId=${e}&componentSetId=${v}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`}});if(j.ok){let B=await j.json();if(B.variants){n(m=>({...m,[v]:B.variants}));let z={};for(let m of B.variants)m.thumbnailCdnUrl&&(z[m.id]=m.thumbnailCdnUrl);o(m=>({...m,[v]:{...m[v]||{},...z}})),p.current[v]||(p.current[v]=new Set),Object.keys(z).forEach(m=>p.current[v].add(m))}else o(z=>({...z,[v]:z[v]||{}}))}else o(B=>({...B,[v]:{}}))}catch(D){y.error("Failed to fetch variant metadata:",D),o(N=>({...N,[v]:{}}))}finally{s(D=>{let N=new Set(D);return N.delete(v),N})}}},[e,i]),S=xc(async(v,D)=>{if(!e||D.length===0)return;p.current[v]||(p.current[v]=new Set);let N=r[v]||{},j=D.filter(B=>!p.current[v].has(B)&&!N[B]);if(j.length!==0){j.forEach(B=>p.current[v].add(B)),u(B=>new Set(B).add(v));try{let B=K(),z=localStorage.getItem("uicopilot_session_token"),m=await se(`${B}/api/figma/variants?projectId=${e}&componentSetId=${v}&thumbnailIds=${j.join(",")}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}});if(m.ok){let b=await m.json();b.rateLimitError?(g(b.rateLimitError),j.forEach(k=>p.current[v]?.delete(k))):(b.thumbnails&&Object.keys(b.thumbnails).length>0&&o(k=>({...k,[v]:{...k[v]||{},...b.thumbnails}})),Array.isArray(b.failed)&&b.failed.length>0&&l(k=>{let A=new Set(k[v]||[]);for(let f of b.failed)A.add(f);return{...k,[v]:A}}))}}catch(B){y.error("Failed to fetch variant thumbnails:",B),j.forEach(z=>p.current[v]?.delete(z))}finally{u(B=>{let z=new Set(B);return z.delete(v),z})}}},[e]),T=xc(v=>{o(D=>{let N={...D};return delete N[v],N}),n(D=>{let N={...D};return delete N[v],N}),l(D=>{let N={...D};return delete N[v],N}),delete p.current[v]},[]),I=xc(()=>{o({}),n({}),l({}),p.current={}},[]);return{variantChildren:t,variantThumbnails:r,variantFailed:c,loadingVariants:i,loadingThumbnails:a,rateLimitError:d,fetchVariants:h,fetchVariantThumbnails:S,clearVariantsForSet:T,clearAllVariants:I}}_e();Ui();Ce();Oe();ct();import{useState as Tk,useEffect as Ik,useRef as Fk,useCallback as Vm}from"react";function Ek({expandedSetId:e,availableFilters:t,filtersReady:n}){let[r,o]=Tk(null),[i,s]=Tk(!1),a=Fk(null),u=Fk(new Set),c=Vm(async()=>{if(!e||!n||t.length===0||a.current===e||u.current.has(e))return;let g=$i();if(!g||Object.keys(g).length===0)return;let p=bt.getState().currentStoryId||"",h=p.replace(/--/g," / ").replace(/-/g," ").replace(/\b\w/g,S=>S.toUpperCase());a.current=e,s(!0),o(null);try{let S=K(),T=localStorage.getItem("uicopilot_session_token"),I=await se(`${S}/api/figma/match-filters`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${T}`},body:JSON.stringify({storyName:h,storyId:p,storyArgs:g,availableFilters:t.map(v=>({property:v.property,values:v.values}))})});if(I.ok){let v=await I.json();v.confidence>0&&Object.keys(v.suggestedFilters).length>0&&(y.debug("[useFilterSuggestion] Suggestion:",v),o(v))}else I.status===404?y.debug("[useFilterSuggestion] match-filters endpoint not available (404), skipping suggestions"):y.error("[useFilterSuggestion] Unexpected status:",I.status)}catch(S){y.error("[useFilterSuggestion] Error:",S)}finally{s(!1)}},[e,t,n]);Ik(()=>{c()},[c]),Ik(()=>{e||(o(null),a.current=null)},[e]);let l=Vm(()=>{},[]),d=Vm(()=>{e&&u.current.add(e),o(null)},[e]);return{suggestion:r,isLoading:i,applySuggestion:l,dismissSuggestion:d}}function Ak(e,t,n){let r=[];return e&&r.push("COMPONENT_SET"),t&&r.push("FRAME"),n&&r.push("COMPONENT"),r.join(",")}function Pk(e){let t={};for(let n of Object.values(e))for(let r of n)if(r.variantProperties)for(let[o,i]of Object.entries(r.variantProperties))t[o]||(t[o]=new Set),t[o].add(i);return Object.entries(t).map(([n,r])=>({property:n,values:Array.from(r).sort()}))}function Lk(e){let t={},n=r=>{if(r.variantProperties)for(let[o,i]of Object.entries(r.variantProperties))t[o]||(t[o]=new Set),t[o].add(i);r.children?.forEach(n)};return e.forEach(n),Object.entries(t).map(([r,o])=>({property:r,values:Array.from(o).sort()}))}function Mk(e,t,n){if(t.length===0||!t.some(o=>o.value))return!0;let r=o=>o.variantProperties?t.every(i=>i.value?o.variantProperties?.[i.property]===i.value:!0):!1;return!!(r(e)||e.children?.some(r)||n?.some(r))}function ca({projectId:e,limit:t=20,enabled:n=!0}){let[r,o]=ci(!0),[i,s]=ci(!1),[a,u]=ci(!1),[c,l]=ci(""),[d,g]=ci(""),[p,h]=ci([]),[S,T]=ci(new Set),I=Yi(fe=>{l(fe),p.length>0&&h([]),S.size>0&&T(new Set)},[p.length,S.size]),v=Ak(r,i,a),{frames:D,thumbnails:N,totalFrames:j,availablePages:B,recentlyAdded:z,isLoading:m,loadingMore:b,hasMore:k,loadMore:A,refresh:f,error:C}=kk({projectId:e,typeFilter:v,search:c,figmaPage:d||void 0,limit:t,enabled:n&&!!v}),{variantChildren:E,variantThumbnails:x,variantFailed:F,loadingVariants:P,loadingThumbnails:M,rateLimitError:O,fetchVariants:w,fetchVariantThumbnails:R,clearVariantsForSet:W,clearAllVariants:L}=Ck({projectId:e}),oe=Bk(()=>{let fe=Pk(E),ce=Lk(D),pe={};for(let at of[...fe,...ce])pe[at.property]||(pe[at.property]=new Set),at.values.forEach(It=>pe[at.property].add(It));return Object.entries(pe).map(([at,It])=>({property:at,values:Array.from(It).sort()}))},[E,D]),X=S.size===1?Array.from(S)[0]:null,ne=Ek({expandedSetId:X,availableFilters:oe,filtersReady:oe.length>0}),xe=Yi(()=>{if(!ne.suggestion)return;let{suggestedFilters:fe}=ne.suggestion,ce=Object.entries(fe).map(([pe,at])=>({property:pe,value:at}));h(ce),ne.dismissSuggestion()},[ne.suggestion]),Ee=Bk(()=>p.some(fe=>fe.value)?D.filter(fe=>Mk(fe,p,E[fe.id])):D,[D,p,E]),nt=Yi((fe,ce)=>{ce.stopPropagation();let pe=!S.has(fe);T(at=>{let It=new Set(at);return It.has(fe)?It.delete(fe):It.add(fe),It}),pe&&!E[fe]&&!P.has(fe)?w(fe):pe||W(fe)},[S,E,P,w,W]),Pe=Yi((fe,ce)=>{let pe=ce===""?null:ce;h(at=>at.find(gt=>gt.property===fe)?at.map(gt=>gt.property===fe?{...gt,value:pe}:gt):[...at,{property:fe,value:pe}])},[]),ge=Yi(()=>{h([])},[]),dt=Yi(fe=>{let ce=D.find(pe=>pe.id===fe);if(ce?.thumbnailCdnUrl)return ce.thumbnailCdnUrl;if(N[fe])return N[fe];for(let pe of Object.values(x))if(pe[fe])return pe[fe]},[N,x]);return{frames:D,filteredFrames:Ee,thumbnails:N,totalFrames:j,isLoading:m,loadingMore:b,hasMore:k,error:C,loadMore:A,refresh:f,search:c,setSearch:I,figmaPage:d,setFigmaPage:g,availablePages:B,recentlyAdded:z,showComponentSets:r,showFrames:i,showComponents:a,setShowComponentSets:o,setShowFrames:s,setShowComponents:u,variantFilters:p,availableFilters:oe,handleFilterChange:Pe,clearFilters:ge,expandedSets:S,toggleExpanded:nt,variantChildren:E,variantThumbnails:x,variantFailed:F,loadingVariants:P,loadingThumbnails:M,rateLimitError:O,fetchVariantThumbnails:R,resolveThumbnail:dt,filterSuggestion:ne.suggestion,filterSuggestionLoading:ne.isLoading,applySuggestedFilters:xe,dismissFilterSuggestion:ne.dismissSuggestion}}Ce();import{useEffect as Br,useCallback as gO,useState as fO,useRef as mO}from"react";import{useChannel as hO}from"storybook/manager-api";function zo(e){return e.status===401||e.status===403}var Rn=class extends Error{constructor(t){super(`Authentication failed (${t}). Please reconnect.`),this.name="AuthError",this.status=t}};cn();function Dk(e){try{let t=new URL(e),n=t.pathname.match(/\/(file|design)\/([a-zA-Z0-9]+)/),r=n?n[2]:null,o=t.searchParams.get("node-id"),i=t.hash.match(/node-id=([0-9-:]+)/),s=o||(i?i[1]:null);if(!r||!s)return null;let a=s.replace(/-/g,":");return{fileKey:r,nodeId:a}}catch(t){return _u.error("Error parsing Figma URL:",t),null}}Oe();_e();_e();ct();var cO=K();async function Gm(e){let t=await se(`${cO}/api/projects`,{headers:{Authorization:`Bearer ${e}`}});if(zo(t))throw new Rn(t.status);return t.ok?(await t.json()).projects||[]:[]}_e();ct();var uO=K();async function qm(e,t){let n=await se(`${uO}/api/mappings?projectId=${t}`,{headers:{Authorization:`Bearer ${e}`}});if(zo(n))throw new Rn(n.status);if(!n.ok)return[];let r=await n.json();return Array.isArray(r.mappings)?r.mappings:[]}_e();ct();var pO=K();async function Ym(e,t,n,r=10,o=!1){let i=new URLSearchParams({projectId:t,limit:String(r),storyId:n});o&&i.set("includeAI","true");let s=await se(`${pO}/api/reviews/list?${i}`,{headers:{Authorization:`Bearer ${e}`}});if(zo(s))throw new Rn(s.status);if(!s.ok)return[];let a=await s.json();return a.success?a.reviews||[]:[]}_e();ct();var dO=K();async function Km(e,t){let n=await se(`${dO}/api/reviews/status?projectId=${t}`,{headers:{Authorization:`Bearer ${e}`}});if(zo(n))throw new Rn(n.status);if(!n.ok)return{};let r=await n.json();return r.success?r.statuses||{}:{}}Ui();function xO(e){return e.storyId?{id:e.id,componentId:"",storyId:e.storyId,modelId:e.models?.[0]||"unknown",complianceScore:e.complianceScore,issuesCount:e.issuesCount,costUsd:e.costUsd,inputTokens:e.inputTokens,outputTokens:e.outputTokens,parentReviewId:e.parentReviewId||void 0,iterationNumber:e.iterationNumber,storybookImageData:e.storybookScreenshot||void 0,figmaImageData:e.figmaScreenshot||void 0,aiPrompt:e.aiPrompt||void 0,aiResponse:e.aiResponse||void 0,issues:e.issues.map(t=>({id:t.id,reviewId:e.id,type:t.type,severity:t.severity,title:t.description,description:t.description,property:t.property,currentValue:t.actual,suggestedValue:t.expected,suggestedCode:t.suggestedFix||void 0,status:t.status||"pending",dismissed:t.dismissed||!1,dismissReason:t.dismissReason,dismissedBy:t.dismissedBy,figmaContext:t.figmaContext,selectedForFix:!1,createdAt:new Date(t.createdAt)})),createdAt:new Date(e.createdAt)}:null}var yO=K(),bO="UICOPILOT/WORKSPACE_PATH",SO="UICOPILOT/REQUEST_WORKSPACE_PATH",Xm=!1;function Qm(){let{sessionToken:e,setSessionToken:t,setAuthError:n}=ve(),{projects:r,selectedProjectId:o,currentStorybookPath:i,setProjects:s,setSelectedProjectId:a,setLoadingProjects:u,setCurrentStorybookPath:c}=Xe(),{currentStoryId:l,mappingsRefreshKey:d,mappingsByStoryId:g,setFigmaFileUrl:p,setCurrentMapping:h,setMappingsByStoryId:S,setMappingSource:T,setLoadingMapping:I}=Ze(),{setReviewResults:v,setReviewDetailTab:D,setStorybookImageUrl:N,setFigmaImageUrl:j,setFullPrompt:B,setFullResponse:z,bulkAddReviews:m,setReviewHistoryLoading:b}=ue(),[k,A]=fO([]),f=mO(null);Br(()=>{let x=F=>{F.origin.startsWith(yO)&&F.data?.type==="UICOPILOT_AUTH_SUCCESS"&&F.data.token&&(y.debug("[useDataInit] OAuth success, setting token"),t(F.data.token))};return window.addEventListener("message",x),()=>window.removeEventListener("message",x)},[t]);let C=hO({[bO]:x=>{y.debug("[useDataInit] Received workspace path:",x.path),c(x.path)}});Br(()=>{C(SO)},[C]),Br(()=>{if(!e)return;let x=!1;return(async()=>{try{u(!0);let P=await Gm(e);x||(s(P),n(null))}catch(P){P instanceof Rn&&(t(null),n(P.message)),y.error("[useDataInit] Failed to fetch projects:",P)}finally{x||u(!1)}})(),()=>{x=!0}},[e,s,u]),Br(()=>{if(!i||r.length===0)return;let x=r.find(F=>F.storybookRoot===i);x?o!==x.id&&(y.debug("[useDataInit] Auto-selecting project:",x.name),a(x.id)):o&&(y.debug("[useDataInit] No project matches this Storybook \u2014 clearing selection"),a(null))},[i,r,o,a]),Br(()=>{if(!o||r.length===0)return;let x=r.find(P=>P.id===o),F=x?.figmaFileId;if(x&&typeof F=="string"&&F){let P=F,M=P.includes("figma.com")&&Dk(P)?.fileKey||P;p(`https://www.figma.com/file/${M}`)}},[o,r,p]),Br(()=>!e||!o||Xm?void 0:(Xm=!0,(async()=>{try{let F=await Km(e,o);for(let[P,M]of Object.entries(F))Wr(P,{score:M.score,issueCount:M.issueCount,criticalCount:M.criticalCount,majorCount:M.majorCount,minorCount:M.minorCount});y.debug("[useDataInit] Populated sidebar badges for",Object.keys(F).length,"stories")}catch(F){F instanceof Rn&&(t(null),n(F.message)),y.error("[useDataInit] Failed to fetch review statuses:",F)}})(),()=>{Xm=!1}),[e,o]),Br(()=>{if(!e||!o)return;let x=!1;return(async()=>{try{let P=await qm(e,o);if(x)return;let M={};for(let O of P)O.storyId&&(M[O.storyId]=O);S(M),pk(Object.keys(M))}catch(P){P instanceof Rn&&(t(null),n(P.message)),y.error("[useDataInit] Failed to fetch all mappings:",P)}})(),()=>{x=!0}},[e,o,d,S]),Br(()=>{if(!l){h(null),T(null);return}let x=g[l]||null;x?(h(x),T("database")):(h(null),T(null)),I(!1)},[l,g,h,T,I]),Br(()=>{A([]),f.current=null},[l]),Br(()=>{if(!e||!o||!l)return;let x=!1;return(async()=>{b(!0);try{let P=await Ym(e,o,l,10,!0);if(!x){A(P);let M=P.map(O=>xO(O)).filter(Boolean);M.length>0&&m(M)}}catch(P){P instanceof Rn&&(t(null),n(P.message)),y.error("[useDataInit] Failed to fetch reviews:",P)}finally{x||b(!1)}})(),()=>{x=!0}},[e,o,l,b,m]);let E=gO(x=>{y.debug("[useDataInit] Applying review:",x.id,"with",x.issues.length,"issues");let F=[];if(typeof x.models=="string")try{F=JSON.parse(x.models)}catch{F=["claude-sonnet-4-20250514"]}else F=x.models;let P=x.issues.map(R=>({id:R.id,reviewId:x.id,type:R.type,severity:R.severity,title:R.description,description:R.description,file:void 0,lineNumber:void 0,property:R.property,currentValue:R.actual,suggestedValue:R.expected,suggestedCode:R.suggestedFix||void 0,status:R.status,dismissed:R.dismissed||!1,dismissReason:R.dismissReason,dismissedBy:R.dismissedBy,figmaContext:R.figmaContext,selectedForFix:!1,error:void 0,createdAt:new Date(R.createdAt)})),M=x.completedAt&&x.createdAt?new Date(x.completedAt).getTime()-new Date(x.createdAt).getTime():void 0,O=x.storyId||"";v({id:x.id,componentId:"",storyId:O,modelId:F[0]||"claude-sonnet-4-5-20250929",complianceScore:x.complianceScore,issuesCount:x.issuesCount,issues:P,createdAt:new Date(x.createdAt),timestamp:new Date(x.createdAt).toISOString(),costUsd:x.costUsd,inputTokens:x.inputTokens,outputTokens:x.outputTokens,reviewDurationMs:M});let w=bt.getState().currentStoryId;if(O&&O===w&&(x.storybookScreenshot&&(N(x.storybookScreenshot),wv(O,x.storybookScreenshot,x.figmaScreenshot??void 0),y.debug("[useDataInit] Loaded persisted Storybook screenshot")),x.figmaScreenshot&&(j(x.figmaScreenshot),y.debug("[useDataInit] Loaded persisted Figma screenshot"))),x.aiPrompt&&(B(x.aiPrompt),y.debug("[useDataInit] Loaded persisted AI prompt")),x.aiResponse&&(z(x.aiResponse),y.debug("[useDataInit] Loaded persisted AI response")),O){let R=x.issues.filter(X=>!X.dismissed),W=R.filter(X=>X.severity==="critical").length,L=R.filter(X=>X.severity==="major").length,oe=R.filter(X=>X.severity==="minor").length;Wr(O,{score:x.complianceScore,issueCount:R.length,criticalCount:W,majorCount:L,minorCount:oe})}},[v,N,j,B,z]);Br(()=>{if(k.length>0&&l&&f.current!==l){let x=k[0];x&&x.storyId===l&&(y.debug("[useDataInit] Auto-loading review:",x.id,"for:",l),f.current=l,E(x),D("issues"))}},[k,l,E,D])}cn();import{styled as ua}from"storybook/theming";var wO=ua.div({display:"flex",gap:"10px",marginTop:"8px"}),Rk=ua.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",fontSize:"13px",color:e.color.defaultText,cursor:"pointer"})),zk=ua.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.base==="dark"?"rgba(0, 204, 102, 0.2)":"rgba(0, 204, 102, 0.1)",border:`1px solid ${e.color.positive}`,borderRadius:"8px",marginBottom:"12px",display:"flex",alignItems:"center",justifyContent:"space-between"})),Nk=ua.div({display:"flex",alignItems:"center",gap:"8px"}),Ok=ua(Mn)(({theme:e})=>({backgroundColor:`${e.base==="dark"?"rgba(197, 48, 48, 0.15)":"rgba(254, 178, 178, 0.3)"} !important`,color:`${e.color.negative} !important`,border:`1px solid ${e.color.negative} !important`,padding:"6px 12px !important",fontSize:"12px !important"})),_k=({onConnect:e})=>{let{sessionToken:t,authMethod:n,setAuthMethod:r,startOAuth:o,logout:i,oauthPending:s,authError:a,saveApiKey:u}=Js(),[c,l]=et.useState(""),d=()=>{let g=c.trim();g&&(u(g),e?.())};return et.createElement(et.Fragment,null,et.createElement(vo,null,et.createElement(ko,null,"Authentication Method"),et.createElement(wO,null,et.createElement(Rk,null,et.createElement("input",{type:"radio",name:"authMethod",checked:n==="oauth",onChange:()=>r("oauth")}),"OAuth (Recommended)"),et.createElement(Rk,null,et.createElement("input",{type:"radio",name:"authMethod",checked:n==="apikey",onChange:()=>r("apikey")}),"API Key"))),n==="oauth"&&et.createElement(vo,null,et.createElement(ko,null,"Connect to ",At.NAME),t?et.createElement(zk,null,et.createElement(Nk,null,et.createElement("span",{style:{fontSize:"18px"}},"\u2713"),et.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"#00cc66"}},"Connected to ",At.NAME)),et.createElement(Ok,{onClick:i,title:"Sign out and switch to a different account"},"Sign out")):s?et.createElement("div",{style:{padding:"20px 0",textAlign:"center",fontSize:"13px"}},et.createElement("div",{style:{fontSize:"24px",marginBottom:"8px"}},"\u{1F510}"),et.createElement(bs,{style:{marginBottom:"8px",fontWeight:600}},"Sign-in window opened"),et.createElement(bs,{style:{color:"inherit",opacity:.7}},"Complete sign-in in the popup, then return here.")):et.createElement("div",null,a&&et.createElement("div",{style:{marginBottom:"12px",padding:"10px 12px",backgroundColor:"rgba(239, 68, 68, 0.1)",border:"1px solid rgba(239, 68, 68, 0.4)",borderRadius:"6px",fontSize:"12px",color:"#b91c1c"}},"\u26A0\uFE0F ",a),et.createElement(bs,{style:{marginBottom:"12px"}},"Connect to ",At.NAME," to manage projects and integrations."),et.createElement(Mn,{onClick:()=>{o(),e?.()}},"\u{1F517} Connect to ",At.NAME))),n==="apikey"&&et.createElement(vo,null,et.createElement(ko,null,"Session Token"),t?et.createElement(zk,null,et.createElement(Nk,null,et.createElement("span",{style:{fontSize:"18px"}},"\u2713"),et.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"#00cc66"}},"Connected to ",At.NAME)),et.createElement(Ok,{onClick:i,title:"Sign out and switch to a different account"},"Sign out")):et.createElement(et.Fragment,null,et.createElement(bs,{style:{marginBottom:"12px"}},"Paste the session token from your ",At.NAME," setup page."),et.createElement(ys,{type:"password",placeholder:"Paste session token",value:c,onChange:g=>l(g.target.value)}),et.createElement(Mn,{disabled:!c.trim(),style:{marginTop:"12px"},onClick:d},"Save Token"))))};import ut,{useState as Ki}from"react";Ce();import qn,{useState as vO,useEffect as kO,useCallback as CO}from"react";import{styled as fo,keyframes as $k}from"storybook/theming";var TO=$k({from:{opacity:0},to:{opacity:1}}),IO=$k({from:{opacity:0,transform:"translate(-50%, -50%) scale(0.95)"},to:{opacity:1,transform:"translate(-50%, -50%) scale(1)"}}),FO=fo.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:1e4,animation:`${TO} 150ms ease-out`}),EO=fo.div(({theme:e})=>({position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",zIndex:10001,backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,padding:`${e.layoutMargin*2.4}px`,minWidth:"320px",maxWidth:"440px",boxShadow:"0 8px 30px rgba(0, 0, 0, 0.2)",animation:`${IO} 150ms ease-out`})),AO=fo.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,color:e.color.defaultText})),PO=fo.p(({theme:e})=>({margin:`${e.layoutMargin}px 0 ${e.layoutMargin*2}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,color:e.color.defaultText,lineHeight:1.5})),LO=fo.div(({theme:e})=>({display:"flex",justifyContent:"flex-end",gap:`${e.layoutMargin*.8}px`})),MO=fo.input(({theme:e})=>({width:"100%",padding:`${e.layoutMargin*.6}px ${e.layoutMargin*.8}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:e.background.app,color:e.color.defaultText,marginBottom:`${e.layoutMargin}px`,boxSizing:"border-box","&:focus":{outline:"none",borderColor:e.color.secondary}})),BO=fo.p(({theme:e})=>({margin:`0 0 ${e.layoutMargin*.6}px`,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.base,color:e.color.mediumdark})),DO=fo.button(({theme:e})=>({padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,cursor:"pointer",backgroundColor:"transparent",color:e.color.defaultText,transition:"background-color 0.15s","&:hover":{backgroundColor:e.background.hoverable}})),RO=fo.button(({theme:e,variant:t})=>({padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,border:"none",borderRadius:e.appBorderRadius,cursor:"pointer",transition:"opacity 0.15s",backgroundColor:t==="danger"?e.color.negative:e.color.secondary,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9},"&:disabled":{opacity:.4,cursor:"not-allowed"}})),Vr=({isOpen:e,title:t,message:n,confirmLabel:r="OK",cancelLabel:o="Cancel",variant:i="default",confirmText:s,onConfirm:a,onCancel:u})=>{let[c,l]=vO(""),d=!!s&&c!==s,g=CO(p=>{p.key==="Escape"&&u()},[u]);return kO(()=>{if(e)return l(""),document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[e,g]),e?qn.createElement(qn.Fragment,null,qn.createElement(FO,{onClick:u}),qn.createElement(EO,{role:"dialog","aria-modal":"true","aria-label":t},qn.createElement(AO,null,t),qn.createElement(PO,null,n),s&&qn.createElement(qn.Fragment,null,qn.createElement(BO,null,"Type ",qn.createElement("strong",null,s)," to confirm:"),qn.createElement(MO,{type:"text",value:c,onChange:p=>l(p.target.value),placeholder:s,autoFocus:!0})),qn.createElement(LO,null,qn.createElement(DO,{onClick:u},o),qn.createElement(RO,{variant:i,onClick:a,disabled:d},r)))):null};import{styled as pn}from"storybook/theming";function zO(e,t,n){return e.filter(r=>r.id===t||!r.storybookRoot?!0:n?r.storybookRoot===n:!1)}var NO=pn.div({marginBottom:"30px"}),OO=pn.div({display:"flex",gap:"8px",alignItems:"center"}),_O=pn(vn)({flex:1}),$O=pn(sn)({padding:"8px 12px",whiteSpace:"nowrap"}),UO=pn.div(({theme:e})=>({marginTop:"12px",padding:"12px",backgroundColor:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,borderRadius:"6px"})),jO=pn.div(({theme:e})=>({marginTop:"6px",padding:"8px 10px",fontSize:"11px",lineHeight:1.4,color:e.color.warning,backgroundColor:`${e.color.warning}15`,border:`1px solid ${e.color.warning}40`,borderRadius:"4px"})),HO=pn.div(({theme:e})=>({marginBottom:"10px",padding:"8px 10px",border:`1px solid ${e.appBorderColor}`,borderRadius:"4px",backgroundColor:e.background.content})),WO=pn.div(({theme:e})=>({fontSize:"11px",lineHeight:1.5,color:e.color.mediumdark,marginBottom:"6px"})),VO=pn.div({display:"flex",alignItems:"center",gap:"6px"}),GO=pn.a(({theme:e})=>({flex:1,fontSize:"11px",fontFamily:e.typography.fonts.mono,color:e.color.secondary,textDecoration:"none",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap","&:hover":{textDecoration:"underline"}})),qO=pn.button(({theme:e})=>({fontSize:"11px",padding:"3px 8px",borderRadius:"3px",border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.hoverable,color:e.color.defaultText,cursor:"pointer",whiteSpace:"nowrap","&:hover":{backgroundColor:e.background.app}}));function Uk(e){return/figma\.com\/community\/file\//.test(e)}var Jm=pn.div({marginBottom:"10px","&:last-child":{marginBottom:0}}),Zm=pn.label(({theme:e})=>({display:"block",fontSize:"12px",fontWeight:500,marginBottom:"4px",color:e.color.mediumdark})),eh=pn(ys)({fontSize:"13px",padding:"6px 8px"}),YO=pn.div({display:"flex",gap:"8px",marginTop:"12px"}),jk=pn(sn)({fontSize:"12px",padding:"6px 12px"}),KO=pn(jk)(({theme:e})=>({backgroundColor:"transparent",color:e.color.mediumdark,border:`1px solid ${e.appBorderColor}`,"&:hover":{backgroundColor:e.background.hoverable}})),XO=pn.button(({theme:e})=>({padding:"8px",backgroundColor:"transparent",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,color:e.color.mediumdark,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:e.typography.size.s1,transition:"all 0.15s","&:hover:not(:disabled)":{borderColor:e.color.negative,color:e.color.negative},"&:disabled":{opacity:.4,cursor:"not-allowed"}})),Hk=()=>{let{projects:e,selectedProjectId:t,setSelectedProjectId:n,loadingProjects:r,createProject:o,deleteProject:i}=uo(),{currentStorybookPath:s}=Xe(),[a,u]=Ki(!1),[c,l]=Ki(!1),[d,g]=Ki(!1),[p,h]=Ki(!1),[S,T]=Ki({name:"",storybookRoot:"",figmaFileUrl:""}),I=e.find(f=>f.id===t),v=zO(e,t,s),D=f=>{n(f||null),u(!1)},N=async()=>{if(t)try{h(!0),await i(t),g(!1)}catch(f){console.error("Failed to delete project:",f)}finally{h(!1)}},j=process.env.STORYBOOK_UICOPILOT_FIGMA_KIT||"",[B,z]=Ki(!1),m=()=>{j&&navigator.clipboard.writeText(j).then(()=>{z(!0),setTimeout(()=>z(!1),2e3)})},b=()=>{if(u(!0),s){let f=s.replace(/\/+$/,"").split("/").pop()||"";T({storybookRoot:s,name:f,figmaFileUrl:""})}},k=async()=>{if(S.name.trim())try{l(!0);let f;if(S.figmaFileUrl.trim()){let E=S.figmaFileUrl.trim(),x=E.match(/figma\.com\/(?:file|design)\/([a-zA-Z0-9]+)/);f=x?x[1]:E}let C=await o({name:S.name.trim(),storybookRoot:S.storybookRoot.trim()||void 0,figmaFileId:f});n(C.id),u(!1),T({name:"",storybookRoot:"",figmaFileUrl:""})}catch(f){console.error("Failed to create project:",f)}finally{l(!1)}},A=f=>{T(C=>{let E={...C,storybookRoot:f};if(!C.name&&f){let x=f.replace(/\/+$/,"").split("/").pop()||"";E.name=x}return E})};return ut.createElement(NO,null,ut.createElement(Ly,null,"Project"),ut.createElement(OO,null,ut.createElement(_O,{value:t||"",onChange:f=>D(f.target.value),disabled:r||a},ut.createElement("option",{value:""},"-- Select a project --"),v.map(f=>ut.createElement("option",{key:f.id,value:f.id},f.name))),ut.createElement($O,{onClick:b,disabled:r,type:"button"},"+ New"),ut.createElement(XO,{onClick:()=>g(!0),disabled:!t||r,title:"Delete project",type:"button"},"\u{1F5D1}")),ut.createElement(Vr,{isOpen:d,title:"Delete Project",message:`This will permanently remove all reviews, mappings, and history for "${I?.name||"this project"}". This cannot be undone.`,confirmLabel:p?"Deleting...":"Delete",confirmText:I?.name,variant:"danger",onConfirm:N,onCancel:()=>g(!1)}),a&&ut.createElement(UO,null,ut.createElement(Jm,null,ut.createElement(Zm,null,"Storybook Path (for fix generation)"),ut.createElement(eh,{type:"text",placeholder:"/path/to/your/storybook",value:S.storybookRoot,onChange:f=>A(f.target.value)})),ut.createElement(Jm,null,ut.createElement(Zm,null,"Project Name *"),ut.createElement(eh,{type:"text",placeholder:"my-storybook",value:S.name,onChange:f=>{let C=f.target.value;T(E=>({...E,name:C}))}})),j&&ut.createElement(HO,null,ut.createElement(WO,null,ut.createElement("strong",null,"1.")," Open this template's Figma kit, then click"," ",ut.createElement("strong",null,"Open in Figma")," (or ",ut.createElement("strong",null,"Get a copy"),") to duplicate it to your own Figma workspace. ",ut.createElement("strong",null,"2.")," ","Paste the URL of your copy (",ut.createElement("code",null,"figma.com/design/\u2026"),") into the field below."),ut.createElement(VO,null,ut.createElement(GO,{href:j,target:"_blank",rel:"noopener noreferrer",title:j},j),ut.createElement(qO,{type:"button",onClick:m},B?"Copied!":"Copy"))),ut.createElement(Jm,null,ut.createElement(Zm,null,"Your Figma File URL (after duplicating)"),ut.createElement(eh,{type:"text",placeholder:"https://www.figma.com/design/...",value:S.figmaFileUrl,onChange:f=>{let C=f.target.value;T(E=>({...E,figmaFileUrl:C}))}}),Uk(S.figmaFileUrl)&&ut.createElement(jO,null,"\u26A0 This is a community file URL \u2014 it can't be read by the API. Use the duplicated copy's URL instead (see instructions above).")),ut.createElement(YO,null,ut.createElement(jk,{onClick:k,disabled:c||!S.name.trim()||!S.figmaFileUrl.trim()||Uk(S.figmaFileUrl)},c?"Creating...":"Create"),ut.createElement(KO,{onClick:()=>{u(!1),T({name:"",storybookRoot:"",figmaFileUrl:""})}},"Cancel"))))};import xt,{useState as ba,useCallback as v1,useEffect as m5}from"react";import{styled as Rr}from"storybook/theming";import nn,{useState as Xi,useEffect as m_,useCallback as yc}from"react";import{styled as Gr}from"storybook/theming";Ce();_e();ct();Ce();_e();ct();import Gt,{useState as th}from"react";import{styled as Yn,keyframes as QO}from"storybook/theming";var JO={autoLayout:"Auto Layout",componentStructure:"Structure",naming:"Naming",constraints:"Constraints",spacing:"Spacing",styles:"Styles",variants:"Variants"},ZO=e=>e==="pass"?"\u2713":e==="warn"?"\u26A0":"\u2717",e_=Yn.div({position:"relative",display:"inline-flex"}),t_=QO`
|
|
30
|
+
\u2705 ${ae} issue${ae>1?"s were":" was"} auto-dismissed as false positive${ae>1?"s":""} (values already match design spec). Score recalculated to reflect active issues only.`));let Xt=$e.complianceScore??$e.validation?.complianceScore;if(y.debug("[Review] Score sources:",{directScore:$e.complianceScore,validationScore:$e.validation?.complianceScore,parsedScore:Xt}),Xt==null){let Ie=_t.match(/(?:\*?\*?(?:##?)?\s*)?SCORE:\s*(\d+)/i);Xt=Ie?parseInt(Ie[1],10):void 0,y.debug("[Review] Parsed score from response:",Xt)}let hn=at.current[ge];hn||(hn=await aa(ge)||{storyFile:"",componentFile:"[Component].tsx",cssFile:"[Component].css",baseDir:""},hn.storyFile&&(at.current[ge]=hn)),y.debug("[Review] Story file paths:",hn);let it=mn.map(Ie=>({...Ie,file:Ie.file||Fm(Ie.fixTarget,hn)||Em(Ie,hn)}));if(it=Am(it),y.debug("[Review] After de-duplication:",it.length,"issues"),!R){let Ie=it.length;it=it.filter(ye=>ye.property?.toLowerCase()!=="textcontent"&&!ye.description?.toLowerCase().includes("text content")),Ie!==it.length&&y.debug("[Review] Filtered out",Ie-it.length,"textContent issues (toggle OFF)")}let _r;ie&&J&&(_r=(bt.getState().reviewHistory.find(ye=>ye.id===J)?.iterationNumber||0)+1);let _n={id:Ke,componentId:ge,storyId:ge,modelId:l[0],parentReviewId:ie&&J||void 0,iterationNumber:_r,figmaFileKey:void 0,figmaNodeId:Dt||void 0,figmaFileUrl:kr||void 0,complianceScore:Xt,visualSimilarity:$e.visualSimilarity,issuesCount:it.filter(Ie=>!Ie.dismissed).length,issues:it,createdAt:new Date,reviewDurationMs:Date.now()-me,costUsd:$e.costUsd,inputTokens:$e.inputTokens,outputTokens:$e.outputTokens,cacheCreationTokens:$e.cacheCreationTokens,cacheReadTokens:$e.cacheReadTokens,variantMismatch:$e.variantMismatch,storybookVariant:$e.storybookVariant,figmaVariant:$e.figmaVariant};if(y.debug("[useAIReview] About to call addReview with review:",{id:_n.id,storyId:_n.storyId,issueCount:_n.issues?.length,complianceScore:_n.complianceScore,createdAt:_n.createdAt?.toISOString(),inputTokens:_n.inputTokens,outputTokens:_n.outputTokens,costUsd:_n.costUsd,cacheCreationTokens:_n.cacheCreationTokens,cacheReadTokens:_n.cacheReadTokens}),O(_n),y.debug("[useAIReview] addReview called successfully"),ge&&oe.enableReviewBadges){let Ie=it.filter(ye=>!ye.dismissed);Wr(ge,{score:Xt??100,issueCount:Ie.length,criticalCount:Ie.filter(ye=>ye.severity==="critical").length,majorCount:Ie.filter(ye=>ye.severity==="major").length,minorCount:Ie.filter(ye=>ye.severity==="minor").length})}w("issues");let xs=it.filter(Ie=>!Ie.dismissed).length;y.debug("[Review] Created review with",xs,"active issues,",it.length-xs,"dismissed");let Za=Dt||bt.getState().currentMapping?.figmaNodeId;y.debug("[Review] Validation check:",{figmaNodeId:Dt,effectiveFigmaNodeIdSingle:Za,hasSessionToken:!!xe,selectedProjectId:Pe,issueCount:it.length}),y.debug("[Review] Issue validation handled server-side. Active:",it.filter(Ie=>!Ie.dismissed).length,"Dismissed:",it.filter(Ie=>Ie.dismissed).length)}catch(Ke){y.error("[Review] Failed to parse issues:",Ke)}}else throw wo?(y.error("[Review] ERROR: No structured result received from backend!"),y.error("[Review] Streaming text length:",wo.length),y.error("[Review] This indicates a bug in SSE parsing or backend not sending complete event"),new Error("Review completed but failed to receive structured result. Check console for details.")):new Error("No results received from API")}catch($){if($ instanceof Error&&$.name==="AbortError"){y.debug("[useAIReview] Review cancelled by user"),gt(0,"Review cancelled");return}y.error("[useAIReview] Review error:",$);let _=ok($);throw p(_),ge&&oe.enableReviewBadges&&lk(ge),gt(0,`Error: ${_}`),$}finally{d(!1),g(null),ce.current=null,pe.current&&(clearTimeout(pe.current),pe.current=null),nt(null)}},[e,xe,Pe,ge,dt,l,d,p,h,E,x,F,P,I,v,j,It,gt,N,f,k,m,b,nt,ne]),Zn=la(()=>n?.issues?o==="all"?n.issues:n.issues.filter(lt=>lt.severity===o):[],[n,o]),Ge=la(()=>{ce.current&&(y.debug("[useAIReview] Cancelling review..."),ce.current.abort())},[]);return{isReviewing:e,reviewError:t,reviewResults:n,showReviewMenu:r,severityFilter:o,showStreamingPanel:i,streamingPanelCollapsed:s,streamingMessages:a,streamingProgress:u,streamingStatus:c,startReview:On,cancelReview:Ge,setShowReviewMenu:S,setSeverityFilter:T,setShowStreamingPanel:I,setStreamingPanelCollapsed:v,addStreamingMessage:D,updateStreamingMessage:N,clearStreamingMessages:j,setStreamingProgress:B,setStreamingStatus:z,resetReview:L,getFilteredIssues:Zn}};Ce();Oe();_e();import{useCallback as tZ}from"react";var iZ=K();Ce();Oe();import{useEffect as gk,useRef as fk}from"react";import{useStorybookApi as MN,useStorybookState as BN,addons as DN}from"storybook/manager-api";var mk="storyArgsUpdated",Dm=()=>{let e=MN(),t=BN(),{currentStoryId:n,currentStoryName:r,setCurrentStoryId:o,setCurrentStoryName:i}=Ze(),{clearStaleReviewsForStory:s,resetReview:a,isReviewing:u,isValidating:c}=ue(),l=fk(null),d=fk(0);return gk(()=>{let g=t.storyId;if(g){l.current!==g&&(y.debug("[useCurrentStory] Story changed from",l.current,"to",g),s(g),l.current=g,d.current=Date.now()),o(g);let p=e.getData(g),h=p?.name&&p.name!=="default"?`${p.title} / ${p.name}`:p?.title||g;i(h),y.debug("[useCurrentStory] Current story:",{storyId:g,fullName:h})}else o(null),i(""),l.current=null},[t.storyId,e,o,i,s]),gk(()=>{let g=DN.getChannel(),p=null,h=S=>{if(S.storyId===n){if(u||c){y.debug("[useCurrentStory] Story args changed but review in progress, skipping reset");return}p&&clearTimeout(p),p=setTimeout(()=>{let{isReviewing:T,isValidating:I}=bt.getState();if(T||I){y.debug("[useCurrentStory] Story args changed but review started, skipping reset");return}if(Date.now()-d.current<2e3){y.debug("[useCurrentStory] Story args changed but story just navigated, skipping reset");return}y.debug("[useCurrentStory] Story args changed, clearing stale review"),a()},500)}};return g.on(mk,h),()=>{g.off(mk,h),p&&clearTimeout(p)}},[n,a,u,c]),{currentStoryId:n,currentStoryName:r}};Ce();_e();ct();import{useCallback as hk}from"react";import{addons as xk}from"storybook/manager-api";var yk=K(),ai=()=>{let{currentMapping:e,loadingMapping:t,setCurrentMapping:n,refreshMappings:r}=Ze(),{sessionToken:o}=ve(),{selectedProjectId:i}=Xe(),s=hk(async c=>{if(!o)throw new Error("Not authenticated");if(!i)throw new Error("No project selected");let l=await se(`${yk}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify({projectId:i,...c})});if(!l.ok)throw new Error("Failed to create mapping");let d=await l.json();r();try{xk.getChannel().emit("uireview/mappings-changed")}catch{}return d.mapping},[o,i,r]),a=hk(async c=>{if(!o)throw new Error("Not authenticated");if(!(await se(`${yk}/api/mappings?id=${encodeURIComponent(c)}`,{method:"DELETE",headers:{Authorization:`Bearer ${o}`}})).ok)throw new Error("Failed to delete mapping");r();try{xk.getChannel().emit("uireview/mappings-changed")}catch{}},[o,r]);return{currentMapping:e,loadingMapping:t,hasMapping:!!e,setCurrentMapping:n,createMapping:s,deleteMapping:a,refreshMappings:r}};Ui();Ce();import{useCallback as Rm,useEffect as bk,useRef as RN}from"react";import{useChannel as zN,addons as Sk}from"storybook/manager-api";Oe();var NN=3e4,ON="forceRemount";function _N(e,t){let n=parseFloat(e.replace(/[^0-9.-]/g,"")),r=parseFloat(t.replace(/[^0-9.-]/g,""));if(isNaN(n)||isNaN(r))return!1;let o=Math.abs(n-r);return e.includes("px")||t.includes("px")?o<.5:e.includes("%")||t.includes("%")?o<1:o<.5}function $N(e){let t=["design system","design token","css variable","var(--","hard-coded"],n=`${e.description} ${e.suggestedFix||""} ${e.suggestedValue||""}`.toLowerCase();return t.some(r=>n.includes(r))}var UN="UICOPILOT/APPLY_FIXES",jN="UICOPILOT/FIX_STARTED",HN="UICOPILOT/FIX_COMPLETED",WN="UICOPILOT/FIX_FAILED",VN="UICOPILOT/ALL_FIXES_APPLIED",zm=(e={})=>{let{onComplete:t,storybookRoot:n}=e,{isApplying:r,setIsApplying:o,setApplyFixesResult:i,updateIssueStatus:s,updateIssueGeneratedFix:a,setReviewDetailTab:u}=ue(),c=RN(null),l=Rm(()=>{c.current&&(clearTimeout(c.current),c.current=null)},[]);bk(()=>()=>l(),[l]),bk(()=>{let h=Sk.getChannel(),S=()=>{bt.getState().isApplying&&(y.error("[useApplyFixes] WebSocket disconnected while applying fixes"),l(),o(!1),i({succeeded:0,failed:0,total:0,error:"Connection lost. Please restart Storybook and try again."}))};return h.on("channelWSDisconnect",S),()=>h.off("channelWSDisconnect",S)},[l,o,i]);let d=zN({[jN]:({issueId:h})=>{y.debug(`[useApplyFixes] Fix started for issue: ${h}`),a(h,{status:"applying"})},[HN]:({issueId:h,result:S})=>{y.debug(`[useApplyFixes] Fix completed for issue: ${h}`,S),s(h,"applied"),a(h,{status:"applied"})},[WN]:({issueId:h,error:S})=>{y.error(`[useApplyFixes] Fix failed for issue: ${h}`,S),s(h,"failed",S),a(h,{status:"failed",error:S})},[VN]:async({summary:h})=>{if(y.debug("[useApplyFixes] All fixes applied:",h),l(),o(!1),i({succeeded:h.succeeded,failed:h.failed,total:h.total}),h.failed>0?y.warn(`Applied ${h.succeeded}/${h.total} fixes. ${h.failed} failed.`):y.debug(`Successfully applied all ${h.total} fixes!`),h.succeeded>0){y.debug("[useApplyFixes] Emitting FORCE_REMOUNT to refresh story...");try{Sk.getChannel().emit(ON,{storyId:bt.getState().currentStoryId}),y.debug("[useApplyFixes] FORCE_REMOUNT emitted")}catch(S){y.warn("[useApplyFixes] Failed to emit FORCE_REMOUNT:",S)}y.debug("[useApplyFixes] Reloading Storybook preview to load fresh CSS..."),await sc(),y.debug("[useApplyFixes] Storybook preview reloaded")}t&&(y.debug("[useApplyFixes] Triggering screenshot refresh after fixes"),t()),y.debug("[useApplyFixes] Switching to Issues tab to show results"),u("issues")}}),g=Rm(h=>{let S=[],T=[],I=[];for(let v of h){let D=v.currentValue||v.actual||"",N=v.suggestedValue||v.expected||"";if(D&&N&&_N(D,N)){S.push(v);continue}if($N(v)){T.push(v);continue}let j=v.generatedFix?.filePath||v.file||"";if(!j){y.warn(`[useApplyFixes] Skipping issue ${v.id} - no target file path`);continue}let B=j.toLowerCase().split(".").pop()||"",z=["tsx","jsx","ts","js"].includes(B)?"component":"css";I.push({...v,targetFilePath:j,targetFileType:z})}return{actionable:I,negligible:S,designTokens:T}},[]);return{applyFixes:Rm(h=>{if(r){y.warn("[useApplyFixes] Already applying fixes");return}if(h.length===0){y.warn("[useApplyFixes] No issues to fix");return}let S=g(h);if(S.negligible.length>0&&y.debug(`[useApplyFixes] Filtered ${S.negligible.length} negligible issue(s)`),S.designTokens.length>0&&y.debug(`[useApplyFixes] Skipped ${S.designTokens.length} design token suggestion(s)`),S.actionable.length===0){y.warn("[useApplyFixes] No actionable issues to fix after filtering");return}let T=S.actionable.filter(D=>D.targetFileType==="css"),I=S.actionable.filter(D=>D.targetFileType==="component");if(y.debug("[useApplyFixes] Applying fixes:"),T.length>0){let D=[...new Set(T.map(N=>N.targetFilePath))];y.debug(` - ${T.length} CSS issue(s) in: ${D.join(", ")}`)}if(I.length>0){let D=[...new Set(I.map(N=>N.targetFilePath))];y.debug(` - ${I.length} component issue(s) in: ${D.join(", ")}`),y.warn(" \u26A0\uFE0F Component files will be modified - review changes carefully!")}if(!document.querySelector("#storybook-preview-iframe")?.contentWindow){y.error("[useApplyFixes] Storybook preview iframe not found \u2014 connection lost"),i({succeeded:0,failed:0,total:S.actionable.length,error:"Connection lost. Please reload the page and try again."});return}o(!0),l(),c.current=setTimeout(()=>{bt.getState().isApplying&&(y.error("[useApplyFixes] Apply timed out \u2014 no response from server"),o(!1),i({succeeded:0,failed:0,total:S.actionable.length,error:"Apply timed out. The Storybook server may have disconnected. Please reload the page and try again."}))},NN),d(UN,{issues:S.actionable,storybookRoot:n||void 0})},[d,r,o,i,g,n,l]),isApplying:r}};Ce();_e();import{useState as IZ}from"react";var AZ=K();Ce();import{useState as li}from"react";_e();Oe();ct();var GN=K();async function fc(e,t,n,r,o){if(!e)return y.warn("[DismissalSync] No database ID provided, skipping server sync"),{success:!1,error:"No database ID"};try{let i=await se(`${GN}/api/issues/dismiss`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},credentials:"include",body:JSON.stringify({issueId:e,dismissed:t,dismissReason:n,dismissedBy:r})});if(!i.ok){let a=await i.text();return y.error("[DismissalSync] API error:",i.status,a),{success:!1,error:`API error: ${i.status}`}}let s=await i.json();return y.debug(`[DismissalSync] Synced issue ${e}, new score: ${s.newScore}`),{success:!0,newScore:s.newScore,activeIssuesCount:s.activeIssuesCount}}catch(i){return y.error("[DismissalSync] Failed to sync:",i),{success:!1,error:i.message}}}async function wk(e,t){let n=e.filter(i=>i.dbId);if(n.length===0)return y.warn("[DismissalSync] No valid dismissals to sync (missing dbIds)"),{success:!1,error:"No valid dismissals"};let o=(await Promise.all(n.map(i=>fc(i.dbId,i.dismissed,i.dismissReason,i.dismissedBy,t)))).filter(i=>i.success);if(o.length>0){let i=o[o.length-1];return y.debug(`[DismissalSync] Batch synced ${o.length}/${n.length} dismissals`),i}return{success:!1,error:"All dismissals failed"}}cn();mm();Ui();Oe();_e();var qN=["no-fix-needed","no-fix-required","no-change-needed","no-changes-needed","no-change-required","no-changes-required","no-action-needed","no-action-required","no_fix_needed","no_change_needed","no_changes_needed","already-correct","values-match","values-already-match","already-matches","css-matches","matches-figma","correctly-implemented","implementation-correct","none-needed","none-required","skipped","skip"],YN=["no changes required","no changes needed","no fix required","no fix needed","values already match","already matches","matches expected","correctly implemented","implementation is correct"],KN=K();function Nm(){let[e,t]=li(!1),[n,r]=li(null),[o,i]=li(null),[s,a]=li(null),[u,c]=li(null),[l,d]=li(null),[g,p]=li(null),{sessionToken:h}=ve(),{selectedProjectId:S}=Xe(),{currentStoryId:T,currentStoryName:I}=Ze(),{workspacePath:v,updateIssueGeneratedFix:D,batchUpdateIssueGeneratedFixes:N,includeComponentIssues:j,dismissIssue:B,recalculateScore:z,addStreamingMessage:m,roleOverride:b}=ue();return{generateBatchFixes:async A=>{if(!h){r("Not authenticated");return}if(!S){r("No project selected");return}if(!T){r("No story selected");return}if(A.length===0){r("No issues provided");return}t(!0),r(null),i(null),c(null),d(null),a({total:A.length,completed:0});let f=A.map(C=>({issueId:C.id,generatedFix:{code:"",diffPreview:"",filePath:C.file||"",confidence:0,strategy:"",status:"generating"}}));N(f);try{y.debug("[useBatchGenerateFixes] Generating fixes for",A.length,"issues");let C=null;try{let R=ra();R?.computed&&(C=R.computed,y.debug("[useBatchGenerateFixes] Extracted computed styles for fix context"))}catch(R){y.warn("[useBatchGenerateFixes] Could not extract computed styles:",R)}let E=null;try{E=await aa(T),E&&y.debug("[useBatchGenerateFixes] Resolved file paths from index.json:",E)}catch(R){y.warn("[useBatchGenerateFixes] Could not resolve story file paths:",R)}let x=await fetch(`${KN}/api/fixes/generate-batch`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",Authorization:`Bearer ${h}`,...ac(b)},body:JSON.stringify({projectId:S,storyId:T,workspacePath:v,includeComponentIssues:j,computedStyles:C,storyFilePaths:E,reviewContext:{storyName:I||void 0,variantArgs:$i()||void 0},issues:A.map(R=>({id:R.id,dbId:R.dbId,title:R.title,description:R.description,property:R.property,currentValue:R.currentValue,suggestedValue:R.suggestedValue,file:R.file,lineNumber:R.lineNumber,severity:R.severity,type:R.type,fixTarget:R.fixTarget,domElement:R.domElement,figmaContext:R.figmaContext,suggestedFix:R.suggestedFix}))})});if(!x.ok){let R=await x.json().catch(()=>({}));throw new Error(R.error||"Batch fix generation failed")}let F=await x.json();if(!F.success)throw new Error(F.error||"Batch fix generation failed");if(y.debug("[useBatchGenerateFixes] Generated",F.result.fixes.length,"fixes"),F.result.storybookRoot&&(p(F.result.storybookRoot),y.debug("[useBatchGenerateFixes] Stored storybookRoot:",F.result.storybookRoot)),F.result.selfReview&&(d(F.result.selfReview),y.debug("[useBatchGenerateFixes] Self-review:",F.result.selfReview)),F.result.partialFailure){let{failedBatches:R,errors:W}=F.result.partialFailure;y.warn(`[useBatchGenerateFixes] Partial failure: ${R.join(", ")} batch(es) failed`),y.warn("[useBatchGenerateFixes] Errors:",W),r(`Some fixes couldn't be generated (${R.join(", ")}): ${W[0]||"Unknown error"}`)}a({total:A.length,completed:F.result.fixes.length});let P=new Set(F.result.fixes.map(R=>R.issueId)),L=A.filter(R=>!P.has(R.id));L.length>0&&(y.warn(`[useBatchGenerateFixes] ${L.length} issues not returned by API, marking as failed`),L.forEach(R=>{D(R.id,{code:"",diffPreview:"",filePath:R.file||"",confidence:0,strategy:"skipped",status:"failed",error:"Fix generation skipped by server"})})),F.timing&&(i({durationSec:F.timing.durationSec,issueCount:F.timing.issueCount,avgPerIssueSec:F.timing.avgPerIssueSec}),y.debug(`[useBatchGenerateFixes] Generation took ${F.timing.durationSec}s for ${F.timing.issueCount} issues`)),F.result?.usage&&(c({inputTokens:F.result.usage.inputTokens||0,outputTokens:F.result.usage.outputTokens||0,costUsd:F.result.usage.costUsd||0,modelId:F.result.usage.modelId||"unknown",provider:F.result.usage.provider||"unknown"}),y.debug(`[useBatchGenerateFixes] Token usage: ${F.result.usage.inputTokens} in, ${F.result.usage.outputTokens} out, $${F.result.usage.costUsd?.toFixed(4)}`));let O=[],w=[];if(F.result.fixes.forEach(R=>{let W=R.noChangesNeeded===!0;if(!W){let X=(R.fixStrategy||"").toLowerCase(),ne=(R.generatedCode||"").toLowerCase(),xe=(R.diffPreview||"").toLowerCase(),Ee=qN.some(Pe=>X.includes(Pe.toLowerCase())||X.replace(/[-_]/g,"").includes(Pe.replace(/[-_]/g,""))),nt=YN.some(Pe=>ne.includes(Pe)||xe.includes(Pe));W=Ee||nt}let M=A.find(X=>X.id===R.issueId);if(W&&M){let X=M.suggestedValue,ne=M.currentValue;X&&ne&&!oi(X,ne)&&(y.debug(`[useBatchGenerateFixes] SAFETY CHECK: values differ (expected="${X}", actual="${ne}"), NOT auto-dismissing issue ${R.issueId}`),W=!1)}let oe=M?.programmaticallyVerified===!0;if(y.debug(`[useBatchGenerateFixes] Processing fix for issue ${R.issueId}:`,{isFalsePositive:W,isProgrammaticIssue:oe,detectedBy:M?.detectedBy,noChangesNeeded:R.noChangesNeeded,fixStrategy:R.fixStrategy,title:M?.title?.substring(0,50)}),oe&&W&&(y.debug(`[useBatchGenerateFixes] SKIPPING auto-dismiss for programmatic issue ${R.issueId} (detectedBy: ${M?.detectedBy})`),W=!1),W){let X=`Auto-dismissed: ${R.fixStrategy} - values already match`;y.debug(`[useBatchGenerateFixes] Auto-dismissing issue ${R.issueId} - noChangesNeeded: ${R.noChangesNeeded}, strategy: "${R.fixStrategy}"`),B(R.issueId,X),O.push({localId:R.issueId,dbId:M?.dbId,dismissReason:X}),w.push({issueId:R.issueId,generatedFix:{code:R.generatedCode||"",diffPreview:R.diffPreview||"",filePath:R.filePath,confidence:R.confidence,strategy:R.fixStrategy,status:"ready",error:void 0,noChangesExplanation:R.noChangesExplanation}})}else{let X=R.error||R.fixStrategy==="skipped"?"failed":"ready";w.push({issueId:R.issueId,generatedFix:{code:R.generatedCode,diffPreview:R.diffPreview,filePath:R.filePath,confidence:R.confidence,strategy:R.fixStrategy,status:X,error:R.error,noChangesExplanation:R.noChangesExplanation}})}}),w.length>0&&(y.debug(`[useBatchGenerateFixes] Applying ${w.length} fix updates in batch`),N(w)),O.length>0){if(y.debug(`[useBatchGenerateFixes] Auto-dismissed ${O.length} false positive(s), recalculating score`),z(),h){let W=O.filter(M=>M.dbId).map(M=>({dbId:M.dbId,dismissed:!0,dismissReason:M.dismissReason,dismissedBy:"system"}));W.length>0&&(y.debug(`[useBatchGenerateFixes] Syncing ${W.length} dismissals to server`),wk(W,h).then(M=>{M.success?y.debug(`[useBatchGenerateFixes] Server score updated to: ${M.newScore}`):y.warn("[useBatchGenerateFixes] Failed to sync dismissals:",M.error)}).catch(M=>{y.error("[useBatchGenerateFixes] Error syncing dismissals:",M)}))}let R=O.length===1?"1 issue was auto-dismissed as a false positive (values already match the design). The compliance score has been recalculated.":`${O.length} issues were auto-dismissed as false positives (values already match the design). The compliance score has been recalculated.`;m({role:"system",content:R})}y.debug("[useBatchGenerateFixes] Updated",F.result.fixes.length,"issues with fixes")}catch(C){y.error("[useBatchGenerateFixes] Failed to generate batch fixes:",C),r(C?.message||"Failed to generate batch fixes");let E=A.map(x=>({issueId:x.id,generatedFix:{code:"",diffPreview:"",filePath:x.file||"",confidence:0,strategy:"",status:"failed",error:C?.message||"Failed to generate fix"}}));N(E)}finally{t(!1),setTimeout(()=>a(null),1500)}},isGenerating:e,error:n,timing:o,progress:s,usage:u,selfReview:l,lastStorybookRoot:g}}Ce();Oe();_e();ct();import{useState as Om,useCallback as _m}from"react";var XN=K();function $m(){let[e,t]=Om([]),[n,r]=Om(!1),[o,i]=Om(null),{sessionToken:s}=ve(),{selectedProjectId:a}=Xe(),{currentStoryId:u}=Ze(),{setReviewResults:c}=ue(),l=_m(async()=>{if(!(!s||!a)){r(!0),i(null);try{let p=new URLSearchParams({projectId:a,limit:"10"});u&&p.append("storyId",u);let h=await se(`${XN}/api/reviews/list?${p.toString()}`,{method:"GET",credentials:"include",headers:{Authorization:`Bearer ${s}`}});if(!h.ok){let T=await h.json().catch(()=>({}));throw new Error(T.error||"Failed to fetch reviews")}let S=await h.json();if(!S.success)throw new Error("Failed to fetch reviews");y.debug("[useReviewHistory] Fetched",S.reviews.length,"reviews for:",u),t(S.reviews)}catch(p){y.error("[useReviewHistory] Failed to fetch reviews:",p),i(p instanceof Error?p.message:"Failed to fetch reviews")}finally{r(!1)}}},[s,a,u]),d=_m(p=>{y.debug("[useReviewHistory] Applying review:",p.id,"with",p.issues.length,"issues");let h=[];if(typeof p.models=="string")try{h=JSON.parse(p.models)}catch(v){y.error("[useReviewHistory] Failed to parse models:",v),h=["claude-sonnet-4-20250514"]}else h=p.models;let S=p.issues.map(v=>({id:v.id,reviewId:p.id,type:v.type,severity:v.severity,title:v.description,description:v.description,file:void 0,lineNumber:void 0,property:v.property,currentValue:v.actual,suggestedValue:v.expected,suggestedCode:v.suggestedFix||void 0,status:v.status,dismissed:v.dismissed||!1,dismissReason:v.dismissReason,dismissedBy:v.dismissedBy,selectedForFix:!1,error:void 0,createdAt:new Date(v.createdAt)})),T=p.completedAt&&p.createdAt?new Date(p.completedAt).getTime()-new Date(p.createdAt).getTime():void 0,I=p.storyId||"";if(c({id:p.id,componentId:"",storyId:I,modelId:h[0]||"claude-sonnet-4-6",complianceScore:p.complianceScore,issuesCount:p.issuesCount,issues:S,createdAt:new Date(p.createdAt),timestamp:new Date(p.createdAt).toISOString(),costUsd:p.costUsd,inputTokens:p.inputTokens,outputTokens:p.outputTokens,reviewDurationMs:T}),I){let v=p.issues.filter(B=>!B.dismissed),D=v.filter(B=>B.severity==="critical").length,N=v.filter(B=>B.severity==="major").length,j=v.filter(B=>B.severity==="minor").length;Wr(I,{score:p.complianceScore,issueCount:v.length,criticalCount:D,majorCount:N,minorCount:j})}},[c]),g=_m(p=>{let h=e.find(S=>S.id===p);if(!h){y.error("[useReviewHistory] Review not found:",p);return}d(h)},[e,d]);return{reviews:e,isLoading:n,error:o,fetchReviews:l,loadReview:g}}Ce();Oe();import{useEffect as QN,useState as JN,useRef as mc}from"react";import{useChannel as ZN}from"storybook/manager-api";var eO="UICOPILOT/WORKSPACE_PATH",vk="UICOPILOT/REQUEST_WORKSPACE_PATH",tO=3e3,nO=500,rO=5,Um=()=>{let[e,t]=JN({isSupported:!1,isDetecting:!0,workspacePath:null}),{setWorkspacePath:n}=ue(),r=mc(!1),o=mc(null),i=mc(0),s=mc(null),a=ZN({[eO]:({path:u})=>{r.current||(r.current=!0,o.current&&clearTimeout(o.current),s.current&&clearInterval(s.current),y.debug("[useAutoApplySupport] Server responded - auto-apply supported"),y.debug("[useAutoApplySupport] Workspace path:",u),t({isSupported:!0,isDetecting:!1,workspacePath:u}),n(u))}});return QN(()=>(y.debug("[useAutoApplySupport] Requesting workspace path from server (retry 0)..."),a(vk,{}),s.current=setInterval(()=>{!r.current&&i.current<rO&&(i.current++,y.debug(`[useAutoApplySupport] Requesting workspace path from server (retry ${i.current})...`),a(vk,{}))},nO),o.current=setTimeout(async()=>{if(s.current&&clearInterval(s.current),!r.current){y.debug("[useAutoApplySupport] Channel detection timed out, trying HTTP fallback...");try{let u=await fetch("/__uicopilot/health");if(u.ok){let c=await u.json();if(c.ok&&c.workspacePath&&!r.current){r.current=!0,y.debug("[useAutoApplySupport] HTTP fallback succeeded - auto-apply supported"),y.debug("[useAutoApplySupport] Workspace path:",c.workspacePath),t({isSupported:!0,isDetecting:!1,workspacePath:c.workspacePath}),n(c.workspacePath);return}}}catch{}r.current||(r.current=!0,y.debug("[useAutoApplySupport] Both channel and HTTP detection failed - auto-apply NOT supported"),t({isSupported:!1,isDetecting:!1,workspacePath:null}))}},tO),()=>{o.current&&clearTimeout(o.current),s.current&&clearInterval(s.current)}),[a]),e},jm=async e=>{try{if(navigator.clipboard&&window.isSecureContext)return await navigator.clipboard.writeText(e),!0;{let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.left="-999999px",t.style.top="-999999px",document.body.appendChild(t),t.focus(),t.select();let n=document.execCommand("copy");return document.body.removeChild(t),n}}catch(t){return y.error("[copyToClipboard] Failed to copy:",t),!1}};Ce();_e();import{useEffect as oO,useRef as iO}from"react";var aee=K(),sO=new Set;function Hm(){let{sessionToken:e}=ve(),{selectedProjectId:t}=Xe(),n=iO(!1);oO(()=>{t&&sO.add(t)},[e,t])}Ce();cn();import{useCallback as uee,useState as pee}from"react";import{useState as ci,useMemo as Bk,useCallback as Yi}from"react";_e();Oe();ct();cn();import{useState as go,useEffect as hc,useRef as Gi,useCallback as Wm}from"react";var aO=300;function kk({projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o=20,enabled:i=!0}){let[s,a]=go([]),[u,c]=go({}),[l,d]=go(0),[g,p]=go([]),[h,S]=go(new Set),[T,I]=go(!1),[v,D]=go(!1),[N,j]=go(null),B=Gi(1),z=Gi(null),m=Gi(null),[b,k]=go(0),A=Gi(!1),f=Gi({projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o});f.current={projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o};let C=Wm(async(L,O,w=!1)=>{let{projectId:R,typeFilter:W,search:M,figmaPage:oe,limit:X}=f.current;if(!R||!W)return;z.current&&z.current.abort();let ne=new AbortController;z.current=ne,O?D(!0):I(!0),j(null);try{let xe=K(),Ee=localStorage.getItem("uicopilot_session_token");if(!Ee)throw new Error(`Not authenticated. Please connect to ${At.NAME} first.`);let nt=new URLSearchParams({projectId:R,page:String(L),limit:String(X)});W&&nt.append("type",W),oe&&nt.append("figmaPage",oe),M.trim()&&nt.append("search",M.trim()),w&&nt.append("refresh","true");let Pe=await fetch(`${xe}/api/figma/frames?${nt.toString()}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${Ee}`},signal:ne.signal});if(!Pe.ok){let pe=await Pe.json();throw new Error(pe.error||"Failed to fetch frames")}let ge=await Pe.json(),dt=ge.frames||[],fe=ge.thumbnails||{},ce=Pe.headers.get("X-Cache-Status");if(dt.length===0&&L===1&&!O&&!w&&!A.current&&ce!=="HIT"){y.debug("[useFigmaFrameFetch] Empty result (cache miss), retrying with refresh=true"),A.current=!0,await C(1,!1,!0);return}O?(a(pe=>[...pe,...dt]),c(pe=>({...pe,...fe}))):(a(dt),c(fe)),d(ge.total||dt.length),ge.pages&&p(ge.pages),ge.cacheDiff?.added&&S(new Set(ge.cacheDiff.added)),B.current=L}catch(xe){if(xe instanceof DOMException&&xe.name==="AbortError")return;let Ee=xe instanceof Error?xe.message:"Failed to fetch Figma frames.";j(Ee),y.error("Error fetching frames:",xe)}finally{ne.signal.aborted||(I(!1),D(!1))}},[]);hc(()=>{if(!i||!e||!t)return;A.current=!1,m.current&&clearTimeout(m.current);let L=n.trim()?aO:0;return m.current=setTimeout(()=>{B.current=1,C(1,!1)},L),()=>{m.current&&clearTimeout(m.current)}},[e,t,n,r,i,b,C]);let E=Gi(new Set);hc(()=>{if(s.length===0)return;let L={};for(let O of s)O.thumbnailCdnUrl&&!u[O.id]&&(L[O.id]=O.thumbnailCdnUrl);Object.keys(L).length>0&&c(O=>({...O,...L}))},[s]),hc(()=>{if(s.length===0)return;let L=s.filter(w=>!w.thumbnailCdnUrl&&!u[w.id]&&!E.current.has(w.id)).map(w=>w.id);if(L.length===0)return;L.forEach(w=>E.current.add(w)),(async()=>{try{let{projectId:w}=f.current,R=K(),W=localStorage.getItem("uicopilot_session_token");if(!W||!w)return;let M=await se(`${R}/api/figma/frames?projectId=${w}&thumbnailIds=${L.join(",")}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${W}`}},6e4);if(M.ok){let oe=await M.json();oe.thumbnails&&Object.keys(oe.thumbnails).length>0&&c(X=>({...X,...oe.thumbnails}))}}catch(w){L.forEach(R=>E.current.delete(R)),y.error("Failed to fetch frame thumbnails:",w)}})()},[s,u]),hc(()=>()=>{z.current&&z.current.abort(),m.current&&clearTimeout(m.current)},[]);let x=Wm(async()=>{let L=B.current+1;await C(L,!0)},[C]),F=Wm(()=>{A.current=!1,B.current=1,a([]),c({}),k(L=>L+1)},[]),P=s.length<l;return{frames:s,thumbnails:u,totalFrames:l,availablePages:g,recentlyAdded:h,isLoading:T,loadingMore:v,hasMore:P,loadMore:x,refresh:F,error:N}}_e();Oe();ct();import{useState as qi,useCallback as xc,useRef as lO}from"react";function Ck({projectId:e}){let[t,n]=qi({}),[r,o]=qi({}),[i,s]=qi(new Set),[a,u]=qi(new Set),[c,l]=qi({}),[d,g]=qi(null),p=lO({}),h=xc(async v=>{if(!(!e||i.has(v))){s(D=>new Set(D).add(v));try{let D=K(),N=localStorage.getItem("uicopilot_session_token"),j=await se(`${D}/api/figma/variants?projectId=${e}&componentSetId=${v}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`}});if(j.ok){let B=await j.json();if(B.variants){n(m=>({...m,[v]:B.variants}));let z={};for(let m of B.variants)m.thumbnailCdnUrl&&(z[m.id]=m.thumbnailCdnUrl);o(m=>({...m,[v]:{...m[v]||{},...z}})),p.current[v]||(p.current[v]=new Set),Object.keys(z).forEach(m=>p.current[v].add(m))}else o(z=>({...z,[v]:z[v]||{}}))}else o(B=>({...B,[v]:{}}))}catch(D){y.error("Failed to fetch variant metadata:",D),o(N=>({...N,[v]:{}}))}finally{s(D=>{let N=new Set(D);return N.delete(v),N})}}},[e,i]),S=xc(async(v,D)=>{if(!e||D.length===0)return;p.current[v]||(p.current[v]=new Set);let N=r[v]||{},j=D.filter(B=>!p.current[v].has(B)&&!N[B]);if(j.length!==0){j.forEach(B=>p.current[v].add(B)),u(B=>new Set(B).add(v));try{let B=K(),z=localStorage.getItem("uicopilot_session_token"),m=await se(`${B}/api/figma/variants?projectId=${e}&componentSetId=${v}&thumbnailIds=${j.join(",")}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}});if(m.ok){let b=await m.json();b.rateLimitError?(g(b.rateLimitError),j.forEach(k=>p.current[v]?.delete(k))):(b.thumbnails&&Object.keys(b.thumbnails).length>0&&o(k=>({...k,[v]:{...k[v]||{},...b.thumbnails}})),Array.isArray(b.failed)&&b.failed.length>0&&l(k=>{let A=new Set(k[v]||[]);for(let f of b.failed)A.add(f);return{...k,[v]:A}}))}}catch(B){y.error("Failed to fetch variant thumbnails:",B),j.forEach(z=>p.current[v]?.delete(z))}finally{u(B=>{let z=new Set(B);return z.delete(v),z})}}},[e]),T=xc(v=>{o(D=>{let N={...D};return delete N[v],N}),n(D=>{let N={...D};return delete N[v],N}),l(D=>{let N={...D};return delete N[v],N}),delete p.current[v]},[]),I=xc(()=>{o({}),n({}),l({}),p.current={}},[]);return{variantChildren:t,variantThumbnails:r,variantFailed:c,loadingVariants:i,loadingThumbnails:a,rateLimitError:d,fetchVariants:h,fetchVariantThumbnails:S,clearVariantsForSet:T,clearAllVariants:I}}_e();Ui();Ce();Oe();ct();import{useState as Tk,useEffect as Ik,useRef as Fk,useCallback as Vm}from"react";function Ek({expandedSetId:e,availableFilters:t,filtersReady:n}){let[r,o]=Tk(null),[i,s]=Tk(!1),a=Fk(null),u=Fk(new Set),c=Vm(async()=>{if(!e||!n||t.length===0||a.current===e||u.current.has(e))return;let g=$i();if(!g||Object.keys(g).length===0)return;let p=bt.getState().currentStoryId||"",h=p.replace(/--/g," / ").replace(/-/g," ").replace(/\b\w/g,S=>S.toUpperCase());a.current=e,s(!0),o(null);try{let S=K(),T=localStorage.getItem("uicopilot_session_token"),I=await se(`${S}/api/figma/match-filters`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${T}`},body:JSON.stringify({storyName:h,storyId:p,storyArgs:g,availableFilters:t.map(v=>({property:v.property,values:v.values}))})});if(I.ok){let v=await I.json();v.confidence>0&&Object.keys(v.suggestedFilters).length>0&&(y.debug("[useFilterSuggestion] Suggestion:",v),o(v))}else I.status===404?y.debug("[useFilterSuggestion] match-filters endpoint not available (404), skipping suggestions"):y.error("[useFilterSuggestion] Unexpected status:",I.status)}catch(S){y.error("[useFilterSuggestion] Error:",S)}finally{s(!1)}},[e,t,n]);Ik(()=>{c()},[c]),Ik(()=>{e||(o(null),a.current=null)},[e]);let l=Vm(()=>{},[]),d=Vm(()=>{e&&u.current.add(e),o(null)},[e]);return{suggestion:r,isLoading:i,applySuggestion:l,dismissSuggestion:d}}function Ak(e,t,n){let r=[];return e&&r.push("COMPONENT_SET"),t&&r.push("FRAME"),n&&r.push("COMPONENT"),r.join(",")}function Pk(e){let t={};for(let n of Object.values(e))for(let r of n)if(r.variantProperties)for(let[o,i]of Object.entries(r.variantProperties))t[o]||(t[o]=new Set),t[o].add(i);return Object.entries(t).map(([n,r])=>({property:n,values:Array.from(r).sort()}))}function Lk(e){let t={},n=r=>{if(r.variantProperties)for(let[o,i]of Object.entries(r.variantProperties))t[o]||(t[o]=new Set),t[o].add(i);r.children?.forEach(n)};return e.forEach(n),Object.entries(t).map(([r,o])=>({property:r,values:Array.from(o).sort()}))}function Mk(e,t,n){if(t.length===0||!t.some(o=>o.value))return!0;let r=o=>o.variantProperties?t.every(i=>i.value?o.variantProperties?.[i.property]===i.value:!0):!1;return!!(r(e)||e.children?.some(r)||n?.some(r))}function ca({projectId:e,limit:t=20,enabled:n=!0}){let[r,o]=ci(!0),[i,s]=ci(!1),[a,u]=ci(!1),[c,l]=ci(""),[d,g]=ci(""),[p,h]=ci([]),[S,T]=ci(new Set),I=Yi(fe=>{l(fe),p.length>0&&h([]),S.size>0&&T(new Set)},[p.length,S.size]),v=Ak(r,i,a),{frames:D,thumbnails:N,totalFrames:j,availablePages:B,recentlyAdded:z,isLoading:m,loadingMore:b,hasMore:k,loadMore:A,refresh:f,error:C}=kk({projectId:e,typeFilter:v,search:c,figmaPage:d||void 0,limit:t,enabled:n&&!!v}),{variantChildren:E,variantThumbnails:x,variantFailed:F,loadingVariants:P,loadingThumbnails:L,rateLimitError:O,fetchVariants:w,fetchVariantThumbnails:R,clearVariantsForSet:W,clearAllVariants:M}=Ck({projectId:e}),oe=Bk(()=>{let fe=Pk(E),ce=Lk(D),pe={};for(let at of[...fe,...ce])pe[at.property]||(pe[at.property]=new Set),at.values.forEach(It=>pe[at.property].add(It));return Object.entries(pe).map(([at,It])=>({property:at,values:Array.from(It).sort()}))},[E,D]),X=S.size===1?Array.from(S)[0]:null,ne=Ek({expandedSetId:X,availableFilters:oe,filtersReady:oe.length>0}),xe=Yi(()=>{if(!ne.suggestion)return;let{suggestedFilters:fe}=ne.suggestion,ce=Object.entries(fe).map(([pe,at])=>({property:pe,value:at}));h(ce),ne.dismissSuggestion()},[ne.suggestion]),Ee=Bk(()=>p.some(fe=>fe.value)?D.filter(fe=>Mk(fe,p,E[fe.id])):D,[D,p,E]),nt=Yi((fe,ce)=>{ce.stopPropagation();let pe=!S.has(fe);T(at=>{let It=new Set(at);return It.has(fe)?It.delete(fe):It.add(fe),It}),pe&&!E[fe]&&!P.has(fe)?w(fe):pe||W(fe)},[S,E,P,w,W]),Pe=Yi((fe,ce)=>{let pe=ce===""?null:ce;h(at=>at.find(gt=>gt.property===fe)?at.map(gt=>gt.property===fe?{...gt,value:pe}:gt):[...at,{property:fe,value:pe}])},[]),ge=Yi(()=>{h([])},[]),dt=Yi(fe=>{let ce=D.find(pe=>pe.id===fe);if(ce?.thumbnailCdnUrl)return ce.thumbnailCdnUrl;if(N[fe])return N[fe];for(let pe of Object.values(x))if(pe[fe])return pe[fe]},[N,x]);return{frames:D,filteredFrames:Ee,thumbnails:N,totalFrames:j,isLoading:m,loadingMore:b,hasMore:k,error:C,loadMore:A,refresh:f,search:c,setSearch:I,figmaPage:d,setFigmaPage:g,availablePages:B,recentlyAdded:z,showComponentSets:r,showFrames:i,showComponents:a,setShowComponentSets:o,setShowFrames:s,setShowComponents:u,variantFilters:p,availableFilters:oe,handleFilterChange:Pe,clearFilters:ge,expandedSets:S,toggleExpanded:nt,variantChildren:E,variantThumbnails:x,variantFailed:F,loadingVariants:P,loadingThumbnails:L,rateLimitError:O,fetchVariantThumbnails:R,resolveThumbnail:dt,filterSuggestion:ne.suggestion,filterSuggestionLoading:ne.isLoading,applySuggestedFilters:xe,dismissFilterSuggestion:ne.dismissSuggestion}}Ce();import{useEffect as Br,useCallback as gO,useState as fO,useRef as mO}from"react";import{useChannel as hO}from"storybook/manager-api";function zo(e){return e.status===401||e.status===403}var Rn=class extends Error{constructor(t){super(`Authentication failed (${t}). Please reconnect.`),this.name="AuthError",this.status=t}};cn();function Dk(e){try{let t=new URL(e),n=t.pathname.match(/\/(file|design)\/([a-zA-Z0-9]+)/),r=n?n[2]:null,o=t.searchParams.get("node-id"),i=t.hash.match(/node-id=([0-9-:]+)/),s=o||(i?i[1]:null);if(!r||!s)return null;let a=s.replace(/-/g,":");return{fileKey:r,nodeId:a}}catch(t){return _u.error("Error parsing Figma URL:",t),null}}Oe();_e();_e();ct();var cO=K();async function Gm(e){let t=await se(`${cO}/api/projects`,{headers:{Authorization:`Bearer ${e}`}});if(zo(t))throw new Rn(t.status);return t.ok?(await t.json()).projects||[]:[]}_e();ct();var uO=K();async function qm(e,t){let n=await se(`${uO}/api/mappings?projectId=${t}`,{headers:{Authorization:`Bearer ${e}`}});if(zo(n))throw new Rn(n.status);if(!n.ok)return[];let r=await n.json();return Array.isArray(r.mappings)?r.mappings:[]}_e();ct();var pO=K();async function Ym(e,t,n,r=10,o=!1){let i=new URLSearchParams({projectId:t,limit:String(r),storyId:n});o&&i.set("includeAI","true");let s=await se(`${pO}/api/reviews/list?${i}`,{headers:{Authorization:`Bearer ${e}`}});if(zo(s))throw new Rn(s.status);if(!s.ok)return[];let a=await s.json();return a.success?a.reviews||[]:[]}_e();ct();var dO=K();async function Km(e,t){let n=await se(`${dO}/api/reviews/status?projectId=${t}`,{headers:{Authorization:`Bearer ${e}`}});if(zo(n))throw new Rn(n.status);if(!n.ok)return{};let r=await n.json();return r.success?r.statuses||{}:{}}Ui();function xO(e){return e.storyId?{id:e.id,componentId:"",storyId:e.storyId,modelId:e.models?.[0]||"unknown",complianceScore:e.complianceScore,issuesCount:e.issuesCount,costUsd:e.costUsd,inputTokens:e.inputTokens,outputTokens:e.outputTokens,parentReviewId:e.parentReviewId||void 0,iterationNumber:e.iterationNumber,storybookImageData:e.storybookScreenshot||void 0,figmaImageData:e.figmaScreenshot||void 0,aiPrompt:e.aiPrompt||void 0,aiResponse:e.aiResponse||void 0,issues:e.issues.map(t=>({id:t.id,reviewId:e.id,type:t.type,severity:t.severity,title:t.description,description:t.description,property:t.property,currentValue:t.actual,suggestedValue:t.expected,suggestedCode:t.suggestedFix||void 0,status:t.status||"pending",dismissed:t.dismissed||!1,dismissReason:t.dismissReason,dismissedBy:t.dismissedBy,figmaContext:t.figmaContext,selectedForFix:!1,createdAt:new Date(t.createdAt)})),createdAt:new Date(e.createdAt)}:null}var yO=K(),bO="UICOPILOT/WORKSPACE_PATH",SO="UICOPILOT/REQUEST_WORKSPACE_PATH",Xm=!1;function Qm(){let{sessionToken:e,setSessionToken:t,setAuthError:n}=ve(),{projects:r,selectedProjectId:o,currentStorybookPath:i,setProjects:s,setSelectedProjectId:a,setLoadingProjects:u,setCurrentStorybookPath:c}=Xe(),{currentStoryId:l,mappingsRefreshKey:d,mappingsByStoryId:g,setFigmaFileUrl:p,setCurrentMapping:h,setMappingsByStoryId:S,setMappingSource:T,setLoadingMapping:I}=Ze(),{setReviewResults:v,setReviewDetailTab:D,setStorybookImageUrl:N,setFigmaImageUrl:j,setFullPrompt:B,setFullResponse:z,bulkAddReviews:m,setReviewHistoryLoading:b}=ue(),[k,A]=fO([]),f=mO(null);Br(()=>{let x=F=>{F.origin.startsWith(yO)&&F.data?.type==="UICOPILOT_AUTH_SUCCESS"&&F.data.token&&(y.debug("[useDataInit] OAuth success, setting token"),t(F.data.token))};return window.addEventListener("message",x),()=>window.removeEventListener("message",x)},[t]);let C=hO({[bO]:x=>{y.debug("[useDataInit] Received workspace path:",x.path),c(x.path)}});Br(()=>{C(SO)},[C]),Br(()=>{if(!e)return;let x=!1;return(async()=>{try{u(!0);let P=await Gm(e);x||(s(P),n(null))}catch(P){P instanceof Rn&&(t(null),n(P.message)),y.error("[useDataInit] Failed to fetch projects:",P)}finally{x||u(!1)}})(),()=>{x=!0}},[e,s,u]),Br(()=>{if(!i||r.length===0)return;let x=r.find(F=>F.storybookRoot===i);x?o!==x.id&&(y.debug("[useDataInit] Auto-selecting project:",x.name),a(x.id)):o&&(y.debug("[useDataInit] No project matches this Storybook \u2014 clearing selection"),a(null))},[i,r,o,a]),Br(()=>{if(!o||r.length===0)return;let x=r.find(P=>P.id===o),F=x?.figmaFileId;if(x&&typeof F=="string"&&F){let P=F,L=P.includes("figma.com")&&Dk(P)?.fileKey||P;p(`https://www.figma.com/file/${L}`)}},[o,r,p]),Br(()=>!e||!o||Xm?void 0:(Xm=!0,(async()=>{try{let F=await Km(e,o);for(let[P,L]of Object.entries(F))Wr(P,{score:L.score,issueCount:L.issueCount,criticalCount:L.criticalCount,majorCount:L.majorCount,minorCount:L.minorCount});y.debug("[useDataInit] Populated sidebar badges for",Object.keys(F).length,"stories")}catch(F){F instanceof Rn&&(t(null),n(F.message)),y.error("[useDataInit] Failed to fetch review statuses:",F)}})(),()=>{Xm=!1}),[e,o]),Br(()=>{if(!e||!o)return;let x=!1;return(async()=>{try{let P=await qm(e,o);if(x)return;let L={};for(let O of P)O.storyId&&(L[O.storyId]=O);S(L),pk(Object.keys(L))}catch(P){P instanceof Rn&&(t(null),n(P.message)),y.error("[useDataInit] Failed to fetch all mappings:",P)}})(),()=>{x=!0}},[e,o,d,S]),Br(()=>{if(!l){h(null),T(null);return}let x=g[l]||null;x?(h(x),T("database")):(h(null),T(null)),I(!1)},[l,g,h,T,I]),Br(()=>{A([]),f.current=null},[l]),Br(()=>{if(!e||!o||!l)return;let x=!1;return(async()=>{b(!0);try{let P=await Ym(e,o,l,10,!0);if(!x){A(P);let L=P.map(O=>xO(O)).filter(Boolean);L.length>0&&m(L)}}catch(P){P instanceof Rn&&(t(null),n(P.message)),y.error("[useDataInit] Failed to fetch reviews:",P)}finally{x||b(!1)}})(),()=>{x=!0}},[e,o,l,b,m]);let E=gO(x=>{y.debug("[useDataInit] Applying review:",x.id,"with",x.issues.length,"issues");let F=[];if(typeof x.models=="string")try{F=JSON.parse(x.models)}catch{F=["claude-sonnet-4-20250514"]}else F=x.models;let P=x.issues.map(R=>({id:R.id,reviewId:x.id,type:R.type,severity:R.severity,title:R.description,description:R.description,file:void 0,lineNumber:void 0,property:R.property,currentValue:R.actual,suggestedValue:R.expected,suggestedCode:R.suggestedFix||void 0,status:R.status,dismissed:R.dismissed||!1,dismissReason:R.dismissReason,dismissedBy:R.dismissedBy,figmaContext:R.figmaContext,selectedForFix:!1,error:void 0,createdAt:new Date(R.createdAt)})),L=x.completedAt&&x.createdAt?new Date(x.completedAt).getTime()-new Date(x.createdAt).getTime():void 0,O=x.storyId||"";v({id:x.id,componentId:"",storyId:O,modelId:F[0]||"claude-sonnet-4-5-20250929",complianceScore:x.complianceScore,issuesCount:x.issuesCount,issues:P,createdAt:new Date(x.createdAt),timestamp:new Date(x.createdAt).toISOString(),costUsd:x.costUsd,inputTokens:x.inputTokens,outputTokens:x.outputTokens,reviewDurationMs:L});let w=bt.getState().currentStoryId;if(O&&O===w&&(x.storybookScreenshot&&(N(x.storybookScreenshot),wv(O,x.storybookScreenshot,x.figmaScreenshot??void 0),y.debug("[useDataInit] Loaded persisted Storybook screenshot")),x.figmaScreenshot&&(j(x.figmaScreenshot),y.debug("[useDataInit] Loaded persisted Figma screenshot"))),x.aiPrompt&&(B(x.aiPrompt),y.debug("[useDataInit] Loaded persisted AI prompt")),x.aiResponse&&(z(x.aiResponse),y.debug("[useDataInit] Loaded persisted AI response")),O){let R=x.issues.filter(X=>!X.dismissed),W=R.filter(X=>X.severity==="critical").length,M=R.filter(X=>X.severity==="major").length,oe=R.filter(X=>X.severity==="minor").length;Wr(O,{score:x.complianceScore,issueCount:R.length,criticalCount:W,majorCount:M,minorCount:oe})}},[v,N,j,B,z]);Br(()=>{if(k.length>0&&l&&f.current!==l){let x=k[0];x&&x.storyId===l&&(y.debug("[useDataInit] Auto-loading review:",x.id,"for:",l),f.current=l,E(x),D("issues"))}},[k,l,E,D])}cn();import{styled as ua}from"storybook/theming";var wO=ua.div({display:"flex",gap:"10px",marginTop:"8px"}),Rk=ua.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",fontSize:"13px",color:e.color.defaultText,cursor:"pointer"})),zk=ua.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.base==="dark"?"rgba(0, 204, 102, 0.2)":"rgba(0, 204, 102, 0.1)",border:`1px solid ${e.color.positive}`,borderRadius:"8px",marginBottom:"12px",display:"flex",alignItems:"center",justifyContent:"space-between"})),Nk=ua.div({display:"flex",alignItems:"center",gap:"8px"}),Ok=ua(Mn)(({theme:e})=>({backgroundColor:`${e.base==="dark"?"rgba(197, 48, 48, 0.15)":"rgba(254, 178, 178, 0.3)"} !important`,color:`${e.color.negative} !important`,border:`1px solid ${e.color.negative} !important`,padding:"6px 12px !important",fontSize:"12px !important"})),_k=({onConnect:e})=>{let{sessionToken:t,authMethod:n,setAuthMethod:r,startOAuth:o,logout:i,oauthPending:s,authError:a,saveApiKey:u}=Js(),[c,l]=et.useState(""),d=()=>{let g=c.trim();g&&(u(g),e?.())};return et.createElement(et.Fragment,null,et.createElement(vo,null,et.createElement(ko,null,"Authentication Method"),et.createElement(wO,null,et.createElement(Rk,null,et.createElement("input",{type:"radio",name:"authMethod",checked:n==="oauth",onChange:()=>r("oauth")}),"OAuth (Recommended)"),et.createElement(Rk,null,et.createElement("input",{type:"radio",name:"authMethod",checked:n==="apikey",onChange:()=>r("apikey")}),"API Key"))),n==="oauth"&&et.createElement(vo,null,et.createElement(ko,null,"Connect to ",At.NAME),t?et.createElement(zk,null,et.createElement(Nk,null,et.createElement("span",{style:{fontSize:"18px"}},"\u2713"),et.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"#00cc66"}},"Connected to ",At.NAME)),et.createElement(Ok,{onClick:i,title:"Sign out and switch to a different account"},"Sign out")):s?et.createElement("div",{style:{padding:"20px 0",textAlign:"center",fontSize:"13px"}},et.createElement("div",{style:{fontSize:"24px",marginBottom:"8px"}},"\u{1F510}"),et.createElement(bs,{style:{marginBottom:"8px",fontWeight:600}},"Sign-in window opened"),et.createElement(bs,{style:{color:"inherit",opacity:.7}},"Complete sign-in in the popup, then return here.")):et.createElement("div",null,a&&et.createElement("div",{style:{marginBottom:"12px",padding:"10px 12px",backgroundColor:"rgba(239, 68, 68, 0.1)",border:"1px solid rgba(239, 68, 68, 0.4)",borderRadius:"6px",fontSize:"12px",color:"#b91c1c"}},"\u26A0\uFE0F ",a),et.createElement(bs,{style:{marginBottom:"12px"}},"Connect to ",At.NAME," to manage projects and integrations."),et.createElement(Mn,{onClick:()=>{o(),e?.()}},"\u{1F517} Connect to ",At.NAME))),n==="apikey"&&et.createElement(vo,null,et.createElement(ko,null,"Session Token"),t?et.createElement(zk,null,et.createElement(Nk,null,et.createElement("span",{style:{fontSize:"18px"}},"\u2713"),et.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"#00cc66"}},"Connected to ",At.NAME)),et.createElement(Ok,{onClick:i,title:"Sign out and switch to a different account"},"Sign out")):et.createElement(et.Fragment,null,et.createElement(bs,{style:{marginBottom:"12px"}},"Paste the session token from your ",At.NAME," setup page."),et.createElement(ys,{type:"password",placeholder:"Paste session token",value:c,onChange:g=>l(g.target.value)}),et.createElement(Mn,{disabled:!c.trim(),style:{marginTop:"12px"},onClick:d},"Save Token"))))};import ut,{useState as Ki}from"react";Ce();import qn,{useState as vO,useEffect as kO,useCallback as CO}from"react";import{styled as fo,keyframes as $k}from"storybook/theming";var TO=$k({from:{opacity:0},to:{opacity:1}}),IO=$k({from:{opacity:0,transform:"translate(-50%, -50%) scale(0.95)"},to:{opacity:1,transform:"translate(-50%, -50%) scale(1)"}}),FO=fo.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:1e4,animation:`${TO} 150ms ease-out`}),EO=fo.div(({theme:e})=>({position:"fixed",top:"50%",left:"50%",transform:"translate(-50%, -50%)",zIndex:10001,backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,padding:`${e.layoutMargin*2.4}px`,minWidth:"320px",maxWidth:"440px",boxShadow:"0 8px 30px rgba(0, 0, 0, 0.2)",animation:`${IO} 150ms ease-out`})),AO=fo.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,color:e.color.defaultText})),PO=fo.p(({theme:e})=>({margin:`${e.layoutMargin}px 0 ${e.layoutMargin*2}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,color:e.color.defaultText,lineHeight:1.5})),LO=fo.div(({theme:e})=>({display:"flex",justifyContent:"flex-end",gap:`${e.layoutMargin*.8}px`})),MO=fo.input(({theme:e})=>({width:"100%",padding:`${e.layoutMargin*.6}px ${e.layoutMargin*.8}px`,fontSize:e.typography.size.s2,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,backgroundColor:e.background.app,color:e.color.defaultText,marginBottom:`${e.layoutMargin}px`,boxSizing:"border-box","&:focus":{outline:"none",borderColor:e.color.secondary}})),BO=fo.p(({theme:e})=>({margin:`0 0 ${e.layoutMargin*.6}px`,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.base,color:e.color.mediumdark})),DO=fo.button(({theme:e})=>({padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,cursor:"pointer",backgroundColor:"transparent",color:e.color.defaultText,transition:"background-color 0.15s","&:hover":{backgroundColor:e.background.hoverable}})),RO=fo.button(({theme:e,variant:t})=>({padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.6}px`,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,border:"none",borderRadius:e.appBorderRadius,cursor:"pointer",transition:"opacity 0.15s",backgroundColor:t==="danger"?e.color.negative:e.color.secondary,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9},"&:disabled":{opacity:.4,cursor:"not-allowed"}})),Vr=({isOpen:e,title:t,message:n,confirmLabel:r="OK",cancelLabel:o="Cancel",variant:i="default",confirmText:s,onConfirm:a,onCancel:u})=>{let[c,l]=vO(""),d=!!s&&c!==s,g=CO(p=>{p.key==="Escape"&&u()},[u]);return kO(()=>{if(e)return l(""),document.addEventListener("keydown",g),()=>document.removeEventListener("keydown",g)},[e,g]),e?qn.createElement(qn.Fragment,null,qn.createElement(FO,{onClick:u}),qn.createElement(EO,{role:"dialog","aria-modal":"true","aria-label":t},qn.createElement(AO,null,t),qn.createElement(PO,null,n),s&&qn.createElement(qn.Fragment,null,qn.createElement(BO,null,"Type ",qn.createElement("strong",null,s)," to confirm:"),qn.createElement(MO,{type:"text",value:c,onChange:p=>l(p.target.value),placeholder:s,autoFocus:!0})),qn.createElement(LO,null,qn.createElement(DO,{onClick:u},o),qn.createElement(RO,{variant:i,onClick:a,disabled:d},r)))):null};import{styled as pn}from"storybook/theming";function zO(e,t,n){return e.filter(r=>r.id===t||!r.storybookRoot?!0:n?r.storybookRoot===n:!1)}var NO=pn.div({marginBottom:"30px"}),OO=pn.div({display:"flex",gap:"8px",alignItems:"center"}),_O=pn(vn)({flex:1}),$O=pn(sn)({padding:"8px 12px",whiteSpace:"nowrap"}),UO=pn.div(({theme:e})=>({marginTop:"12px",padding:"12px",backgroundColor:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,borderRadius:"6px"})),jO=pn.div(({theme:e})=>({marginTop:"6px",padding:"8px 10px",fontSize:"11px",lineHeight:1.4,color:e.color.warning,backgroundColor:`${e.color.warning}15`,border:`1px solid ${e.color.warning}40`,borderRadius:"4px"})),HO=pn.div(({theme:e})=>({marginBottom:"10px",padding:"8px 10px",border:`1px solid ${e.appBorderColor}`,borderRadius:"4px",backgroundColor:e.background.content})),WO=pn.div(({theme:e})=>({fontSize:"11px",lineHeight:1.5,color:e.color.mediumdark,marginBottom:"6px"})),VO=pn.div({display:"flex",alignItems:"center",gap:"6px"}),GO=pn.a(({theme:e})=>({flex:1,fontSize:"11px",fontFamily:e.typography.fonts.mono,color:e.color.secondary,textDecoration:"none",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap","&:hover":{textDecoration:"underline"}})),qO=pn.button(({theme:e})=>({fontSize:"11px",padding:"3px 8px",borderRadius:"3px",border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.hoverable,color:e.color.defaultText,cursor:"pointer",whiteSpace:"nowrap","&:hover":{backgroundColor:e.background.app}}));function Uk(e){return/figma\.com\/community\/file\//.test(e)}var Jm=pn.div({marginBottom:"10px","&:last-child":{marginBottom:0}}),Zm=pn.label(({theme:e})=>({display:"block",fontSize:"12px",fontWeight:500,marginBottom:"4px",color:e.color.mediumdark})),eh=pn(ys)({fontSize:"13px",padding:"6px 8px"}),YO=pn.div({display:"flex",gap:"8px",marginTop:"12px"}),jk=pn(sn)({fontSize:"12px",padding:"6px 12px"}),KO=pn(jk)(({theme:e})=>({backgroundColor:"transparent",color:e.color.mediumdark,border:`1px solid ${e.appBorderColor}`,"&:hover":{backgroundColor:e.background.hoverable}})),XO=pn.button(({theme:e})=>({padding:"8px",backgroundColor:"transparent",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,color:e.color.mediumdark,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:e.typography.size.s1,transition:"all 0.15s","&:hover:not(:disabled)":{borderColor:e.color.negative,color:e.color.negative},"&:disabled":{opacity:.4,cursor:"not-allowed"}})),Hk=()=>{let{projects:e,selectedProjectId:t,setSelectedProjectId:n,loadingProjects:r,createProject:o,deleteProject:i}=uo(),{currentStorybookPath:s}=Xe(),[a,u]=Ki(!1),[c,l]=Ki(!1),[d,g]=Ki(!1),[p,h]=Ki(!1),[S,T]=Ki({name:"",storybookRoot:"",figmaFileUrl:""}),I=e.find(f=>f.id===t),v=zO(e,t,s),D=f=>{n(f||null),u(!1)},N=async()=>{if(t)try{h(!0),await i(t),g(!1)}catch(f){console.error("Failed to delete project:",f)}finally{h(!1)}},j=process.env.STORYBOOK_UICOPILOT_FIGMA_KIT||"",[B,z]=Ki(!1),m=()=>{j&&navigator.clipboard.writeText(j).then(()=>{z(!0),setTimeout(()=>z(!1),2e3)})},b=()=>{if(u(!0),s){let f=s.replace(/\/+$/,"").split("/").pop()||"";T({storybookRoot:s,name:f,figmaFileUrl:""})}},k=async()=>{if(S.name.trim())try{l(!0);let f;if(S.figmaFileUrl.trim()){let E=S.figmaFileUrl.trim(),x=E.match(/figma\.com\/(?:file|design)\/([a-zA-Z0-9]+)/);f=x?x[1]:E}let C=await o({name:S.name.trim(),storybookRoot:S.storybookRoot.trim()||void 0,figmaFileId:f});n(C.id),u(!1),T({name:"",storybookRoot:"",figmaFileUrl:""})}catch(f){console.error("Failed to create project:",f)}finally{l(!1)}},A=f=>{T(C=>{let E={...C,storybookRoot:f};if(!C.name&&f){let x=f.replace(/\/+$/,"").split("/").pop()||"";E.name=x}return E})};return ut.createElement(NO,null,ut.createElement(Ly,null,"Project"),ut.createElement(OO,null,ut.createElement(_O,{value:t||"",onChange:f=>D(f.target.value),disabled:r||a},ut.createElement("option",{value:""},"-- Select a project --"),v.map(f=>ut.createElement("option",{key:f.id,value:f.id},f.name))),ut.createElement($O,{onClick:b,disabled:r,type:"button"},"+ New"),ut.createElement(XO,{onClick:()=>g(!0),disabled:!t||r,title:"Delete project",type:"button"},"\u{1F5D1}")),ut.createElement(Vr,{isOpen:d,title:"Delete Project",message:`This will permanently remove all reviews, mappings, and history for "${I?.name||"this project"}". This cannot be undone.`,confirmLabel:p?"Deleting...":"Delete",confirmText:I?.name,variant:"danger",onConfirm:N,onCancel:()=>g(!1)}),a&&ut.createElement(UO,null,ut.createElement(Jm,null,ut.createElement(Zm,null,"Storybook Path (for fix generation)"),ut.createElement(eh,{type:"text",placeholder:"/path/to/your/storybook",value:S.storybookRoot,onChange:f=>A(f.target.value)})),ut.createElement(Jm,null,ut.createElement(Zm,null,"Project Name *"),ut.createElement(eh,{type:"text",placeholder:"my-storybook",value:S.name,onChange:f=>{let C=f.target.value;T(E=>({...E,name:C}))}})),j&&ut.createElement(HO,null,ut.createElement(WO,null,ut.createElement("strong",null,"1.")," Open this template's Figma kit, then click"," ",ut.createElement("strong",null,"Open in Figma")," (or ",ut.createElement("strong",null,"Get a copy"),") to duplicate it to your own Figma workspace. ",ut.createElement("strong",null,"2.")," ","Paste the URL of your copy (",ut.createElement("code",null,"figma.com/design/\u2026"),") into the field below."),ut.createElement(VO,null,ut.createElement(GO,{href:j,target:"_blank",rel:"noopener noreferrer",title:j},j),ut.createElement(qO,{type:"button",onClick:m},B?"Copied!":"Copy"))),ut.createElement(Jm,null,ut.createElement(Zm,null,"Your Figma File URL (after duplicating)"),ut.createElement(eh,{type:"text",placeholder:"https://www.figma.com/design/...",value:S.figmaFileUrl,onChange:f=>{let C=f.target.value;T(E=>({...E,figmaFileUrl:C}))}}),Uk(S.figmaFileUrl)&&ut.createElement(jO,null,"\u26A0 This is a community file URL \u2014 it can't be read by the API. Use the duplicated copy's URL instead (see instructions above).")),ut.createElement(YO,null,ut.createElement(jk,{onClick:k,disabled:c||!S.name.trim()||!S.figmaFileUrl.trim()||Uk(S.figmaFileUrl)},c?"Creating...":"Create"),ut.createElement(KO,{onClick:()=>{u(!1),T({name:"",storybookRoot:"",figmaFileUrl:""})}},"Cancel"))))};import xt,{useState as ba,useCallback as v1,useEffect as m5}from"react";import{styled as Rr}from"storybook/theming";import nn,{useState as Xi,useEffect as m_,useCallback as yc}from"react";import{styled as Gr}from"storybook/theming";Ce();_e();ct();Ce();_e();ct();import Gt,{useState as th}from"react";import{styled as Yn,keyframes as QO}from"storybook/theming";var JO={autoLayout:"Auto Layout",componentStructure:"Structure",naming:"Naming",constraints:"Constraints",spacing:"Spacing",styles:"Styles",variants:"Variants"},ZO=e=>e==="pass"?"\u2713":e==="warn"?"\u26A0":"\u2717",e_=Yn.div({position:"relative",display:"inline-flex"}),t_=QO`
|
|
31
31
|
0% { transform: rotate(0deg); }
|
|
32
32
|
100% { transform: rotate(360deg); }
|
|
33
33
|
`,n_=Yn.button(({score:e,isLoading:t,theme:n})=>{let r=()=>t?n.color.secondary:e?e>=80?n.color.positive:e>=50?n.color.warning:n.color.negative:n.color.mediumdark;return{display:"inline-flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"10px",fontSize:n.typography.size.s1,fontWeight:n.typography.weight.bold,fontFamily:n.typography.fonts.base,backgroundColor:r(),color:n.color.inverseText,cursor:t?"wait":"pointer",transition:"all 0.15s",border:"none",outline:"none","&:hover:not(:disabled)":{transform:"scale(1.05)",opacity:.9},"&:disabled":{cursor:"not-allowed",opacity:.7}}}),r_=Yn.span`
|
|
@@ -41,7 +41,7 @@ ${it}`).join(`
|
|
|
41
41
|
`,o_=Yn.div(({theme:e})=>({position:"absolute",top:"100%",left:"0",marginTop:"6px",padding:"12px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:"0 4px 16px rgba(0, 0, 0, 0.2)",zIndex:1e3,minWidth:"220px",fontSize:e.typography.size.s1})),i_=Yn.div(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"10px",paddingBottom:"8px",borderBottom:`1px solid ${e.appBorderColor}`})),s_=Yn.div(({theme:e})=>({fontWeight:e.typography.weight.bold,color:e.color.defaultText,fontSize:e.typography.size.s2})),a_=Yn.span(({score:e,theme:t})=>{let n=()=>e>=80?t.color.positive:e>=50?t.color.warning:t.color.negative;return{fontWeight:700,fontSize:t.typography.size.s3,color:n()}}),l_=Yn.div({display:"flex",flexDirection:"column",gap:"6px",marginBottom:"10px"}),c_=Yn.div(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",fontSize:e.typography.size.s1,color:e.color.defaultText})),u_=Yn.span({display:"flex",alignItems:"center",gap:"4px"}),p_=Yn.span(({status:e,theme:t})=>({color:e==="pass"?t.color.positive:e==="warn"?t.color.warning:t.color.negative,fontSize:t.typography.size.s1})),d_=Yn.span(({theme:e})=>({fontWeight:500,color:e.color.mediumdark})),g_=Yn.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,lineHeight:1.4,fontStyle:"italic"})),f_=Yn.ul(({theme:e})=>({margin:"8px 0 0 0",padding:"0 0 0 14px",fontSize:e.typography.size.s1,color:e.color.defaultText,"& li":{marginBottom:"2px"}})),Wk=({figmaFileUrl:e})=>{let{selectedProjectId:t}=Xe(),[n,r]=th(!1),[o,i]=th(!1),[s,a]=th(null),u=async()=>{if(!(!e||!t||o)){i(!0);try{let c=K(),l=localStorage.getItem("uicopilot_session_token"),d=await se(`${c}/api/figma/quality-check`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${l}`},body:JSON.stringify({projectId:t,figmaFileUrl:e,figmaMetadata:{}})});if(!d.ok)throw new Error("Failed to check quality");let g=await d.json();a(g),r(!0)}catch(c){console.error("[FigmaQualityBadge] Quality check error:",c)}finally{i(!1)}}};return e?Gt.createElement(e_,{onMouseEnter:()=>s&&r(!0),onMouseLeave:()=>r(!1)},Gt.createElement(n_,{score:s?.score,isLoading:o,onClick:u,disabled:o||!t,title:s?"Click to refresh quality check":"Click to check Figma design quality"},o?Gt.createElement(Gt.Fragment,null,Gt.createElement(r_,null)," Checking..."):s?Gt.createElement(Gt.Fragment,null,"\u{1F3A8} ",Math.round(s.score),"%"):Gt.createElement(Gt.Fragment,null,"\u{1F3A8} Check Quality")),n&&s&&Gt.createElement(o_,null,Gt.createElement(i_,null,Gt.createElement(s_,null,"Figma Design Quality"),Gt.createElement(a_,{score:s.score},Math.round(s.score),"%")),Gt.createElement(l_,null,Object.entries(s.categories).map(([c,l])=>Gt.createElement(c_,{key:c},Gt.createElement(u_,null,Gt.createElement(p_,{status:l.status},ZO(l.status)),JO[c]||c),Gt.createElement(d_,null,l.score)))),s.summary&&Gt.createElement(g_,null,s.summary),s.recommendations?.length>0&&Gt.createElement(f_,null,s.recommendations.slice(0,2).map((c,l)=>Gt.createElement("li",{key:l},c))))):null};var h_=Gr.div(({theme:e})=>({padding:"12px 16px",marginBottom:"16px"})),x_=Gr.div({display:"flex",alignItems:"center",gap:"8px",marginBottom:"8px"}),y_=Gr.label(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),b_=Gr.div({display:"flex",gap:"8px",alignItems:"center"}),S_=Gr.div({position:"relative",flex:1,display:"flex"}),w_=Gr.input(({theme:e})=>({width:"100%",padding:"8px 36px 8px 12px",fontSize:"13px",border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",backgroundColor:e.input.background,color:e.input.color,outline:"none","&:focus":{borderColor:le,boxShadow:`0 0 0 1px ${le}`},"&::placeholder":{color:e.color.mediumlight}})),v_=Gr(sn)({whiteSpace:"nowrap"}),k_=Gr.button(({theme:e})=>({padding:"8px",backgroundColor:"transparent",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,color:e.color.mediumdark,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:"12px",transition:"all 0.15s","&:hover:not(:disabled)":{borderColor:e.color.negative,color:e.color.negative},"&:disabled":{opacity:.4,cursor:"not-allowed"}})),C_=Gr.button(({theme:e,copied:t})=>({position:"absolute",top:"50%",right:"5px",transform:"translateY(-50%)",width:"26px",height:"26px",padding:0,border:"none",borderRadius:"5px",background:"transparent",cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",color:t?e.color.positive:e.color.defaultText,transition:"color 0.15s, background 0.15s","&:hover":{color:t?e.color.positive:le,background:e.background.hoverable}})),T_=()=>nn.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},nn.createElement("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),nn.createElement("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})),I_=()=>nn.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},nn.createElement("polyline",{points:"20 6 9 17 4 12"}));function F_(e){return e?e.includes("figma.com")?e:/^[a-zA-Z0-9]+$/.test(e)?`https://www.figma.com/design/${e}`:e:""}var E_=Gr.span(({variant:e})=>({fontSize:"12px",color:e==="success"?"#16a34a":"#dc2626",marginTop:"4px",display:"block"})),Vk=({onFigmaFileChanged:e})=>{let{selectedProjectId:t,projects:n}=Xe(),{sessionToken:r}=ve(),{updateProject:o}=uo(),i=n.find(b=>b.id===t),[s,a]=Xi(""),[u,c]=Xi(!1),[l,d]=Xi(null),[g,p]=Xi(!1),h=i?.figmaFileUrl||i?.figmaFileId||"",S=F_(h);m_(()=>{a(S),d(null)},[i?.id,S]);let T=s!==S,I=yc(async()=>{if(!(!t||!T))try{c(!0),d(null),await o(t,{figmaFileUrl:s.trim()||void 0});let b=K();try{await se(`${b}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({projectId:t})})}catch{}se(`${b}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({projectId:t})}).catch(()=>{}),d({type:"success",message:"Saved \u2014 reloading Figma cache\u2026"}),setTimeout(()=>d(null),3e3),e?.()}catch(b){d({type:"error",message:b instanceof Error?b.message:"Failed to save"})}finally{c(!1)}},[t,s,T,o,r,e]),v=yc(b=>{b.key==="Enter"&&T&&!u&&I()},[T,u,I]),D=yc(async()=>{if(s)try{await navigator.clipboard.writeText(s),p(!0),setTimeout(()=>p(!1),1500)}catch{}},[s]),[N,j]=Xi(!1),[B,z]=Xi(!1),m=yc(async()=>{if(!(!t||!r))try{z(!0),await o(t,{figmaFileUrl:""});let b=K();await se(`${b}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({projectId:t})}).catch(()=>{}),await se(`${b}/api/figma/frames/invalidate?projectId=${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`}}).catch(()=>{}),a(""),j(!1),d({type:"success",message:"Figma file removed and cache cleared"}),setTimeout(()=>d(null),3e3),e?.()}catch{d({type:"error",message:"Failed to remove Figma file"})}finally{z(!1)}},[t,r,o,e]);return t?nn.createElement(h_,null,nn.createElement(x_,null,nn.createElement(y_,null,"Figma File URL"),nn.createElement(Wk,{figmaFileUrl:S})),nn.createElement(b_,null,nn.createElement(S_,null,nn.createElement(w_,{type:"text",value:s,onChange:b=>a(b.target.value),onKeyDown:v,placeholder:"https://www.figma.com/file/..."}),s&&nn.createElement(C_,{type:"button",copied:g,onClick:D,title:"Copy Figma URL to clipboard"},g?nn.createElement(I_,null):nn.createElement(T_,null))),nn.createElement(v_,{onClick:I,disabled:!T||u},u?"Saving...":"Save"),S&&nn.createElement(k_,{onClick:()=>j(!0),title:"Remove Figma file and clear cache"},"\u{1F5D1}")),nn.createElement(Vr,{isOpen:N,title:"Remove Figma File",message:"This will remove the Figma file link and clear all cached data (thumbnails, enrichment). Component mappings will be preserved but won't have design data until a new file is linked.",confirmLabel:B?"Removing...":"Remove",variant:"danger",onConfirm:m,onCancel:()=>j(!1)}),l&&nn.createElement(E_,{variant:l.type},l.message)):null};import Ft,{useState as Mc,useEffect as _4}from"react";import{styled as sr}from"storybook/theming";Ce();_e();import Je,{useState as es,useEffect as w4,useCallback as $o}from"react";import{styled as rn}from"storybook/theming";_e();_e();Oe();import ee,{useState as Ji,useEffect as MC,useMemo as fh,useCallback as BC}from"react";import{styled as qe}from"storybook/theming";ct();import De,{useState as LC,useEffect as A_,memo as P_}from"react";import{styled as be}from"storybook/theming";var Gk=be.div({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.5)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:10001}),qk=be.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"6px",width:"90%",maxWidth:"900px",maxHeight:"85vh",display:"flex",flexDirection:"column",boxShadow:"0 4px 20px rgba(0, 0, 0, 0.3)",border:`1px solid ${e.appBorderColor}`})),Yk=be.div(({theme:e})=>({padding:"16px 20px",borderBottom:`1px solid ${e.appBorderColor}`,display:"flex",justifyContent:"space-between",alignItems:"center"})),Kk=be.h2(({theme:e})=>({margin:0,fontSize:"16px",fontWeight:600,color:e.color.defaultText})),Xk=be(Bn)({fontSize:"20px",padding:"4px 8px"}),Qk=be.div({flex:1,overflow:"auto",padding:"20px"}),Jk=be(To)({fontSize:"14px",marginBottom:"16px"}),nh=be.div({display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"12px"}),Zk=be.button(({theme:e})=>({display:"flex",flexDirection:"column",padding:0,border:`2px solid ${e.appBorderColor}`,borderRadius:"8px",backgroundColor:e.background.app,color:e.color.defaultText,cursor:"pointer",overflow:"hidden",transition:"all 0.2s","&:hover":{borderColor:le,transform:"translateY(-2px)",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)"}})),rh=be.div(({theme:e})=>({width:"100%",aspectRatio:"4 / 3",minHeight:"80px",backgroundColor:e.background.app,backgroundImage:`linear-gradient(45deg, ${e.appBorderColor} 25%, transparent 25%), linear-gradient(-45deg, ${e.appBorderColor} 25%, transparent 25%), linear-gradient(45deg, transparent 75%, ${e.appBorderColor} 75%), linear-gradient(-45deg, transparent 75%, ${e.appBorderColor} 75%)`,backgroundSize:"8px 8px",backgroundPosition:"0 0, 0 4px, 4px -4px, -4px 0px",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",position:"relative"})),eC=be.div(({theme:e})=>({width:"100%",aspectRatio:"4 / 3",minHeight:"80px",backgroundColor:e.background.app,backgroundImage:`linear-gradient(45deg, ${e.appBorderColor} 25%, transparent 25%), linear-gradient(-45deg, ${e.appBorderColor} 25%, transparent 25%), linear-gradient(45deg, transparent 75%, ${e.appBorderColor} 75%), linear-gradient(-45deg, transparent 75%, ${e.appBorderColor} 75%)`,backgroundSize:"8px 8px",backgroundPosition:"0 0, 0 4px, 4px -4px, -4px 0px",display:"flex",alignItems:"center",justifyContent:"center",overflow:"hidden",position:"relative"})),tC=be.img(({theme:e})=>({maxWidth:"100%",maxHeight:"100%",objectFit:"cover",display:"block",backgroundColor:e.background.content,borderRadius:"4px"})),pa=be.div(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",height:"100%",minHeight:"80px",backgroundColor:e.base==="dark"?"rgba(255,255,255,0.03)":"rgba(0,0,0,0.02)",color:e.color.mediumdark})),oh=be.div(({theme:e})=>({width:"32px",height:"32px",border:`3px solid ${e.appBorderColor}`,borderTopColor:le,borderRadius:"50%",animation:"thumbnail-spin 0.8s linear infinite","@keyframes thumbnail-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),da=be.div(({theme:e})=>({fontSize:"11px",fontWeight:500,color:e.color.mediumdark,textTransform:"uppercase",letterSpacing:"0.5px"})),ih=be.div(({theme:e})=>({fontSize:"32px",opacity:.5,color:e.color.mediumdark})),sh=be.div(({theme:e})=>({padding:"12px",textAlign:"left",backgroundColor:e.background.content,borderTop:`1px solid ${e.appBorderColor}`})),ah=be.div(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText,marginBottom:"6px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:1.3})),lh=be.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,textTransform:"uppercase",letterSpacing:"0.5px"})),nC=be.div(({theme:e})=>({display:"flex",gap:"16px",marginBottom:"16px",padding:"12px",backgroundColor:e.background.app,borderRadius:"4px",border:`1px solid ${e.appBorderColor}`})),bc=be.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",fontSize:"13px",color:e.color.defaultText,cursor:"pointer",userSelect:"none","& input":{cursor:"pointer"}})),rC=be.div(({theme:e})=>({padding:"40px",textAlign:"center",color:e.color.mediumdark,fontSize:"14px"})),oC=be.div(({theme:e})=>({padding:"20px",backgroundColor:e.background.critical,color:e.color.inverseText,borderRadius:"4px",fontSize:"14px"})),iC=be.button(({theme:e})=>({position:"absolute",top:"8px",left:"8px",width:"24px",height:"24px",padding:0,background:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:"4px",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",fontSize:"14px",color:e.color.defaultText,zIndex:10,transition:"all 0.2s","&:hover":{background:e.background.hoverable,borderColor:le}})),sC=be.button(({theme:e})=>({display:"flex",flexDirection:"column",padding:0,border:`1px solid ${e.appBorderColor}`,borderLeft:`3px solid ${le}`,borderRadius:"6px",backgroundColor:e.background.content,color:e.color.defaultText,cursor:"pointer",overflow:"hidden",transition:"all 0.2s",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.08)",height:"auto",minHeight:"200px","&:hover":{borderColor:le,transform:"translateY(-2px)",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)"}})),aC=be.div(({theme:e})=>({position:"absolute",top:"8px",right:"8px",padding:"2px 8px",background:le,color:e.color.lightest,borderRadius:"4px",fontSize:"10px",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",zIndex:10})),lC=be.div({display:"flex",flexWrap:"wrap",gap:"4px",marginTop:"4px",marginBottom:"4px"}),Fne=be.div(({theme:e})=>({padding:"20px",textAlign:"center",color:e.color.mediumdark,fontSize:"13px",backgroundColor:e.background.app,border:`2px dashed ${e.appBorderColor}`,borderRadius:"8px",gridColumn:"1 / -1"})),cC=be.div(({theme:e})=>({display:"flex",flexDirection:"column",border:`1px solid ${e.appBorderColor}`,borderLeft:`3px solid ${le}`,borderRadius:"6px",backgroundColor:e.background.content,overflow:"hidden",minHeight:"200px"})),uC=be.div(({theme:e})=>({width:"100%",aspectRatio:"4 / 3",backgroundColor:e.background.hoverable,position:"relative",overflow:"hidden","&::after":{content:'""',position:"absolute",top:0,left:"-100%",height:"100%",width:"100%",background:`linear-gradient(90deg, transparent, ${e.background.app}40, transparent)`,animation:"shimmer 1.5s infinite"},"@keyframes shimmer":{"0%":{left:"-100%"},"100%":{left:"100%"}}})),ch=be.div(({theme:e,width:t="70%"})=>({height:"12px",width:t,backgroundColor:e.background.hoverable,borderRadius:"4px",margin:"8px 12px",position:"relative",overflow:"hidden","&::after":{content:'""',position:"absolute",top:0,left:"-100%",height:"100%",width:"100%",background:`linear-gradient(90deg, transparent, ${e.background.app}40, transparent)`,animation:"shimmer 1.5s infinite"}})),pC=be.span(({theme:e})=>({display:"inline-block",padding:"3px 8px",background:e.background.app,borderRadius:"4px",fontSize:"11px",color:e.color.defaultText,border:`1px solid ${e.appBorderColor}`,lineHeight:1.2})),dC=be.span(({theme:e})=>({fontWeight:600,color:e.color.mediumdark})),gC=be.span(({theme:e})=>({color:e.color.defaultText})),Sc=be.div(({theme:e,width:t="100%",height:n="40px"})=>({width:t,height:n,backgroundColor:e.appBorderColor,borderRadius:"4px",position:"relative",overflow:"hidden","&::after":{content:'""',position:"absolute",top:0,left:"-100%",height:"100%",width:"100%",background:`linear-gradient(90deg, transparent, ${e.background.hoverable}, transparent)`,animation:"shimmer 1.5s infinite"},"@keyframes shimmer":{"0%":{left:"-100%"},"100%":{left:"100%"}}})),fC=be.div(({theme:e})=>({display:"flex",flexDirection:"column",border:`2px solid ${e.appBorderColor}`,borderRadius:"8px",backgroundColor:e.background.app,overflow:"hidden"})),mC=be.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",marginBottom:"16px",padding:"12px",backgroundColor:e.background.app,borderRadius:"4px",border:`1px solid ${e.appBorderColor}`})),hC=be.span(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText})),xC=be(vn)({flex:1,width:"auto"}),yC=be.span(({theme:e,hasMapping:t})=>({fontSize:"12px",color:t?e.color.positive:e.color.mediumdark,fontWeight:t?500:400})),bC=be.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"8px 12px",marginBottom:"8px",backgroundColor:e.background.hoverable||"#f0f9ff",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,fontSize:e.typography.size.s1,flexWrap:"wrap"})),SC=be.span(({theme:e})=>({color:e.color.secondary,fontWeight:e.typography.weight.bold})),wC=be.span(({theme:e})=>({color:e.color.defaultText})),vC=be.button(({theme:e})=>({padding:"2px 8px",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.lightest,backgroundColor:e.color.secondary,border:"none",borderRadius:e.appBorderRadius,cursor:"pointer","&:hover":{opacity:.9}})),kC=be.button(({theme:e})=>({padding:"2px 6px",fontSize:e.typography.size.s1,color:e.color.mediumdark,backgroundColor:"transparent",border:"none",cursor:"pointer","&:hover":{color:e.color.defaultText}})),CC=be.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,marginBottom:"8px",fontStyle:"italic"})),wc=be.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px",flexWrap:"wrap"})),ga=be.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),Qi=be(vn)(({theme:e,isActive:t})=>({width:"auto",padding:"6px 28px 6px 10px",fontSize:"12px",...t&&{borderColor:e.color.secondary,backgroundColor:`${e.color.secondary}14`}})),vc=be.button(({theme:e})=>({padding:"6px 10px",border:"none",borderRadius:"4px",backgroundColor:"transparent",color:e.color.negative,fontSize:"12px",cursor:"pointer","&:hover":{backgroundColor:`${e.color.negative}15`}})),TC=be.div(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px",padding:"8px 0",borderBottom:`1px solid ${e.appBorderColor}`})),IC=be.button(({theme:e})=>({padding:"6px 12px",border:"none",borderRadius:"4px",backgroundColor:"transparent",color:le,fontSize:"12px",cursor:"pointer","&:hover":{backgroundColor:"rgba(234, 88, 12, 0.08)"}})),FC=be.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),uh=be.button(({theme:e,isSelected:t})=>({display:"flex",flexDirection:"column",padding:0,border:`2px solid ${t?le:e.appBorderColor}`,borderRadius:"8px",backgroundColor:t?"rgba(234, 88, 12, 0.06)":e.background.app,color:e.color.defaultText,cursor:"pointer",overflow:"hidden",transition:"all 0.2s",position:"relative","&:hover":{borderColor:le,transform:"translateY(-2px)",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)"}})),ph=be.div(({theme:e,isSelected:t})=>({position:"absolute",top:"8px",left:"8px",width:"20px",height:"20px",borderRadius:"4px",border:`2px solid ${t?le:e.appBorderColor}`,backgroundColor:t?le:e.background.content,display:"flex",alignItems:"center",justifyContent:"center",zIndex:10,fontSize:"12px",color:t?e.color.lightest:"transparent"})),EC=be.div(({theme:e})=>({padding:"16px 20px",borderTop:`1px solid ${e.appBorderColor}`,display:"flex",justifyContent:"flex-end",gap:"12px"})),AC=be.button(({theme:e,disabled:t})=>({padding:"10px 20px",border:"none",borderRadius:"4px",backgroundColor:t?e.color.mediumdark:le,color:e.color.lightest,fontSize:"14px",fontWeight:500,cursor:t?"not-allowed":"pointer",opacity:t?.6:1,transition:"all 0.2s","&:hover":{backgroundColor:t?e.color.mediumdark:le,opacity:t?.6:.9}})),PC=be.span(({theme:e})=>({display:"inline-block",padding:"1px 5px",marginLeft:"6px",borderRadius:"3px",fontSize:"9px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",backgroundColor:"rgba(16, 185, 129, 0.15)",color:e.color.positive,verticalAlign:"middle"}));Oe();import{styled as L_}from"storybook/theming";var M_=L_.button(({theme:e})=>({gridColumn:"1 / -1",padding:"8px 16px",backgroundColor:"transparent",border:`1px dashed ${e.appBorderColor}`,borderRadius:e.appBorderRadius,color:e.color.mediumdark,fontSize:e.typography.size.s1,cursor:"pointer",transition:"all 0.15s","&:hover":{borderColor:e.color.secondary,color:e.color.secondary}})),dh=P_(({src:e,alt:t,isComponentSet:n,loadingDone:r,failed:o})=>{let[i,s]=LC(!1),[a,u]=LC(!1);return A_(()=>{s(!1),u(!1)},[e]),i?De.createElement(pa,null,De.createElement(ih,null,n?"\u229E":"\u{1F5BC}\uFE0F"),De.createElement(da,null,"Failed to load")):e?De.createElement(De.Fragment,null,!a&&De.createElement(pa,{style:{position:"absolute",inset:0}},De.createElement(oh,null),De.createElement(da,null,"Loading...")),De.createElement(tC,{src:e,alt:t,onLoad:()=>u(!0),onError:()=>s(!0),style:{opacity:a?1:0}})):r?De.createElement(pa,null,De.createElement(ih,null,n?"\u229E":"\u{1F5BC}\uFE0F"),De.createElement(da,null,o?"Render failed":"No preview")):De.createElement(pa,null,De.createElement(oh,null),De.createElement(da,null,"Loading..."))}),fa=({frame:e,thumbnail:t,thumbnails:n,variantThumbnails:r,variantChildren:o,variantFailed:i,isLoadingVariants:s=!1,isExpanded:a,isNew:u=!1,onToggleExpand:c,onSelect:l,multiSelect:d=!1,selectedFrames:g=new Set,variantFilters:p=[],variantPage:h=1,onShowMore:S})=>{let I=e.type==="COMPONENT_SET",v=I&&(e.children&&e.children.length>0||(e.childCount??0)>0),D=e.children||o||[],N=De.useMemo(()=>D.length===0?[]:p.some(z=>z.value)?D.filter(z=>z.variantProperties?p.every(m=>m.value?z.variantProperties?.[m.property]===m.value:!0):!1):D,[D,p]),j=z=>{if(I){c(e.id,z);return}l(e)},B=d?uh:Zk;return De.createElement(De.Fragment,null,De.createElement(B,{onClick:j,title:e.name,isSelected:d?g.has(e.id):void 0,style:{cursor:"pointer"}},d&&!v&&De.createElement(ph,{isSelected:g.has(e.id)},g.has(e.id)?"\u2713":""),I?De.createElement(eC,null,v&&De.createElement(iC,{onClick:z=>c(e.id,z),title:a?"Collapse variants":"Expand variants"},a?"\u25BC":"\u25B6"),v&&De.createElement(aC,null,N.length>0&&N.length!==D.length?`${N.length} / ${D.length}`:e.childCount??D.length," ","variants"),De.createElement(dh,{src:t,alt:e.name,isComponentSet:!0})):De.createElement(rh,null,De.createElement(dh,{src:t,alt:e.name,isComponentSet:!1})),De.createElement(sh,null,De.createElement(ah,null,e.name,u&&De.createElement(PC,null,"New")),De.createElement(lh,null,e.type))),v&&a&&s&&De.createElement(De.Fragment,null,Array.from({length:Math.min(6,e.childCount??e.children?.length??6)}).map((z,m)=>De.createElement(cC,{key:`skeleton-${m}`},De.createElement(uC,null),De.createElement(ch,{width:"80%"}),De.createElement(ch,{width:"50%"})))),v&&a&&!s&&N.slice(0,h*50).map(z=>De.createElement(gh,{key:z.id,variant:z,thumbnail:r?.[z.id]||n[z.id],onSelect:l,multiSelect:d,isSelected:g.has(z.id),loadingDone:!!t||r!==void 0&&z.id in(r||{})||!!i?.has(z.id),failed:i?.has(z.id)})),v&&a&&!s&&N.length>h*50&&De.createElement(M_,{onClick:()=>S?.(e.id)},"Show more (",N.length-h*50," ","remaining)"))},gh=({variant:e,thumbnail:t,onSelect:n,multiSelect:r=!1,isSelected:o=!1,loadingDone:i=!1,failed:s=!1})=>De.createElement(r?uh:sC,{onClick:()=>{y.debug("[VariantCard] Clicked:",e.id,e.name),n(e)},title:e.name,isSelected:r?o:void 0},r&&De.createElement(ph,{isSelected:o},o?"\u2713":""),De.createElement(rh,null,De.createElement(dh,{src:t,alt:e.name,isComponentSet:!1,loadingDone:i,failed:s})),De.createElement(sh,null,De.createElement(ah,null,e.name),e.variantProperties&&Object.keys(e.variantProperties).length>0&&De.createElement(lC,null,Object.entries(e.variantProperties).map(([c,l])=>De.createElement(pC,{key:c},De.createElement(dC,null,c,":")," ",De.createElement(gC,null,l)))),De.createElement(lh,{style:{marginTop:"6px"}},"VARIANT")));var B_=qe.div({display:"flex",height:"100%",overflow:"hidden"}),D_=qe.div(({theme:e})=>({width:"380px",minWidth:"300px",borderRight:`1px solid ${e.appBorderColor}`,display:"flex",flexDirection:"column",overflow:"hidden"})),R_=qe.div({flex:1,display:"flex",flexDirection:"column",overflow:"hidden"}),DC=qe.div(({theme:e})=>({padding:"12px 16px",borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app})),RC=qe.h4(({theme:e})=>({fontSize:"12px",fontWeight:600,color:e.color.mediumdark,textTransform:"uppercase",letterSpacing:"0.5px",margin:0})),kc=qe.div({display:"flex",gap:"8px",marginTop:"10px"}),z_=qe(vn)({flex:1,width:"auto"}),zC=qe(To)({flex:1,fontSize:"13px"}),N_=qe.div({flex:1,overflow:"auto",padding:"8px"}),O_=qe.div(({theme:e,selected:t,mapped:n})=>({padding:"12px",marginBottom:"8px",borderRadius:"8px",border:`2px solid ${t?e.color.secondary:n?e.color.positive:e.appBorderColor}`,backgroundColor:t?`${e.color.secondary}10`:e.background.content,cursor:"pointer",transition:"all 0.2s","&:hover":{borderColor:t?e.color.secondary:e.color.mediumlight}})),__=qe.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}),$_=qe.div(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),U_=qe.span(({theme:e,mapped:t})=>({fontSize:"10px",fontWeight:500,padding:"2px 6px",borderRadius:"4px",backgroundColor:t?`${e.color.positive}20`:e.background.hoverable,color:t?e.color.positive:e.color.mediumdark})),j_=qe.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),H_=qe.div(({theme:e})=>({marginTop:"8px",padding:"8px",backgroundColor:`${e.color.positive}10`,borderRadius:"6px",fontSize:"11px",color:e.color.positive,display:"flex",alignItems:"center",gap:"8px",position:"relative"})),W_=qe.img(({theme:e})=>({width:"48px",height:"36px",objectFit:"contain",backgroundColor:e.background.content,borderRadius:"4px",border:`1px solid ${e.appBorderColor}`,flexShrink:0})),V_=qe.div({flex:1,overflow:"hidden"}),G_=qe.div({fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),q_=qe.div(({theme:e})=>({position:"absolute",bottom:"100%",left:"0",marginBottom:"8px",backgroundColor:e.background.content,borderRadius:"8px",boxShadow:"0 4px 20px rgba(0, 0, 0, 0.25)",border:`1px solid ${e.appBorderColor}`,padding:"8px",zIndex:100,maxWidth:"280px",animation:"fadeIn 0.15s ease-out","@keyframes fadeIn":{from:{opacity:0,transform:"translateY(4px)"},to:{opacity:1,transform:"translateY(0)"}}})),Y_=qe.img(({theme:e})=>({width:"100%",maxWidth:"260px",maxHeight:"200px",objectFit:"contain",borderRadius:"4px",backgroundColor:e.background.app,display:"block"})),K_=qe.div(({theme:e})=>({marginTop:"8px",fontSize:"12px",fontWeight:500,color:e.color.defaultText,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),X_=qe.div({flex:1,display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"}),Q_=qe.div({display:"flex",gap:"8px",flexWrap:"wrap"}),mh=qe.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"4px",fontSize:"12px",color:e.color.mediumdark,cursor:"pointer","& input":{cursor:"pointer"}})),J_=qe.div({flex:1,overflow:"auto",padding:"12px",display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",gap:"12px",alignContent:"start"}),hh=20,Z_=qe.div(({theme:e})=>({gridColumn:"1 / -1",display:"flex",alignItems:"center",justifyContent:"center",gap:"12px",padding:"12px 0",borderTop:`1px solid ${e.appBorderColor}`,marginTop:"8px"})),e$=qe.button(({theme:e,disabled:t})=>({padding:"8px 16px",fontSize:"13px",fontWeight:500,color:t?e.color.mediumdark:e.color.secondary,backgroundColor:"transparent",border:`1px solid ${t?e.appBorderColor:e.color.secondary}`,borderRadius:"6px",cursor:t?"not-allowed":"pointer",opacity:t?.5:1,transition:"all 0.2s","&:hover":{backgroundColor:t?"transparent":`${e.color.secondary}10`}})),t$=qe.div(({theme:e})=>({gridColumn:"1 / -1",display:"flex",alignItems:"center",gap:"12px",padding:"8px 12px",backgroundColor:e.background.app,borderRadius:"6px",marginBottom:"8px"})),n$=qe.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"6px 12px",fontSize:"13px",fontWeight:500,color:e.color.secondary,backgroundColor:"transparent",border:`1px solid ${e.color.secondary}`,borderRadius:"4px",cursor:"pointer",transition:"all 0.2s","&:hover":{backgroundColor:`${e.color.secondary}10`}})),r$=qe.span(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),xh=qe.div(({theme:e})=>({gridColumn:"1 / -1",fontSize:"12px",color:e.color.mediumdark,textAlign:"center",padding:"8px 0"})),yh=qe.div(({theme:e})=>({flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:e.color.mediumdark,fontSize:"14px",gap:"8px"})),o$=qe.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:e.color.mediumdark,fontSize:"14px"})),i$=qe.div({flex:1,overflow:"auto",padding:"12px",display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",gap:"12px",alignContent:"start"}),NC=qe.div(({theme:e})=>({borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,overflow:"hidden",backgroundColor:e.background.content})),OC=qe.div(({theme:e})=>({width:"100%",aspectRatio:"4 / 3",backgroundColor:e.background.hoverable,animation:"shimmer 1.5s infinite",background:`linear-gradient(90deg, ${e.background.hoverable} 25%, ${e.background.app} 50%, ${e.background.hoverable} 75%)`,backgroundSize:"200% 100%","@keyframes shimmer":{"0%":{backgroundPosition:"200% 0"},"100%":{backgroundPosition:"-200% 0"}}})),_C=qe.div(({theme:e,width:t="70%"})=>({height:"12px",width:t,backgroundColor:e.background.hoverable,borderRadius:"4px",margin:"12px",animation:"shimmer 1.5s infinite",background:`linear-gradient(90deg, ${e.background.hoverable} 25%, ${e.background.app} 50%, ${e.background.hoverable} 75%)`,backgroundSize:"200% 100%","@keyframes shimmer":{"0%":{backgroundPosition:"200% 0"},"100%":{backgroundPosition:"-200% 0"}}})),s$=()=>ee.createElement(i$,null,Array.from({length:8}).map((e,t)=>ee.createElement(NC,{key:t},ee.createElement(OC,null),ee.createElement(_C,{width:`${60+t%3*15}%`})))),a$=qe.div(({theme:e})=>({padding:"12px 16px",backgroundColor:`${e.color.secondary}10`,borderBottom:`1px solid ${e.appBorderColor}`,fontSize:"13px",color:e.color.defaultText,display:"flex",alignItems:"center",gap:"8px"})),l$=qe.div({position:"absolute",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(255, 255, 255, 0.8)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",zIndex:50,gap:"8px"}),c$=qe.div(({theme:e})=>({width:"24px",height:"24px",border:`3px solid ${e.appBorderColor}`,borderTop:`3px solid ${e.color.secondary}`,borderRadius:"50%",animation:"spin 1s linear infinite","@keyframes spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),u$=qe.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark})),$C=({stories:e,loading:t,selectedStoryId:n,onSelectStory:r,onStoryMapped:o,projectId:i})=>{let s=ca({projectId:i,limit:hh,enabled:!!i}),[a,u]=Ji("all"),[c,l]=Ji(""),[d,g]=Ji(null),[p,h]=Ji(1),[S,T]=Ji(null),[I,v]=Ji(!1),D=fh(()=>{let f=new Set;return e.forEach(C=>{C.componentTitle&&f.add(C.componentTitle)}),Array.from(f).sort()},[e]),N=fh(()=>e.filter(f=>{if(a!=="all"&&f.componentTitle!==a)return!1;if(c){let C=c.toLowerCase();return f.name.toLowerCase().includes(C)||f.title.toLowerCase().includes(C)}return!0}),[e,a,c]),j=d?s.frames.find(f=>f.id===d):null,B=fh(()=>{if(!d)return[];let f=s.variantChildren[d]||[];return f.length===0?[]:s.variantFilters.some(C=>C.value)?f.filter(C=>C.variantProperties?s.variantFilters.every(E=>E.value?C.variantProperties?.[E.property]===E.value:!0):!1):f},[d,s.variantChildren,s.variantFilters]),z=B.slice(0,p*hh),m=B.length>p*hh;MC(()=>{if(!d||z.length===0)return;let f=z.map(C=>C.id);s.fetchVariantThumbnails(d,f)},[d,z.length,p]),MC(()=>{v(!1)},[]);let b=BC(async f=>{if(n)try{let C=K(),E=localStorage.getItem("uicopilot_session_token");if(!(await se(`${C}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({projectId:i,storyId:n,figmaNodeId:f.id,name:f.name})})).ok)throw new Error("Failed to save mapping");o(n,f.id,f.name)}catch(C){y.error("[MapStoriesTab] Error saving mapping:",C)}},[n,i,o]),k=BC((f,C)=>{if(C.stopPropagation(),d===f){g(null),h(1);return}g(f),h(1),!s.variantThumbnails[f]&&!s.loadingVariants.has(f)&&s.toggleExpanded(f,C)},[d,s]),A=e.find(f=>f.id===n);return t?ee.createElement(o$,null,"Loading stories..."):ee.createElement(B_,null,ee.createElement(D_,null,ee.createElement(DC,null,ee.createElement(RC,null,"Storybook Stories"),ee.createElement(kc,null,ee.createElement(z_,{value:a,onChange:f=>u(f.target.value)},ee.createElement("option",{value:"all"},"All Components"),D.map(f=>ee.createElement("option",{key:f,value:f},f)))),ee.createElement(kc,null,ee.createElement(zC,{type:"text",placeholder:"Search stories...",value:c,onChange:f=>l(f.target.value)}))),ee.createElement(N_,null,N.length===0?ee.createElement(yh,null,"No stories found"):N.map(f=>ee.createElement(O_,{key:f.id,selected:f.id===n,mapped:!!f.figmaMapping,onClick:()=>r(f.id)},ee.createElement(__,null,ee.createElement($_,null,f.name),ee.createElement(U_,{mapped:!!f.figmaMapping},f.figmaMapping?"Mapped":"Unmapped")),ee.createElement(j_,null,f.title),f.figmaMapping&&ee.createElement(H_,{onMouseEnter:()=>T(f.id),onMouseLeave:()=>T(null)},(()=>{let C=f.figmaMapping?.figmaNodeId,E=C?s.resolveThumbnail(C):void 0;return ee.createElement(ee.Fragment,null,E?ee.createElement(W_,{src:E,alt:f.figmaMapping?.figmaFrameName||""}):ee.createElement("span",null,"\u{1F517}"),S===f.id&&E&&ee.createElement(q_,null,ee.createElement(Y_,{src:E,alt:f.figmaMapping?.figmaFrameName||""}),ee.createElement(K_,null,f.figmaMapping?.figmaFrameName)))})(),ee.createElement(V_,null,ee.createElement(G_,null,f.figmaMapping.figmaFrameName))))))),ee.createElement(R_,null,n?ee.createElement(ee.Fragment,null,ee.createElement(a$,null,ee.createElement("span",null,"Click a Figma component below to link it to"," ",ee.createElement("strong",null,A?.name))),ee.createElement(DC,null,ee.createElement(RC,null,"Figma Components"),ee.createElement(kc,null,ee.createElement(Q_,null,ee.createElement(mh,null,ee.createElement("input",{type:"checkbox",checked:s.showComponentSets,onChange:f=>s.setShowComponentSets(f.target.checked)}),"Component Sets"),ee.createElement(mh,null,ee.createElement("input",{type:"checkbox",checked:s.showFrames,onChange:f=>s.setShowFrames(f.target.checked)}),"Frames"),ee.createElement(mh,null,ee.createElement("input",{type:"checkbox",checked:s.showComponents,onChange:f=>s.setShowComponents(f.target.checked)}),"Components")),s.availablePages.length>1&&ee.createElement(Qi,{isActive:!!s.figmaPage,value:s.figmaPage,onChange:f=>s.setFigmaPage(f.target.value)},ee.createElement("option",{value:""},"All pages"),s.availablePages.map(f=>ee.createElement("option",{key:f,value:f},f)))),s.availableFilters.length>0&&ee.createElement(wc,null,ee.createElement(ga,null,"Filters:"),s.availableFilters.slice(0,5).map(({property:f,values:C})=>{let E=s.variantFilters.find(x=>x.property===f);return ee.createElement(Qi,{key:f,isActive:!!E?.value,value:E?.value||"",onChange:x=>s.handleFilterChange(f,x.target.value)},ee.createElement("option",{value:""},f),C.map(x=>ee.createElement("option",{key:x,value:x},f,"=",x)))}),s.availableFilters.length>5&&ee.createElement(ga,{style:{opacity:.6,fontSize:"11px"}},"+",s.availableFilters.length-5," more"),s.variantFilters.some(f=>f.value)&&ee.createElement(vc,{onClick:s.clearFilters},"Clear All")),ee.createElement(kc,null,ee.createElement(zC,{type:"text",placeholder:"Search Figma components...",value:s.search,onChange:f=>s.setSearch(f.target.value)}))),ee.createElement(X_,null,I&&ee.createElement(l$,null,ee.createElement(c$,null),ee.createElement(u$,null,"Loading thumbnails...")),s.isLoading?ee.createElement(s$,null):s.filteredFrames.length===0?ee.createElement(yh,null,ee.createElement("span",null,"No components match. Try a different search term, or check that your Figma file has component sets defined.")):ee.createElement(J_,null,d&&j?ee.createElement(ee.Fragment,null,ee.createElement(t$,null,ee.createElement(n$,{onClick:()=>{g(null),h(1)}},"Back"),ee.createElement(r$,null,j.name)),s.loadingVariants.has(d)?ee.createElement(ee.Fragment,null,ee.createElement(xh,null,"Loading ",j.childCount??"..."," ","variants..."),Array.from({length:Math.min(8,j.childCount??8)}).map((f,C)=>ee.createElement(NC,{key:`variant-skeleton-${C}`},ee.createElement(OC,null),ee.createElement(_C,{width:`${60+C%3*15}%`})))):ee.createElement(ee.Fragment,null,ee.createElement(xh,null,"Showing ",z.length," of"," ",B.length," variants"),z.map(f=>ee.createElement(gh,{key:f.id,variant:f,thumbnail:s.variantThumbnails[d]?.[f.id]||s.thumbnails[f.id],onSelect:b,loadingDone:s.variantThumbnails[d]!==void 0&&!s.loadingVariants.has(d),failed:s.variantFailed[d]?.has(f.id)})))):ee.createElement(ee.Fragment,null,ee.createElement(xh,null,"Showing ",s.frames.length," of ",s.totalFrames," ","components"),s.filteredFrames.map(f=>ee.createElement(fa,{key:f.id,frame:f,thumbnail:s.thumbnails[f.id],thumbnails:s.thumbnails,variantThumbnails:s.variantThumbnails[f.id],variantChildren:s.variantChildren[f.id],variantFailed:s.variantFailed[f.id],isLoadingVariants:s.loadingVariants.has(f.id),isExpanded:!1,onToggleExpand:k,onSelect:b,variantFilters:s.variantFilters}))),(d?m:s.hasMore)&&ee.createElement(Z_,null,ee.createElement(e$,{disabled:s.loadingMore,onClick:async()=>{d?h(f=>f+1):await s.loadMore()}},s.loadingMore?"Loading...":"Load More"))))):ee.createElement(yh,null,ee.createElement("span",null,"\u{1F448} Pick a story from the left, then browse your Figma file to find a matching frame. The mapping is saved per story."))))};_e();import tt,{useState as bh,useMemo as UC,useCallback as jC}from"react";import{styled as Ut}from"storybook/theming";ct();var p$=Ut.div({display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"}),d$=Ut.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"12px 20px",backgroundColor:e.background.app,borderBottom:`1px solid ${e.appBorderColor}`,flexWrap:"wrap"})),g$=Ut(vn)({width:"auto",minWidth:"200px"}),f$=Ut(To)({fontSize:"13px",minWidth:"250px"}),m$=Ut.button(({theme:e,active:t})=>({padding:"8px 12px",fontSize:"13px",fontWeight:500,border:`1px solid ${t?e.color.positive:e.appBorderColor}`,borderRadius:"6px",backgroundColor:t?`${e.color.positive}15`:e.background.content,color:t?e.color.positive:e.color.mediumdark,cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",transition:"all 0.2s","&:hover":{borderColor:e.color.positive}})),h$=Ut.button(({theme:e})=>({marginLeft:"auto",padding:"8px 12px",fontSize:"13px",fontWeight:500,border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",backgroundColor:e.background.content,color:e.color.defaultText,cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",transition:"all 0.2s","&:hover":{backgroundColor:e.background.hoverable}})),x$=Ut.div({flex:1,overflow:"auto"}),y$=Ut.table(({theme:e})=>({width:"100%",borderCollapse:"collapse",fontSize:"13px"})),b$=Ut.thead(({theme:e})=>({position:"sticky",top:0,backgroundColor:e.background.app,zIndex:1})),Cc=Ut.th(({theme:e})=>({padding:"12px 20px",textAlign:"left",fontWeight:600,fontSize:"11px",textTransform:"uppercase",letterSpacing:"0.5px",color:e.color.mediumdark,borderBottom:`1px solid ${e.appBorderColor}`})),S$=Ut.tbody({}),w$=Ut.tr(({theme:e,mapped:t})=>({backgroundColor:t?"transparent":`${e.color.warning}05`,"&:hover":{backgroundColor:e.background.hoverable}})),Tc=Ut.td(({theme:e})=>({padding:"14px 20px",borderBottom:`1px solid ${e.appBorderColor}`,verticalAlign:"middle"})),v$=Ut.div({display:"flex",flexDirection:"column",gap:"2px"}),k$=Ut.div(({theme:e})=>({fontWeight:500,color:e.color.defaultText})),C$=Ut.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark})),T$=Ut.div(({theme:e,mapped:t})=>({color:t?e.color.positive:e.color.mediumlight,fontWeight:t?500:400,display:"flex",alignItems:"center",gap:"6px"})),I$=Ut.div({display:"flex",alignItems:"center",gap:"8px"}),F$=Ut.span(({theme:e,mapped:t})=>({width:"10px",height:"10px",borderRadius:"50%",backgroundColor:t?e.color.positive:e.color.mediumlight})),E$=Ut.span(({theme:e,mapped:t})=>({color:t?e.color.positive:e.color.mediumdark,fontWeight:500})),HC=Ut.button(({theme:e,variant:t})=>({padding:"6px 12px",fontSize:"12px",fontWeight:500,border:`1px solid ${t==="link"?e.color.secondary:e.color.negative}`,borderRadius:"4px",backgroundColor:t==="link"?`${e.color.secondary}10`:`${e.color.negative}10`,color:t==="link"?e.color.secondary:e.color.negative,cursor:"pointer",transition:"all 0.2s","&:hover":{backgroundColor:t==="link"?`${e.color.secondary}20`:`${e.color.negative}20`}})),A$=Ut.div(({theme:e})=>({flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:e.color.mediumdark,fontSize:"14px",gap:"8px",padding:"40px"})),P$=Ut.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:e.color.mediumdark,fontSize:"14px"})),WC=({stories:e,loading:t,onLink:n,onUnlink:r,projectId:o})=>{let[i,s]=bh("all"),[a,u]=bh(""),[c,l]=bh(!0),d=UC(()=>{let T=new Set;return e.forEach(I=>{I.componentTitle&&T.add(I.componentTitle)}),Array.from(T).sort()},[e]),g=UC(()=>e.filter(T=>{if(i!=="all"&&T.componentTitle!==i||!c&&!T.figmaMapping)return!1;if(a){let I=a.toLowerCase();return T.name.toLowerCase().includes(I)||T.title.toLowerCase().includes(I)||(T.figmaMapping?.figmaFrameName?.toLowerCase().includes(I)??!1)}return!0}),[e,i,a,c]),p=jC(async T=>{try{let I=K(),v=localStorage.getItem("uicopilot_session_token");if(!(await se(`${I}/api/mappings?projectId=${o}&storyId=${T}`,{method:"DELETE",headers:{Authorization:`Bearer ${v}`}})).ok)throw new Error("Failed to delete mapping");r(T)}catch(I){console.error("[ViewAllMappingsTab] Error unlinking:",I)}},[o,r]),h=jC(()=>{let T=e.filter(N=>N.figmaMapping).map(N=>({storyId:N.id,storyName:N.name,storyTitle:N.title,figmaNodeId:N.figmaMapping.figmaNodeId,figmaFrameName:N.figmaMapping.figmaFrameName})),I=new Blob([JSON.stringify(T,null,2)],{type:"application/json"}),v=URL.createObjectURL(I),D=document.createElement("a");D.href=v,D.download=`figma-mappings-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(D),D.click(),document.body.removeChild(D),URL.revokeObjectURL(v)},[e]);if(t)return tt.createElement(P$,null,"Loading mappings...");let S=e.filter(T=>T.figmaMapping).length;return tt.createElement(p$,null,tt.createElement(d$,null,tt.createElement(g$,{value:i,onChange:T=>s(T.target.value)},tt.createElement("option",{value:"all"},"All Components"),d.map(T=>tt.createElement("option",{key:T,value:T},T))),tt.createElement(f$,{type:"text",placeholder:"\u{1F50D} Search stories or Figma components...",value:a,onChange:T=>u(T.target.value)}),tt.createElement(m$,{active:c,onClick:()=>l(!c)},c?"\u2611":"\u2610"," Show unmapped"),tt.createElement(h$,{onClick:h,disabled:S===0},"\u{1F4E5} Export JSON")),g.length===0?tt.createElement(A$,null,tt.createElement("span",null,"\u{1F4ED}"),a?"No stories match your search":"No stories found"):tt.createElement(x$,null,tt.createElement(y$,null,tt.createElement(b$,null,tt.createElement("tr",null,tt.createElement(Cc,{style:{width:"35%"}},"Story"),tt.createElement(Cc,{style:{width:"35%"}},"Figma Component"),tt.createElement(Cc,{style:{width:"15%"}},"Status"),tt.createElement(Cc,{style:{width:"15%"}},"Actions"))),tt.createElement(S$,null,g.map(T=>tt.createElement(w$,{key:T.id,mapped:!!T.figmaMapping},tt.createElement(Tc,null,tt.createElement(v$,null,tt.createElement(k$,null,T.name),tt.createElement(C$,null,T.title))),tt.createElement(Tc,null,tt.createElement(T$,{mapped:!!T.figmaMapping},T.figmaMapping?tt.createElement(tt.Fragment,null,tt.createElement("span",null,"\u{1F3A8}"),T.figmaMapping.figmaFrameName):"\u2014")),tt.createElement(Tc,null,tt.createElement(I$,null,tt.createElement(F$,{mapped:!!T.figmaMapping}),tt.createElement(E$,{mapped:!!T.figmaMapping},T.figmaMapping?"Mapped":"Unmapped"))),tt.createElement(Tc,null,T.figmaMapping?tt.createElement(HC,{variant:"unlink",onClick:()=>p(T.id)},"Unlink"):tt.createElement(HC,{variant:"link",onClick:()=>n(T.id)},"Link"))))))))};import Fe,{useState as Lc,useMemo as QC}from"react";import{styled as ht}from"storybook/theming";import VC from"react";import{styled as GC,keyframes as L$}from"storybook/theming";var M$=L$`
|
|
42
42
|
0% { transform: rotate(0deg); }
|
|
43
43
|
100% { transform: rotate(360deg); }
|
|
44
|
-
`,B$=GC.span(({theme:e})=>({display:"inline-block",width:"12px",height:"12px",border:`2px solid ${e.appBorderColor}`,borderTopColor:"currentColor",borderRadius:"50%",animation:`${M$} 0.6s linear infinite`,marginRight:"6px",verticalAlign:"middle"})),D$=GC.button(({theme:e,variant:t="default",disabled:n})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"5px 12px",fontSize:"12px",fontWeight:600,border:`1px solid ${e.color.medium}`,borderRadius:"5px",cursor:n?"not-allowed":"pointer",opacity:n?.6:1,transition:"all 0.2s",whiteSpace:"nowrap",...t==="default"&&{backgroundColor:e.background.content,color:e.color.defaultText,"&:hover":n?{}:{borderColor:e.color.secondary,color:e.color.secondary,backgroundColor:"rgba(30, 167, 253, 0.05)"}},...t==="ghost"&&{backgroundColor:"transparent",border:"none",color:e.color.mediumdark,padding:"5px 8px","&:hover":n?{}:{color:e.color.defaultText,backgroundColor:e.background.hoverable}}})),Dr=({loading:e=!1,disabled:t=!1,onClick:n,variant:r="default",children:o,loadingText:i})=>VC.createElement(D$,{variant:r,disabled:t||e,onClick:n},e&&VC.createElement(B$,null),e&&i?i:o);_e();import dn from"react";import{styled as ma}from"storybook/theming";var qC=ma.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 16px",backgroundColor:e.background.hoverable,borderRadius:"6px",fontFamily:"Inter, sans-serif",fontSize:"11px",color:e.color.mediumdark,gap:"16px"})),R$=ma.div({display:"flex",alignItems:"center",gap:"12px"}),Ic=ma.span({whiteSpace:"nowrap"}),YC=ma.div({display:"flex",alignItems:"center",gap:"8px"}),Fc=ma.span(({theme:e})=>({fontWeight:600,color:e.color.defaultText})),Ec=({inputTokens:e,outputTokens:t,costUsd:n,compact:r=!1})=>{let o=e+t,i=n*Zw;return r?dn.createElement(qC,null,dn.createElement(Ic,null,o.toLocaleString()," tokens"),dn.createElement(YC,null,dn.createElement(Fc,null,"$",n.toFixed(4)),dn.createElement("span",null,"\xB7"),dn.createElement(Fc,null,"\u20AA",i.toFixed(2)))):dn.createElement(qC,null,dn.createElement(R$,null,dn.createElement(Ic,null,e.toLocaleString()," input"),dn.createElement("span",null,"+"),dn.createElement(Ic,null,t.toLocaleString()," output"),dn.createElement("span",null,"="),dn.createElement(Ic,null,dn.createElement("strong",null,o.toLocaleString())," tokens")),dn.createElement(YC,null,dn.createElement(Fc,null,"$",n.toFixed(4)),dn.createElement("span",null,"\xB7"),dn.createElement(Fc,null,"\u20AA",i.toFixed(2))))};import Kn from"react";import{styled as No}from"storybook/theming";function Sh(e){if(typeof e!="string")return e;try{let t=JSON.parse(e);if(t.summary)return t}catch{}return{summary:e}}var z$=No.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:`${e.layoutMargin*.5}px`})),KC=No.div(({theme:e,color:t})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:t||e.color.defaultText,lineHeight:"1.4"})),N$=No.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*.25}px`,flexWrap:"wrap",fontSize:e.typography.size.s1,color:e.color.mediumdark})),O$=No.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.layoutMargin*.2}px`,padding:`1px ${e.layoutMargin*.5}px`,borderRadius:e.appBorderRadius,backgroundColor:e.background.hoverable,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.mono})),_$=No.span(({theme:e})=>({color:e.color.mediumlight,fontSize:e.typography.size.s1})),$$=No.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,fontStyle:"italic"})),U$=No.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,display:"flex",gap:`${e.layoutMargin*.25}px`})),j$=No.span(({theme:e})=>({fontWeight:e.typography.weight.bold,color:e.color.defaultText})),XC=({data:e,color:t,compact:n})=>n?Kn.createElement(KC,{color:t},e.summary):Kn.createElement(z$,null,Kn.createElement(KC,{color:t},e.summary),e.mappings&&e.mappings.length>0&&Kn.createElement(N$,null,e.mappings.map((r,o)=>Kn.createElement(Kn.Fragment,{key:o},Kn.createElement(O$,null,r.from," ",Kn.createElement(_$,null,"\u2192")," ",r.to)))),e.candidates!=null&&e.candidates>1&&Kn.createElement($$,null,e.candidates," candidate variants matched"),e.defaults&&e.defaults.length>0&&Kn.createElement(Kn.Fragment,null,e.defaults.map((r,o)=>Kn.createElement(U$,{key:o},Kn.createElement(j$,null,r.choice),Kn.createElement("span",null,"\u2014 ",r.why)))));var H$=ht.div({display:"flex",flexDirection:"column",flex:1,overflow:"hidden"}),W$=ht.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px",borderBottom:`1px solid ${e.appBorderColor}`})),V$=ht.div({display:"flex",flexDirection:"column",gap:"4px"}),G$=ht.div({display:"flex",alignItems:"center",gap:"10px"}),q$=ht.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText,letterSpacing:"-0.3px"})),JC=ht.span(({theme:e,variant:t})=>({padding:"3px 10px",borderRadius:"20px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,fontWeight:500,backgroundColor:t==="success"?`${e.color.positive}1a`:t==="danger"?`${e.color.negative}1a`:`${e.color.secondary}1a`,color:t==="success"?e.color.positive:t==="danger"?e.color.negative:e.color.secondary})),Y$=ht.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark})),K$=ht.div({display:"flex",gap:"8px"}),X$=ht.div(({theme:e})=>({display:"flex",alignItems:"center",padding:"12px 24px",gap:"12px",borderBottom:`1px solid ${e.appBorderColor}`})),Q$=ht(To)(({theme:e})=>({flex:1,fontSize:e.typography.size.s2})),J$=ht.div({display:"flex",gap:"4px"}),Ac=ht.button(({theme:e,active:t})=>({padding:"6px 12px",borderRadius:"6px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:500,border:t?"none":`1px solid ${e.appBorderColor}`,backgroundColor:t?e.color.defaultText:e.background.content,color:t?e.color.inverseText:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","&:hover":{backgroundColor:t?e.color.defaultText:e.background.hoverable}})),Z$=ht.div({display:"flex",flexDirection:"column",flex:1,padding:"16px 24px",gap:"8px",overflowY:"auto"}),e4=ht.div(({theme:e,dimmed:t})=>({display:"flex",alignItems:"center",padding:"12px 16px",border:`1px solid ${e.appBorderColor}`,borderRadius:"10px",gap:"12px",backgroundColor:e.background.content,opacity:t?.6:1,transition:"opacity 0.15s",position:"relative",zIndex:0,"&:hover":{zIndex:10}})),t4=ht.div(({theme:e,checked:t})=>({width:"18px",height:"18px",borderRadius:"4px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",transition:"all 0.15s",...t?{backgroundColor:e.color.defaultText,color:e.color.inverseText,fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold}:{border:`2px solid ${e.color.mediumlight}`}})),n4=ht.div(({theme:e,bgColor:t})=>({width:"48px",height:"40px",borderRadius:"6px",backgroundColor:t||e.background.hoverable,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,overflow:"hidden"})),Pc=ht.div(({theme:e})=>({width:"120px",height:"80px",borderRadius:"8px",backgroundColor:e.background.hoverable,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,overflow:"hidden",border:`1px solid ${e.appBorderColor}`})),r4=ht.img({width:"100%",height:"100%",objectFit:"contain"}),r1=ht.div(({theme:e})=>({width:"16px",height:"16px",border:`2px solid ${e.appBorderColor}`,borderTopColor:e.color.secondary,borderRadius:"50%",animation:"uicopilot-spin 0.8s linear infinite","@keyframes uicopilot-spin":{to:{transform:"rotate(360deg)"}}})),ZC=ht.div({flex:1,display:"flex",flexDirection:"column",gap:"2px",minWidth:0}),e1=ht.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:500,color:e.color.defaultText,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),wh=ht.span(({theme:e,color:t})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:t||e.color.mediumdark,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),mre=ht.span(({theme:e,color:t})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:t||e.color.mediumdark,lineHeight:1.5,whiteSpace:"pre-line"})),o4=ht.div(({theme:e})=>({flexShrink:0,color:e.color.mediumlight,fontSize:"14px"})),i4=ht.span(({theme:e,level:t})=>({padding:"4px 10px",borderRadius:"20px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,flexShrink:0,backgroundColor:t==="high"?`${e.color.positive}1a`:t==="medium"?`${e.color.warning}1a`:`${e.color.negative}1a`,color:t==="high"?e.color.positive:t==="medium"?e.color.warning:e.color.negative})),s4=ht.button(({theme:e})=>({padding:"4px 8px",borderRadius:e.appBorderRadius,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,fontWeight:500,border:`1px solid ${e.appBorderColor}`,backgroundColor:"transparent",color:e.color.mediumdark,cursor:"pointer",flexShrink:0,transition:"all 0.15s","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText}})),a4=ht.div(({theme:e})=>({padding:"16px 0",marginTop:"8px",borderTop:`1px solid ${e.appBorderColor}`,display:"flex",flexDirection:"column",gap:"8px"})),l4=ht.div({display:"flex",flexWrap:"wrap",gap:"6px"}),c4=ht.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"6px 12px",border:`1px dashed ${e.appBorderColor}`,borderRadius:"8px",backgroundColor:e.background.hoverable,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark})),u4=ht.span(({theme:e,variant:t})=>({padding:"3px 10px",borderRadius:"20px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,fontWeight:500,backgroundColor:t==="cache"?`${e.color.warning}1a`:`${e.color.positive}1a`,color:t==="cache"?e.color.warning:e.color.positive})),p4=ht.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"5px",padding:"5px 12px",border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",backgroundColor:"transparent",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:500,color:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),hre=ht.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 24px",borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.hoverable,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.mediumdark})),t1=({src:e,alt:t})=>{let[n,r]=Lc(!1);return Fe.createElement(Fe.Fragment,null,!n&&Fe.createElement(r1,null),Fe.createElement(r4,{src:e,alt:t,onLoad:()=>r(!0),style:n?void 0:{position:"absolute",opacity:0}}))};function n1(e){return e>=90?"high":e>=70?"medium":"low"}function d4(e){return e==="high"?"#16a34a":e==="medium"?"#d97706":"#ef4444"}var o1=({results:e,stories:t,onApply:n,onCancel:r,onRerun:o,isApplying:i,isRerunning:s,source:a,resolveThumbnail:u,resolveStoryScreenshot:c,isCapturingScreenshots:l,onBrowse:d})=>{let[g,p]=Lc(()=>{let k=new Set;for(let A of e.mappings)A.confidence>=90&&k.add(A.storyId);return k}),[h,S]=Lc(""),[T,I]=Lc("all"),v=QC(()=>{let k=new Map;for(let A of t)k.set(A.id,{name:A.name,title:A.title});return k},[t]),D=QC(()=>{let k=e.mappings;if(T!=="all"&&(k=k.filter(A=>n1(A.confidence)===T)),h.trim()){let A=h.toLowerCase();k=k.filter(f=>{let C=v.get(f.storyId);return C?.name.toLowerCase().includes(A)||C?.title.toLowerCase().includes(A)||f.componentSetName.toLowerCase().includes(A)||f.figmaFrameName.toLowerCase().includes(A)})}return k},[e.mappings,T,h,v]),N=k=>{p(A=>{let f=new Set(A);return f.has(k)?f.delete(k):f.add(k),f})},j=()=>{let k=e.mappings.filter(A=>g.has(A.storyId));n(k)},B=e.mappings.filter(k=>k.confidence>=90).length,z=e.mappings.filter(k=>k.confidence>=70&&k.confidence<90).length,m=e.mappings.filter(k=>k.confidence<70).length,b=e.usage;return Fe.createElement(H$,null,Fe.createElement(W$,null,Fe.createElement(V$,null,Fe.createElement(G$,null,Fe.createElement(q$,null,"Auto-Map Results"),Fe.createElement(JC,{variant:"success"},e.stats.matched," matched"),e.unmatched.length>0&&Fe.createElement(JC,{variant:"danger"},e.unmatched.length," unmatched"),a&&Fe.createElement(u4,{variant:a},a==="cache"?"Loaded from cache":"Fresh analysis")),Fe.createElement(Y$,null,"Review matches below. Uncheck any incorrect mappings before applying.")),Fe.createElement(K$,null,a==="cache"&&o&&Fe.createElement(p4,{onClick:o,disabled:s},s?"Re-running...":"Re-run LLM"),Fe.createElement(Dr,{onClick:r,variant:"ghost"},"Cancel"),Fe.createElement(Dr,{loading:i,onClick:j,loadingText:"Applying..."},"Apply ",g.size," Selected"))),Fe.createElement(X$,null,Fe.createElement(Q$,{type:"text",placeholder:"Filter stories...",value:h,onChange:k=>S(k.target.value)}),Fe.createElement(J$,null,Fe.createElement(Ac,{active:T==="all",onClick:()=>I("all")},"All ",e.mappings.length),B>0&&Fe.createElement(Ac,{active:T==="high",onClick:()=>I("high")},"\u226590% (",B,")"),z>0&&Fe.createElement(Ac,{active:T==="medium",onClick:()=>I("medium")},"70-89% (",z,")"),m>0&&Fe.createElement(Ac,{active:T==="low",onClick:()=>I("low")},"<70% (",m,")"))),Fe.createElement(Z$,null,D.map(k=>{let A=v.get(k.storyId),f=n1(k.confidence),C=g.has(k.storyId),E=f==="low";return Fe.createElement(e4,{key:k.storyId,dimmed:E&&!C},Fe.createElement(t4,{checked:C,onClick:()=>N(k.storyId)},C?"\u2713":""),(()=>{let x=c?.(k.storyId);return x?Fe.createElement(Pc,null,Fe.createElement(t1,{src:x,alt:A?.name||k.storyId})):l?Fe.createElement(Pc,null,Fe.createElement(r1,null)):Fe.createElement(n4,{bgColor:E?"#f1f5f9":"#eff6ff"},Fe.createElement("span",{style:{fontFamily:"Inter",fontSize:"8px",fontWeight:500,color:E?"#94a3b8":"#3b82f6"}},(A?.name||"?").substring(0,4)))})(),Fe.createElement(ZC,null,Fe.createElement(e1,null,A?.name||k.storyId),Fe.createElement(wh,null,A?.title||"")),Fe.createElement(o4,null,"\u2192"),(()=>{let x=u?.(k.figmaNodeId),F=Sh(k.reason),P=F.summary+(F.candidates?` (${F.candidates} candidates)`:"");return x?Fe.createElement(Pc,{title:P},Fe.createElement(t1,{src:x,alt:k.figmaFrameName})):Fe.createElement(Pc,{title:P},Fe.createElement("span",{style:{fontFamily:"Inter",fontSize:"10px",fontWeight:500,color:"#94a3b8"}},"No thumbnail"))})(),Fe.createElement(ZC,null,Fe.createElement(e1,null,k.componentSetName),Fe.createElement(wh,null,k.figmaFrameName),Fe.createElement(XC,{data:Sh(k.reason),color:d4(f)})),Fe.createElement(i4,{level:f},k.confidence,"%"),d&&Fe.createElement(s4,{onClick:()=>d(k.componentSetName)},"Browse"))}),e.unmatched.length>0&&Fe.createElement(a4,null,Fe.createElement(wh,null,e.unmatched.length," stories couldn't be matched \u2014 map manually after applying"),Fe.createElement(l4,null,e.unmatched.map(k=>{let A=v.get(k);return Fe.createElement(c4,{key:k},Fe.createElement("span",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:"#cbd5e1"}}),A?`${A.name} (${A.title})`:k)})))),b&&a!=="cache"&&Fe.createElement("div",{style:{padding:"8px 24px",borderTop:"1px solid #f0f0f0"}},Fe.createElement(Ec,{inputTokens:b.inputTokens||0,outputTokens:b.outputTokens||0,costUsd:b.costUsd||0})))};_e();Oe();import{useState as Oo,useCallback as _o,useRef as g4}from"react";import{useStorybookApi as f4}from"storybook/manager-api";function i1({projectId:e}){let t=f4(),n=g4(null),[r,o]=Oo(!1),[i,s]=Oo(!1),[a,u]=Oo(!1),[c,l]=Oo(null),[d,g]=Oo(null),[p,h]=Oo(null),[S,T]=Oo(""),[I,v]=Oo(null),D=_o(async()=>{let A=await fetch("/index.json");if(!A.ok)throw new Error("Failed to fetch Storybook index");let f=await A.json(),C=f.entries||f.stories||{},E=Object.keys(C).filter(P=>C[P].type==="story");y.debug(`[useAutoMap] Found ${E.length} stories in index.json`);let x=[];for(let P of E){let M=C[P],O=t.getData(P),w={...O?.initialArgs||{}},R=O?.argTypes||{};for(let[W,L]of Object.entries(R))if(!(W in w)){let oe=L;if(oe.defaultValue!==void 0)w[W]=oe.defaultValue;else if(oe.table?.defaultValue?.summary!==void 0){let X=oe.table.defaultValue.summary;X==="false"?w[W]=!1:X==="true"?w[W]=!0:w[W]=X}}x.push({id:P,name:M.name||P.split("--").pop()||P,title:M.title||"",initialArgs:w,argTypes:R})}let F=x.filter(P=>Object.keys(P.initialArgs).length>0);return y.debug(`[useAutoMap] Manifest: ${x.length} stories, ${F.length} with args`),x},[t]),N=_o(async()=>{if(!e)return!1;try{let A=K(),f=localStorage.getItem("uicopilot_session_token");if(!f)return!1;let C=await fetch(`${A}/api/figma/auto-map?projectId=${e}`,{headers:{Authorization:`Bearer ${f}`}});if(!C.ok)return!1;let E=await C.json();return E.hasSuggestions&&E.mappings?.length>0?(g(E),v("cache"),T(`Loaded ${E.mappings.length} saved suggestions`),y.debug(`[useAutoMap] Loaded ${E.mappings.length} existing suggestions from DB`),!0):!1}catch{return!1}},[e]),j=_o(async A=>{o(!0),T("Collecting story information...");let f;try{if(f=await D(),A?.length&&(f=f.filter(E=>!A.includes(E.id)),y.debug(`[useAutoMap] After excluding mapped: ${f.length} stories`)),f.length===0){l("No unmapped stories found"),o(!1);return}h(f)}catch(E){l(E instanceof Error?E.message:"Failed to collect story manifest"),o(!1);return}o(!1),s(!0),T(`Analyzing ${f.length} stories against Figma components...`);let C=new AbortController;n.current=C;try{let E=K(),x=localStorage.getItem("uicopilot_session_token");if(!x)throw new Error("Not authenticated");let F=await fetch(`${E}/api/figma/auto-map`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`},body:JSON.stringify({projectId:e,stories:f.map(M=>({id:M.id,name:M.name,title:M.title,initialArgs:M.initialArgs,argTypes:M.argTypes}))}),signal:C.signal});if(!F.ok){let M=await F.json();throw new Error(M.error||"Auto-map failed")}let P=await F.json();g(P),v("llm"),T(`Found ${P.stats.matched} matches (${P.stats.highConfidence} high confidence)`),y.debug(`[useAutoMap] Results: ${P.stats.matched}/${P.stats.total} matched, ${P.unmatched.length} unmatched`)}catch(E){if(E instanceof DOMException&&E.name==="AbortError"){T("Cancelled");return}l(E instanceof Error?E.message:"Auto-map failed")}finally{s(!1),n.current=null}},[e,D]),B=_o(async A=>{if(!e)return;if(l(null),g(null),v(null),o(!0),T("Checking for existing suggestions..."),await N()){o(!1);return}await j(A)},[e,N,j]),z=_o(async A=>{e&&(l(null),g(null),v(null),await j(A))},[e,j]),m=_o(async A=>{if(!(!e||A.length===0)){u(!0),T(`Applying ${A.length} mappings...`);try{let f=K(),C=localStorage.getItem("uicopilot_session_token");if(!C)throw new Error("Not authenticated");let E=0;for(let x of A)try{(await fetch(`${f}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${C}`},body:JSON.stringify({projectId:e,storyId:x.storyId,figmaNodeId:x.figmaNodeId,name:x.figmaFrameName||x.componentSetName})})).ok?E++:y.warn(`[useAutoMap] Failed to apply mapping for ${x.storyId}`)}catch(F){y.error(`[useAutoMap] Error applying mapping for ${x.storyId}:`,F)}T(`Applied ${E}/${A.length} mappings`),y.debug(`[useAutoMap] Applied ${E}/${A.length} mappings`)}catch(f){l(f instanceof Error?f.message:"Failed to apply mappings")}finally{u(!1)}}},[e]),b=_o(()=>{n.current?.abort()},[]),k=_o(()=>{g(null),h(null),l(null),T(""),v(null)},[]);return{collectAndMap:B,rerun:z,loadExisting:N,applyMappings:m,cancel:b,reset:k,isCollecting:r,isMapping:i,isApplying:a,error:c,results:d,manifest:p,progress:S,source:I}}Oe();import{useState as vh,useEffect as m4,useRef as s1}from"react";var a1=2;async function h4(e,t){try{let n=await fetch(`/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`,{signal:t});return n.ok&&(await n.json()).screenshot||null}catch{return null}}function l1(e){let[t,n]=vh({}),[r,o]=vh(0),[i,s]=vh(!1),a=s1(null),u=s1(""),c=e.join(",");return m4(()=>{if(!e.length||c===u.current)return;u.current=c,n({}),o(0),s(!0);let l=new AbortController;a.current=l;let d=0;return(async()=>{for(let p=0;p<e.length&&!l.signal.aborted;p+=a1){let h=e.slice(p,p+a1),S=await Promise.all(h.map(I=>h4(I,l.signal).then(v=>({id:I,img:v}))));if(l.signal.aborted)break;let T={};for(let{id:I,img:v}of S)d++,v&&(T[I]=v);Object.keys(T).length>0&&n(I=>({...I,...T})),o(d)}s(!1),y.debug(`[useStoryScreenshots] Captured ${d}/${e.length} screenshots`)})().catch(()=>s(!1)),()=>{l.abort()}},[c]),{screenshots:t,isCapturing:i,progress:{done:r,total:e.length}}}import we,{useState as kh,useEffect as ha,useMemo as x4,useCallback as y4}from"react";import{styled as b4}from"storybook/theming";Oe();var S4=b4.button(({theme:e})=>({gridColumn:"1 / -1",padding:"8px 16px",backgroundColor:"transparent",border:`1px dashed ${e.appBorderColor}`,borderRadius:e.appBorderRadius,color:e.color.mediumdark,fontSize:e.typography.size.s1,cursor:"pointer",transition:"all 0.15s","&:hover:not(:disabled)":{borderColor:e.color.secondary,color:e.color.secondary},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),Zi=({isOpen:e,onClose:t,onSelect:n,projectId:r,stories:o=[],currentStoryId:i,onStoryChange:s,multiSelect:a=!1,onMultiSelect:u,initialSearch:c})=>{let l=ca({projectId:r||"",enabled:e&&!!r}),d=we.useRef(!1);ha(()=>{e&&c&&!d.current&&(l.setSearch(c),d.current=!0),e||(d.current=!1)},[e,c]);let[g,p]=kh(new Set),[h,S]=kh(i||o[0]?.id||"");ha(()=>{i&&S(i)},[i]);let T=50,I=8,[v,D]=kh({}),N=y4(f=>{D(C=>({...C,[f]:(C[f]||1)+1}))},[]);ha(()=>{D({})},[l.variantFilters]),ha(()=>{l.expandedSets.forEach(f=>{let C=l.variantChildren[f];if(!C||C.length===0)return;let E=C;l.variantFilters.some(P=>P.value)&&(E=C.filter(P=>P.variantProperties?l.variantFilters.every(M=>M.value?P.variantProperties?.[M.property]===M.value:!0):!1));let x=v[f]||1,F=E.slice(0,x*T).map(P=>P.id);for(let P=0;P<F.length;P+=I){let M=F.slice(P,P+I),O=P/I*300;O===0?l.fetchVariantThumbnails(f,M):setTimeout(()=>l.fetchVariantThumbnails(f,M),O)}})},[l.expandedSets,l.variantChildren,l.variantFilters,v]),ha(()=>{p(new Set)},[h]);let j=x4(()=>{let f=[];return l.filteredFrames.forEach(C=>{if(C.type==="COMPONENT_SET"&&C.children){let E=l.variantFilters.some(x=>x.value)?C.children.filter(x=>x.variantProperties?l.variantFilters.every(F=>F.value?x.variantProperties?.[F.property]===F.value:!0):!1):C.children;f.push(...E)}else f.push(C)}),f},[l.filteredFrames,l.variantFilters]),B=f=>{if(a)p(C=>{let E=new Set(C);return E.has(f.id)?E.delete(f.id):E.add(f.id),E});else{let C=l.resolveThumbnail(f.id);try{n({...f,thumbnail:C})}catch(E){y.error("[ComponentBrowserModal] onSelect threw error:",E)}t()}},z=()=>{let f=j.map(E=>E.id),C=f.every(E=>g.has(E));p(C?new Set:new Set(f))},m=()=>{if(u&&g.size>0){let f=j.filter(C=>g.has(C.id)).map(C=>({...C,thumbnail:l.resolveThumbnail(C.id)}));u(f),p(new Set)}},b=f=>{S(f),s?.(f)},k=f=>{f.target===f.currentTarget&&t()},A=o.find(f=>f.id===h);return e?we.createElement(Gk,{onClick:k},we.createElement(qk,null,we.createElement(Yk,null,we.createElement(Kk,null,"Link Figma Frames"),we.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center"}},we.createElement("button",{onClick:()=>l.refresh(),disabled:l.isLoading,style:{padding:"4px 8px",fontSize:"12px",cursor:l.isLoading?"not-allowed":"pointer",background:"transparent",border:"1px solid #ccc",borderRadius:"4px"},title:"Refresh from Figma"},"Refresh"),we.createElement(Xk,{onClick:t},"\xD7"))),we.createElement(Qk,null,l.error&&we.createElement(oC,null,l.error),!l.error&&we.createElement(we.Fragment,null,o.length>0&&we.createElement(mC,null,we.createElement(hC,null,"Story:"),we.createElement(xC,{value:h,onChange:f=>b(f.target.value)},o.map(f=>we.createElement("option",{key:f.id,value:f.id},f.name,f.mappingsCount?` (${f.mappingsCount} linked)`:""))),A?.mappingsCount?we.createElement(yC,{hasMapping:!0},A.mappingsCount," frames linked"):null),we.createElement(nC,null,we.createElement(bc,null,we.createElement("input",{type:"checkbox",checked:l.showComponentSets,onChange:f=>l.setShowComponentSets(f.target.checked)}),"Component Sets"),we.createElement(bc,null,we.createElement("input",{type:"checkbox",checked:l.showFrames,onChange:f=>l.setShowFrames(f.target.checked)}),"Frames"),we.createElement(bc,null,we.createElement("input",{type:"checkbox",checked:l.showComponents,onChange:f=>l.setShowComponents(f.target.checked)}),"Components"),l.availablePages.length>1&&we.createElement(Qi,{isActive:!!l.figmaPage,value:l.figmaPage,onChange:f=>l.setFigmaPage(f.target.value),style:{marginLeft:"auto"}},we.createElement("option",{value:""},"All pages"),l.availablePages.map(f=>we.createElement("option",{key:f,value:f},f)))),l.filterSuggestion&&we.createElement(bC,null,we.createElement(SC,null,"AI suggests:"),we.createElement(wC,null,Object.entries(l.filterSuggestion.suggestedFilters).map(([f,C])=>`${f}=${C}`).join(", ")),we.createElement(vC,{onClick:l.applySuggestedFilters},"Apply"),we.createElement(kC,{onClick:l.dismissFilterSuggestion},"Dismiss")),l.filterSuggestionLoading&&we.createElement(CC,null,"Matching story args to Figma filters..."),l.availableFilters.length>0&&we.createElement(wc,null,we.createElement(ga,null,"Filters:"),l.availableFilters.map(({property:f,values:C})=>{let E=l.variantFilters.find(x=>x.property===f);return we.createElement(Qi,{key:f,isActive:!!E?.value,value:E?.value||"",onChange:x=>l.handleFilterChange(f,x.target.value)},we.createElement("option",{value:""},f),C.map(x=>we.createElement("option",{key:x,value:x},f,"=",x)))}),l.variantFilters.some(f=>f.value)&&we.createElement(vc,{onClick:l.clearFilters},"Clear All")),l.rateLimitError&&we.createElement("div",{style:{padding:"8px 12px",marginBottom:"8px",background:"rgba(234, 88, 12, 0.12)",border:"1px solid rgba(234, 88, 12, 0.3)",borderRadius:"6px",fontSize:"12px",color:"#ea580c"}},"\u26A0 Figma thumbnail previews unavailable \u2014"," ",l.rateLimitError,". You can still select by name."),we.createElement(Jk,{type:"text",placeholder:"Search frames...",value:l.search,onChange:f=>l.setSearch(f.target.value),autoFocus:!0}),a&&j.length>0&&we.createElement(TC,null,we.createElement(IC,{onClick:z},g.size===j.length?"Deselect All":"Select All Visible"),we.createElement(FC,null,g.size>0?`${g.size} selected of `:"Showing ",j.length," frames")),l.isLoading&&we.createElement(nh,null,Array.from({length:6}).map((f,C)=>we.createElement(fC,{key:C},we.createElement("div",{style:{width:"100%",aspectRatio:"4 / 3"}},we.createElement(Sc,{width:"100%",height:"100%"})),we.createElement("div",{style:{padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},we.createElement(Sc,{width:"80%",height:"16px"}),we.createElement(Sc,{width:"50%",height:"12px"}))))),!l.isLoading&&l.filteredFrames.length===0&&we.createElement(rC,null,l.search?"No frames match your search":"No frames found in this Figma file"),!l.isLoading&&l.filteredFrames.length>0&&we.createElement(nh,null,l.filteredFrames.map(f=>we.createElement(fa,{key:f.id,frame:f,thumbnail:l.thumbnails[f.id],thumbnails:l.thumbnails,variantThumbnails:l.variantThumbnails[f.id],variantChildren:l.variantChildren[f.id],variantFailed:l.variantFailed[f.id],isLoadingVariants:l.loadingVariants.has(f.id),isExpanded:l.expandedSets.has(f.id),isNew:l.recentlyAdded.has(f.name),onToggleExpand:l.toggleExpanded,onSelect:B,multiSelect:a,selectedFrames:g,variantFilters:l.variantFilters,variantPage:v[f.id]||1,onShowMore:N})),l.hasMore&&we.createElement(S4,{onClick:l.loadMore,disabled:l.loadingMore},l.loadingMore?"Loading...":`Show more (${l.totalFrames-l.frames.length} remaining)`)))),a&&we.createElement(EC,null,we.createElement(AC,{disabled:g.size===0,onClick:m},"Link ",g.size," Selected")))):null};Ce();ct();var v4=rn.div({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4}),k4=rn.div(({theme:e})=>({width:"90vw",maxWidth:"1100px",height:"75vh",backgroundColor:e.background.content,borderRadius:"12px",display:"flex",flexDirection:"column",boxShadow:"0 20px 60px rgba(0, 0, 0, 0.3)",overflow:"hidden"})),C4=rn.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app})),T4=rn.div({display:"flex",alignItems:"center",gap:"20px"}),I4=rn.h2(({theme:e})=>({fontSize:"16px",fontWeight:600,color:e.color.defaultText,margin:0,display:"flex",alignItems:"center",gap:"8px"})),F4=rn.div({display:"flex",gap:"4px"}),c1=rn(Co)(({theme:e,active:t})=>({padding:"8px 16px",borderBottom:"none",borderRadius:"6px",backgroundColor:t?e.background.hoverable:"transparent","&:hover":{backgroundColor:e.background.hoverable}})),E4=rn(Bn)({width:"32px",height:"32px",fontSize:"20px",borderRadius:"6px"}),A4=rn.div({flex:1,overflow:"hidden",display:"flex",flexDirection:"column"}),P4=rn.div(({theme:e})=>({padding:"12px 20px",borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app,display:"flex",alignItems:"center",justifyContent:"space-between"})),L4=rn.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,display:"flex",gap:"16px"})),M4=rn.div({display:"flex",flexDirection:"column",flex:1,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(255, 255, 255, 0.95)",padding:"40px"}),B4=rn.div({display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",maxWidth:"400px"}),D4=rn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText,textAlign:"center"})),R4=rn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark,textAlign:"center"})),z4=rn.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden"})),N4=rn.div(({theme:e})=>({width:"100%",height:"100%",backgroundColor:e.color.secondary,borderRadius:"4px",opacity:.6})),O4=rn.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"6px 14px",backgroundColor:e.color.defaultText,color:"white",border:"none",borderRadius:"6px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,cursor:"pointer",transition:"opacity 0.15s","&:hover":{opacity:.85},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),u1=rn.span(({theme:e,type:t})=>({display:"flex",alignItems:"center",gap:"6px","& .dot":{width:"8px",height:"8px",borderRadius:"50%",backgroundColor:t==="mapped"?e.color.positive:t==="unmapped"?e.color.mediumlight:"transparent"}})),p1=({isOpen:e,onClose:t,projectId:n})=>{let[r,o]=es("map"),[i,s]=es([]),[a,u]=es(!0),[c,l]=es(null),[d,g]=es(!1),[p,h]=es(null),S=i1({projectId:n}),{refreshMappings:T}=Ze(),{featureFlags:I}=ue(),v=Je.useMemo(()=>S.results?.mappings.map(x=>x.storyId)||[],[S.results]),D=l1(v),N=$o(async()=>{u(!0);try{let x=await fetch("/index.json");if(!x.ok)throw new Error("Failed to fetch index.json");let F=await x.json(),P=F.entries||F.stories||{},M=Object.entries(P).filter(([,w])=>w.type==="story").map(([w,R])=>({id:w,name:R.name||w.split("--").pop()||w,title:R.title||"",importPath:R.importPath,componentTitle:R.title?.split("/").slice(0,-1).join("/")||R.title,figmaMapping:null}));try{let w=K(),R=localStorage.getItem("uicopilot_session_token"),W=await se(`${w}/api/mappings?projectId=${n}&_t=${Date.now()}`,{headers:{Authorization:`Bearer ${R}`}});if(W.ok){let L=await W.json(),oe=new Map((L.mappings||[]).map(X=>[X.storyId,X]));M.forEach(X=>{let ne=oe.get(X.id);ne&&ne.figmaNodeId&&(X.figmaMapping={figmaNodeId:ne.figmaNodeId,figmaFrameName:ne.name||ne.figmaFrameName||""})})}}catch(w){console.warn("[StoryMappingAssistant] Failed to fetch mappings (stories still loaded):",w)}s(M);let O=M.find(w=>!w.figmaMapping);O?l(O.id):M.length>0&&l(M[0].id)}catch(x){console.error("[StoryMappingAssistant] Error fetching stories:",x)}finally{u(!1)}},[n]);w4(()=>{e&&N()},[e,N]);let j=$o((x,F,P)=>{s(w=>w.map(R=>R.id===x?{...R,figmaMapping:{figmaNodeId:F,figmaFrameName:P}}:R));let M=i.findIndex(w=>w.id===x),O=i.find((w,R)=>R>M&&!w.figmaMapping);O&&l(O.id)},[i]),B=$o(x=>{s(F=>F.map(P=>P.id===x?{...P,figmaMapping:null}:P))},[]),z=$o(x=>{l(x),o("map")},[]),m=$o(()=>{let x=i.filter(F=>F.figmaMapping).map(F=>F.id);S.collectAndMap(x)},[i,S]),b=$o(()=>{let x=i.filter(F=>F.figmaMapping).map(F=>F.id);g(!1),S.rerun(x)},[i,S]),k=$o(async x=>{await S.applyMappings(x),g(!1),S.reset(),N(),T()},[S,N,T]),A=$o(()=>{g(!1),S.reset()},[S]);Je.useEffect(()=>{S.results&&g(!0)},[S.results]);let f=x=>{x.target===x.currentTarget&&t()};if(!e)return null;let C=i.filter(x=>x.figmaMapping).length,E=i.length;return Je.createElement(Je.Fragment,null,Je.createElement(v4,{onClick:f},Je.createElement(k4,{onClick:x=>x.stopPropagation()},Je.createElement(C4,null,Je.createElement(T4,null,Je.createElement(I4,null,Je.createElement("span",null,"\u{1F517}"),"Link Stories to Figma"),Je.createElement(F4,null,Je.createElement(c1,{active:r==="map",onClick:()=>o("map")},"Map Stories"),Je.createElement(c1,{active:r==="view",onClick:()=>o("view")},"View All Mappings"))),Je.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},I.enableAutoMap&&!d&&!S.isCollecting&&!S.isMapping&&Je.createElement(O4,{onClick:m,disabled:a||i.length===0},Je.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"white",strokeWidth:"2"},Je.createElement("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),Je.createElement("path",{d:"M2 17l10 5 10-5"}),Je.createElement("path",{d:"M2 12l10 5 10-5"})),"Auto-Map All"),Je.createElement(E4,{onClick:t},"\xD7"))),Je.createElement(A4,null,(S.isCollecting||S.isMapping)&&Je.createElement(M4,null,Je.createElement(B4,null,Je.createElement(z4,null,Je.createElement(N4,null)),Je.createElement(D4,null,"Auto-mapping stories to Figma"),Je.createElement(R4,null,S.progress),Je.createElement(Dr,{onClick:S.cancel,variant:"ghost"},"Cancel"))),d&&S.results&&Je.createElement(o1,{results:S.results,stories:i,onApply:k,onCancel:A,onRerun:b,isApplying:S.isApplying,isRerunning:S.isCollecting||S.isMapping,source:S.source,resolveThumbnail:x=>S.results?.thumbnailUrls?.[x],resolveStoryScreenshot:x=>D.screenshots[x],isCapturingScreenshots:D.isCapturing,onBrowse:x=>h(x)}),!d&&!S.isCollecting&&!S.isMapping&&(r==="map"?Je.createElement($C,{stories:i,loading:a,selectedStoryId:c,onSelectStory:l,onStoryMapped:j,projectId:n}):Je.createElement(WC,{stories:i,loading:a,onLink:z,onUnlink:B,projectId:n}))),Je.createElement(P4,null,Je.createElement(L4,null,Je.createElement("span",null,"Total: ",E," stories"),Je.createElement(u1,{type:"mapped"},Je.createElement("span",{className:"dot"}),C," mapped"),Je.createElement(u1,{type:"unmapped"},Je.createElement("span",{className:"dot"}),E-C," unmapped"))))),Je.createElement(Zi,{isOpen:!!p,onClose:()=>h(null),onSelect:()=>h(null),projectId:n,initialSearch:p||void 0}))};ct();var d1=sr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"12px 16px",backgroundColor:e.background.content,borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px",transition:"border-color 0.2s, box-shadow 0.2s","&:hover":{borderColor:e.color.mediumlight}})),$4=sr.div(({theme:e})=>({width:"20px",height:"20px",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,"& svg":{width:"16px",height:"16px"}})),U4=sr.div({display:"flex",alignItems:"center",gap:"12px",flex:1}),j4=sr.div({display:"flex",alignItems:"center",gap:"8px"}),H4=sr.div(({theme:e})=>({width:"60px",height:"4px",backgroundColor:e.appBorderColor,borderRadius:"2px",overflow:"hidden"})),W4=sr.div(({theme:e,percent:t,state:n})=>({width:`${t}%`,height:"100%",borderRadius:"2px",backgroundColor:n==="complete"?e.color.positive:n==="partial"?e.color.warning:e.color.mediumlight,transition:"width 0.3s ease"})),V4=sr.span(({theme:e,state:t})=>({fontSize:"12px",fontWeight:600,color:t==="complete"?e.color.positive:t==="partial"?e.color.warning:e.color.mediumdark,whiteSpace:"nowrap"})),G4=sr.span(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText})),q4=sr(Au)({padding:"4px 10px",fontSize:"12px",fontWeight:600,marginLeft:"auto"}),Y4=sr(Au)(({theme:e})=>({padding:"4px 10px",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.negative||"#dc2626","&:hover":{textDecoration:"none",backgroundColor:"rgba(220, 38, 38, 0.08)"}})),K4=sr.span(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,fontStyle:"italic"})),X4=sr.div(({theme:e})=>({width:"14px",height:"14px",border:`2px solid ${e.appBorderColor}`,borderTopColor:le,borderRadius:"50%",animation:"figma-mapping-spin 0.8s linear infinite","@keyframes figma-mapping-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),Q4=sr.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),g1=({refreshKey:e=0})=>{let[t,n]=Mc(!1),[r,o]=Mc({totalStories:0,mappedStories:0,loading:!0}),{selectedProjectId:i}=Xe(),{sessionToken:s}=ve();_4(()=>{i&&s?a():o({totalStories:0,mappedStories:0,loading:!1})},[i,s,e]);let a=async()=>{o(B=>({...B,loading:!0}));try{let B=await fetch("/index.json");if(!B.ok)throw new Error("Failed to fetch Storybook index");let z=await B.json(),m=z.entries||z.stories||{},b=Object.keys(m).filter(E=>m[E].type==="story").length,k=Object.keys(m).filter(E=>m[E].type==="story"),A=K(),f=await se(`${A}/api/mappings?projectId=${i}`,{headers:{Authorization:`Bearer ${s}`}}),C=0;if(f.ok){let E=await f.json(),x=E.mappings||E||[];if(Array.isArray(x)){let F=new Set(x.map(P=>P.storyId).filter(Boolean));C=k.filter(P=>F.has(P)).length}else{let F=await se(`${A}/api/mappings/stats?projectId=${i}`,{headers:{Authorization:`Bearer ${s}`}});if(F.ok){let P=await F.json();C=Math.min(P.mappedStoriesCount||0,b)}}}o({totalStories:b,mappedStories:C,loading:!1})}catch(B){console.error("[FigmaMappingsSection] Error fetching stats:",B),o(z=>({...z,loading:!1}))}},[u,c]=Mc(!1),[l,d]=Mc(!1),g=async()=>{!i||!s||d(!0)},p=async()=>{d(!1),c(!0);try{let B=K(),z=await se(`${B}/api/mappings?projectId=${i}`,{headers:{Authorization:`Bearer ${s}`}});if(!z.ok)throw new Error("Failed to fetch mappings");let b=(await z.json()).mappings||[];await Promise.all(b.map(k=>se(`${B}/api/mappings?id=${encodeURIComponent(k.id)}`,{method:"DELETE",headers:{Authorization:`Bearer ${s}`}}))),a()}catch(B){console.error("[FigmaMappingsSection] Unlink all failed:",B)}finally{c(!1)}},h=()=>n(!0),S=()=>{n(!1),i&&s&&a()};if(!i)return Ft.createElement(d1,null,Ft.createElement(K4,null,"Select a project to link Figma designs"));let{totalStories:T,loading:I}=r,v=Math.min(r.mappedStories,T),D=v===0?"none":v>=T?"complete":"partial",N=T>0?Math.min(100,Math.round(v/T*100)):0,j=D==="none"?"Link designs":"Manage";return Ft.createElement(Ft.Fragment,null,Ft.createElement(d1,null,Ft.createElement($4,null,Ft.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ft.createElement("path",{d:"M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z",fill:"#1ABCFE"}),Ft.createElement("path",{d:"M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z",fill:"#0ACF83"}),Ft.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),Ft.createElement("path",{d:"M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z",fill:"#F24E1E"}),Ft.createElement("path",{d:"M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z",fill:"#A259FF"}))),Ft.createElement(U4,null,Ft.createElement(G4,null,"Figma Mappings"),Ft.createElement(j4,null,I?Ft.createElement(Ft.Fragment,null,Ft.createElement(X4,null),Ft.createElement(Q4,null,"Loading...")):Ft.createElement(Ft.Fragment,null,Ft.createElement(H4,null,Ft.createElement(W4,{percent:N,state:D})),Ft.createElement(V4,{state:D},`${v}/${T}`)))),v>0&&Ft.createElement(Y4,{onClick:g,disabled:I||u},u?"Unlinking...":"Unlink All"),Ft.createElement(q4,{onClick:h,disabled:I},j)),t&&Ft.createElement(p1,{isOpen:t,onClose:S,projectId:i}),Ft.createElement(Vr,{isOpen:l,title:"Unlink All Mappings",message:`Unlink all ${r.mappedStories} Figma mappings?`,confirmLabel:"Unlink All",variant:"danger",onConfirm:p,onCancel:()=>d(!1)}))};import Z,{useState as Uo,useEffect as Dc,useCallback as m1,useRef as Ch}from"react";import{styled as Fn}from"storybook/theming";import{addons as r5}from"storybook/manager-api";Ce();_e();ct();_e();import{useEffect as J4,useRef as Z4}from"react";import{addons as e5}from"storybook/manager-api";var Bc="uicopilot/crawl-started",t5=3e3,n5=360*1e3;function f1(e){let t=Z4({});J4(()=>{let n=e5.getChannel?.();if(!n)return;let r=s=>{let a=t.current[s];a&&(clearInterval(a),delete t.current[s])},o=s=>{try{e.addNotification?.(s)}catch{}},i=({projectId:s})=>{if(!s||t.current[s])return;let a=localStorage.getItem("uicopilot_session_token");if(!a)return;let u=K(),c=Date.now(),l=setInterval(async()=>{if(Date.now()-c>n5){r(s);return}try{let d=await fetch(`${u}/api/figma/cache-status?projectId=${s}`,{headers:{Authorization:`Bearer ${a}`}});if(!d.ok)return;let g=await d.json(),p=g?.crawlProgress?.status;if(p==="complete"){r(s);let h=g?.componentSetCount??0;o({id:`uicopilot-crawl-done-${s}-${Date.now()}`,content:{headline:"Figma cache ready",subHeadline:`${h} component set${h===1?"":"s"} cached \u2014 open Settings to map`},duration:8e3})}else p==="error"&&(r(s),o({id:`uicopilot-crawl-error-${s}-${Date.now()}`,content:{headline:"Figma crawl failed",subHeadline:g?.crawlProgress?.error||"Open Settings to retry."},duration:8e3}))}catch{}},t5);t.current[s]=l};return n.on(Bc,i),()=>{n.off(Bc,i),Object.keys(t.current).forEach(r)}},[e])}var Th=Fn.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.background.content,borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px",fontSize:"12px"})),Ih=Fn.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),Fh=Fn.span(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),koe=Fn($r)({padding:"5px 12px",fontSize:"12px"}),Eh=Fn.div(({theme:e})=>({display:"flex",gap:"16px",color:e.color.mediumdark,marginBottom:"4px"})),xa=Fn.span(({theme:e})=>({whiteSpace:"nowrap","& strong":{color:e.color.defaultText,fontWeight:600}})),o5=Fn.span(({theme:e,status:t})=>({display:"inline-block",padding:"1px 6px",borderRadius:"3px",fontSize:"10px",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",backgroundColor:t==="cached"?`${e.color.positive}1a`:t==="expired"?`${e.color.warning}1a`:e.background.hoverable,color:t==="cached"?e.color.positive:t==="expired"?e.color.warning:e.color.mediumdark})),i5=Fn.div(({theme:e})=>({marginTop:"6px",padding:"6px 8px",backgroundColor:e.background.hoverable,borderRadius:"4px",color:e.color.mediumdark,lineHeight:"1.4"})),Ah=Fn.span(({theme:e,type:t})=>({fontWeight:500,color:t==="added"?e.color.positive:t==="removed"?e.color.negative:e.color.warning})),s5=Fn.span(({theme:e})=>({color:e.color.mediumdark,fontSize:"12px"})),ya=Fn.div(({theme:e})=>({marginTop:"8px",padding:"8px 10px",backgroundColor:`${e.color.negative}1a`,border:`1px solid ${e.color.negative}4d`,borderRadius:"4px",fontSize:"12px",color:e.color.negative,lineHeight:"1.4"})),a5=Fn.div(({theme:e})=>({marginTop:"8px",padding:"8px 10px",backgroundColor:`${e.color.warning}1a`,border:`1px solid ${e.color.warning}4d`,borderRadius:"4px",fontSize:"12px",color:e.color.warning,lineHeight:"1.4"})),l5=Fn.div(({theme:e})=>({marginTop:"8px",padding:"8px 10px",backgroundColor:`${e.color.positive}1a`,border:`1px solid ${e.color.positive}4d`,borderRadius:"4px",fontSize:"12px",color:e.color.positive,lineHeight:"1.4"})),ts=Fn.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden",marginTop:"10px"})),ns=Fn.div(({theme:e,percent:t})=>({width:`${t}%`,height:"100%",backgroundColor:e.color.secondary,borderRadius:"3px",transition:"width 0.5s ease"})),qr=Fn.div(({theme:e})=>({display:"flex",justifyContent:"space-between",marginTop:"6px",fontSize:"12px",fontWeight:500,color:e.color.defaultText})),h1=new Set,x1=()=>{let{userRole:e,featureFlags:t}=ue(),[n,r]=Uo(null),[o,i]=Uo(!0),[s,a]=Uo(!1),[u,c]=Uo(null),[l,d]=Uo(null),[g,p]=Uo(!1),[h,S]=Uo(!1),[T,I]=Uo(!1),{selectedProjectId:v,projects:D}=Xe(),{sessionToken:N}=ve(),j=Ch(null),B=Ch(null),z=Ch(null),m=m1(()=>{j.current&&(clearInterval(j.current),j.current=null),B.current&&(clearInterval(B.current),B.current=null),z.current&&(clearTimeout(z.current),z.current=null)},[]);Dc(()=>m,[m]);let b=m1(async()=>{if(!(!v||!N))try{let w=K(),R=await se(`${w}/api/figma/cache-status?projectId=${v}`,{headers:{Authorization:`Bearer ${N}`}});if(R.ok){let W=await R.json();r(W)}}catch(w){console.error("[FigmaCacheSection] Error:",w)}finally{i(!1)}},[v,N]);Dc(()=>{b()},[b]),Dc(()=>{if(o||s||!n||n.structureStatus!=="none"||!v||h1.has(v))return;let w=D.find(W=>W.id===v);(w?.figmaFileUrl||w?.figmaFileId)&&(h1.add(v),k())},[o,s,n?.structureStatus,v,D]),Dc(()=>{let w=n?.thumbnailProgress?.status,R=n?.enrichmentProgress?.status,W=n?.thumbnailProgress?.cached??0,L=n?.thumbnailProgress?.total??0,oe=w==="in-progress"||w==="pending"||L>0&&W<L,X=R==="in-progress"||R==="pending",ne=!n?.thumbnailProgress&&n?.structureStatus==="cached",xe=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling";if(!(xe||oe||X||ne)||!xe&&(!n||n.structureStatus==="none"))return;let nt=setInterval(()=>{b()},3e3);return()=>{clearInterval(nt)}},[n?.thumbnailProgress?.status,n?.thumbnailProgress?.cached,n?.thumbnailProgress?.total,n?.enrichmentProgress?.status,n?.crawlProgress?.status,n?.structureStatus,b]);let k=async()=>{if(!(!v||!N)){a(!0),c(null),d(null);try{let w=K(),R=await se(`${w}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})});if(!R.ok){if(R.status===403){let L=await R.json().catch(()=>({}));c(L.requiresAuth?"auth":"generic")}else c("generic");return}let W=await R.json().catch(()=>({}));if(W?.status==="skipped-unchanged")d("Figma file unchanged \u2014 reused cached structure.");else if(W?.status==="crawl-started")try{r5.getChannel()?.emit(Bc,{projectId:v})}catch{}await b()}catch(w){console.error("[FigmaCacheSection] Crawl start error:",w),c("generic")}finally{a(!1)}}},A=async()=>{if(!(!v||!N)){p(!0);try{let w=K(),R=await se(`${w}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})});console.log("[FigmaCacheSection] Cache invalidate response:",R.status),await se(`${w}/api/figma/frames/invalidate?projectId=${v}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`}}).catch(()=>{}),r({structureStatus:"none",structureCachedAt:null,componentSetCount:0,componentCount:0,pageCount:0,pages:[],cacheDiff:null,thumbnailProgress:null,enrichmentProgress:null,crawlProgress:null})}catch(w){console.error("[FigmaCacheSection] Clear cache error:",w)}finally{p(!1)}}},f=async()=>{if(!(!v||!N)){m(),S(!0);try{let w=K();await se(`${w}/api/figma/enrich`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})}),j.current=setInterval(async()=>{await b()},3e3),B.current=setInterval(()=>{(n?.enrichmentProgress?.status==="complete"||n?.enrichmentProgress?.status==="error")&&(m(),S(!1),b())},3e3),z.current=setTimeout(()=>{m(),S(!1)},6e5)}catch(w){console.error("[FigmaCacheSection] Enrich error:",w),m(),S(!1)}}},C=async()=>{if(!(!v||!N)){I(!0);try{let w=K();await se(`${w}/api/figma/cancel`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})}),await b()}catch(w){console.error("[FigmaCacheSection] Cancel error:",w)}finally{I(!1),S(!1),a(!1)}}},E=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling"||n?.thumbnailProgress?.status==="in-progress"||n?.enrichmentProgress?.status==="in-progress";if(!v)return null;if(o)return Z.createElement(Th,null,Z.createElement(Ih,null,Z.createElement(Fh,null,"Figma Cache")),Z.createElement(Eh,null,Z.createElement(xa,null,"Loading cache status\u2026")),Z.createElement(ts,null,Z.createElement(ns,{percent:100,style:{opacity:.3}})));if(!n||n.structureStatus==="none")return Z.createElement(Th,null,Z.createElement(Ih,null,Z.createElement(Fh,null,"Figma Cache"),Z.createElement(Dr,{loading:s,onClick:k,loadingText:"Loading..."},"\u21BB Load")),n?.crawlProgress?.status==="crawling"?Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:(n.crawlProgress.pagesTotal??0)>0?Math.round(n.crawlProgress.pagesDone/n.crawlProgress.pagesTotal*100):100,style:(n.crawlProgress.pagesTotal??0)>0?void 0:{opacity:.3}})),Z.createElement(qr,null,Z.createElement("span",null,"Reading components from Figma\u2026"),Z.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026"))):s?Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:100,style:{animation:"none",opacity:.3}})),Z.createElement(qr,null,Z.createElement("span",null,"Starting crawl\u2026"))):Z.createElement(Eh,null,Z.createElement(xa,null,"No cache \u2014 click Load to fetch from Figma")),n?.crawlProgress?.status==="error"&&Z.createElement(ya,null,"Crawl failed",n.crawlProgress.error?`: ${n.crawlProgress.error}`:"",". Try Load again."),u==="auth"&&Z.createElement(ya,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),u==="generic"&&Z.createElement(ya,null,"Failed to load Figma cache. Check the browser console for details."));let x=w=>{let R=Date.now()-new Date(w).getTime(),W=Math.floor(R/6e4);if(W<1)return"just now";if(W<60)return`${W}m ago`;let L=Math.floor(W/60);return L<24?`${L}h ago`:`${Math.floor(L/24)}d ago`},F=w=>w>=1024*1024*1024?`${(w/1024/1024/1024).toFixed(1)} GB`:w>=1024*1024?`${Math.round(w/1024/1024)} MB`:`${Math.max(1,Math.round(w/1024))} KB`,P=n.crawlProgress?.bytesDownloaded,M=n.cacheDiff,O=M&&(M.added.length>0||M.removed.length>0||M.renamed.length>0);return Z.createElement(Th,null,Z.createElement(Ih,null,Z.createElement(Fh,null,"Figma Cache"," ",Z.createElement(o5,{status:n.structureStatus},n.structureStatus)),Z.createElement("div",{style:{display:"flex",gap:"6px"}},e==="admin"&&Z.createElement(Dr,{loading:h,onClick:f,loadingText:"Enriching..."},"Enrich"),Z.createElement(Dr,{loading:g,onClick:A,variant:"ghost",loadingText:"Clearing..."},"Clear"),Z.createElement(Dr,{loading:s,onClick:k,loadingText:"Reloading..."},"\u21BB Reload"),E&&Z.createElement(Dr,{loading:T||n?.crawlProgress?.status==="cancelling",onClick:C,variant:"ghost",loadingText:"Stopping..."},"\u2715 Stop"))),n?.crawlProgress?.status==="crawling"&&Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:(n.crawlProgress.pagesTotal??0)>0?Math.round(n.crawlProgress.pagesDone/n.crawlProgress.pagesTotal*100):100,style:(n.crawlProgress.pagesTotal??0)>0?void 0:{opacity:.3}})),Z.createElement(qr,null,Z.createElement("span",null,"Re-reading components from Figma\u2026"),Z.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026"))),s&&n?.crawlProgress?.status!=="crawling"&&Z.createElement(qr,null,Z.createElement("span",null,"Starting crawl\u2026")),u==="auth"&&Z.createElement(ya,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),u==="generic"&&Z.createElement(ya,null,"Failed to reload Figma cache. Check the browser console for details."),Z.createElement(Eh,null,Z.createElement(xa,null,Z.createElement("strong",null,n.componentSetCount)," component sets"),Z.createElement(xa,null,Z.createElement("strong",null,n.pageCount)," pages"),typeof P=="number"&&P>0&&Z.createElement(xa,null,Z.createElement("strong",null,"\u2248 ",F(P))),n.structureCachedAt&&Z.createElement(s5,null,"Updated ",x(n.structureCachedAt))),n.crawlProgress?.status==="complete"&&n.crawlProgress.pagesFailed>0&&Z.createElement(a5,null,"\u26A0 ",n.crawlProgress.pagesFailed," of"," ",n.crawlProgress.pagesTotal," pages couldn\u2019t be read (Figma rate limit) \u2014 some components may be missing. Reload to retry."),l&&Z.createElement(l5,null,"\u2713 ",l),O&&Z.createElement(i5,null,"Since last reload:"," ",M.added.length>0&&Z.createElement(Ah,{type:"added"},"+",M.added.length," added"),M.added.length>0&&M.removed.length>0&&" \xB7 ",M.removed.length>0&&Z.createElement(Ah,{type:"removed"},"\u2212",M.removed.length," removed"),(M.added.length>0||M.removed.length>0)&&M.renamed.length>0&&" \xB7 ",M.renamed.length>0&&Z.createElement(Ah,{type:"renamed"},M.renamed.length," renamed")),n.thumbnailProgress&&n.thumbnailProgress.status==="in-progress"&&Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:n.thumbnailProgress.total>0?Math.round(n.thumbnailProgress.cached/n.thumbnailProgress.total*100):0})),Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: caching to CDN\u2026",n.thumbnailProgress.currentName&&Z.createElement(Z.Fragment,null," ",n.thumbnailProgress.currentName)),Z.createElement("span",null,n.thumbnailProgress.cached," of"," ",n.thumbnailProgress.total," variants"))),n.thumbnailProgress&&n.thumbnailProgress.status==="complete"&&Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: ",n.thumbnailProgress.cached," of"," ",n.thumbnailProgress.total," cached to CDN \u2713")),(!n.thumbnailProgress||n.thumbnailProgress.status==="pending"&&n.thumbnailProgress.cached===0)&&Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: not yet cached",n.thumbnailProgress?.total?` (${n.thumbnailProgress.total} components)`:""," ","\u2014 click Reload to generate")),n.thumbnailProgress&&n.thumbnailProgress.status==="pending"&&n.thumbnailProgress.cached>0&&Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: ",n.thumbnailProgress.cached," of"," ",n.thumbnailProgress.total," cached to CDN (partial)")),n.enrichmentProgress&&n.enrichmentProgress.status==="in-progress"&&Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:n.enrichmentProgress.total>0?Math.round(n.enrichmentProgress.enriched/n.enrichmentProgress.total*100):0})),Z.createElement(qr,null,Z.createElement("span",null,"AI descriptions: generating\u2026",n.enrichmentProgress.currentName&&Z.createElement(Z.Fragment,null," ",n.enrichmentProgress.currentName)),Z.createElement("span",null,n.enrichmentProgress.enriched," of"," ",n.enrichmentProgress.total," component sets"))),n.enrichmentProgress&&n.enrichmentProgress.status==="complete"&&Z.createElement(Z.Fragment,null,Z.createElement(qr,null,Z.createElement("span",null,"AI descriptions: ",n.enrichmentProgress.enriched," of"," ",n.enrichmentProgress.total," component sets \u2713"))),n.enrichmentProgress&&n.enrichmentProgress.status==="in-progress"&&t.showCosts&&n.enrichmentProgress.costUsd!=null&&n.enrichmentProgress.costUsd>0&&Z.createElement("div",{style:{marginTop:"6px"}},Z.createElement(Ec,{inputTokens:n.enrichmentProgress.inputTokens||0,outputTokens:n.enrichmentProgress.outputTokens||0,costUsd:n.enrichmentProgress.costUsd,compact:!0})))};import kt,{useState as rs}from"react";import{styled as Yr}from"storybook/theming";Ce();_e();ct();var Ph=Yr.div({padding:"12px 16px"}),c5=Yr.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),y1=Yr.label(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),b1=Yr.button(({theme:e})=>({background:"none",border:"none",fontSize:"12px",color:le,cursor:"pointer",padding:0,"&:hover":{textDecoration:"underline"}})),u5=Yr.div({display:"flex",gap:"8px",alignItems:"center"}),p5=Yr.input(({theme:e})=>({flex:1,padding:"8px 12px",fontSize:"13px",border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",backgroundColor:e.input.background,color:e.input.color,outline:"none",fontFamily:"monospace","&:focus":{borderColor:le,boxShadow:`0 0 0 1px ${le}`},"&::placeholder":{color:e.color.mediumlight,fontFamily:"inherit"}})),S1=Yr.span(({variant:e})=>({fontSize:"12px",color:e==="success"?"#16a34a":e==="error"?"#dc2626":"#6b7280",marginTop:"6px",display:"block",lineHeight:1.4})),d5=Yr.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,marginTop:"8px",lineHeight:1.5,"& a":{color:le,textDecoration:"none","&:hover":{textDecoration:"underline"}},"& ol":{margin:"4px 0 0 16px",padding:0},"& li":{marginBottom:"2px"}})),g5=Yr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"8px 12px",borderRadius:"6px",backgroundColor:"#16a34a10",border:"1px solid #16a34a30",fontSize:"12px",color:e.color.defaultText})),f5=Yr.button(({theme:e})=>({background:"none",border:"none",fontSize:"11px",color:"#dc2626",cursor:"pointer",marginLeft:"auto","&:hover":{textDecoration:"underline"}})),w1=({onConnected:e})=>{let{sessionToken:t}=ve(),[n,r]=rs(!1),[o,i]=rs(""),[s,a]=rs(!1),[u,c]=rs(null),[l,d]=rs(null),[g,p]=rs(!1),h=async()=>{if(!(!o.trim()||!t)){a(!0),c(null);try{let S=K(),T=await se(`${S}/api/figma/pat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({token:o.trim()})}),I=await T.json();if(!T.ok){c({type:"error",message:I.error||"Failed to save token"});return}d(I.figmaUser?.handle||I.figmaUser?.email||"Connected"),c({type:"success",message:`Connected as ${I.figmaUser?.handle||"Figma user"}`}),i(""),e?.()}catch{c({type:"error",message:"Failed to connect. Check your token and try again."})}finally{a(!1)}}};return l?kt.createElement(Ph,null,kt.createElement(y1,null,"Figma Personal Access Token"),kt.createElement(g5,null,kt.createElement("span",null,"\u2713 Connected as ",kt.createElement("strong",null,l)),kt.createElement(f5,{onClick:()=>{d(null),c(null)}},"Change token"))):n?kt.createElement(Ph,null,kt.createElement(c5,null,kt.createElement(y1,null,"Figma Personal Access Token"),kt.createElement(b1,{onClick:()=>p(!g)},g?"Hide instructions":"How to generate")),g&&kt.createElement(d5,null,kt.createElement("ol",null,kt.createElement("li",null,"Open ",kt.createElement("a",{href:"https://www.figma.com/settings",target:"_blank",rel:"noopener noreferrer"},"Figma Settings")),kt.createElement("li",null,"Click the ",kt.createElement("strong",null,"Security")," tab"),kt.createElement("li",null,"Scroll to ",kt.createElement("strong",null,"Personal access tokens")),kt.createElement("li",null,"Click ",kt.createElement("strong",null,"Generate new token")),kt.createElement("li",null,"Enable ",kt.createElement("strong",null,"File content: Read only")," under Scopes"),kt.createElement("li",null,"Copy the token and paste it below"))),kt.createElement(u5,null,kt.createElement(p5,{type:"password",value:o,onChange:S=>i(S.target.value),placeholder:"figd_...",onKeyDown:S=>{S.key==="Enter"&&o.trim()&&h()}}),kt.createElement(sn,{onClick:h,disabled:!o.trim()||s},s?"Verifying...":"Save & Verify")),u&&kt.createElement(S1,{variant:u.type},u.message),kt.createElement(S1,{variant:"info"},"Read-only access. Your token is stored securely and never shared.")):kt.createElement(Ph,null,kt.createElement(b1,{onClick:()=>r(!0)},"Or use a Personal Access Token \u2192"))};Ce();_e();ct();var h5=xt.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},xt.createElement("path",{d:"M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z",fill:"#1ABCFE"}),xt.createElement("path",{d:"M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z",fill:"#0ACF83"}),xt.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),xt.createElement("path",{d:"M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z",fill:"#F24E1E"}),xt.createElement("path",{d:"M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z",fill:"#A259FF"})),Lh=Rr.div(({theme:e})=>({border:`1px solid ${e.appBorderColor}`,borderRadius:"8px",overflow:"hidden",marginBottom:"16px",backgroundColor:e.background.content})),x5=Rr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"10px 16px",backgroundColor:e.background.hoverable,borderBottom:`1px solid ${e.appBorderColor}`})),y5=Rr.div({width:"16px",height:"16px",display:"flex",alignItems:"center","& svg":{width:"14px",height:"14px"}}),b5=Rr.span(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText,flex:1})),Mh=Rr.div({"& > *":{border:"none",borderRadius:0,marginBottom:0,borderBottom:"1px solid rgba(0,0,0,0.06)","&:last-child":{borderBottom:"none"}}}),S5=Rr.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.base==="dark"?"rgba(0, 204, 102, 0.2)":"rgba(0, 204, 102, 0.1)",border:`1px solid ${e.color.positive}`,borderRadius:"8px",margin:"12px 16px",display:"flex",alignItems:"center",justifyContent:"space-between"})),w5=Rr.div({display:"flex",alignItems:"center",gap:"8px"}),v5=Rr(Mn)(({theme:e})=>({backgroundColor:`${e.base==="dark"?"rgba(197, 48, 48, 0.15)":"rgba(254, 178, 178, 0.3)"} !important`,color:`${e.color.negative} !important`,border:`1px solid ${e.color.negative} !important`,padding:"6px 12px !important",fontSize:"12px !important"})),k5=Rr.div({padding:"20px 16px",display:"flex",flexDirection:"column",gap:"12px"}),Hoe=Rr.button({display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",padding:"8px 16px",backgroundColor:"#A259FF",color:"#fff",border:"none",borderRadius:"6px",fontSize:"13px",fontWeight:600,cursor:"pointer","&:hover":{backgroundColor:"#8a3de8"}}),C5=Rr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:e.color.mediumdark,"&::before, &::after":{content:'""',flex:1,height:"1px",backgroundColor:e.appBorderColor}})),k1=({hideHeader:e=!1})=>{let{sessionToken:t}=ve(),[n,r]=ba(!1),[o,i]=ba(0),[s,a]=ba(()=>{try{let S=sessionStorage.getItem("uicopilot_figma_connection");if(S){let{connected:T,ts:I}=JSON.parse(S);if(Date.now()-I<300*1e3)return T}}catch{}return null}),[u,c]=ba(!1),[l,d]=ba(!1);m5(()=>{if(!t)return;let S=K();se(`${S}/api/figma/connection-status`,{headers:{Authorization:`Bearer ${t}`}}).then(T=>T.json()).then(T=>{let I=!!T.connected;c(!!T.expired),a(I);try{sessionStorage.setItem("uicopilot_figma_connection",JSON.stringify({connected:I,ts:Date.now()}))}catch{}}).catch(()=>a(!1))},[t]);let g=v1(()=>{let S=K(),T=`${S}/api/auth/figma/login?addon=true`;window.open(T,"figma-oauth","width=600,height=700,left=200,top=100");let I=setInterval(async()=>{try{(await(await se(`${S}/api/figma/connection-status`,{headers:t?{Authorization:`Bearer ${t}`}:{}})).json()).connected&&(clearInterval(I),a(!0))}catch{}},2e3);setTimeout(()=>clearInterval(I),300*1e3)},[t]),p=v1(async()=>{try{r(!0);let S=K(),T=await se(`${S}/api/figma/disconnect`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(T.ok||T.status===404){a(!1);try{sessionStorage.removeItem("uicopilot_figma_connection")}catch{}}}catch{}finally{r(!1)}},[t]),h=e?null:xt.createElement(x5,null,xt.createElement(y5,null,h5),xt.createElement(b5,null,"Figma Integration"));return s===null?xt.createElement(Lh,null,h,xt.createElement(Mh,null,xt.createElement("div",{style:{padding:"16px",fontSize:"13px",color:"#9ca3af"}},"Checking Figma connection..."))):s===!1?xt.createElement(Lh,null,h,xt.createElement(Mh,null,xt.createElement(k5,null,u&&xt.createElement("div",{style:{padding:"10px 12px",backgroundColor:"rgba(245, 158, 11, 0.1)",border:"1px solid rgba(245, 158, 11, 0.4)",borderRadius:"6px",fontSize:"12px",color:"#92400e"}},"\u26A0\uFE0F Your Figma access has expired. Please reconnect."),xt.createElement("div",{style:{padding:"8px 10px",backgroundColor:"rgba(100, 116, 139, 0.1)",border:"1px solid rgba(100, 116, 139, 0.3)",borderRadius:"6px",fontSize:"11px",lineHeight:1.4,color:"#64748b"}},"Requires a Figma ",xt.createElement("strong",null,"Dev or Full seat"),". Free/Viewer seats can't grant design-read access."),xt.createElement(sn,{onClick:g,style:{width:"100%"}},u?"Reconnect Figma":"Connect with Figma"),xt.createElement(C5,null,"or"),xt.createElement(w1,{onConnected:()=>a(!0)})))):xt.createElement(Lh,null,h,xt.createElement(S5,null,xt.createElement(w5,null,xt.createElement("span",{style:{fontSize:"18px"}},"\u2713"),xt.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"#00cc66"}},"Connected to Figma")),xt.createElement(v5,{onClick:()=>d(!0),disabled:n},n?"Disconnecting...":"Disconnect")),xt.createElement(Vr,{isOpen:l,title:"Disconnect Figma",message:"Your mappings, cache, and review history will be preserved. You will need to re-authenticate to make new Figma API calls.",confirmLabel:"Disconnect",variant:"danger",onConfirm:()=>{d(!1),p()},onCancel:()=>d(!1)}),xt.createElement(Mh,null,xt.createElement(Vk,{onFigmaFileChanged:()=>i(S=>S+1)}),xt.createElement(g1,{refreshKey:o}),xt.createElement(x1,null)))};Ce();cn();var F5=yr.div({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:1e3,display:"flex",justifyContent:"center",alignItems:"flex-start",paddingTop:"32px"}),E5=yr.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"14px",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.22)",width:"520px",maxWidth:"94%",maxHeight:"calc(100vh - 64px)",overflow:"auto",position:"relative"})),A5=yr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px 12px",position:"sticky",top:0,backgroundColor:e.background.content,borderRadius:"14px 14px 0 0",zIndex:1})),P5=yr.h2(({theme:e})=>({margin:0,fontSize:"16px",fontWeight:600,color:e.color.defaultText})),L5=yr(Bn)({fontSize:"18px",padding:"2px 8px",lineHeight:1,background:"transparent",border:"none"}),M5=yr.div({display:"flex",flexDirection:"column",gap:"16px",padding:"0 20px 20px"}),C1=yr.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:"14px",padding:"16px",borderRadius:"12px",border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content})),T1=yr.div({display:"flex",alignItems:"center",gap:"10px"}),I1=yr.h3(({theme:e})=>({margin:0,fontSize:"14px",fontWeight:600,color:e.color.defaultText,flex:1})),B5=yr.div({width:"28px",height:"28px",borderRadius:"7px",backgroundColor:le,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:700,letterSpacing:"0.3px",flexShrink:0}),D5=yr.div({width:"22px",height:"22px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center","& svg":{width:"22px",height:"22px"}}),F1=yr.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:"12px",fontSize:"12px","& > div, & > section":{padding:0},'[class*="AuthPanelContainer"], [class*="SectionContainer"]':{padding:0},"h3, h4":{fontSize:"12px",margin:"0 0 6px 0"},label:{fontSize:"12px"},"input, select":{fontSize:"12px",padding:"6px 10px",height:"auto"},button:{fontSize:"11px"},p:{fontSize:"11px",margin:"2px 0"}})),E1=({onClose:e})=>{let{isConnected:t}=ve(),{selectedProjectId:n}=Xe(),r=I5(t);return T5(()=>{!r.current&&t&&n&&e(),r.current=t},[t,n,e]),Rt.createElement(F5,{onClick:e},Rt.createElement(E5,{onClick:o=>o.stopPropagation()},Rt.createElement(A5,null,Rt.createElement(P5,null,"Settings"),Rt.createElement(L5,{onClick:e,title:"Close settings"},"\xD7")),Rt.createElement(M5,null,Rt.createElement(C1,null,Rt.createElement(T1,null,Rt.createElement(B5,null,"UI"),Rt.createElement(I1,null,At.NAME)),Rt.createElement(F1,null,Rt.createElement(_k,{onConnect:e}),t&&Rt.createElement(Hk,null))),t&&n&&Rt.createElement(C1,null,Rt.createElement(T1,null,Rt.createElement(D5,null,Rt.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Rt.createElement("path",{d:"M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z",fill:"#1ABCFE"}),Rt.createElement("path",{d:"M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z",fill:"#0ACF83"}),Rt.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),Rt.createElement("path",{d:"M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z",fill:"#F24E1E"}),Rt.createElement("path",{d:"M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z",fill:"#A259FF"}))),Rt.createElement(I1,null,"Figma Integration")),Rt.createElement(F1,null,Rt.createElement(k1,{hideHeader:!0}))))))};import St,{useEffect as a3,useMemo as l3}from"react";import{styled as zn,keyframes as c3}from"storybook/theming";Ce();cn();cn();function Bh(e){let t=e.complianceScore??0;if(!e.issues||e.issues.length===0)return{score:t,band:e.issues?"A":void 0};let n=Ql(e.issues.map(r=>({...r,dismissed:r.dismissed??!1})));return{score:Math.min(t,ao[n]),band:n}}Ce();import Jt,{useState as R5}from"react";import{styled as Xn}from"storybook/theming";var mo=[{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",provider:"anthropic",description:"Latest Claude Sonnet \u2014 best balance of speed and quality"},{id:"claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",provider:"anthropic",description:"Current default \u2014 proven for design comparison"},{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4",provider:"anthropic",description:"Previous generation Sonnet"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet",provider:"anthropic",description:"Best balance of speed and quality"},{id:"claude-haiku-4-5-20251001",name:"Claude Haiku 4.5",provider:"anthropic",description:"Fastest, most affordable"},{id:"claude-3-opus-20240229",name:"Claude 3 Opus",provider:"anthropic",description:"Most capable Claude 3 model"},{id:"gpt-5.2",name:"GPT-5.2 Thinking",provider:"openai",description:"47% cheaper, reasoning"},{id:"gpt-5.2-chat-latest",name:"GPT-5.2 Instant",provider:"openai",description:"86% cheaper (default)"},{id:"gpt-4o",name:"GPT-4o",provider:"openai",description:"GPT-4 multimodal flagship"},{id:"gpt-4o-mini",name:"GPT-4o Mini",provider:"openai",description:"GPT-4 affordable model"},{id:"o1-preview",name:"o1 Preview",provider:"openai",description:"Reasoning model (slower, advanced)"},{id:"o1-mini",name:"o1 Mini",provider:"openai",description:"Faster reasoning model"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",provider:"google",description:"Fast & cheap, great vision"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",provider:"google",description:"Best Gemini quality"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",provider:"google",description:"Previous gen, very fast"}];var z5=Xn.div({display:"flex",alignItems:"center",gap:"8px",width:"100%"}),N5=Xn.div({display:"inline-flex",flexWrap:"nowrap",gap:"4px",alignItems:"center"}),O5=Xn.div(({theme:e,disabled:t,provider:n})=>{let r={anthropic:{background:"#D4A574",text:"#ffffff"},openai:{background:e.color.positive||"#10b981",text:"#ffffff"},google:{background:"#4285F4",text:"#ffffff"}},o=n?r[n]:r.anthropic;return{display:"inline-flex",alignItems:"center",gap:"4px",padding:"4px 8px",backgroundColor:o.background,color:o.text,fontSize:"11px",fontWeight:500,borderRadius:"12px",opacity:t?.6:1,cursor:t?"not-allowed":"default",transition:"opacity 0.15s"}}),_5=Xn.button(({theme:e,disabled:t})=>({background:"none",border:"none",color:e.color.inverseText,fontSize:"12px",cursor:t?"not-allowed":"pointer",padding:"0 2px",lineHeight:1,opacity:t?.5:.8,transition:"opacity 0.15s","&:hover":{opacity:t?.5:1}})),$5=Xn.div({position:"relative",display:"inline-block"}),U5=Xn.button(({disabled:e,isOpen:t,theme:n})=>({padding:`${n.layoutMargin*.8}px 32px ${n.layoutMargin*.8}px ${n.layoutMargin}px`,fontSize:n.typography.size.s2,fontFamily:n.typography.fonts.base,fontWeight:500,color:n.color.defaultText,backgroundColor:n.input.background,border:`1px solid ${t?n.color.secondary:n.appBorderColor}`,borderRadius:n.appBorderRadius,cursor:e?"not-allowed":"pointer",opacity:e?.6:1,whiteSpace:"nowrap",display:"flex",gap:`${n.layoutMargin*.8}px`,alignItems:"center",justifyContent:"space-between",minWidth:"200px",transition:"border-color 0.15s, box-shadow 0.15s",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 10px center",backgroundSize:"12px","&:hover":{borderColor:e?n.appBorderColor:n.color.mediumdark}})),j5=Xn.div(({theme:e})=>({position:"absolute",top:"100%",left:0,right:0,marginTop:"4px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:e.base==="dark"?"0 4px 12px rgba(0, 0, 0, 0.3)":"0 4px 12px rgba(0, 0, 0, 0.1)",zIndex:1e3,maxHeight:"280px",overflowY:"auto"})),Dh=Xn.div(({theme:e})=>({borderBottom:`1px solid ${e.appBorderColor}`,"&:last-child":{borderBottom:"none"}})),Rh=Xn.div(({theme:e})=>({padding:"8px 12px",fontSize:"10px",fontWeight:600,color:e.textMutedColor,textTransform:"uppercase",letterSpacing:"0.5px",backgroundColor:e.background.app})),H5=Xn.div(({theme:e,disabled:t})=>({padding:"8px 12px",fontSize:"12px",cursor:t?"not-allowed":"pointer",opacity:t?.5:1,display:"flex",alignItems:"center",gap:"8px",transition:"background-color 0.15s",color:e.color.defaultText,"&:hover":{backgroundColor:t?"transparent":e.background.hoverable}})),W5=Xn.input({cursor:"pointer",flexShrink:0,"&:disabled":{cursor:"not-allowed"}}),V5=Xn.div({flex:1,minWidth:0}),G5=Xn.div({fontSize:"12px",fontWeight:500,marginBottom:"2px"}),q5=Xn.div(({theme:e})=>({fontSize:"10px",color:e.textMutedColor,lineHeight:"1.2"})),Y5=5,A1=()=>{let{selectedModels:e,toggleModel:t,isReviewing:n}=ue(),[r,o]=R5(!1),i=mo.filter(p=>p.provider==="anthropic"&&!e.includes(p.id)),s=mo.filter(p=>p.provider==="openai"&&!e.includes(p.id)),a=mo.filter(p=>p.provider==="google"&&!e.includes(p.id)),u=mo.filter(p=>e.includes(p.id)),c=e.length<Y5,l=(p,h)=>{h.stopPropagation(),e.length>1&&!n&&t(p)},d=p=>{let h=e.includes(p);h&&e.length===1||!h&&!c||n||(t(p),o(!1))},g=p=>{let h=e.includes(p.id),S=h&&e.length===1,T=n||S||!h&&!c;return Jt.createElement(H5,{key:p.id,disabled:T,onClick:()=>d(p.id)},Jt.createElement(W5,{type:"checkbox",checked:h,disabled:T,onChange:()=>{},onClick:I=>I.stopPropagation()}),Jt.createElement(V5,null,Jt.createElement(G5,null,p.name),p.description&&Jt.createElement(q5,null,p.description)))};return Jt.createElement(z5,null,Jt.createElement($5,null,Jt.createElement(U5,{disabled:n,isOpen:r,onClick:()=>o(!r)},Jt.createElement("span",null,"Select model"),Jt.createElement("span",null,r?"\u25B2":"\u25BC")),r&&Jt.createElement(j5,null,Jt.createElement(Dh,null,Jt.createElement(Rh,null,"Anthropic"),i.map(g)),Jt.createElement(Dh,null,Jt.createElement(Rh,null,"OpenAI"),s.map(g)),Jt.createElement(Dh,null,Jt.createElement(Rh,null,"Google"),a.map(g)))),Jt.createElement(N5,null,u.map(p=>Jt.createElement(O5,{key:p.id,disabled:n,provider:p.provider},p.name,e.length>1&&Jt.createElement(_5,{disabled:n,onClick:h=>l(p.id,h),title:"Remove model"},"\xD7")))))};cn();import Re,{useState as K5,useEffect as X5}from"react";import{styled as on,keyframes as os}from"storybook/theming";Ce();var Q5=os`
|
|
44
|
+
`,B$=GC.span(({theme:e})=>({display:"inline-block",width:"12px",height:"12px",border:`2px solid ${e.appBorderColor}`,borderTopColor:"currentColor",borderRadius:"50%",animation:`${M$} 0.6s linear infinite`,marginRight:"6px",verticalAlign:"middle"})),D$=GC.button(({theme:e,variant:t="default",disabled:n})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",padding:"5px 12px",fontSize:"12px",fontWeight:600,border:`1px solid ${e.color.medium}`,borderRadius:"5px",cursor:n?"not-allowed":"pointer",opacity:n?.6:1,transition:"all 0.2s",whiteSpace:"nowrap",...t==="default"&&{backgroundColor:e.background.content,color:e.color.defaultText,"&:hover":n?{}:{borderColor:e.color.secondary,color:e.color.secondary,backgroundColor:"rgba(30, 167, 253, 0.05)"}},...t==="ghost"&&{backgroundColor:"transparent",border:"none",color:e.color.mediumdark,padding:"5px 8px","&:hover":n?{}:{color:e.color.defaultText,backgroundColor:e.background.hoverable}}})),Dr=({loading:e=!1,disabled:t=!1,onClick:n,variant:r="default",children:o,loadingText:i})=>VC.createElement(D$,{variant:r,disabled:t||e,onClick:n},e&&VC.createElement(B$,null),e&&i?i:o);_e();import dn from"react";import{styled as ma}from"storybook/theming";var qC=ma.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"8px 16px",backgroundColor:e.background.hoverable,borderRadius:"6px",fontFamily:"Inter, sans-serif",fontSize:"11px",color:e.color.mediumdark,gap:"16px"})),R$=ma.div({display:"flex",alignItems:"center",gap:"12px"}),Ic=ma.span({whiteSpace:"nowrap"}),YC=ma.div({display:"flex",alignItems:"center",gap:"8px"}),Fc=ma.span(({theme:e})=>({fontWeight:600,color:e.color.defaultText})),Ec=({inputTokens:e,outputTokens:t,costUsd:n,compact:r=!1})=>{let o=e+t,i=n*Zw;return r?dn.createElement(qC,null,dn.createElement(Ic,null,o.toLocaleString()," tokens"),dn.createElement(YC,null,dn.createElement(Fc,null,"$",n.toFixed(4)),dn.createElement("span",null,"\xB7"),dn.createElement(Fc,null,"\u20AA",i.toFixed(2)))):dn.createElement(qC,null,dn.createElement(R$,null,dn.createElement(Ic,null,e.toLocaleString()," input"),dn.createElement("span",null,"+"),dn.createElement(Ic,null,t.toLocaleString()," output"),dn.createElement("span",null,"="),dn.createElement(Ic,null,dn.createElement("strong",null,o.toLocaleString())," tokens")),dn.createElement(YC,null,dn.createElement(Fc,null,"$",n.toFixed(4)),dn.createElement("span",null,"\xB7"),dn.createElement(Fc,null,"\u20AA",i.toFixed(2))))};import Kn from"react";import{styled as No}from"storybook/theming";function Sh(e){if(typeof e!="string")return e;try{let t=JSON.parse(e);if(t.summary)return t}catch{}return{summary:e}}var z$=No.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:`${e.layoutMargin*.5}px`})),KC=No.div(({theme:e,color:t})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:t||e.color.defaultText,lineHeight:"1.4"})),N$=No.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*.25}px`,flexWrap:"wrap",fontSize:e.typography.size.s1,color:e.color.mediumdark})),O$=No.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.layoutMargin*.2}px`,padding:`1px ${e.layoutMargin*.5}px`,borderRadius:e.appBorderRadius,backgroundColor:e.background.hoverable,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.mono})),_$=No.span(({theme:e})=>({color:e.color.mediumlight,fontSize:e.typography.size.s1})),$$=No.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,fontStyle:"italic"})),U$=No.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,display:"flex",gap:`${e.layoutMargin*.25}px`})),j$=No.span(({theme:e})=>({fontWeight:e.typography.weight.bold,color:e.color.defaultText})),XC=({data:e,color:t,compact:n})=>n?Kn.createElement(KC,{color:t},e.summary):Kn.createElement(z$,null,Kn.createElement(KC,{color:t},e.summary),e.mappings&&e.mappings.length>0&&Kn.createElement(N$,null,e.mappings.map((r,o)=>Kn.createElement(Kn.Fragment,{key:o},Kn.createElement(O$,null,r.from," ",Kn.createElement(_$,null,"\u2192")," ",r.to)))),e.candidates!=null&&e.candidates>1&&Kn.createElement($$,null,e.candidates," candidate variants matched"),e.defaults&&e.defaults.length>0&&Kn.createElement(Kn.Fragment,null,e.defaults.map((r,o)=>Kn.createElement(U$,{key:o},Kn.createElement(j$,null,r.choice),Kn.createElement("span",null,"\u2014 ",r.why)))));var H$=ht.div({display:"flex",flexDirection:"column",flex:1,overflow:"hidden"}),W$=ht.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px",borderBottom:`1px solid ${e.appBorderColor}`})),V$=ht.div({display:"flex",flexDirection:"column",gap:"4px"}),G$=ht.div({display:"flex",alignItems:"center",gap:"10px"}),q$=ht.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText,letterSpacing:"-0.3px"})),JC=ht.span(({theme:e,variant:t})=>({padding:"3px 10px",borderRadius:"20px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,fontWeight:500,backgroundColor:t==="success"?`${e.color.positive}1a`:t==="danger"?`${e.color.negative}1a`:`${e.color.secondary}1a`,color:t==="success"?e.color.positive:t==="danger"?e.color.negative:e.color.secondary})),Y$=ht.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark})),K$=ht.div({display:"flex",gap:"8px"}),X$=ht.div(({theme:e})=>({display:"flex",alignItems:"center",padding:"12px 24px",gap:"12px",borderBottom:`1px solid ${e.appBorderColor}`})),Q$=ht(To)(({theme:e})=>({flex:1,fontSize:e.typography.size.s2})),J$=ht.div({display:"flex",gap:"4px"}),Ac=ht.button(({theme:e,active:t})=>({padding:"6px 12px",borderRadius:"6px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:500,border:t?"none":`1px solid ${e.appBorderColor}`,backgroundColor:t?e.color.defaultText:e.background.content,color:t?e.color.inverseText:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","&:hover":{backgroundColor:t?e.color.defaultText:e.background.hoverable}})),Z$=ht.div({display:"flex",flexDirection:"column",flex:1,padding:"16px 24px",gap:"8px",overflowY:"auto"}),e4=ht.div(({theme:e,dimmed:t})=>({display:"flex",alignItems:"center",padding:"12px 16px",border:`1px solid ${e.appBorderColor}`,borderRadius:"10px",gap:"12px",backgroundColor:e.background.content,opacity:t?.6:1,transition:"opacity 0.15s",position:"relative",zIndex:0,"&:hover":{zIndex:10}})),t4=ht.div(({theme:e,checked:t})=>({width:"18px",height:"18px",borderRadius:"4px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",transition:"all 0.15s",...t?{backgroundColor:e.color.defaultText,color:e.color.inverseText,fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold}:{border:`2px solid ${e.color.mediumlight}`}})),n4=ht.div(({theme:e,bgColor:t})=>({width:"48px",height:"40px",borderRadius:"6px",backgroundColor:t||e.background.hoverable,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,overflow:"hidden"})),Pc=ht.div(({theme:e})=>({width:"120px",height:"80px",borderRadius:"8px",backgroundColor:e.background.hoverable,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,overflow:"hidden",border:`1px solid ${e.appBorderColor}`})),r4=ht.img({width:"100%",height:"100%",objectFit:"contain"}),r1=ht.div(({theme:e})=>({width:"16px",height:"16px",border:`2px solid ${e.appBorderColor}`,borderTopColor:e.color.secondary,borderRadius:"50%",animation:"uicopilot-spin 0.8s linear infinite","@keyframes uicopilot-spin":{to:{transform:"rotate(360deg)"}}})),ZC=ht.div({flex:1,display:"flex",flexDirection:"column",gap:"2px",minWidth:0}),e1=ht.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:500,color:e.color.defaultText,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),wh=ht.span(({theme:e,color:t})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:t||e.color.mediumdark,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),mre=ht.span(({theme:e,color:t})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:t||e.color.mediumdark,lineHeight:1.5,whiteSpace:"pre-line"})),o4=ht.div(({theme:e})=>({flexShrink:0,color:e.color.mediumlight,fontSize:"14px"})),i4=ht.span(({theme:e,level:t})=>({padding:"4px 10px",borderRadius:"20px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,flexShrink:0,backgroundColor:t==="high"?`${e.color.positive}1a`:t==="medium"?`${e.color.warning}1a`:`${e.color.negative}1a`,color:t==="high"?e.color.positive:t==="medium"?e.color.warning:e.color.negative})),s4=ht.button(({theme:e})=>({padding:"4px 8px",borderRadius:e.appBorderRadius,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,fontWeight:500,border:`1px solid ${e.appBorderColor}`,backgroundColor:"transparent",color:e.color.mediumdark,cursor:"pointer",flexShrink:0,transition:"all 0.15s","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText}})),a4=ht.div(({theme:e})=>({padding:"16px 0",marginTop:"8px",borderTop:`1px solid ${e.appBorderColor}`,display:"flex",flexDirection:"column",gap:"8px"})),l4=ht.div({display:"flex",flexWrap:"wrap",gap:"6px"}),c4=ht.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"6px 12px",border:`1px dashed ${e.appBorderColor}`,borderRadius:"8px",backgroundColor:e.background.hoverable,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark})),u4=ht.span(({theme:e,variant:t})=>({padding:"3px 10px",borderRadius:"20px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,fontWeight:500,backgroundColor:t==="cache"?`${e.color.warning}1a`:`${e.color.positive}1a`,color:t==="cache"?e.color.warning:e.color.positive})),p4=ht.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"5px",padding:"5px 12px",border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",backgroundColor:"transparent",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:500,color:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),hre=ht.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 24px",borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.hoverable,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.mediumdark})),t1=({src:e,alt:t})=>{let[n,r]=Lc(!1);return Fe.createElement(Fe.Fragment,null,!n&&Fe.createElement(r1,null),Fe.createElement(r4,{src:e,alt:t,onLoad:()=>r(!0),style:n?void 0:{position:"absolute",opacity:0}}))};function n1(e){return e>=90?"high":e>=70?"medium":"low"}function d4(e){return e==="high"?"#16a34a":e==="medium"?"#d97706":"#ef4444"}var o1=({results:e,stories:t,onApply:n,onCancel:r,onRerun:o,isApplying:i,isRerunning:s,source:a,resolveThumbnail:u,resolveStoryScreenshot:c,isCapturingScreenshots:l,onBrowse:d})=>{let[g,p]=Lc(()=>{let k=new Set;for(let A of e.mappings)A.confidence>=90&&k.add(A.storyId);return k}),[h,S]=Lc(""),[T,I]=Lc("all"),v=QC(()=>{let k=new Map;for(let A of t)k.set(A.id,{name:A.name,title:A.title});return k},[t]),D=QC(()=>{let k=e.mappings;if(T!=="all"&&(k=k.filter(A=>n1(A.confidence)===T)),h.trim()){let A=h.toLowerCase();k=k.filter(f=>{let C=v.get(f.storyId);return C?.name.toLowerCase().includes(A)||C?.title.toLowerCase().includes(A)||f.componentSetName.toLowerCase().includes(A)||f.figmaFrameName.toLowerCase().includes(A)})}return k},[e.mappings,T,h,v]),N=k=>{p(A=>{let f=new Set(A);return f.has(k)?f.delete(k):f.add(k),f})},j=()=>{let k=e.mappings.filter(A=>g.has(A.storyId));n(k)},B=e.mappings.filter(k=>k.confidence>=90).length,z=e.mappings.filter(k=>k.confidence>=70&&k.confidence<90).length,m=e.mappings.filter(k=>k.confidence<70).length,b=e.usage;return Fe.createElement(H$,null,Fe.createElement(W$,null,Fe.createElement(V$,null,Fe.createElement(G$,null,Fe.createElement(q$,null,"Auto-Map Results"),Fe.createElement(JC,{variant:"success"},e.stats.matched," matched"),e.unmatched.length>0&&Fe.createElement(JC,{variant:"danger"},e.unmatched.length," unmatched"),a&&Fe.createElement(u4,{variant:a},a==="cache"?"Loaded from cache":"Fresh analysis")),Fe.createElement(Y$,null,"Review matches below. Uncheck any incorrect mappings before applying.")),Fe.createElement(K$,null,a==="cache"&&o&&Fe.createElement(p4,{onClick:o,disabled:s},s?"Re-running...":"Re-run LLM"),Fe.createElement(Dr,{onClick:r,variant:"ghost"},"Cancel"),Fe.createElement(Dr,{loading:i,onClick:j,loadingText:"Applying..."},"Apply ",g.size," Selected"))),Fe.createElement(X$,null,Fe.createElement(Q$,{type:"text",placeholder:"Filter stories...",value:h,onChange:k=>S(k.target.value)}),Fe.createElement(J$,null,Fe.createElement(Ac,{active:T==="all",onClick:()=>I("all")},"All ",e.mappings.length),B>0&&Fe.createElement(Ac,{active:T==="high",onClick:()=>I("high")},"\u226590% (",B,")"),z>0&&Fe.createElement(Ac,{active:T==="medium",onClick:()=>I("medium")},"70-89% (",z,")"),m>0&&Fe.createElement(Ac,{active:T==="low",onClick:()=>I("low")},"<70% (",m,")"))),Fe.createElement(Z$,null,D.map(k=>{let A=v.get(k.storyId),f=n1(k.confidence),C=g.has(k.storyId),E=f==="low";return Fe.createElement(e4,{key:k.storyId,dimmed:E&&!C},Fe.createElement(t4,{checked:C,onClick:()=>N(k.storyId)},C?"\u2713":""),(()=>{let x=c?.(k.storyId);return x?Fe.createElement(Pc,null,Fe.createElement(t1,{src:x,alt:A?.name||k.storyId})):l?Fe.createElement(Pc,null,Fe.createElement(r1,null)):Fe.createElement(n4,{bgColor:E?"#f1f5f9":"#eff6ff"},Fe.createElement("span",{style:{fontFamily:"Inter",fontSize:"8px",fontWeight:500,color:E?"#94a3b8":"#3b82f6"}},(A?.name||"?").substring(0,4)))})(),Fe.createElement(ZC,null,Fe.createElement(e1,null,A?.name||k.storyId),Fe.createElement(wh,null,A?.title||"")),Fe.createElement(o4,null,"\u2192"),(()=>{let x=u?.(k.figmaNodeId),F=Sh(k.reason),P=F.summary+(F.candidates?` (${F.candidates} candidates)`:"");return x?Fe.createElement(Pc,{title:P},Fe.createElement(t1,{src:x,alt:k.figmaFrameName})):Fe.createElement(Pc,{title:P},Fe.createElement("span",{style:{fontFamily:"Inter",fontSize:"10px",fontWeight:500,color:"#94a3b8"}},"No thumbnail"))})(),Fe.createElement(ZC,null,Fe.createElement(e1,null,k.componentSetName),Fe.createElement(wh,null,k.figmaFrameName),Fe.createElement(XC,{data:Sh(k.reason),color:d4(f)})),Fe.createElement(i4,{level:f},k.confidence,"%"),d&&Fe.createElement(s4,{onClick:()=>d(k.componentSetName)},"Browse"))}),e.unmatched.length>0&&Fe.createElement(a4,null,Fe.createElement(wh,null,e.unmatched.length," stories couldn't be matched \u2014 map manually after applying"),Fe.createElement(l4,null,e.unmatched.map(k=>{let A=v.get(k);return Fe.createElement(c4,{key:k},Fe.createElement("span",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:"#cbd5e1"}}),A?`${A.name} (${A.title})`:k)})))),b&&a!=="cache"&&Fe.createElement("div",{style:{padding:"8px 24px",borderTop:"1px solid #f0f0f0"}},Fe.createElement(Ec,{inputTokens:b.inputTokens||0,outputTokens:b.outputTokens||0,costUsd:b.costUsd||0})))};_e();Oe();import{useState as Oo,useCallback as _o,useRef as g4}from"react";import{useStorybookApi as f4}from"storybook/manager-api";function i1({projectId:e}){let t=f4(),n=g4(null),[r,o]=Oo(!1),[i,s]=Oo(!1),[a,u]=Oo(!1),[c,l]=Oo(null),[d,g]=Oo(null),[p,h]=Oo(null),[S,T]=Oo(""),[I,v]=Oo(null),D=_o(async()=>{let A=await fetch("/index.json");if(!A.ok)throw new Error("Failed to fetch Storybook index");let f=await A.json(),C=f.entries||f.stories||{},E=Object.keys(C).filter(P=>C[P].type==="story");y.debug(`[useAutoMap] Found ${E.length} stories in index.json`);let x=[];for(let P of E){let L=C[P],O=t.getData(P),w={...O?.initialArgs||{}},R=O?.argTypes||{};for(let[W,M]of Object.entries(R))if(!(W in w)){let oe=M;if(oe.defaultValue!==void 0)w[W]=oe.defaultValue;else if(oe.table?.defaultValue?.summary!==void 0){let X=oe.table.defaultValue.summary;X==="false"?w[W]=!1:X==="true"?w[W]=!0:w[W]=X}}x.push({id:P,name:L.name||P.split("--").pop()||P,title:L.title||"",initialArgs:w,argTypes:R})}let F=x.filter(P=>Object.keys(P.initialArgs).length>0);return y.debug(`[useAutoMap] Manifest: ${x.length} stories, ${F.length} with args`),x},[t]),N=_o(async()=>{if(!e)return!1;try{let A=K(),f=localStorage.getItem("uicopilot_session_token");if(!f)return!1;let C=await fetch(`${A}/api/figma/auto-map?projectId=${e}`,{headers:{Authorization:`Bearer ${f}`}});if(!C.ok)return!1;let E=await C.json();return E.hasSuggestions&&E.mappings?.length>0?(g(E),v("cache"),T(`Loaded ${E.mappings.length} saved suggestions`),y.debug(`[useAutoMap] Loaded ${E.mappings.length} existing suggestions from DB`),!0):!1}catch{return!1}},[e]),j=_o(async A=>{o(!0),T("Collecting story information...");let f;try{if(f=await D(),A?.length&&(f=f.filter(E=>!A.includes(E.id)),y.debug(`[useAutoMap] After excluding mapped: ${f.length} stories`)),f.length===0){l("No unmapped stories found"),o(!1);return}h(f)}catch(E){l(E instanceof Error?E.message:"Failed to collect story manifest"),o(!1);return}o(!1),s(!0),T(`Analyzing ${f.length} stories against Figma components...`);let C=new AbortController;n.current=C;try{let E=K(),x=localStorage.getItem("uicopilot_session_token");if(!x)throw new Error("Not authenticated");let F=await fetch(`${E}/api/figma/auto-map`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${x}`},body:JSON.stringify({projectId:e,stories:f.map(L=>({id:L.id,name:L.name,title:L.title,initialArgs:L.initialArgs,argTypes:L.argTypes}))}),signal:C.signal});if(!F.ok){let L=await F.json();throw new Error(L.error||"Auto-map failed")}let P=await F.json();g(P),v("llm"),T(`Found ${P.stats.matched} matches (${P.stats.highConfidence} high confidence)`),y.debug(`[useAutoMap] Results: ${P.stats.matched}/${P.stats.total} matched, ${P.unmatched.length} unmatched`)}catch(E){if(E instanceof DOMException&&E.name==="AbortError"){T("Cancelled");return}l(E instanceof Error?E.message:"Auto-map failed")}finally{s(!1),n.current=null}},[e,D]),B=_o(async A=>{if(!e)return;if(l(null),g(null),v(null),o(!0),T("Checking for existing suggestions..."),await N()){o(!1);return}await j(A)},[e,N,j]),z=_o(async A=>{e&&(l(null),g(null),v(null),await j(A))},[e,j]),m=_o(async A=>{if(!(!e||A.length===0)){u(!0),T(`Applying ${A.length} mappings...`);try{let f=K(),C=localStorage.getItem("uicopilot_session_token");if(!C)throw new Error("Not authenticated");let E=0;for(let x of A)try{(await fetch(`${f}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${C}`},body:JSON.stringify({projectId:e,storyId:x.storyId,figmaNodeId:x.figmaNodeId,name:x.figmaFrameName||x.componentSetName})})).ok?E++:y.warn(`[useAutoMap] Failed to apply mapping for ${x.storyId}`)}catch(F){y.error(`[useAutoMap] Error applying mapping for ${x.storyId}:`,F)}T(`Applied ${E}/${A.length} mappings`),y.debug(`[useAutoMap] Applied ${E}/${A.length} mappings`)}catch(f){l(f instanceof Error?f.message:"Failed to apply mappings")}finally{u(!1)}}},[e]),b=_o(()=>{n.current?.abort()},[]),k=_o(()=>{g(null),h(null),l(null),T(""),v(null)},[]);return{collectAndMap:B,rerun:z,loadExisting:N,applyMappings:m,cancel:b,reset:k,isCollecting:r,isMapping:i,isApplying:a,error:c,results:d,manifest:p,progress:S,source:I}}Oe();import{useState as vh,useEffect as m4,useRef as s1}from"react";var a1=2;async function h4(e,t){try{let n=await fetch(`/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`,{signal:t});return n.ok&&(await n.json()).screenshot||null}catch{return null}}function l1(e){let[t,n]=vh({}),[r,o]=vh(0),[i,s]=vh(!1),a=s1(null),u=s1(""),c=e.join(",");return m4(()=>{if(!e.length||c===u.current)return;u.current=c,n({}),o(0),s(!0);let l=new AbortController;a.current=l;let d=0;return(async()=>{for(let p=0;p<e.length&&!l.signal.aborted;p+=a1){let h=e.slice(p,p+a1),S=await Promise.all(h.map(I=>h4(I,l.signal).then(v=>({id:I,img:v}))));if(l.signal.aborted)break;let T={};for(let{id:I,img:v}of S)d++,v&&(T[I]=v);Object.keys(T).length>0&&n(I=>({...I,...T})),o(d)}s(!1),y.debug(`[useStoryScreenshots] Captured ${d}/${e.length} screenshots`)})().catch(()=>s(!1)),()=>{l.abort()}},[c]),{screenshots:t,isCapturing:i,progress:{done:r,total:e.length}}}import we,{useState as kh,useEffect as ha,useMemo as x4,useCallback as y4}from"react";import{styled as b4}from"storybook/theming";Oe();var S4=b4.button(({theme:e})=>({gridColumn:"1 / -1",padding:"8px 16px",backgroundColor:"transparent",border:`1px dashed ${e.appBorderColor}`,borderRadius:e.appBorderRadius,color:e.color.mediumdark,fontSize:e.typography.size.s1,cursor:"pointer",transition:"all 0.15s","&:hover:not(:disabled)":{borderColor:e.color.secondary,color:e.color.secondary},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),Zi=({isOpen:e,onClose:t,onSelect:n,projectId:r,stories:o=[],currentStoryId:i,onStoryChange:s,multiSelect:a=!1,onMultiSelect:u,initialSearch:c})=>{let l=ca({projectId:r||"",enabled:e&&!!r}),d=we.useRef(!1);ha(()=>{e&&c&&!d.current&&(l.setSearch(c),d.current=!0),e||(d.current=!1)},[e,c]);let[g,p]=kh(new Set),[h,S]=kh(i||o[0]?.id||"");ha(()=>{i&&S(i)},[i]);let T=50,I=8,[v,D]=kh({}),N=y4(f=>{D(C=>({...C,[f]:(C[f]||1)+1}))},[]);ha(()=>{D({})},[l.variantFilters]),ha(()=>{l.expandedSets.forEach(f=>{let C=l.variantChildren[f];if(!C||C.length===0)return;let E=C;l.variantFilters.some(P=>P.value)&&(E=C.filter(P=>P.variantProperties?l.variantFilters.every(L=>L.value?P.variantProperties?.[L.property]===L.value:!0):!1));let x=v[f]||1,F=E.slice(0,x*T).map(P=>P.id);for(let P=0;P<F.length;P+=I){let L=F.slice(P,P+I),O=P/I*300;O===0?l.fetchVariantThumbnails(f,L):setTimeout(()=>l.fetchVariantThumbnails(f,L),O)}})},[l.expandedSets,l.variantChildren,l.variantFilters,v]),ha(()=>{p(new Set)},[h]);let j=x4(()=>{let f=[];return l.filteredFrames.forEach(C=>{if(C.type==="COMPONENT_SET"&&C.children){let E=l.variantFilters.some(x=>x.value)?C.children.filter(x=>x.variantProperties?l.variantFilters.every(F=>F.value?x.variantProperties?.[F.property]===F.value:!0):!1):C.children;f.push(...E)}else f.push(C)}),f},[l.filteredFrames,l.variantFilters]),B=f=>{if(a)p(C=>{let E=new Set(C);return E.has(f.id)?E.delete(f.id):E.add(f.id),E});else{let C=l.resolveThumbnail(f.id);try{n({...f,thumbnail:C})}catch(E){y.error("[ComponentBrowserModal] onSelect threw error:",E)}t()}},z=()=>{let f=j.map(E=>E.id),C=f.every(E=>g.has(E));p(C?new Set:new Set(f))},m=()=>{if(u&&g.size>0){let f=j.filter(C=>g.has(C.id)).map(C=>({...C,thumbnail:l.resolveThumbnail(C.id)}));u(f),p(new Set)}},b=f=>{S(f),s?.(f)},k=f=>{f.target===f.currentTarget&&t()},A=o.find(f=>f.id===h);return e?we.createElement(Gk,{onClick:k},we.createElement(qk,null,we.createElement(Yk,null,we.createElement(Kk,null,"Link Figma Frames"),we.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center"}},we.createElement("button",{onClick:()=>l.refresh(),disabled:l.isLoading,style:{padding:"4px 8px",fontSize:"12px",cursor:l.isLoading?"not-allowed":"pointer",background:"transparent",border:"1px solid #ccc",borderRadius:"4px"},title:"Refresh from Figma"},"Refresh"),we.createElement(Xk,{onClick:t},"\xD7"))),we.createElement(Qk,null,l.error&&we.createElement(oC,null,l.error),!l.error&&we.createElement(we.Fragment,null,o.length>0&&we.createElement(mC,null,we.createElement(hC,null,"Story:"),we.createElement(xC,{value:h,onChange:f=>b(f.target.value)},o.map(f=>we.createElement("option",{key:f.id,value:f.id},f.name,f.mappingsCount?` (${f.mappingsCount} linked)`:""))),A?.mappingsCount?we.createElement(yC,{hasMapping:!0},A.mappingsCount," frames linked"):null),we.createElement(nC,null,we.createElement(bc,null,we.createElement("input",{type:"checkbox",checked:l.showComponentSets,onChange:f=>l.setShowComponentSets(f.target.checked)}),"Component Sets"),we.createElement(bc,null,we.createElement("input",{type:"checkbox",checked:l.showFrames,onChange:f=>l.setShowFrames(f.target.checked)}),"Frames"),we.createElement(bc,null,we.createElement("input",{type:"checkbox",checked:l.showComponents,onChange:f=>l.setShowComponents(f.target.checked)}),"Components"),l.availablePages.length>1&&we.createElement(Qi,{isActive:!!l.figmaPage,value:l.figmaPage,onChange:f=>l.setFigmaPage(f.target.value),style:{marginLeft:"auto"}},we.createElement("option",{value:""},"All pages"),l.availablePages.map(f=>we.createElement("option",{key:f,value:f},f)))),l.filterSuggestion&&we.createElement(bC,null,we.createElement(SC,null,"AI suggests:"),we.createElement(wC,null,Object.entries(l.filterSuggestion.suggestedFilters).map(([f,C])=>`${f}=${C}`).join(", ")),we.createElement(vC,{onClick:l.applySuggestedFilters},"Apply"),we.createElement(kC,{onClick:l.dismissFilterSuggestion},"Dismiss")),l.filterSuggestionLoading&&we.createElement(CC,null,"Matching story args to Figma filters..."),l.availableFilters.length>0&&we.createElement(wc,null,we.createElement(ga,null,"Filters:"),l.availableFilters.map(({property:f,values:C})=>{let E=l.variantFilters.find(x=>x.property===f);return we.createElement(Qi,{key:f,isActive:!!E?.value,value:E?.value||"",onChange:x=>l.handleFilterChange(f,x.target.value)},we.createElement("option",{value:""},f),C.map(x=>we.createElement("option",{key:x,value:x},f,"=",x)))}),l.variantFilters.some(f=>f.value)&&we.createElement(vc,{onClick:l.clearFilters},"Clear All")),l.rateLimitError&&we.createElement("div",{style:{padding:"8px 12px",marginBottom:"8px",background:"rgba(234, 88, 12, 0.12)",border:"1px solid rgba(234, 88, 12, 0.3)",borderRadius:"6px",fontSize:"12px",color:"#ea580c"}},"\u26A0 Figma thumbnail previews unavailable \u2014"," ",l.rateLimitError,". You can still select by name."),we.createElement(Jk,{type:"text",placeholder:"Search frames...",value:l.search,onChange:f=>l.setSearch(f.target.value),autoFocus:!0}),a&&j.length>0&&we.createElement(TC,null,we.createElement(IC,{onClick:z},g.size===j.length?"Deselect All":"Select All Visible"),we.createElement(FC,null,g.size>0?`${g.size} selected of `:"Showing ",j.length," frames")),l.isLoading&&we.createElement(nh,null,Array.from({length:6}).map((f,C)=>we.createElement(fC,{key:C},we.createElement("div",{style:{width:"100%",aspectRatio:"4 / 3"}},we.createElement(Sc,{width:"100%",height:"100%"})),we.createElement("div",{style:{padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},we.createElement(Sc,{width:"80%",height:"16px"}),we.createElement(Sc,{width:"50%",height:"12px"}))))),!l.isLoading&&l.filteredFrames.length===0&&we.createElement(rC,null,l.search?"No frames match your search":"No frames found in this Figma file"),!l.isLoading&&l.filteredFrames.length>0&&we.createElement(nh,null,l.filteredFrames.map(f=>we.createElement(fa,{key:f.id,frame:f,thumbnail:l.thumbnails[f.id],thumbnails:l.thumbnails,variantThumbnails:l.variantThumbnails[f.id],variantChildren:l.variantChildren[f.id],variantFailed:l.variantFailed[f.id],isLoadingVariants:l.loadingVariants.has(f.id),isExpanded:l.expandedSets.has(f.id),isNew:l.recentlyAdded.has(f.name),onToggleExpand:l.toggleExpanded,onSelect:B,multiSelect:a,selectedFrames:g,variantFilters:l.variantFilters,variantPage:v[f.id]||1,onShowMore:N})),l.hasMore&&we.createElement(S4,{onClick:l.loadMore,disabled:l.loadingMore},l.loadingMore?"Loading...":`Show more (${l.totalFrames-l.frames.length} remaining)`)))),a&&we.createElement(EC,null,we.createElement(AC,{disabled:g.size===0,onClick:m},"Link ",g.size," Selected")))):null};Ce();ct();var v4=rn.div({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.6)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e4}),k4=rn.div(({theme:e})=>({width:"90vw",maxWidth:"1100px",height:"75vh",backgroundColor:e.background.content,borderRadius:"12px",display:"flex",flexDirection:"column",boxShadow:"0 20px 60px rgba(0, 0, 0, 0.3)",overflow:"hidden"})),C4=rn.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app})),T4=rn.div({display:"flex",alignItems:"center",gap:"20px"}),I4=rn.h2(({theme:e})=>({fontSize:"16px",fontWeight:600,color:e.color.defaultText,margin:0,display:"flex",alignItems:"center",gap:"8px"})),F4=rn.div({display:"flex",gap:"4px"}),c1=rn(Co)(({theme:e,active:t})=>({padding:"8px 16px",borderBottom:"none",borderRadius:"6px",backgroundColor:t?e.background.hoverable:"transparent","&:hover":{backgroundColor:e.background.hoverable}})),E4=rn(Bn)({width:"32px",height:"32px",fontSize:"20px",borderRadius:"6px"}),A4=rn.div({flex:1,overflow:"hidden",display:"flex",flexDirection:"column"}),P4=rn.div(({theme:e})=>({padding:"12px 20px",borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app,display:"flex",alignItems:"center",justifyContent:"space-between"})),L4=rn.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,display:"flex",gap:"16px"})),M4=rn.div({display:"flex",flexDirection:"column",flex:1,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(255, 255, 255, 0.95)",padding:"40px"}),B4=rn.div({display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",maxWidth:"400px"}),D4=rn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText,textAlign:"center"})),R4=rn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark,textAlign:"center"})),z4=rn.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden"})),N4=rn.div(({theme:e})=>({width:"100%",height:"100%",backgroundColor:e.color.secondary,borderRadius:"4px",opacity:.6})),O4=rn.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",padding:"6px 14px",backgroundColor:e.color.defaultText,color:"white",border:"none",borderRadius:"6px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,cursor:"pointer",transition:"opacity 0.15s","&:hover":{opacity:.85},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),u1=rn.span(({theme:e,type:t})=>({display:"flex",alignItems:"center",gap:"6px","& .dot":{width:"8px",height:"8px",borderRadius:"50%",backgroundColor:t==="mapped"?e.color.positive:t==="unmapped"?e.color.mediumlight:"transparent"}})),p1=({isOpen:e,onClose:t,projectId:n})=>{let[r,o]=es("map"),[i,s]=es([]),[a,u]=es(!0),[c,l]=es(null),[d,g]=es(!1),[p,h]=es(null),S=i1({projectId:n}),{refreshMappings:T}=Ze(),{featureFlags:I}=ue(),v=Je.useMemo(()=>S.results?.mappings.map(x=>x.storyId)||[],[S.results]),D=l1(v),N=$o(async()=>{u(!0);try{let x=await fetch("/index.json");if(!x.ok)throw new Error("Failed to fetch index.json");let F=await x.json(),P=F.entries||F.stories||{},L=Object.entries(P).filter(([,w])=>w.type==="story").map(([w,R])=>({id:w,name:R.name||w.split("--").pop()||w,title:R.title||"",importPath:R.importPath,componentTitle:R.title?.split("/").slice(0,-1).join("/")||R.title,figmaMapping:null}));try{let w=K(),R=localStorage.getItem("uicopilot_session_token"),W=await se(`${w}/api/mappings?projectId=${n}&_t=${Date.now()}`,{headers:{Authorization:`Bearer ${R}`}});if(W.ok){let M=await W.json(),oe=new Map((M.mappings||[]).map(X=>[X.storyId,X]));L.forEach(X=>{let ne=oe.get(X.id);ne&&ne.figmaNodeId&&(X.figmaMapping={figmaNodeId:ne.figmaNodeId,figmaFrameName:ne.name||ne.figmaFrameName||""})})}}catch(w){console.warn("[StoryMappingAssistant] Failed to fetch mappings (stories still loaded):",w)}s(L);let O=L.find(w=>!w.figmaMapping);O?l(O.id):L.length>0&&l(L[0].id)}catch(x){console.error("[StoryMappingAssistant] Error fetching stories:",x)}finally{u(!1)}},[n]);w4(()=>{e&&N()},[e,N]);let j=$o((x,F,P)=>{s(w=>w.map(R=>R.id===x?{...R,figmaMapping:{figmaNodeId:F,figmaFrameName:P}}:R));let L=i.findIndex(w=>w.id===x),O=i.find((w,R)=>R>L&&!w.figmaMapping);O&&l(O.id)},[i]),B=$o(x=>{s(F=>F.map(P=>P.id===x?{...P,figmaMapping:null}:P))},[]),z=$o(x=>{l(x),o("map")},[]),m=$o(()=>{let x=i.filter(F=>F.figmaMapping).map(F=>F.id);S.collectAndMap(x)},[i,S]),b=$o(()=>{let x=i.filter(F=>F.figmaMapping).map(F=>F.id);g(!1),S.rerun(x)},[i,S]),k=$o(async x=>{await S.applyMappings(x),g(!1),S.reset(),N(),T()},[S,N,T]),A=$o(()=>{g(!1),S.reset()},[S]);Je.useEffect(()=>{S.results&&g(!0)},[S.results]);let f=x=>{x.target===x.currentTarget&&t()};if(!e)return null;let C=i.filter(x=>x.figmaMapping).length,E=i.length;return Je.createElement(Je.Fragment,null,Je.createElement(v4,{onClick:f},Je.createElement(k4,{onClick:x=>x.stopPropagation()},Je.createElement(C4,null,Je.createElement(T4,null,Je.createElement(I4,null,Je.createElement("span",null,"\u{1F517}"),"Link Stories to Figma"),Je.createElement(F4,null,Je.createElement(c1,{active:r==="map",onClick:()=>o("map")},"Map Stories"),Je.createElement(c1,{active:r==="view",onClick:()=>o("view")},"View All Mappings"))),Je.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},I.enableAutoMap&&!d&&!S.isCollecting&&!S.isMapping&&Je.createElement(O4,{onClick:m,disabled:a||i.length===0},Je.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"white",strokeWidth:"2"},Je.createElement("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),Je.createElement("path",{d:"M2 17l10 5 10-5"}),Je.createElement("path",{d:"M2 12l10 5 10-5"})),"Auto-Map All"),Je.createElement(E4,{onClick:t},"\xD7"))),Je.createElement(A4,null,(S.isCollecting||S.isMapping)&&Je.createElement(M4,null,Je.createElement(B4,null,Je.createElement(z4,null,Je.createElement(N4,null)),Je.createElement(D4,null,"Auto-mapping stories to Figma"),Je.createElement(R4,null,S.progress),Je.createElement(Dr,{onClick:S.cancel,variant:"ghost"},"Cancel"))),d&&S.results&&Je.createElement(o1,{results:S.results,stories:i,onApply:k,onCancel:A,onRerun:b,isApplying:S.isApplying,isRerunning:S.isCollecting||S.isMapping,source:S.source,resolveThumbnail:x=>S.results?.thumbnailUrls?.[x],resolveStoryScreenshot:x=>D.screenshots[x],isCapturingScreenshots:D.isCapturing,onBrowse:x=>h(x)}),!d&&!S.isCollecting&&!S.isMapping&&(r==="map"?Je.createElement($C,{stories:i,loading:a,selectedStoryId:c,onSelectStory:l,onStoryMapped:j,projectId:n}):Je.createElement(WC,{stories:i,loading:a,onLink:z,onUnlink:B,projectId:n}))),Je.createElement(P4,null,Je.createElement(L4,null,Je.createElement("span",null,"Total: ",E," stories"),Je.createElement(u1,{type:"mapped"},Je.createElement("span",{className:"dot"}),C," mapped"),Je.createElement(u1,{type:"unmapped"},Je.createElement("span",{className:"dot"}),E-C," unmapped"))))),Je.createElement(Zi,{isOpen:!!p,onClose:()=>h(null),onSelect:()=>h(null),projectId:n,initialSearch:p||void 0}))};ct();var d1=sr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"12px 16px",backgroundColor:e.background.content,borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px",transition:"border-color 0.2s, box-shadow 0.2s","&:hover":{borderColor:e.color.mediumlight}})),$4=sr.div(({theme:e})=>({width:"20px",height:"20px",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,"& svg":{width:"16px",height:"16px"}})),U4=sr.div({display:"flex",alignItems:"center",gap:"12px",flex:1}),j4=sr.div({display:"flex",alignItems:"center",gap:"8px"}),H4=sr.div(({theme:e})=>({width:"60px",height:"4px",backgroundColor:e.appBorderColor,borderRadius:"2px",overflow:"hidden"})),W4=sr.div(({theme:e,percent:t,state:n})=>({width:`${t}%`,height:"100%",borderRadius:"2px",backgroundColor:n==="complete"?e.color.positive:n==="partial"?e.color.warning:e.color.mediumlight,transition:"width 0.3s ease"})),V4=sr.span(({theme:e,state:t})=>({fontSize:"12px",fontWeight:600,color:t==="complete"?e.color.positive:t==="partial"?e.color.warning:e.color.mediumdark,whiteSpace:"nowrap"})),G4=sr.span(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText})),q4=sr(Au)({padding:"4px 10px",fontSize:"12px",fontWeight:600,marginLeft:"auto"}),Y4=sr(Au)(({theme:e})=>({padding:"4px 10px",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.negative||"#dc2626","&:hover":{textDecoration:"none",backgroundColor:"rgba(220, 38, 38, 0.08)"}})),K4=sr.span(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,fontStyle:"italic"})),X4=sr.div(({theme:e})=>({width:"14px",height:"14px",border:`2px solid ${e.appBorderColor}`,borderTopColor:le,borderRadius:"50%",animation:"figma-mapping-spin 0.8s linear infinite","@keyframes figma-mapping-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),Q4=sr.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),g1=({refreshKey:e=0})=>{let[t,n]=Mc(!1),[r,o]=Mc({totalStories:0,mappedStories:0,loading:!0}),{selectedProjectId:i}=Xe(),{sessionToken:s}=ve();_4(()=>{i&&s?a():o({totalStories:0,mappedStories:0,loading:!1})},[i,s,e]);let a=async()=>{o(B=>({...B,loading:!0}));try{let B=await fetch("/index.json");if(!B.ok)throw new Error("Failed to fetch Storybook index");let z=await B.json(),m=z.entries||z.stories||{},b=Object.keys(m).filter(E=>m[E].type==="story").length,k=Object.keys(m).filter(E=>m[E].type==="story"),A=K(),f=await se(`${A}/api/mappings?projectId=${i}`,{headers:{Authorization:`Bearer ${s}`}}),C=0;if(f.ok){let E=await f.json(),x=E.mappings||E||[];if(Array.isArray(x)){let F=new Set(x.map(P=>P.storyId).filter(Boolean));C=k.filter(P=>F.has(P)).length}else{let F=await se(`${A}/api/mappings/stats?projectId=${i}`,{headers:{Authorization:`Bearer ${s}`}});if(F.ok){let P=await F.json();C=Math.min(P.mappedStoriesCount||0,b)}}}o({totalStories:b,mappedStories:C,loading:!1})}catch(B){console.error("[FigmaMappingsSection] Error fetching stats:",B),o(z=>({...z,loading:!1}))}},[u,c]=Mc(!1),[l,d]=Mc(!1),g=async()=>{!i||!s||d(!0)},p=async()=>{d(!1),c(!0);try{let B=K(),z=await se(`${B}/api/mappings?projectId=${i}`,{headers:{Authorization:`Bearer ${s}`}});if(!z.ok)throw new Error("Failed to fetch mappings");let b=(await z.json()).mappings||[];await Promise.all(b.map(k=>se(`${B}/api/mappings?id=${encodeURIComponent(k.id)}`,{method:"DELETE",headers:{Authorization:`Bearer ${s}`}}))),a()}catch(B){console.error("[FigmaMappingsSection] Unlink all failed:",B)}finally{c(!1)}},h=()=>n(!0),S=()=>{n(!1),i&&s&&a()};if(!i)return Ft.createElement(d1,null,Ft.createElement(K4,null,"Select a project to link Figma designs"));let{totalStories:T,loading:I}=r,v=Math.min(r.mappedStories,T),D=v===0?"none":v>=T?"complete":"partial",N=T>0?Math.min(100,Math.round(v/T*100)):0,j=D==="none"?"Link designs":"Manage";return Ft.createElement(Ft.Fragment,null,Ft.createElement(d1,null,Ft.createElement($4,null,Ft.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ft.createElement("path",{d:"M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z",fill:"#1ABCFE"}),Ft.createElement("path",{d:"M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z",fill:"#0ACF83"}),Ft.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),Ft.createElement("path",{d:"M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z",fill:"#F24E1E"}),Ft.createElement("path",{d:"M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z",fill:"#A259FF"}))),Ft.createElement(U4,null,Ft.createElement(G4,null,"Figma Mappings"),Ft.createElement(j4,null,I?Ft.createElement(Ft.Fragment,null,Ft.createElement(X4,null),Ft.createElement(Q4,null,"Loading...")):Ft.createElement(Ft.Fragment,null,Ft.createElement(H4,null,Ft.createElement(W4,{percent:N,state:D})),Ft.createElement(V4,{state:D},`${v}/${T}`)))),v>0&&Ft.createElement(Y4,{onClick:g,disabled:I||u},u?"Unlinking...":"Unlink All"),Ft.createElement(q4,{onClick:h,disabled:I},j)),t&&Ft.createElement(p1,{isOpen:t,onClose:S,projectId:i}),Ft.createElement(Vr,{isOpen:l,title:"Unlink All Mappings",message:`Unlink all ${r.mappedStories} Figma mappings?`,confirmLabel:"Unlink All",variant:"danger",onConfirm:p,onCancel:()=>d(!1)}))};import Z,{useState as Uo,useEffect as Dc,useCallback as m1,useRef as Ch}from"react";import{styled as Fn}from"storybook/theming";import{addons as r5}from"storybook/manager-api";Ce();_e();ct();_e();import{useEffect as J4,useRef as Z4}from"react";import{addons as e5}from"storybook/manager-api";var Bc="uicopilot/crawl-started",t5=3e3,n5=360*1e3;function f1(e){let t=Z4({});J4(()=>{let n=e5.getChannel?.();if(!n)return;let r=s=>{let a=t.current[s];a&&(clearInterval(a),delete t.current[s])},o=s=>{try{e.addNotification?.(s)}catch{}},i=({projectId:s})=>{if(!s||t.current[s])return;let a=localStorage.getItem("uicopilot_session_token");if(!a)return;let u=K(),c=Date.now(),l=setInterval(async()=>{if(Date.now()-c>n5){r(s);return}try{let d=await fetch(`${u}/api/figma/cache-status?projectId=${s}`,{headers:{Authorization:`Bearer ${a}`}});if(!d.ok)return;let g=await d.json(),p=g?.crawlProgress?.status;if(p==="complete"){r(s);let h=g?.componentSetCount??0;o({id:`uicopilot-crawl-done-${s}-${Date.now()}`,content:{headline:"Figma cache ready",subHeadline:`${h} component set${h===1?"":"s"} cached \u2014 open Settings to map`},duration:8e3})}else p==="error"&&(r(s),o({id:`uicopilot-crawl-error-${s}-${Date.now()}`,content:{headline:"Figma crawl failed",subHeadline:g?.crawlProgress?.error||"Open Settings to retry."},duration:8e3}))}catch{}},t5);t.current[s]=l};return n.on(Bc,i),()=>{n.off(Bc,i),Object.keys(t.current).forEach(r)}},[e])}var Th=Fn.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.background.content,borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px",fontSize:"12px"})),Ih=Fn.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),Fh=Fn.span(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),koe=Fn($r)({padding:"5px 12px",fontSize:"12px"}),Eh=Fn.div(({theme:e})=>({display:"flex",gap:"16px",color:e.color.mediumdark,marginBottom:"4px"})),xa=Fn.span(({theme:e})=>({whiteSpace:"nowrap","& strong":{color:e.color.defaultText,fontWeight:600}})),o5=Fn.span(({theme:e,status:t})=>({display:"inline-block",padding:"1px 6px",borderRadius:"3px",fontSize:"10px",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",backgroundColor:t==="cached"?`${e.color.positive}1a`:t==="expired"?`${e.color.warning}1a`:e.background.hoverable,color:t==="cached"?e.color.positive:t==="expired"?e.color.warning:e.color.mediumdark})),i5=Fn.div(({theme:e})=>({marginTop:"6px",padding:"6px 8px",backgroundColor:e.background.hoverable,borderRadius:"4px",color:e.color.mediumdark,lineHeight:"1.4"})),Ah=Fn.span(({theme:e,type:t})=>({fontWeight:500,color:t==="added"?e.color.positive:t==="removed"?e.color.negative:e.color.warning})),s5=Fn.span(({theme:e})=>({color:e.color.mediumdark,fontSize:"12px"})),ya=Fn.div(({theme:e})=>({marginTop:"8px",padding:"8px 10px",backgroundColor:`${e.color.negative}1a`,border:`1px solid ${e.color.negative}4d`,borderRadius:"4px",fontSize:"12px",color:e.color.negative,lineHeight:"1.4"})),a5=Fn.div(({theme:e})=>({marginTop:"8px",padding:"8px 10px",backgroundColor:`${e.color.warning}1a`,border:`1px solid ${e.color.warning}4d`,borderRadius:"4px",fontSize:"12px",color:e.color.warning,lineHeight:"1.4"})),l5=Fn.div(({theme:e})=>({marginTop:"8px",padding:"8px 10px",backgroundColor:`${e.color.positive}1a`,border:`1px solid ${e.color.positive}4d`,borderRadius:"4px",fontSize:"12px",color:e.color.positive,lineHeight:"1.4"})),ts=Fn.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden",marginTop:"10px"})),ns=Fn.div(({theme:e,percent:t})=>({width:`${t}%`,height:"100%",backgroundColor:e.color.secondary,borderRadius:"3px",transition:"width 0.5s ease"})),qr=Fn.div(({theme:e})=>({display:"flex",justifyContent:"space-between",marginTop:"6px",fontSize:"12px",fontWeight:500,color:e.color.defaultText})),h1=new Set,x1=()=>{let{userRole:e,featureFlags:t}=ue(),[n,r]=Uo(null),[o,i]=Uo(!0),[s,a]=Uo(!1),[u,c]=Uo(null),[l,d]=Uo(null),[g,p]=Uo(!1),[h,S]=Uo(!1),[T,I]=Uo(!1),{selectedProjectId:v,projects:D}=Xe(),{sessionToken:N}=ve(),j=Ch(null),B=Ch(null),z=Ch(null),m=m1(()=>{j.current&&(clearInterval(j.current),j.current=null),B.current&&(clearInterval(B.current),B.current=null),z.current&&(clearTimeout(z.current),z.current=null)},[]);Dc(()=>m,[m]);let b=m1(async()=>{if(!(!v||!N))try{let w=K(),R=await se(`${w}/api/figma/cache-status?projectId=${v}`,{headers:{Authorization:`Bearer ${N}`}});if(R.ok){let W=await R.json();r(W)}}catch(w){console.error("[FigmaCacheSection] Error:",w)}finally{i(!1)}},[v,N]);Dc(()=>{b()},[b]),Dc(()=>{if(o||s||!n||n.structureStatus!=="none"||!v||h1.has(v))return;let w=D.find(W=>W.id===v);(w?.figmaFileUrl||w?.figmaFileId)&&(h1.add(v),k())},[o,s,n?.structureStatus,v,D]),Dc(()=>{let w=n?.thumbnailProgress?.status,R=n?.enrichmentProgress?.status,W=n?.thumbnailProgress?.cached??0,M=n?.thumbnailProgress?.total??0,oe=w==="in-progress"||w==="pending"||M>0&&W<M,X=R==="in-progress"||R==="pending",ne=!n?.thumbnailProgress&&n?.structureStatus==="cached",xe=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling";if(!(xe||oe||X||ne)||!xe&&(!n||n.structureStatus==="none"))return;let nt=setInterval(()=>{b()},3e3);return()=>{clearInterval(nt)}},[n?.thumbnailProgress?.status,n?.thumbnailProgress?.cached,n?.thumbnailProgress?.total,n?.enrichmentProgress?.status,n?.crawlProgress?.status,n?.structureStatus,b]);let k=async()=>{if(!(!v||!N)){a(!0),c(null),d(null);try{let w=K(),R=await se(`${w}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})});if(!R.ok){if(R.status===403){let M=await R.json().catch(()=>({}));c(M.requiresAuth?"auth":"generic")}else c("generic");return}let W=await R.json().catch(()=>({}));if(W?.status==="skipped-unchanged")d("Figma file unchanged \u2014 reused cached structure.");else if(W?.status==="crawl-started")try{r5.getChannel()?.emit(Bc,{projectId:v})}catch{}await b()}catch(w){console.error("[FigmaCacheSection] Crawl start error:",w),c("generic")}finally{a(!1)}}},A=async()=>{if(!(!v||!N)){p(!0);try{let w=K(),R=await se(`${w}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})});console.log("[FigmaCacheSection] Cache invalidate response:",R.status),await se(`${w}/api/figma/frames/invalidate?projectId=${v}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`}}).catch(()=>{}),r({structureStatus:"none",structureCachedAt:null,componentSetCount:0,componentCount:0,pageCount:0,pages:[],cacheDiff:null,thumbnailProgress:null,enrichmentProgress:null,crawlProgress:null})}catch(w){console.error("[FigmaCacheSection] Clear cache error:",w)}finally{p(!1)}}},f=async()=>{if(!(!v||!N)){m(),S(!0);try{let w=K();await se(`${w}/api/figma/enrich`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})}),j.current=setInterval(async()=>{await b()},3e3),B.current=setInterval(()=>{(n?.enrichmentProgress?.status==="complete"||n?.enrichmentProgress?.status==="error")&&(m(),S(!1),b())},3e3),z.current=setTimeout(()=>{m(),S(!1)},6e5)}catch(w){console.error("[FigmaCacheSection] Enrich error:",w),m(),S(!1)}}},C=async()=>{if(!(!v||!N)){I(!0);try{let w=K();await se(`${w}/api/figma/cancel`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${N}`},body:JSON.stringify({projectId:v})}),await b()}catch(w){console.error("[FigmaCacheSection] Cancel error:",w)}finally{I(!1),S(!1),a(!1)}}},E=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling"||n?.thumbnailProgress?.status==="in-progress"||n?.enrichmentProgress?.status==="in-progress";if(!v)return null;if(o)return Z.createElement(Th,null,Z.createElement(Ih,null,Z.createElement(Fh,null,"Figma Cache")),Z.createElement(Eh,null,Z.createElement(xa,null,"Loading cache status\u2026")),Z.createElement(ts,null,Z.createElement(ns,{percent:100,style:{opacity:.3}})));if(!n||n.structureStatus==="none")return Z.createElement(Th,null,Z.createElement(Ih,null,Z.createElement(Fh,null,"Figma Cache"),Z.createElement(Dr,{loading:s,onClick:k,loadingText:"Loading..."},"\u21BB Load")),n?.crawlProgress?.status==="crawling"?Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:(n.crawlProgress.pagesTotal??0)>0?Math.round(n.crawlProgress.pagesDone/n.crawlProgress.pagesTotal*100):100,style:(n.crawlProgress.pagesTotal??0)>0?void 0:{opacity:.3}})),Z.createElement(qr,null,Z.createElement("span",null,"Reading components from Figma\u2026"),Z.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026"))):s?Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:100,style:{animation:"none",opacity:.3}})),Z.createElement(qr,null,Z.createElement("span",null,"Starting crawl\u2026"))):Z.createElement(Eh,null,Z.createElement(xa,null,"No cache \u2014 click Load to fetch from Figma")),n?.crawlProgress?.status==="error"&&Z.createElement(ya,null,"Crawl failed",n.crawlProgress.error?`: ${n.crawlProgress.error}`:"",". Try Load again."),u==="auth"&&Z.createElement(ya,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),u==="generic"&&Z.createElement(ya,null,"Failed to load Figma cache. Check the browser console for details."));let x=w=>{let R=Date.now()-new Date(w).getTime(),W=Math.floor(R/6e4);if(W<1)return"just now";if(W<60)return`${W}m ago`;let M=Math.floor(W/60);return M<24?`${M}h ago`:`${Math.floor(M/24)}d ago`},F=w=>w>=1024*1024*1024?`${(w/1024/1024/1024).toFixed(1)} GB`:w>=1024*1024?`${Math.round(w/1024/1024)} MB`:`${Math.max(1,Math.round(w/1024))} KB`,P=n.crawlProgress?.bytesDownloaded,L=n.cacheDiff,O=L&&(L.added.length>0||L.removed.length>0||L.renamed.length>0);return Z.createElement(Th,null,Z.createElement(Ih,null,Z.createElement(Fh,null,"Figma Cache"," ",Z.createElement(o5,{status:n.structureStatus},n.structureStatus)),Z.createElement("div",{style:{display:"flex",gap:"6px"}},e==="admin"&&Z.createElement(Dr,{loading:h,onClick:f,loadingText:"Enriching..."},"Enrich"),Z.createElement(Dr,{loading:g,onClick:A,variant:"ghost",loadingText:"Clearing..."},"Clear"),Z.createElement(Dr,{loading:s,onClick:k,loadingText:"Reloading..."},"\u21BB Reload"),E&&Z.createElement(Dr,{loading:T||n?.crawlProgress?.status==="cancelling",onClick:C,variant:"ghost",loadingText:"Stopping..."},"\u2715 Stop"))),n?.crawlProgress?.status==="crawling"&&Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:(n.crawlProgress.pagesTotal??0)>0?Math.round(n.crawlProgress.pagesDone/n.crawlProgress.pagesTotal*100):100,style:(n.crawlProgress.pagesTotal??0)>0?void 0:{opacity:.3}})),Z.createElement(qr,null,Z.createElement("span",null,"Re-reading components from Figma\u2026"),Z.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026"))),s&&n?.crawlProgress?.status!=="crawling"&&Z.createElement(qr,null,Z.createElement("span",null,"Starting crawl\u2026")),u==="auth"&&Z.createElement(ya,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),u==="generic"&&Z.createElement(ya,null,"Failed to reload Figma cache. Check the browser console for details."),Z.createElement(Eh,null,Z.createElement(xa,null,Z.createElement("strong",null,n.componentSetCount)," component sets"),Z.createElement(xa,null,Z.createElement("strong",null,n.pageCount)," pages"),typeof P=="number"&&P>0&&Z.createElement(xa,null,Z.createElement("strong",null,"\u2248 ",F(P))),n.structureCachedAt&&Z.createElement(s5,null,"Updated ",x(n.structureCachedAt))),n.crawlProgress?.status==="complete"&&n.crawlProgress.pagesFailed>0&&Z.createElement(a5,null,"\u26A0 ",n.crawlProgress.pagesFailed," of"," ",n.crawlProgress.pagesTotal," pages couldn\u2019t be read (Figma rate limit) \u2014 some components may be missing. Reload to retry."),l&&Z.createElement(l5,null,"\u2713 ",l),O&&Z.createElement(i5,null,"Since last reload:"," ",L.added.length>0&&Z.createElement(Ah,{type:"added"},"+",L.added.length," added"),L.added.length>0&&L.removed.length>0&&" \xB7 ",L.removed.length>0&&Z.createElement(Ah,{type:"removed"},"\u2212",L.removed.length," removed"),(L.added.length>0||L.removed.length>0)&&L.renamed.length>0&&" \xB7 ",L.renamed.length>0&&Z.createElement(Ah,{type:"renamed"},L.renamed.length," renamed")),n.thumbnailProgress&&n.thumbnailProgress.status==="in-progress"&&Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:n.thumbnailProgress.total>0?Math.round(n.thumbnailProgress.cached/n.thumbnailProgress.total*100):0})),Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: caching to CDN\u2026",n.thumbnailProgress.currentName&&Z.createElement(Z.Fragment,null," ",n.thumbnailProgress.currentName)),Z.createElement("span",null,n.thumbnailProgress.cached," of"," ",n.thumbnailProgress.total," variants"))),n.thumbnailProgress&&n.thumbnailProgress.status==="complete"&&Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: ",n.thumbnailProgress.cached," of"," ",n.thumbnailProgress.total," cached to CDN \u2713")),(!n.thumbnailProgress||n.thumbnailProgress.status==="pending"&&n.thumbnailProgress.cached===0)&&Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: not yet cached",n.thumbnailProgress?.total?` (${n.thumbnailProgress.total} components)`:""," ","\u2014 click Reload to generate")),n.thumbnailProgress&&n.thumbnailProgress.status==="pending"&&n.thumbnailProgress.cached>0&&Z.createElement(qr,null,Z.createElement("span",null,"Variant thumbnails: ",n.thumbnailProgress.cached," of"," ",n.thumbnailProgress.total," cached to CDN (partial)")),n.enrichmentProgress&&n.enrichmentProgress.status==="in-progress"&&Z.createElement(Z.Fragment,null,Z.createElement(ts,null,Z.createElement(ns,{percent:n.enrichmentProgress.total>0?Math.round(n.enrichmentProgress.enriched/n.enrichmentProgress.total*100):0})),Z.createElement(qr,null,Z.createElement("span",null,"AI descriptions: generating\u2026",n.enrichmentProgress.currentName&&Z.createElement(Z.Fragment,null," ",n.enrichmentProgress.currentName)),Z.createElement("span",null,n.enrichmentProgress.enriched," of"," ",n.enrichmentProgress.total," component sets"))),n.enrichmentProgress&&n.enrichmentProgress.status==="complete"&&Z.createElement(Z.Fragment,null,Z.createElement(qr,null,Z.createElement("span",null,"AI descriptions: ",n.enrichmentProgress.enriched," of"," ",n.enrichmentProgress.total," component sets \u2713"))),n.enrichmentProgress&&n.enrichmentProgress.status==="in-progress"&&t.showCosts&&n.enrichmentProgress.costUsd!=null&&n.enrichmentProgress.costUsd>0&&Z.createElement("div",{style:{marginTop:"6px"}},Z.createElement(Ec,{inputTokens:n.enrichmentProgress.inputTokens||0,outputTokens:n.enrichmentProgress.outputTokens||0,costUsd:n.enrichmentProgress.costUsd,compact:!0})))};import kt,{useState as rs}from"react";import{styled as Yr}from"storybook/theming";Ce();_e();ct();var Ph=Yr.div({padding:"12px 16px"}),c5=Yr.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),y1=Yr.label(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),b1=Yr.button(({theme:e})=>({background:"none",border:"none",fontSize:"12px",color:le,cursor:"pointer",padding:0,"&:hover":{textDecoration:"underline"}})),u5=Yr.div({display:"flex",gap:"8px",alignItems:"center"}),p5=Yr.input(({theme:e})=>({flex:1,padding:"8px 12px",fontSize:"13px",border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",backgroundColor:e.input.background,color:e.input.color,outline:"none",fontFamily:"monospace","&:focus":{borderColor:le,boxShadow:`0 0 0 1px ${le}`},"&::placeholder":{color:e.color.mediumlight,fontFamily:"inherit"}})),S1=Yr.span(({variant:e})=>({fontSize:"12px",color:e==="success"?"#16a34a":e==="error"?"#dc2626":"#6b7280",marginTop:"6px",display:"block",lineHeight:1.4})),d5=Yr.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,marginTop:"8px",lineHeight:1.5,"& a":{color:le,textDecoration:"none","&:hover":{textDecoration:"underline"}},"& ol":{margin:"4px 0 0 16px",padding:0},"& li":{marginBottom:"2px"}})),g5=Yr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"8px 12px",borderRadius:"6px",backgroundColor:"#16a34a10",border:"1px solid #16a34a30",fontSize:"12px",color:e.color.defaultText})),f5=Yr.button(({theme:e})=>({background:"none",border:"none",fontSize:"11px",color:"#dc2626",cursor:"pointer",marginLeft:"auto","&:hover":{textDecoration:"underline"}})),w1=({onConnected:e})=>{let{sessionToken:t}=ve(),[n,r]=rs(!1),[o,i]=rs(""),[s,a]=rs(!1),[u,c]=rs(null),[l,d]=rs(null),[g,p]=rs(!1),h=async()=>{if(!(!o.trim()||!t)){a(!0),c(null);try{let S=K(),T=await se(`${S}/api/figma/pat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({token:o.trim()})}),I=await T.json();if(!T.ok){c({type:"error",message:I.error||"Failed to save token"});return}d(I.figmaUser?.handle||I.figmaUser?.email||"Connected"),c({type:"success",message:`Connected as ${I.figmaUser?.handle||"Figma user"}`}),i(""),e?.()}catch{c({type:"error",message:"Failed to connect. Check your token and try again."})}finally{a(!1)}}};return l?kt.createElement(Ph,null,kt.createElement(y1,null,"Figma Personal Access Token"),kt.createElement(g5,null,kt.createElement("span",null,"\u2713 Connected as ",kt.createElement("strong",null,l)),kt.createElement(f5,{onClick:()=>{d(null),c(null)}},"Change token"))):n?kt.createElement(Ph,null,kt.createElement(c5,null,kt.createElement(y1,null,"Figma Personal Access Token"),kt.createElement(b1,{onClick:()=>p(!g)},g?"Hide instructions":"How to generate")),g&&kt.createElement(d5,null,kt.createElement("ol",null,kt.createElement("li",null,"Open ",kt.createElement("a",{href:"https://www.figma.com/settings",target:"_blank",rel:"noopener noreferrer"},"Figma Settings")),kt.createElement("li",null,"Click the ",kt.createElement("strong",null,"Security")," tab"),kt.createElement("li",null,"Scroll to ",kt.createElement("strong",null,"Personal access tokens")),kt.createElement("li",null,"Click ",kt.createElement("strong",null,"Generate new token")),kt.createElement("li",null,"Enable ",kt.createElement("strong",null,"File content: Read only")," under Scopes"),kt.createElement("li",null,"Copy the token and paste it below"))),kt.createElement(u5,null,kt.createElement(p5,{type:"password",value:o,onChange:S=>i(S.target.value),placeholder:"figd_...",onKeyDown:S=>{S.key==="Enter"&&o.trim()&&h()}}),kt.createElement(sn,{onClick:h,disabled:!o.trim()||s},s?"Verifying...":"Save & Verify")),u&&kt.createElement(S1,{variant:u.type},u.message),kt.createElement(S1,{variant:"info"},"Read-only access. Your token is stored securely and never shared.")):kt.createElement(Ph,null,kt.createElement(b1,{onClick:()=>r(!0)},"Or use a Personal Access Token \u2192"))};Ce();_e();ct();var h5=xt.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},xt.createElement("path",{d:"M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z",fill:"#1ABCFE"}),xt.createElement("path",{d:"M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z",fill:"#0ACF83"}),xt.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),xt.createElement("path",{d:"M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z",fill:"#F24E1E"}),xt.createElement("path",{d:"M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z",fill:"#A259FF"})),Lh=Rr.div(({theme:e})=>({border:`1px solid ${e.appBorderColor}`,borderRadius:"8px",overflow:"hidden",marginBottom:"16px",backgroundColor:e.background.content})),x5=Rr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"10px 16px",backgroundColor:e.background.hoverable,borderBottom:`1px solid ${e.appBorderColor}`})),y5=Rr.div({width:"16px",height:"16px",display:"flex",alignItems:"center","& svg":{width:"14px",height:"14px"}}),b5=Rr.span(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText,flex:1})),Mh=Rr.div({"& > *":{border:"none",borderRadius:0,marginBottom:0,borderBottom:"1px solid rgba(0,0,0,0.06)","&:last-child":{borderBottom:"none"}}}),S5=Rr.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.base==="dark"?"rgba(0, 204, 102, 0.2)":"rgba(0, 204, 102, 0.1)",border:`1px solid ${e.color.positive}`,borderRadius:"8px",margin:"12px 16px",display:"flex",alignItems:"center",justifyContent:"space-between"})),w5=Rr.div({display:"flex",alignItems:"center",gap:"8px"}),v5=Rr(Mn)(({theme:e})=>({backgroundColor:`${e.base==="dark"?"rgba(197, 48, 48, 0.15)":"rgba(254, 178, 178, 0.3)"} !important`,color:`${e.color.negative} !important`,border:`1px solid ${e.color.negative} !important`,padding:"6px 12px !important",fontSize:"12px !important"})),k5=Rr.div({padding:"20px 16px",display:"flex",flexDirection:"column",gap:"12px"}),Hoe=Rr.button({display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",padding:"8px 16px",backgroundColor:"#A259FF",color:"#fff",border:"none",borderRadius:"6px",fontSize:"13px",fontWeight:600,cursor:"pointer","&:hover":{backgroundColor:"#8a3de8"}}),C5=Rr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:e.color.mediumdark,"&::before, &::after":{content:'""',flex:1,height:"1px",backgroundColor:e.appBorderColor}})),k1=({hideHeader:e=!1})=>{let{sessionToken:t}=ve(),[n,r]=ba(!1),[o,i]=ba(0),[s,a]=ba(()=>{try{let S=sessionStorage.getItem("uicopilot_figma_connection");if(S){let{connected:T,ts:I}=JSON.parse(S);if(Date.now()-I<300*1e3)return T}}catch{}return null}),[u,c]=ba(!1),[l,d]=ba(!1);m5(()=>{if(!t)return;let S=K();se(`${S}/api/figma/connection-status`,{headers:{Authorization:`Bearer ${t}`}}).then(T=>T.json()).then(T=>{let I=!!T.connected;c(!!T.expired),a(I);try{sessionStorage.setItem("uicopilot_figma_connection",JSON.stringify({connected:I,ts:Date.now()}))}catch{}}).catch(()=>a(!1))},[t]);let g=v1(()=>{let S=K(),T=`${S}/api/auth/figma/login?addon=true`;window.open(T,"figma-oauth","width=600,height=700,left=200,top=100");let I=setInterval(async()=>{try{(await(await se(`${S}/api/figma/connection-status`,{headers:t?{Authorization:`Bearer ${t}`}:{}})).json()).connected&&(clearInterval(I),a(!0))}catch{}},2e3);setTimeout(()=>clearInterval(I),300*1e3)},[t]),p=v1(async()=>{try{r(!0);let S=K(),T=await se(`${S}/api/figma/disconnect`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(T.ok||T.status===404){a(!1);try{sessionStorage.removeItem("uicopilot_figma_connection")}catch{}}}catch{}finally{r(!1)}},[t]),h=e?null:xt.createElement(x5,null,xt.createElement(y5,null,h5),xt.createElement(b5,null,"Figma Integration"));return s===null?xt.createElement(Lh,null,h,xt.createElement(Mh,null,xt.createElement("div",{style:{padding:"16px",fontSize:"13px",color:"#9ca3af"}},"Checking Figma connection..."))):s===!1?xt.createElement(Lh,null,h,xt.createElement(Mh,null,xt.createElement(k5,null,u&&xt.createElement("div",{style:{padding:"10px 12px",backgroundColor:"rgba(245, 158, 11, 0.1)",border:"1px solid rgba(245, 158, 11, 0.4)",borderRadius:"6px",fontSize:"12px",color:"#92400e"}},"\u26A0\uFE0F Your Figma access has expired. Please reconnect."),xt.createElement("div",{style:{padding:"8px 10px",backgroundColor:"rgba(100, 116, 139, 0.1)",border:"1px solid rgba(100, 116, 139, 0.3)",borderRadius:"6px",fontSize:"11px",lineHeight:1.4,color:"#64748b"}},"Requires a Figma ",xt.createElement("strong",null,"Dev or Full seat"),". Free/Viewer seats can't grant design-read access."),xt.createElement(sn,{onClick:g,style:{width:"100%"}},u?"Reconnect Figma":"Connect with Figma"),xt.createElement(C5,null,"or"),xt.createElement(w1,{onConnected:()=>a(!0)})))):xt.createElement(Lh,null,h,xt.createElement(S5,null,xt.createElement(w5,null,xt.createElement("span",{style:{fontSize:"18px"}},"\u2713"),xt.createElement("span",{style:{fontSize:"13px",fontWeight:600,color:"#00cc66"}},"Connected to Figma")),xt.createElement(v5,{onClick:()=>d(!0),disabled:n},n?"Disconnecting...":"Disconnect")),xt.createElement(Vr,{isOpen:l,title:"Disconnect Figma",message:"Your mappings, cache, and review history will be preserved. You will need to re-authenticate to make new Figma API calls.",confirmLabel:"Disconnect",variant:"danger",onConfirm:()=>{d(!1),p()},onCancel:()=>d(!1)}),xt.createElement(Mh,null,xt.createElement(Vk,{onFigmaFileChanged:()=>i(S=>S+1)}),xt.createElement(g1,{refreshKey:o}),xt.createElement(x1,null)))};Ce();cn();var F5=yr.div({position:"fixed",top:0,left:0,right:0,bottom:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:1e3,display:"flex",justifyContent:"center",alignItems:"flex-start",paddingTop:"32px"}),E5=yr.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"14px",boxShadow:"0 16px 48px rgba(0, 0, 0, 0.22)",width:"520px",maxWidth:"94%",maxHeight:"calc(100vh - 64px)",overflow:"auto",position:"relative"})),A5=yr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px 12px",position:"sticky",top:0,backgroundColor:e.background.content,borderRadius:"14px 14px 0 0",zIndex:1})),P5=yr.h2(({theme:e})=>({margin:0,fontSize:"16px",fontWeight:600,color:e.color.defaultText})),L5=yr(Bn)({fontSize:"18px",padding:"2px 8px",lineHeight:1,background:"transparent",border:"none"}),M5=yr.div({display:"flex",flexDirection:"column",gap:"16px",padding:"0 20px 20px"}),C1=yr.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:"14px",padding:"16px",borderRadius:"12px",border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content})),T1=yr.div({display:"flex",alignItems:"center",gap:"10px"}),I1=yr.h3(({theme:e})=>({margin:0,fontSize:"14px",fontWeight:600,color:e.color.defaultText,flex:1})),B5=yr.div({width:"28px",height:"28px",borderRadius:"7px",backgroundColor:le,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"11px",fontWeight:700,letterSpacing:"0.3px",flexShrink:0}),D5=yr.div({width:"22px",height:"22px",flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center","& svg":{width:"22px",height:"22px"}}),F1=yr.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:"12px",fontSize:"12px","& > div, & > section":{padding:0},'[class*="AuthPanelContainer"], [class*="SectionContainer"]':{padding:0},"h3, h4":{fontSize:"12px",margin:"0 0 6px 0"},label:{fontSize:"12px"},"input, select":{fontSize:"12px",padding:"6px 10px",height:"auto"},button:{fontSize:"11px"},p:{fontSize:"11px",margin:"2px 0"}})),E1=({onClose:e})=>{let{isConnected:t}=ve(),{selectedProjectId:n}=Xe(),r=I5(t);return T5(()=>{!r.current&&t&&n&&e(),r.current=t},[t,n,e]),Rt.createElement(F5,{onClick:e},Rt.createElement(E5,{onClick:o=>o.stopPropagation()},Rt.createElement(A5,null,Rt.createElement(P5,null,"Settings"),Rt.createElement(L5,{onClick:e,title:"Close settings"},"\xD7")),Rt.createElement(M5,null,Rt.createElement(C1,null,Rt.createElement(T1,null,Rt.createElement(B5,null,"UI"),Rt.createElement(I1,null,At.NAME)),Rt.createElement(F1,null,Rt.createElement(_k,{onConnect:e}),t&&Rt.createElement(Hk,null))),t&&n&&Rt.createElement(C1,null,Rt.createElement(T1,null,Rt.createElement(D5,null,Rt.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Rt.createElement("path",{d:"M19 28.5C19 23.2533 23.2533 19 28.5 19C33.7467 19 38 23.2533 38 28.5C38 33.7467 33.7467 38 28.5 38C23.2533 38 19 33.7467 19 28.5Z",fill:"#1ABCFE"}),Rt.createElement("path",{d:"M0 47.5C0 42.2533 4.25329 38 9.5 38H19V47.5C19 52.7467 14.7467 57 9.5 57C4.25329 57 0 52.7467 0 47.5Z",fill:"#0ACF83"}),Rt.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),Rt.createElement("path",{d:"M0 9.5C0 14.7467 4.25329 19 9.5 19H19V0H9.5C4.25329 0 0 4.25329 0 9.5Z",fill:"#F24E1E"}),Rt.createElement("path",{d:"M0 28.5C0 33.7467 4.25329 38 9.5 38H19V19H9.5C4.25329 19 0 23.2533 0 28.5Z",fill:"#A259FF"}))),Rt.createElement(I1,null,"Figma Integration")),Rt.createElement(F1,null,Rt.createElement(k1,{hideHeader:!0}))))))};import St,{useEffect as a3,useMemo as l3}from"react";import{styled as zn,keyframes as c3}from"storybook/theming";Ce();cn();cn();function Bh(e){let t=e.complianceScore??0;if(!e.issues||e.issues.length===0)return{score:t,band:e.issues?"A":void 0};let n=Ql(e.issues.map(r=>({...r,dismissed:r.dismissed??!1})));return{score:Math.min(t,ao[n]),band:n}}Ce();import Jt,{useState as R5}from"react";import{styled as Xn}from"storybook/theming";var mo=[{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",provider:"anthropic",description:"Latest Claude Sonnet \u2014 best balance of speed and quality"},{id:"claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",provider:"anthropic",description:"Current default \u2014 proven for design comparison"},{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4",provider:"anthropic",description:"Previous generation Sonnet"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet",provider:"anthropic",description:"Best balance of speed and quality"},{id:"claude-haiku-4-5-20251001",name:"Claude Haiku 4.5",provider:"anthropic",description:"Fastest, most affordable"},{id:"claude-3-opus-20240229",name:"Claude 3 Opus",provider:"anthropic",description:"Most capable Claude 3 model"},{id:"gpt-5.2",name:"GPT-5.2 Thinking",provider:"openai",description:"47% cheaper, reasoning"},{id:"gpt-5.2-chat-latest",name:"GPT-5.2 Instant",provider:"openai",description:"86% cheaper (default)"},{id:"gpt-4o",name:"GPT-4o",provider:"openai",description:"GPT-4 multimodal flagship"},{id:"gpt-4o-mini",name:"GPT-4o Mini",provider:"openai",description:"GPT-4 affordable model"},{id:"o1-preview",name:"o1 Preview",provider:"openai",description:"Reasoning model (slower, advanced)"},{id:"o1-mini",name:"o1 Mini",provider:"openai",description:"Faster reasoning model"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash",provider:"google",description:"Fast & cheap, great vision"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro",provider:"google",description:"Best Gemini quality"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash",provider:"google",description:"Previous gen, very fast"}];var z5=Xn.div({display:"flex",alignItems:"center",gap:"8px",width:"100%"}),N5=Xn.div({display:"inline-flex",flexWrap:"nowrap",gap:"4px",alignItems:"center"}),O5=Xn.div(({theme:e,disabled:t,provider:n})=>{let r={anthropic:{background:"#D4A574",text:"#ffffff"},openai:{background:e.color.positive||"#10b981",text:"#ffffff"},google:{background:"#4285F4",text:"#ffffff"}},o=n?r[n]:r.anthropic;return{display:"inline-flex",alignItems:"center",gap:"4px",padding:"4px 8px",backgroundColor:o.background,color:o.text,fontSize:"11px",fontWeight:500,borderRadius:"12px",opacity:t?.6:1,cursor:t?"not-allowed":"default",transition:"opacity 0.15s"}}),_5=Xn.button(({theme:e,disabled:t})=>({background:"none",border:"none",color:e.color.inverseText,fontSize:"12px",cursor:t?"not-allowed":"pointer",padding:"0 2px",lineHeight:1,opacity:t?.5:.8,transition:"opacity 0.15s","&:hover":{opacity:t?.5:1}})),$5=Xn.div({position:"relative",display:"inline-block"}),U5=Xn.button(({disabled:e,isOpen:t,theme:n})=>({padding:`${n.layoutMargin*.8}px 32px ${n.layoutMargin*.8}px ${n.layoutMargin}px`,fontSize:n.typography.size.s2,fontFamily:n.typography.fonts.base,fontWeight:500,color:n.color.defaultText,backgroundColor:n.input.background,border:`1px solid ${t?n.color.secondary:n.appBorderColor}`,borderRadius:n.appBorderRadius,cursor:e?"not-allowed":"pointer",opacity:e?.6:1,whiteSpace:"nowrap",display:"flex",gap:`${n.layoutMargin*.8}px`,alignItems:"center",justifyContent:"space-between",minWidth:"200px",transition:"border-color 0.15s, box-shadow 0.15s",backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 10px center",backgroundSize:"12px","&:hover":{borderColor:e?n.appBorderColor:n.color.mediumdark}})),j5=Xn.div(({theme:e})=>({position:"absolute",top:"100%",left:0,right:0,marginTop:"4px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:e.base==="dark"?"0 4px 12px rgba(0, 0, 0, 0.3)":"0 4px 12px rgba(0, 0, 0, 0.1)",zIndex:1e3,maxHeight:"280px",overflowY:"auto"})),Dh=Xn.div(({theme:e})=>({borderBottom:`1px solid ${e.appBorderColor}`,"&:last-child":{borderBottom:"none"}})),Rh=Xn.div(({theme:e})=>({padding:"8px 12px",fontSize:"10px",fontWeight:600,color:e.textMutedColor,textTransform:"uppercase",letterSpacing:"0.5px",backgroundColor:e.background.app})),H5=Xn.div(({theme:e,disabled:t})=>({padding:"8px 12px",fontSize:"12px",cursor:t?"not-allowed":"pointer",opacity:t?.5:1,display:"flex",alignItems:"center",gap:"8px",transition:"background-color 0.15s",color:e.color.defaultText,"&:hover":{backgroundColor:t?"transparent":e.background.hoverable}})),W5=Xn.input({cursor:"pointer",flexShrink:0,"&:disabled":{cursor:"not-allowed"}}),V5=Xn.div({flex:1,minWidth:0}),G5=Xn.div({fontSize:"12px",fontWeight:500,marginBottom:"2px"}),q5=Xn.div(({theme:e})=>({fontSize:"10px",color:e.textMutedColor,lineHeight:"1.2"})),Y5=5,A1=()=>{let{selectedModels:e,toggleModel:t,isReviewing:n}=ue(),[r,o]=R5(!1),i=mo.filter(p=>p.provider==="anthropic"&&!e.includes(p.id)),s=mo.filter(p=>p.provider==="openai"&&!e.includes(p.id)),a=mo.filter(p=>p.provider==="google"&&!e.includes(p.id)),u=mo.filter(p=>e.includes(p.id)),c=e.length<Y5,l=(p,h)=>{h.stopPropagation(),e.length>1&&!n&&t(p)},d=p=>{let h=e.includes(p);h&&e.length===1||!h&&!c||n||(t(p),o(!1))},g=p=>{let h=e.includes(p.id),S=h&&e.length===1,T=n||S||!h&&!c;return Jt.createElement(H5,{key:p.id,disabled:T,onClick:()=>d(p.id)},Jt.createElement(W5,{type:"checkbox",checked:h,disabled:T,onChange:()=>{},onClick:I=>I.stopPropagation()}),Jt.createElement(V5,null,Jt.createElement(G5,null,p.name),p.description&&Jt.createElement(q5,null,p.description)))};return Jt.createElement(z5,null,Jt.createElement($5,null,Jt.createElement(U5,{disabled:n,isOpen:r,onClick:()=>o(!r)},Jt.createElement("span",null,"Select model"),Jt.createElement("span",null,r?"\u25B2":"\u25BC")),r&&Jt.createElement(j5,null,Jt.createElement(Dh,null,Jt.createElement(Rh,null,"Anthropic"),i.map(g)),Jt.createElement(Dh,null,Jt.createElement(Rh,null,"OpenAI"),s.map(g)),Jt.createElement(Dh,null,Jt.createElement(Rh,null,"Google"),a.map(g)))),Jt.createElement(N5,null,u.map(p=>Jt.createElement(O5,{key:p.id,disabled:n,provider:p.provider},p.name,e.length>1&&Jt.createElement(_5,{disabled:n,onClick:h=>l(p.id,h),title:"Remove model"},"\xD7")))))};cn();import Re,{useState as K5,useEffect as X5}from"react";import{styled as on,keyframes as os}from"storybook/theming";Ce();var Q5=os`
|
|
45
45
|
0%, 100% {
|
|
46
46
|
opacity: 1;
|
|
47
47
|
transform: scale(1);
|
|
@@ -78,9 +78,9 @@ ${it}`).join(`
|
|
|
78
78
|
`;var Sie=on.div({display:"flex",alignItems:"center",gap:"6px",flexWrap:"wrap"}),zh=on.div({display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap"}),wie=on.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*.6}px`,padding:`${e.layoutMargin*.4}px ${e.layoutMargin}px`,borderRadius:e.appBorderRadius,backgroundColor:e.background.hoverable||"#f3f4f6",border:`1px solid ${e.appBorderColor}`,fontSize:e.typography.size.s1,fontWeight:e.typography.weight.regular,color:e.textMutedColor,animation:`${M1} 0.3s ease-out`})),t3=os`
|
|
79
79
|
from { transform: rotate(0deg); }
|
|
80
80
|
to { transform: rotate(360deg); }
|
|
81
|
-
`,vie=on.div(({theme:e})=>({width:"12px",height:"12px",borderRadius:"50%",border:"2px solid transparent",borderTopColor:e.textMutedColor,animation:`${t3} 0.8s linear infinite`,flexShrink:0})),P1=on.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.layoutMargin*.5}px`,padding:`${e.layoutMargin*.3}px ${e.layoutMargin*.9}px`,borderRadius:e.appBorderRadius*2,backgroundColor:e.base==="dark"?"rgba(220, 38, 38, 0.18)":"#fee2e2",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.negative||"#dc2626",whiteSpace:"nowrap"})),n3=on.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.layoutMargin*.5}px`,padding:`${e.layoutMargin*.3}px ${e.layoutMargin*.9}px`,borderRadius:e.appBorderRadius*2,backgroundColor:e.base==="dark"?"rgba(22, 163, 74, 0.18)":"#dcfce7",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.positive||"#16a34a",whiteSpace:"nowrap",position:"relative",overflow:"visible"})),kie=on.span(({delay:e,left:t,color:n,size:r})=>({position:"absolute",top:"-10px",left:`${t}%`,width:`${r}px`,height:`${r}px`,backgroundColor:n,borderRadius:r>6?"50%":"2px",animation:`${e3} 2.5s ease-out ${e}s forwards`,pointerEvents:"none",zIndex:1e3}));var Sa=on.span(({theme:e})=>({color:e.color.mediumlight,fontSize:"14px",fontWeight:300})),wa=on.span(({theme:e,color:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"12px",fontWeight:500,color:t??e.color.mediumdark,whiteSpace:"nowrap"})),L1=on.span(({theme:e,color:t})=>({fontSize:"12px",color:t??e.color.mediumdark})),va=on.span(({color:e})=>({fontWeight:700,color:e})),r3=on.div(({tint:e,theme:t})=>({display:"inline-flex",alignItems:"center",gap:`${t.layoutMargin*.6}px`,padding:`${t.layoutMargin*.3}px ${t.layoutMargin}px`,borderRadius:t.appBorderRadius*2,backgroundColor:`${e}1a`,border:`1px solid ${e}33`,"& .score-label":{fontSize:t.typography.size.s1,color:t.textMutedColor},"& .score-value":{fontFamily:t.typography.fonts.mono,fontSize:t.typography.size.s2,fontWeight:t.typography.weight.bold,color:e,lineHeight:1},"& .score-dot":{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:e}})),Cie=on.span(({theme:e})=>({color:e.color.mediumlight,fontSize:"12px"})),Tie=on.span(({color:e=le})=>({display:"inline-block",fontSize:"12px",color:e,animation:`${Q5} 1.2s ease-in-out infinite`,marginRight:"4px"})),Iie=on.span(({theme:e,variant:t="muted"})=>({fontSize:"12px",fontWeight:700,color:(()=>{switch(t){case"issues":return le;case"score-high":return"#16a34a";case"score-medium":return"#ca8a04";case"score-low":return"#dc2626";case"cost":return"#7c3aed";case"tokens":return e.color.mediumdark;case"analyzing":return le;case"verifying":return"#7c3aed";default:return e.color.mediumdark}})(),whiteSpace:"nowrap",...t==="analyzing"||t==="verifying"?{animation:`${Z5} 1.5s ease-in-out infinite`}:{}})),Fie=on.span(({theme:e})=>({fontSize:"12px",fontWeight:400,color:e.color.mediumdark})),Eie=on.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark,fontWeight:400})),o3=on.span({display:"inline-flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",animation:`${J5} 1.2s linear infinite`,flexShrink:0}),i3=({color:e=le})=>Re.createElement(o3,null,Re.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none"},Array.from({length:8}).map((t,n)=>{let o=n*360/8*Math.PI/180,i=12+Math.cos(o)*4,s=12+Math.sin(o)*4,a=12+Math.cos(o)*10,u=12+Math.sin(o)*10;return Re.createElement("line",{key:n,x1:i,y1:s,x2:a,y2:u,stroke:e,strokeWidth:2,strokeLinecap:"round",opacity:.3+n/8*.7})}))),Aie=on.span(({color:e="#6b7280"})=>({fontSize:"12px",fontWeight:500,fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',color:e,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",animation:`${M1} 0.3s ease-out`}));function s3(e){let[t,n]=K5(0);return X5(()=>{if(!e){n(0);return}let r=setInterval(()=>{n(o=>o+1)},1e3);return()=>clearInterval(r)},[e]),t}var B1=({isReviewing:e,isValidating:t,streamingStatus:n,issueCount:r=0,score:o,band:i,visualSimilarity:s,costUsd:a,inputTokens:u,outputTokens:c,showTimer:l=!0,cacheCreationTokens:d,cacheReadTokens:g,durationSeconds:p})=>{let h=s3(e||t),{featureFlags:S}=ue(),T=S.showCosts,I=3.65,v=z=>z<.01?`$${z.toFixed(4)}`:z<.1?`$${z.toFixed(3)}`:`$${z.toFixed(2)}`,D=z=>{let m=z*I;return m<.01?`\u20AA${m.toFixed(4)}`:m<.1?`\u20AA${m.toFixed(3)}`:`\u20AA${m.toFixed(2)}`},N=z=>z>=1e3?`${(z/1e3).toFixed(1)}K`:z.toString(),j=z=>z>=80?"score-high":z>=50?"score-medium":"score-low",B=z=>z>=80?"high":z>=50?"medium":"low";if(e)return Re.createElement(zh,null,Re.createElement("span",{style:{fontSize:"12px",color:"#9ca3af"}},h,"s \xB7 Esc to stop"));if(t)return Re.createElement(zh,null,Re.createElement(P1,null,Re.createElement("span",null,"\u2298"),r," issue",r!==1?"s":""),Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement(i3,{color:"#7c3aed"}),Re.createElement(va,{color:"#7c3aed"},"Verifying...")),l&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement("span",{style:{color:"#6b7280"}},h,"s"))));if(r>0||o!==void 0){let z=(u||0)+(c||0),m=(g||0)>0,b=m&&u?Math.round(g/u*100):0,k=i?ao[i]:100,A=Math.min(Math.max(o??0,s??0),k),f=E=>E>=80?"#16a34a":E>=50?"#ca8a04":"#dc2626",C=E=>E>=100?"\u25CF":E>=50?"\u25D0":"\u25CB";return Re.createElement(zh,null,r===0&&(o===void 0||o>=100)?Re.createElement(n3,null,Re.createElement("span",null,"\u2713"),"Perfect!"):Re.createElement(P1,null,Re.createElement("span",null,"\u2298"),r," issue",r!==1?"s":""),Re.createElement(r3,{tint:f(A),title:i==="D"?`Band D \u2014 has critical issues. Fix criticals to score above ${ao.D}.`:i==="C"?`Band C \u2014 has major issues. Fix majors to score above ${ao.C}.`:i==="B"?"Band B \u2014 minor issues only.":i==="A"?"Band A \u2014 no open issues.":`Compliance score: ${A}%`},Re.createElement("span",{className:"score-dot"}),Re.createElement("span",{className:"score-label"},"Score"),Re.createElement("span",{className:"score-value"},A,i?` \xB7 ${i}`:"")),T&&a!==void 0&&a>0&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement(va,{color:"#16a34a"},v(a)),Re.createElement("span",{style:{color:"#6b7280"}},"/"),Re.createElement(va,{color:"#16a34a"},D(a)))),T&&z>0&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,{title:`Input: ${u?.toLocaleString()||0} \xB7 Output: ${c?.toLocaleString()||0}${m?` \xB7 Cached: ${g?.toLocaleString()}`:""}`},Re.createElement(L1,{color:"#7c3aed"},"#"),Re.createElement(va,{color:"#7c3aed"},N(z)),Re.createElement("span",{style:{color:"#6b7280"}},"tokens"),m&&Re.createElement("span",{style:{color:"#16a34a",marginLeft:"4px"}},"\u26A1",b,"%"))),p!==void 0&&p>0&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement(L1,{color:"#6b7280"},"\u23F1"),Re.createElement(va,{color:"#6b7280"},p,"s"))))}return null};var u3=zn.div({display:"flex",flexDirection:"column",gap:"12px",marginBottom:"16px"}),jie=zn.div({display:"flex",gap:"8px",alignItems:"center"}),p3=c3({from:{transform:"rotate(0deg)"},to:{transform:"rotate(360deg)"}}),d3=zn.span({display:"inline-block",width:"16px",height:"16px",borderRadius:"50%",border:"2px solid rgba(255, 255, 255, 0.35)",borderTopColor:"#ffffff",animation:`${p3} 0.8s linear infinite`,marginRight:"8px",verticalAlign:"middle"}),g3=zn.span({display:"inline-flex",alignItems:"center",marginRight:"8px","& svg":{width:"16px",height:"16px"}}),f3=zn.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin}px`,padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.2}px`,borderRadius:e.appBorderRadius*2,border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content,boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)",flexWrap:"wrap"})),m3=zn.button(({theme:e,variant:t="orange",disabled:n})=>{let r={green:n?e.textMutedColor:e.color.positive||"#10b981",purple:n?e.textMutedColor:"#7c3aed",yellow:n?e.textMutedColor:"#c4b5fd",orange:n?e.textMutedColor:nl},o=t==="purple"||t==="yellow"?"124, 58, 237":"255, 107, 53";return{width:"auto",backgroundColor:r[t],color:e.color.inverseText,border:"none",padding:`${e.layoutMargin*.7}px ${e.layoutMargin*1.4}px`,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,borderRadius:e.appBorderRadius,cursor:n?"not-allowed":"pointer",opacity:n?.6:1,whiteSpace:"nowrap",transition:"all 0.2s",boxShadow:n?"none":`0 2px 6px rgba(${o}, 0.3)`,flexShrink:0,"&:hover":{opacity:n?.6:.9,transform:n?"none":"translateY(-1px)",boxShadow:n?"none":`0 4px 10px rgba(${o}, 0.4)`}}}),h3=zn.div(({theme:e})=>({marginTop:"8px",fontSize:"12px",color:e.color.warning||"#f59e0b",display:"flex",alignItems:"center",gap:"6px"})),x3=zn.div({marginLeft:"auto",display:"flex",flexDirection:"row",alignItems:"center",gap:"8px",minWidth:0}),y3=zn(vn)({width:"auto",minWidth:"180px",maxWidth:"260px"}),D1=zn.span(({theme:e,variant:t})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,padding:"3px 8px",borderRadius:"10px",whiteSpace:"nowrap",color:t==="latest"?e.color.positive:e.color.mediumdark,backgroundColor:t==="latest"?`${e.color.positive}1a`:e.background.hoverable})),b3=zn.div({display:"flex",gap:"16px",alignItems:"center",marginTop:"4px"}),R1=zn.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:e.color.defaultText,cursor:"pointer",userSelect:"none"})),z1=zn.div(({theme:e,checked:t})=>({width:"32px",height:"18px",borderRadius:"9px",backgroundColor:t?nl:e.appBorderColor||"#d1d5db",position:"relative",transition:"background-color 0.2s ease",flexShrink:0})),N1=zn.div(({checked:e})=>({width:"14px",height:"14px",borderRadius:"50%",backgroundColor:"#fff",position:"absolute",top:"2px",left:e?"16px":"2px",transition:"left 0.2s ease",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)"})),O1=zn.input({position:"absolute",opacity:0,width:0,height:0}),Nh=()=>{let{sessionToken:e}=Js(),{usageData:t}=ve(),{selectedProjectId:n}=uo(),{currentMapping:r,hasMapping:o}=ai(),{loadingMapping:i,currentStoryId:s}=Ze(),{startReview:a,cancelReview:u,isReviewing:c}=Bm(),{isLoadingScreenshots:l}=ii(),{storybookImageUrl:d,figmaImageUrl:g,currentReviewId:p,reviewHistory:h,setReviewDetailTab:S,setReviewResults:T,setFigmaImageUrl:I,setStorybookImageUrl:v,setFullPrompt:D,setFullResponse:N,includeTextComparison:j,setIncludeTextComparison:B,usePromptCache:z,setUsePromptCache:m,isValidating:b,validationUsage:k,isGenerating:A,isApplying:f,streamingStatus:C,featureFlags:E,userRole:x,roleOverride:F,isReviewing:P,isNewReviewMode:M}=ue(),O=t?.reviewCredits??t?.creditBalance??0,w=h.find(ie=>ie.id===p),W=(w?.issues||[]).filter(ie=>!ie.dismissed).length,L=w?Bh(w):null,oe=L?.score,X=L?.band,ne=w?.visualSimilarity,xe=(w?.costUsd||0)+(k?.costUsd||0),Ee=(w?.inputTokens||0)+(k?.inputTokens||0),nt=(w?.outputTokens||0)+(k?.outputTokens||0),Pe=l3(()=>{let ie=s?h.filter(G=>G.storyId===s):h,J=ie.filter(G=>!G.parentReviewId).sort((G,q)=>new Date(q.createdAt).getTime()-new Date(G.createdAt).getTime()),me=ie.filter(G=>G.parentReviewId),$=[];for(let G of J){$.push(G);let q=me.filter(V=>V.parentReviewId===G.id).sort((V,he)=>(V.iterationNumber||0)-(he.iterationNumber||0));$.push(...q)}let _=me.filter(G=>!J.some(q=>q.id===G.parentReviewId));return $.push(..._),$},[h,s]);a3(()=>{if(!c)return;let ie=J=>{J.key==="Escape"&&(J.preventDefault(),u())};return window.addEventListener("keydown",ie),()=>window.removeEventListener("keydown",ie)},[c,u]);let ge=o&&r?.figmaNodeId,dt=A||f,fe=O>0,ce=!!(e&&n&&!c&&!l&&!dt&&s&&d&&ge&&g&&fe),pe=!!p&&!M,at=async(ie=!1)=>{if(!s){console.error("[ReviewActions] No story selected");return}try{S("chat"),await a({isIteration:ie,parentReviewId:ie?p:void 0})}catch(J){console.error("[ReviewActions] Review error:",J)}},It=()=>at(!1),gt=ie=>{let J=ie.target.value;if(J){let me=h.find($=>$.id===J);me&&(T({id:me.id,componentId:me.componentId,storyId:me.storyId,modelId:me.modelId,complianceScore:me.complianceScore,issuesCount:me.issuesCount,issues:me.issues,createdAt:new Date(me.createdAt),visualSimilarity:me.visualSimilarity,timestamp:new Date(me.createdAt).toISOString(),costUsd:me.costUsd,inputTokens:me.inputTokens,outputTokens:me.outputTokens,cacheCreationTokens:me.cacheCreationTokens,cacheReadTokens:me.cacheReadTokens,reviewDurationMs:me.reviewDurationMs}),me.figmaImageData&&I(me.figmaImageData),me.storybookImageData&&v(me.storybookImageData),(F??x)==="admin"&&(D(me.aiPrompt||""),N(me.aiResponse||"")),S("issues"))}},On=ie=>{let J=new Date(ie),$=new Date().getTime()-J.getTime(),_=Math.floor($/6e4),G=Math.floor($/36e5),q=Math.floor($/864e5);return _<1?"Just now":_<60?`${_}m ago`:G<24?`${G}h ago`:q<7?`${q}d ago`:J.toLocaleDateString()},Zn=ie=>ie?ie.includes("haiku")?"Haiku":ie.includes("sonnet")?"Sonnet":ie.includes("opus")?"Opus":ie.includes("gpt-4o-mini")?"GPT-4o mini":ie.includes("gpt-4o")?"GPT-4o":ie.includes("gpt-4")?"GPT-4":ie.includes("o3")?"o3":ie.includes("o1")?"o1":ie.split("-")[0]||"":"",Ge=ie=>{let J=ie.split("--"),me=J[J.length-1]||ie;return me.charAt(0).toUpperCase()+me.slice(1)},lt=(F??x)==="admin";return St.createElement("div",null,St.createElement(u3,null,E.enableModelSelection&&St.createElement(A1,null),lt&&St.createElement(b3,null,St.createElement(R1,{title:"Compare text content between Figma design and Storybook component"},St.createElement(O1,{type:"checkbox",checked:j,onChange:ie=>B(ie.target.checked)}),St.createElement(z1,{checked:j},St.createElement(N1,{checked:j})),"Compare text"),E.showCosts&&St.createElement(R1,{title:"Cache prompt for 5 min to reduce costs on repeat reviews (dev optimization)"},St.createElement(O1,{type:"checkbox",checked:z,onChange:ie=>m(ie.target.checked)}),St.createElement(z1,{checked:z},St.createElement(N1,{checked:z})),"Cache prompt")),St.createElement(f3,null,St.createElement(m3,{variant:c?"yellow":"purple",disabled:c?!1:!ce||pe,onClick:c?u:It,title:c?"Click to stop review":pe?'Switch to "Current" to run a new review':e?n?s?ge?l?"Loading screenshots...":dt?"Wait for fixes to complete...":d?g?fe?"Review this component implementation":"No credits \u2014 click \u26A1 in the toolbar to get more":"Waiting for Figma design image...":"Waiting for Storybook screenshot...":'Figma mapping required - use "Map to Figma" in the Review tab':"No story selected":"Please select a project first":`Please connect to ${At.NAME} first`},c?St.createElement(St.Fragment,null,St.createElement(d3,null),"Stop"):St.createElement(St.Fragment,null,St.createElement(g3,null,St.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"},St.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),St.createElement("circle",{cx:"12",cy:"12",r:"3"}))),"Review")),P?null:!M&&(b||w)?St.createElement(B1,{isReviewing:!1,isValidating:b,streamingStatus:C,issueCount:W,score:oe,band:X,visualSimilarity:ne,costUsd:xe||w?.costUsd,inputTokens:Ee||w?.inputTokens,outputTokens:nt||w?.outputTokens,cacheCreationTokens:w?.cacheCreationTokens,cacheReadTokens:w?.cacheReadTokens,durationSeconds:w?.reviewDurationMs?Math.round(w.reviewDurationMs/1e3):void 0}):null,Pe.length>0&&St.createElement(x3,null,!M&&p&&(p===Pe[0]?.id?St.createElement(D1,{variant:"latest",title:"You're viewing the most recent review for this story"},"Latest"):St.createElement(D1,{variant:"older",title:"You're viewing an older review \u2014 pick the top entry to see the latest"},"Older review")),St.createElement(y3,{value:M?"":p||"",onChange:gt,title:"Review history"},St.createElement("option",{value:""},"Select a review..."),Pe.map(ie=>{let J=!!ie.parentReviewId,me=J?" \u21B3 ":"\u25CF ",$=J&&ie.iterationNumber?`Iter ${ie.iterationNumber} - `:"",_=ie.issuesCount??ie.issues?.length??0,{score:G,band:q}=Bh(ie),V=ie.complianceScore!=null?G:"--",he=Zn(ie.modelId);return St.createElement("option",{key:ie.id,value:ie.id},me,$,On(ie.createdAt)," - ",_," issues (",V,"%",q?` \xB7 ${q}`:"",")",E.showCosts&&he?` \xB7 ${he}`:"",!s&&ie.storyId?` \xB7 ${Ge(ie.storyId)}`:"")}))))),!ge&&!i&&St.createElement(h3,null,'\u26A0\uFE0F Figma mapping required. Use "Map to Figma" button to link this story to a Figma frame before reviewing.'))};import Vie,{useState as Gie}from"react";import{styled as _1}from"storybook/theming";var Kie=_1.div(({theme:e})=>({display:"flex",borderBottom:`1px solid ${e.appBorderColor}`,marginBottom:"12px",gap:"4px"})),Xie=_1(Co)({padding:"8px 12px",fontSize:"12px"});import Zie,{useState as ese}from"react";import{styled as Oh}from"storybook/theming";Ce();_e();Oe();ct();var ase=Oh.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"12px",backgroundColor:e.background.app,border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",fontSize:"13px"})),lse=Oh($r)({padding:"6px 12px",fontSize:"12px",display:"flex",alignItems:"center",gap:"6px"}),cse=Oh.span(({theme:e})=>({color:e.textMutedColor,fontSize:"12px",flex:1}));import dse from"react";import{styled as S3}from"storybook/theming";var mse=S3.div(({theme:e})=>({border:`2px dashed ${e.appBorderColor}`,borderRadius:"8px",padding:"40px",textAlign:"center",marginBottom:"20px",backgroundColor:e.background.app}));Ce();import yse from"react";import{styled as Kr}from"storybook/theming";var wse=Kr.div(({theme:e})=>({marginBottom:"16px",border:`1px solid ${e.appBorderColor}`,borderRadius:"8px",overflow:"hidden",backgroundColor:e.background.content})),vse=Kr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",backgroundColor:e.background.app,borderBottom:`1px solid ${e.appBorderColor}`})),kse=Kr.div({display:"flex",alignItems:"center",gap:"8px",flex:1}),Cse=Kr.div(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),Tse=Kr.div(({theme:e})=>({flex:1,height:"4px",backgroundColor:e.appBorderColor,borderRadius:"2px",overflow:"hidden",marginLeft:"12px"})),Ise=Kr.div(({theme:e,progress:t})=>({height:"100%",backgroundColor:t===100?e.color.positive||"#10b981":e.color.secondary,width:`${t}%`,transition:"width 0.3s ease, background-color 0.3s ease"})),Fse=Kr.span(({theme:e})=>({fontSize:"12px",color:e.textMutedColor,fontWeight:500,minWidth:"40px",textAlign:"right"})),Ese=Kr.div(({theme:e})=>({padding:"16px",backgroundColor:e.background.app,textAlign:"center"})),Ase=Kr.div(({theme:e})=>({display:"inline-block",width:"14px",height:"14px",border:`2px solid ${e.appBorderColor}`,borderTopColor:e.color.secondary,borderRadius:"50%",animation:"spin 0.8s linear infinite",marginLeft:"8px","@keyframes spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),Pse=Kr.span(({theme:e})=>({fontSize:"12px",color:e.textMutedColor,fontStyle:"italic"}));Ce();import Bse,{useState as Dse}from"react";import{styled as Xr}from"storybook/theming";var Nse=Xr.div(({theme:e})=>{let t=(e.base==="dark","102, 126, 234");return{padding:"10px 12px",backgroundColor:`rgba(${t}, 0.08)`,borderRadius:"6px",marginBottom:"16px",border:`1px solid rgba(${t}, 0.2)`}}),Ose=Xr.div({display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer",userSelect:"none"}),_se=Xr.div({display:"flex",alignItems:"center",gap:"8px"}),$se=Xr.span({fontSize:"12px",opacity:.7}),Use=Xr.span({fontSize:"13px",fontWeight:500}),jse=Xr.div(({score:e,theme:t})=>({display:"inline-block",padding:"4px 10px",borderRadius:"12px",fontSize:"13px",fontWeight:600,backgroundColor:e>=90?t.color.positive||"#10b981":e>=70?t.color.warning||"#f59e0b":t.color.negative||"#ef4444",color:t.color.inverseText})),Hse=Xr.div({marginTop:"12px",fontSize:"11px"}),Wse=Xr.div({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"6px",marginBottom:"8px"}),Vse=Xr.div(({status:e,theme:t})=>({display:"flex",alignItems:"center",gap:"4px",color:e==="success"?"inherit":e==="success"?t.color.positive||"#10b981":e==="warning"?t.color.warning||"#f59e0b":t.color.negative||"#ef4444"})),Gse=Xr.span({fontSize:"12px"});Oe();_e();import Zt from"react";import{styled as fs}from"storybook/theming";import Or,{useEffect as yV}from"react";import{styled as _a}from"storybook/theming";Ce();import xi,{useState as zj}from"react";import{styled as ps}from"storybook/theming";var $1={fontBase:'"Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontMono:'"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace',sizeXs:"11px",sizeSm:"12px",sizeMd:"13px",sizeLg:"14px",sizeXl:"16px",weightRegular:400,weightMedium:500,weightBold:600};function U1(e,t){let n=t||{};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}var w3=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,v3=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,k3={};function Rc(e,t){return((t||k3).jsx?v3:w3).test(e)}var C3=/[ \t\n\f\r]/g;function _h(e){return typeof e=="object"?e.type==="text"?j1(e.value):!1:j1(e)}function j1(e){return e.replace(C3,"")===""}var ho=class{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}};ho.prototype.normal={};ho.prototype.property={};ho.prototype.space=void 0;function $h(e,t){let n={},r={};for(let o of e)Object.assign(n,o.property),Object.assign(r,o.normal);return new ho(n,r,t)}function ka(e){return e.toLowerCase()}var gn=class{constructor(t,n){this.attribute=n,this.property=t}};gn.prototype.attribute="";gn.prototype.booleanish=!1;gn.prototype.boolean=!1;gn.prototype.commaOrSpaceSeparated=!1;gn.prototype.commaSeparated=!1;gn.prototype.defined=!1;gn.prototype.mustUseProperty=!1;gn.prototype.number=!1;gn.prototype.overloadedBoolean=!1;gn.prototype.property="";gn.prototype.spaceSeparated=!1;gn.prototype.space=void 0;var Ca={};Se(Ca,{boolean:()=>We,booleanish:()=>jt,commaOrSpaceSeparated:()=>Qn,commaSeparated:()=>jo,number:()=>Q,overloadedBoolean:()=>zc,spaceSeparated:()=>Tt});var T3=0,We=ui(),jt=ui(),zc=ui(),Q=ui(),Tt=ui(),jo=ui(),Qn=ui();function ui(){return 2**++T3}var Uh=Object.keys(Ca),pi=class extends gn{constructor(t,n,r,o){let i=-1;if(super(t,n),H1(this,"space",o),typeof r=="number")for(;++i<Uh.length;){let s=Uh[i];H1(this,Uh[i],(r&Ca[s])===Ca[s])}}};pi.prototype.defined=!0;function H1(e,t,n){n&&(e[t]=n)}function br(e){let t={},n={};for(let[r,o]of Object.entries(e.properties)){let i=new pi(r,e.transform(e.attributes||{},r),o,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(i.mustUseProperty=!0),t[r]=i,n[ka(r)]=r,n[ka(i.attribute)]=r}return new ho(t,n,e.space)}var jh=br({properties:{ariaActiveDescendant:null,ariaAtomic:jt,ariaAutoComplete:null,ariaBusy:jt,ariaChecked:jt,ariaColCount:Q,ariaColIndex:Q,ariaColSpan:Q,ariaControls:Tt,ariaCurrent:null,ariaDescribedBy:Tt,ariaDetails:null,ariaDisabled:jt,ariaDropEffect:Tt,ariaErrorMessage:null,ariaExpanded:jt,ariaFlowTo:Tt,ariaGrabbed:jt,ariaHasPopup:null,ariaHidden:jt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Tt,ariaLevel:Q,ariaLive:null,ariaModal:jt,ariaMultiLine:jt,ariaMultiSelectable:jt,ariaOrientation:null,ariaOwns:Tt,ariaPlaceholder:null,ariaPosInSet:Q,ariaPressed:jt,ariaReadOnly:jt,ariaRelevant:null,ariaRequired:jt,ariaRoleDescription:Tt,ariaRowCount:Q,ariaRowIndex:Q,ariaRowSpan:Q,ariaSelected:jt,ariaSetSize:Q,ariaSort:null,ariaValueMax:Q,ariaValueMin:Q,ariaValueNow:Q,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function Nc(e,t){return t in e?e[t]:t}function Oc(e,t){return Nc(e,t.toLowerCase())}var W1=br({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:jo,acceptCharset:Tt,accessKey:Tt,action:null,allow:null,allowFullScreen:We,allowPaymentRequest:We,allowUserMedia:We,alt:null,as:null,async:We,autoCapitalize:null,autoComplete:Tt,autoFocus:We,autoPlay:We,blocking:Tt,capture:null,charSet:null,checked:We,cite:null,className:Tt,cols:Q,colSpan:null,content:null,contentEditable:jt,controls:We,controlsList:Tt,coords:Q|jo,crossOrigin:null,data:null,dateTime:null,decoding:null,default:We,defer:We,dir:null,dirName:null,disabled:We,download:zc,draggable:jt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:We,formTarget:null,headers:Tt,height:Q,hidden:zc,high:Q,href:null,hrefLang:null,htmlFor:Tt,httpEquiv:Tt,id:null,imageSizes:null,imageSrcSet:null,inert:We,inputMode:null,integrity:null,is:null,isMap:We,itemId:null,itemProp:Tt,itemRef:Tt,itemScope:We,itemType:Tt,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:We,low:Q,manifest:null,max:null,maxLength:Q,media:null,method:null,min:null,minLength:Q,multiple:We,muted:We,name:null,nonce:null,noModule:We,noValidate:We,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:We,optimum:Q,pattern:null,ping:Tt,placeholder:null,playsInline:We,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:We,referrerPolicy:null,rel:Tt,required:We,reversed:We,rows:Q,rowSpan:Q,sandbox:Tt,scope:null,scoped:We,seamless:We,selected:We,shadowRootClonable:We,shadowRootDelegatesFocus:We,shadowRootMode:null,shape:null,size:Q,sizes:null,slot:null,span:Q,spellCheck:jt,src:null,srcDoc:null,srcLang:null,srcSet:null,start:Q,step:null,style:null,tabIndex:Q,target:null,title:null,translate:null,type:null,typeMustMatch:We,useMap:null,value:jt,width:Q,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Tt,axis:null,background:null,bgColor:null,border:Q,borderColor:null,bottomMargin:Q,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:We,declare:We,event:null,face:null,frame:null,frameBorder:null,hSpace:Q,leftMargin:Q,link:null,longDesc:null,lowSrc:null,marginHeight:Q,marginWidth:Q,noResize:We,noHref:We,noShade:We,noWrap:We,object:null,profile:null,prompt:null,rev:null,rightMargin:Q,rules:null,scheme:null,scrolling:jt,standby:null,summary:null,text:null,topMargin:Q,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Q,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:We,disableRemotePlayback:We,prefix:null,property:null,results:Q,security:null,unselectable:null},space:"html",transform:Oc});var V1=br({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Qn,accentHeight:Q,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Q,amplitude:Q,arabicForm:null,ascent:Q,attributeName:null,attributeType:null,azimuth:Q,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Q,by:null,calcMode:null,capHeight:Q,className:Tt,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Q,diffuseConstant:Q,direction:null,display:null,dur:null,divisor:Q,dominantBaseline:null,download:We,dx:null,dy:null,edgeMode:null,editable:null,elevation:Q,enableBackground:null,end:null,event:null,exponent:Q,externalResourcesRequired:null,fill:null,fillOpacity:Q,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:jo,g2:jo,glyphName:jo,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Q,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Q,horizOriginX:Q,horizOriginY:Q,id:null,ideographic:Q,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Q,k:Q,k1:Q,k2:Q,k3:Q,k4:Q,kernelMatrix:Qn,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Q,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Q,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Q,overlineThickness:Q,paintOrder:null,panose1:null,path:null,pathLength:Q,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Tt,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Q,pointsAtY:Q,pointsAtZ:Q,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Qn,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Qn,rev:Qn,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Qn,requiredFeatures:Qn,requiredFonts:Qn,requiredFormats:Qn,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Q,specularExponent:Q,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Q,strikethroughThickness:Q,string:null,stroke:null,strokeDashArray:Qn,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Q,strokeOpacity:Q,strokeWidth:null,style:null,surfaceScale:Q,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Qn,tabIndex:Q,tableValues:null,target:null,targetX:Q,targetY:Q,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Qn,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:Q,underlineThickness:Q,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Q,values:null,vAlphabetic:Q,vMathematical:Q,vectorEffect:null,vHanging:Q,vIdeographic:Q,version:null,vertAdvY:Q,vertOriginX:Q,vertOriginY:Q,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Q,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:Nc});var Hh=br({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}});var Wh=br({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:Oc});var Vh=br({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}});var Gh={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};var I3=/[A-Z]/g,G1=/-[a-z]/g,F3=/^data[-\w.:]+$/i;function qh(e,t){let n=ka(t),r=t,o=gn;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&F3.test(t)){if(t.charAt(4)==="-"){let i=t.slice(5).replace(G1,A3);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{let i=t.slice(4);if(!G1.test(i)){let s=i.replace(I3,E3);s.charAt(0)!=="-"&&(s="-"+s),t="data"+s}}o=pi}return new o(r,t)}function E3(e){return"-"+e.toLowerCase()}function A3(e){return e.charAt(1).toUpperCase()}var q1=$h([jh,W1,Hh,Wh,Vh],"html"),_c=$h([jh,V1,Hh,Wh,Vh],"svg");function Y1(e){return e.join(" ").trim()}var cT=tl(iT(),1);var Uc=sT("end"),is=sT("start");function sT(e){return t;function t(n){let r=n&&n.position&&n.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Xh(e){let t=is(e),n=Uc(e);if(t&&n)return{start:t,end:n}}function Ho(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?aT(e.position):"start"in e||"end"in e?aT(e):"line"in e||"column"in e?Qh(e):""}function Qh(e){return lT(e&&e.line)+":"+lT(e&&e.column)}function aT(e){return Qh(e&&e.start)+"-"+Qh(e&&e.end)}function lT(e){return e&&typeof e=="number"?e:1}var qt=class extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let o="",i={},s=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof t=="string"?o=t:!i.cause&&t&&(s=!0,o=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof r=="string"){let u=r.indexOf(":");u===-1?i.ruleId=r:(i.source=r.slice(0,u),i.ruleId=r.slice(u+1))}if(!i.place&&i.ancestors&&i.ancestors){let u=i.ancestors[i.ancestors.length-1];u&&(i.place=u.position)}let a=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=a?a.column:void 0,this.fatal=void 0,this.file="",this.message=o,this.line=a?a.line:void 0,this.name=Ho(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=s&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};qt.prototype.file="";qt.prototype.name="";qt.prototype.reason="";qt.prototype.message="";qt.prototype.stack="";qt.prototype.column=void 0;qt.prototype.line=void 0;qt.prototype.ancestors=void 0;qt.prototype.cause=void 0;qt.prototype.fatal=void 0;qt.prototype.place=void 0;qt.prototype.ruleId=void 0;qt.prototype.source=void 0;var Jh={}.hasOwnProperty,t6=new Map,n6=/[A-Z]/g,r6=new Set(["table","tbody","thead","tfoot","tr"]),o6=new Set(["td","th"]),uT="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Zh(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=d6(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=p6(n,t.jsx,t.jsxs)}let o={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?_c:q1,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=pT(o,e,void 0);return i&&typeof i!="string"?i:o.create(e,o.Fragment,{children:i||void 0},void 0)}function pT(e,t,n){if(t.type==="element")return i6(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return s6(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return l6(e,t,n);if(t.type==="mdxjsEsm")return a6(e,t);if(t.type==="root")return c6(e,t,n);if(t.type==="text")return u6(e,t)}function i6(e,t,n){let r=e.schema,o=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(o=_c,e.schema=o),e.ancestors.push(t);let i=gT(e,t.tagName,!1),s=g6(e,t),a=tx(e,t);return r6.has(t.tagName)&&(a=a.filter(function(u){return typeof u=="string"?!_h(u):!0})),dT(e,s,i,t),ex(s,a),e.ancestors.pop(),e.schema=r,e.create(t,i,s,n)}function s6(e,t){if(t.data&&t.data.estree&&e.evaluater){let r=t.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}Ia(e,t.position)}function a6(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Ia(e,t.position)}function l6(e,t,n){let r=e.schema,o=r;t.name==="svg"&&r.space==="html"&&(o=_c,e.schema=o),e.ancestors.push(t);let i=t.name===null?e.Fragment:gT(e,t.name,!0),s=f6(e,t),a=tx(e,t);return dT(e,s,i,t),ex(s,a),e.ancestors.pop(),e.schema=r,e.create(t,i,s,n)}function c6(e,t,n){let r={};return ex(r,tx(e,t)),e.create(t,e.Fragment,r,n)}function u6(e,t){return t.value}function dT(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function ex(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function p6(e,t,n){return r;function r(o,i,s,a){let c=Array.isArray(s.children)?n:t;return a?c(i,s,a):c(i,s)}}function d6(e,t){return n;function n(r,o,i,s){let a=Array.isArray(i.children),u=is(r);return t(o,i,s,a,{columnNumber:u?u.column-1:void 0,fileName:e,lineNumber:u?u.line:void 0},void 0)}}function g6(e,t){let n={},r,o;for(o in t.properties)if(o!=="children"&&Jh.call(t.properties,o)){let i=m6(e,o,t.properties[o]);if(i){let[s,a]=i;e.tableCellAlignToStyle&&s==="align"&&typeof a=="string"&&o6.has(t.tagName)?r=a:n[s]=a}}if(r){let i=n.style||(n.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function f6(e,t){let n={};for(let r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){let i=r.data.estree.body[0];i.type;let s=i.expression;s.type;let a=s.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else Ia(e,t.position);else{let o=r.name,i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){let a=r.value.data.estree.body[0];a.type,i=e.evaluater.evaluateExpression(a.expression)}else Ia(e,t.position);else i=r.value===null?!0:r.value;n[o]=i}return n}function tx(e,t){let n=[],r=-1,o=e.passKeys?new Map:t6;for(;++r<t.children.length;){let i=t.children[r],s;if(e.passKeys){let u=i.type==="element"?i.tagName:i.type==="mdxJsxFlowElement"||i.type==="mdxJsxTextElement"?i.name:void 0;if(u){let c=o.get(u)||0;s=u+"-"+c,o.set(u,c+1)}}let a=pT(e,i,s);a!==void 0&&n.push(a)}return n}function m6(e,t,n){let r=qh(e.schema,t);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?U1(n):Y1(n)),r.property==="style"){let o=typeof n=="object"?n:h6(e,String(n));return e.stylePropertyNameCase==="css"&&(o=x6(o)),["style",o]}return[e.elementAttributeNameCase==="react"&&r.space?Gh[r.property]||r.property:r.attribute,n]}}function h6(e,t){try{return(0,cT.default)(t,{reactCompat:!0})}catch(n){if(e.ignoreInvalidStyle)return{};let r=n,o=new qt("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw o.file=e.filePath||void 0,o.url=uT+"#cannot-parse-style-attribute",o}}function gT(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.includes(".")){let o=t.split("."),i=-1,s;for(;++i<o.length;){let a=Rc(o[i])?{type:"Identifier",name:o[i]}:{type:"Literal",value:o[i]};s=s?{type:"MemberExpression",object:s,property:a,computed:!!(i&&a.type==="Literal"),optional:!1}:a}r=s}else r=Rc(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(r.type==="Literal"){let o=r.value;return Jh.call(e.components,o)?e.components[o]:o}if(e.evaluater)return e.evaluater.evaluateExpression(r);Ia(e)}function Ia(e,t){let n=new qt("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=e.filePath||void 0,n.url=uT+"#cannot-handle-mdx-estrees-without-createevaluater",n}function x6(e){let t={},n;for(n in e)Jh.call(e,n)&&(t[y6(n)]=e[n]);return t}function y6(e){let t=e.replace(n6,b6);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function b6(e){return"-"+e.toLowerCase()}var Fa={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]};import{Fragment as Fj,jsx as Ej,jsxs as Aj}from"react/jsx-runtime";import{useEffect as ofe,useState as ife}from"react";var S6={};function nx(e,t){let n=t||S6,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,o=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return mT(e,r,o)}function mT(e,t,n){if(w6(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return fT(e.children,t,n)}return Array.isArray(e)?fT(e,t,n):""}function fT(e,t,n){let r=[],o=-1;for(;++o<e.length;)r[o]=mT(e[o],t,n);return r.join("")}function w6(e){return!!(e&&typeof e=="object")}var hT=document.createElement("i");function ss(e){let t="&"+e+";";hT.innerHTML=t;let n=hT.textContent;return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function yn(e,t,n,r){let o=e.length,i=0,s;if(t<0?t=-t>o?0:o+t:t=t>o?o:t,n=n>0?n:0,r.length<1e4)s=Array.from(r),s.unshift(t,n),e.splice(...s);else for(n&&e.splice(t,n);i<r.length;)s=r.slice(i,i+1e4),s.unshift(t,0),e.splice(...s),i+=1e4,t+=1e4}function Nn(e,t){return e.length>0?(yn(e,e.length,0,t),e):t}var xT={}.hasOwnProperty;function yT(e){let t={},n=-1;for(;++n<e.length;)v6(t,e[n]);return t}function v6(e,t){let n;for(n in t){let o=(xT.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n],s;if(i)for(s in i){xT.call(o,s)||(o[s]=[]);let a=i[s];k6(o[s],Array.isArray(a)?a:a?[a]:[])}}}function k6(e,t){let n=-1,r=[];for(;++n<t.length;)(t[n].add==="after"?e:r).push(t[n]);yn(e,0,0,r)}function jc(e,t){let n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"\uFFFD":String.fromCodePoint(n)}function xo(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var ar=Wo(/[A-Za-z]/),fn=Wo(/[\dA-Za-z]/),bT=Wo(/[#-'*+\--9=?A-Z^-~]/);function Ea(e){return e!==null&&(e<32||e===127)}var Aa=Wo(/\d/),ST=Wo(/[\dA-Fa-f]/),wT=Wo(/[!-/:-@[-`{-~]/);function de(e){return e!==null&&e<-2}function Yt(e){return e!==null&&(e<0||e===32)}function je(e){return e===-2||e===-1||e===32}var vT=Wo(/\p{P}|\p{S}/u),kT=Wo(/\s/);function Wo(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function Sr(e){let t=[],n=-1,r=0,o=0;for(;++n<e.length;){let i=e.charCodeAt(n),s="";if(i===37&&fn(e.charCodeAt(n+1))&&fn(e.charCodeAt(n+2)))o=2;else if(i<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(i))||(s=String.fromCharCode(i));else if(i>55295&&i<57344){let a=e.charCodeAt(n+1);i<56320&&a>56319&&a<57344?(s=String.fromCharCode(i,a),o=1):s="\uFFFD"}else s=String.fromCharCode(i);s&&(t.push(e.slice(r,n),encodeURIComponent(s)),r=n+o+1,s=""),o&&(n+=o,o=0)}return t.join("")+e.slice(r)}function Ve(e,t,n,r){let o=r?r-1:Number.POSITIVE_INFINITY,i=0;return s;function s(u){return je(u)?(e.enter(n),a(u)):t(u)}function a(u){return je(u)&&i++<o?(e.consume(u),a):(e.exit(n),t(u))}}var CT={tokenize:C6};function C6(e){let t=e.attempt(this.parser.constructs.contentInitial,r,o),n;return t;function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),Ve(e,t,"linePrefix")}function o(a){return e.enter("paragraph"),i(a)}function i(a){let u=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=u),n=u,s(a)}function s(a){if(a===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(a);return}return de(a)?(e.consume(a),e.exit("chunkText"),i):(e.consume(a),s)}}var IT={tokenize:T6},TT={tokenize:I6};function T6(e){let t=this,n=[],r=0,o,i,s;return a;function a(D){if(r<n.length){let N=n[r];return t.containerState=N[1],e.attempt(N[0].continuation,u,c)(D)}return c(D)}function u(D){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,o&&v();let N=t.events.length,j=N,B;for(;j--;)if(t.events[j][0]==="exit"&&t.events[j][1].type==="chunkFlow"){B=t.events[j][1].end;break}I(r);let z=N;for(;z<t.events.length;)t.events[z][1].end={...B},z++;return yn(t.events,j+1,0,t.events.slice(N)),t.events.length=z,c(D)}return a(D)}function c(D){if(r===n.length){if(!o)return g(D);if(o.currentConstruct&&o.currentConstruct.concrete)return h(D);t.interrupt=!!(o.currentConstruct&&!o._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(TT,l,d)(D)}function l(D){return o&&v(),I(r),g(D)}function d(D){return t.parser.lazy[t.now().line]=r!==n.length,s=t.now().offset,h(D)}function g(D){return t.containerState={},e.attempt(TT,p,h)(D)}function p(D){return r++,n.push([t.currentConstruct,t.containerState]),g(D)}function h(D){if(D===null){o&&v(),I(0),e.consume(D);return}return o=o||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:o,contentType:"flow",previous:i}),S(D)}function S(D){if(D===null){T(e.exit("chunkFlow"),!0),I(0),e.consume(D);return}return de(D)?(e.consume(D),T(e.exit("chunkFlow")),r=0,t.interrupt=void 0,a):(e.consume(D),S)}function T(D,N){let j=t.sliceStream(D);if(N&&j.push(null),D.previous=i,i&&(i.next=D),i=D,o.defineSkip(D.start),o.write(j),t.parser.lazy[D.start.line]){let B=o.events.length;for(;B--;)if(o.events[B][1].start.offset<s&&(!o.events[B][1].end||o.events[B][1].end.offset>s))return;let z=t.events.length,m=z,b,k;for(;m--;)if(t.events[m][0]==="exit"&&t.events[m][1].type==="chunkFlow"){if(b){k=t.events[m][1].end;break}b=!0}for(I(r),B=z;B<t.events.length;)t.events[B][1].end={...k},B++;yn(t.events,m+1,0,t.events.slice(z)),t.events.length=B}}function I(D){let N=n.length;for(;N-- >D;){let j=n[N];t.containerState=j[1],j[0].exit.call(t,e)}n.length=D}function v(){o.write([null]),i=void 0,o=void 0,t.containerState._closeFlow=void 0}}function I6(e,t,n){return Ve(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function rx(e){if(e===null||Yt(e)||kT(e))return 1;if(vT(e))return 2}function as(e,t,n){let r=[],o=-1;for(;++o<e.length;){let i=e[o].resolveAll;i&&!r.includes(i)&&(t=i(t,n),r.push(i))}return t}var Pa={name:"attention",resolveAll:F6,tokenize:E6};function F6(e,t){let n=-1,r,o,i,s,a,u,c,l;for(;++n<e.length;)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){for(r=n;r--;)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;u=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},g={...e[n][1].start};FT(d,-u),FT(g,u),s={type:u>1?"strongSequence":"emphasisSequence",start:d,end:{...e[r][1].end}},a={type:u>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:g},i={type:u>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[n][1].start}},o={type:u>1?"strong":"emphasis",start:{...s.start},end:{...a.end}},e[r][1].end={...s.start},e[n][1].start={...a.end},c=[],e[r][1].end.offset-e[r][1].start.offset&&(c=Nn(c,[["enter",e[r][1],t],["exit",e[r][1],t]])),c=Nn(c,[["enter",o,t],["enter",s,t],["exit",s,t],["enter",i,t]]),c=Nn(c,as(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),c=Nn(c,[["exit",i,t],["enter",a,t],["exit",a,t],["exit",o,t]]),e[n][1].end.offset-e[n][1].start.offset?(l=2,c=Nn(c,[["enter",e[n][1],t],["exit",e[n][1],t]])):l=0,yn(e,r-1,n-r+3,c),n=r+c.length-l-2;break}}for(n=-1;++n<e.length;)e[n][1].type==="attentionSequence"&&(e[n][1].type="data");return e}function E6(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,o=rx(r),i;return s;function s(u){return i=u,e.enter("attentionSequence"),a(u)}function a(u){if(u===i)return e.consume(u),a;let c=e.exit("attentionSequence"),l=rx(u),d=!l||l===2&&o||n.includes(u),g=!o||o===2&&l||n.includes(r);return c._open=!!(i===42?d:d&&(o||!g)),c._close=!!(i===42?g:g&&(l||!d)),t(u)}}function FT(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var ox={name:"autolink",tokenize:A6};function A6(e,t,n){let r=0;return o;function o(p){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),i}function i(p){return ar(p)?(e.consume(p),s):p===64?n(p):c(p)}function s(p){return p===43||p===45||p===46||fn(p)?(r=1,a(p)):c(p)}function a(p){return p===58?(e.consume(p),r=0,u):(p===43||p===45||p===46||fn(p))&&r++<32?(e.consume(p),a):(r=0,c(p))}function u(p){return p===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):p===null||p===32||p===60||Ea(p)?n(p):(e.consume(p),u)}function c(p){return p===64?(e.consume(p),l):bT(p)?(e.consume(p),c):n(p)}function l(p){return fn(p)?d(p):n(p)}function d(p){return p===46?(e.consume(p),r=0,l):p===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):g(p)}function g(p){if((p===45||fn(p))&&r++<63){let h=p===45?g:d;return e.consume(p),h}return n(p)}}var Vo={partial:!0,tokenize:P6};function P6(e,t,n){return r;function r(i){return je(i)?Ve(e,o,"linePrefix")(i):o(i)}function o(i){return i===null||de(i)?t(i):n(i)}}var Hc={continuation:{tokenize:M6},exit:B6,name:"blockQuote",tokenize:L6};function L6(e,t,n){let r=this;return o;function o(s){if(s===62){let a=r.containerState;return a.open||(e.enter("blockQuote",{_container:!0}),a.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(s),e.exit("blockQuoteMarker"),i}return n(s)}function i(s){return je(s)?(e.enter("blockQuotePrefixWhitespace"),e.consume(s),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(s))}}function M6(e,t,n){let r=this;return o;function o(s){return je(s)?Ve(e,i,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s):i(s)}function i(s){return e.attempt(Hc,t,n)(s)}}function B6(e){e.exit("blockQuote")}var Wc={name:"characterEscape",tokenize:D6};function D6(e,t,n){return r;function r(i){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(i),e.exit("escapeMarker"),o}function o(i){return wT(i)?(e.enter("characterEscapeValue"),e.consume(i),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(i)}}var Vc={name:"characterReference",tokenize:R6};function R6(e,t,n){let r=this,o=0,i,s;return a;function a(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),u}function u(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),c):(e.enter("characterReferenceValue"),i=31,s=fn,l(d))}function c(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),i=6,s=ST,l):(e.enter("characterReferenceValue"),i=7,s=Aa,l(d))}function l(d){if(d===59&&o){let g=e.exit("characterReferenceValue");return s===fn&&!ss(r.sliceSerialize(g))?n(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return s(d)&&o++<i?(e.consume(d),l):n(d)}}var ET={partial:!0,tokenize:N6},Gc={concrete:!0,name:"codeFenced",tokenize:z6};function z6(e,t,n){let r=this,o={partial:!0,tokenize:j},i=0,s=0,a;return u;function u(B){return c(B)}function c(B){let z=r.events[r.events.length-1];return i=z&&z[1].type==="linePrefix"?z[2].sliceSerialize(z[1],!0).length:0,a=B,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),l(B)}function l(B){return B===a?(s++,e.consume(B),l):s<3?n(B):(e.exit("codeFencedFenceSequence"),je(B)?Ve(e,d,"whitespace")(B):d(B))}function d(B){return B===null||de(B)?(e.exit("codeFencedFence"),r.interrupt?t(B):e.check(ET,S,N)(B)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),g(B))}function g(B){return B===null||de(B)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),d(B)):je(B)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Ve(e,p,"whitespace")(B)):B===96&&B===a?n(B):(e.consume(B),g)}function p(B){return B===null||de(B)?d(B):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),h(B))}function h(B){return B===null||de(B)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),d(B)):B===96&&B===a?n(B):(e.consume(B),h)}function S(B){return e.attempt(o,N,T)(B)}function T(B){return e.enter("lineEnding"),e.consume(B),e.exit("lineEnding"),I}function I(B){return i>0&&je(B)?Ve(e,v,"linePrefix",i+1)(B):v(B)}function v(B){return B===null||de(B)?e.check(ET,S,N)(B):(e.enter("codeFlowValue"),D(B))}function D(B){return B===null||de(B)?(e.exit("codeFlowValue"),v(B)):(e.consume(B),D)}function N(B){return e.exit("codeFenced"),t(B)}function j(B,z,m){let b=0;return k;function k(x){return B.enter("lineEnding"),B.consume(x),B.exit("lineEnding"),A}function A(x){return B.enter("codeFencedFence"),je(x)?Ve(B,f,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(x):f(x)}function f(x){return x===a?(B.enter("codeFencedFenceSequence"),C(x)):m(x)}function C(x){return x===a?(b++,B.consume(x),C):b>=s?(B.exit("codeFencedFenceSequence"),je(x)?Ve(B,E,"whitespace")(x):E(x)):m(x)}function E(x){return x===null||de(x)?(B.exit("codeFencedFence"),z(x)):m(x)}}}function N6(e,t,n){let r=this;return o;function o(s){return s===null?n(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i)}function i(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}var La={name:"codeIndented",tokenize:_6},O6={partial:!0,tokenize:$6};function _6(e,t,n){let r=this;return o;function o(c){return e.enter("codeIndented"),Ve(e,i,"linePrefix",5)(c)}function i(c){let l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?s(c):n(c)}function s(c){return c===null?u(c):de(c)?e.attempt(O6,s,u)(c):(e.enter("codeFlowValue"),a(c))}function a(c){return c===null||de(c)?(e.exit("codeFlowValue"),s(c)):(e.consume(c),a)}function u(c){return e.exit("codeIndented"),t(c)}}function $6(e,t,n){let r=this;return o;function o(s){return r.parser.lazy[r.now().line]?n(s):de(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),o):Ve(e,i,"linePrefix",5)(s)}function i(s){let a=r.events[r.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?t(s):de(s)?o(s):n(s)}}var ix={name:"codeText",previous:j6,resolve:U6,tokenize:H6};function U6(e){let t=e.length-4,n=3,r,o;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r<t;)if(e[r][1].type==="codeTextData"){e[n][1].type="codeTextPadding",e[t][1].type="codeTextPadding",n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)o===void 0?r!==t&&e[r][1].type!=="lineEnding"&&(o=r):(r===t||e[r][1].type==="lineEnding")&&(e[o][1].type="codeTextData",r!==o+2&&(e[o][1].end=e[r-1][1].end,e.splice(o+2,r-o-2),t-=r-o-2,r=o+2),o=void 0);return e}function j6(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function H6(e,t,n){let r=this,o=0,i,s;return a;function a(g){return e.enter("codeText"),e.enter("codeTextSequence"),u(g)}function u(g){return g===96?(e.consume(g),o++,u):(e.exit("codeTextSequence"),c(g))}function c(g){return g===null?n(g):g===32?(e.enter("space"),e.consume(g),e.exit("space"),c):g===96?(s=e.enter("codeTextSequence"),i=0,d(g)):de(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("codeTextData"),l(g))}function l(g){return g===null||g===32||g===96||de(g)?(e.exit("codeTextData"),c(g)):(e.consume(g),l)}function d(g){return g===96?(e.consume(g),i++,d):i===o?(e.exit("codeTextSequence"),e.exit("codeText"),t(g)):(s.type="codeTextData",l(g))}}var qc=class{constructor(t){this.left=t?[...t]:[],this.right=[]}get(t){if(t<0||t>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return t<this.left.length?this.left[t]:this.right[this.right.length-t+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(t,n){let r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(t,r):t>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(t,n,r){let o=n||0;this.setCursor(Math.trunc(t));let i=this.right.splice(this.right.length-o,Number.POSITIVE_INFINITY);return r&&Ma(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Ma(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Ma(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t<this.left.length){let n=this.left.splice(t,Number.POSITIVE_INFINITY);Ma(this.right,n.reverse())}else{let n=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);Ma(this.left,n.reverse())}}};function Ma(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function Yc(e){let t={},n=-1,r,o,i,s,a,u,c,l=new qc(e);for(;++n<l.length;){for(;n in t;)n=t[n];if(r=l.get(n),n&&r[1].type==="chunkFlow"&&l.get(n-1)[1].type==="listItemPrefix"&&(u=r[1]._tokenizer.events,i=0,i<u.length&&u[i][1].type==="lineEndingBlank"&&(i+=2),i<u.length&&u[i][1].type==="content"))for(;++i<u.length&&u[i][1].type!=="content";)u[i][1].type==="chunkText"&&(u[i][1]._isInFirstContentOfListItem=!0,i++);if(r[0]==="enter")r[1].contentType&&(Object.assign(t,W6(l,n)),n=t[n],c=!0);else if(r[1]._container){for(i=n,o=void 0;i--;)if(s=l.get(i),s[1].type==="lineEnding"||s[1].type==="lineEndingBlank")s[0]==="enter"&&(o&&(l.get(o)[1].type="lineEndingBlank"),s[1].type="lineEnding",o=i);else if(!(s[1].type==="linePrefix"||s[1].type==="listItemIndent"))break;o&&(r[1].end={...l.get(o)[1].start},a=l.slice(o,n),a.unshift(r),l.splice(o,n-o+1,a))}}return yn(e,0,Number.POSITIVE_INFINITY,l.slice(0)),!c}function W6(e,t){let n=e.get(t)[1],r=e.get(t)[2],o=t-1,i=[],s=n._tokenizer;s||(s=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(s._contentTypeTextTrailing=!0));let a=s.events,u=[],c={},l,d,g=-1,p=n,h=0,S=0,T=[S];for(;p;){for(;e.get(++o)[1]!==p;);i.push(o),p._tokenizer||(l=r.sliceStream(p),p.next||l.push(null),d&&s.defineSkip(p.start),p._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=!0),s.write(l),p._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}for(p=n;++g<a.length;)a[g][0]==="exit"&&a[g-1][0]==="enter"&&a[g][1].type===a[g-1][1].type&&a[g][1].start.line!==a[g][1].end.line&&(S=g+1,T.push(S),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(s.events=[],p?(p._tokenizer=void 0,p.previous=void 0):T.pop(),g=T.length;g--;){let I=a.slice(T[g],T[g+1]),v=i.pop();u.push([v,v+I.length-1]),e.splice(v,2,I)}for(u.reverse(),g=-1;++g<u.length;)c[h+u[g][0]]=h+u[g][1],h+=u[g][1]-u[g][0]-1;return c}var sx={resolve:G6,tokenize:q6},V6={partial:!0,tokenize:Y6};function G6(e){return Yc(e),e}function q6(e,t){let n;return r;function r(a){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),o(a)}function o(a){return a===null?i(a):de(a)?e.check(V6,s,i)(a):(e.consume(a),o)}function i(a){return e.exit("chunkContent"),e.exit("content"),t(a)}function s(a){return e.consume(a),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,o}}function Y6(e,t,n){let r=this;return o;function o(s){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),Ve(e,i,"linePrefix")}function i(s){if(s===null||de(s))return n(s);let a=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?t(s):e.interrupt(r.parser.constructs.flow,n,t)(s)}}function Kc(e,t,n,r,o,i,s,a,u){let c=u||Number.POSITIVE_INFINITY,l=0;return d;function d(I){return I===60?(e.enter(r),e.enter(o),e.enter(i),e.consume(I),e.exit(i),g):I===null||I===32||I===41||Ea(I)?n(I):(e.enter(r),e.enter(s),e.enter(a),e.enter("chunkString",{contentType:"string"}),S(I))}function g(I){return I===62?(e.enter(i),e.consume(I),e.exit(i),e.exit(o),e.exit(r),t):(e.enter(a),e.enter("chunkString",{contentType:"string"}),p(I))}function p(I){return I===62?(e.exit("chunkString"),e.exit(a),g(I)):I===null||I===60||de(I)?n(I):(e.consume(I),I===92?h:p)}function h(I){return I===60||I===62||I===92?(e.consume(I),p):p(I)}function S(I){return!l&&(I===null||I===41||Yt(I))?(e.exit("chunkString"),e.exit(a),e.exit(s),e.exit(r),t(I)):l<c&&I===40?(e.consume(I),l++,S):I===41?(e.consume(I),l--,S):I===null||I===32||I===40||Ea(I)?n(I):(e.consume(I),I===92?T:S)}function T(I){return I===40||I===41||I===92?(e.consume(I),S):S(I)}}function Xc(e,t,n,r,o,i){let s=this,a=0,u;return c;function c(p){return e.enter(r),e.enter(o),e.consume(p),e.exit(o),e.enter(i),l}function l(p){return a>999||p===null||p===91||p===93&&!u||p===94&&!a&&"_hiddenFootnoteSupport"in s.parser.constructs?n(p):p===93?(e.exit(i),e.enter(o),e.consume(p),e.exit(o),e.exit(r),t):de(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),l):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||de(p)||a++>999?(e.exit("chunkString"),l(p)):(e.consume(p),u||(u=!je(p)),p===92?g:d)}function g(p){return p===91||p===92||p===93?(e.consume(p),a++,d):d(p)}}function Qc(e,t,n,r,o,i){let s;return a;function a(g){return g===34||g===39||g===40?(e.enter(r),e.enter(o),e.consume(g),e.exit(o),s=g===40?41:g,u):n(g)}function u(g){return g===s?(e.enter(o),e.consume(g),e.exit(o),e.exit(r),t):(e.enter(i),c(g))}function c(g){return g===s?(e.exit(i),u(s)):g===null?n(g):de(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),Ve(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),l(g))}function l(g){return g===s||g===null||de(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?d:l)}function d(g){return g===s||g===92?(e.consume(g),l):l(g)}}function gi(e,t){let n;return r;function r(o){return de(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),n=!0,r):je(o)?Ve(e,r,n?"linePrefix":"lineSuffix")(o):t(o)}}var ax={name:"definition",tokenize:X6},K6={partial:!0,tokenize:Q6};function X6(e,t,n){let r=this,o;return i;function i(p){return e.enter("definition"),s(p)}function s(p){return Xc.call(r,e,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function a(p){return o=xo(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),u):n(p)}function u(p){return Yt(p)?gi(e,c)(p):c(p)}function c(p){return Kc(e,l,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function l(p){return e.attempt(K6,d,d)(p)}function d(p){return je(p)?Ve(e,g,"whitespace")(p):g(p)}function g(p){return p===null||de(p)?(e.exit("definition"),r.parser.defined.push(o),t(p)):n(p)}}function Q6(e,t,n){return r;function r(a){return Yt(a)?gi(e,o)(a):n(a)}function o(a){return Qc(e,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(a)}function i(a){return je(a)?Ve(e,s,"whitespace")(a):s(a)}function s(a){return a===null||de(a)?t(a):n(a)}}var lx={name:"hardBreakEscape",tokenize:J6};function J6(e,t,n){return r;function r(i){return e.enter("hardBreakEscape"),e.consume(i),o}function o(i){return de(i)?(e.exit("hardBreakEscape"),t(i)):n(i)}}var cx={name:"headingAtx",resolve:Z6,tokenize:eU};function Z6(e,t){let n=e.length-2,r=3,o,i;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(o={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},i={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},yn(e,r,n-r+1,[["enter",o,t],["enter",i,t],["exit",i,t],["exit",o,t]])),e}function eU(e,t,n){let r=0;return o;function o(l){return e.enter("atxHeading"),i(l)}function i(l){return e.enter("atxHeadingSequence"),s(l)}function s(l){return l===35&&r++<6?(e.consume(l),s):l===null||Yt(l)?(e.exit("atxHeadingSequence"),a(l)):n(l)}function a(l){return l===35?(e.enter("atxHeadingSequence"),u(l)):l===null||de(l)?(e.exit("atxHeading"),t(l)):je(l)?Ve(e,a,"whitespace")(l):(e.enter("atxHeadingText"),c(l))}function u(l){return l===35?(e.consume(l),u):(e.exit("atxHeadingSequence"),a(l))}function c(l){return l===null||l===35||Yt(l)?(e.exit("atxHeadingText"),a(l)):(e.consume(l),c)}}var AT=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ux=["pre","script","style","textarea"];var px={concrete:!0,name:"htmlFlow",resolveTo:rU,tokenize:oU},tU={partial:!0,tokenize:sU},nU={partial:!0,tokenize:iU};function rU(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function oU(e,t,n){let r=this,o,i,s,a,u;return c;function c(L){return l(L)}function l(L){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(L),d}function d(L){return L===33?(e.consume(L),g):L===47?(e.consume(L),i=!0,S):L===63?(e.consume(L),o=3,r.interrupt?t:w):ar(L)?(e.consume(L),s=String.fromCharCode(L),T):n(L)}function g(L){return L===45?(e.consume(L),o=2,p):L===91?(e.consume(L),o=5,a=0,h):ar(L)?(e.consume(L),o=4,r.interrupt?t:w):n(L)}function p(L){return L===45?(e.consume(L),r.interrupt?t:w):n(L)}function h(L){let oe="CDATA[";return L===oe.charCodeAt(a++)?(e.consume(L),a===oe.length?r.interrupt?t:f:h):n(L)}function S(L){return ar(L)?(e.consume(L),s=String.fromCharCode(L),T):n(L)}function T(L){if(L===null||L===47||L===62||Yt(L)){let oe=L===47,X=s.toLowerCase();return!oe&&!i&&ux.includes(X)?(o=1,r.interrupt?t(L):f(L)):AT.includes(s.toLowerCase())?(o=6,oe?(e.consume(L),I):r.interrupt?t(L):f(L)):(o=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(L):i?v(L):D(L))}return L===45||fn(L)?(e.consume(L),s+=String.fromCharCode(L),T):n(L)}function I(L){return L===62?(e.consume(L),r.interrupt?t:f):n(L)}function v(L){return je(L)?(e.consume(L),v):k(L)}function D(L){return L===47?(e.consume(L),k):L===58||L===95||ar(L)?(e.consume(L),N):je(L)?(e.consume(L),D):k(L)}function N(L){return L===45||L===46||L===58||L===95||fn(L)?(e.consume(L),N):j(L)}function j(L){return L===61?(e.consume(L),B):je(L)?(e.consume(L),j):D(L)}function B(L){return L===null||L===60||L===61||L===62||L===96?n(L):L===34||L===39?(e.consume(L),u=L,z):je(L)?(e.consume(L),B):m(L)}function z(L){return L===u?(e.consume(L),u=null,b):L===null||de(L)?n(L):(e.consume(L),z)}function m(L){return L===null||L===34||L===39||L===47||L===60||L===61||L===62||L===96||Yt(L)?j(L):(e.consume(L),m)}function b(L){return L===47||L===62||je(L)?D(L):n(L)}function k(L){return L===62?(e.consume(L),A):n(L)}function A(L){return L===null||de(L)?f(L):je(L)?(e.consume(L),A):n(L)}function f(L){return L===45&&o===2?(e.consume(L),F):L===60&&o===1?(e.consume(L),P):L===62&&o===4?(e.consume(L),R):L===63&&o===3?(e.consume(L),w):L===93&&o===5?(e.consume(L),O):de(L)&&(o===6||o===7)?(e.exit("htmlFlowData"),e.check(tU,W,C)(L)):L===null||de(L)?(e.exit("htmlFlowData"),C(L)):(e.consume(L),f)}function C(L){return e.check(nU,E,W)(L)}function E(L){return e.enter("lineEnding"),e.consume(L),e.exit("lineEnding"),x}function x(L){return L===null||de(L)?C(L):(e.enter("htmlFlowData"),f(L))}function F(L){return L===45?(e.consume(L),w):f(L)}function P(L){return L===47?(e.consume(L),s="",M):f(L)}function M(L){if(L===62){let oe=s.toLowerCase();return ux.includes(oe)?(e.consume(L),R):f(L)}return ar(L)&&s.length<8?(e.consume(L),s+=String.fromCharCode(L),M):f(L)}function O(L){return L===93?(e.consume(L),w):f(L)}function w(L){return L===62?(e.consume(L),R):L===45&&o===2?(e.consume(L),w):f(L)}function R(L){return L===null||de(L)?(e.exit("htmlFlowData"),W(L)):(e.consume(L),R)}function W(L){return e.exit("htmlFlow"),t(L)}}function iU(e,t,n){let r=this;return o;function o(s){return de(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i):n(s)}function i(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}function sU(e,t,n){return r;function r(o){return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),e.attempt(Vo,t,n)}}var dx={name:"htmlText",tokenize:aU};function aU(e,t,n){let r=this,o,i,s;return a;function a(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),u}function u(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),D):ar(w)?(e.consume(w),m):n(w)}function c(w){return w===45?(e.consume(w),l):w===91?(e.consume(w),i=0,h):ar(w)?(e.consume(w),v):n(w)}function l(w){return w===45?(e.consume(w),p):n(w)}function d(w){return w===null?n(w):w===45?(e.consume(w),g):de(w)?(s=d,P(w)):(e.consume(w),d)}function g(w){return w===45?(e.consume(w),p):d(w)}function p(w){return w===62?F(w):w===45?g(w):d(w)}function h(w){let R="CDATA[";return w===R.charCodeAt(i++)?(e.consume(w),i===R.length?S:h):n(w)}function S(w){return w===null?n(w):w===93?(e.consume(w),T):de(w)?(s=S,P(w)):(e.consume(w),S)}function T(w){return w===93?(e.consume(w),I):S(w)}function I(w){return w===62?F(w):w===93?(e.consume(w),I):S(w)}function v(w){return w===null||w===62?F(w):de(w)?(s=v,P(w)):(e.consume(w),v)}function D(w){return w===null?n(w):w===63?(e.consume(w),N):de(w)?(s=D,P(w)):(e.consume(w),D)}function N(w){return w===62?F(w):D(w)}function j(w){return ar(w)?(e.consume(w),B):n(w)}function B(w){return w===45||fn(w)?(e.consume(w),B):z(w)}function z(w){return de(w)?(s=z,P(w)):je(w)?(e.consume(w),z):F(w)}function m(w){return w===45||fn(w)?(e.consume(w),m):w===47||w===62||Yt(w)?b(w):n(w)}function b(w){return w===47?(e.consume(w),F):w===58||w===95||ar(w)?(e.consume(w),k):de(w)?(s=b,P(w)):je(w)?(e.consume(w),b):F(w)}function k(w){return w===45||w===46||w===58||w===95||fn(w)?(e.consume(w),k):A(w)}function A(w){return w===61?(e.consume(w),f):de(w)?(s=A,P(w)):je(w)?(e.consume(w),A):b(w)}function f(w){return w===null||w===60||w===61||w===62||w===96?n(w):w===34||w===39?(e.consume(w),o=w,C):de(w)?(s=f,P(w)):je(w)?(e.consume(w),f):(e.consume(w),E)}function C(w){return w===o?(e.consume(w),o=void 0,x):w===null?n(w):de(w)?(s=C,P(w)):(e.consume(w),C)}function E(w){return w===null||w===34||w===39||w===60||w===61||w===96?n(w):w===47||w===62||Yt(w)?b(w):(e.consume(w),E)}function x(w){return w===47||w===62||Yt(w)?b(w):n(w)}function F(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):n(w)}function P(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),M}function M(w){return je(w)?Ve(e,O,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):O(w)}function O(w){return e.enter("htmlTextData"),s(w)}}var fi={name:"labelEnd",resolveAll:pU,resolveTo:dU,tokenize:gU},lU={tokenize:fU},cU={tokenize:mU},uU={tokenize:hU};function pU(e){let t=-1,n=[];for(;++t<e.length;){let r=e[t][1];if(n.push(e[t]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){let o=r.type==="labelImage"?4:2;r.type="data",t+=o}}return e.length!==n.length&&yn(e,0,e.length,n),e}function dU(e,t){let n=e.length,r=0,o,i,s,a;for(;n--;)if(o=e[n][1],i){if(o.type==="link"||o.type==="labelLink"&&o._inactive)break;e[n][0]==="enter"&&o.type==="labelLink"&&(o._inactive=!0)}else if(s){if(e[n][0]==="enter"&&(o.type==="labelImage"||o.type==="labelLink")&&!o._balanced&&(i=n,o.type!=="labelLink")){r=2;break}}else o.type==="labelEnd"&&(s=n);let u={type:e[i][1].type==="labelLink"?"link":"image",start:{...e[i][1].start},end:{...e[e.length-1][1].end}},c={type:"label",start:{...e[i][1].start},end:{...e[s][1].end}},l={type:"labelText",start:{...e[i+r+2][1].end},end:{...e[s-2][1].start}};return a=[["enter",u,t],["enter",c,t]],a=Nn(a,e.slice(i+1,i+r+3)),a=Nn(a,[["enter",l,t]]),a=Nn(a,as(t.parser.constructs.insideSpan.null,e.slice(i+r+4,s-3),t)),a=Nn(a,[["exit",l,t],e[s-2],e[s-1],["exit",c,t]]),a=Nn(a,e.slice(s+1)),a=Nn(a,[["exit",u,t]]),yn(e,i,e.length,a),e}function gU(e,t,n){let r=this,o=r.events.length,i,s;for(;o--;)if((r.events[o][1].type==="labelImage"||r.events[o][1].type==="labelLink")&&!r.events[o][1]._balanced){i=r.events[o][1];break}return a;function a(g){return i?i._inactive?d(g):(s=r.parser.defined.includes(xo(r.sliceSerialize({start:i.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(g),e.exit("labelMarker"),e.exit("labelEnd"),u):n(g)}function u(g){return g===40?e.attempt(lU,l,s?l:d)(g):g===91?e.attempt(cU,l,s?c:d)(g):s?l(g):d(g)}function c(g){return e.attempt(uU,l,d)(g)}function l(g){return t(g)}function d(g){return i._balanced=!0,n(g)}}function fU(e,t,n){return r;function r(d){return e.enter("resource"),e.enter("resourceMarker"),e.consume(d),e.exit("resourceMarker"),o}function o(d){return Yt(d)?gi(e,i)(d):i(d)}function i(d){return d===41?l(d):Kc(e,s,a,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(d)}function s(d){return Yt(d)?gi(e,u)(d):l(d)}function a(d){return n(d)}function u(d){return d===34||d===39||d===40?Qc(e,c,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(d):l(d)}function c(d){return Yt(d)?gi(e,l)(d):l(d)}function l(d){return d===41?(e.enter("resourceMarker"),e.consume(d),e.exit("resourceMarker"),e.exit("resource"),t):n(d)}}function mU(e,t,n){let r=this;return o;function o(a){return Xc.call(r,e,i,s,"reference","referenceMarker","referenceString")(a)}function i(a){return r.parser.defined.includes(xo(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(a):n(a)}function s(a){return n(a)}}function hU(e,t,n){return r;function r(i){return e.enter("reference"),e.enter("referenceMarker"),e.consume(i),e.exit("referenceMarker"),o}function o(i){return i===93?(e.enter("referenceMarker"),e.consume(i),e.exit("referenceMarker"),e.exit("reference"),t):n(i)}}var gx={name:"labelStartImage",resolveAll:fi.resolveAll,tokenize:xU};function xU(e,t,n){let r=this;return o;function o(a){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(a),e.exit("labelImageMarker"),i}function i(a){return a===91?(e.enter("labelMarker"),e.consume(a),e.exit("labelMarker"),e.exit("labelImage"),s):n(a)}function s(a){return a===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(a):t(a)}}var fx={name:"labelStartLink",resolveAll:fi.resolveAll,tokenize:yU};function yU(e,t,n){let r=this;return o;function o(s){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(s),e.exit("labelMarker"),e.exit("labelLink"),i}function i(s){return s===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(s):t(s)}}var Ba={name:"lineEnding",tokenize:bU};function bU(e,t){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),Ve(e,t,"linePrefix")}}var mi={name:"thematicBreak",tokenize:SU};function SU(e,t,n){let r=0,o;return i;function i(c){return e.enter("thematicBreak"),s(c)}function s(c){return o=c,a(c)}function a(c){return c===o?(e.enter("thematicBreakSequence"),u(c)):r>=3&&(c===null||de(c))?(e.exit("thematicBreak"),t(c)):n(c)}function u(c){return c===o?(e.consume(c),r++,u):(e.exit("thematicBreakSequence"),je(c)?Ve(e,a,"whitespace")(c):a(c))}}var En={continuation:{tokenize:CU},exit:IU,name:"list",tokenize:kU},wU={partial:!0,tokenize:FU},vU={partial:!0,tokenize:TU};function kU(e,t,n){let r=this,o=r.events[r.events.length-1],i=o&&o[1].type==="linePrefix"?o[2].sliceSerialize(o[1],!0).length:0,s=0;return a;function a(p){let h=r.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(h==="listUnordered"?!r.containerState.marker||p===r.containerState.marker:Aa(p)){if(r.containerState.type||(r.containerState.type=h,e.enter(h,{_container:!0})),h==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(mi,n,c)(p):c(p);if(!r.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),u(p)}return n(p)}function u(p){return Aa(p)&&++s<10?(e.consume(p),u):(!r.interrupt||s<2)&&(r.containerState.marker?p===r.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):n(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||p,e.check(Vo,r.interrupt?n:l,e.attempt(wU,g,d))}function l(p){return r.containerState.initialBlankLine=!0,i++,g(p)}function d(p){return je(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):n(p)}function g(p){return r.containerState.size=i+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function CU(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(Vo,o,i);function o(a){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Ve(e,t,"listItemIndent",r.containerState.size+1)(a)}function i(a){return r.containerState.furtherBlankLines||!je(a)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,s(a)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(vU,t,s)(a))}function s(a){return r.containerState._closeFlow=!0,r.interrupt=void 0,Ve(e,e.attempt(En,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a)}}function TU(e,t,n){let r=this;return Ve(e,o,"listItemIndent",r.containerState.size+1);function o(i){let s=r.events[r.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===r.containerState.size?t(i):n(i)}}function IU(e){e.exit(this.containerState.type)}function FU(e,t,n){let r=this;return Ve(e,o,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function o(i){let s=r.events[r.events.length-1];return!je(i)&&s&&s[1].type==="listItemPrefixWhitespace"?t(i):n(i)}}var Jc={name:"setextUnderline",resolveTo:EU,tokenize:AU};function EU(e,t){let n=e.length,r,o,i;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(o=n)}else e[n][1].type==="content"&&e.splice(n,1),!i&&e[n][1].type==="definition"&&(i=n);let s={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[o][1].type="setextHeadingText",i?(e.splice(o,0,["enter",s,t]),e.splice(i+1,0,["exit",e[r][1],t]),e[r][1].end={...e[i][1].end}):e[r][1]=s,e.push(["exit",s,t]),e}function AU(e,t,n){let r=this,o;return i;function i(c){let l=r.events.length,d;for(;l--;)if(r.events[l][1].type!=="lineEnding"&&r.events[l][1].type!=="linePrefix"&&r.events[l][1].type!=="content"){d=r.events[l][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||d)?(e.enter("setextHeadingLine"),o=c,s(c)):n(c)}function s(c){return e.enter("setextHeadingLineSequence"),a(c)}function a(c){return c===o?(e.consume(c),a):(e.exit("setextHeadingLineSequence"),je(c)?Ve(e,u,"lineSuffix")(c):u(c))}function u(c){return c===null||de(c)?(e.exit("setextHeadingLine"),t(c)):n(c)}}var PT={tokenize:PU};function PU(e){let t=this,n=e.attempt(Vo,r,e.attempt(this.parser.constructs.flowInitial,o,Ve(e,e.attempt(this.parser.constructs.flow,o,e.attempt(sx,o)),"linePrefix")));return n;function r(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function o(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,n}}var LT={resolveAll:RT()},MT=DT("string"),BT=DT("text");function DT(e){return{resolveAll:RT(e==="text"?LU:void 0),tokenize:t};function t(n){let r=this,o=this.parser.constructs[e],i=n.attempt(o,s,a);return s;function s(l){return c(l)?i(l):a(l)}function a(l){if(l===null){n.consume(l);return}return n.enter("data"),n.consume(l),u}function u(l){return c(l)?(n.exit("data"),i(l)):(n.consume(l),u)}function c(l){if(l===null)return!0;let d=o[l],g=-1;if(d)for(;++g<d.length;){let p=d[g];if(!p.previous||p.previous.call(r,r.previous))return!0}return!1}}}function RT(e){return t;function t(n,r){let o=-1,i;for(;++o<=n.length;)i===void 0?n[o]&&n[o][1].type==="data"&&(i=o,o++):(!n[o]||n[o][1].type!=="data")&&(o!==i+2&&(n[i][1].end=n[o-1][1].end,n.splice(i+2,o-i-2),o=i+2),i=void 0);return e?e(n,r):n}}function LU(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type==="lineEnding")&&e[n-1][1].type==="data"){let r=e[n-1][1],o=t.sliceStream(r),i=o.length,s=-1,a=0,u;for(;i--;){let c=o[i];if(typeof c=="string"){for(s=c.length;c.charCodeAt(s-1)===32;)a++,s--;if(s)break;s=-1}else if(c===-2)u=!0,a++;else if(c!==-1){i++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(a=0),a){let c={type:n===e.length||u||a<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:i?s:r.start._bufferIndex+s,_index:r.start._index+i,line:r.end.line,column:r.end.column-a,offset:r.end.offset-a},end:{...r.end}};r.end={...c.start},r.start.offset===r.end.offset?Object.assign(r,c):(e.splice(n,0,["enter",c,t],["exit",c,t]),n+=2)}n++}return e}var mx={};Se(mx,{attentionMarkers:()=>_U,contentInitial:()=>BU,disable:()=>$U,document:()=>MU,flow:()=>RU,flowInitial:()=>DU,insideSpan:()=>OU,string:()=>zU,text:()=>NU});var MU={42:En,43:En,45:En,48:En,49:En,50:En,51:En,52:En,53:En,54:En,55:En,56:En,57:En,62:Hc},BU={91:ax},DU={[-2]:La,[-1]:La,32:La},RU={35:cx,42:mi,45:[Jc,mi],60:px,61:Jc,95:mi,96:Gc,126:Gc},zU={38:Vc,92:Wc},NU={[-5]:Ba,[-4]:Ba,[-3]:Ba,33:gx,38:Vc,42:Pa,60:[ox,dx],91:fx,92:[lx,Wc],93:fi,95:Pa,96:ix},OU={null:[Pa,LT]},_U={null:[42,95]},$U={null:[]};function zT(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},o={},i=[],s=[],a=[],u=!0,c={attempt:b(z),check:b(m),consume:N,enter:j,exit:B,interrupt:b(m,{interrupt:!0})},l={code:null,containerState:{},defineSkip:I,events:[],now:T,parser:e,previous:null,sliceSerialize:h,sliceStream:S,write:p},d=t.tokenize.call(l,c),g;return t.resolveAll&&i.push(t),l;function p(C){return s=Nn(s,C),v(),s[s.length-1]!==null?[]:(k(t,0),l.events=as(i,l.events,l),l.events)}function h(C,E){return jU(S(C),E)}function S(C){return UU(s,C)}function T(){let{_bufferIndex:C,_index:E,line:x,column:F,offset:P}=r;return{_bufferIndex:C,_index:E,line:x,column:F,offset:P}}function I(C){o[C.line]=C.column,f()}function v(){let C;for(;r._index<s.length;){let E=s[r._index];if(typeof E=="string")for(C=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===C&&r._bufferIndex<E.length;)D(E.charCodeAt(r._bufferIndex));else D(E)}}function D(C){u=void 0,g=C,d=d(C)}function N(C){de(C)?(r.line++,r.column=1,r.offset+=C===-3?2:1,f()):C!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===s[r._index].length&&(r._bufferIndex=-1,r._index++)),l.previous=C,u=!0}function j(C,E){let x=E||{};return x.type=C,x.start=T(),l.events.push(["enter",x,l]),a.push(x),x}function B(C){let E=a.pop();return E.end=T(),l.events.push(["exit",E,l]),E}function z(C,E){k(C,E.from)}function m(C,E){E.restore()}function b(C,E){return x;function x(F,P,M){let O,w,R,W;return Array.isArray(F)?oe(F):"tokenize"in F?oe([F]):L(F);function L(Ee){return nt;function nt(Pe){let ge=Pe!==null&&Ee[Pe],dt=Pe!==null&&Ee.null,fe=[...Array.isArray(ge)?ge:ge?[ge]:[],...Array.isArray(dt)?dt:dt?[dt]:[]];return oe(fe)(Pe)}}function oe(Ee){return O=Ee,w=0,Ee.length===0?M:X(Ee[w])}function X(Ee){return nt;function nt(Pe){return W=A(),R=Ee,Ee.partial||(l.currentConstruct=Ee),Ee.name&&l.parser.constructs.disable.null.includes(Ee.name)?xe(Pe):Ee.tokenize.call(E?Object.assign(Object.create(l),E):l,c,ne,xe)(Pe)}}function ne(Ee){return u=!0,C(R,W),P}function xe(Ee){return u=!0,W.restore(),++w<O.length?X(O[w]):M}}}function k(C,E){C.resolveAll&&!i.includes(C)&&i.push(C),C.resolve&&yn(l.events,E,l.events.length-E,C.resolve(l.events.slice(E),l)),C.resolveTo&&(l.events=C.resolveTo(l.events,l))}function A(){let C=T(),E=l.previous,x=l.currentConstruct,F=l.events.length,P=Array.from(a);return{from:F,restore:M};function M(){r=C,l.previous=E,l.currentConstruct=x,l.events.length=F,a=P,f()}}function f(){r.line in o&&r.column<2&&(r.column=o[r.line],r.offset+=o[r.line]-1)}}function UU(e,t){let n=t.start._index,r=t.start._bufferIndex,o=t.end._index,i=t.end._bufferIndex,s;if(n===o)s=[e[n].slice(r,i)];else{if(s=e.slice(n,o),r>-1){let a=s[0];typeof a=="string"?s[0]=a.slice(r):s.shift()}i>0&&s.push(e[o].slice(0,i))}return s}function jU(e,t){let n=-1,r=[],o;for(;++n<e.length;){let i=e[n],s;if(typeof i=="string")s=i;else switch(i){case-5:{s="\r";break}case-4:{s=`
|
|
81
|
+
`,vie=on.div(({theme:e})=>({width:"12px",height:"12px",borderRadius:"50%",border:"2px solid transparent",borderTopColor:e.textMutedColor,animation:`${t3} 0.8s linear infinite`,flexShrink:0})),P1=on.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.layoutMargin*.5}px`,padding:`${e.layoutMargin*.3}px ${e.layoutMargin*.9}px`,borderRadius:e.appBorderRadius*2,backgroundColor:e.base==="dark"?"rgba(220, 38, 38, 0.18)":"#fee2e2",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.negative||"#dc2626",whiteSpace:"nowrap"})),n3=on.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:`${e.layoutMargin*.5}px`,padding:`${e.layoutMargin*.3}px ${e.layoutMargin*.9}px`,borderRadius:e.appBorderRadius*2,backgroundColor:e.base==="dark"?"rgba(22, 163, 74, 0.18)":"#dcfce7",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:e.color.positive||"#16a34a",whiteSpace:"nowrap",position:"relative",overflow:"visible"})),kie=on.span(({delay:e,left:t,color:n,size:r})=>({position:"absolute",top:"-10px",left:`${t}%`,width:`${r}px`,height:`${r}px`,backgroundColor:n,borderRadius:r>6?"50%":"2px",animation:`${e3} 2.5s ease-out ${e}s forwards`,pointerEvents:"none",zIndex:1e3}));var Sa=on.span(({theme:e})=>({color:e.color.mediumlight,fontSize:"14px",fontWeight:300})),wa=on.span(({theme:e,color:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"12px",fontWeight:500,color:t??e.color.mediumdark,whiteSpace:"nowrap"})),L1=on.span(({theme:e,color:t})=>({fontSize:"12px",color:t??e.color.mediumdark})),va=on.span(({color:e})=>({fontWeight:700,color:e})),r3=on.div(({tint:e,theme:t})=>({display:"inline-flex",alignItems:"center",gap:`${t.layoutMargin*.6}px`,padding:`${t.layoutMargin*.3}px ${t.layoutMargin}px`,borderRadius:t.appBorderRadius*2,backgroundColor:`${e}1a`,border:`1px solid ${e}33`,"& .score-label":{fontSize:t.typography.size.s1,color:t.textMutedColor},"& .score-value":{fontFamily:t.typography.fonts.mono,fontSize:t.typography.size.s2,fontWeight:t.typography.weight.bold,color:e,lineHeight:1},"& .score-dot":{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:e}})),Cie=on.span(({theme:e})=>({color:e.color.mediumlight,fontSize:"12px"})),Tie=on.span(({color:e=le})=>({display:"inline-block",fontSize:"12px",color:e,animation:`${Q5} 1.2s ease-in-out infinite`,marginRight:"4px"})),Iie=on.span(({theme:e,variant:t="muted"})=>({fontSize:"12px",fontWeight:700,color:(()=>{switch(t){case"issues":return le;case"score-high":return"#16a34a";case"score-medium":return"#ca8a04";case"score-low":return"#dc2626";case"cost":return"#7c3aed";case"tokens":return e.color.mediumdark;case"analyzing":return le;case"verifying":return"#7c3aed";default:return e.color.mediumdark}})(),whiteSpace:"nowrap",...t==="analyzing"||t==="verifying"?{animation:`${Z5} 1.5s ease-in-out infinite`}:{}})),Fie=on.span(({theme:e})=>({fontSize:"12px",fontWeight:400,color:e.color.mediumdark})),Eie=on.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark,fontWeight:400})),o3=on.span({display:"inline-flex",alignItems:"center",justifyContent:"center",width:"16px",height:"16px",animation:`${J5} 1.2s linear infinite`,flexShrink:0}),i3=({color:e=le})=>Re.createElement(o3,null,Re.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none"},Array.from({length:8}).map((t,n)=>{let o=n*360/8*Math.PI/180,i=12+Math.cos(o)*4,s=12+Math.sin(o)*4,a=12+Math.cos(o)*10,u=12+Math.sin(o)*10;return Re.createElement("line",{key:n,x1:i,y1:s,x2:a,y2:u,stroke:e,strokeWidth:2,strokeLinecap:"round",opacity:.3+n/8*.7})}))),Aie=on.span(({color:e="#6b7280"})=>({fontSize:"12px",fontWeight:500,fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace',color:e,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",animation:`${M1} 0.3s ease-out`}));function s3(e){let[t,n]=K5(0);return X5(()=>{if(!e){n(0);return}let r=setInterval(()=>{n(o=>o+1)},1e3);return()=>clearInterval(r)},[e]),t}var B1=({isReviewing:e,isValidating:t,streamingStatus:n,issueCount:r=0,score:o,band:i,visualSimilarity:s,costUsd:a,inputTokens:u,outputTokens:c,showTimer:l=!0,cacheCreationTokens:d,cacheReadTokens:g,durationSeconds:p})=>{let h=s3(e||t),{featureFlags:S}=ue(),T=S.showCosts,I=3.65,v=z=>z<.01?`$${z.toFixed(4)}`:z<.1?`$${z.toFixed(3)}`:`$${z.toFixed(2)}`,D=z=>{let m=z*I;return m<.01?`\u20AA${m.toFixed(4)}`:m<.1?`\u20AA${m.toFixed(3)}`:`\u20AA${m.toFixed(2)}`},N=z=>z>=1e3?`${(z/1e3).toFixed(1)}K`:z.toString(),j=z=>z>=80?"score-high":z>=50?"score-medium":"score-low",B=z=>z>=80?"high":z>=50?"medium":"low";if(e)return Re.createElement(zh,null,Re.createElement("span",{style:{fontSize:"12px",color:"#9ca3af"}},h,"s \xB7 Esc to stop"));if(t)return Re.createElement(zh,null,Re.createElement(P1,null,Re.createElement("span",null,"\u2298"),r," issue",r!==1?"s":""),Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement(i3,{color:"#7c3aed"}),Re.createElement(va,{color:"#7c3aed"},"Verifying...")),l&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement("span",{style:{color:"#6b7280"}},h,"s"))));if(r>0||o!==void 0){let z=(u||0)+(c||0),m=(g||0)>0,b=m&&u?Math.round(g/u*100):0,k=i?ao[i]:100,A=Math.min(Math.max(o??0,s??0),k),f=E=>E>=80?"#16a34a":E>=50?"#ca8a04":"#dc2626",C=E=>E>=100?"\u25CF":E>=50?"\u25D0":"\u25CB";return Re.createElement(zh,null,r===0&&(o===void 0||o>=100)?Re.createElement(n3,null,Re.createElement("span",null,"\u2713"),"Perfect!"):Re.createElement(P1,null,Re.createElement("span",null,"\u2298"),r," issue",r!==1?"s":""),Re.createElement(r3,{tint:f(A),title:i==="D"?`Band D \u2014 has critical issues. Fix criticals to score above ${ao.D}.`:i==="C"?`Band C \u2014 has major issues. Fix majors to score above ${ao.C}.`:i==="B"?"Band B \u2014 minor issues only.":i==="A"?"Band A \u2014 no open issues.":`Compliance score: ${A}%`},Re.createElement("span",{className:"score-dot"}),Re.createElement("span",{className:"score-label"},"Score"),Re.createElement("span",{className:"score-value"},A,i?` \xB7 ${i}`:"")),T&&a!==void 0&&a>0&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement(va,{color:"#16a34a"},v(a)),Re.createElement("span",{style:{color:"#6b7280"}},"/"),Re.createElement(va,{color:"#16a34a"},D(a)))),T&&z>0&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,{title:`Input: ${u?.toLocaleString()||0} \xB7 Output: ${c?.toLocaleString()||0}${m?` \xB7 Cached: ${g?.toLocaleString()}`:""}`},Re.createElement(L1,{color:"#7c3aed"},"#"),Re.createElement(va,{color:"#7c3aed"},N(z)),Re.createElement("span",{style:{color:"#6b7280"}},"tokens"),m&&Re.createElement("span",{style:{color:"#16a34a",marginLeft:"4px"}},"\u26A1",b,"%"))),p!==void 0&&p>0&&Re.createElement(Re.Fragment,null,Re.createElement(Sa,null,"|"),Re.createElement(wa,null,Re.createElement(L1,{color:"#6b7280"},"\u23F1"),Re.createElement(va,{color:"#6b7280"},p,"s"))))}return null};var u3=zn.div({display:"flex",flexDirection:"column",gap:"12px",marginBottom:"16px"}),jie=zn.div({display:"flex",gap:"8px",alignItems:"center"}),p3=c3({from:{transform:"rotate(0deg)"},to:{transform:"rotate(360deg)"}}),d3=zn.span({display:"inline-block",width:"16px",height:"16px",borderRadius:"50%",border:"2px solid rgba(255, 255, 255, 0.35)",borderTopColor:"#ffffff",animation:`${p3} 0.8s linear infinite`,marginRight:"8px",verticalAlign:"middle"}),g3=zn.span({display:"inline-flex",alignItems:"center",marginRight:"8px","& svg":{width:"16px",height:"16px"}}),f3=zn.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin}px`,padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.2}px`,borderRadius:e.appBorderRadius*2,border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content,boxShadow:"0 1px 2px rgba(0, 0, 0, 0.03)",flexWrap:"wrap"})),m3=zn.button(({theme:e,variant:t="orange",disabled:n})=>{let r={green:n?e.textMutedColor:e.color.positive||"#10b981",purple:n?e.textMutedColor:"#7c3aed",yellow:n?e.textMutedColor:"#c4b5fd",orange:n?e.textMutedColor:nl},o=t==="purple"||t==="yellow"?"124, 58, 237":"255, 107, 53";return{width:"auto",backgroundColor:r[t],color:e.color.inverseText,border:"none",padding:`${e.layoutMargin*.7}px ${e.layoutMargin*1.4}px`,fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,borderRadius:e.appBorderRadius,cursor:n?"not-allowed":"pointer",opacity:n?.6:1,whiteSpace:"nowrap",transition:"all 0.2s",boxShadow:n?"none":`0 2px 6px rgba(${o}, 0.3)`,flexShrink:0,"&:hover":{opacity:n?.6:.9,transform:n?"none":"translateY(-1px)",boxShadow:n?"none":`0 4px 10px rgba(${o}, 0.4)`}}}),h3=zn.div(({theme:e})=>({marginTop:"8px",fontSize:"12px",color:e.color.warning||"#f59e0b",display:"flex",alignItems:"center",gap:"6px"})),x3=zn.div({marginLeft:"auto",display:"flex",flexDirection:"row",alignItems:"center",gap:"8px",minWidth:0}),y3=zn(vn)({width:"auto",minWidth:"180px",maxWidth:"260px"}),D1=zn.span(({theme:e,variant:t})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,padding:"3px 8px",borderRadius:"10px",whiteSpace:"nowrap",color:t==="latest"?e.color.positive:e.color.mediumdark,backgroundColor:t==="latest"?`${e.color.positive}1a`:e.background.hoverable})),b3=zn.div({display:"flex",gap:"16px",alignItems:"center",marginTop:"4px"}),R1=zn.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",fontSize:"12px",color:e.color.defaultText,cursor:"pointer",userSelect:"none"})),z1=zn.div(({theme:e,checked:t})=>({width:"32px",height:"18px",borderRadius:"9px",backgroundColor:t?nl:e.appBorderColor||"#d1d5db",position:"relative",transition:"background-color 0.2s ease",flexShrink:0})),N1=zn.div(({checked:e})=>({width:"14px",height:"14px",borderRadius:"50%",backgroundColor:"#fff",position:"absolute",top:"2px",left:e?"16px":"2px",transition:"left 0.2s ease",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)"})),O1=zn.input({position:"absolute",opacity:0,width:0,height:0}),Nh=()=>{let{sessionToken:e}=Js(),{usageData:t}=ve(),{selectedProjectId:n}=uo(),{currentMapping:r,hasMapping:o}=ai(),{loadingMapping:i,currentStoryId:s}=Ze(),{startReview:a,cancelReview:u,isReviewing:c}=Bm(),{isLoadingScreenshots:l}=ii(),{storybookImageUrl:d,figmaImageUrl:g,currentReviewId:p,reviewHistory:h,setReviewDetailTab:S,setReviewResults:T,setFigmaImageUrl:I,setStorybookImageUrl:v,setFullPrompt:D,setFullResponse:N,includeTextComparison:j,setIncludeTextComparison:B,usePromptCache:z,setUsePromptCache:m,isValidating:b,validationUsage:k,isGenerating:A,isApplying:f,streamingStatus:C,featureFlags:E,userRole:x,roleOverride:F,isReviewing:P,isNewReviewMode:L}=ue(),O=t?.reviewCredits??t?.creditBalance??0,w=h.find(ie=>ie.id===p),W=(w?.issues||[]).filter(ie=>!ie.dismissed).length,M=w?Bh(w):null,oe=M?.score,X=M?.band,ne=w?.visualSimilarity,xe=(w?.costUsd||0)+(k?.costUsd||0),Ee=(w?.inputTokens||0)+(k?.inputTokens||0),nt=(w?.outputTokens||0)+(k?.outputTokens||0),Pe=l3(()=>{let ie=s?h.filter(G=>G.storyId===s):h,J=ie.filter(G=>!G.parentReviewId).sort((G,q)=>new Date(q.createdAt).getTime()-new Date(G.createdAt).getTime()),me=ie.filter(G=>G.parentReviewId),$=[];for(let G of J){$.push(G);let q=me.filter(V=>V.parentReviewId===G.id).sort((V,he)=>(V.iterationNumber||0)-(he.iterationNumber||0));$.push(...q)}let _=me.filter(G=>!J.some(q=>q.id===G.parentReviewId));return $.push(..._),$},[h,s]);a3(()=>{if(!c)return;let ie=J=>{J.key==="Escape"&&(J.preventDefault(),u())};return window.addEventListener("keydown",ie),()=>window.removeEventListener("keydown",ie)},[c,u]);let ge=o&&r?.figmaNodeId,dt=A||f,fe=O>0,ce=!!(e&&n&&!c&&!l&&!dt&&s&&d&&ge&&g&&fe),pe=!!p&&!L,at=async(ie=!1)=>{if(!s){console.error("[ReviewActions] No story selected");return}try{S("chat"),await a({isIteration:ie,parentReviewId:ie?p:void 0})}catch(J){console.error("[ReviewActions] Review error:",J)}},It=()=>at(!1),gt=ie=>{let J=ie.target.value;if(J){let me=h.find($=>$.id===J);me&&(T({id:me.id,componentId:me.componentId,storyId:me.storyId,modelId:me.modelId,complianceScore:me.complianceScore,issuesCount:me.issuesCount,issues:me.issues,createdAt:new Date(me.createdAt),visualSimilarity:me.visualSimilarity,timestamp:new Date(me.createdAt).toISOString(),costUsd:me.costUsd,inputTokens:me.inputTokens,outputTokens:me.outputTokens,cacheCreationTokens:me.cacheCreationTokens,cacheReadTokens:me.cacheReadTokens,reviewDurationMs:me.reviewDurationMs}),me.figmaImageData&&I(me.figmaImageData),me.storybookImageData&&v(me.storybookImageData),(F??x)==="admin"&&(D(me.aiPrompt||""),N(me.aiResponse||"")),S("issues"))}},On=ie=>{let J=new Date(ie),$=new Date().getTime()-J.getTime(),_=Math.floor($/6e4),G=Math.floor($/36e5),q=Math.floor($/864e5);return _<1?"Just now":_<60?`${_}m ago`:G<24?`${G}h ago`:q<7?`${q}d ago`:J.toLocaleDateString()},Zn=ie=>ie?ie.includes("haiku")?"Haiku":ie.includes("sonnet")?"Sonnet":ie.includes("opus")?"Opus":ie.includes("gpt-4o-mini")?"GPT-4o mini":ie.includes("gpt-4o")?"GPT-4o":ie.includes("gpt-4")?"GPT-4":ie.includes("o3")?"o3":ie.includes("o1")?"o1":ie.split("-")[0]||"":"",Ge=ie=>{let J=ie.split("--"),me=J[J.length-1]||ie;return me.charAt(0).toUpperCase()+me.slice(1)},lt=(F??x)==="admin";return St.createElement("div",null,St.createElement(u3,null,E.enableModelSelection&&St.createElement(A1,null),lt&&St.createElement(b3,null,St.createElement(R1,{title:"Compare text content between Figma design and Storybook component"},St.createElement(O1,{type:"checkbox",checked:j,onChange:ie=>B(ie.target.checked)}),St.createElement(z1,{checked:j},St.createElement(N1,{checked:j})),"Compare text"),E.showCosts&&St.createElement(R1,{title:"Cache prompt for 5 min to reduce costs on repeat reviews (dev optimization)"},St.createElement(O1,{type:"checkbox",checked:z,onChange:ie=>m(ie.target.checked)}),St.createElement(z1,{checked:z},St.createElement(N1,{checked:z})),"Cache prompt")),St.createElement(f3,null,St.createElement(m3,{variant:c?"yellow":"purple",disabled:c?!1:!ce||pe,onClick:c?u:It,title:c?"Click to stop review":pe?'Switch to "Current" to run a new review':e?n?s?ge?l?"Loading screenshots...":dt?"Wait for fixes to complete...":d?g?fe?"Review this component implementation":"No credits \u2014 click \u26A1 in the toolbar to get more":"Waiting for Figma design image...":"Waiting for Storybook screenshot...":'Figma mapping required - use "Map to Figma" in the Review tab':"No story selected":"Please select a project first":`Please connect to ${At.NAME} first`},c?St.createElement(St.Fragment,null,St.createElement(d3,null),"Stop"):St.createElement(St.Fragment,null,St.createElement(g3,null,St.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round"},St.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),St.createElement("circle",{cx:"12",cy:"12",r:"3"}))),"Review")),P?null:!L&&(b||w)?St.createElement(B1,{isReviewing:!1,isValidating:b,streamingStatus:C,issueCount:W,score:oe,band:X,visualSimilarity:ne,costUsd:xe||w?.costUsd,inputTokens:Ee||w?.inputTokens,outputTokens:nt||w?.outputTokens,cacheCreationTokens:w?.cacheCreationTokens,cacheReadTokens:w?.cacheReadTokens,durationSeconds:w?.reviewDurationMs?Math.round(w.reviewDurationMs/1e3):void 0}):null,Pe.length>0&&St.createElement(x3,null,!L&&p&&(p===Pe[0]?.id?St.createElement(D1,{variant:"latest",title:"You're viewing the most recent review for this story"},"Latest"):St.createElement(D1,{variant:"older",title:"You're viewing an older review \u2014 pick the top entry to see the latest"},"Older review")),St.createElement(y3,{value:L?"":p||"",onChange:gt,title:"Review history"},St.createElement("option",{value:""},"Select a review..."),Pe.map(ie=>{let J=!!ie.parentReviewId,me=J?" \u21B3 ":"\u25CF ",$=J&&ie.iterationNumber?`Iter ${ie.iterationNumber} - `:"",_=ie.issuesCount??ie.issues?.length??0,{score:G,band:q}=Bh(ie),V=ie.complianceScore!=null?G:"--",he=Zn(ie.modelId);return St.createElement("option",{key:ie.id,value:ie.id},me,$,On(ie.createdAt)," - ",_," issues (",V,"%",q?` \xB7 ${q}`:"",")",E.showCosts&&he?` \xB7 ${he}`:"",!s&&ie.storyId?` \xB7 ${Ge(ie.storyId)}`:"")}))))),!ge&&!i&&St.createElement(h3,null,'\u26A0\uFE0F Figma mapping required. Use "Map to Figma" button to link this story to a Figma frame before reviewing.'))};import Vie,{useState as Gie}from"react";import{styled as _1}from"storybook/theming";var Kie=_1.div(({theme:e})=>({display:"flex",borderBottom:`1px solid ${e.appBorderColor}`,marginBottom:"12px",gap:"4px"})),Xie=_1(Co)({padding:"8px 12px",fontSize:"12px"});import Zie,{useState as ese}from"react";import{styled as Oh}from"storybook/theming";Ce();_e();Oe();ct();var ase=Oh.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"12px",backgroundColor:e.background.app,border:`1px solid ${e.appBorderColor}`,borderRadius:"6px",fontSize:"13px"})),lse=Oh($r)({padding:"6px 12px",fontSize:"12px",display:"flex",alignItems:"center",gap:"6px"}),cse=Oh.span(({theme:e})=>({color:e.textMutedColor,fontSize:"12px",flex:1}));import dse from"react";import{styled as S3}from"storybook/theming";var mse=S3.div(({theme:e})=>({border:`2px dashed ${e.appBorderColor}`,borderRadius:"8px",padding:"40px",textAlign:"center",marginBottom:"20px",backgroundColor:e.background.app}));Ce();import yse from"react";import{styled as Kr}from"storybook/theming";var wse=Kr.div(({theme:e})=>({marginBottom:"16px",border:`1px solid ${e.appBorderColor}`,borderRadius:"8px",overflow:"hidden",backgroundColor:e.background.content})),vse=Kr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",backgroundColor:e.background.app,borderBottom:`1px solid ${e.appBorderColor}`})),kse=Kr.div({display:"flex",alignItems:"center",gap:"8px",flex:1}),Cse=Kr.div(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),Tse=Kr.div(({theme:e})=>({flex:1,height:"4px",backgroundColor:e.appBorderColor,borderRadius:"2px",overflow:"hidden",marginLeft:"12px"})),Ise=Kr.div(({theme:e,progress:t})=>({height:"100%",backgroundColor:t===100?e.color.positive||"#10b981":e.color.secondary,width:`${t}%`,transition:"width 0.3s ease, background-color 0.3s ease"})),Fse=Kr.span(({theme:e})=>({fontSize:"12px",color:e.textMutedColor,fontWeight:500,minWidth:"40px",textAlign:"right"})),Ese=Kr.div(({theme:e})=>({padding:"16px",backgroundColor:e.background.app,textAlign:"center"})),Ase=Kr.div(({theme:e})=>({display:"inline-block",width:"14px",height:"14px",border:`2px solid ${e.appBorderColor}`,borderTopColor:e.color.secondary,borderRadius:"50%",animation:"spin 0.8s linear infinite",marginLeft:"8px","@keyframes spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),Pse=Kr.span(({theme:e})=>({fontSize:"12px",color:e.textMutedColor,fontStyle:"italic"}));Ce();import Bse,{useState as Dse}from"react";import{styled as Xr}from"storybook/theming";var Nse=Xr.div(({theme:e})=>{let t=(e.base==="dark","102, 126, 234");return{padding:"10px 12px",backgroundColor:`rgba(${t}, 0.08)`,borderRadius:"6px",marginBottom:"16px",border:`1px solid rgba(${t}, 0.2)`}}),Ose=Xr.div({display:"flex",justifyContent:"space-between",alignItems:"center",cursor:"pointer",userSelect:"none"}),_se=Xr.div({display:"flex",alignItems:"center",gap:"8px"}),$se=Xr.span({fontSize:"12px",opacity:.7}),Use=Xr.span({fontSize:"13px",fontWeight:500}),jse=Xr.div(({score:e,theme:t})=>({display:"inline-block",padding:"4px 10px",borderRadius:"12px",fontSize:"13px",fontWeight:600,backgroundColor:e>=90?t.color.positive||"#10b981":e>=70?t.color.warning||"#f59e0b":t.color.negative||"#ef4444",color:t.color.inverseText})),Hse=Xr.div({marginTop:"12px",fontSize:"11px"}),Wse=Xr.div({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"6px",marginBottom:"8px"}),Vse=Xr.div(({status:e,theme:t})=>({display:"flex",alignItems:"center",gap:"4px",color:e==="success"?"inherit":e==="success"?t.color.positive||"#10b981":e==="warning"?t.color.warning||"#f59e0b":t.color.negative||"#ef4444"})),Gse=Xr.span({fontSize:"12px"});Oe();_e();import Zt from"react";import{styled as fs}from"storybook/theming";import Or,{useEffect as yV}from"react";import{styled as _a}from"storybook/theming";Ce();import xi,{useState as zj}from"react";import{styled as ps}from"storybook/theming";var $1={fontBase:'"Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',fontMono:'"SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace',sizeXs:"11px",sizeSm:"12px",sizeMd:"13px",sizeLg:"14px",sizeXl:"16px",weightRegular:400,weightMedium:500,weightBold:600};function U1(e,t){let n=t||{};return(e[e.length-1]===""?[...e,""]:e).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}var w3=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,v3=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,k3={};function Rc(e,t){return((t||k3).jsx?v3:w3).test(e)}var C3=/[ \t\n\f\r]/g;function _h(e){return typeof e=="object"?e.type==="text"?j1(e.value):!1:j1(e)}function j1(e){return e.replace(C3,"")===""}var ho=class{constructor(t,n,r){this.normal=n,this.property=t,r&&(this.space=r)}};ho.prototype.normal={};ho.prototype.property={};ho.prototype.space=void 0;function $h(e,t){let n={},r={};for(let o of e)Object.assign(n,o.property),Object.assign(r,o.normal);return new ho(n,r,t)}function ka(e){return e.toLowerCase()}var gn=class{constructor(t,n){this.attribute=n,this.property=t}};gn.prototype.attribute="";gn.prototype.booleanish=!1;gn.prototype.boolean=!1;gn.prototype.commaOrSpaceSeparated=!1;gn.prototype.commaSeparated=!1;gn.prototype.defined=!1;gn.prototype.mustUseProperty=!1;gn.prototype.number=!1;gn.prototype.overloadedBoolean=!1;gn.prototype.property="";gn.prototype.spaceSeparated=!1;gn.prototype.space=void 0;var Ca={};Se(Ca,{boolean:()=>We,booleanish:()=>jt,commaOrSpaceSeparated:()=>Qn,commaSeparated:()=>jo,number:()=>Q,overloadedBoolean:()=>zc,spaceSeparated:()=>Tt});var T3=0,We=ui(),jt=ui(),zc=ui(),Q=ui(),Tt=ui(),jo=ui(),Qn=ui();function ui(){return 2**++T3}var Uh=Object.keys(Ca),pi=class extends gn{constructor(t,n,r,o){let i=-1;if(super(t,n),H1(this,"space",o),typeof r=="number")for(;++i<Uh.length;){let s=Uh[i];H1(this,Uh[i],(r&Ca[s])===Ca[s])}}};pi.prototype.defined=!0;function H1(e,t,n){n&&(e[t]=n)}function br(e){let t={},n={};for(let[r,o]of Object.entries(e.properties)){let i=new pi(r,e.transform(e.attributes||{},r),o,e.space);e.mustUseProperty&&e.mustUseProperty.includes(r)&&(i.mustUseProperty=!0),t[r]=i,n[ka(r)]=r,n[ka(i.attribute)]=r}return new ho(t,n,e.space)}var jh=br({properties:{ariaActiveDescendant:null,ariaAtomic:jt,ariaAutoComplete:null,ariaBusy:jt,ariaChecked:jt,ariaColCount:Q,ariaColIndex:Q,ariaColSpan:Q,ariaControls:Tt,ariaCurrent:null,ariaDescribedBy:Tt,ariaDetails:null,ariaDisabled:jt,ariaDropEffect:Tt,ariaErrorMessage:null,ariaExpanded:jt,ariaFlowTo:Tt,ariaGrabbed:jt,ariaHasPopup:null,ariaHidden:jt,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Tt,ariaLevel:Q,ariaLive:null,ariaModal:jt,ariaMultiLine:jt,ariaMultiSelectable:jt,ariaOrientation:null,ariaOwns:Tt,ariaPlaceholder:null,ariaPosInSet:Q,ariaPressed:jt,ariaReadOnly:jt,ariaRelevant:null,ariaRequired:jt,ariaRoleDescription:Tt,ariaRowCount:Q,ariaRowIndex:Q,ariaRowSpan:Q,ariaSelected:jt,ariaSetSize:Q,ariaSort:null,ariaValueMax:Q,ariaValueMin:Q,ariaValueNow:Q,ariaValueText:null,role:null},transform(e,t){return t==="role"?t:"aria-"+t.slice(4).toLowerCase()}});function Nc(e,t){return t in e?e[t]:t}function Oc(e,t){return Nc(e,t.toLowerCase())}var W1=br({attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:jo,acceptCharset:Tt,accessKey:Tt,action:null,allow:null,allowFullScreen:We,allowPaymentRequest:We,allowUserMedia:We,alt:null,as:null,async:We,autoCapitalize:null,autoComplete:Tt,autoFocus:We,autoPlay:We,blocking:Tt,capture:null,charSet:null,checked:We,cite:null,className:Tt,cols:Q,colSpan:null,content:null,contentEditable:jt,controls:We,controlsList:Tt,coords:Q|jo,crossOrigin:null,data:null,dateTime:null,decoding:null,default:We,defer:We,dir:null,dirName:null,disabled:We,download:zc,draggable:jt,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:We,formTarget:null,headers:Tt,height:Q,hidden:zc,high:Q,href:null,hrefLang:null,htmlFor:Tt,httpEquiv:Tt,id:null,imageSizes:null,imageSrcSet:null,inert:We,inputMode:null,integrity:null,is:null,isMap:We,itemId:null,itemProp:Tt,itemRef:Tt,itemScope:We,itemType:Tt,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:We,low:Q,manifest:null,max:null,maxLength:Q,media:null,method:null,min:null,minLength:Q,multiple:We,muted:We,name:null,nonce:null,noModule:We,noValidate:We,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:We,optimum:Q,pattern:null,ping:Tt,placeholder:null,playsInline:We,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:We,referrerPolicy:null,rel:Tt,required:We,reversed:We,rows:Q,rowSpan:Q,sandbox:Tt,scope:null,scoped:We,seamless:We,selected:We,shadowRootClonable:We,shadowRootDelegatesFocus:We,shadowRootMode:null,shape:null,size:Q,sizes:null,slot:null,span:Q,spellCheck:jt,src:null,srcDoc:null,srcLang:null,srcSet:null,start:Q,step:null,style:null,tabIndex:Q,target:null,title:null,translate:null,type:null,typeMustMatch:We,useMap:null,value:jt,width:Q,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Tt,axis:null,background:null,bgColor:null,border:Q,borderColor:null,bottomMargin:Q,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:We,declare:We,event:null,face:null,frame:null,frameBorder:null,hSpace:Q,leftMargin:Q,link:null,longDesc:null,lowSrc:null,marginHeight:Q,marginWidth:Q,noResize:We,noHref:We,noShade:We,noWrap:We,object:null,profile:null,prompt:null,rev:null,rightMargin:Q,rules:null,scheme:null,scrolling:jt,standby:null,summary:null,text:null,topMargin:Q,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Q,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:We,disableRemotePlayback:We,prefix:null,property:null,results:Q,security:null,unselectable:null},space:"html",transform:Oc});var V1=br({attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},properties:{about:Qn,accentHeight:Q,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Q,amplitude:Q,arabicForm:null,ascent:Q,attributeName:null,attributeType:null,azimuth:Q,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Q,by:null,calcMode:null,capHeight:Q,className:Tt,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Q,diffuseConstant:Q,direction:null,display:null,dur:null,divisor:Q,dominantBaseline:null,download:We,dx:null,dy:null,edgeMode:null,editable:null,elevation:Q,enableBackground:null,end:null,event:null,exponent:Q,externalResourcesRequired:null,fill:null,fillOpacity:Q,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:jo,g2:jo,glyphName:jo,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Q,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Q,horizOriginX:Q,horizOriginY:Q,id:null,ideographic:Q,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Q,k:Q,k1:Q,k2:Q,k3:Q,k4:Q,kernelMatrix:Qn,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Q,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Q,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Q,overlineThickness:Q,paintOrder:null,panose1:null,path:null,pathLength:Q,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Tt,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Q,pointsAtY:Q,pointsAtZ:Q,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Qn,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Qn,rev:Qn,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Qn,requiredFeatures:Qn,requiredFonts:Qn,requiredFormats:Qn,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Q,specularExponent:Q,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Q,strikethroughThickness:Q,string:null,stroke:null,strokeDashArray:Qn,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Q,strokeOpacity:Q,strokeWidth:null,style:null,surfaceScale:Q,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Qn,tabIndex:Q,tableValues:null,target:null,targetX:Q,targetY:Q,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Qn,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:Q,underlineThickness:Q,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Q,values:null,vAlphabetic:Q,vMathematical:Q,vectorEffect:null,vHanging:Q,vIdeographic:Q,version:null,vertAdvY:Q,vertOriginX:Q,vertOriginY:Q,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Q,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null},space:"svg",transform:Nc});var Hh=br({properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null},space:"xlink",transform(e,t){return"xlink:"+t.slice(5).toLowerCase()}});var Wh=br({attributes:{xmlnsxlink:"xmlns:xlink"},properties:{xmlnsXLink:null,xmlns:null},space:"xmlns",transform:Oc});var Vh=br({properties:{xmlBase:null,xmlLang:null,xmlSpace:null},space:"xml",transform(e,t){return"xml:"+t.slice(3).toLowerCase()}});var Gh={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};var I3=/[A-Z]/g,G1=/-[a-z]/g,F3=/^data[-\w.:]+$/i;function qh(e,t){let n=ka(t),r=t,o=gn;if(n in e.normal)return e.property[e.normal[n]];if(n.length>4&&n.slice(0,4)==="data"&&F3.test(t)){if(t.charAt(4)==="-"){let i=t.slice(5).replace(G1,A3);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{let i=t.slice(4);if(!G1.test(i)){let s=i.replace(I3,E3);s.charAt(0)!=="-"&&(s="-"+s),t="data"+s}}o=pi}return new o(r,t)}function E3(e){return"-"+e.toLowerCase()}function A3(e){return e.charAt(1).toUpperCase()}var q1=$h([jh,W1,Hh,Wh,Vh],"html"),_c=$h([jh,V1,Hh,Wh,Vh],"svg");function Y1(e){return e.join(" ").trim()}var cT=tl(iT(),1);var Uc=sT("end"),is=sT("start");function sT(e){return t;function t(n){let r=n&&n.position&&n.position[e]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Xh(e){let t=is(e),n=Uc(e);if(t&&n)return{start:t,end:n}}function Ho(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?aT(e.position):"start"in e||"end"in e?aT(e):"line"in e||"column"in e?Qh(e):""}function Qh(e){return lT(e&&e.line)+":"+lT(e&&e.column)}function aT(e){return Qh(e&&e.start)+"-"+Qh(e&&e.end)}function lT(e){return e&&typeof e=="number"?e:1}var qt=class extends Error{constructor(t,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let o="",i={},s=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof t=="string"?o=t:!i.cause&&t&&(s=!0,o=t.message,i.cause=t),!i.ruleId&&!i.source&&typeof r=="string"){let u=r.indexOf(":");u===-1?i.ruleId=r:(i.source=r.slice(0,u),i.ruleId=r.slice(u+1))}if(!i.place&&i.ancestors&&i.ancestors){let u=i.ancestors[i.ancestors.length-1];u&&(i.place=u.position)}let a=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=a?a.column:void 0,this.fatal=void 0,this.file="",this.message=o,this.line=a?a.line:void 0,this.name=Ho(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=s&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}};qt.prototype.file="";qt.prototype.name="";qt.prototype.reason="";qt.prototype.message="";qt.prototype.stack="";qt.prototype.column=void 0;qt.prototype.line=void 0;qt.prototype.ancestors=void 0;qt.prototype.cause=void 0;qt.prototype.fatal=void 0;qt.prototype.place=void 0;qt.prototype.ruleId=void 0;qt.prototype.source=void 0;var Jh={}.hasOwnProperty,t6=new Map,n6=/[A-Z]/g,r6=new Set(["table","tbody","thead","tfoot","tr"]),o6=new Set(["td","th"]),uT="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Zh(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");let n=t.filePath||void 0,r;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=d6(n,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=p6(n,t.jsx,t.jsxs)}let o={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:r,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?_c:q1,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},i=pT(o,e,void 0);return i&&typeof i!="string"?i:o.create(e,o.Fragment,{children:i||void 0},void 0)}function pT(e,t,n){if(t.type==="element")return i6(e,t,n);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return s6(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return l6(e,t,n);if(t.type==="mdxjsEsm")return a6(e,t);if(t.type==="root")return c6(e,t,n);if(t.type==="text")return u6(e,t)}function i6(e,t,n){let r=e.schema,o=r;t.tagName.toLowerCase()==="svg"&&r.space==="html"&&(o=_c,e.schema=o),e.ancestors.push(t);let i=gT(e,t.tagName,!1),s=g6(e,t),a=tx(e,t);return r6.has(t.tagName)&&(a=a.filter(function(u){return typeof u=="string"?!_h(u):!0})),dT(e,s,i,t),ex(s,a),e.ancestors.pop(),e.schema=r,e.create(t,i,s,n)}function s6(e,t){if(t.data&&t.data.estree&&e.evaluater){let r=t.data.estree.body[0];return r.type,e.evaluater.evaluateExpression(r.expression)}Ia(e,t.position)}function a6(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);Ia(e,t.position)}function l6(e,t,n){let r=e.schema,o=r;t.name==="svg"&&r.space==="html"&&(o=_c,e.schema=o),e.ancestors.push(t);let i=t.name===null?e.Fragment:gT(e,t.name,!0),s=f6(e,t),a=tx(e,t);return dT(e,s,i,t),ex(s,a),e.ancestors.pop(),e.schema=r,e.create(t,i,s,n)}function c6(e,t,n){let r={};return ex(r,tx(e,t)),e.create(t,e.Fragment,r,n)}function u6(e,t){return t.value}function dT(e,t,n,r){typeof n!="string"&&n!==e.Fragment&&e.passNode&&(t.node=r)}function ex(e,t){if(t.length>0){let n=t.length>1?t:t[0];n&&(e.children=n)}}function p6(e,t,n){return r;function r(o,i,s,a){let c=Array.isArray(s.children)?n:t;return a?c(i,s,a):c(i,s)}}function d6(e,t){return n;function n(r,o,i,s){let a=Array.isArray(i.children),u=is(r);return t(o,i,s,a,{columnNumber:u?u.column-1:void 0,fileName:e,lineNumber:u?u.line:void 0},void 0)}}function g6(e,t){let n={},r,o;for(o in t.properties)if(o!=="children"&&Jh.call(t.properties,o)){let i=m6(e,o,t.properties[o]);if(i){let[s,a]=i;e.tableCellAlignToStyle&&s==="align"&&typeof a=="string"&&o6.has(t.tagName)?r=a:n[s]=a}}if(r){let i=n.style||(n.style={});i[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function f6(e,t){let n={};for(let r of t.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&e.evaluater){let i=r.data.estree.body[0];i.type;let s=i.expression;s.type;let a=s.properties[0];a.type,Object.assign(n,e.evaluater.evaluateExpression(a.argument))}else Ia(e,t.position);else{let o=r.name,i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&e.evaluater){let a=r.value.data.estree.body[0];a.type,i=e.evaluater.evaluateExpression(a.expression)}else Ia(e,t.position);else i=r.value===null?!0:r.value;n[o]=i}return n}function tx(e,t){let n=[],r=-1,o=e.passKeys?new Map:t6;for(;++r<t.children.length;){let i=t.children[r],s;if(e.passKeys){let u=i.type==="element"?i.tagName:i.type==="mdxJsxFlowElement"||i.type==="mdxJsxTextElement"?i.name:void 0;if(u){let c=o.get(u)||0;s=u+"-"+c,o.set(u,c+1)}}let a=pT(e,i,s);a!==void 0&&n.push(a)}return n}function m6(e,t,n){let r=qh(e.schema,t);if(!(n==null||typeof n=="number"&&Number.isNaN(n))){if(Array.isArray(n)&&(n=r.commaSeparated?U1(n):Y1(n)),r.property==="style"){let o=typeof n=="object"?n:h6(e,String(n));return e.stylePropertyNameCase==="css"&&(o=x6(o)),["style",o]}return[e.elementAttributeNameCase==="react"&&r.space?Gh[r.property]||r.property:r.attribute,n]}}function h6(e,t){try{return(0,cT.default)(t,{reactCompat:!0})}catch(n){if(e.ignoreInvalidStyle)return{};let r=n,o=new qt("Cannot parse `style` attribute",{ancestors:e.ancestors,cause:r,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw o.file=e.filePath||void 0,o.url=uT+"#cannot-parse-style-attribute",o}}function gT(e,t,n){let r;if(!n)r={type:"Literal",value:t};else if(t.includes(".")){let o=t.split("."),i=-1,s;for(;++i<o.length;){let a=Rc(o[i])?{type:"Identifier",name:o[i]}:{type:"Literal",value:o[i]};s=s?{type:"MemberExpression",object:s,property:a,computed:!!(i&&a.type==="Literal"),optional:!1}:a}r=s}else r=Rc(t)&&!/^[a-z]/.test(t)?{type:"Identifier",name:t}:{type:"Literal",value:t};if(r.type==="Literal"){let o=r.value;return Jh.call(e.components,o)?e.components[o]:o}if(e.evaluater)return e.evaluater.evaluateExpression(r);Ia(e)}function Ia(e,t){let n=new qt("Cannot handle MDX estrees without `createEvaluater`",{ancestors:e.ancestors,place:t,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw n.file=e.filePath||void 0,n.url=uT+"#cannot-handle-mdx-estrees-without-createevaluater",n}function x6(e){let t={},n;for(n in e)Jh.call(e,n)&&(t[y6(n)]=e[n]);return t}function y6(e){let t=e.replace(n6,b6);return t.slice(0,3)==="ms-"&&(t="-"+t),t}function b6(e){return"-"+e.toLowerCase()}var Fa={action:["form"],cite:["blockquote","del","ins","q"],data:["object"],formAction:["button","input"],href:["a","area","base","link"],icon:["menuitem"],itemId:null,manifest:["html"],ping:["a","area"],poster:["video"],src:["audio","embed","iframe","img","input","script","source","track","video"]};import{Fragment as Fj,jsx as Ej,jsxs as Aj}from"react/jsx-runtime";import{useEffect as ofe,useState as ife}from"react";var S6={};function nx(e,t){let n=t||S6,r=typeof n.includeImageAlt=="boolean"?n.includeImageAlt:!0,o=typeof n.includeHtml=="boolean"?n.includeHtml:!0;return mT(e,r,o)}function mT(e,t,n){if(w6(e)){if("value"in e)return e.type==="html"&&!n?"":e.value;if(t&&"alt"in e&&e.alt)return e.alt;if("children"in e)return fT(e.children,t,n)}return Array.isArray(e)?fT(e,t,n):""}function fT(e,t,n){let r=[],o=-1;for(;++o<e.length;)r[o]=mT(e[o],t,n);return r.join("")}function w6(e){return!!(e&&typeof e=="object")}var hT=document.createElement("i");function ss(e){let t="&"+e+";";hT.innerHTML=t;let n=hT.textContent;return n.charCodeAt(n.length-1)===59&&e!=="semi"||n===t?!1:n}function yn(e,t,n,r){let o=e.length,i=0,s;if(t<0?t=-t>o?0:o+t:t=t>o?o:t,n=n>0?n:0,r.length<1e4)s=Array.from(r),s.unshift(t,n),e.splice(...s);else for(n&&e.splice(t,n);i<r.length;)s=r.slice(i,i+1e4),s.unshift(t,0),e.splice(...s),i+=1e4,t+=1e4}function Nn(e,t){return e.length>0?(yn(e,e.length,0,t),e):t}var xT={}.hasOwnProperty;function yT(e){let t={},n=-1;for(;++n<e.length;)v6(t,e[n]);return t}function v6(e,t){let n;for(n in t){let o=(xT.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n],s;if(i)for(s in i){xT.call(o,s)||(o[s]=[]);let a=i[s];k6(o[s],Array.isArray(a)?a:a?[a]:[])}}}function k6(e,t){let n=-1,r=[];for(;++n<t.length;)(t[n].add==="after"?e:r).push(t[n]);yn(e,0,0,r)}function jc(e,t){let n=Number.parseInt(e,t);return n<9||n===11||n>13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"\uFFFD":String.fromCodePoint(n)}function xo(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var ar=Wo(/[A-Za-z]/),fn=Wo(/[\dA-Za-z]/),bT=Wo(/[#-'*+\--9=?A-Z^-~]/);function Ea(e){return e!==null&&(e<32||e===127)}var Aa=Wo(/\d/),ST=Wo(/[\dA-Fa-f]/),wT=Wo(/[!-/:-@[-`{-~]/);function de(e){return e!==null&&e<-2}function Yt(e){return e!==null&&(e<0||e===32)}function je(e){return e===-2||e===-1||e===32}var vT=Wo(/\p{P}|\p{S}/u),kT=Wo(/\s/);function Wo(e){return t;function t(n){return n!==null&&n>-1&&e.test(String.fromCharCode(n))}}function Sr(e){let t=[],n=-1,r=0,o=0;for(;++n<e.length;){let i=e.charCodeAt(n),s="";if(i===37&&fn(e.charCodeAt(n+1))&&fn(e.charCodeAt(n+2)))o=2;else if(i<128)/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(i))||(s=String.fromCharCode(i));else if(i>55295&&i<57344){let a=e.charCodeAt(n+1);i<56320&&a>56319&&a<57344?(s=String.fromCharCode(i,a),o=1):s="\uFFFD"}else s=String.fromCharCode(i);s&&(t.push(e.slice(r,n),encodeURIComponent(s)),r=n+o+1,s=""),o&&(n+=o,o=0)}return t.join("")+e.slice(r)}function Ve(e,t,n,r){let o=r?r-1:Number.POSITIVE_INFINITY,i=0;return s;function s(u){return je(u)?(e.enter(n),a(u)):t(u)}function a(u){return je(u)&&i++<o?(e.consume(u),a):(e.exit(n),t(u))}}var CT={tokenize:C6};function C6(e){let t=e.attempt(this.parser.constructs.contentInitial,r,o),n;return t;function r(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),Ve(e,t,"linePrefix")}function o(a){return e.enter("paragraph"),i(a)}function i(a){let u=e.enter("chunkText",{contentType:"text",previous:n});return n&&(n.next=u),n=u,s(a)}function s(a){if(a===null){e.exit("chunkText"),e.exit("paragraph"),e.consume(a);return}return de(a)?(e.consume(a),e.exit("chunkText"),i):(e.consume(a),s)}}var IT={tokenize:T6},TT={tokenize:I6};function T6(e){let t=this,n=[],r=0,o,i,s;return a;function a(D){if(r<n.length){let N=n[r];return t.containerState=N[1],e.attempt(N[0].continuation,u,c)(D)}return c(D)}function u(D){if(r++,t.containerState._closeFlow){t.containerState._closeFlow=void 0,o&&v();let N=t.events.length,j=N,B;for(;j--;)if(t.events[j][0]==="exit"&&t.events[j][1].type==="chunkFlow"){B=t.events[j][1].end;break}I(r);let z=N;for(;z<t.events.length;)t.events[z][1].end={...B},z++;return yn(t.events,j+1,0,t.events.slice(N)),t.events.length=z,c(D)}return a(D)}function c(D){if(r===n.length){if(!o)return g(D);if(o.currentConstruct&&o.currentConstruct.concrete)return h(D);t.interrupt=!!(o.currentConstruct&&!o._gfmTableDynamicInterruptHack)}return t.containerState={},e.check(TT,l,d)(D)}function l(D){return o&&v(),I(r),g(D)}function d(D){return t.parser.lazy[t.now().line]=r!==n.length,s=t.now().offset,h(D)}function g(D){return t.containerState={},e.attempt(TT,p,h)(D)}function p(D){return r++,n.push([t.currentConstruct,t.containerState]),g(D)}function h(D){if(D===null){o&&v(),I(0),e.consume(D);return}return o=o||t.parser.flow(t.now()),e.enter("chunkFlow",{_tokenizer:o,contentType:"flow",previous:i}),S(D)}function S(D){if(D===null){T(e.exit("chunkFlow"),!0),I(0),e.consume(D);return}return de(D)?(e.consume(D),T(e.exit("chunkFlow")),r=0,t.interrupt=void 0,a):(e.consume(D),S)}function T(D,N){let j=t.sliceStream(D);if(N&&j.push(null),D.previous=i,i&&(i.next=D),i=D,o.defineSkip(D.start),o.write(j),t.parser.lazy[D.start.line]){let B=o.events.length;for(;B--;)if(o.events[B][1].start.offset<s&&(!o.events[B][1].end||o.events[B][1].end.offset>s))return;let z=t.events.length,m=z,b,k;for(;m--;)if(t.events[m][0]==="exit"&&t.events[m][1].type==="chunkFlow"){if(b){k=t.events[m][1].end;break}b=!0}for(I(r),B=z;B<t.events.length;)t.events[B][1].end={...k},B++;yn(t.events,m+1,0,t.events.slice(z)),t.events.length=B}}function I(D){let N=n.length;for(;N-- >D;){let j=n[N];t.containerState=j[1],j[0].exit.call(t,e)}n.length=D}function v(){o.write([null]),i=void 0,o=void 0,t.containerState._closeFlow=void 0}}function I6(e,t,n){return Ve(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function rx(e){if(e===null||Yt(e)||kT(e))return 1;if(vT(e))return 2}function as(e,t,n){let r=[],o=-1;for(;++o<e.length;){let i=e[o].resolveAll;i&&!r.includes(i)&&(t=i(t,n),r.push(i))}return t}var Pa={name:"attention",resolveAll:F6,tokenize:E6};function F6(e,t){let n=-1,r,o,i,s,a,u,c,l;for(;++n<e.length;)if(e[n][0]==="enter"&&e[n][1].type==="attentionSequence"&&e[n][1]._close){for(r=n;r--;)if(e[r][0]==="exit"&&e[r][1].type==="attentionSequence"&&e[r][1]._open&&t.sliceSerialize(e[r][1]).charCodeAt(0)===t.sliceSerialize(e[n][1]).charCodeAt(0)){if((e[r][1]._close||e[n][1]._open)&&(e[n][1].end.offset-e[n][1].start.offset)%3&&!((e[r][1].end.offset-e[r][1].start.offset+e[n][1].end.offset-e[n][1].start.offset)%3))continue;u=e[r][1].end.offset-e[r][1].start.offset>1&&e[n][1].end.offset-e[n][1].start.offset>1?2:1;let d={...e[r][1].end},g={...e[n][1].start};FT(d,-u),FT(g,u),s={type:u>1?"strongSequence":"emphasisSequence",start:d,end:{...e[r][1].end}},a={type:u>1?"strongSequence":"emphasisSequence",start:{...e[n][1].start},end:g},i={type:u>1?"strongText":"emphasisText",start:{...e[r][1].end},end:{...e[n][1].start}},o={type:u>1?"strong":"emphasis",start:{...s.start},end:{...a.end}},e[r][1].end={...s.start},e[n][1].start={...a.end},c=[],e[r][1].end.offset-e[r][1].start.offset&&(c=Nn(c,[["enter",e[r][1],t],["exit",e[r][1],t]])),c=Nn(c,[["enter",o,t],["enter",s,t],["exit",s,t],["enter",i,t]]),c=Nn(c,as(t.parser.constructs.insideSpan.null,e.slice(r+1,n),t)),c=Nn(c,[["exit",i,t],["enter",a,t],["exit",a,t],["exit",o,t]]),e[n][1].end.offset-e[n][1].start.offset?(l=2,c=Nn(c,[["enter",e[n][1],t],["exit",e[n][1],t]])):l=0,yn(e,r-1,n-r+3,c),n=r+c.length-l-2;break}}for(n=-1;++n<e.length;)e[n][1].type==="attentionSequence"&&(e[n][1].type="data");return e}function E6(e,t){let n=this.parser.constructs.attentionMarkers.null,r=this.previous,o=rx(r),i;return s;function s(u){return i=u,e.enter("attentionSequence"),a(u)}function a(u){if(u===i)return e.consume(u),a;let c=e.exit("attentionSequence"),l=rx(u),d=!l||l===2&&o||n.includes(u),g=!o||o===2&&l||n.includes(r);return c._open=!!(i===42?d:d&&(o||!g)),c._close=!!(i===42?g:g&&(l||!d)),t(u)}}function FT(e,t){e.column+=t,e.offset+=t,e._bufferIndex+=t}var ox={name:"autolink",tokenize:A6};function A6(e,t,n){let r=0;return o;function o(p){return e.enter("autolink"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.enter("autolinkProtocol"),i}function i(p){return ar(p)?(e.consume(p),s):p===64?n(p):c(p)}function s(p){return p===43||p===45||p===46||fn(p)?(r=1,a(p)):c(p)}function a(p){return p===58?(e.consume(p),r=0,u):(p===43||p===45||p===46||fn(p))&&r++<32?(e.consume(p),a):(r=0,c(p))}function u(p){return p===62?(e.exit("autolinkProtocol"),e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):p===null||p===32||p===60||Ea(p)?n(p):(e.consume(p),u)}function c(p){return p===64?(e.consume(p),l):bT(p)?(e.consume(p),c):n(p)}function l(p){return fn(p)?d(p):n(p)}function d(p){return p===46?(e.consume(p),r=0,l):p===62?(e.exit("autolinkProtocol").type="autolinkEmail",e.enter("autolinkMarker"),e.consume(p),e.exit("autolinkMarker"),e.exit("autolink"),t):g(p)}function g(p){if((p===45||fn(p))&&r++<63){let h=p===45?g:d;return e.consume(p),h}return n(p)}}var Vo={partial:!0,tokenize:P6};function P6(e,t,n){return r;function r(i){return je(i)?Ve(e,o,"linePrefix")(i):o(i)}function o(i){return i===null||de(i)?t(i):n(i)}}var Hc={continuation:{tokenize:M6},exit:B6,name:"blockQuote",tokenize:L6};function L6(e,t,n){let r=this;return o;function o(s){if(s===62){let a=r.containerState;return a.open||(e.enter("blockQuote",{_container:!0}),a.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(s),e.exit("blockQuoteMarker"),i}return n(s)}function i(s){return je(s)?(e.enter("blockQuotePrefixWhitespace"),e.consume(s),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(s))}}function M6(e,t,n){let r=this;return o;function o(s){return je(s)?Ve(e,i,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s):i(s)}function i(s){return e.attempt(Hc,t,n)(s)}}function B6(e){e.exit("blockQuote")}var Wc={name:"characterEscape",tokenize:D6};function D6(e,t,n){return r;function r(i){return e.enter("characterEscape"),e.enter("escapeMarker"),e.consume(i),e.exit("escapeMarker"),o}function o(i){return wT(i)?(e.enter("characterEscapeValue"),e.consume(i),e.exit("characterEscapeValue"),e.exit("characterEscape"),t):n(i)}}var Vc={name:"characterReference",tokenize:R6};function R6(e,t,n){let r=this,o=0,i,s;return a;function a(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),u}function u(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),c):(e.enter("characterReferenceValue"),i=31,s=fn,l(d))}function c(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),i=6,s=ST,l):(e.enter("characterReferenceValue"),i=7,s=Aa,l(d))}function l(d){if(d===59&&o){let g=e.exit("characterReferenceValue");return s===fn&&!ss(r.sliceSerialize(g))?n(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)}return s(d)&&o++<i?(e.consume(d),l):n(d)}}var ET={partial:!0,tokenize:N6},Gc={concrete:!0,name:"codeFenced",tokenize:z6};function z6(e,t,n){let r=this,o={partial:!0,tokenize:j},i=0,s=0,a;return u;function u(B){return c(B)}function c(B){let z=r.events[r.events.length-1];return i=z&&z[1].type==="linePrefix"?z[2].sliceSerialize(z[1],!0).length:0,a=B,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),l(B)}function l(B){return B===a?(s++,e.consume(B),l):s<3?n(B):(e.exit("codeFencedFenceSequence"),je(B)?Ve(e,d,"whitespace")(B):d(B))}function d(B){return B===null||de(B)?(e.exit("codeFencedFence"),r.interrupt?t(B):e.check(ET,S,N)(B)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),g(B))}function g(B){return B===null||de(B)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),d(B)):je(B)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),Ve(e,p,"whitespace")(B)):B===96&&B===a?n(B):(e.consume(B),g)}function p(B){return B===null||de(B)?d(B):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),h(B))}function h(B){return B===null||de(B)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),d(B)):B===96&&B===a?n(B):(e.consume(B),h)}function S(B){return e.attempt(o,N,T)(B)}function T(B){return e.enter("lineEnding"),e.consume(B),e.exit("lineEnding"),I}function I(B){return i>0&&je(B)?Ve(e,v,"linePrefix",i+1)(B):v(B)}function v(B){return B===null||de(B)?e.check(ET,S,N)(B):(e.enter("codeFlowValue"),D(B))}function D(B){return B===null||de(B)?(e.exit("codeFlowValue"),v(B)):(e.consume(B),D)}function N(B){return e.exit("codeFenced"),t(B)}function j(B,z,m){let b=0;return k;function k(x){return B.enter("lineEnding"),B.consume(x),B.exit("lineEnding"),A}function A(x){return B.enter("codeFencedFence"),je(x)?Ve(B,f,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(x):f(x)}function f(x){return x===a?(B.enter("codeFencedFenceSequence"),C(x)):m(x)}function C(x){return x===a?(b++,B.consume(x),C):b>=s?(B.exit("codeFencedFenceSequence"),je(x)?Ve(B,E,"whitespace")(x):E(x)):m(x)}function E(x){return x===null||de(x)?(B.exit("codeFencedFence"),z(x)):m(x)}}}function N6(e,t,n){let r=this;return o;function o(s){return s===null?n(s):(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i)}function i(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}var La={name:"codeIndented",tokenize:_6},O6={partial:!0,tokenize:$6};function _6(e,t,n){let r=this;return o;function o(c){return e.enter("codeIndented"),Ve(e,i,"linePrefix",5)(c)}function i(c){let l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?s(c):n(c)}function s(c){return c===null?u(c):de(c)?e.attempt(O6,s,u)(c):(e.enter("codeFlowValue"),a(c))}function a(c){return c===null||de(c)?(e.exit("codeFlowValue"),s(c)):(e.consume(c),a)}function u(c){return e.exit("codeIndented"),t(c)}}function $6(e,t,n){let r=this;return o;function o(s){return r.parser.lazy[r.now().line]?n(s):de(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),o):Ve(e,i,"linePrefix",5)(s)}function i(s){let a=r.events[r.events.length-1];return a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?t(s):de(s)?o(s):n(s)}}var ix={name:"codeText",previous:j6,resolve:U6,tokenize:H6};function U6(e){let t=e.length-4,n=3,r,o;if((e[n][1].type==="lineEnding"||e[n][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(r=n;++r<t;)if(e[r][1].type==="codeTextData"){e[n][1].type="codeTextPadding",e[t][1].type="codeTextPadding",n+=2,t-=2;break}}for(r=n-1,t++;++r<=t;)o===void 0?r!==t&&e[r][1].type!=="lineEnding"&&(o=r):(r===t||e[r][1].type==="lineEnding")&&(e[o][1].type="codeTextData",r!==o+2&&(e[o][1].end=e[r-1][1].end,e.splice(o+2,r-o-2),t-=r-o-2,r=o+2),o=void 0);return e}function j6(e){return e!==96||this.events[this.events.length-1][1].type==="characterEscape"}function H6(e,t,n){let r=this,o=0,i,s;return a;function a(g){return e.enter("codeText"),e.enter("codeTextSequence"),u(g)}function u(g){return g===96?(e.consume(g),o++,u):(e.exit("codeTextSequence"),c(g))}function c(g){return g===null?n(g):g===32?(e.enter("space"),e.consume(g),e.exit("space"),c):g===96?(s=e.enter("codeTextSequence"),i=0,d(g)):de(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),c):(e.enter("codeTextData"),l(g))}function l(g){return g===null||g===32||g===96||de(g)?(e.exit("codeTextData"),c(g)):(e.consume(g),l)}function d(g){return g===96?(e.consume(g),i++,d):i===o?(e.exit("codeTextSequence"),e.exit("codeText"),t(g)):(s.type="codeTextData",l(g))}}var qc=class{constructor(t){this.left=t?[...t]:[],this.right=[]}get(t){if(t<0||t>=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return t<this.left.length?this.left[t]:this.right[this.right.length-t+this.left.length-1]}get length(){return this.left.length+this.right.length}shift(){return this.setCursor(0),this.right.pop()}slice(t,n){let r=n??Number.POSITIVE_INFINITY;return r<this.left.length?this.left.slice(t,r):t>this.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(t,n,r){let o=n||0;this.setCursor(Math.trunc(t));let i=this.right.splice(this.right.length-o,Number.POSITIVE_INFINITY);return r&&Ma(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),Ma(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),Ma(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t<this.left.length){let n=this.left.splice(t,Number.POSITIVE_INFINITY);Ma(this.right,n.reverse())}else{let n=this.right.splice(this.left.length+this.right.length-t,Number.POSITIVE_INFINITY);Ma(this.left,n.reverse())}}};function Ma(e,t){let n=0;if(t.length<1e4)e.push(...t);else for(;n<t.length;)e.push(...t.slice(n,n+1e4)),n+=1e4}function Yc(e){let t={},n=-1,r,o,i,s,a,u,c,l=new qc(e);for(;++n<l.length;){for(;n in t;)n=t[n];if(r=l.get(n),n&&r[1].type==="chunkFlow"&&l.get(n-1)[1].type==="listItemPrefix"&&(u=r[1]._tokenizer.events,i=0,i<u.length&&u[i][1].type==="lineEndingBlank"&&(i+=2),i<u.length&&u[i][1].type==="content"))for(;++i<u.length&&u[i][1].type!=="content";)u[i][1].type==="chunkText"&&(u[i][1]._isInFirstContentOfListItem=!0,i++);if(r[0]==="enter")r[1].contentType&&(Object.assign(t,W6(l,n)),n=t[n],c=!0);else if(r[1]._container){for(i=n,o=void 0;i--;)if(s=l.get(i),s[1].type==="lineEnding"||s[1].type==="lineEndingBlank")s[0]==="enter"&&(o&&(l.get(o)[1].type="lineEndingBlank"),s[1].type="lineEnding",o=i);else if(!(s[1].type==="linePrefix"||s[1].type==="listItemIndent"))break;o&&(r[1].end={...l.get(o)[1].start},a=l.slice(o,n),a.unshift(r),l.splice(o,n-o+1,a))}}return yn(e,0,Number.POSITIVE_INFINITY,l.slice(0)),!c}function W6(e,t){let n=e.get(t)[1],r=e.get(t)[2],o=t-1,i=[],s=n._tokenizer;s||(s=r.parser[n.contentType](n.start),n._contentTypeTextTrailing&&(s._contentTypeTextTrailing=!0));let a=s.events,u=[],c={},l,d,g=-1,p=n,h=0,S=0,T=[S];for(;p;){for(;e.get(++o)[1]!==p;);i.push(o),p._tokenizer||(l=r.sliceStream(p),p.next||l.push(null),d&&s.defineSkip(p.start),p._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=!0),s.write(l),p._isInFirstContentOfListItem&&(s._gfmTasklistFirstContentOfListItem=void 0)),d=p,p=p.next}for(p=n;++g<a.length;)a[g][0]==="exit"&&a[g-1][0]==="enter"&&a[g][1].type===a[g-1][1].type&&a[g][1].start.line!==a[g][1].end.line&&(S=g+1,T.push(S),p._tokenizer=void 0,p.previous=void 0,p=p.next);for(s.events=[],p?(p._tokenizer=void 0,p.previous=void 0):T.pop(),g=T.length;g--;){let I=a.slice(T[g],T[g+1]),v=i.pop();u.push([v,v+I.length-1]),e.splice(v,2,I)}for(u.reverse(),g=-1;++g<u.length;)c[h+u[g][0]]=h+u[g][1],h+=u[g][1]-u[g][0]-1;return c}var sx={resolve:G6,tokenize:q6},V6={partial:!0,tokenize:Y6};function G6(e){return Yc(e),e}function q6(e,t){let n;return r;function r(a){return e.enter("content"),n=e.enter("chunkContent",{contentType:"content"}),o(a)}function o(a){return a===null?i(a):de(a)?e.check(V6,s,i)(a):(e.consume(a),o)}function i(a){return e.exit("chunkContent"),e.exit("content"),t(a)}function s(a){return e.consume(a),e.exit("chunkContent"),n.next=e.enter("chunkContent",{contentType:"content",previous:n}),n=n.next,o}}function Y6(e,t,n){let r=this;return o;function o(s){return e.exit("chunkContent"),e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),Ve(e,i,"linePrefix")}function i(s){if(s===null||de(s))return n(s);let a=r.events[r.events.length-1];return!r.parser.constructs.disable.null.includes("codeIndented")&&a&&a[1].type==="linePrefix"&&a[2].sliceSerialize(a[1],!0).length>=4?t(s):e.interrupt(r.parser.constructs.flow,n,t)(s)}}function Kc(e,t,n,r,o,i,s,a,u){let c=u||Number.POSITIVE_INFINITY,l=0;return d;function d(I){return I===60?(e.enter(r),e.enter(o),e.enter(i),e.consume(I),e.exit(i),g):I===null||I===32||I===41||Ea(I)?n(I):(e.enter(r),e.enter(s),e.enter(a),e.enter("chunkString",{contentType:"string"}),S(I))}function g(I){return I===62?(e.enter(i),e.consume(I),e.exit(i),e.exit(o),e.exit(r),t):(e.enter(a),e.enter("chunkString",{contentType:"string"}),p(I))}function p(I){return I===62?(e.exit("chunkString"),e.exit(a),g(I)):I===null||I===60||de(I)?n(I):(e.consume(I),I===92?h:p)}function h(I){return I===60||I===62||I===92?(e.consume(I),p):p(I)}function S(I){return!l&&(I===null||I===41||Yt(I))?(e.exit("chunkString"),e.exit(a),e.exit(s),e.exit(r),t(I)):l<c&&I===40?(e.consume(I),l++,S):I===41?(e.consume(I),l--,S):I===null||I===32||I===40||Ea(I)?n(I):(e.consume(I),I===92?T:S)}function T(I){return I===40||I===41||I===92?(e.consume(I),S):S(I)}}function Xc(e,t,n,r,o,i){let s=this,a=0,u;return c;function c(p){return e.enter(r),e.enter(o),e.consume(p),e.exit(o),e.enter(i),l}function l(p){return a>999||p===null||p===91||p===93&&!u||p===94&&!a&&"_hiddenFootnoteSupport"in s.parser.constructs?n(p):p===93?(e.exit(i),e.enter(o),e.consume(p),e.exit(o),e.exit(r),t):de(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),l):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||de(p)||a++>999?(e.exit("chunkString"),l(p)):(e.consume(p),u||(u=!je(p)),p===92?g:d)}function g(p){return p===91||p===92||p===93?(e.consume(p),a++,d):d(p)}}function Qc(e,t,n,r,o,i){let s;return a;function a(g){return g===34||g===39||g===40?(e.enter(r),e.enter(o),e.consume(g),e.exit(o),s=g===40?41:g,u):n(g)}function u(g){return g===s?(e.enter(o),e.consume(g),e.exit(o),e.exit(r),t):(e.enter(i),c(g))}function c(g){return g===s?(e.exit(i),u(s)):g===null?n(g):de(g)?(e.enter("lineEnding"),e.consume(g),e.exit("lineEnding"),Ve(e,c,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),l(g))}function l(g){return g===s||g===null||de(g)?(e.exit("chunkString"),c(g)):(e.consume(g),g===92?d:l)}function d(g){return g===s||g===92?(e.consume(g),l):l(g)}}function gi(e,t){let n;return r;function r(o){return de(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),n=!0,r):je(o)?Ve(e,r,n?"linePrefix":"lineSuffix")(o):t(o)}}var ax={name:"definition",tokenize:X6},K6={partial:!0,tokenize:Q6};function X6(e,t,n){let r=this,o;return i;function i(p){return e.enter("definition"),s(p)}function s(p){return Xc.call(r,e,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function a(p){return o=xo(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),u):n(p)}function u(p){return Yt(p)?gi(e,c)(p):c(p)}function c(p){return Kc(e,l,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function l(p){return e.attempt(K6,d,d)(p)}function d(p){return je(p)?Ve(e,g,"whitespace")(p):g(p)}function g(p){return p===null||de(p)?(e.exit("definition"),r.parser.defined.push(o),t(p)):n(p)}}function Q6(e,t,n){return r;function r(a){return Yt(a)?gi(e,o)(a):n(a)}function o(a){return Qc(e,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(a)}function i(a){return je(a)?Ve(e,s,"whitespace")(a):s(a)}function s(a){return a===null||de(a)?t(a):n(a)}}var lx={name:"hardBreakEscape",tokenize:J6};function J6(e,t,n){return r;function r(i){return e.enter("hardBreakEscape"),e.consume(i),o}function o(i){return de(i)?(e.exit("hardBreakEscape"),t(i)):n(i)}}var cx={name:"headingAtx",resolve:Z6,tokenize:eU};function Z6(e,t){let n=e.length-2,r=3,o,i;return e[r][1].type==="whitespace"&&(r+=2),n-2>r&&e[n][1].type==="whitespace"&&(n-=2),e[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&e[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(o={type:"atxHeadingText",start:e[r][1].start,end:e[n][1].end},i={type:"chunkText",start:e[r][1].start,end:e[n][1].end,contentType:"text"},yn(e,r,n-r+1,[["enter",o,t],["enter",i,t],["exit",i,t],["exit",o,t]])),e}function eU(e,t,n){let r=0;return o;function o(l){return e.enter("atxHeading"),i(l)}function i(l){return e.enter("atxHeadingSequence"),s(l)}function s(l){return l===35&&r++<6?(e.consume(l),s):l===null||Yt(l)?(e.exit("atxHeadingSequence"),a(l)):n(l)}function a(l){return l===35?(e.enter("atxHeadingSequence"),u(l)):l===null||de(l)?(e.exit("atxHeading"),t(l)):je(l)?Ve(e,a,"whitespace")(l):(e.enter("atxHeadingText"),c(l))}function u(l){return l===35?(e.consume(l),u):(e.exit("atxHeadingSequence"),a(l))}function c(l){return l===null||l===35||Yt(l)?(e.exit("atxHeadingText"),a(l)):(e.consume(l),c)}}var AT=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ux=["pre","script","style","textarea"];var px={concrete:!0,name:"htmlFlow",resolveTo:rU,tokenize:oU},tU={partial:!0,tokenize:sU},nU={partial:!0,tokenize:iU};function rU(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function oU(e,t,n){let r=this,o,i,s,a,u;return c;function c(M){return l(M)}function l(M){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(M),d}function d(M){return M===33?(e.consume(M),g):M===47?(e.consume(M),i=!0,S):M===63?(e.consume(M),o=3,r.interrupt?t:w):ar(M)?(e.consume(M),s=String.fromCharCode(M),T):n(M)}function g(M){return M===45?(e.consume(M),o=2,p):M===91?(e.consume(M),o=5,a=0,h):ar(M)?(e.consume(M),o=4,r.interrupt?t:w):n(M)}function p(M){return M===45?(e.consume(M),r.interrupt?t:w):n(M)}function h(M){let oe="CDATA[";return M===oe.charCodeAt(a++)?(e.consume(M),a===oe.length?r.interrupt?t:f:h):n(M)}function S(M){return ar(M)?(e.consume(M),s=String.fromCharCode(M),T):n(M)}function T(M){if(M===null||M===47||M===62||Yt(M)){let oe=M===47,X=s.toLowerCase();return!oe&&!i&&ux.includes(X)?(o=1,r.interrupt?t(M):f(M)):AT.includes(s.toLowerCase())?(o=6,oe?(e.consume(M),I):r.interrupt?t(M):f(M)):(o=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(M):i?v(M):D(M))}return M===45||fn(M)?(e.consume(M),s+=String.fromCharCode(M),T):n(M)}function I(M){return M===62?(e.consume(M),r.interrupt?t:f):n(M)}function v(M){return je(M)?(e.consume(M),v):k(M)}function D(M){return M===47?(e.consume(M),k):M===58||M===95||ar(M)?(e.consume(M),N):je(M)?(e.consume(M),D):k(M)}function N(M){return M===45||M===46||M===58||M===95||fn(M)?(e.consume(M),N):j(M)}function j(M){return M===61?(e.consume(M),B):je(M)?(e.consume(M),j):D(M)}function B(M){return M===null||M===60||M===61||M===62||M===96?n(M):M===34||M===39?(e.consume(M),u=M,z):je(M)?(e.consume(M),B):m(M)}function z(M){return M===u?(e.consume(M),u=null,b):M===null||de(M)?n(M):(e.consume(M),z)}function m(M){return M===null||M===34||M===39||M===47||M===60||M===61||M===62||M===96||Yt(M)?j(M):(e.consume(M),m)}function b(M){return M===47||M===62||je(M)?D(M):n(M)}function k(M){return M===62?(e.consume(M),A):n(M)}function A(M){return M===null||de(M)?f(M):je(M)?(e.consume(M),A):n(M)}function f(M){return M===45&&o===2?(e.consume(M),F):M===60&&o===1?(e.consume(M),P):M===62&&o===4?(e.consume(M),R):M===63&&o===3?(e.consume(M),w):M===93&&o===5?(e.consume(M),O):de(M)&&(o===6||o===7)?(e.exit("htmlFlowData"),e.check(tU,W,C)(M)):M===null||de(M)?(e.exit("htmlFlowData"),C(M)):(e.consume(M),f)}function C(M){return e.check(nU,E,W)(M)}function E(M){return e.enter("lineEnding"),e.consume(M),e.exit("lineEnding"),x}function x(M){return M===null||de(M)?C(M):(e.enter("htmlFlowData"),f(M))}function F(M){return M===45?(e.consume(M),w):f(M)}function P(M){return M===47?(e.consume(M),s="",L):f(M)}function L(M){if(M===62){let oe=s.toLowerCase();return ux.includes(oe)?(e.consume(M),R):f(M)}return ar(M)&&s.length<8?(e.consume(M),s+=String.fromCharCode(M),L):f(M)}function O(M){return M===93?(e.consume(M),w):f(M)}function w(M){return M===62?(e.consume(M),R):M===45&&o===2?(e.consume(M),w):f(M)}function R(M){return M===null||de(M)?(e.exit("htmlFlowData"),W(M)):(e.consume(M),R)}function W(M){return e.exit("htmlFlow"),t(M)}}function iU(e,t,n){let r=this;return o;function o(s){return de(s)?(e.enter("lineEnding"),e.consume(s),e.exit("lineEnding"),i):n(s)}function i(s){return r.parser.lazy[r.now().line]?n(s):t(s)}}function sU(e,t,n){return r;function r(o){return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),e.attempt(Vo,t,n)}}var dx={name:"htmlText",tokenize:aU};function aU(e,t,n){let r=this,o,i,s;return a;function a(w){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(w),u}function u(w){return w===33?(e.consume(w),c):w===47?(e.consume(w),j):w===63?(e.consume(w),D):ar(w)?(e.consume(w),m):n(w)}function c(w){return w===45?(e.consume(w),l):w===91?(e.consume(w),i=0,h):ar(w)?(e.consume(w),v):n(w)}function l(w){return w===45?(e.consume(w),p):n(w)}function d(w){return w===null?n(w):w===45?(e.consume(w),g):de(w)?(s=d,P(w)):(e.consume(w),d)}function g(w){return w===45?(e.consume(w),p):d(w)}function p(w){return w===62?F(w):w===45?g(w):d(w)}function h(w){let R="CDATA[";return w===R.charCodeAt(i++)?(e.consume(w),i===R.length?S:h):n(w)}function S(w){return w===null?n(w):w===93?(e.consume(w),T):de(w)?(s=S,P(w)):(e.consume(w),S)}function T(w){return w===93?(e.consume(w),I):S(w)}function I(w){return w===62?F(w):w===93?(e.consume(w),I):S(w)}function v(w){return w===null||w===62?F(w):de(w)?(s=v,P(w)):(e.consume(w),v)}function D(w){return w===null?n(w):w===63?(e.consume(w),N):de(w)?(s=D,P(w)):(e.consume(w),D)}function N(w){return w===62?F(w):D(w)}function j(w){return ar(w)?(e.consume(w),B):n(w)}function B(w){return w===45||fn(w)?(e.consume(w),B):z(w)}function z(w){return de(w)?(s=z,P(w)):je(w)?(e.consume(w),z):F(w)}function m(w){return w===45||fn(w)?(e.consume(w),m):w===47||w===62||Yt(w)?b(w):n(w)}function b(w){return w===47?(e.consume(w),F):w===58||w===95||ar(w)?(e.consume(w),k):de(w)?(s=b,P(w)):je(w)?(e.consume(w),b):F(w)}function k(w){return w===45||w===46||w===58||w===95||fn(w)?(e.consume(w),k):A(w)}function A(w){return w===61?(e.consume(w),f):de(w)?(s=A,P(w)):je(w)?(e.consume(w),A):b(w)}function f(w){return w===null||w===60||w===61||w===62||w===96?n(w):w===34||w===39?(e.consume(w),o=w,C):de(w)?(s=f,P(w)):je(w)?(e.consume(w),f):(e.consume(w),E)}function C(w){return w===o?(e.consume(w),o=void 0,x):w===null?n(w):de(w)?(s=C,P(w)):(e.consume(w),C)}function E(w){return w===null||w===34||w===39||w===60||w===61||w===96?n(w):w===47||w===62||Yt(w)?b(w):(e.consume(w),E)}function x(w){return w===47||w===62||Yt(w)?b(w):n(w)}function F(w){return w===62?(e.consume(w),e.exit("htmlTextData"),e.exit("htmlText"),t):n(w)}function P(w){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(w),e.exit("lineEnding"),L}function L(w){return je(w)?Ve(e,O,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(w):O(w)}function O(w){return e.enter("htmlTextData"),s(w)}}var fi={name:"labelEnd",resolveAll:pU,resolveTo:dU,tokenize:gU},lU={tokenize:fU},cU={tokenize:mU},uU={tokenize:hU};function pU(e){let t=-1,n=[];for(;++t<e.length;){let r=e[t][1];if(n.push(e[t]),r.type==="labelImage"||r.type==="labelLink"||r.type==="labelEnd"){let o=r.type==="labelImage"?4:2;r.type="data",t+=o}}return e.length!==n.length&&yn(e,0,e.length,n),e}function dU(e,t){let n=e.length,r=0,o,i,s,a;for(;n--;)if(o=e[n][1],i){if(o.type==="link"||o.type==="labelLink"&&o._inactive)break;e[n][0]==="enter"&&o.type==="labelLink"&&(o._inactive=!0)}else if(s){if(e[n][0]==="enter"&&(o.type==="labelImage"||o.type==="labelLink")&&!o._balanced&&(i=n,o.type!=="labelLink")){r=2;break}}else o.type==="labelEnd"&&(s=n);let u={type:e[i][1].type==="labelLink"?"link":"image",start:{...e[i][1].start},end:{...e[e.length-1][1].end}},c={type:"label",start:{...e[i][1].start},end:{...e[s][1].end}},l={type:"labelText",start:{...e[i+r+2][1].end},end:{...e[s-2][1].start}};return a=[["enter",u,t],["enter",c,t]],a=Nn(a,e.slice(i+1,i+r+3)),a=Nn(a,[["enter",l,t]]),a=Nn(a,as(t.parser.constructs.insideSpan.null,e.slice(i+r+4,s-3),t)),a=Nn(a,[["exit",l,t],e[s-2],e[s-1],["exit",c,t]]),a=Nn(a,e.slice(s+1)),a=Nn(a,[["exit",u,t]]),yn(e,i,e.length,a),e}function gU(e,t,n){let r=this,o=r.events.length,i,s;for(;o--;)if((r.events[o][1].type==="labelImage"||r.events[o][1].type==="labelLink")&&!r.events[o][1]._balanced){i=r.events[o][1];break}return a;function a(g){return i?i._inactive?d(g):(s=r.parser.defined.includes(xo(r.sliceSerialize({start:i.end,end:r.now()}))),e.enter("labelEnd"),e.enter("labelMarker"),e.consume(g),e.exit("labelMarker"),e.exit("labelEnd"),u):n(g)}function u(g){return g===40?e.attempt(lU,l,s?l:d)(g):g===91?e.attempt(cU,l,s?c:d)(g):s?l(g):d(g)}function c(g){return e.attempt(uU,l,d)(g)}function l(g){return t(g)}function d(g){return i._balanced=!0,n(g)}}function fU(e,t,n){return r;function r(d){return e.enter("resource"),e.enter("resourceMarker"),e.consume(d),e.exit("resourceMarker"),o}function o(d){return Yt(d)?gi(e,i)(d):i(d)}function i(d){return d===41?l(d):Kc(e,s,a,"resourceDestination","resourceDestinationLiteral","resourceDestinationLiteralMarker","resourceDestinationRaw","resourceDestinationString",32)(d)}function s(d){return Yt(d)?gi(e,u)(d):l(d)}function a(d){return n(d)}function u(d){return d===34||d===39||d===40?Qc(e,c,n,"resourceTitle","resourceTitleMarker","resourceTitleString")(d):l(d)}function c(d){return Yt(d)?gi(e,l)(d):l(d)}function l(d){return d===41?(e.enter("resourceMarker"),e.consume(d),e.exit("resourceMarker"),e.exit("resource"),t):n(d)}}function mU(e,t,n){let r=this;return o;function o(a){return Xc.call(r,e,i,s,"reference","referenceMarker","referenceString")(a)}function i(a){return r.parser.defined.includes(xo(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)))?t(a):n(a)}function s(a){return n(a)}}function hU(e,t,n){return r;function r(i){return e.enter("reference"),e.enter("referenceMarker"),e.consume(i),e.exit("referenceMarker"),o}function o(i){return i===93?(e.enter("referenceMarker"),e.consume(i),e.exit("referenceMarker"),e.exit("reference"),t):n(i)}}var gx={name:"labelStartImage",resolveAll:fi.resolveAll,tokenize:xU};function xU(e,t,n){let r=this;return o;function o(a){return e.enter("labelImage"),e.enter("labelImageMarker"),e.consume(a),e.exit("labelImageMarker"),i}function i(a){return a===91?(e.enter("labelMarker"),e.consume(a),e.exit("labelMarker"),e.exit("labelImage"),s):n(a)}function s(a){return a===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(a):t(a)}}var fx={name:"labelStartLink",resolveAll:fi.resolveAll,tokenize:yU};function yU(e,t,n){let r=this;return o;function o(s){return e.enter("labelLink"),e.enter("labelMarker"),e.consume(s),e.exit("labelMarker"),e.exit("labelLink"),i}function i(s){return s===94&&"_hiddenFootnoteSupport"in r.parser.constructs?n(s):t(s)}}var Ba={name:"lineEnding",tokenize:bU};function bU(e,t){return n;function n(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),Ve(e,t,"linePrefix")}}var mi={name:"thematicBreak",tokenize:SU};function SU(e,t,n){let r=0,o;return i;function i(c){return e.enter("thematicBreak"),s(c)}function s(c){return o=c,a(c)}function a(c){return c===o?(e.enter("thematicBreakSequence"),u(c)):r>=3&&(c===null||de(c))?(e.exit("thematicBreak"),t(c)):n(c)}function u(c){return c===o?(e.consume(c),r++,u):(e.exit("thematicBreakSequence"),je(c)?Ve(e,a,"whitespace")(c):a(c))}}var En={continuation:{tokenize:CU},exit:IU,name:"list",tokenize:kU},wU={partial:!0,tokenize:FU},vU={partial:!0,tokenize:TU};function kU(e,t,n){let r=this,o=r.events[r.events.length-1],i=o&&o[1].type==="linePrefix"?o[2].sliceSerialize(o[1],!0).length:0,s=0;return a;function a(p){let h=r.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(h==="listUnordered"?!r.containerState.marker||p===r.containerState.marker:Aa(p)){if(r.containerState.type||(r.containerState.type=h,e.enter(h,{_container:!0})),h==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check(mi,n,c)(p):c(p);if(!r.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),u(p)}return n(p)}function u(p){return Aa(p)&&++s<10?(e.consume(p),u):(!r.interrupt||s<2)&&(r.containerState.marker?p===r.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),c(p)):n(p)}function c(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||p,e.check(Vo,r.interrupt?n:l,e.attempt(wU,g,d))}function l(p){return r.containerState.initialBlankLine=!0,i++,g(p)}function d(p){return je(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),g):n(p)}function g(p){return r.containerState.size=i+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function CU(e,t,n){let r=this;return r.containerState._closeFlow=void 0,e.check(Vo,o,i);function o(a){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Ve(e,t,"listItemIndent",r.containerState.size+1)(a)}function i(a){return r.containerState.furtherBlankLines||!je(a)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,s(a)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(vU,t,s)(a))}function s(a){return r.containerState._closeFlow=!0,r.interrupt=void 0,Ve(e,e.attempt(En,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(a)}}function TU(e,t,n){let r=this;return Ve(e,o,"listItemIndent",r.containerState.size+1);function o(i){let s=r.events[r.events.length-1];return s&&s[1].type==="listItemIndent"&&s[2].sliceSerialize(s[1],!0).length===r.containerState.size?t(i):n(i)}}function IU(e){e.exit(this.containerState.type)}function FU(e,t,n){let r=this;return Ve(e,o,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function o(i){let s=r.events[r.events.length-1];return!je(i)&&s&&s[1].type==="listItemPrefixWhitespace"?t(i):n(i)}}var Jc={name:"setextUnderline",resolveTo:EU,tokenize:AU};function EU(e,t){let n=e.length,r,o,i;for(;n--;)if(e[n][0]==="enter"){if(e[n][1].type==="content"){r=n;break}e[n][1].type==="paragraph"&&(o=n)}else e[n][1].type==="content"&&e.splice(n,1),!i&&e[n][1].type==="definition"&&(i=n);let s={type:"setextHeading",start:{...e[r][1].start},end:{...e[e.length-1][1].end}};return e[o][1].type="setextHeadingText",i?(e.splice(o,0,["enter",s,t]),e.splice(i+1,0,["exit",e[r][1],t]),e[r][1].end={...e[i][1].end}):e[r][1]=s,e.push(["exit",s,t]),e}function AU(e,t,n){let r=this,o;return i;function i(c){let l=r.events.length,d;for(;l--;)if(r.events[l][1].type!=="lineEnding"&&r.events[l][1].type!=="linePrefix"&&r.events[l][1].type!=="content"){d=r.events[l][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||d)?(e.enter("setextHeadingLine"),o=c,s(c)):n(c)}function s(c){return e.enter("setextHeadingLineSequence"),a(c)}function a(c){return c===o?(e.consume(c),a):(e.exit("setextHeadingLineSequence"),je(c)?Ve(e,u,"lineSuffix")(c):u(c))}function u(c){return c===null||de(c)?(e.exit("setextHeadingLine"),t(c)):n(c)}}var PT={tokenize:PU};function PU(e){let t=this,n=e.attempt(Vo,r,e.attempt(this.parser.constructs.flowInitial,o,Ve(e,e.attempt(this.parser.constructs.flow,o,e.attempt(sx,o)),"linePrefix")));return n;function r(i){if(i===null){e.consume(i);return}return e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n}function o(i){if(i===null){e.consume(i);return}return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),t.currentConstruct=void 0,n}}var LT={resolveAll:RT()},MT=DT("string"),BT=DT("text");function DT(e){return{resolveAll:RT(e==="text"?LU:void 0),tokenize:t};function t(n){let r=this,o=this.parser.constructs[e],i=n.attempt(o,s,a);return s;function s(l){return c(l)?i(l):a(l)}function a(l){if(l===null){n.consume(l);return}return n.enter("data"),n.consume(l),u}function u(l){return c(l)?(n.exit("data"),i(l)):(n.consume(l),u)}function c(l){if(l===null)return!0;let d=o[l],g=-1;if(d)for(;++g<d.length;){let p=d[g];if(!p.previous||p.previous.call(r,r.previous))return!0}return!1}}}function RT(e){return t;function t(n,r){let o=-1,i;for(;++o<=n.length;)i===void 0?n[o]&&n[o][1].type==="data"&&(i=o,o++):(!n[o]||n[o][1].type!=="data")&&(o!==i+2&&(n[i][1].end=n[o-1][1].end,n.splice(i+2,o-i-2),o=i+2),i=void 0);return e?e(n,r):n}}function LU(e,t){let n=0;for(;++n<=e.length;)if((n===e.length||e[n][1].type==="lineEnding")&&e[n-1][1].type==="data"){let r=e[n-1][1],o=t.sliceStream(r),i=o.length,s=-1,a=0,u;for(;i--;){let c=o[i];if(typeof c=="string"){for(s=c.length;c.charCodeAt(s-1)===32;)a++,s--;if(s)break;s=-1}else if(c===-2)u=!0,a++;else if(c!==-1){i++;break}}if(t._contentTypeTextTrailing&&n===e.length&&(a=0),a){let c={type:n===e.length||u||a<2?"lineSuffix":"hardBreakTrailing",start:{_bufferIndex:i?s:r.start._bufferIndex+s,_index:r.start._index+i,line:r.end.line,column:r.end.column-a,offset:r.end.offset-a},end:{...r.end}};r.end={...c.start},r.start.offset===r.end.offset?Object.assign(r,c):(e.splice(n,0,["enter",c,t],["exit",c,t]),n+=2)}n++}return e}var mx={};Se(mx,{attentionMarkers:()=>_U,contentInitial:()=>BU,disable:()=>$U,document:()=>MU,flow:()=>RU,flowInitial:()=>DU,insideSpan:()=>OU,string:()=>zU,text:()=>NU});var MU={42:En,43:En,45:En,48:En,49:En,50:En,51:En,52:En,53:En,54:En,55:En,56:En,57:En,62:Hc},BU={91:ax},DU={[-2]:La,[-1]:La,32:La},RU={35:cx,42:mi,45:[Jc,mi],60:px,61:Jc,95:mi,96:Gc,126:Gc},zU={38:Vc,92:Wc},NU={[-5]:Ba,[-4]:Ba,[-3]:Ba,33:gx,38:Vc,42:Pa,60:[ox,dx],91:fx,92:[lx,Wc],93:fi,95:Pa,96:ix},OU={null:[Pa,LT]},_U={null:[42,95]},$U={null:[]};function zT(e,t,n){let r={_bufferIndex:-1,_index:0,line:n&&n.line||1,column:n&&n.column||1,offset:n&&n.offset||0},o={},i=[],s=[],a=[],u=!0,c={attempt:b(z),check:b(m),consume:N,enter:j,exit:B,interrupt:b(m,{interrupt:!0})},l={code:null,containerState:{},defineSkip:I,events:[],now:T,parser:e,previous:null,sliceSerialize:h,sliceStream:S,write:p},d=t.tokenize.call(l,c),g;return t.resolveAll&&i.push(t),l;function p(C){return s=Nn(s,C),v(),s[s.length-1]!==null?[]:(k(t,0),l.events=as(i,l.events,l),l.events)}function h(C,E){return jU(S(C),E)}function S(C){return UU(s,C)}function T(){let{_bufferIndex:C,_index:E,line:x,column:F,offset:P}=r;return{_bufferIndex:C,_index:E,line:x,column:F,offset:P}}function I(C){o[C.line]=C.column,f()}function v(){let C;for(;r._index<s.length;){let E=s[r._index];if(typeof E=="string")for(C=r._index,r._bufferIndex<0&&(r._bufferIndex=0);r._index===C&&r._bufferIndex<E.length;)D(E.charCodeAt(r._bufferIndex));else D(E)}}function D(C){u=void 0,g=C,d=d(C)}function N(C){de(C)?(r.line++,r.column=1,r.offset+=C===-3?2:1,f()):C!==-1&&(r.column++,r.offset++),r._bufferIndex<0?r._index++:(r._bufferIndex++,r._bufferIndex===s[r._index].length&&(r._bufferIndex=-1,r._index++)),l.previous=C,u=!0}function j(C,E){let x=E||{};return x.type=C,x.start=T(),l.events.push(["enter",x,l]),a.push(x),x}function B(C){let E=a.pop();return E.end=T(),l.events.push(["exit",E,l]),E}function z(C,E){k(C,E.from)}function m(C,E){E.restore()}function b(C,E){return x;function x(F,P,L){let O,w,R,W;return Array.isArray(F)?oe(F):"tokenize"in F?oe([F]):M(F);function M(Ee){return nt;function nt(Pe){let ge=Pe!==null&&Ee[Pe],dt=Pe!==null&&Ee.null,fe=[...Array.isArray(ge)?ge:ge?[ge]:[],...Array.isArray(dt)?dt:dt?[dt]:[]];return oe(fe)(Pe)}}function oe(Ee){return O=Ee,w=0,Ee.length===0?L:X(Ee[w])}function X(Ee){return nt;function nt(Pe){return W=A(),R=Ee,Ee.partial||(l.currentConstruct=Ee),Ee.name&&l.parser.constructs.disable.null.includes(Ee.name)?xe(Pe):Ee.tokenize.call(E?Object.assign(Object.create(l),E):l,c,ne,xe)(Pe)}}function ne(Ee){return u=!0,C(R,W),P}function xe(Ee){return u=!0,W.restore(),++w<O.length?X(O[w]):L}}}function k(C,E){C.resolveAll&&!i.includes(C)&&i.push(C),C.resolve&&yn(l.events,E,l.events.length-E,C.resolve(l.events.slice(E),l)),C.resolveTo&&(l.events=C.resolveTo(l.events,l))}function A(){let C=T(),E=l.previous,x=l.currentConstruct,F=l.events.length,P=Array.from(a);return{from:F,restore:L};function L(){r=C,l.previous=E,l.currentConstruct=x,l.events.length=F,a=P,f()}}function f(){r.line in o&&r.column<2&&(r.column=o[r.line],r.offset+=o[r.line]-1)}}function UU(e,t){let n=t.start._index,r=t.start._bufferIndex,o=t.end._index,i=t.end._bufferIndex,s;if(n===o)s=[e[n].slice(r,i)];else{if(s=e.slice(n,o),r>-1){let a=s[0];typeof a=="string"?s[0]=a.slice(r):s.shift()}i>0&&s.push(e[o].slice(0,i))}return s}function jU(e,t){let n=-1,r=[],o;for(;++n<e.length;){let i=e[n],s;if(typeof i=="string")s=i;else switch(i){case-5:{s="\r";break}case-4:{s=`
|
|
82
82
|
`;break}case-3:{s=`\r
|
|
83
|
-
`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&o)continue;s=" ";break}default:s=String.fromCharCode(i)}o=i===-2,r.push(s)}return r.join("")}function hx(e){let r={constructs:yT([mx,...(e||{}).extensions||[]]),content:o(CT),defined:[],document:o(IT),flow:o(PT),lazy:{},string:o(MT),text:o(BT)};return r;function o(i){return s;function s(a){return zT(r,i,a)}}}function xx(e){for(;!Yc(e););return e}var NT=/[\0\t\n\r]/g;function yx(){let e=1,t="",n=!0,r;return o;function o(i,s,a){let u=[],c,l,d,g,p;for(i=t+(typeof i=="string"?i.toString():new TextDecoder(s||void 0).decode(i)),d=0,t="",n&&(i.charCodeAt(0)===65279&&d++,n=void 0);d<i.length;){if(NT.lastIndex=d,c=NT.exec(i),g=c&&c.index!==void 0?c.index:i.length,p=i.charCodeAt(g),!c){t=i.slice(d);break}if(p===10&&d===g&&r)u.push(-3),r=void 0;else switch(r&&(u.push(-5),r=void 0),d<g&&(u.push(i.slice(d,g)),e+=g-d),p){case 0:{u.push(65533),e++;break}case 9:{for(l=Math.ceil(e/4)*4,u.push(-2);e++<l;)u.push(-1);break}case 10:{u.push(-4),e=1;break}default:r=!0,e=1}d=g+1}return a&&(r&&u.push(-5),t&&u.push(t),u.push(null)),u}}var HU=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function OT(e){return e.replace(HU,WU)}function WU(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){let o=n.charCodeAt(1),i=o===120||o===88;return jc(n.slice(i?2:1),i?16:10)}return ss(n)||e}var $T={}.hasOwnProperty;function bx(e,t,n){return typeof t!="string"&&(n=t,t=void 0),VU(n)(xx(hx(n).document().write(yx()(e,t,!0))))}function VU(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:i(On),autolinkProtocol:b,autolinkEmail:b,atxHeading:i(pe),blockQuote:i(Pe),characterEscape:b,characterReference:b,codeFenced:i(ge),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:i(ge,s),codeText:i(dt,s),codeTextData:b,data:b,codeFlowValue:b,definition:i(fe),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:i(ce),hardBreakEscape:i(at),hardBreakTrailing:i(at),htmlFlow:i(It,s),htmlFlowData:b,htmlText:i(It,s),htmlTextData:b,image:i(gt),label:s,link:i(On),listItem:i(Ge),listItemValue:g,listOrdered:i(Zn,d),listUnordered:i(Zn),paragraph:i(lt),reference:L,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:i(pe),strong:i(ie),thematicBreak:i(me)},exit:{atxHeading:u(),atxHeadingSequence:j,autolink:u(),autolinkEmail:nt,autolinkProtocol:Ee,blockQuote:u(),characterEscapeValue:k,characterReferenceMarkerHexadecimal:X,characterReferenceMarkerNumeric:X,characterReferenceValue:ne,characterReference:xe,codeFenced:u(T),codeFencedFence:S,codeFencedFenceInfo:p,codeFencedFenceMeta:h,codeFlowValue:k,codeIndented:u(I),codeText:u(x),codeTextData:k,data:k,definition:u(),definitionDestinationString:N,definitionLabelString:v,definitionTitleString:D,emphasis:u(),hardBreakEscape:u(f),hardBreakTrailing:u(f),htmlFlow:u(C),htmlFlowData:k,htmlText:u(E),htmlTextData:k,image:u(P),label:O,labelText:M,lineEnding:A,link:u(F),listItem:u(),listOrdered:u(),listUnordered:u(),paragraph:u(),referenceString:oe,resourceDestinationString:w,resourceTitleString:R,resource:W,setextHeading:u(m),setextHeadingLineSequence:z,setextHeadingText:B,strong:u(),thematicBreak:u()}};UT(t,(e||{}).mdastExtensions||[]);let n={};return r;function r($){let _={type:"root",children:[]},G={stack:[_],tokenStack:[],config:t,enter:a,exit:c,buffer:s,resume:l,data:n},q=[],V=-1;for(;++V<$.length;)if($[V][1].type==="listOrdered"||$[V][1].type==="listUnordered")if($[V][0]==="enter")q.push(V);else{let he=q.pop();V=o($,he,V)}for(V=-1;++V<$.length;){let he=t[$[V][0]];$T.call(he,$[V][1].type)&&he[$[V][1].type].call(Object.assign({sliceSerialize:$[V][2].sliceSerialize},G),$[V][1])}if(G.tokenStack.length>0){let he=G.tokenStack[G.tokenStack.length-1];(he[1]||_T).call(G,void 0,he[0])}for(_.position={start:Go($.length>0?$[0][1].start:{line:1,column:1,offset:0}),end:Go($.length>0?$[$.length-2][1].end:{line:1,column:1,offset:0})},V=-1;++V<t.transforms.length;)_=t.transforms[V](_)||_;return _}function o($,_,G){let q=_-1,V=-1,he=!1,Te,Sn,Dt,kr;for(;++q<=G;){let wn=$[q];switch(wn[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{wn[0]==="enter"?V++:V--,kr=void 0;break}case"lineEndingBlank":{wn[0]==="enter"&&(Te&&!kr&&!V&&!Dt&&(Dt=q),kr=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:kr=void 0}if(!V&&wn[0]==="enter"&&wn[1].type==="listItemPrefix"||V===-1&&wn[0]==="exit"&&(wn[1].type==="listUnordered"||wn[1].type==="listOrdered")){if(Te){let Pn=q;for(Sn=void 0;Pn--;){let lr=$[Pn];if(lr[1].type==="lineEnding"||lr[1].type==="lineEndingBlank"){if(lr[0]==="exit")continue;Sn&&($[Sn][1].type="lineEndingBlank",he=!0),lr[1].type="lineEnding",Sn=Pn}else if(!(lr[1].type==="linePrefix"||lr[1].type==="blockQuotePrefix"||lr[1].type==="blockQuotePrefixWhitespace"||lr[1].type==="blockQuoteMarker"||lr[1].type==="listItemIndent"))break}Dt&&(!Sn||Dt<Sn)&&(Te._spread=!0),Te.end=Object.assign({},Sn?$[Sn][1].start:wn[1].end),$.splice(Sn||q,0,["exit",Te,wn[2]]),q++,G++}if(wn[1].type==="listItemPrefix"){let Pn={type:"listItem",_spread:!1,start:Object.assign({},wn[1].start),end:void 0};Te=Pn,$.splice(q,0,["enter",Pn,wn[2]]),q++,G++,Dt=void 0,kr=!0}}}return $[_][1]._spread=he,G}function i($,_){return G;function G(q){a.call(this,$(q),q),_&&_.call(this,q)}}function s(){this.stack.push({type:"fragment",children:[]})}function a($,_,G){this.stack[this.stack.length-1].children.push($),this.stack.push($),this.tokenStack.push([_,G||void 0]),$.position={start:Go(_.start),end:void 0}}function u($){return _;function _(G){$&&$.call(this,G),c.call(this,G)}}function c($,_){let G=this.stack.pop(),q=this.tokenStack.pop();if(q)q[0].type!==$.type&&(_?_.call(this,$,q[0]):(q[1]||_T).call(this,$,q[0]));else throw new Error("Cannot close `"+$.type+"` ("+Ho({start:$.start,end:$.end})+"): it\u2019s not open");G.position.end=Go($.end)}function l(){return nx(this.stack.pop())}function d(){this.data.expectingFirstListItemValue=!0}function g($){if(this.data.expectingFirstListItemValue){let _=this.stack[this.stack.length-2];_.start=Number.parseInt(this.sliceSerialize($),10),this.data.expectingFirstListItemValue=void 0}}function p(){let $=this.resume(),_=this.stack[this.stack.length-1];_.lang=$}function h(){let $=this.resume(),_=this.stack[this.stack.length-1];_.meta=$}function S(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function T(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function I(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$.replace(/(\r?\n|\r)$/g,"")}function v($){let _=this.resume(),G=this.stack[this.stack.length-1];G.label=_,G.identifier=xo(this.sliceSerialize($)).toLowerCase()}function D(){let $=this.resume(),_=this.stack[this.stack.length-1];_.title=$}function N(){let $=this.resume(),_=this.stack[this.stack.length-1];_.url=$}function j($){let _=this.stack[this.stack.length-1];if(!_.depth){let G=this.sliceSerialize($).length;_.depth=G}}function B(){this.data.setextHeadingSlurpLineEnding=!0}function z($){let _=this.stack[this.stack.length-1];_.depth=this.sliceSerialize($).codePointAt(0)===61?1:2}function m(){this.data.setextHeadingSlurpLineEnding=void 0}function b($){let G=this.stack[this.stack.length-1].children,q=G[G.length-1];(!q||q.type!=="text")&&(q=J(),q.position={start:Go($.start),end:void 0},G.push(q)),this.stack.push(q)}function k($){let _=this.stack.pop();_.value+=this.sliceSerialize($),_.position.end=Go($.end)}function A($){let _=this.stack[this.stack.length-1];if(this.data.atHardBreak){let G=_.children[_.children.length-1];G.position.end=Go($.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(_.type)&&(b.call(this,$),k.call(this,$))}function f(){this.data.atHardBreak=!0}function C(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$}function E(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$}function x(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$}function F(){let $=this.stack[this.stack.length-1];if(this.data.inReference){let _=this.data.referenceType||"shortcut";$.type+="Reference",$.referenceType=_,delete $.url,delete $.title}else delete $.identifier,delete $.label;this.data.referenceType=void 0}function P(){let $=this.stack[this.stack.length-1];if(this.data.inReference){let _=this.data.referenceType||"shortcut";$.type+="Reference",$.referenceType=_,delete $.url,delete $.title}else delete $.identifier,delete $.label;this.data.referenceType=void 0}function M($){let _=this.sliceSerialize($),G=this.stack[this.stack.length-2];G.label=OT(_),G.identifier=xo(_).toLowerCase()}function O(){let $=this.stack[this.stack.length-1],_=this.resume(),G=this.stack[this.stack.length-1];if(this.data.inReference=!0,G.type==="link"){let q=$.children;G.children=q}else G.alt=_}function w(){let $=this.resume(),_=this.stack[this.stack.length-1];_.url=$}function R(){let $=this.resume(),_=this.stack[this.stack.length-1];_.title=$}function W(){this.data.inReference=void 0}function L(){this.data.referenceType="collapsed"}function oe($){let _=this.resume(),G=this.stack[this.stack.length-1];G.label=_,G.identifier=xo(this.sliceSerialize($)).toLowerCase(),this.data.referenceType="full"}function X($){this.data.characterReferenceType=$.type}function ne($){let _=this.sliceSerialize($),G=this.data.characterReferenceType,q;G?(q=jc(_,G==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):q=ss(_);let V=this.stack[this.stack.length-1];V.value+=q}function xe($){let _=this.stack.pop();_.position.end=Go($.end)}function Ee($){k.call(this,$);let _=this.stack[this.stack.length-1];_.url=this.sliceSerialize($)}function nt($){k.call(this,$);let _=this.stack[this.stack.length-1];_.url="mailto:"+this.sliceSerialize($)}function Pe(){return{type:"blockquote",children:[]}}function ge(){return{type:"code",lang:null,meta:null,value:""}}function dt(){return{type:"inlineCode",value:""}}function fe(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function ce(){return{type:"emphasis",children:[]}}function pe(){return{type:"heading",depth:0,children:[]}}function at(){return{type:"break"}}function It(){return{type:"html",value:""}}function gt(){return{type:"image",title:null,url:"",alt:null}}function On(){return{type:"link",title:null,url:"",children:[]}}function Zn($){return{type:"list",ordered:$.type==="listOrdered",start:null,spread:$._spread,children:[]}}function Ge($){return{type:"listItem",spread:$._spread,checked:null,children:[]}}function lt(){return{type:"paragraph",children:[]}}function ie(){return{type:"strong",children:[]}}function J(){return{type:"text",value:""}}function me(){return{type:"thematicBreak"}}}function Go(e){return{line:e.line,column:e.column,offset:e.offset}}function UT(e,t){let n=-1;for(;++n<t.length;){let r=t[n];Array.isArray(r)?UT(e,r):GU(e,r)}}function GU(e,t){let n;for(n in t)if($T.call(t,n))switch(n){case"canContainEols":{let r=t[n];r&&e[n].push(...r);break}case"transforms":{let r=t[n];r&&e[n].push(...r);break}case"enter":case"exit":{let r=t[n];r&&Object.assign(e[n],r);break}}}function _T(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+Ho({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+Ho({start:t.start,end:t.end})+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+Ho({start:t.start,end:t.end})+") is still open")}function Zc(e){let t=this;t.parser=n;function n(r){return bx(r,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}function jT(e,t){let n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function HT(e,t){let n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:`
|
|
83
|
+
`;break}case-2:{s=t?" ":" ";break}case-1:{if(!t&&o)continue;s=" ";break}default:s=String.fromCharCode(i)}o=i===-2,r.push(s)}return r.join("")}function hx(e){let r={constructs:yT([mx,...(e||{}).extensions||[]]),content:o(CT),defined:[],document:o(IT),flow:o(PT),lazy:{},string:o(MT),text:o(BT)};return r;function o(i){return s;function s(a){return zT(r,i,a)}}}function xx(e){for(;!Yc(e););return e}var NT=/[\0\t\n\r]/g;function yx(){let e=1,t="",n=!0,r;return o;function o(i,s,a){let u=[],c,l,d,g,p;for(i=t+(typeof i=="string"?i.toString():new TextDecoder(s||void 0).decode(i)),d=0,t="",n&&(i.charCodeAt(0)===65279&&d++,n=void 0);d<i.length;){if(NT.lastIndex=d,c=NT.exec(i),g=c&&c.index!==void 0?c.index:i.length,p=i.charCodeAt(g),!c){t=i.slice(d);break}if(p===10&&d===g&&r)u.push(-3),r=void 0;else switch(r&&(u.push(-5),r=void 0),d<g&&(u.push(i.slice(d,g)),e+=g-d),p){case 0:{u.push(65533),e++;break}case 9:{for(l=Math.ceil(e/4)*4,u.push(-2);e++<l;)u.push(-1);break}case 10:{u.push(-4),e=1;break}default:r=!0,e=1}d=g+1}return a&&(r&&u.push(-5),t&&u.push(t),u.push(null)),u}}var HU=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function OT(e){return e.replace(HU,WU)}function WU(e,t,n){if(t)return t;if(n.charCodeAt(0)===35){let o=n.charCodeAt(1),i=o===120||o===88;return jc(n.slice(i?2:1),i?16:10)}return ss(n)||e}var $T={}.hasOwnProperty;function bx(e,t,n){return typeof t!="string"&&(n=t,t=void 0),VU(n)(xx(hx(n).document().write(yx()(e,t,!0))))}function VU(e){let t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:i(On),autolinkProtocol:b,autolinkEmail:b,atxHeading:i(pe),blockQuote:i(Pe),characterEscape:b,characterReference:b,codeFenced:i(ge),codeFencedFenceInfo:s,codeFencedFenceMeta:s,codeIndented:i(ge,s),codeText:i(dt,s),codeTextData:b,data:b,codeFlowValue:b,definition:i(fe),definitionDestinationString:s,definitionLabelString:s,definitionTitleString:s,emphasis:i(ce),hardBreakEscape:i(at),hardBreakTrailing:i(at),htmlFlow:i(It,s),htmlFlowData:b,htmlText:i(It,s),htmlTextData:b,image:i(gt),label:s,link:i(On),listItem:i(Ge),listItemValue:g,listOrdered:i(Zn,d),listUnordered:i(Zn),paragraph:i(lt),reference:M,referenceString:s,resourceDestinationString:s,resourceTitleString:s,setextHeading:i(pe),strong:i(ie),thematicBreak:i(me)},exit:{atxHeading:u(),atxHeadingSequence:j,autolink:u(),autolinkEmail:nt,autolinkProtocol:Ee,blockQuote:u(),characterEscapeValue:k,characterReferenceMarkerHexadecimal:X,characterReferenceMarkerNumeric:X,characterReferenceValue:ne,characterReference:xe,codeFenced:u(T),codeFencedFence:S,codeFencedFenceInfo:p,codeFencedFenceMeta:h,codeFlowValue:k,codeIndented:u(I),codeText:u(x),codeTextData:k,data:k,definition:u(),definitionDestinationString:N,definitionLabelString:v,definitionTitleString:D,emphasis:u(),hardBreakEscape:u(f),hardBreakTrailing:u(f),htmlFlow:u(C),htmlFlowData:k,htmlText:u(E),htmlTextData:k,image:u(P),label:O,labelText:L,lineEnding:A,link:u(F),listItem:u(),listOrdered:u(),listUnordered:u(),paragraph:u(),referenceString:oe,resourceDestinationString:w,resourceTitleString:R,resource:W,setextHeading:u(m),setextHeadingLineSequence:z,setextHeadingText:B,strong:u(),thematicBreak:u()}};UT(t,(e||{}).mdastExtensions||[]);let n={};return r;function r($){let _={type:"root",children:[]},G={stack:[_],tokenStack:[],config:t,enter:a,exit:c,buffer:s,resume:l,data:n},q=[],V=-1;for(;++V<$.length;)if($[V][1].type==="listOrdered"||$[V][1].type==="listUnordered")if($[V][0]==="enter")q.push(V);else{let he=q.pop();V=o($,he,V)}for(V=-1;++V<$.length;){let he=t[$[V][0]];$T.call(he,$[V][1].type)&&he[$[V][1].type].call(Object.assign({sliceSerialize:$[V][2].sliceSerialize},G),$[V][1])}if(G.tokenStack.length>0){let he=G.tokenStack[G.tokenStack.length-1];(he[1]||_T).call(G,void 0,he[0])}for(_.position={start:Go($.length>0?$[0][1].start:{line:1,column:1,offset:0}),end:Go($.length>0?$[$.length-2][1].end:{line:1,column:1,offset:0})},V=-1;++V<t.transforms.length;)_=t.transforms[V](_)||_;return _}function o($,_,G){let q=_-1,V=-1,he=!1,Te,Sn,Dt,kr;for(;++q<=G;){let wn=$[q];switch(wn[1].type){case"listUnordered":case"listOrdered":case"blockQuote":{wn[0]==="enter"?V++:V--,kr=void 0;break}case"lineEndingBlank":{wn[0]==="enter"&&(Te&&!kr&&!V&&!Dt&&(Dt=q),kr=void 0);break}case"linePrefix":case"listItemValue":case"listItemMarker":case"listItemPrefix":case"listItemPrefixWhitespace":break;default:kr=void 0}if(!V&&wn[0]==="enter"&&wn[1].type==="listItemPrefix"||V===-1&&wn[0]==="exit"&&(wn[1].type==="listUnordered"||wn[1].type==="listOrdered")){if(Te){let Pn=q;for(Sn=void 0;Pn--;){let lr=$[Pn];if(lr[1].type==="lineEnding"||lr[1].type==="lineEndingBlank"){if(lr[0]==="exit")continue;Sn&&($[Sn][1].type="lineEndingBlank",he=!0),lr[1].type="lineEnding",Sn=Pn}else if(!(lr[1].type==="linePrefix"||lr[1].type==="blockQuotePrefix"||lr[1].type==="blockQuotePrefixWhitespace"||lr[1].type==="blockQuoteMarker"||lr[1].type==="listItemIndent"))break}Dt&&(!Sn||Dt<Sn)&&(Te._spread=!0),Te.end=Object.assign({},Sn?$[Sn][1].start:wn[1].end),$.splice(Sn||q,0,["exit",Te,wn[2]]),q++,G++}if(wn[1].type==="listItemPrefix"){let Pn={type:"listItem",_spread:!1,start:Object.assign({},wn[1].start),end:void 0};Te=Pn,$.splice(q,0,["enter",Pn,wn[2]]),q++,G++,Dt=void 0,kr=!0}}}return $[_][1]._spread=he,G}function i($,_){return G;function G(q){a.call(this,$(q),q),_&&_.call(this,q)}}function s(){this.stack.push({type:"fragment",children:[]})}function a($,_,G){this.stack[this.stack.length-1].children.push($),this.stack.push($),this.tokenStack.push([_,G||void 0]),$.position={start:Go(_.start),end:void 0}}function u($){return _;function _(G){$&&$.call(this,G),c.call(this,G)}}function c($,_){let G=this.stack.pop(),q=this.tokenStack.pop();if(q)q[0].type!==$.type&&(_?_.call(this,$,q[0]):(q[1]||_T).call(this,$,q[0]));else throw new Error("Cannot close `"+$.type+"` ("+Ho({start:$.start,end:$.end})+"): it\u2019s not open");G.position.end=Go($.end)}function l(){return nx(this.stack.pop())}function d(){this.data.expectingFirstListItemValue=!0}function g($){if(this.data.expectingFirstListItemValue){let _=this.stack[this.stack.length-2];_.start=Number.parseInt(this.sliceSerialize($),10),this.data.expectingFirstListItemValue=void 0}}function p(){let $=this.resume(),_=this.stack[this.stack.length-1];_.lang=$}function h(){let $=this.resume(),_=this.stack[this.stack.length-1];_.meta=$}function S(){this.data.flowCodeInside||(this.buffer(),this.data.flowCodeInside=!0)}function T(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$.replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),this.data.flowCodeInside=void 0}function I(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$.replace(/(\r?\n|\r)$/g,"")}function v($){let _=this.resume(),G=this.stack[this.stack.length-1];G.label=_,G.identifier=xo(this.sliceSerialize($)).toLowerCase()}function D(){let $=this.resume(),_=this.stack[this.stack.length-1];_.title=$}function N(){let $=this.resume(),_=this.stack[this.stack.length-1];_.url=$}function j($){let _=this.stack[this.stack.length-1];if(!_.depth){let G=this.sliceSerialize($).length;_.depth=G}}function B(){this.data.setextHeadingSlurpLineEnding=!0}function z($){let _=this.stack[this.stack.length-1];_.depth=this.sliceSerialize($).codePointAt(0)===61?1:2}function m(){this.data.setextHeadingSlurpLineEnding=void 0}function b($){let G=this.stack[this.stack.length-1].children,q=G[G.length-1];(!q||q.type!=="text")&&(q=J(),q.position={start:Go($.start),end:void 0},G.push(q)),this.stack.push(q)}function k($){let _=this.stack.pop();_.value+=this.sliceSerialize($),_.position.end=Go($.end)}function A($){let _=this.stack[this.stack.length-1];if(this.data.atHardBreak){let G=_.children[_.children.length-1];G.position.end=Go($.end),this.data.atHardBreak=void 0;return}!this.data.setextHeadingSlurpLineEnding&&t.canContainEols.includes(_.type)&&(b.call(this,$),k.call(this,$))}function f(){this.data.atHardBreak=!0}function C(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$}function E(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$}function x(){let $=this.resume(),_=this.stack[this.stack.length-1];_.value=$}function F(){let $=this.stack[this.stack.length-1];if(this.data.inReference){let _=this.data.referenceType||"shortcut";$.type+="Reference",$.referenceType=_,delete $.url,delete $.title}else delete $.identifier,delete $.label;this.data.referenceType=void 0}function P(){let $=this.stack[this.stack.length-1];if(this.data.inReference){let _=this.data.referenceType||"shortcut";$.type+="Reference",$.referenceType=_,delete $.url,delete $.title}else delete $.identifier,delete $.label;this.data.referenceType=void 0}function L($){let _=this.sliceSerialize($),G=this.stack[this.stack.length-2];G.label=OT(_),G.identifier=xo(_).toLowerCase()}function O(){let $=this.stack[this.stack.length-1],_=this.resume(),G=this.stack[this.stack.length-1];if(this.data.inReference=!0,G.type==="link"){let q=$.children;G.children=q}else G.alt=_}function w(){let $=this.resume(),_=this.stack[this.stack.length-1];_.url=$}function R(){let $=this.resume(),_=this.stack[this.stack.length-1];_.title=$}function W(){this.data.inReference=void 0}function M(){this.data.referenceType="collapsed"}function oe($){let _=this.resume(),G=this.stack[this.stack.length-1];G.label=_,G.identifier=xo(this.sliceSerialize($)).toLowerCase(),this.data.referenceType="full"}function X($){this.data.characterReferenceType=$.type}function ne($){let _=this.sliceSerialize($),G=this.data.characterReferenceType,q;G?(q=jc(_,G==="characterReferenceMarkerNumeric"?10:16),this.data.characterReferenceType=void 0):q=ss(_);let V=this.stack[this.stack.length-1];V.value+=q}function xe($){let _=this.stack.pop();_.position.end=Go($.end)}function Ee($){k.call(this,$);let _=this.stack[this.stack.length-1];_.url=this.sliceSerialize($)}function nt($){k.call(this,$);let _=this.stack[this.stack.length-1];_.url="mailto:"+this.sliceSerialize($)}function Pe(){return{type:"blockquote",children:[]}}function ge(){return{type:"code",lang:null,meta:null,value:""}}function dt(){return{type:"inlineCode",value:""}}function fe(){return{type:"definition",identifier:"",label:null,title:null,url:""}}function ce(){return{type:"emphasis",children:[]}}function pe(){return{type:"heading",depth:0,children:[]}}function at(){return{type:"break"}}function It(){return{type:"html",value:""}}function gt(){return{type:"image",title:null,url:"",alt:null}}function On(){return{type:"link",title:null,url:"",children:[]}}function Zn($){return{type:"list",ordered:$.type==="listOrdered",start:null,spread:$._spread,children:[]}}function Ge($){return{type:"listItem",spread:$._spread,checked:null,children:[]}}function lt(){return{type:"paragraph",children:[]}}function ie(){return{type:"strong",children:[]}}function J(){return{type:"text",value:""}}function me(){return{type:"thematicBreak"}}}function Go(e){return{line:e.line,column:e.column,offset:e.offset}}function UT(e,t){let n=-1;for(;++n<t.length;){let r=t[n];Array.isArray(r)?UT(e,r):GU(e,r)}}function GU(e,t){let n;for(n in t)if($T.call(t,n))switch(n){case"canContainEols":{let r=t[n];r&&e[n].push(...r);break}case"transforms":{let r=t[n];r&&e[n].push(...r);break}case"enter":case"exit":{let r=t[n];r&&Object.assign(e[n],r);break}}}function _T(e,t){throw e?new Error("Cannot close `"+e.type+"` ("+Ho({start:e.start,end:e.end})+"): a different token (`"+t.type+"`, "+Ho({start:t.start,end:t.end})+") is open"):new Error("Cannot close document, a token (`"+t.type+"`, "+Ho({start:t.start,end:t.end})+") is still open")}function Zc(e){let t=this;t.parser=n;function n(r){return bx(r,{...t.data("settings"),...e,extensions:t.data("micromarkExtensions")||[],mdastExtensions:t.data("fromMarkdownExtensions")||[]})}}function jT(e,t){let n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)}function HT(e,t){let n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:`
|
|
84
84
|
`}]}function WT(e,t){let n=t.value?t.value+`
|
|
85
85
|
`:"",r={},o=t.lang?t.lang.split(/\s+/):[];o.length>0&&(r.className=["language-"+o[0]]);let i={type:"element",tagName:"code",properties:r,children:[{type:"text",value:n}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i}function VT(e,t){let n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function GT(e,t){let n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function qT(e,t){let n=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=String(t.identifier).toUpperCase(),o=Sr(r.toLowerCase()),i=e.footnoteOrder.indexOf(r),s,a=e.footnoteCounts.get(r);a===void 0?(a=0,e.footnoteOrder.push(r),s=e.footnoteOrder.length):s=i+1,a+=1,e.footnoteCounts.set(r,a);let u={type:"element",tagName:"a",properties:{href:"#"+n+"fn-"+o,id:n+"fnref-"+o+(a>1?"-"+a:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(s)}]};e.patch(t,u);let c={type:"element",tagName:"sup",properties:{},children:[u]};return e.patch(t,c),e.applyData(t,c)}function YT(e,t){let n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function KT(e,t){if(e.options.allowDangerousHtml){let n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}}function eu(e,t){let n=t.referenceType,r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+r}];let o=e.all(t),i=o[0];i&&i.type==="text"?i.value="["+i.value:o.unshift({type:"text",value:"["});let s=o[o.length-1];return s&&s.type==="text"?s.value+=r:o.push({type:"text",value:r}),o}function XT(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return eu(e,t);let o={src:Sr(r.url||""),alt:t.alt};r.title!==null&&r.title!==void 0&&(o.title=r.title);let i={type:"element",tagName:"img",properties:o,children:[]};return e.patch(t,i),e.applyData(t,i)}function QT(e,t){let n={src:Sr(t.url)};t.alt!==null&&t.alt!==void 0&&(n.alt=t.alt),t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)}function JT(e,t){let n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);let r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)}function ZT(e,t){let n=String(t.identifier).toUpperCase(),r=e.definitionById.get(n);if(!r)return eu(e,t);let o={href:Sr(r.url||"")};r.title!==null&&r.title!==void 0&&(o.title=r.title);let i={type:"element",tagName:"a",properties:o,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)}function eI(e,t){let n={href:Sr(t.url)};t.title!==null&&t.title!==void 0&&(n.title=t.title);let r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function tI(e,t,n){let r=e.all(t),o=n?qU(n):nI(t),i={},s=[];if(typeof t.checked=="boolean"){let l=r[0],d;l&&l.type==="element"&&l.tagName==="p"?d=l:(d={type:"element",tagName:"p",properties:{},children:[]},r.unshift(d)),d.children.length>0&&d.children.unshift({type:"text",value:" "}),d.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let a=-1;for(;++a<r.length;){let l=r[a];(o||a!==0||l.type!=="element"||l.tagName!=="p")&&s.push({type:"text",value:`
|
|
86
86
|
`}),l.type==="element"&&l.tagName==="p"&&!o?s.push(...l.children):s.push(l)}let u=r[r.length-1];u&&(o||u.type!=="element"||u.tagName!=="p")&&s.push({type:"text",value:`
|
|
@@ -139,7 +139,7 @@ ${A.diffPreview}
|
|
|
139
139
|
transform: translateY(120px) rotate(720deg) scale(0.3);
|
|
140
140
|
opacity: 0;
|
|
141
141
|
}
|
|
142
|
-
`;var Jme=ot.div({position:"relative",width:"100%",height:"60px",marginBottom:"10px",overflow:"visible"}),Zme=ot.span(({delay:e,left:t,color:n,size:r})=>({position:"absolute",top:"0",left:`${t}%`,width:`${r}px`,height:`${r}px`,backgroundColor:n,borderRadius:r>8?"50%":"2px",animation:`${OW} 3s ease-out ${e}s forwards`,pointerEvents:"none"}));var _W=ot.div(({theme:e,variant:t})=>({display:"flex",alignItems:"center",gap:"8px",padding:"12px 16px",borderRadius:"6px",fontSize:"13px",fontWeight:600,backgroundColor:t==="success"?e.background.positive:e.background.warning,color:t==="success"?e.color.positive:e.color.warning,border:`2px solid ${t==="success"?e.color.positive:e.color.warning}`,boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)",animation:"slideIn 0.3s ease-out","@keyframes slideIn":{"0%":{transform:"translateY(-10px)",opacity:0},"100%":{transform:"translateY(0)",opacity:1}}})),$W=ot(Bn)(({theme:e})=>({marginLeft:"auto",padding:"2px 6px",fontSize:"10px",backgroundColor:e.background.hoverable,color:e.color.defaultText})),BF=ot.div({display:"flex",gap:"8px",alignItems:"center",justifyContent:"flex-end"}),DF=ot(Mn)(({theme:e})=>({padding:"6px 12px",fontSize:"12px",backgroundColor:e.color.positive})),RF=ot(sn)(({theme:e,copied:t})=>({padding:"6px 12px",fontSize:"12px",minWidth:"120px",...t?{backgroundColor:e.color.positive}:{}})),zF=ot(sn)({padding:"6px 12px",fontSize:"12px",display:"flex",alignItems:"center",gap:"6px"}),UW=ot.div(({theme:e,confidence:t})=>{let n=t>=90?"#16a34a":t>=70?"#ca8a04":"#dc2626";return{padding:"10px 14px",borderRadius:"8px",border:`1px solid ${n}30`,backgroundColor:`${n}08`,marginTop:"8px",fontSize:"12px",lineHeight:1.5}}),jW=ot.div({display:"flex",alignItems:"center",gap:"8px",marginBottom:"6px"}),HW=ot.span(({confidence:e,theme:t})=>{let n=e>=90?"#16a34a":e>=70?"#ca8a04":"#dc2626";return{display:"inline-flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"10px",backgroundColor:t.base==="dark"?e>=90?"rgba(22, 163, 74, 0.18)":e>=70?"rgba(202, 138, 4, 0.18)":"rgba(220, 38, 38, 0.18)":e>=90?"#dcfce7":e>=70?"#fef9c3":"#fee2e2",color:n,fontSize:"11px",fontWeight:700}}),WW=ot.span(({theme:e})=>({fontSize:"11px",fontWeight:600,color:e.textMutedColor,textTransform:"uppercase",letterSpacing:"0.5px"})),VW=ot.div(({theme:e})=>({color:e.color.defaultText,fontSize:"12px","& ul":{margin:"4px 0",paddingLeft:"16px"},"& li":{marginBottom:"2px"}})),mu=ot.div(({theme:e})=>({marginTop:"6px","&:first-of-type":{marginTop:0}})),hu=ot.span(({theme:e})=>({fontWeight:600,color:e.textMutedColor,fontSize:"11px"})),GW=e=>{if(["layout","content"].includes(e.type))return!0;if(e.type==="typography"){let n=(e.description||"").toLowerCase(),r=(e.property||"").toLowerCase();if(n.includes("text content")||n.includes("text differs")||r.includes("content")||r.includes("innerhtml")||r.includes("textcontent"))return!0}return!1},NF=({issues:e,modelId:t,complianceScore:n,visualSimilarity:r,costUsd:o,reviewDurationMs:i,inputTokens:s,outputTokens:a,cacheCreationTokens:u,cacheReadTokens:c,onToggleSelection:l,onSelectAll:d,onSelectNone:g,onSelectAllFixes:p,onApplyFixes:h,onApplyFix:S,onCopyAllFixes:T,onGenerateFixes:I,onDismiss:v,onUndismiss:D,isGenerating:N=!1,isApplying:j=!1,isCopying:B=!1,applyFixesResult:z,onDismissResult:m,generationTiming:b,generationUsage:k,generationProgress:A,autoApplySupported:f=!0,hasReviewBeenRun:C=!1,isLoadingReview:E=!1,isReviewing:x=!1,isNewReviewMode:F=!1,selfReview:P})=>{let[
|
|
142
|
+
`;var Jme=ot.div({position:"relative",width:"100%",height:"60px",marginBottom:"10px",overflow:"visible"}),Zme=ot.span(({delay:e,left:t,color:n,size:r})=>({position:"absolute",top:"0",left:`${t}%`,width:`${r}px`,height:`${r}px`,backgroundColor:n,borderRadius:r>8?"50%":"2px",animation:`${OW} 3s ease-out ${e}s forwards`,pointerEvents:"none"}));var _W=ot.div(({theme:e,variant:t})=>({display:"flex",alignItems:"center",gap:"8px",padding:"12px 16px",borderRadius:"6px",fontSize:"13px",fontWeight:600,backgroundColor:t==="success"?e.background.positive:e.background.warning,color:t==="success"?e.color.positive:e.color.warning,border:`2px solid ${t==="success"?e.color.positive:e.color.warning}`,boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)",animation:"slideIn 0.3s ease-out","@keyframes slideIn":{"0%":{transform:"translateY(-10px)",opacity:0},"100%":{transform:"translateY(0)",opacity:1}}})),$W=ot(Bn)(({theme:e})=>({marginLeft:"auto",padding:"2px 6px",fontSize:"10px",backgroundColor:e.background.hoverable,color:e.color.defaultText})),BF=ot.div({display:"flex",gap:"8px",alignItems:"center",justifyContent:"flex-end"}),DF=ot(Mn)(({theme:e})=>({padding:"6px 12px",fontSize:"12px",backgroundColor:e.color.positive})),RF=ot(sn)(({theme:e,copied:t})=>({padding:"6px 12px",fontSize:"12px",minWidth:"120px",...t?{backgroundColor:e.color.positive}:{}})),zF=ot(sn)({padding:"6px 12px",fontSize:"12px",display:"flex",alignItems:"center",gap:"6px"}),UW=ot.div(({theme:e,confidence:t})=>{let n=t>=90?"#16a34a":t>=70?"#ca8a04":"#dc2626";return{padding:"10px 14px",borderRadius:"8px",border:`1px solid ${n}30`,backgroundColor:`${n}08`,marginTop:"8px",fontSize:"12px",lineHeight:1.5}}),jW=ot.div({display:"flex",alignItems:"center",gap:"8px",marginBottom:"6px"}),HW=ot.span(({confidence:e,theme:t})=>{let n=e>=90?"#16a34a":e>=70?"#ca8a04":"#dc2626";return{display:"inline-flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"10px",backgroundColor:t.base==="dark"?e>=90?"rgba(22, 163, 74, 0.18)":e>=70?"rgba(202, 138, 4, 0.18)":"rgba(220, 38, 38, 0.18)":e>=90?"#dcfce7":e>=70?"#fef9c3":"#fee2e2",color:n,fontSize:"11px",fontWeight:700}}),WW=ot.span(({theme:e})=>({fontSize:"11px",fontWeight:600,color:e.textMutedColor,textTransform:"uppercase",letterSpacing:"0.5px"})),VW=ot.div(({theme:e})=>({color:e.color.defaultText,fontSize:"12px","& ul":{margin:"4px 0",paddingLeft:"16px"},"& li":{marginBottom:"2px"}})),mu=ot.div(({theme:e})=>({marginTop:"6px","&:first-of-type":{marginTop:0}})),hu=ot.span(({theme:e})=>({fontWeight:600,color:e.textMutedColor,fontSize:"11px"})),GW=e=>{if(["layout","content"].includes(e.type))return!0;if(e.type==="typography"){let n=(e.description||"").toLowerCase(),r=(e.property||"").toLowerCase();if(n.includes("text content")||n.includes("text differs")||r.includes("content")||r.includes("innerhtml")||r.includes("textcontent"))return!0}return!1},NF=({issues:e,modelId:t,complianceScore:n,visualSimilarity:r,costUsd:o,reviewDurationMs:i,inputTokens:s,outputTokens:a,cacheCreationTokens:u,cacheReadTokens:c,onToggleSelection:l,onSelectAll:d,onSelectNone:g,onSelectAllFixes:p,onApplyFixes:h,onApplyFix:S,onCopyAllFixes:T,onGenerateFixes:I,onDismiss:v,onUndismiss:D,isGenerating:N=!1,isApplying:j=!1,isCopying:B=!1,applyFixesResult:z,onDismissResult:m,generationTiming:b,generationUsage:k,generationProgress:A,autoApplySupported:f=!0,hasReviewBeenRun:C=!1,isLoadingReview:E=!1,isReviewing:x=!1,isNewReviewMode:F=!1,selfReview:P})=>{let[L,O]=Y.useState("all"),[w,R]=Y.useState("all"),[W,M]=Y.useState(!1),[oe,X]=Y.useState(!0),{includeComponentIssues:ne,setIncludeComponentIssues:xe,featureFlags:Ee}=ue(),nt=Y.useRef(null),[Pe,ge]=TW(0);IW(()=>{if(!N){ge(0);return}let J=setInterval(()=>ge(me=>me+1),1e3);return()=>clearInterval(J)},[N]);let dt=async()=>{let J=ce.map(V=>{let he=[`[${V.severity.toUpperCase()}] ${V.title||V.description}`,`Status: ${V.status}`,V.description&&V.description!==V.title?`Description: ${V.description}`:"",V.property?`Property: ${V.property}`:"",V.currentValue?`Current: ${V.currentValue}`:"",V.suggestedValue?`Expected: ${V.suggestedValue}`:"",V.file?`File: ${V.file}${V.lineNumber!==void 0?`:${V.lineNumber}`:""}`:"",V.suggestedCode?`Suggested code: ${V.suggestedCode}`:""];if(V.generatedFix){let Te=V.generatedFix;if(he.push(""),he.push("--- AI-Generated Fix ---"),he.push(`Fix Status: ${Te.status}`),Te.confidence!==void 0){let Sn=Te.confidence>1?Te.confidence:Math.round(Te.confidence*100);he.push(`Confidence: ${Sn}%`)}Te.strategy&&he.push(`Strategy: ${Te.strategy}`),Te.filePath&&he.push(`Target file: ${Te.filePath}`),Te.code&&he.push(`Generated code:
|
|
143
143
|
${Te.code}`),Te.diffPreview&&he.push(`Diff:
|
|
144
144
|
${Te.diffPreview}`),Te.error&&he.push(`Error: ${Te.error}`)}return he.push(""),he.filter(Boolean).join(`
|
|
145
145
|
`)}).join(`
|
|
@@ -147,9 +147,9 @@ ${Te.diffPreview}`),Te.error&&he.push(`Error: ${Te.error}`)}return he.push(""),h
|
|
|
147
147
|
|
|
148
148
|
`),me=ce.filter(V=>V.generatedFix?.status==="applied").length,$=ce.filter(V=>V.generatedFix?.status==="ready").length,_=me>0||$>0?` | Fixes: ${me} applied, ${$} ready`:"",G=r!==void 0?` | Similarity: ${r}%`:"",q=`Score: ${n}/100${G} | ${ce.length} issues${_}
|
|
149
149
|
|
|
150
|
-
`;try{await navigator.clipboard.writeText(q+J),L(!0),setTimeout(()=>L(!1),2e3)}catch(V){console.error("Failed to copy:",V)}};Y.useEffect(()=>{z&&nt.current&&nt.current.scrollIntoView({behavior:"smooth",block:"start"})},[z]);let fe=LF(()=>e.map(J=>{let me=qs(J);return me===J.severity?J:{...J,severity:me}}),[e]),ce=LF(()=>fe.filter(J=>{let me=M==="all"||J.severity===M,$=w==="all"||J.status===w,_=ne||!GW(J);return me&&$&&_}),[fe,M,w,ne]),pe=()=>{ce.forEach(J=>{J.selectedForFix||l(J.id)})},at=()=>{ce.forEach(J=>{J.selectedForFix&&l(J.id)})},It=()=>{ce.forEach(J=>{J.generatedFix&&J.generatedFix.status==="ready"&&!J.selectedForFix&&l(J.id)})},gt=ce.filter(J=>J.selectedForFix).length,On=ce.filter(J=>J.severity==="critical").length,Zn=ce.filter(J=>J.severity==="major").length,Ge=ce.filter(J=>J.severity==="minor").length,lt=ce.filter(J=>J.generatedFix&&J.generatedFix.status==="ready").length,ie=ce.filter(J=>J.selectedForFix&&J.generatedFix&&J.generatedFix.status==="ready").length;return e.length===0?E?Y.createElement(gu,{label:"Loading review..."}):x?Y.createElement(PF,null):F?Y.createElement(Jx,null,Y.createElement(Zx,null,"\u{1F441}\uFE0F"),Y.createElement(ey,null,"Ready for a new review"),Y.createElement(ty,null,`You're viewing the current mapping & canvas. Click the "Review" button to analyze it.`)):Y.createElement(Jx,null,Y.createElement(Zx,null,C?"\u2728":"\u{1F441}\uFE0F"),Y.createElement(ey,null,C?"No issues found":"No review yet"),Y.createElement(ty,null,C?"This review didn't detect any issues. Great work!":'Click the "Review" button to analyze your component.')):Y.createElement(EW,{"data-testid":"issues-panel"},Y.createElement(AW,null,Y.createElement(MF,{value:M,onChange:J=>O(J.target.value)},Y.createElement("option",{value:"all"},"All Severities"),Y.createElement("option",{value:"critical"},"Critical Only"),Y.createElement("option",{value:"major"},"Major Only"),Y.createElement("option",{value:"minor"},"Minor Only")),Y.createElement(MF,{value:w,onChange:J=>R(J.target.value)},Y.createElement("option",{value:"all"},"All Statuses"),Y.createElement("option",{value:"pending"},"Pending"),Y.createElement("option",{value:"applied"},"Applied"),Y.createElement("option",{value:"verified"},"Verified"),Y.createElement("option",{value:"failed"},"Failed"))),Y.createElement("div",null,Y.createElement(PW,{isOpen:oe,onClick:()=>X(!oe)},Y.createElement(LW,null,Y.createElement(MW,{isOpen:oe},Y.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Y.createElement("polyline",{points:"6 9 12 15 18 9"}))),Y.createElement(RW,null,ce.length," issues"),(()=>{if(ce.length===0)return null;let J=ce.map(_=>_.generatedFix?.filePath||_.file).filter(Boolean);if(J.length===0)return null;let me=J[0];return J.every(_=>_===me)?Y.createElement(NW,null,"in ",me):null})(),Y.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},On>0&&Y.createElement(Qx,{variant:"critical"},On," critical"),Zn>0&&Y.createElement(Qx,{variant:"major"},Zn," major"),Ge>0&&Y.createElement(Qx,{variant:"minor"},Ge," minor"))),Y.createElement(DW,{onClick:J=>J.stopPropagation()},Y.createElement(fu,{onClick:pe},"All"),Y.createElement(fu,{onClick:at},"None"),Y.createElement(fu,{onClick:dt},W?"\u2713":"\u2398"," Copy"),lt>0&&Y.createElement(fu,{onClick:It},"Fixes (",lt,")"))),z&&Y.createElement(_W,{ref:nt,variant:z.error||z.failed>0?"warning":"success"},z.error?Y.createElement(Y.Fragment,null,z.error):z.failed>0?Y.createElement(Y.Fragment,null,"Applied ",z.succeeded,"/",z.total," ","fixes. ",z.failed," failed. Run a new review to verify."):Y.createElement(Y.Fragment,null,"Applied ",z.total," fix",z.total!==1?"es":"","! Run a new review to verify changes."),m&&Y.createElement($W,{onClick:m},"\u2715")),gt>0&&Y.createElement(BF,null,b&&Y.createElement(Ko,{variant:"timing"},b.durationSec,"s (",b.issueCount," ","fixes)"),k&&Y.createElement(Y.Fragment,null,Y.createElement(Ko,{variant:"cost"},"$",k.costUsd.toFixed(3)," / \u20AA",(k.costUsd*3.65).toFixed(2)),Y.createElement(Ko,{variant:"tokens",title:`Input: ${k.inputTokens.toLocaleString()} \xB7 Output: ${k.outputTokens.toLocaleString()}`},"#"," ",((k.inputTokens+k.outputTokens)/1e3).toFixed(1),"K"),Y.createElement(Ko,{variant:"model",title:k.modelId},k.modelId.replace("claude-","").replace(/-\d{8}$/,""))),Ee.enableFixGeneration&&I&&Y.createElement(zF,{disabled:N||j||B,onClick:I},Y.createElement("span",null,"\u{1F916}"),N&&A?`Generating ${A.completed}/${A.total}... (${Pe}s)`:N?`Generating... (${Pe}s)`:`Generate Fixes for ${gt} Issue${gt>1?"s":""}`),Ee.enableFixApply&&f&&h&&Y.createElement(DF,{disabled:N||j||ie===0,onClick:h},j?"Applying...":N?"Generating...":ie>0?`Apply ${ie} Ready Fix${ie>1?"es":""}`:"Apply Fixes (generate first)"),Ee.enableFixApply&&!f&&T&&Y.createElement(RF,{disabled:N||B||ie===0,copied:B,onClick:T},B?"Copied!":ie>0?`Copy ${ie} Fix${ie>1?"es":""}`:"Copy Fixes (generate first)")),P&&!N&&Y.createElement(UW,{confidence:P.overallConfidence},Y.createElement(jW,null,Y.createElement(WW,null,"AI Self-Review"),Y.createElement(HW,{confidence:P.overallConfidence},P.wouldReachPerfect?"\u2713":"\u25B3"," ",P.overallConfidence,"% confidence")),Y.createElement(VW,null,P.variantSafety&&Y.createElement(mu,null,Y.createElement(hu,null,"Variant safety:"," "),P.variantSafety),P.gaps.length>0&&Y.createElement(mu,null,Y.createElement(hu,null,"Gaps: "),Y.createElement("ul",null,P.gaps.map((J,me)=>Y.createElement("li",{key:me},J)))),!P.wouldReachPerfect&&P.reasonsNotPerfect.length>0&&Y.createElement(mu,null,Y.createElement(hu,null,"Why not 100%:"," "),Y.createElement("ul",null,P.reasonsNotPerfect.map((J,me)=>Y.createElement("li",{key:me},J)))),P.suggestions&&P.suggestions.length>0&&Y.createElement(mu,null,Y.createElement(hu,null,"Suggestions: "),Y.createElement("ul",null,P.suggestions.map((J,me)=>Y.createElement("li",{key:me},J)))))),oe&&Y.createElement(BW,null,ce.length===0?Y.createElement(Jx,null,Y.createElement(Zx,null,"\u{1F50D}"),Y.createElement(ey,null,"No issues match current filters"),Y.createElement(ty,null,"Try adjusting your severity or status filters")):Y.createElement(zW,null,(()=>{let J={};ce.forEach(q=>{let V=q.detectedBy;V&&(J[V]=(J[V]||0)+1)});let me=Object.entries(J).sort((q,V)=>V[1]-q[1])[0],$=me&&me[1]>ce.length/2?me[0]:void 0,_=ce.map(q=>q.generatedFix?.filePath||q.file).filter(Boolean),G=_.length>0&&_.every(q=>q===_[0]);return ce.map(q=>Y.createElement(TF,{key:q.id,issue:q,modelId:t,dominantDetector:$,showFilePath:!G,onToggleSelection:l,onDismiss:v,onUndismiss:D,onApplyFix:S}))})()))),gt>0&&Y.createElement(BF,null,b&&Y.createElement(Ko,{variant:"timing"},b.durationSec,"s (",b.issueCount," ","fixes)"),k&&Y.createElement(Y.Fragment,null,Y.createElement(Ko,{variant:"cost"},"$",k.costUsd.toFixed(3)," / \u20AA",(k.costUsd*3.65).toFixed(2)),Y.createElement(Ko,{variant:"tokens",title:`Input: ${k.inputTokens.toLocaleString()} \xB7 Output: ${k.outputTokens.toLocaleString()}`},"#"," ",((k.inputTokens+k.outputTokens)/1e3).toFixed(1),"K"),Y.createElement(Ko,{variant:"model",title:k.modelId},k.modelId.replace("claude-","").replace(/-\d{8}$/,""))),Ee.enableFixGeneration&&I&&Y.createElement(zF,{disabled:N||j||B,onClick:I},Y.createElement("span",null,"\u{1F916}"),N&&A?`Generating ${A.completed}/${A.total}... (${Pe}s)`:N?`Generating... (${Pe}s)`:`Generate Fixes for ${gt} Issue${gt>1?"s":""}`),Ee.enableFixApply&&f&&h&&Y.createElement(DF,{disabled:N||j||ie===0,onClick:h},j?"Applying...":N?"Generating...":ie>0?`Apply ${ie} Ready Fix${ie>1?"es":""}`:"Apply Fixes (generate first)"),Ee.enableFixApply&&!f&&T&&Y.createElement(RF,{disabled:N||B||ie===0,copied:B,onClick:T},B?"Copied!":ie>0?`Copy ${ie} Fix${ie>1?"es":""}`:"Copy Fixes (generate first)")))};Oe();var qW=Et.div({display:"flex",flexDirection:"column"}),YW=Et.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.background.positive,borderBottom:`1px solid ${e.appBorderColor}`,display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap"})),KW=Et.span(({theme:e})=>({fontSize:"12px",fontWeight:600,color:e.color.positive})),ny=Et.span(({theme:e,variant:t})=>{let n={resolved:{bg:e.background.positive,text:e.color.positive},remaining:{bg:e.background.warning,text:e.color.warning},new:{bg:e.color.tertiary,text:le}};return{padding:"2px 8px",borderRadius:"10px",fontSize:"11px",fontWeight:600,backgroundColor:n[t].bg,color:n[t].text}}),XW=Et.span(({theme:e})=>({fontSize:"11px",color:e.textMutedColor,marginLeft:"auto"})),phe=Et.div(({theme:e})=>({textAlign:"center",padding:"60px 20px",color:e.textMutedColor})),dhe=Et.div({fontSize:"48px",marginBottom:"16px"}),ghe=Et.div(({theme:e})=>({fontSize:"16px",fontWeight:600,marginBottom:"8px",color:e.color.defaultText})),fhe=Et.div({fontSize:"14px",opacity:.8}),QW=Et.div(({theme:e})=>({borderTop:`1px solid ${e.appBorderColor}`,marginTop:"8px"})),JW=Et.div(({theme:e})=>({width:"100%",display:"flex",alignItems:"center",gap:"8px",padding:"12px 16px",backgroundColor:e.background.app,fontSize:"12px",color:e.textMutedColor})),ZW=Et(Bn)({display:"flex",gap:"8px",padding:"0",fontSize:"12px"}),eV=Et($r)(({theme:e})=>({marginLeft:"auto",padding:"4px 10px",fontSize:"11px",color:e.color.secondary})),tV=Et.span(({theme:e})=>({backgroundColor:e.color.medium,color:e.textMutedColor,padding:"2px 8px",borderRadius:"10px",fontSize:"11px",fontWeight:600})),nV=Et.div(({theme:e})=>({padding:"8px 16px",backgroundColor:e.background.app})),rV=Et.div(({theme:e})=>({padding:"12px 14px",marginBottom:"8px",backgroundColor:e.background.content,borderRadius:"6px",border:`1px solid ${e.appBorderColor}`})),oV=Et.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"4px"}),iV=Et.button(({theme:e})=>({background:"none",border:`1px solid ${e.appBorderColor}`,borderRadius:"4px",padding:"2px 8px",fontSize:"11px",color:e.color.mediumdark,cursor:"pointer","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText,borderColor:e.color.secondary}})),sV=Et.div(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText,lineHeight:"1.4"})),aV=Et.div(({theme:e})=>({fontSize:"12px",color:e.textMutedColor,marginTop:"8px",paddingTop:"8px",borderTop:`1px solid ${e.appBorderColor}`,lineHeight:"1.4"})),lV=Et.div(({theme:e})=>({fontSize:"11px",fontWeight:600,color:e.textMutedColor,textTransform:"uppercase",letterSpacing:"0.5px",padding:"12px 0 8px 0",marginTop:"8px",borderBottom:`1px solid ${e.appBorderColor}`,display:"flex",alignItems:"center",gap:"8px","&:first-of-type":{marginTop:0}})),cV=Et.span(({theme:e})=>({fontSize:"10px",fontWeight:600,color:e.textMutedColor,backgroundColor:e.background.hoverable,padding:"2px 6px",borderRadius:"8px"})),xu={"false-positive":{icon:"\u2715",label:"False positive",group:"False Positive"},planned:{icon:"\u25F7",label:"Planned",group:"Planned"},"wont-fix":{icon:"\u2298",label:"Won't fix",group:"Won't Fix"},"no-figma-state":{icon:"\u25FB",label:"No Figma state",group:"No Figma State"},"design-pending":{icon:"\u2726",label:"Design pending",group:"Design Pending"}},$F=e=>{if(!e)return{categoryId:null,note:""};let t=e.indexOf(": "),n=t>-1?e.slice(0,t):e.trim();return xu[n]?{categoryId:n,note:t>-1?e.slice(t+2):""}:{categoryId:null,note:e}},uV=e=>{if(!e)return"Other";let{categoryId:t}=$F(e);if(t&&xu[t])return xu[t].group;let n=e.toLowerCase();return n.includes("hug")||n.includes("fill")||n.includes("content-driven")?"HUG/FILL Sizing":n.includes("sub-pixel")||n.includes("negligible")?"Sub-pixel Differences":n.includes("values match")||n.includes("values already match")||n.includes("identical")?"Values Match":n.includes("no fix needed")||n.includes("no changes needed")?"No Fix Needed":"Other"},OF=e=>{if(!e)return"";let t=e.replace(/^Auto-dismissed:\s*/i,"").replace(/^Programmatic:\s*/i,"").replace(/^Two-Pass:\s*/i,"");return t=t.replace(/Sub-pixel difference \([\d.]+px\) - within [\d.]+px tolerance/i,"Sub-pixel difference").replace(/Dimension issue with HUG\/FILL sizing - width is content-driven, not fixed/i,"Width is content-driven").replace(/Height issue with HUG sizing - dimension is content-driven, not actionable/i,"Height is content-driven").replace(/Width issue with HUG sizing - dimension is content-driven, not actionable/i,"Width is content-driven").replace(/no-changes-needed - values already match/i,"Values already match").replace(/Values are the same - no difference/i,"Values match"),t},pV=Et.span(({theme:e,phase:t})=>{let n={"post-ai-validation":{bg:"#4b5563",text:"#ffffff"},"ai-validation":{bg:"#0369a1",text:"#ffffff"},user:{bg:"#7c3aed",text:"#ffffff"}},{bg:r,text:o}=n[t]||n["post-ai-validation"];return{display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"11px",fontWeight:600,color:o,backgroundColor:r,padding:"3px 10px",borderRadius:"10px",marginBottom:"8px"}}),dV=Et.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"8px",marginLeft:"8px",fontSize:"11px",color:e.textMutedColor,"& > span":{display:"inline-flex",alignItems:"center",gap:"3px"}})),oy=e=>{if(!e)return;let t=e.toLowerCase();if(t.includes("no-changes-needed")||t.includes("values already match")||t.includes("sub-pixel")||t.includes("negligible")||t.includes("hug")||t.includes("fill")||t.includes("content-driven")||t.includes("equivalent")||t.includes("layout mechanism"))return"post-ai-validation"},gV=(e,t)=>{switch(e||oy(t)){case"post-ai-validation":return"\u2699\uFE0F";case"ai-validation":return"\u2726";case"user":return"\u{1F464}";default:return"\u2699\uFE0F"}},_F=(e,t)=>{switch(e||oy(t)){case"post-ai-validation":return"Pre-filter";case"ai-validation":return"Auto";case"user":return"Manual";default:return"Auto"}},fV=Et.div(({theme:e})=>({padding:"20px",margin:"20px",backgroundColor:e.background.negative,borderRadius:"8px",borderLeft:`4px solid ${e.color.negative}`})),mV=Et.h3(({theme:e})=>({fontSize:"16px",fontWeight:600,color:e.color.negative,marginTop:0,marginBottom:"8px"})),hV=Et.pre(({theme:e})=>({fontSize:"12px",color:e.color.negative,backgroundColor:e.background.app,padding:"12px",borderRadius:"4px",overflow:"auto",maxHeight:"200px",fontFamily:"monospace",lineHeight:"1.5"})),xV=Et(Py)({marginTop:"12px"}),ry=class extends Ne.Component{constructor(n){super(n);this.handleReset=()=>{this.setState({hasError:!1,error:null})};this.state={hasError:!1,error:null}}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,r){y.error("[IssuesPanel ErrorBoundary] Caught error:",n,r)}render(){return this.state.hasError?Ne.createElement(fV,null,Ne.createElement(mV,null,"\u26A0\uFE0F Issues Panel Error"),Ne.createElement("p",null,"Something went wrong displaying the issues. This might happen if a fix failed or there's invalid data."),Ne.createElement(hV,null,this.state.error?.message||"Unknown error",`
|
|
150
|
+
`;try{await navigator.clipboard.writeText(q+J),M(!0),setTimeout(()=>M(!1),2e3)}catch(V){console.error("Failed to copy:",V)}};Y.useEffect(()=>{z&&nt.current&&nt.current.scrollIntoView({behavior:"smooth",block:"start"})},[z]);let fe=LF(()=>e.map(J=>{let me=qs(J);return me===J.severity?J:{...J,severity:me}}),[e]),ce=LF(()=>fe.filter(J=>{let me=L==="all"||J.severity===L,$=w==="all"||J.status===w,_=ne||!GW(J);return me&&$&&_}),[fe,L,w,ne]),pe=()=>{ce.forEach(J=>{J.selectedForFix||l(J.id)})},at=()=>{ce.forEach(J=>{J.selectedForFix&&l(J.id)})},It=()=>{ce.forEach(J=>{J.generatedFix&&J.generatedFix.status==="ready"&&!J.selectedForFix&&l(J.id)})},gt=ce.filter(J=>J.selectedForFix).length,On=ce.filter(J=>J.severity==="critical").length,Zn=ce.filter(J=>J.severity==="major").length,Ge=ce.filter(J=>J.severity==="minor").length,lt=ce.filter(J=>J.generatedFix&&J.generatedFix.status==="ready").length,ie=ce.filter(J=>J.selectedForFix&&J.generatedFix&&J.generatedFix.status==="ready").length;return e.length===0?E?Y.createElement(gu,{label:"Loading review..."}):x?Y.createElement(PF,null):F?Y.createElement(Jx,null,Y.createElement(Zx,null,"\u{1F441}\uFE0F"),Y.createElement(ey,null,"Ready for a new review"),Y.createElement(ty,null,`You're viewing the current mapping & canvas. Click the "Review" button to analyze it.`)):Y.createElement(Jx,null,Y.createElement(Zx,null,C?"\u2728":"\u{1F441}\uFE0F"),Y.createElement(ey,null,C?"No issues found":"No review yet"),Y.createElement(ty,null,C?"This review didn't detect any issues. Great work!":'Click the "Review" button to analyze your component.')):Y.createElement(EW,{"data-testid":"issues-panel"},Y.createElement(AW,null,Y.createElement(MF,{value:L,onChange:J=>O(J.target.value)},Y.createElement("option",{value:"all"},"All Severities"),Y.createElement("option",{value:"critical"},"Critical Only"),Y.createElement("option",{value:"major"},"Major Only"),Y.createElement("option",{value:"minor"},"Minor Only")),Y.createElement(MF,{value:w,onChange:J=>R(J.target.value)},Y.createElement("option",{value:"all"},"All Statuses"),Y.createElement("option",{value:"pending"},"Pending"),Y.createElement("option",{value:"applied"},"Applied"),Y.createElement("option",{value:"verified"},"Verified"),Y.createElement("option",{value:"failed"},"Failed"))),Y.createElement("div",null,Y.createElement(PW,{isOpen:oe,onClick:()=>X(!oe)},Y.createElement(LW,null,Y.createElement(MW,{isOpen:oe},Y.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Y.createElement("polyline",{points:"6 9 12 15 18 9"}))),Y.createElement(RW,null,ce.length," issues"),(()=>{if(ce.length===0)return null;let J=ce.map(_=>_.generatedFix?.filePath||_.file).filter(Boolean);if(J.length===0)return null;let me=J[0];return J.every(_=>_===me)?Y.createElement(NW,null,"in ",me):null})(),Y.createElement("div",{style:{display:"flex",alignItems:"center",gap:"8px"}},On>0&&Y.createElement(Qx,{variant:"critical"},On," critical"),Zn>0&&Y.createElement(Qx,{variant:"major"},Zn," major"),Ge>0&&Y.createElement(Qx,{variant:"minor"},Ge," minor"))),Y.createElement(DW,{onClick:J=>J.stopPropagation()},Y.createElement(fu,{onClick:pe},"All"),Y.createElement(fu,{onClick:at},"None"),Y.createElement(fu,{onClick:dt},W?"\u2713":"\u2398"," Copy"),lt>0&&Y.createElement(fu,{onClick:It},"Fixes (",lt,")"))),z&&Y.createElement(_W,{ref:nt,variant:z.error||z.failed>0?"warning":"success"},z.error?Y.createElement(Y.Fragment,null,z.error):z.failed>0?Y.createElement(Y.Fragment,null,"Applied ",z.succeeded,"/",z.total," ","fixes. ",z.failed," failed. Run a new review to verify."):Y.createElement(Y.Fragment,null,"Applied ",z.total," fix",z.total!==1?"es":"","! Run a new review to verify changes."),m&&Y.createElement($W,{onClick:m},"\u2715")),gt>0&&Y.createElement(BF,null,b&&Y.createElement(Ko,{variant:"timing"},b.durationSec,"s (",b.issueCount," ","fixes)"),k&&Y.createElement(Y.Fragment,null,Y.createElement(Ko,{variant:"cost"},"$",k.costUsd.toFixed(3)," / \u20AA",(k.costUsd*3.65).toFixed(2)),Y.createElement(Ko,{variant:"tokens",title:`Input: ${k.inputTokens.toLocaleString()} \xB7 Output: ${k.outputTokens.toLocaleString()}`},"#"," ",((k.inputTokens+k.outputTokens)/1e3).toFixed(1),"K"),Y.createElement(Ko,{variant:"model",title:k.modelId},k.modelId.replace("claude-","").replace(/-\d{8}$/,""))),Ee.enableFixGeneration&&I&&Y.createElement(zF,{disabled:N||j||B,onClick:I},Y.createElement("span",null,"\u{1F916}"),N&&A?`Generating ${A.completed}/${A.total}... (${Pe}s)`:N?`Generating... (${Pe}s)`:`Generate Fixes for ${gt} Issue${gt>1?"s":""}`),Ee.enableFixApply&&f&&h&&Y.createElement(DF,{disabled:N||j||ie===0,onClick:h},j?"Applying...":N?"Generating...":ie>0?`Apply ${ie} Ready Fix${ie>1?"es":""}`:"Apply Fixes (generate first)"),Ee.enableFixApply&&!f&&T&&Y.createElement(RF,{disabled:N||B||ie===0,copied:B,onClick:T},B?"Copied!":ie>0?`Copy ${ie} Fix${ie>1?"es":""}`:"Copy Fixes (generate first)")),P&&!N&&Y.createElement(UW,{confidence:P.overallConfidence},Y.createElement(jW,null,Y.createElement(WW,null,"AI Self-Review"),Y.createElement(HW,{confidence:P.overallConfidence},P.wouldReachPerfect?"\u2713":"\u25B3"," ",P.overallConfidence,"% confidence")),Y.createElement(VW,null,P.variantSafety&&Y.createElement(mu,null,Y.createElement(hu,null,"Variant safety:"," "),P.variantSafety),P.gaps.length>0&&Y.createElement(mu,null,Y.createElement(hu,null,"Gaps: "),Y.createElement("ul",null,P.gaps.map((J,me)=>Y.createElement("li",{key:me},J)))),!P.wouldReachPerfect&&P.reasonsNotPerfect.length>0&&Y.createElement(mu,null,Y.createElement(hu,null,"Why not 100%:"," "),Y.createElement("ul",null,P.reasonsNotPerfect.map((J,me)=>Y.createElement("li",{key:me},J)))),P.suggestions&&P.suggestions.length>0&&Y.createElement(mu,null,Y.createElement(hu,null,"Suggestions: "),Y.createElement("ul",null,P.suggestions.map((J,me)=>Y.createElement("li",{key:me},J)))))),oe&&Y.createElement(BW,null,ce.length===0?Y.createElement(Jx,null,Y.createElement(Zx,null,"\u{1F50D}"),Y.createElement(ey,null,"No issues match current filters"),Y.createElement(ty,null,"Try adjusting your severity or status filters")):Y.createElement(zW,null,(()=>{let J={};ce.forEach(q=>{let V=q.detectedBy;V&&(J[V]=(J[V]||0)+1)});let me=Object.entries(J).sort((q,V)=>V[1]-q[1])[0],$=me&&me[1]>ce.length/2?me[0]:void 0,_=ce.map(q=>q.generatedFix?.filePath||q.file).filter(Boolean),G=_.length>0&&_.every(q=>q===_[0]);return ce.map(q=>Y.createElement(TF,{key:q.id,issue:q,modelId:t,dominantDetector:$,showFilePath:!G,onToggleSelection:l,onDismiss:v,onUndismiss:D,onApplyFix:S}))})()))),gt>0&&Y.createElement(BF,null,b&&Y.createElement(Ko,{variant:"timing"},b.durationSec,"s (",b.issueCount," ","fixes)"),k&&Y.createElement(Y.Fragment,null,Y.createElement(Ko,{variant:"cost"},"$",k.costUsd.toFixed(3)," / \u20AA",(k.costUsd*3.65).toFixed(2)),Y.createElement(Ko,{variant:"tokens",title:`Input: ${k.inputTokens.toLocaleString()} \xB7 Output: ${k.outputTokens.toLocaleString()}`},"#"," ",((k.inputTokens+k.outputTokens)/1e3).toFixed(1),"K"),Y.createElement(Ko,{variant:"model",title:k.modelId},k.modelId.replace("claude-","").replace(/-\d{8}$/,""))),Ee.enableFixGeneration&&I&&Y.createElement(zF,{disabled:N||j||B,onClick:I},Y.createElement("span",null,"\u{1F916}"),N&&A?`Generating ${A.completed}/${A.total}... (${Pe}s)`:N?`Generating... (${Pe}s)`:`Generate Fixes for ${gt} Issue${gt>1?"s":""}`),Ee.enableFixApply&&f&&h&&Y.createElement(DF,{disabled:N||j||ie===0,onClick:h},j?"Applying...":N?"Generating...":ie>0?`Apply ${ie} Ready Fix${ie>1?"es":""}`:"Apply Fixes (generate first)"),Ee.enableFixApply&&!f&&T&&Y.createElement(RF,{disabled:N||B||ie===0,copied:B,onClick:T},B?"Copied!":ie>0?`Copy ${ie} Fix${ie>1?"es":""}`:"Copy Fixes (generate first)")))};Oe();var qW=Et.div({display:"flex",flexDirection:"column"}),YW=Et.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.background.positive,borderBottom:`1px solid ${e.appBorderColor}`,display:"flex",alignItems:"center",gap:"12px",flexWrap:"wrap"})),KW=Et.span(({theme:e})=>({fontSize:"12px",fontWeight:600,color:e.color.positive})),ny=Et.span(({theme:e,variant:t})=>{let n={resolved:{bg:e.background.positive,text:e.color.positive},remaining:{bg:e.background.warning,text:e.color.warning},new:{bg:e.color.tertiary,text:le}};return{padding:"2px 8px",borderRadius:"10px",fontSize:"11px",fontWeight:600,backgroundColor:n[t].bg,color:n[t].text}}),XW=Et.span(({theme:e})=>({fontSize:"11px",color:e.textMutedColor,marginLeft:"auto"})),phe=Et.div(({theme:e})=>({textAlign:"center",padding:"60px 20px",color:e.textMutedColor})),dhe=Et.div({fontSize:"48px",marginBottom:"16px"}),ghe=Et.div(({theme:e})=>({fontSize:"16px",fontWeight:600,marginBottom:"8px",color:e.color.defaultText})),fhe=Et.div({fontSize:"14px",opacity:.8}),QW=Et.div(({theme:e})=>({borderTop:`1px solid ${e.appBorderColor}`,marginTop:"8px"})),JW=Et.div(({theme:e})=>({width:"100%",display:"flex",alignItems:"center",gap:"8px",padding:"12px 16px",backgroundColor:e.background.app,fontSize:"12px",color:e.textMutedColor})),ZW=Et(Bn)({display:"flex",gap:"8px",padding:"0",fontSize:"12px"}),eV=Et($r)(({theme:e})=>({marginLeft:"auto",padding:"4px 10px",fontSize:"11px",color:e.color.secondary})),tV=Et.span(({theme:e})=>({backgroundColor:e.color.medium,color:e.textMutedColor,padding:"2px 8px",borderRadius:"10px",fontSize:"11px",fontWeight:600})),nV=Et.div(({theme:e})=>({padding:"8px 16px",backgroundColor:e.background.app})),rV=Et.div(({theme:e})=>({padding:"12px 14px",marginBottom:"8px",backgroundColor:e.background.content,borderRadius:"6px",border:`1px solid ${e.appBorderColor}`})),oV=Et.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"4px"}),iV=Et.button(({theme:e})=>({background:"none",border:`1px solid ${e.appBorderColor}`,borderRadius:"4px",padding:"2px 8px",fontSize:"11px",color:e.color.mediumdark,cursor:"pointer","&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText,borderColor:e.color.secondary}})),sV=Et.div(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText,lineHeight:"1.4"})),aV=Et.div(({theme:e})=>({fontSize:"12px",color:e.textMutedColor,marginTop:"8px",paddingTop:"8px",borderTop:`1px solid ${e.appBorderColor}`,lineHeight:"1.4"})),lV=Et.div(({theme:e})=>({fontSize:"11px",fontWeight:600,color:e.textMutedColor,textTransform:"uppercase",letterSpacing:"0.5px",padding:"12px 0 8px 0",marginTop:"8px",borderBottom:`1px solid ${e.appBorderColor}`,display:"flex",alignItems:"center",gap:"8px","&:first-of-type":{marginTop:0}})),cV=Et.span(({theme:e})=>({fontSize:"10px",fontWeight:600,color:e.textMutedColor,backgroundColor:e.background.hoverable,padding:"2px 6px",borderRadius:"8px"})),xu={"false-positive":{icon:"\u2715",label:"False positive",group:"False Positive"},planned:{icon:"\u25F7",label:"Planned",group:"Planned"},"wont-fix":{icon:"\u2298",label:"Won't fix",group:"Won't Fix"},"no-figma-state":{icon:"\u25FB",label:"No Figma state",group:"No Figma State"},"design-pending":{icon:"\u2726",label:"Design pending",group:"Design Pending"}},$F=e=>{if(!e)return{categoryId:null,note:""};let t=e.indexOf(": "),n=t>-1?e.slice(0,t):e.trim();return xu[n]?{categoryId:n,note:t>-1?e.slice(t+2):""}:{categoryId:null,note:e}},uV=e=>{if(!e)return"Other";let{categoryId:t}=$F(e);if(t&&xu[t])return xu[t].group;let n=e.toLowerCase();return n.includes("hug")||n.includes("fill")||n.includes("content-driven")?"HUG/FILL Sizing":n.includes("sub-pixel")||n.includes("negligible")?"Sub-pixel Differences":n.includes("values match")||n.includes("values already match")||n.includes("identical")?"Values Match":n.includes("no fix needed")||n.includes("no changes needed")?"No Fix Needed":"Other"},OF=e=>{if(!e)return"";let t=e.replace(/^Auto-dismissed:\s*/i,"").replace(/^Programmatic:\s*/i,"").replace(/^Two-Pass:\s*/i,"");return t=t.replace(/Sub-pixel difference \([\d.]+px\) - within [\d.]+px tolerance/i,"Sub-pixel difference").replace(/Dimension issue with HUG\/FILL sizing - width is content-driven, not fixed/i,"Width is content-driven").replace(/Height issue with HUG sizing - dimension is content-driven, not actionable/i,"Height is content-driven").replace(/Width issue with HUG sizing - dimension is content-driven, not actionable/i,"Width is content-driven").replace(/no-changes-needed - values already match/i,"Values already match").replace(/Values are the same - no difference/i,"Values match"),t},pV=Et.span(({theme:e,phase:t})=>{let n={"post-ai-validation":{bg:"#4b5563",text:"#ffffff"},"ai-validation":{bg:"#0369a1",text:"#ffffff"},user:{bg:"#7c3aed",text:"#ffffff"}},{bg:r,text:o}=n[t]||n["post-ai-validation"];return{display:"inline-flex",alignItems:"center",gap:"4px",fontSize:"11px",fontWeight:600,color:o,backgroundColor:r,padding:"3px 10px",borderRadius:"10px",marginBottom:"8px"}}),dV=Et.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"8px",marginLeft:"8px",fontSize:"11px",color:e.textMutedColor,"& > span":{display:"inline-flex",alignItems:"center",gap:"3px"}})),oy=e=>{if(!e)return;let t=e.toLowerCase();if(t.includes("no-changes-needed")||t.includes("values already match")||t.includes("sub-pixel")||t.includes("negligible")||t.includes("hug")||t.includes("fill")||t.includes("content-driven")||t.includes("equivalent")||t.includes("layout mechanism"))return"post-ai-validation"},gV=(e,t)=>{switch(e||oy(t)){case"post-ai-validation":return"\u2699\uFE0F";case"ai-validation":return"\u2726";case"user":return"\u{1F464}";default:return"\u2699\uFE0F"}},_F=(e,t)=>{switch(e||oy(t)){case"post-ai-validation":return"Pre-filter";case"ai-validation":return"Auto";case"user":return"Manual";default:return"Auto"}},fV=Et.div(({theme:e})=>({padding:"20px",margin:"20px",backgroundColor:e.background.negative,borderRadius:"8px",borderLeft:`4px solid ${e.color.negative}`})),mV=Et.h3(({theme:e})=>({fontSize:"16px",fontWeight:600,color:e.color.negative,marginTop:0,marginBottom:"8px"})),hV=Et.pre(({theme:e})=>({fontSize:"12px",color:e.color.negative,backgroundColor:e.background.app,padding:"12px",borderRadius:"4px",overflow:"auto",maxHeight:"200px",fontFamily:"monospace",lineHeight:"1.5"})),xV=Et(Py)({marginTop:"12px"}),ry=class extends Ne.Component{constructor(n){super(n);this.handleReset=()=>{this.setState({hasError:!1,error:null})};this.state={hasError:!1,error:null}}static getDerivedStateFromError(n){return{hasError:!0,error:n}}componentDidCatch(n,r){y.error("[IssuesPanel ErrorBoundary] Caught error:",n,r)}render(){return this.state.hasError?Ne.createElement(fV,null,Ne.createElement(mV,null,"\u26A0\uFE0F Issues Panel Error"),Ne.createElement("p",null,"Something went wrong displaying the issues. This might happen if a fix failed or there's invalid data."),Ne.createElement(hV,null,this.state.error?.message||"Unknown error",`
|
|
151
151
|
|
|
152
|
-
`,this.state.error?.stack),Ne.createElement(xV,{onClick:this.handleReset},"Try Again")):this.props.children}},UF=()=>{let{currentStoryId:e}=Ze(),{currentReviewId:t,isReviewing:n,reviewingStoryId:r,reviewHistory:o,reviewHistoryLoading:i,toggleIssueSelection:s,applyFixesResult:a,setApplyFixesResult:u,isNewReviewMode:c}=ue(),l=n&&!!e&&e===r,{dismissAndSync:d,undismissAndSync:g}=KI(),{loadingMapping:p}=Ze(),h=!!e&&!t&&!l&&(p||i),[S,T]=Ne.useState(!1),[I,v]=Ne.useState(!1),[D,N]=Ne.useState(!1),{isSupported:j,isDetecting:B}=Um(),{refreshStorybookOnly:z}=ii(),{generateBatchFixes:m,isGenerating:b,error:k,timing:A,progress:f,usage:C,selfReview:E,lastStorybookRoot:x}=Nm(),{applyFixes:F,isApplying:P}=zm({onComplete:z,storybookRoot:x}),
|
|
152
|
+
`,this.state.error?.stack),Ne.createElement(xV,{onClick:this.handleReset},"Try Again")):this.props.children}},UF=()=>{let{currentStoryId:e}=Ze(),{currentReviewId:t,isReviewing:n,reviewingStoryId:r,reviewHistory:o,reviewHistoryLoading:i,toggleIssueSelection:s,applyFixesResult:a,setApplyFixesResult:u,isNewReviewMode:c}=ue(),l=n&&!!e&&e===r,{dismissAndSync:d,undismissAndSync:g}=KI(),{loadingMapping:p}=Ze(),h=!!e&&!t&&!l&&(p||i),[S,T]=Ne.useState(!1),[I,v]=Ne.useState(!1),[D,N]=Ne.useState(!1),{isSupported:j,isDetecting:B}=Um(),{refreshStorybookOnly:z}=ii(),{generateBatchFixes:m,isGenerating:b,error:k,timing:A,progress:f,usage:C,selfReview:E,lastStorybookRoot:x}=Nm(),{applyFixes:F,isApplying:P}=zm({onComplete:z,storybookRoot:x}),L=o.find(_=>_.id===t),O=L?.issues||[],w=Ne.useMemo(()=>O.filter(_=>!_.dismissed),[O]),R=Ne.useMemo(()=>O.filter(_=>_.dismissed),[O]),W=Ne.useMemo(()=>{let _={postAiValidation:0,aiValidation:0,user:0};for(let G of R)switch(G.dismissedBy){case"post-ai-validation":_.postAiValidation++;break;case"ai-validation":_.aiValidation++;break;default:_.user++;break}return _},[R]),M=c?[]:w,oe=L?.modelId||"unknown",X=w.filter(_=>_.severity==="critical").length,ne=w.filter(_=>_.severity==="major").length,xe=w.filter(_=>_.severity==="minor").length,Ee=L?lo(X,ne,xe):void 0;Ne.useEffect(()=>{!e||Ee==null||Wr(e,{score:Ee,issueCount:w.length,criticalCount:X,majorCount:ne,minorCount:xe})},[Ee,e,w.length,X,ne,xe]);let nt=L?.visualSimilarity,Pe=L?.costUsd,ge=L?.reviewDurationMs,dt=L?.inputTokens,fe=L?.outputTokens,ce=L?.cacheCreationTokens,pe=L?.cacheReadTokens,at=L?.parentReviewId?o.find(_=>_.id===L.parentReviewId):null,It=Ne.useMemo(()=>{if(!at||!L)return null;let _=new Set(at.issues.map(Te=>`${Te.type}:${Te.property||""}:${Te.description}`)),G=new Set(M.map(Te=>`${Te.type}:${Te.property||""}:${Te.description}`)),q=at.issues.filter(Te=>!G.has(`${Te.type}:${Te.property||""}:${Te.description}`)).length,V=M.filter(Te=>_.has(`${Te.type}:${Te.property||""}:${Te.description}`)).length,he=M.filter(Te=>!_.has(`${Te.type}:${Te.property||""}:${Te.description}`)).length;return{resolved:q,remaining:V,newIssues:he}},[at,L,M]),gt=()=>{M.forEach(_=>{_.selectedForFix||s(_.id)})},On=()=>{M.forEach(_=>{_.selectedForFix&&s(_.id)})},Zn=()=>{M.forEach(_=>{_.generatedFix&&_.generatedFix.status==="ready"&&!_.selectedForFix&&s(_.id)})},{featureFlags:Ge}=ue(),lt=()=>{if(!Ge.enableFixGeneration){y.warn("[IssuesPanel] Fix generation is disabled by feature flag");return}let _=M.filter(G=>G.selectedForFix);if(_.length===0){y.warn("[IssuesPanel] No issues selected for fix generation");return}y.debug(`[IssuesPanel] Generating fixes for ${_.length} issue(s)`,_),m(_)},ie=()=>{if(!Ge.enableFixApply){y.warn("[IssuesPanel] Fix apply is disabled by feature flag");return}let _=M.filter(q=>q.selectedForFix&&q.generatedFix&&q.generatedFix.status==="ready"&&q.generatedFix.code&&q.generatedFix.filePath);if(_.length===0){y.warn("[IssuesPanel] No issues with ready AI-generated fixes selected");return}let G=_.map(q=>({id:q.id,reviewId:q.reviewId,type:q.type,severity:q.severity,title:q.title,description:q.description,generatedFix:q.generatedFix,storyId:L?.storyId||""}));y.debug(`[IssuesPanel] Applying AI-generated fixes for ${G.length} issue(s)`,G),F(G)},J=_=>{let G=M.find(V=>V.id===_);if(!G){y.warn("[IssuesPanel] Issue not found:",_);return}if(!G.generatedFix||G.generatedFix.status!=="ready"||!G.generatedFix.code||!G.generatedFix.filePath){y.warn("[IssuesPanel] Issue does not have a ready AI-generated fix:",_);return}let q={id:G.id,reviewId:G.reviewId,type:G.type,severity:G.severity,title:G.title,description:G.description,generatedFix:G.generatedFix,storyId:L?.storyId||""};y.debug("[IssuesPanel] Applying single AI-generated fix for issue:",q),F([q])},me=async()=>{let _=M.filter(q=>q.selectedForFix&&q.generatedFix&&q.generatedFix.status==="ready"&&q.generatedFix.code&&q.generatedFix.filePath);if(_.length===0){y.warn("[IssuesPanel] No issues with ready AI-generated fixes selected");return}let G=_.map(q=>{let V=q.generatedFix,he=[];return he.push(`// File: ${V.filePath}`),he.push(`// Issue: ${q.title||q.description}`),q.currentValue&&he.push(`// Actual: ${q.currentValue}`),q.suggestedValue&&he.push(`// Expected (Figma): ${q.suggestedValue}`),V.diffPreview&&(he.push("//"),he.push("// Diff:"),V.diffPreview.split(`
|
|
153
153
|
`).forEach(Te=>{he.push(`// ${Te}`)})),he.push("//"),he.push("// Full Fixed Code:"),he.push(V.code),he.join(`
|
|
154
154
|
`)}).join(`
|
|
155
155
|
|
|
@@ -163,7 +163,7 @@ ${Te.diffPreview}`),Te.error&&he.push(`Error: ${Te.error}`)}return he.push(""),h
|
|
|
163
163
|
`),q=`Filtered Issues (${R.length})
|
|
164
164
|
${"=".repeat(40)}
|
|
165
165
|
|
|
166
|
-
`;try{await navigator.clipboard.writeText(q+G),N(!0),setTimeout(()=>N(!1),2e3)}catch(V){y.error("Failed to copy dismissed issues:",V)}};return Ne.createElement(qW,null,!c&&It&&Ne.createElement(YW,null,Ne.createElement(KW,null,"\u{1F4CA} Progress:"),Ne.createElement(ny,{variant:"resolved"},"\u2705 ",It.resolved," resolved"),Ne.createElement(ny,{variant:"remaining"},"\u23F3 ",It.remaining," remaining"),It.newIssues>0&&Ne.createElement(ny,{variant:"new"},"\u{1F195} ",It.newIssues," new"),Ne.createElement(XW,null,"Iteration ",M?.iterationNumber||1)),Ne.createElement(ry,null,Ne.createElement(NF,{issues:L,modelId:oe,complianceScore:Ee,visualSimilarity:nt,costUsd:Pe,reviewDurationMs:ge,inputTokens:dt,outputTokens:fe,cacheCreationTokens:ce,cacheReadTokens:pe,onToggleSelection:s,onSelectAll:gt,onSelectNone:On,onSelectAllFixes:Zn,onGenerateFixes:lt,onApplyFixes:ie,onApplyFix:J,onCopyAllFixes:me,onDismiss:d,onUndismiss:g,isGenerating:b,isApplying:P,isCopying:I,applyFixesResult:a,onDismissResult:()=>u(null),generationTiming:A,generationUsage:C,hasReviewBeenRun:!c&&!!M,isLoadingReview:h,isReviewing:l,isNewReviewMode:c,generationProgress:f,autoApplySupported:j,selfReview:E})),!c&&R.length>0&&Ne.createElement(QW,null,Ne.createElement(JW,null,Ne.createElement(ZW,{onClick:()=>T(!S)},Ne.createElement("span",null,S?"\u25BC":"\u25B6"),Ne.createElement("span",null,"Filtered out"),Ne.createElement(tV,null,R.length),Ne.createElement(dV,null,W.postAiValidation>0&&Ne.createElement("span",null,"\u2699\uFE0F ",W.postAiValidation),W.aiValidation>0&&Ne.createElement("span",null,"\u2726 ",W.aiValidation),W.user>0&&Ne.createElement("span",null,"\u{1F464} ",W.user))),Ne.createElement(eV,{onClick:$},D?"\u2713 Copied!":"Copy")),S&&Ne.createElement(nV,null,(()=>{let _=R.reduce((V,he)=>{let Te=uV(he.dismissReason);return V[Te]||(V[Te]=[]),V[Te].push(he),V},{}),G=["HUG/FILL Sizing","Sub-pixel Differences","Values Match","No Fix Needed","Other"];return Object.keys(_).sort((V,he)=>G.indexOf(V)-G.indexOf(he)).map(V=>Ne.createElement(Ne.Fragment,{key:V},Ne.createElement(lV,null,V,Ne.createElement(cV,null,_[V].length)),_[V].map(he=>Ne.createElement(rV,{key:he.id},Ne.createElement(oV,null,Ne.createElement(pV,{phase:he.dismissedBy||oy(he.dismissReason)||"post-ai-validation"},gV(he.dismissedBy,he.dismissReason)," ",_F(he.dismissedBy,he.dismissReason)),Ne.createElement(iV,{onClick:()=>g(he.id),title:"Restore to active issues"},"\u21A9 Restore")),Ne.createElement(sV,null,"[",he.severity.toUpperCase(),"]"," ",he.title||he.description),he.dismissReason&&(()=>{let{categoryId:Te,note:Sn}=$F(he.dismissReason),Dt=Te?xu[Te]:null;return Ne.createElement(aV,null,Dt?Ne.createElement(Ne.Fragment,null,Dt.icon," ",Dt.label,Sn?` \u2014 ${Sn}`:""):OF(he.dismissReason))})()))))})())))};var bV=_a.div({marginTop:"20px"}),SV=_a.div(({theme:e})=>({display:"flex",alignItems:"center",borderBottom:`1px solid ${e.appBorderColor}`,marginBottom:"16px"})),wV=_a.div({display:"flex",alignItems:"center"}),iy=_a(Co)({padding:"10px 16px"}),vV=_a.div({minHeight:"200px"}),sy=()=>{let{reviewDetailTab:e,setReviewDetailTab:t,multiModelResults:n,selectedModels:r,userRole:o,roleOverride:i}=ue(),a=(i??o)==="admin",u=r.length>1||n&&Object.keys(n.byModel).length>1;return yV(()=>{!a&&(e==="chat"||e==="prompt")&&t("issues")},[a,e,t]),Or.createElement(bV,null,Or.createElement(SV,null,Or.createElement(wV,null,a&&Or.createElement(iy,{active:e==="prompt",onClick:()=>t("prompt")},"Prompt"),a&&Or.createElement(iy,{active:e==="chat",onClick:()=>t("chat")},u?"Models":"Chat"),Or.createElement(iy,{active:e==="issues",onClick:()=>t("issues")},"Issues"))),Or.createElement(vV,null,a&&e==="chat"&&(u?Or.createElement(YI,null):Or.createElement($x,null)),e==="issues"&&Or.createElement(UF,null),a&&e==="prompt"&&Or.createElement(_x,null)))};Ce();import H,{useState as bo,useRef as py,useEffect as IV,useMemo as VF}from"react";import{styled as yt,useTheme as FV}from"storybook/theming";_e();Oe();var yu={enableIssueTracking:!1,enableAutoFix:!1,enableFileModification:!1,enableMultiModelComparison:!0,enableBulkFixApplication:!1,enableFixUndo:!1,enableHoverHighlight:!0,enableEvaluationFixtures:!1,enableDebugMode:!1},$a="uicopilot_feature_flags";function ay(){try{let e=localStorage.getItem($a);if(e){let t=JSON.parse(e);return{...yu,...t}}}catch(e){y.warn("[FeatureFlags] Failed to load from localStorage:",e)}return yu}function kV(e,t){try{let r={...ay(),[e]:t},o={};for(let i in r){let s=i;r[s]!==yu[s]&&(o[s]=r[s])}Object.keys(o).length>0?localStorage.setItem($a,JSON.stringify(o)):localStorage.removeItem($a),y.debug(`[FeatureFlags] Set ${e} = ${t}`)}catch(n){y.error("[FeatureFlags] Failed to set flag:",n)}}function CV(){try{localStorage.removeItem($a),y.debug("[FeatureFlags] Reset to defaults")}catch(e){y.error("[FeatureFlags] Failed to reset:",e)}}function ly(e){return ay()[e]}function TV(){let e=Object.keys(yu).reduce((t,n)=>({...t,[n]:!0}),{});try{localStorage.setItem($a,JSON.stringify(e)),y.debug("[FeatureFlags] All features enabled! Reload to apply.")}catch(t){y.error("[FeatureFlags] Failed to enable all features:",t)}}typeof window<"u"&&(window.uicopilot={...window.uicopilot,featureFlags:{get:ay,set:kV,reset:CV,enableAll:TV,isEnabled:ly}});Oe();ct();import Bt from"react";var jF=()=>Bt.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Bt.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),Bt.createElement("circle",{cx:"12",cy:"12",r:"3"}));var Ua={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},ja=()=>Bt.createElement("svg",{...Ua},Bt.createElement("circle",{cx:"11",cy:"11",r:"8"}),Bt.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})),HF=()=>Bt.createElement("svg",{...Ua},Bt.createElement("path",{d:"M18.84 12.25l1.72-1.71a5 5 0 0 0-7.07-7.07l-1.71 1.71"}),Bt.createElement("path",{d:"M5.17 11.75l-1.71 1.71a5 5 0 0 0 7.07 7.07l1.71-1.71"}),Bt.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"5"}),Bt.createElement("line",{x1:"2",y1:"8",x2:"5",y2:"8"}),Bt.createElement("line",{x1:"16",y1:"22",x2:"16",y2:"19"}),Bt.createElement("line",{x1:"22",y1:"16",x2:"19",y2:"16"})),WF=()=>Bt.createElement("svg",{...Ua},Bt.createElement("polyline",{points:"23 4 23 10 17 10"}),Bt.createElement("polyline",{points:"1 20 1 14 7 14"}),Bt.createElement("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"})),cy=()=>Bt.createElement("svg",{...Ua},Bt.createElement("circle",{cx:"11",cy:"11",r:"8"}),Bt.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),Bt.createElement("line",{x1:"11",y1:"8",x2:"11",y2:"14"}),Bt.createElement("line",{x1:"8",y1:"11",x2:"14",y2:"11"})),uy=()=>Bt.createElement("svg",{...Ua},Bt.createElement("circle",{cx:"11",cy:"11",r:"8"}),Bt.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),Bt.createElement("line",{x1:"8",y1:"11",x2:"14",y2:"11"}));var Ha=yt.div({marginTop:"20px"}),EV=e=>{if(!e)return null;let t=new Date(e);return isNaN(t.getTime())?null:t.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})},bu=yt.div({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px",flexWrap:"wrap",gap:"8px"}),Su=yt.div({display:"flex",alignItems:"center",gap:"12px"}),Wa=yt.div(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),AV=yt.span(({theme:e})=>({fontSize:"11px",fontWeight:400,color:e.color.warning,whiteSpace:"nowrap"})),PV=yt.div(({theme:e})=>({display:"inline-flex",gap:"2px",padding:"2px",backgroundColor:e.background.app,border:`1px solid ${e.appBorderColor}`,borderRadius:"999px",flexShrink:0})),GF=yt.button(({theme:e,active:t})=>({display:"inline-flex",alignItems:"center",gap:"5px",padding:"3px 12px",fontSize:"11px",fontWeight:600,cursor:"pointer",border:"none",borderRadius:"999px",backgroundColor:t?e.background.content:"transparent",color:t?e.color.secondary:e.color.mediumdark,boxShadow:t?"0 1px 2px rgba(0, 0, 0, 0.12)":"none",whiteSpace:"nowrap",transition:"all 0.15s","&:hover":{color:t?e.color.secondary:e.color.defaultText}})),_he=yt.div({display:"flex",gap:"8px"}),$he=yt.button(({active:e,theme:t})=>({padding:"4px 12px",backgroundColor:e?t.color.secondary:"transparent",color:e?"#fff":t.color.mediumdark,border:`1px solid ${e?t.color.secondary:t.appBorderColor}`,borderRadius:"4px",fontSize:"11px",fontWeight:500,cursor:"pointer",transition:"all 0.2s","&:hover":{opacity:.9}})),qF=yt.div(({theme:e,layout:t})=>({display:t==="side-by-side"?"grid":"flex",gridTemplateColumns:t==="side-by-side"?"minmax(0, 1fr) minmax(0, 1fr)":void 0,gap:t==="side-by-side"?`${e.layoutMargin}px`:0,position:"relative",width:"100%",justifyContent:t==="overlay"?"center":void 0})),Va=yt.div(({theme:e,zoomed:t})=>({position:"relative",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,overflow:"hidden",backgroundColor:e.background.app,minHeight:"60px",maxHeight:t?"400px":"150px",display:"flex",alignItems:"center",justifyContent:"center",transition:"max-height 0.2s ease, box-shadow 0.2s ease",boxShadow:t?"0 8px 30px rgba(0, 0, 0, 0.15)":"none","& img":t?{maxWidth:"100%",maxHeight:"400px"}:void 0})),Ga=yt.div(({theme:e})=>({position:"absolute",top:"6px",left:"6px",backgroundColor:e.base==="dark"?"rgba(255, 255, 255, 0.92)":"rgba(0, 0, 0, 0.7)",color:e.base==="dark"?"#0a0a0f":e.color.inverseText,padding:"3px 6px",borderRadius:"3px",fontSize:"10px",fontWeight:600,zIndex:10})),qa=yt.div({position:"absolute",top:"6px",right:"6px",display:"flex",gap:"4px",zIndex:10}),Xo=yt.button(({theme:e,accent:t})=>({width:"24px",height:"24px",padding:"0",backgroundColor:e.base==="dark"?"rgba(255, 255, 255, 0.12)":"rgba(255, 255, 255, 0.92)",border:`1px solid ${t}55`,borderRadius:e.appBorderRadius,color:t,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",transition:"all 0.15s",backdropFilter:"blur(4px)","&:hover:not(:disabled)":{backgroundColor:t,color:"#ffffff",borderColor:t},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),LV=yt.img(({opacity:e=1})=>({maxWidth:"150px",maxHeight:"150px",height:"auto",display:"block",objectFit:"contain",opacity:e})),MV=yt.img({display:"block",objectFit:"contain",maxHeight:"150px",maxWidth:"150px"}),BV=yt.div({position:"relative",display:"inline-block",maxHeight:"150px",overflow:"hidden"}),Uhe=yt.svg(({isVisible:e})=>({position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",opacity:e?1:0,transition:"opacity 150ms ease-in",...!e&&{transition:"opacity 100ms ease-out"}})),DV=yt.div({position:"relative",display:"inline-block"}),jhe=yt.div(({width:e,height:t,theme:n})=>({position:"relative",width:e?`${e}px`:"auto",height:t?`${t}px`:"auto",border:`1px solid ${n.appBorderColor}`,borderRadius:"4px",overflow:"hidden",backgroundColor:n.background.app})),RV=yt.img({display:"block",maxWidth:"100%",height:"auto",objectFit:"contain"}),zV=yt.img({position:"absolute",top:"0",left:"0",pointerEvents:"none"}),NV=yt.div({marginTop:"12px",display:"flex",alignItems:"center",gap:"12px"}),OV=yt.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,minWidth:"80px"})),_V=yt.input({flex:1}),dy=yt.div(({theme:e})=>({padding:"40px",textAlign:"center",color:e.color.mediumdark,fontSize:"13px",border:`1px dashed ${e.appBorderColor}`,borderRadius:"4px"})),Hhe=yt.div(({theme:e})=>({padding:"40px",textAlign:"center",color:e.color.mediumdark,fontSize:"13px"})),gy=yt.div({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"}),yi=yt.div(({theme:e})=>({position:"relative",border:`1px solid ${e.appBorderColor}`,borderRadius:"8px",overflow:"hidden",backgroundColor:e.background.content,minHeight:"80px",maxHeight:"120px",display:"flex",alignItems:"center",justifyContent:"center","&::before":{content:'""',position:"absolute",top:0,left:"-100%",width:"100%",height:"100%",background:e.base==="dark"?"linear-gradient(90deg, transparent, rgba(255,255,255,0.04), transparent)":"linear-gradient(90deg, transparent, rgba(0,0,0,0.04), transparent)",animation:"shimmer 1.5s ease-in-out infinite",pointerEvents:"none"},"@keyframes shimmer":{"0%":{left:"-100%"},"100%":{left:"100%"}}})),bi=yt.div({textAlign:"center",zIndex:1}),Si=yt.div(({theme:e})=>({width:"32px",height:"32px",border:`3px solid ${e.appBorderColor}`,borderTop:`3px solid ${e.color.secondary}`,borderRadius:"50%",animation:"spin 1s linear infinite",marginBottom:"12px","@keyframes spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),wi=yt.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,fontWeight:500})),fy=({isLoading:e=!1,isLoadingFigma:t=!1,isLoadingStorybook:n=!1})=>{let r=FV(),{currentMapping:o,loadingMapping:i}=Ze(),{figmaImageUrl:s,storybookImageUrl:a,figmaDimensions:u,setFigmaImageUrl:c,hoveredIssueId:l,reviewHistory:d,currentReviewId:g,isReviewing:p,isValidating:h,isNewReviewMode:S,setNewReviewMode:T}=ue(),{selectedProjectId:I}=Xe(),{sessionToken:v}=ve(),{openComponentBrowser:D}=ea(),{hasMapping:N,deleteMapping:j,setCurrentMapping:B}=ai(),z=ly("enableHoverHighlight"),[m,b]=bo("side-by-side"),[k,A]=bo(.5),[f,C]=bo(!1),[E,x]=bo(!1),[F,P]=bo(!1),[M,O]=bo(!1),[w,R]=bo(!1),W=async()=>{P(!1);try{let Ge=o?.id;Ge&&await j(Ge),B(null)}catch(Ge){y.error("[ScreenshotComparison] Failed to unlink:",Ge)}},L=g?d.find(Ge=>Ge.id===g):void 0,oe=S||!g,X=p||h||oe,ne=X?s||L?.figmaImageData||null:L?.figmaImageData||s||null,xe=X?a||L?.storybookImageData||null:L?.storybookImageData||a||null,Ee=!!g&&!!ne,nt=VF(()=>{if(!L)return!1;let Ge=d.filter(lt=>lt.storyId===L.storyId&&!lt.parentReviewId).sort((lt,ie)=>new Date(ie.createdAt).getTime()-new Date(lt.createdAt).getTime())[0];return!!Ge&&Ge.id!==L.id},[L,d]);IV(()=>{x(!1)},[ne]);let[Pe,ge]=bo(null),[dt,fe]=bo(null),ce=py(null),pe=py(null),at=py(null),It=VF(()=>{if(!z||!l||!g)return null;let Ge=d.find(lt=>lt.id===g);return Ge?.issues&&Ge.issues.find(lt=>lt.id===l)||null},[l,g,d]),gt=Ge=>{let lt=Ge.currentTarget;x(!0),!bt.getState().figmaDimensions&<.naturalWidth&<.naturalHeight&&bt.getState().setFigmaDimensions({width:lt.naturalWidth,height:lt.naturalHeight}),requestAnimationFrame(()=>{if(pe.current){let{clientWidth:J,clientHeight:me}=pe.current;J&&me&&fe({width:J,height:me})}})},On=()=>{requestAnimationFrame(()=>{if(ce.current){let{clientWidth:Ge,clientHeight:lt}=ce.current;Ge&<&&ge({width:Ge,height:lt})}})},Zn=async()=>{if(!(!I||!v)){C(!0);try{let Ge=K();await se(`${Ge}/api/figma/frames/invalidate?projectId=${I}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${v}`},credentials:"include"}),c(null),y.debug("Figma cache cleared, image will reload on next review")}catch(Ge){y.error("Failed to refresh Figma:",Ge)}finally{C(!1)}}};return e?H.createElement(Ha,null,H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots from this review"))),H.createElement(gy,null,H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading Figma..."))),H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading Storybook..."))))):!ne&&!xe&&!o?i?H.createElement(Ha,null,H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots from this review"))),H.createElement(gy,null,H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading..."))))):H.createElement(Ha,null,H.createElement(Wa,null,"Screenshots from this review"),H.createElement(Va,null,H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:D,disabled:!I,title:"Browse Figma to map this component","aria-label":"Browse Figma to map this component"},H.createElement(ja,null))),H.createElement(dy,{style:{border:"none",padding:"20px 16px",lineHeight:"1.6"}},H.createElement("div",{style:{fontSize:"14px",marginBottom:"6px"}},"\u2728 This story isn't linked to a Figma frame yet"),H.createElement("div",{style:{fontSize:"12px",opacity:.75}},"Click the \u{1F50D} above to browse your Figma file and pick a matching frame. Once linked, run a Review to compare your code with the design.")))):!ne&&!xe?H.createElement(Ha,null,H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots from this review"))),H.createElement(gy,null,H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading..."))))):H.createElement(Ha,{ref:at},H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots"),g&&H.createElement(PV,null,H.createElement(GF,{active:!oe,onClick:()=>T(!1),title:"Show the saved screenshots from this review"},"Last review"),H.createElement(GF,{active:oe,onClick:()=>T(!0),title:"Show the current mapping & canvas the next review will capture"},"Current")),!oe&&nt&&L&&(()=>{let Ge=EV(L.createdAt);return Ge?H.createElement(AV,{title:"You're viewing an older review \u2014 these screenshots are a past snapshot, not the latest"},"Older snapshot \xB7 ",Ge):null})())),m==="side-by-side"?H.createElement(qF,{layout:"side-by-side"},(o||Ee)&&ne&&!t?H.createElement(Va,{zoomed:M},H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:()=>O(Ge=>!Ge),title:M?"Shrink preview":"Enlarge preview","aria-label":M?"Shrink preview":"Enlarge preview"},M?H.createElement(uy,null):H.createElement(cy,null)),oe&&H.createElement(H.Fragment,null,N&&H.createElement(Xo,{accent:r.color.secondary,onClick:D,title:"Browse Figma \u2014 change mapping","aria-label":"Browse Figma"},H.createElement(ja,null)),H.createElement(Xo,{accent:r.color.positive,onClick:Zn,disabled:f,title:"Refresh Figma cache and reload image","aria-label":"Refresh Figma cache"},H.createElement(WF,null)),N&&H.createElement(Xo,{accent:r.color.negative,onClick:()=>P(!0),title:"Unlink Figma mapping","aria-label":"Unlink Figma mapping"},H.createElement(HF,null)))),H.createElement(BV,null,H.createElement(MV,{ref:pe,src:ne,alt:"Figma design",onLoad:gt,style:{opacity:E?1:0,transition:"opacity 150ms ease-in"}}))):o&&!ne&&!t?H.createElement(Va,null,H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:D,disabled:!I,title:"Change Figma mapping","aria-label":"Change Figma mapping"},H.createElement(ja,null))),H.createElement(dy,{style:{border:"none",padding:"16px"}},"Figma image unavailable. Try mapping to a specific variant.")):!o&&!i?H.createElement(Va,null,H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:D,disabled:!I,title:"Browse Figma to map this component","aria-label":"Browse Figma to map this component"},H.createElement(ja,null))),H.createElement(dy,{style:{border:"none",padding:"16px"}},"No Figma mapping.")):H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,t?"Refreshing Figma...":"Loading Figma..."))),xe&&!n?H.createElement(Va,{zoomed:w},H.createElement(Ga,null,"Storybook Component"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:()=>R(Ge=>!Ge),title:w?"Shrink preview":"Enlarge preview","aria-label":w?"Shrink preview":"Enlarge preview"},w?H.createElement(uy,null):H.createElement(cy,null))),H.createElement(LV,{ref:ce,src:xe,alt:"Storybook component",onLoad:On})):H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,n?"Refreshing Storybook...":"Loading Storybook...")))):H.createElement(H.Fragment,null,H.createElement(qF,{layout:"overlay"},H.createElement(DV,null,ne&&xe?H.createElement(H.Fragment,null,H.createElement("div",{style:{position:"relative",display:"inline-block",border:"1px solid #ccc",borderRadius:"4px",overflow:"hidden"}},H.createElement(RV,{ref:ce,src:xe,alt:"Storybook component",onLoad:On,style:{maxHeight:"150px"}}),Pe&&H.createElement(zV,{src:ne,alt:"Figma design overlay",style:{opacity:k,width:Pe.width,height:Pe.height,objectFit:"fill"}})),H.createElement("div",{style:{fontSize:"10px",color:r.color.mediumdark,marginTop:"8px",textAlign:"center"}},H.createElement("span",{style:{color:"#1ea7fd"}},"Storybook (base)")," + ",H.createElement("span",{style:{color:"#667eea"}},"Figma (overlay)"),Pe&&` \u2022 ${Pe.width}\xD7${Pe.height}px`)):H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading Images..."))))),xe&&ne&&H.createElement(NV,null,H.createElement(OV,null,"Figma Opacity:"),H.createElement(_V,{type:"range",min:"0",max:"1",step:"0.01",value:k,onChange:Ge=>A(parseFloat(Ge.target.value))}),H.createElement("span",null,Math.round(k*100),"%"))),H.createElement(Vr,{isOpen:F,title:"Unlink Figma Mapping",message:"Unlink this story from its Figma mapping?",confirmLabel:"Unlink",variant:"danger",onConfirm:W,onCancel:()=>P(!1)}))};Ce();ct();var $V=fs.div({height:"100%"}),my=fs.div({marginBottom:"20px"}),YF=fs.div(({theme:e})=>({padding:"12px",backgroundColor:e.background.negative||"#fee2e2",border:`1px solid ${e.color.negative||"#fca5a5"}`,borderRadius:"6px",color:e.color.negative||"#991b1b",fontSize:"13px",marginBottom:"16px",display:"flex",alignItems:"flex-start",gap:"8px"})),KF=fs.span({fontSize:"16px",flexShrink:0}),UV=fs.div(({theme:e})=>({padding:"10px 12px",backgroundColor:`${e.color.warning}1a`,border:`1px solid ${e.color.warning}`,borderRadius:"6px",color:e.color.warning,fontSize:e.typography.size.s2,marginBottom:"16px",display:"flex",alignItems:"center",gap:"8px",lineHeight:1.4})),XF=fs.div({flex:1}),hy=()=>{let{reviewError:e,getCurrentReview:t}=ue(),n=t(),{showComponentBrowser:r,closeComponentBrowser:o,figmaFileUrl:i}=ea(),{selectedProjectId:s}=uo(),{setCurrentMapping:a}=ai(),{currentStoryId:u,currentStoryName:c}=Ze(),{isLoadingScreenshots:l,isLoadingFigma:d,isLoadingStorybook:g,screenshotError:p,setFigmaImageDirect:h}=ii(),S=async T=>{y.debug("[ReviewPanel] handleSelectFrame CALLED with frame:",T),y.debug("[ReviewPanel] frame.id:",T?.id);let I=bt.getState(),v=I.selectedProjectId,D=I.currentStoryId,N=I.currentStoryName,j=I.figmaFileUrl;y.debug("[ReviewPanel] selectedProjectId (from store):",v),y.debug("[ReviewPanel] currentStoryId (from store):",D),y.debug("[ReviewPanel] currentStoryName (from store):",N),T.thumbnail&&D&&(y.debug("[ReviewPanel] Setting Figma image directly BEFORE mapping save (instant display)"),h(D,T.id,T.thumbnail));try{let B=K(),z=localStorage.getItem("uicopilot_session_token");if(y.debug("[ReviewPanel] sessionToken exists:",!!z),y.debug("[ReviewPanel] dashboardUrl:",B),!z||!v||!D){y.error("[ReviewPanel] Missing required data for saving mapping:",{hasSessionToken:!!z,selectedProjectId:v,currentStoryId:D});return}let m=j?.match(/\/file\/([^\/]+)/)?.[1]||void 0;y.debug("[ReviewPanel] Making POST to /api/mappings with:",{projectId:v,storyId:D,name:N,figmaNodeId:T.id,figmaFileKey:m});let b=await se(`${B}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({projectId:v,storyId:D,name:N,figmaNodeId:T.id,figmaFileKey:m})});if(b.ok){let k=await b.json();k.mapping&&(a(k.mapping),T.thumbnail||(y.debug("[ReviewPanel] No thumbnail available, triggering fetch"),bt.getState().triggerScreenshotRefresh()),y.debug("[ReviewPanel] Mapping saved successfully:",k.mapping))}else{let k=await b.text();y.error("[ReviewPanel] Failed to save mapping:",k)}}catch(B){y.error("[ReviewPanel] Error saving mapping:",B)}};return Zt.createElement($V,null,Zt.createElement(my,null,Zt.createElement(Nh,null)),e&&Zt.createElement(YF,null,Zt.createElement(KF,null,"\u26A0\uFE0F"),Zt.createElement(XF,null,e)),p&&Zt.createElement(YF,null,Zt.createElement(KF,null,"\u26A0\uFE0F"),Zt.createElement(XF,null,"Screenshot loading error: ",p)),n?.variantMismatch&&Zt.createElement(UV,null,Zt.createElement("span",{style:{fontSize:16,flexShrink:0}},"\u26A0"),Zt.createElement("span",null,Zt.createElement("strong",null,"Variant mismatch:")," Storybook is showing ",Zt.createElement("strong",null,n.storybookVariant)," but Figma frame is ",Zt.createElement("strong",null,n.figmaVariant),". Some differences may be expected.")),Zt.createElement(my,null,Zt.createElement(fy,{isLoading:l,isLoadingFigma:d,isLoadingStorybook:g})),Zt.createElement(my,null,Zt.createElement(sy,null)),Zt.createElement(Zi,{isOpen:r,onClose:o,onSelect:S,figmaFileUrl:i||"",projectId:s||void 0}))};Ce();Oe();_e();ct();import{useEffect as QF,useState as jV,useRef as xy,useCallback as HV}from"react";var WV=K(),VV=2e3;function JF(){let{sessionToken:e,usageData:t,setUsageData:n}=ve(),[r,o]=jV(null),i=xy(null),s=xy(!1),a=xy(0);QF(()=>{t?.creditBalance!==void 0&&i.current===null&&(i.current=t.creditBalance)},[t?.creditBalance]);let u=HV(()=>{o(null)},[]);return QF(()=>{if(!e)return;let c=async()=>{let d=Date.now();if(s.current||d-a.current<VV){y.debug("[useBalanceRefresh] Skipping refresh (debounced or in progress)");return}s.current=!0,a.current=d;try{y.debug("[useBalanceRefresh] Refreshing balance...");let g=await se(`${WV}/api/addon/account`,{headers:{Authorization:`Bearer ${e}`}});if(g.ok){let p=await g.json(),h=p.creditBalance,S=i.current;if(S!==null&&h>S){let T=h-S;o({message:`Credits added! +${Math.floor(T)} credit(s)`,previousBalance:S,newBalance:h}),y.debug("[useBalanceRefresh] Credits added:",T)}i.current=h,n(p),y.debug("[useBalanceRefresh] Balance updated:",h)}}catch(g){y.error("[useBalanceRefresh] Failed to refresh:",g)}finally{s.current=!1}},l=()=>{document.visibilityState==="visible"&&c()};return document.addEventListener("visibilitychange",l),()=>{document.removeEventListener("visibilitychange",l)}},[e,n]),{notification:r,dismissNotification:u}}Ce();Ce();_e();Oe();ct();Xf();import{useEffect as GV,useRef as qV}from"react";var YV=300*1e3,ZF="uicopilot_feature_flags_fetched_at";function KV(){if(typeof localStorage>"u")return!1;try{let e=localStorage.getItem(ZF);if(!e)return!1;let t=parseInt(e,10);return Number.isNaN(t)?!1:Date.now()-t<YV}catch{return!1}}var yy=null,XV={admin:{enableFixGeneration:!0,enableFixApply:!0,enableAutoMap:!0,enableReviewBadges:!0,showCosts:!0,enableParallelReview:!0,enableModelSelection:!0},beta:{enableFixGeneration:!0,enableFixApply:!1,enableAutoMap:!0,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1}};function eE(){let{setFeatureFlags:e,setUserRole:t,roleOverride:n}=ue(),{sessionToken:r,resetAuth:o}=ve(),i=qV(null);GV(()=>{if(!r||r===i.current)return;if(i.current=r,KV()){y.debug("[useFeatureFlags] Cache fresh, skipping fetch");return}if(yy){y.debug("[useFeatureFlags] Reusing in-flight fetch");return}let s=`${K()}/api/addon/flags`;yy=se(s,{headers:{Authorization:`Bearer ${r}`}}).then(a=>{if(a.status===401||a.status===403)throw y.debug("[useFeatureFlags] Token rejected, resetting auth"),o(),new Error("session token invalid");if(!a.ok)throw new Error(`flags endpoint returned ${a.status}`);return a.json()}).then(a=>{y.debug("[useFeatureFlags] Received flags:",a);let u={enableFixGeneration:!!a.enableFixGeneration,enableFixApply:!!a.enableFixApply,enableAutoMap:!!a.enableAutoMap,enableReviewBadges:!!a.enableReviewBadges,showCosts:!!a.showCosts,enableParallelReview:!!a.enableParallelReview,enableModelSelection:!!a.enableModelSelection};a.role&&(t(a.role),a.role==="beta"&&Gw());let c=a.role==="admin"&&n?XV[n]:u;e(c);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(c)),a.role&&localStorage.setItem("uicopilot_user_role",a.role),localStorage.setItem(ZF,Date.now().toString())}catch{}}).catch(a=>{y.warn("[useFeatureFlags] Failed to fetch flags, using defaults:",a.message)}).finally(()=>{yy=null})},[r,e,t])}Ce();_e();cn();var JV={success:"linear-gradient(135deg, #10b981 0%, #059669 100%)",warning:"linear-gradient(135deg, #f59e0b 0%, #d97706 100%)",error:"linear-gradient(135deg, #ef4444 0%, #dc2626 100%)"},ZV=vr.div`
|
|
166
|
+
`;try{await navigator.clipboard.writeText(q+G),N(!0),setTimeout(()=>N(!1),2e3)}catch(V){y.error("Failed to copy dismissed issues:",V)}};return Ne.createElement(qW,null,!c&&It&&Ne.createElement(YW,null,Ne.createElement(KW,null,"\u{1F4CA} Progress:"),Ne.createElement(ny,{variant:"resolved"},"\u2705 ",It.resolved," resolved"),Ne.createElement(ny,{variant:"remaining"},"\u23F3 ",It.remaining," remaining"),It.newIssues>0&&Ne.createElement(ny,{variant:"new"},"\u{1F195} ",It.newIssues," new"),Ne.createElement(XW,null,"Iteration ",L?.iterationNumber||1)),Ne.createElement(ry,null,Ne.createElement(NF,{issues:M,modelId:oe,complianceScore:Ee,visualSimilarity:nt,costUsd:Pe,reviewDurationMs:ge,inputTokens:dt,outputTokens:fe,cacheCreationTokens:ce,cacheReadTokens:pe,onToggleSelection:s,onSelectAll:gt,onSelectNone:On,onSelectAllFixes:Zn,onGenerateFixes:lt,onApplyFixes:ie,onApplyFix:J,onCopyAllFixes:me,onDismiss:d,onUndismiss:g,isGenerating:b,isApplying:P,isCopying:I,applyFixesResult:a,onDismissResult:()=>u(null),generationTiming:A,generationUsage:C,hasReviewBeenRun:!c&&!!L,isLoadingReview:h,isReviewing:l,isNewReviewMode:c,generationProgress:f,autoApplySupported:j,selfReview:E})),!c&&R.length>0&&Ne.createElement(QW,null,Ne.createElement(JW,null,Ne.createElement(ZW,{onClick:()=>T(!S)},Ne.createElement("span",null,S?"\u25BC":"\u25B6"),Ne.createElement("span",null,"Filtered out"),Ne.createElement(tV,null,R.length),Ne.createElement(dV,null,W.postAiValidation>0&&Ne.createElement("span",null,"\u2699\uFE0F ",W.postAiValidation),W.aiValidation>0&&Ne.createElement("span",null,"\u2726 ",W.aiValidation),W.user>0&&Ne.createElement("span",null,"\u{1F464} ",W.user))),Ne.createElement(eV,{onClick:$},D?"\u2713 Copied!":"Copy")),S&&Ne.createElement(nV,null,(()=>{let _=R.reduce((V,he)=>{let Te=uV(he.dismissReason);return V[Te]||(V[Te]=[]),V[Te].push(he),V},{}),G=["HUG/FILL Sizing","Sub-pixel Differences","Values Match","No Fix Needed","Other"];return Object.keys(_).sort((V,he)=>G.indexOf(V)-G.indexOf(he)).map(V=>Ne.createElement(Ne.Fragment,{key:V},Ne.createElement(lV,null,V,Ne.createElement(cV,null,_[V].length)),_[V].map(he=>Ne.createElement(rV,{key:he.id},Ne.createElement(oV,null,Ne.createElement(pV,{phase:he.dismissedBy||oy(he.dismissReason)||"post-ai-validation"},gV(he.dismissedBy,he.dismissReason)," ",_F(he.dismissedBy,he.dismissReason)),Ne.createElement(iV,{onClick:()=>g(he.id),title:"Restore to active issues"},"\u21A9 Restore")),Ne.createElement(sV,null,"[",he.severity.toUpperCase(),"]"," ",he.title||he.description),he.dismissReason&&(()=>{let{categoryId:Te,note:Sn}=$F(he.dismissReason),Dt=Te?xu[Te]:null;return Ne.createElement(aV,null,Dt?Ne.createElement(Ne.Fragment,null,Dt.icon," ",Dt.label,Sn?` \u2014 ${Sn}`:""):OF(he.dismissReason))})()))))})())))};var bV=_a.div({marginTop:"20px"}),SV=_a.div(({theme:e})=>({display:"flex",alignItems:"center",borderBottom:`1px solid ${e.appBorderColor}`,marginBottom:"16px"})),wV=_a.div({display:"flex",alignItems:"center"}),iy=_a(Co)({padding:"10px 16px"}),vV=_a.div({minHeight:"200px"}),sy=()=>{let{reviewDetailTab:e,setReviewDetailTab:t,multiModelResults:n,selectedModels:r,userRole:o,roleOverride:i}=ue(),a=(i??o)==="admin",u=r.length>1||n&&Object.keys(n.byModel).length>1;return yV(()=>{!a&&(e==="chat"||e==="prompt")&&t("issues")},[a,e,t]),Or.createElement(bV,null,Or.createElement(SV,null,Or.createElement(wV,null,a&&Or.createElement(iy,{active:e==="prompt",onClick:()=>t("prompt")},"Prompt"),a&&Or.createElement(iy,{active:e==="chat",onClick:()=>t("chat")},u?"Models":"Chat"),Or.createElement(iy,{active:e==="issues",onClick:()=>t("issues")},"Issues"))),Or.createElement(vV,null,a&&e==="chat"&&(u?Or.createElement(YI,null):Or.createElement($x,null)),e==="issues"&&Or.createElement(UF,null),a&&e==="prompt"&&Or.createElement(_x,null)))};Ce();import H,{useState as bo,useRef as py,useEffect as IV,useMemo as VF}from"react";import{styled as yt,useTheme as FV}from"storybook/theming";_e();Oe();var yu={enableIssueTracking:!1,enableAutoFix:!1,enableFileModification:!1,enableMultiModelComparison:!0,enableBulkFixApplication:!1,enableFixUndo:!1,enableHoverHighlight:!0,enableEvaluationFixtures:!1,enableDebugMode:!1},$a="uicopilot_feature_flags";function ay(){try{let e=localStorage.getItem($a);if(e){let t=JSON.parse(e);return{...yu,...t}}}catch(e){y.warn("[FeatureFlags] Failed to load from localStorage:",e)}return yu}function kV(e,t){try{let r={...ay(),[e]:t},o={};for(let i in r){let s=i;r[s]!==yu[s]&&(o[s]=r[s])}Object.keys(o).length>0?localStorage.setItem($a,JSON.stringify(o)):localStorage.removeItem($a),y.debug(`[FeatureFlags] Set ${e} = ${t}`)}catch(n){y.error("[FeatureFlags] Failed to set flag:",n)}}function CV(){try{localStorage.removeItem($a),y.debug("[FeatureFlags] Reset to defaults")}catch(e){y.error("[FeatureFlags] Failed to reset:",e)}}function ly(e){return ay()[e]}function TV(){let e=Object.keys(yu).reduce((t,n)=>({...t,[n]:!0}),{});try{localStorage.setItem($a,JSON.stringify(e)),y.debug("[FeatureFlags] All features enabled! Reload to apply.")}catch(t){y.error("[FeatureFlags] Failed to enable all features:",t)}}typeof window<"u"&&(window.uicopilot={...window.uicopilot,featureFlags:{get:ay,set:kV,reset:CV,enableAll:TV,isEnabled:ly}});Oe();ct();import Bt from"react";var jF=()=>Bt.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Bt.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),Bt.createElement("circle",{cx:"12",cy:"12",r:"3"}));var Ua={xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round"},ja=()=>Bt.createElement("svg",{...Ua},Bt.createElement("circle",{cx:"11",cy:"11",r:"8"}),Bt.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})),HF=()=>Bt.createElement("svg",{...Ua},Bt.createElement("path",{d:"M18.84 12.25l1.72-1.71a5 5 0 0 0-7.07-7.07l-1.71 1.71"}),Bt.createElement("path",{d:"M5.17 11.75l-1.71 1.71a5 5 0 0 0 7.07 7.07l1.71-1.71"}),Bt.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"5"}),Bt.createElement("line",{x1:"2",y1:"8",x2:"5",y2:"8"}),Bt.createElement("line",{x1:"16",y1:"22",x2:"16",y2:"19"}),Bt.createElement("line",{x1:"22",y1:"16",x2:"19",y2:"16"})),WF=()=>Bt.createElement("svg",{...Ua},Bt.createElement("polyline",{points:"23 4 23 10 17 10"}),Bt.createElement("polyline",{points:"1 20 1 14 7 14"}),Bt.createElement("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"})),cy=()=>Bt.createElement("svg",{...Ua},Bt.createElement("circle",{cx:"11",cy:"11",r:"8"}),Bt.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),Bt.createElement("line",{x1:"11",y1:"8",x2:"11",y2:"14"}),Bt.createElement("line",{x1:"8",y1:"11",x2:"14",y2:"11"})),uy=()=>Bt.createElement("svg",{...Ua},Bt.createElement("circle",{cx:"11",cy:"11",r:"8"}),Bt.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),Bt.createElement("line",{x1:"8",y1:"11",x2:"14",y2:"11"}));var Ha=yt.div({marginTop:"20px"}),EV=e=>{if(!e)return null;let t=new Date(e);return isNaN(t.getTime())?null:t.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})},bu=yt.div({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px",flexWrap:"wrap",gap:"8px"}),Su=yt.div({display:"flex",alignItems:"center",gap:"12px"}),Wa=yt.div(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),AV=yt.span(({theme:e})=>({fontSize:"11px",fontWeight:400,color:e.color.warning,whiteSpace:"nowrap"})),PV=yt.div(({theme:e})=>({display:"inline-flex",gap:"2px",padding:"2px",backgroundColor:e.background.app,border:`1px solid ${e.appBorderColor}`,borderRadius:"999px",flexShrink:0})),GF=yt.button(({theme:e,active:t})=>({display:"inline-flex",alignItems:"center",gap:"5px",padding:"3px 12px",fontSize:"11px",fontWeight:600,cursor:"pointer",border:"none",borderRadius:"999px",backgroundColor:t?e.background.content:"transparent",color:t?e.color.secondary:e.color.mediumdark,boxShadow:t?"0 1px 2px rgba(0, 0, 0, 0.12)":"none",whiteSpace:"nowrap",transition:"all 0.15s","&:hover":{color:t?e.color.secondary:e.color.defaultText}})),_he=yt.div({display:"flex",gap:"8px"}),$he=yt.button(({active:e,theme:t})=>({padding:"4px 12px",backgroundColor:e?t.color.secondary:"transparent",color:e?"#fff":t.color.mediumdark,border:`1px solid ${e?t.color.secondary:t.appBorderColor}`,borderRadius:"4px",fontSize:"11px",fontWeight:500,cursor:"pointer",transition:"all 0.2s","&:hover":{opacity:.9}})),qF=yt.div(({theme:e,layout:t})=>({display:t==="side-by-side"?"grid":"flex",gridTemplateColumns:t==="side-by-side"?"minmax(0, 1fr) minmax(0, 1fr)":void 0,gap:t==="side-by-side"?`${e.layoutMargin}px`:0,position:"relative",width:"100%",justifyContent:t==="overlay"?"center":void 0})),Va=yt.div(({theme:e,zoomed:t})=>({position:"relative",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,overflow:"hidden",backgroundColor:e.background.app,minHeight:"60px",maxHeight:t?"400px":"150px",display:"flex",alignItems:"center",justifyContent:"center",transition:"max-height 0.2s ease, box-shadow 0.2s ease",boxShadow:t?"0 8px 30px rgba(0, 0, 0, 0.15)":"none","& img":t?{maxWidth:"100%",maxHeight:"400px"}:void 0})),Ga=yt.div(({theme:e})=>({position:"absolute",top:"6px",left:"6px",backgroundColor:e.base==="dark"?"rgba(255, 255, 255, 0.92)":"rgba(0, 0, 0, 0.7)",color:e.base==="dark"?"#0a0a0f":e.color.inverseText,padding:"3px 6px",borderRadius:"3px",fontSize:"10px",fontWeight:600,zIndex:10})),qa=yt.div({position:"absolute",top:"6px",right:"6px",display:"flex",gap:"4px",zIndex:10}),Xo=yt.button(({theme:e,accent:t})=>({width:"24px",height:"24px",padding:"0",backgroundColor:e.base==="dark"?"rgba(255, 255, 255, 0.12)":"rgba(255, 255, 255, 0.92)",border:`1px solid ${t}55`,borderRadius:e.appBorderRadius,color:t,cursor:"pointer",display:"inline-flex",alignItems:"center",justifyContent:"center",transition:"all 0.15s",backdropFilter:"blur(4px)","&:hover:not(:disabled)":{backgroundColor:t,color:"#ffffff",borderColor:t},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),LV=yt.img(({opacity:e=1})=>({maxWidth:"150px",maxHeight:"150px",height:"auto",display:"block",objectFit:"contain",opacity:e})),MV=yt.img({display:"block",objectFit:"contain",maxHeight:"150px",maxWidth:"150px"}),BV=yt.div({position:"relative",display:"inline-block",maxHeight:"150px",overflow:"hidden"}),Uhe=yt.svg(({isVisible:e})=>({position:"absolute",top:0,left:0,width:"100%",height:"100%",pointerEvents:"none",opacity:e?1:0,transition:"opacity 150ms ease-in",...!e&&{transition:"opacity 100ms ease-out"}})),DV=yt.div({position:"relative",display:"inline-block"}),jhe=yt.div(({width:e,height:t,theme:n})=>({position:"relative",width:e?`${e}px`:"auto",height:t?`${t}px`:"auto",border:`1px solid ${n.appBorderColor}`,borderRadius:"4px",overflow:"hidden",backgroundColor:n.background.app})),RV=yt.img({display:"block",maxWidth:"100%",height:"auto",objectFit:"contain"}),zV=yt.img({position:"absolute",top:"0",left:"0",pointerEvents:"none"}),NV=yt.div({marginTop:"12px",display:"flex",alignItems:"center",gap:"12px"}),OV=yt.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,minWidth:"80px"})),_V=yt.input({flex:1}),dy=yt.div(({theme:e})=>({padding:"40px",textAlign:"center",color:e.color.mediumdark,fontSize:"13px",border:`1px dashed ${e.appBorderColor}`,borderRadius:"4px"})),Hhe=yt.div(({theme:e})=>({padding:"40px",textAlign:"center",color:e.color.mediumdark,fontSize:"13px"})),gy=yt.div({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"12px"}),yi=yt.div(({theme:e})=>({position:"relative",border:`1px solid ${e.appBorderColor}`,borderRadius:"8px",overflow:"hidden",backgroundColor:e.background.content,minHeight:"80px",maxHeight:"120px",display:"flex",alignItems:"center",justifyContent:"center","&::before":{content:'""',position:"absolute",top:0,left:"-100%",width:"100%",height:"100%",background:e.base==="dark"?"linear-gradient(90deg, transparent, rgba(255,255,255,0.04), transparent)":"linear-gradient(90deg, transparent, rgba(0,0,0,0.04), transparent)",animation:"shimmer 1.5s ease-in-out infinite",pointerEvents:"none"},"@keyframes shimmer":{"0%":{left:"-100%"},"100%":{left:"100%"}}})),bi=yt.div({textAlign:"center",zIndex:1}),Si=yt.div(({theme:e})=>({width:"32px",height:"32px",border:`3px solid ${e.appBorderColor}`,borderTop:`3px solid ${e.color.secondary}`,borderRadius:"50%",animation:"spin 1s linear infinite",marginBottom:"12px","@keyframes spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),wi=yt.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,fontWeight:500})),fy=({isLoading:e=!1,isLoadingFigma:t=!1,isLoadingStorybook:n=!1})=>{let r=FV(),{currentMapping:o,loadingMapping:i}=Ze(),{figmaImageUrl:s,storybookImageUrl:a,figmaDimensions:u,setFigmaImageUrl:c,hoveredIssueId:l,reviewHistory:d,currentReviewId:g,isReviewing:p,isValidating:h,isNewReviewMode:S,setNewReviewMode:T}=ue(),{selectedProjectId:I}=Xe(),{sessionToken:v}=ve(),{openComponentBrowser:D}=ea(),{hasMapping:N,deleteMapping:j,setCurrentMapping:B}=ai(),z=ly("enableHoverHighlight"),[m,b]=bo("side-by-side"),[k,A]=bo(.5),[f,C]=bo(!1),[E,x]=bo(!1),[F,P]=bo(!1),[L,O]=bo(!1),[w,R]=bo(!1),W=async()=>{P(!1);try{let Ge=o?.id;Ge&&await j(Ge),B(null)}catch(Ge){y.error("[ScreenshotComparison] Failed to unlink:",Ge)}},M=g?d.find(Ge=>Ge.id===g):void 0,oe=S||!g,X=p||h||oe,ne=X?s||M?.figmaImageData||null:M?.figmaImageData||s||null,xe=X?a||M?.storybookImageData||null:M?.storybookImageData||a||null,Ee=!!g&&!!ne,nt=VF(()=>{if(!M)return!1;let Ge=d.filter(lt=>lt.storyId===M.storyId&&!lt.parentReviewId).sort((lt,ie)=>new Date(ie.createdAt).getTime()-new Date(lt.createdAt).getTime())[0];return!!Ge&&Ge.id!==M.id},[M,d]);IV(()=>{x(!1)},[ne]);let[Pe,ge]=bo(null),[dt,fe]=bo(null),ce=py(null),pe=py(null),at=py(null),It=VF(()=>{if(!z||!l||!g)return null;let Ge=d.find(lt=>lt.id===g);return Ge?.issues&&Ge.issues.find(lt=>lt.id===l)||null},[l,g,d]),gt=Ge=>{let lt=Ge.currentTarget;x(!0),!bt.getState().figmaDimensions&<.naturalWidth&<.naturalHeight&&bt.getState().setFigmaDimensions({width:lt.naturalWidth,height:lt.naturalHeight}),requestAnimationFrame(()=>{if(pe.current){let{clientWidth:J,clientHeight:me}=pe.current;J&&me&&fe({width:J,height:me})}})},On=()=>{requestAnimationFrame(()=>{if(ce.current){let{clientWidth:Ge,clientHeight:lt}=ce.current;Ge&<&&ge({width:Ge,height:lt})}})},Zn=async()=>{if(!(!I||!v)){C(!0);try{let Ge=K();await se(`${Ge}/api/figma/frames/invalidate?projectId=${I}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${v}`},credentials:"include"}),c(null),y.debug("Figma cache cleared, image will reload on next review")}catch(Ge){y.error("Failed to refresh Figma:",Ge)}finally{C(!1)}}};return e?H.createElement(Ha,null,H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots from this review"))),H.createElement(gy,null,H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading Figma..."))),H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading Storybook..."))))):!ne&&!xe&&!o?i?H.createElement(Ha,null,H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots from this review"))),H.createElement(gy,null,H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading..."))))):H.createElement(Ha,null,H.createElement(Wa,null,"Screenshots from this review"),H.createElement(Va,null,H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:D,disabled:!I,title:"Browse Figma to map this component","aria-label":"Browse Figma to map this component"},H.createElement(ja,null))),H.createElement(dy,{style:{border:"none",padding:"20px 16px",lineHeight:"1.6"}},H.createElement("div",{style:{fontSize:"14px",marginBottom:"6px"}},"\u2728 This story isn't linked to a Figma frame yet"),H.createElement("div",{style:{fontSize:"12px",opacity:.75}},"Click the \u{1F50D} above to browse your Figma file and pick a matching frame. Once linked, run a Review to compare your code with the design.")))):!ne&&!xe?H.createElement(Ha,null,H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots from this review"))),H.createElement(gy,null,H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading..."))))):H.createElement(Ha,{ref:at},H.createElement(bu,null,H.createElement(Su,null,H.createElement(Wa,null,"Screenshots"),g&&H.createElement(PV,null,H.createElement(GF,{active:!oe,onClick:()=>T(!1),title:"Show the saved screenshots from this review"},"Last review"),H.createElement(GF,{active:oe,onClick:()=>T(!0),title:"Show the current mapping & canvas the next review will capture"},"Current")),!oe&&nt&&M&&(()=>{let Ge=EV(M.createdAt);return Ge?H.createElement(AV,{title:"You're viewing an older review \u2014 these screenshots are a past snapshot, not the latest"},"Older snapshot \xB7 ",Ge):null})())),m==="side-by-side"?H.createElement(qF,{layout:"side-by-side"},(o||Ee)&&ne&&!t?H.createElement(Va,{zoomed:L},H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:()=>O(Ge=>!Ge),title:L?"Shrink preview":"Enlarge preview","aria-label":L?"Shrink preview":"Enlarge preview"},L?H.createElement(uy,null):H.createElement(cy,null)),oe&&H.createElement(H.Fragment,null,N&&H.createElement(Xo,{accent:r.color.secondary,onClick:D,title:"Browse Figma \u2014 change mapping","aria-label":"Browse Figma"},H.createElement(ja,null)),H.createElement(Xo,{accent:r.color.positive,onClick:Zn,disabled:f,title:"Refresh Figma cache and reload image","aria-label":"Refresh Figma cache"},H.createElement(WF,null)),N&&H.createElement(Xo,{accent:r.color.negative,onClick:()=>P(!0),title:"Unlink Figma mapping","aria-label":"Unlink Figma mapping"},H.createElement(HF,null)))),H.createElement(BV,null,H.createElement(MV,{ref:pe,src:ne,alt:"Figma design",onLoad:gt,style:{opacity:E?1:0,transition:"opacity 150ms ease-in"}}))):o&&!ne&&!t?H.createElement(Va,null,H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:D,disabled:!I,title:"Change Figma mapping","aria-label":"Change Figma mapping"},H.createElement(ja,null))),H.createElement(dy,{style:{border:"none",padding:"16px"}},"Figma image unavailable. Try mapping to a specific variant.")):!o&&!i?H.createElement(Va,null,H.createElement(Ga,null,"Figma Design"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:D,disabled:!I,title:"Browse Figma to map this component","aria-label":"Browse Figma to map this component"},H.createElement(ja,null))),H.createElement(dy,{style:{border:"none",padding:"16px"}},"No Figma mapping.")):H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,t?"Refreshing Figma...":"Loading Figma..."))),xe&&!n?H.createElement(Va,{zoomed:w},H.createElement(Ga,null,"Storybook Component"),H.createElement(qa,null,H.createElement(Xo,{accent:r.color.secondary,onClick:()=>R(Ge=>!Ge),title:w?"Shrink preview":"Enlarge preview","aria-label":w?"Shrink preview":"Enlarge preview"},w?H.createElement(uy,null):H.createElement(cy,null))),H.createElement(LV,{ref:ce,src:xe,alt:"Storybook component",onLoad:On})):H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,n?"Refreshing Storybook...":"Loading Storybook...")))):H.createElement(H.Fragment,null,H.createElement(qF,{layout:"overlay"},H.createElement(DV,null,ne&&xe?H.createElement(H.Fragment,null,H.createElement("div",{style:{position:"relative",display:"inline-block",border:"1px solid #ccc",borderRadius:"4px",overflow:"hidden"}},H.createElement(RV,{ref:ce,src:xe,alt:"Storybook component",onLoad:On,style:{maxHeight:"150px"}}),Pe&&H.createElement(zV,{src:ne,alt:"Figma design overlay",style:{opacity:k,width:Pe.width,height:Pe.height,objectFit:"fill"}})),H.createElement("div",{style:{fontSize:"10px",color:r.color.mediumdark,marginTop:"8px",textAlign:"center"}},H.createElement("span",{style:{color:"#1ea7fd"}},"Storybook (base)")," + ",H.createElement("span",{style:{color:"#667eea"}},"Figma (overlay)"),Pe&&` \u2022 ${Pe.width}\xD7${Pe.height}px`)):H.createElement(yi,null,H.createElement(bi,null,H.createElement(Si,null),H.createElement(wi,null,"Loading Images..."))))),xe&&ne&&H.createElement(NV,null,H.createElement(OV,null,"Figma Opacity:"),H.createElement(_V,{type:"range",min:"0",max:"1",step:"0.01",value:k,onChange:Ge=>A(parseFloat(Ge.target.value))}),H.createElement("span",null,Math.round(k*100),"%"))),H.createElement(Vr,{isOpen:F,title:"Unlink Figma Mapping",message:"Unlink this story from its Figma mapping?",confirmLabel:"Unlink",variant:"danger",onConfirm:W,onCancel:()=>P(!1)}))};Ce();ct();var $V=fs.div({height:"100%"}),my=fs.div({marginBottom:"20px"}),YF=fs.div(({theme:e})=>({padding:"12px",backgroundColor:e.background.negative||"#fee2e2",border:`1px solid ${e.color.negative||"#fca5a5"}`,borderRadius:"6px",color:e.color.negative||"#991b1b",fontSize:"13px",marginBottom:"16px",display:"flex",alignItems:"flex-start",gap:"8px"})),KF=fs.span({fontSize:"16px",flexShrink:0}),UV=fs.div(({theme:e})=>({padding:"10px 12px",backgroundColor:`${e.color.warning}1a`,border:`1px solid ${e.color.warning}`,borderRadius:"6px",color:e.color.warning,fontSize:e.typography.size.s2,marginBottom:"16px",display:"flex",alignItems:"center",gap:"8px",lineHeight:1.4})),XF=fs.div({flex:1}),hy=()=>{let{reviewError:e,getCurrentReview:t}=ue(),n=t(),{showComponentBrowser:r,closeComponentBrowser:o,figmaFileUrl:i}=ea(),{selectedProjectId:s}=uo(),{setCurrentMapping:a}=ai(),{currentStoryId:u,currentStoryName:c}=Ze(),{isLoadingScreenshots:l,isLoadingFigma:d,isLoadingStorybook:g,screenshotError:p,setFigmaImageDirect:h}=ii(),S=async T=>{y.debug("[ReviewPanel] handleSelectFrame CALLED with frame:",T),y.debug("[ReviewPanel] frame.id:",T?.id);let I=bt.getState(),v=I.selectedProjectId,D=I.currentStoryId,N=I.currentStoryName,j=I.figmaFileUrl;y.debug("[ReviewPanel] selectedProjectId (from store):",v),y.debug("[ReviewPanel] currentStoryId (from store):",D),y.debug("[ReviewPanel] currentStoryName (from store):",N),T.thumbnail&&D&&(y.debug("[ReviewPanel] Setting Figma image directly BEFORE mapping save (instant display)"),h(D,T.id,T.thumbnail));try{let B=K(),z=localStorage.getItem("uicopilot_session_token");if(y.debug("[ReviewPanel] sessionToken exists:",!!z),y.debug("[ReviewPanel] dashboardUrl:",B),!z||!v||!D){y.error("[ReviewPanel] Missing required data for saving mapping:",{hasSessionToken:!!z,selectedProjectId:v,currentStoryId:D});return}let m=j?.match(/\/file\/([^\/]+)/)?.[1]||void 0;y.debug("[ReviewPanel] Making POST to /api/mappings with:",{projectId:v,storyId:D,name:N,figmaNodeId:T.id,figmaFileKey:m});let b=await se(`${B}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({projectId:v,storyId:D,name:N,figmaNodeId:T.id,figmaFileKey:m})});if(b.ok){let k=await b.json();k.mapping&&(a(k.mapping),T.thumbnail||(y.debug("[ReviewPanel] No thumbnail available, triggering fetch"),bt.getState().triggerScreenshotRefresh()),y.debug("[ReviewPanel] Mapping saved successfully:",k.mapping))}else{let k=await b.text();y.error("[ReviewPanel] Failed to save mapping:",k)}}catch(B){y.error("[ReviewPanel] Error saving mapping:",B)}};return Zt.createElement($V,null,Zt.createElement(my,null,Zt.createElement(Nh,null)),e&&Zt.createElement(YF,null,Zt.createElement(KF,null,"\u26A0\uFE0F"),Zt.createElement(XF,null,e)),p&&Zt.createElement(YF,null,Zt.createElement(KF,null,"\u26A0\uFE0F"),Zt.createElement(XF,null,"Screenshot loading error: ",p)),n?.variantMismatch&&Zt.createElement(UV,null,Zt.createElement("span",{style:{fontSize:16,flexShrink:0}},"\u26A0"),Zt.createElement("span",null,Zt.createElement("strong",null,"Variant mismatch:")," Storybook is showing ",Zt.createElement("strong",null,n.storybookVariant)," but Figma frame is ",Zt.createElement("strong",null,n.figmaVariant),". Some differences may be expected.")),Zt.createElement(my,null,Zt.createElement(fy,{isLoading:l,isLoadingFigma:d,isLoadingStorybook:g})),Zt.createElement(my,null,Zt.createElement(sy,null)),Zt.createElement(Zi,{isOpen:r,onClose:o,onSelect:S,figmaFileUrl:i||"",projectId:s||void 0}))};Ce();Oe();_e();ct();import{useEffect as QF,useState as jV,useRef as xy,useCallback as HV}from"react";var WV=K(),VV=2e3;function JF(){let{sessionToken:e,usageData:t,setUsageData:n}=ve(),[r,o]=jV(null),i=xy(null),s=xy(!1),a=xy(0);QF(()=>{t?.creditBalance!==void 0&&i.current===null&&(i.current=t.creditBalance)},[t?.creditBalance]);let u=HV(()=>{o(null)},[]);return QF(()=>{if(!e)return;let c=async()=>{let d=Date.now();if(s.current||d-a.current<VV){y.debug("[useBalanceRefresh] Skipping refresh (debounced or in progress)");return}s.current=!0,a.current=d;try{y.debug("[useBalanceRefresh] Refreshing balance...");let g=await se(`${WV}/api/addon/account`,{headers:{Authorization:`Bearer ${e}`}});if(g.ok){let p=await g.json(),h=p.creditBalance,S=i.current;if(S!==null&&h>S){let T=h-S;o({message:`Credits added! +${Math.floor(T)} credit(s)`,previousBalance:S,newBalance:h}),y.debug("[useBalanceRefresh] Credits added:",T)}i.current=h,n(p),y.debug("[useBalanceRefresh] Balance updated:",h)}}catch(g){y.error("[useBalanceRefresh] Failed to refresh:",g)}finally{s.current=!1}},l=()=>{document.visibilityState==="visible"&&c()};return document.addEventListener("visibilitychange",l),()=>{document.removeEventListener("visibilitychange",l)}},[e,n]),{notification:r,dismissNotification:u}}Ce();Ce();_e();Oe();ct();Xf();import{useEffect as GV,useRef as qV}from"react";var YV=300*1e3,ZF="uicopilot_feature_flags_fetched_at";function KV(){if(typeof localStorage>"u")return!1;try{let e=localStorage.getItem(ZF);if(!e)return!1;let t=parseInt(e,10);return Number.isNaN(t)?!1:Date.now()-t<YV}catch{return!1}}var yy=null,XV={admin:{enableFixGeneration:!0,enableFixApply:!0,enableAutoMap:!0,enableReviewBadges:!0,showCosts:!0,enableParallelReview:!0,enableModelSelection:!0},beta:{enableFixGeneration:!0,enableFixApply:!1,enableAutoMap:!0,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1}};function eE(){let{setFeatureFlags:e,setUserRole:t,roleOverride:n}=ue(),{sessionToken:r,resetAuth:o}=ve(),i=qV(null);GV(()=>{if(!r||r===i.current)return;if(i.current=r,KV()){y.debug("[useFeatureFlags] Cache fresh, skipping fetch");return}if(yy){y.debug("[useFeatureFlags] Reusing in-flight fetch");return}let s=`${K()}/api/addon/flags`;yy=se(s,{headers:{Authorization:`Bearer ${r}`}}).then(a=>{if(a.status===401||a.status===403)throw y.debug("[useFeatureFlags] Token rejected, resetting auth"),o(),new Error("session token invalid");if(!a.ok)throw new Error(`flags endpoint returned ${a.status}`);return a.json()}).then(a=>{y.debug("[useFeatureFlags] Received flags:",a);let u={enableFixGeneration:!!a.enableFixGeneration,enableFixApply:!!a.enableFixApply,enableAutoMap:!!a.enableAutoMap,enableReviewBadges:!!a.enableReviewBadges,showCosts:!!a.showCosts,enableParallelReview:!!a.enableParallelReview,enableModelSelection:!!a.enableModelSelection};a.role&&(t(a.role),a.role==="beta"&&Gw());let c=a.role==="admin"&&n?XV[n]:u;e(c);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(c)),a.role&&localStorage.setItem("uicopilot_user_role",a.role),localStorage.setItem(ZF,Date.now().toString())}catch{}}).catch(a=>{y.warn("[useFeatureFlags] Failed to fetch flags, using defaults:",a.message)}).finally(()=>{yy=null})},[r,e,t])}Ce();_e();cn();var JV={success:"linear-gradient(135deg, #10b981 0%, #059669 100%)",warning:"linear-gradient(135deg, #f59e0b 0%, #d97706 100%)",error:"linear-gradient(135deg, #ef4444 0%, #dc2626 100%)"},ZV=vr.div`
|
|
167
167
|
position: fixed;
|
|
168
168
|
top: 16px;
|
|
169
169
|
right: 16px;
|
|
@@ -215,7 +215,7 @@ ${"=".repeat(40)}
|
|
|
215
215
|
color: ${({theme:e})=>e.color.mediumdark};
|
|
216
216
|
text-align: center;
|
|
217
217
|
opacity: 0.7;
|
|
218
|
-
`,o9=vr.div(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"48px 24px",textAlign:"center",gap:"16px"})),i9=vr.div({fontSize:"32px"}),s9=vr.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),a9=vr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s2,color:e.color.mediumdark,maxWidth:"320px",lineHeight:1.5})),nE=vr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"10px",padding:"10px 14px",margin:"8px 12px",backgroundColor:`${e.color.warning}15`,border:`1px solid ${e.color.warning}50`,borderRadius:e.appBorderRadius,fontSize:e.typography.size.s2,color:e.color.defaultText})),rE=vr.span({flex:1}),oE=vr.button(({theme:e})=>({padding:"4px 12px",fontSize:11,fontWeight:600,border:`1px solid ${e.color.warning}`,borderRadius:e.appBorderRadius,backgroundColor:"transparent",color:e.color.warning,cursor:"pointer",whiteSpace:"nowrap","&:hover":{backgroundColor:`${e.color.warning}15`}})),iE=()=>{let{selectedProjectId:e,projects:t,loadingProjects:n}=Xe(),{isConnected:r,sessionToken:o,authError:i}=ve(),{currentStoryId:s}=Ze(),{currentReviewId:a,userRole:u,roleOverride:c,setRoleOverride:l,setFeatureFlags:d,pendingSettingsOpen:g,setPendingSettingsOpen:p}=ue(),[h,S]=QV(!1);tE(()=>{g&&(S(!0),p(!1))},[g,p]);let T=()=>{l(null),o&&fetch(`${K()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(m=>m.json()).then(m=>{d({enableFixGeneration:!!m.enableFixGeneration,enableFixApply:!!m.enableFixApply,enableAutoMap:!!m.enableAutoMap,enableReviewBadges:!!m.enableReviewBadges,showCosts:!!m.showCosts,enableParallelReview:!!m.enableParallelReview,enableModelSelection:!!m.enableModelSelection})}).catch(()=>{})};Dm(),Qm(),eE(),Hm(),$m();let{notification:I,dismissNotification:v}=JF();tE(()=>{if(I){let m=setTimeout(v,5e3);return()=>clearTimeout(m)}},[I,v]);let D=t.find(m=>m.id===e),N=r&&!!e&&!!D,j=!!o&&!!e&&(n||t.length===0),{loadingMapping:B}=Ze(),z=N&&!!s&&!a&&B;return Ot.createElement(Pu,{header:Ot.createElement(Lu,{toolbar:Ot.createElement(om,{onOpenSettings:()=>S(!0)})}),footer:Ot.createElement(r9,null,At.NAME," v","0.5.
|
|
218
|
+
`,o9=vr.div(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"48px 24px",textAlign:"center",gap:"16px"})),i9=vr.div({fontSize:"32px"}),s9=vr.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),a9=vr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s2,color:e.color.mediumdark,maxWidth:"320px",lineHeight:1.5})),nE=vr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"10px",padding:"10px 14px",margin:"8px 12px",backgroundColor:`${e.color.warning}15`,border:`1px solid ${e.color.warning}50`,borderRadius:e.appBorderRadius,fontSize:e.typography.size.s2,color:e.color.defaultText})),rE=vr.span({flex:1}),oE=vr.button(({theme:e})=>({padding:"4px 12px",fontSize:11,fontWeight:600,border:`1px solid ${e.color.warning}`,borderRadius:e.appBorderRadius,backgroundColor:"transparent",color:e.color.warning,cursor:"pointer",whiteSpace:"nowrap","&:hover":{backgroundColor:`${e.color.warning}15`}})),iE=()=>{let{selectedProjectId:e,projects:t,loadingProjects:n}=Xe(),{isConnected:r,sessionToken:o,authError:i}=ve(),{currentStoryId:s}=Ze(),{currentReviewId:a,userRole:u,roleOverride:c,setRoleOverride:l,setFeatureFlags:d,pendingSettingsOpen:g,setPendingSettingsOpen:p}=ue(),[h,S]=QV(!1);tE(()=>{g&&(S(!0),p(!1))},[g,p]);let T=()=>{l(null),o&&fetch(`${K()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(m=>m.json()).then(m=>{d({enableFixGeneration:!!m.enableFixGeneration,enableFixApply:!!m.enableFixApply,enableAutoMap:!!m.enableAutoMap,enableReviewBadges:!!m.enableReviewBadges,showCosts:!!m.showCosts,enableParallelReview:!!m.enableParallelReview,enableModelSelection:!!m.enableModelSelection})}).catch(()=>{})};Dm(),Qm(),eE(),Hm(),$m();let{notification:I,dismissNotification:v}=JF();tE(()=>{if(I){let m=setTimeout(v,5e3);return()=>clearTimeout(m)}},[I,v]);let D=t.find(m=>m.id===e),N=r&&!!e&&!!D,j=!!o&&!!e&&(n||t.length===0),{loadingMapping:B}=Ze(),z=N&&!!s&&!a&&B;return Ot.createElement(Pu,{header:Ot.createElement(Lu,{toolbar:Ot.createElement(om,{onOpenSettings:()=>S(!0)})}),footer:Ot.createElement(r9,null,At.NAME," v","0.5.48")},I&&Ot.createElement(ZV,{variant:I.variant||"success"},Ot.createElement(e9,null,I.variant==="error"?"!":I.variant==="warning"?"\u26A0":"+"),Ot.createElement(t9,null,I.message),Ot.createElement(n9,{onClick:v},"x")),i&&Ot.createElement(nE,null,Ot.createElement("span",null,"\u26A0"),Ot.createElement(rE,null,i),Ot.createElement(oE,{onClick:()=>S(!0)},"Reconnect")),u==="admin"&&c&&Ot.createElement(nE,null,Ot.createElement("span",null,"\u{1F441}"),Ot.createElement(rE,null,"Previewing as ",c),Ot.createElement(oE,{onClick:T},"Exit preview")),j||z?Ot.createElement(gu,{label:j?"Loading...":"Loading review..."}):N?Ot.createElement(hy,null):Ot.createElement(o9,null,Ot.createElement(i9,null,"\u2699"),Ot.createElement(s9,null,i?"Connection issue":`Set up ${At.NAME}`),Ot.createElement(a9,null,i?"Session expired or dashboard unreachable. Please reconnect.":"Connect your account and select a project to start reviewing your components against Figma designs."),Ot.createElement(sn,{onClick:()=>S(!0)},i?"Reconnect":"Open Settings")),h&&Ot.createElement(E1,{onClose:()=>S(!1)}))};import sE,{useCallback as l9}from"react";import{useStorybookApi as c9}from"storybook/manager-api";import{IconButton as u9}from"storybook/internal/components";var p9="uireview",d9=`${p9}/panel`,aE=()=>{let e=c9();f1(e);let t=l9(()=>{e.togglePanel(!0),e.setSelectedPanel(d9)},[e]);return sE.createElement(u9,{key:"uireview-tool",title:"UI Review - Compare with Figma",onClick:t},sE.createElement(jF,null))};Ce();import Kt,{useState as Qa,useCallback as pE,useEffect as vy}from"react";import{styled as So,useTheme as k9}from"storybook/theming";import{addons as ku}from"storybook/manager-api";_e();Oe();import{addons as y9,experimental_getStatusStore as vu}from"storybook/manager-api";async function lE(e,t,n,r){let o=new Array(e.length),i=0;async function s(){for(;i<e.length&&!r();){let a=i++;try{let u=await e[a]();o[a]=u,r()||n(a,u)}catch(u){o[a]=u,r()||n(a,u)}}}return await Promise.all(Array.from({length:Math.min(t,e.length)},()=>s())),o}_e();Oe();var g9=K(),f9="uireview/badge";async function m9(e,t,n=3){for(let r=0;r<=n;r++){let o=await fetch(e,t);if(o.status!==429||r===n)return o;let i=Math.pow(2,r)*1e3;y.warn(`[reviewAll] Rate limited, retrying in ${i}ms`),await new Promise(s=>setTimeout(s,i))}throw new Error("Max retries exceeded")}async function h9(e,t){let n=new TextDecoder,r="",o=null,i=0,s=0,a=0,u=0,c=0,l=0;for(;;){let{done:d,value:g}=await e.read();if(d)break;if(t()){e.cancel();break}r+=n.decode(g,{stream:!0});let p=r.split(`
|
|
219
219
|
`);r=p.pop()||"";for(let h of p)if(h.startsWith("data: "))try{let S=JSON.parse(h.slice(6));if(S.type==="complete"){o=S.complianceScore??S.validation?.complianceScore??null;let I=(S.issues||[]).filter(v=>!v.dismissed);i=I.filter(v=>v.severity==="critical").length,s=I.filter(v=>v.severity==="major").length,a=I.filter(v=>v.severity==="minor").length,u=S.costUsd||0,c=S.inputTokens||0,l=S.outputTokens||0}}catch{}}return{score:o,criticalCount:i,majorCount:s,minorCount:a,costUsd:u,inputTokens:c,outputTokens:l}}function wu(e,t,n,r,o){e&&e.set([{value:n,typeId:f9,storyId:t,title:r,description:o}])}async function x9(e){let t=window.location.origin;try{let n=await fetch(`${t}/__uicopilot/capture?storyId=${encodeURIComponent(e)}`);if(n.ok){let r=await n.json();return{screenshot:r.screenshot||void 0,computedStyles:r.computedStyles||void 0,domTree:r.domTree||void 0}}}catch{}try{let n=await fetch(`${t}/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`);if(n.ok)return{screenshot:(await n.json()).screenshot||void 0}}catch{}return{}}async function cE(e,t,n,r,o,i){wu(o,e.storyId,"status-value:pending","Reviewing...",e.storyName);try{console.warn(`[reviewAll] Capturing for: ${e.storyName} (${e.storyId})`);let s=await x9(e.storyId);console.warn(`[reviewAll] Captured: screenshot=${!!s.screenshot} domTree=${!!s.domTree} styles=${!!s.computedStyles} for: ${e.storyName}`);let a=await m9(`${g9}/api/review/stream`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({projectId:n,storyId:e.storyId,storyName:e.storyName,storybookScreenshot:s.screenshot,computedStyles:s.computedStyles,domTree:s.domTree,aiModels:[r]})});if(console.warn(`[reviewAll] API response for ${e.storyName}: HTTP ${a.status}`),!a.ok)throw new Error(`HTTP ${a.status}`);let u=a.body?.getReader();if(!u)throw new Error("No response body");let c=await h9(u,i),{score:l,criticalCount:d,majorCount:g,minorCount:p,costUsd:h,inputTokens:S,outputTokens:T}=c;if(l!==null){let I=d>0||l<70?"status-value:error":g>0||l<90?"status-value:warning":"status-value:success",v=[`Score: ${l}`];d>0&&v.push(`${d} critical`),g>0&&v.push(`${g} major`),p>0&&v.push(`${p} minor`);let D=l>=90?`\u2713 Score ${l}`:l>=70?`\u26A0 Score ${l}`:`\u2717 Score ${l}`;return wu(o,e.storyId,I,D,v.join(" \xB7 ")),{passed:l>=70,score:l,costUsd:h,inputTokens:S,outputTokens:T}}return wu(o,e.storyId,"status-value:error","Review Failed","No score received"),{passed:!1,score:null,costUsd:0,inputTokens:0,outputTokens:0}}catch(s){y.error(`[reviewAll] Failed to review ${e.storyName}:`,s);let a=s instanceof Error?s.message:"Unknown error";return wu(o,e.storyId,"status-value:error","Review Failed",a),{passed:!1,score:null,costUsd:0,inputTokens:0,outputTokens:0}}}var b9=K(),Ya="uireview/badge";function uE(){let e=!1,t=!1;try{let n=y9.getChannel();n.on(Sy,async()=>{if(!t){t=!0,e=!1;try{await v9(n,()=>e)}finally{t=!1}}}),n.on(wy,()=>{e=!0})}catch{}}async function by(){try{let e=localStorage.getItem("uicopilot_session_token"),t=localStorage.getItem("uicopilot_selected_project_id");if(!e||!t)return[];let n=await fetch(`${b9}/api/mappings?projectId=${t}`,{headers:{Authorization:`Bearer ${e}`}});if(!n.ok)return[];let i=((await n.json()).mappings||[]).filter(s=>s.figmaNodeId).map(s=>{let a=s;return{storyId:a.storyId,storyName:a.name||a.storyId,figmaNodeId:a.figmaNodeId}});return S9(i),i}catch(e){return y.error("[useReviewAll] Failed to load mapped stories:",e),[]}}function S9(e){try{if(typeof vu!="function")return;let t=vu(Ya);if(!t)return;let n=t.getAll?.()||{},r=new Set(e.map(s=>s.storyId)),o=Object.keys(n).filter(s=>n[s]?.[Ya]&&!r.has(s));o.length>0&&t.unset(o);let i=e.filter(s=>{let a=n[s.storyId]?.[Ya];return!(a?.value==="status-value:success"||a?.value==="status-value:warning"||a?.value==="status-value:error")}).map(s=>({value:"status-value:pending",typeId:Ya,storyId:s.storyId,title:"Mapped to Figma",description:"Ready for UI review \u2014 click Run to start"}));i.length>0&&t.set(i)}catch{}}function w9(){try{let e=localStorage.getItem("uicopilot_review_all_concurrency");if(e)return Math.max(1,Math.min(5,parseInt(e,10)))}catch{}return 3}async function v9(e,t){let n=await by();if(n.length===0){e.emit(Xa,{total:0,passed:0,failed:0});return}let r=localStorage.getItem("uicopilot_session_token"),o=localStorage.getItem("uicopilot_selected_project_id");if(!r||!o)return;let i="claude-sonnet-4-6";try{let S=localStorage.getItem("uicopilot_selected_models");if(S){let T=JSON.parse(S);Array.isArray(T)&&T.length>0&&(i=T[0])}}catch{}let s=null;try{typeof vu=="function"&&(s=vu(Ya))}catch{}let a=w9(),u=0,c=0,l=0,d=0,g=0,p=0;e.emit(Ka,{total:n.length,completed:0,currentStoryName:n[0]?.storyName||""});let h=n.map(S=>()=>cE(S,r,o,i,s,t));await lE(h,a,(S,T)=>{if(T&&typeof T=="object"&&"score"in T){let I=T;I.score!==null&&I.score>=90?u++:I.score!==null&&I.score>=70?c++:l++,d+=I.costUsd||0,g+=I.inputTokens||0,p+=I.outputTokens||0}else l++;console.warn(`[reviewAll] Story ${S+1}/${n.length} done:`,n[S].storyName,T),e.emit(Ka,{total:n.length,completed:u+c+l,currentStoryName:n[S].storyName})},t),e.emit(Xa,{total:n.length,passed:u,failed:l,warnCount:c,costUsd:d,inputTokens:g,outputTokens:p})}var C9=So.div({padding:"8px 12px",display:"flex",flexDirection:"column",gap:"6px"}),T9=So.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px"}),I9=So.span(({theme:e})=>({fontSize:"12px",fontWeight:500,color:e.color.defaultText})),dE=So.span(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark})),gE=So.button(({theme:e,running:t})=>({display:"flex",alignItems:"center",gap:"6px",padding:"4px 12px",background:t?e.color.warning:e.color.secondary,border:"none",borderRadius:"6px",color:e.color.inverseText,cursor:"pointer",fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,transition:"all 0.2s","&:disabled":{opacity:.4,cursor:"not-allowed"},"&:hover:not(:disabled)":{opacity:.9}})),F9=So.div(({theme:e})=>({width:"100%",height:"3px",backgroundColor:e.appBorderColor,borderRadius:"2px",overflow:"hidden"})),E9=So.div(({theme:e,percent:t})=>({width:`${t}%`,height:"100%",backgroundColor:e.color.secondary,borderRadius:"2px",transition:"width 0.3s ease"})),fE=So.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*.8}px`,fontSize:e.typography.size.s1,color:e.color.mediumdark})),ms=So.span(e=>({display:"flex",alignItems:"center",gap:"3px","&::before":{content:'""',display:"inline-block",width:"7px",height:"7px",borderRadius:"50%",backgroundColor:e.dotColor}})),Sy="uireview/review-all-start",wy="uireview/review-all-cancel",Ka="uireview/review-all-progress",Xa="uireview/review-all-complete";function mE(){try{let e=localStorage.getItem("uicopilot_feature_flags");return e?!!JSON.parse(e).enableParallelReview:!1}catch{return!1}}var hE=()=>{let[e,t]=Qa(!1),[n,r]=Qa(null),[o,i]=Qa(null),[s,a]=Qa(null),[u,c]=Qa(mE);vy(()=>{let h=()=>c(mE()),S=setInterval(h,2e3);return window.addEventListener("storage",h),()=>{clearInterval(S),window.removeEventListener("storage",h)}},[]),vy(()=>{let h=()=>{by().then(v=>{a(v.length)}).catch(()=>{})},S=setTimeout(h,3e3),T=null;try{T=ku.getChannel(),T.on("storyChanged",h),T.on("uireview/mappings-changed",h)}catch{}let I=setInterval(h,6e4);return()=>{clearTimeout(S),clearInterval(I),T&&(T.off("storyChanged",h),T.off("uireview/mappings-changed",h))}},[]),vy(()=>{let h;try{h=ku.getChannel()}catch{return}let S=I=>{r(I),t(!0)},T=I=>{t(!1),r(null),i({total:I.total,passed:I.passed,failed:I.failed,warned:I.warnCount||0,costUsd:I.costUsd||0})};return h.on(Ka,S),h.on(Xa,T),()=>{h.off(Ka,S),h.off(Xa,T)}},[]);let l=pE(()=>{try{ku.getChannel().emit(Sy),t(!0),i(null)}catch{}},[]),d=pE(()=>{try{ku.getChannel().emit(wy)}catch{}t(!1),r(null)},[]),g=n?Math.round(n.completed/n.total*100):0,p=k9();return u?Kt.createElement(C9,null,Kt.createElement(T9,null,Kt.createElement(I9,null,"UI Review"),e?Kt.createElement(gE,{running:!0,onClick:d},"Cancel"):Kt.createElement(gE,{onClick:l,disabled:!s||s===0},"Run",s?` (${s})`:"")),!e&&o?Kt.createElement(Kt.Fragment,null,Kt.createElement(fE,null,Kt.createElement(ms,{dotColor:p.color.positive},"Pass (",o.passed,")"),Kt.createElement(ms,{dotColor:p.color.warning},"Warn (",o.warned,")"),Kt.createElement(ms,{dotColor:p.color.negative},"Fail (",o.failed,")")),o.costUsd>0&&Kt.createElement(dE,null,"$",o.costUsd.toFixed(3)," \xB7 \u20AA",(o.costUsd*3.6).toFixed(3))):e?null:Kt.createElement(fE,null,Kt.createElement(ms,{dotColor:p.color.positive},"Pass"),Kt.createElement(ms,{dotColor:p.color.warning},"Warn"),Kt.createElement(ms,{dotColor:p.color.negative},"Fail")),e&&n&&Kt.createElement(Kt.Fragment,null,Kt.createElement(F9,null,Kt.createElement(E9,{percent:g})),Kt.createElement(dE,null,"Reviewing ",Math.min(n.completed+1,n.total),"/",n.total," \u2014 ",n.currentStoryName))):null};import*as yE from"@sentry/react";var A9="https://015e961f5f626bad5315430e02940616@o138219.ingest.us.sentry.io/4511134750539776",xE=!1;function P9(){if(typeof window>"u")return"production";let e=window.location.hostname;return/^(localhost|127\.0\.0\.1|0\.0\.0\.0)$/i.test(e)?"localhost":"production"}function bE(){if(!xE){xE=!0;try{yE.init({dsn:A9,environment:P9(),release:`uicopilot-addon@${process.env.npm_package_version||"unknown"}`,tracesSampleRate:0,enabled:!0,beforeSend(e){return e.tags={...e.tags,component:"storybook-addon"},e}})}catch{}}}bE();var Tu="uireview",M9=`${Tu}/panel`,B9=`${Tu}/tool`,SE=`${Tu}/test-provider`;Cu.register(Tu,()=>{if(console.log("[UI Review] Registering addon, checking for StatusStore API..."),typeof Cy=="function"){console.log("[UI Review] StatusStore API available, initializing badges");let t=Cy("uireview/badge");ck(t);let n=Cy("uireview/mapped");dk(n),console.log("[UI Review] Badge listener initialized")}else console.warn("[UI Review] experimental_getStatusStore not available \u2014 badges disabled");Cu.add(B9,{type:ky.TOOL,title:"UI Review",match:({viewMode:t})=>t==="story",render:()=>Ja.createElement(aE,null)}),uE(),(()=>{try{let t=localStorage.getItem("uicopilot_feature_flags");return t?!!JSON.parse(t).enableParallelReview:!1}catch{return!1}})()&&Cu.add(SE,{type:ky.experimental_TEST_PROVIDER,id:SE,render:()=>Ja.createElement(hE,null)}),Cu.add(M9,{type:ky.PANEL,title:"UI Review",match:({viewMode:t})=>t==="story",render:({active:t})=>Ja.createElement(L9,{active:t||!1},Ja.createElement(tm,null,Ja.createElement(iE,null)))})});
|
|
220
220
|
/*! Bundled license information:
|
|
221
221
|
|