@uicopilot/storybook-addon 0.20.0 → 0.20.1

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 CHANGED
@@ -9,7 +9,7 @@ var GN=Object.create;var Xp=Object.defineProperty;var qN=Object.getOwnPropertyDe
9
9
  value: `+(i||"<empty string>")+`
10
10
  --------`+new Array(o.mismatchOffset+1).join("-")+"^",Object.assign(o,c),o.loc={source:n&&n.loc&&n.loc.source||"<unknown>",start:c,end:u},o}});function Fd(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===Rd&&e.charCodeAt(t+1)===Rd}function w4(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===Rd&&e.charCodeAt(t+1)!==Rd){let n=e.indexOf("-",t+2);if(n!==-1)return e.substring(t,n+1)}return""}function x$(e){if(Id.has(e))return Id.get(e);let t=e.toLowerCase(),n=Id.get(t);if(n===void 0){let r=Fd(t,0),o=r?"":w4(t,0);n=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:r})}return Id.set(e,n),n}function y$(e){if(gl.has(e))return gl.get(e);let t=e,n=e[0];n==="/"?n=e[1]==="/"?"//":"/":n!=="_"&&n!=="*"&&n!=="$"&&n!=="#"&&n!=="+"&&n!=="&"&&(n="");let r=Fd(t,n.length);if(!r&&(t=t.toLowerCase(),gl.has(t))){let s=gl.get(t);return gl.set(e,s),s}let o=r?"":w4(t,n.length),i=t.substr(0,n.length+o.length),a=Object.freeze({basename:t.substr(i.length),name:t.substr(n.length),hack:n,vendor:o,prefix:i,custom:r});return gl.set(e,a),a}var Id,gl,Rd,Ad,uh,Md=$(()=>{"use strict";Id=new Map,gl=new Map,Rd=45,Ad=x$,uh=y$});var ml,Pd=$(()=>{"use strict";ml=["initial","inherit","unset","revert","revert-layer"]});function fh(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function Uc(e,t,n){for(;e!==null&&(e.type===13||e.type===25);)e=n(++t);return t}function wa(e,t,n,r){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===jc||o===ci){if(n)return 0;t++}for(;t<e.value.length;t++)if(!vn(e.value.charCodeAt(t)))return 0;return r+1}function dh(e,t,n){let r=!1,o=Uc(e,t,n);if(e=n(o),e===null)return t;if(e.type!==10)if(fh(e,jc)||fh(e,ci)){if(r=!0,o=Uc(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!==jc&&i!==ci)return 0}return wa(e,r?0:1,r,o)}function gh(e,t){let n=0;if(!e)return 0;if(e.type===10)return wa(e,0,w$,n);if(e.type===1&&e.value.charCodeAt(0)===ci){if(!Hi(e.value,1,ph))return 0;switch(e.value.length){case 2:return dh(t(++n),n,t);case 3:return e.value.charCodeAt(2)!==ci?0:(n=Uc(t(++n),n,t),e=t(n),wa(e,0,hl,n));default:return e.value.charCodeAt(2)!==ci?0:wa(e,3,hl,n)}}else if(e.type===1||fh(e,jc)&&t(n+1).type===1){if(e.type!==1&&(e=t(++n)),e===null||!Hi(e.value,0,ph))return 0;switch(e.value.length){case 1:return dh(t(++n),n,t);case 2:return e.value.charCodeAt(1)!==ci?0:(n=Uc(t(++n),n,t),e=t(n),wa(e,0,hl,n));default:return e.value.charCodeAt(1)!==ci?0:wa(e,2,hl,n)}}else if(e.type===12){let r=e.value.charCodeAt(0),o=r===jc||r===ci?1:0,i=o;for(;i<e.value.length&&vn(e.value.charCodeAt(i));i++);return i===o||!Hi(e.value,i,ph)?0:i+1===e.value.length?dh(t(++n),n,t):e.value.charCodeAt(i+1)!==ci?0:i+2===e.value.length?(n=Uc(t(++n),n,t),e=t(n),wa(e,0,hl,n)):wa(e,i+2,hl,n)}return 0}var jc,ci,ph,hl,w$,v4=$(()=>{"use strict";po();jc=43,ci=45,ph=110,hl=!0,w$=!1});function mh(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function k$(e,t){return e.value.charCodeAt(0)===t}function Vc(e,t,n){let r=0;for(let o=t;o<e.value.length;o++){let i=e.value.charCodeAt(o);if(i===S4&&n&&r!==0)return Vc(e,t+r+1,!1),6;if(!Pr(i)||++r>6)return 0}return r}function _d(e,t,n){if(!e)return 0;for(;mh(n(t),k4);){if(++e>6)return 0;t++}return t}function hh(e,t){let n=0;if(e===null||e.type!==1||!Hi(e.value,0,S$)||(e=t(++n),e===null))return 0;if(mh(e,v$))return e=t(++n),e===null?0:e.type===1?_d(Vc(e,0,!0),++n,t):mh(e,k4)?_d(1,++n,t):0;if(e.type===10){let r=Vc(e,1,!0);return r===0?0:(e=t(++n),e===null?n:e.type===12||e.type===10?!k$(e,S4)||!Vc(e,1,!1)?0:n+1:_d(r,n,t))}return e.type===12?_d(Vc(e,1,!0),++n,t):0}var v$,S4,k4,S$,C4=$(()=>{"use strict";po();v$=43,S4=45,k4=63,S$=117});function Oo(e,t){return t<e.length?e.charCodeAt(t):0}function T4(e,t){return Ui(e,0,e.length,t)}function I4(e,t){for(let n=0;n<t.length;n++)if(T4(e,t[n]))return!0;return!1}function R4(e,t){return t!==e.length-2?!1:Oo(e,t)===92&&vn(Oo(e,t+1))}function Ld(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 R$(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=Sh.get(e.type);break}o++}while(e=t(o));return o}function go(e,t){return function(n,r,o){return n===null?0:n.type===2&&I4(n.value,t)?R$(n,r):e(n,r,o)}}function an(e){return function(t){return t===null||t.type!==e?0:1}}function A$(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return I4(t,ml)||T4(t,"default")?0:1}function A4(e){return e===null||e.type!==1||Oo(e.value,0)!==45||Oo(e.value,1)!==45?0:1}function F$(e){return!A4(e)||e.value==="--"?0:1}function M$(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(!Pr(Oo(e.value,n)))return 0;return 1}function P$(e){return e===null||e.type!==4||!il(Oo(e.value,1),Oo(e.value,2),Oo(e.value,3))?0:1}function _$(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=Sh.get(e.type);break}o++}while(e=t(o));return o}function L$(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=Sh.get(e.type);break}o++}while(e=t(o));return o}function qi(e){return e&&(e=new Set(e)),function(t,n,r){if(t===null||t.type!==12)return 0;let o=ss(t.value,0);if(e!==null){let i=t.value.indexOf("\\",o),a=i===-1||!R4(t.value,i)?t.value.substr(o):t.value.substring(o,i);if(e.has(a.toLowerCase())===!1)return 0}return Ld(r,t.value,o)?0:1}}function B$(e,t,n){return e===null||e.type!==11||Ld(n,e.value,e.value.length-1)?0:1}function F4(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 z$(e,t,n){if(e===null)return 0;let r=ss(e.value,0);return!(r===e.value.length)&&!R4(e.value,r)||Ld(n,e.value,r)?0:1}function D$(e,t,n){if(e===null||e.type!==10)return 0;let r=Oo(e.value,0)===43||Oo(e.value,0)===45?1:0;for(;r<e.value.length;r++)if(!vn(Oo(e.value,r)))return 0;return Ld(n,e.value,r)?0:1}function H$(e){let{angle:t,decibel:n,frequency:r,flex:o,length:i,resolution:a,semitones:s,time:c}=e||{};return{dimension:go(qi(null),Gi),angle:go(qi(t),Gi),decibel:go(qi(n),Gi),frequency:go(qi(r),Gi),flex:go(qi(o),Gi),length:go(F4(qi(i)),Gi),resolution:go(qi(a),Gi),semitones:go(qi(s),Gi),time:go(qi(c),Gi)}}function U$(e){let t=new Set;for(let n of $$)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 M4(e){return{...N$,...O$,...H$(e),"attr-unit":U$(e)}}var xh,yh,bh,C$,E$,T$,wh,vh,E4,I$,Gi,Sh,N$,O$,$$,P4=$(()=>{"use strict";Pd();v4();C4();po();xh=["calc(","-moz-calc(","-webkit-calc("],yh=["min(","max(","clamp("],bh=["round(","mod(","rem("],C$=["sin(","cos(","tan("],E$=["asin(","acos(","atan(","atan2("],T$=["pow(","sqrt(","log(","exp(","sign("],wh=["hypot("],vh=["abs("],E4=[...xh,...yh,...bh,...C$,...T$,...wh,...vh],I$=[...xh,...yh,...bh,...wh,...vh],Gi=[...xh,...yh,...bh,...E$,...wh,...vh],Sh=new Map([[2,22],[21,22],[19,20],[23,24]]);N$={"ident-token":an(1),"function-token":an(2),"at-keyword-token":an(3),"hash-token":an(4),"string-token":an(5),"bad-string-token":an(6),"url-token":an(7),"bad-url-token":an(8),"delim-token":an(9),"number-token":an(10),"percentage-token":an(11),"dimension-token":an(12),"whitespace-token":an(13),"CDO-token":an(14),"CDC-token":an(15),"colon-token":an(16),"semicolon-token":an(17),"comma-token":an(18),"[-token":an(19),"]-token":an(20),"(-token":an(21),")-token":an(22),"{-token":an(23),"}-token":an(24)},O$={string:an(5),ident:an(1),percentage:go(B$,I$),zero:F4(),number:go(z$,E4),integer:go(D$,E4),"custom-ident":A$,"dashed-ident":A4,"custom-property-name":F$,"hex-color":M$,"id-selector":P$,"an-plus-b":gh,urange:hh,"declaration-value":_$,"any-value":L$},$$=["length","angle","time","frequency","resolution","flex","decibel","semitones"]});var Bd={};ze(Bd,{angle:()=>V$,decibel:()=>K$,flex:()=>Y$,frequency:()=>G$,length:()=>j$,resolution:()=>q$,semitones:()=>X$,time:()=>W$});var j$,V$,W$,G$,q$,Y$,K$,X$,_4=$(()=>{"use strict";j$=["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"],V$=["deg","grad","rad","turn"],W$=["s","ms"],G$=["hz","khz"],q$=["dpi","dpcm","dppx","x"],Y$=["fr"],K$=["db"],X$=["st"]});function L4(e,t,n){return Object.assign(cs("SyntaxError",e),{input:t,offset:n,rawMessage:e,message:e+`
11
11
  `+t+`
12
- --`+new Array((n||t.length)+1).join("-")+"^"})}var B4=$(()=>{"use strict";wd()});var J$,Q$,Z$,eH,tH,z4,zd,D4=$(()=>{"use strict";B4();J$=9,Q$=10,Z$=12,eH=13,tH=32,z4=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),zd=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&&z4[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!==eH&&n!==Q$&&n!==Z$&&n!==tH&&n!==J$)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 L4(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||z4[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 j4(e){let t=null,n=null;return e.eat(Od),e.skipWs(),t=e.scanNumber(e),e.skipWs(),e.charCode()===Rh?(e.pos++,e.skipWs(),e.charCode()!==Eh&&(n=e.scanNumber(e),e.skipWs())):n=t,e.eat(Eh),{min:Number(t),max:n?Number(n):0}}function lH(e){let t=null,n=!1;switch(e.charCode()){case q4:e.pos++,t={min:0,max:0};break;case Ih:e.pos++,t={min:1,max:0};break;case Nd:e.pos++,t={min:0,max:1};break;case Th:e.pos++,n=!0,e.charCode()===Od?t=j4(e):e.charCode()===Nd?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case Od:t=j4(e);break;default:return null}return{type:"Multiplier",comma:n,min:t.min,max:t.max,term:null}}function Yi(e,t){let n=lH(e);return n!==null?(n.term=t,e.charCode()===Th&&e.charCodeAt(e.pos-1)===Ih||e.charCode()===Nd&&e.charCodeAt(e.pos-1)===Eh?Yi(e,n):n):t}function kh(e){let t=e.peek();return t===""?null:Yi(e,{type:"Token",value:t})}function cH(e){let t;return e.eat(Ah),e.eat(Dd),t=e.scanWord(),e.eat(Dd),e.eat(Ch),Yi(e,{type:"Property",name:t})}function uH(e){let t=null,n=null,r=1;return e.eat(Wc),e.charCode()===O4&&(e.peek(),r=-1),r==-1&&e.charCode()===H4?e.peek():(t=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(t+=e.scanWord())),e.skipWs(),e.eat(Rh),e.skipWs(),e.charCode()===H4?e.peek():(r=1,e.charCode()===O4&&(e.peek(),r=-1),n=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(n+=e.scanWord())),e.eat(xl),{type:"Range",min:t,max:n}}function pH(e){let t,n=null;if(e.eat(Ah),t=e.scanWord(),t==="boolean-expr"){e.eat(Wc);let r=$d(e,xl);return e.eat(xl),e.eat(Ch),Yi(e,{type:"Boolean",term:r.terms.length===1?r.terms[0]:r})}return e.charCode()===W4&&e.nextCharCode()===G4&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Wc&&(e.skipWs(),n=uH(e)),e.eat(Ch),Yi(e,{type:"Type",name:t,opts:n})}function dH(e){let t=e.scanWord();return e.charCode()===W4?(e.pos++,{type:"Function",name:t}):Yi(e,{type:"Keyword",name:t})}function fH(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)=>U4[o]-U4[i]);t.length>0;){r=t.shift();let o=0,i=0;for(;o<e.length;o++){let a=e[o];a.type==="Combinator"&&(a.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 $d(e,t=-1){let n=Object.create(null),r=[],o=null,i=e.pos,a=!1;for(;e.charCode()!==t;){let s=a?$d(e,G4):mH(e);if(!s)break;if(s.type!=="Spaces"){if(a){if(s.terms.length===0){a=!1;continue}if(s.combinator===" "){for(;s.terms.length>1;)n[" "]=!0,r.push({type:"Combinator",value:" "},s.terms.shift());s=s.terms[0]}}s.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),n[s.value]=!0):o!==null&&o.type!=="Combinator"&&(n[" "]=!0,r.push({type:"Combinator",value:" "})),r.push(s),o=s,i=e.pos,a=s.type==="Function"}}return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:r,combinator:fH(r,n)||" ",disallowEmpty:!1,explicit:!1}}function gH(e){let t;return e.eat(Wc),t=$d(e,xl),e.eat(xl),t.explicit=!0,e.charCode()===V4&&(e.pos++,t.disallowEmpty=!0),t}function mH(e){let t=e.charCode();switch(t){case xl:break;case Wc:return Yi(e,gH(e));case Ah:return e.nextCharCode()===Dd?cH(e):pH(e);case $4:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===$4?2:1))};case N4:return e.pos++,e.eat(N4),{type:"Combinator",value:"&&"};case Rh:return e.pos++,{type:"Comma"};case Dd:return Yi(e,{type:"String",value:e.scanString()});case aH:case nH:case rH:case iH:case oH:return{type:"Spaces",value:e.scanSpaces()};case sH:return t=e.nextCharCode(),e.isNameCharCode(t)?(e.pos++,{type:"AtKeyword",name:e.scanWord()}):kh(e);case q4:case Ih:case Nd:case Th:case V4:break;case Od:if(t=e.nextCharCode(),t<48||t>57)return kh(e);break;default:return e.isNameCharCode(t)?dH(e):kh(e)}}function Gc(e){let t=new zd(e),n=$d(t);return t.pos!==e.length&&t.error("Unexpected input"),n.terms.length===1&&n.terms[0].type==="Group"?n.terms[0]:n}var nH,rH,oH,iH,aH,V4,Th,N4,Dd,W4,G4,q4,Ih,Rh,O4,Ah,Ch,Nd,sH,Wc,xl,Od,$4,Eh,H4,U4,Fh=$(()=>{"use strict";D4();nH=9,rH=10,oH=12,iH=13,aH=32,V4=33,Th=35,N4=38,Dd=39,W4=40,G4=41,q4=42,Ih=43,Rh=44,O4=45,Ah=60,Ch=62,Nd=63,sH=64,Wc=91,xl=93,Od=123,$4=124,Eh=125,H4=8734,U4={" ":1,"&&":2,"||":3,"|":4}});function Y4(e){return typeof e=="function"?e:qc}function Mh(e,t,n){function r(a){switch(o.call(n,a),a.type){case"Group":a.terms.forEach(r);break;case"Multiplier":case"Boolean":r(a.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: "+a.type)}i.call(n,a)}let o=qc,i=qc;if(typeof t=="function"?o=t:t&&(o=Y4(t.enter),i=Y4(t.leave)),o===qc&&i===qc)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");r(e,n)}var qc,K4=$(()=>{"use strict";qc=function(){}});var Ph=$(()=>{"use strict";ch();Fh();K4()});function yH(e){let t=[];return ba(e,(n,r,o)=>t.push({type:n,value:e.slice(r,o),node:null})),t}function X4(e,t){return typeof e=="string"?yH(e):t.generate(e,xH)}var xH,J4=$(()=>{"use strict";po();xH={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 pr(e,t,n){return t===Bt&&n===Wt||e===Bt&&t===Bt&&n===Bt?e:(e.type==="If"&&e.else===Wt&&t===Bt&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:n})}function Z4(e){return e.length>2&&e.charCodeAt(e.length-2)===bH&&e.charCodeAt(e.length-1)===wH}function Q4(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&Z4(e.name)}function va(e,t=" ",n=!1){return{type:"Group",terms:e,combinator:t,disallowEmpty:!1,explicit:n}}function Yc(e,t,n=new Set){if(!n.has(e))switch(n.add(e),e.type){case"If":e.match=Yc(e.match,t,n),e.then=Yc(e.then,t,n),e.else=Yc(e.else,t,n);break;case"Type":return t[e.name]||e}return e}function _h(e,t,n){switch(e){case" ":{let r=Bt;for(let o=t.length-1;o>=0;o--){let i=t[o];r=pr(i,r,Wt)}return r}case"|":{let r=Wt,o=null;for(let i=t.length-1;i>=0;i--){let a=t[i];if(Q4(a)&&(o===null&&i>0&&Q4(t[i-1])&&(o=Object.create(null),r=pr({type:"Enum",map:o},Bt,r)),o!==null)){let s=(Z4(a.name)?a.name.slice(0,-1):a.name).toLowerCase();if(!(s in o)){o[s]=a;continue}}o=null,r=pr(a,Bt,r)}return r}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let r=Wt;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=_h(e,t.filter(function(s){return s!==i}),!1):a=Bt,r=pr(i,a,r)}return r}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let r=n?Bt:Wt;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=_h(e,t.filter(function(s){return s!==i}),!0):a=Bt,r=pr(i,a,r)}return r}}}function vH(e){let t=Bt,n=yl(e.term);if(e.max===0)n=pr(n,Hd,Wt),t=pr(n,null,Wt),t.then=pr(Bt,Bt,t),e.comma&&(t.then.else=pr({type:"Comma",syntax:e},t,Wt));else for(let r=e.min||1;r<=e.max;r++)e.comma&&t!==Bt&&(t=pr({type:"Comma",syntax:e},t,Wt)),t=pr(n,pr(Bt,Bt,t),Wt);if(e.min===0)t=pr(Bt,Bt,t);else for(let r=0;r<e.min-1;r++)e.comma&&t!==Bt&&(t=pr({type:"Comma",syntax:e},t,Wt)),t=pr(n,t,Wt);return t}function yl(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=_h(e.combinator,e.terms.map(yl),!1);return e.disallowEmpty&&(t=pr(t,Hd,Wt)),t}case"Multiplier":return vH(e);case"Boolean":{let t=yl(e.term),n=yl(va([va([{type:"Keyword",name:"not"},{type:"Type",name:"!boolean-group"}]),va([{type:"Type",name:"!boolean-group"},va([{type:"Multiplier",comma:!1,min:0,max:0,term:va([{type:"Keyword",name:"and"},{type:"Type",name:"!boolean-group"}])},{type:"Multiplier",comma:!1,min:0,max:0,term:va([{type:"Keyword",name:"or"},{type:"Type",name:"!boolean-group"}])}],"|")])],"|")),r=yl(va([{type:"Type",name:"!term"},va([{type:"Token",value:"("},{type:"Type",name:"!self"},{type:"Token",value:")"}]),{type:"Type",name:"general-enclosed"}],"|"));return Yc(r,{"!term":t,"!self":n}),Yc(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 Kc(e,t){return typeof e=="string"&&(e=Gc(e)),{type:"MatchGraph",match:yl(e),syntax:t||null,source:e}}var Bt,Wt,Hd,bH,wH,Lh=$(()=>{"use strict";Fh();Bt={type:"Match"},Wt={type:"Mismatch"},Hd={type:"DisallowEmpty"},bH=40,wH=41});function IH(e){let t=null,n=null,r=e;for(;r!==null;)n=r.prev,r.prev=t,t=r,r=n;return t}function Bh(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 RH(e){return e.type!==9?!1:e.value!=="?"}function rE(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||RH(e)}function oE(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function AH(e,t,n){function r(){do h++,v=h<e.length?e[h]:null;while(v!==null&&(v.type===13||v.type===25))}function o(z){let A=h+z;return A<e.length?e[A]:null}function i(z,A){return{nextState:z,matchStack:L,syntaxStack:d,thenStack:f,tokenIndex:h,prev:A}}function a(z){f={nextState:z,matchStack:L,syntaxStack:d,prev:f}}function s(z){p=i(z,p)}function c(){L={type:kH,syntax:t.syntax,token:v,prev:L},r(),g=null,h>M&&(M=h)}function u(){d={syntax:t.syntax,opts:t.syntax.opts||d!==null&&d.opts||null,prev:d},L={type:zh,syntax:t.syntax,token:L.token,prev:L}}function l(){L.type===zh?L=L.prev:L={type:iE,syntax:d.syntax,token:L.token,prev:L},d=d.prev}let d=null,f=null,p=null,g=null,m=0,C=null,v=null,h=-1,M=0,L={type:SH,syntax:null,token:null,prev:null};for(r();C===null&&++m<nE;)switch(t.type){case"Match":if(f===null){if(v!==null&&(h!==e.length-1||v.value!=="\\0"&&v.value!=="\\9")){t=Wt;break}C=tE;break}if(t=f.nextState,t===Hd)if(f.matchStack===L){t=Wt;break}else t=Bt;for(;f.syntaxStack!==d;)l();f=f.prev;break;case"Mismatch":if(g!==null&&g!==!1)(p===null||h>p.tokenIndex)&&(p=g,g=!1);else if(p===null){C=CH;break}t=p.nextState,f=p.thenStack,d=p.syntaxStack,L=p.matchStack,h=p.tokenIndex,v=h<e.length?e[h]:null,p=p.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==Wt&&s(t.else),t.then!==Bt&&a(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let D=t.syntax.terms;if(t.index===D.length){if(t.mask===0||t.syntax.all){t=Wt;break}t=Bt;break}if(t.mask===(1<<D.length)-1){t=Bt;break}for(;t.index<D.length;t.index++){let y=1<<t.index;if((t.mask&y)===0){s(t),a({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|y}),t=D[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(v!==null){let D=v.value.toLowerCase();if(D.indexOf("\\")!==-1&&(D=D.replace(/\\[09].*$/,"")),eE.call(t.map,D)){t=t.map[D];break}}t=Wt;break;case"Generic":{let D=d!==null?d.opts:null,y=h+Math.floor(t.fn(v,o,D));if(!isNaN(y)&&y>h){for(;h<y;)c();t=Bt}else t=Wt;break}case"Type":case"Property":{let D=t.type==="Type"?"types":"properties",y=eE.call(n,D)?n[D][t.name]:null;if(!y||!y.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(g!==!1&&v!==null&&t.type==="Type"&&(t.name==="custom-ident"&&v.type===1||t.name==="length"&&v.value==="0")){g===null&&(g=i(t,p)),t=Wt;break}u(),t=y.matchRef||y.match;break}case"Keyword":{let D=t.name;if(v!==null){let y=v.value;if(y.indexOf("\\")!==-1&&(y=y.replace(/\\[09].*$/,"")),Bh(y,D)){c(),t=Bt;break}}t=Wt;break}case"AtKeyword":case"Function":if(v!==null&&Bh(v.value,t.name)){c(),t=Bt;break}t=Wt;break;case"Token":if(v!==null&&v.value===t.value){c(),t=Bt;break}t=Wt;break;case"Comma":v!==null&&v.type===18?rE(L.token)?t=Wt:(c(),t=oE(v)?Wt:Bt):t=rE(L.token)||oE(v)?Bt:Wt;break;case"String":let z="",A=h;for(;A<e.length&&z.length<t.value.length;A++)z+=e[A].value;if(Bh(z,t.value)){for(;h<A;)c();t=Bt}else t=Wt;break;default:throw new Error("Unknown node type: "+t.type)}switch(TH+=m,C){case null:console.warn("[csstree-match] BREAK after "+nE+" iterations"),C=EH,L=null;break;case tE:for(;d!==null;)l();break;default:L=null}return{tokens:e,reason:C,iterations:m,match:L,longestMatch:M}}function Dh(e,t,n){let r=AH(e,t,n||{});if(r.match===null)return r;let o=r.match,i=r.match={syntax:t.syntax||null,match:[]},a=[i];for(o=IH(o).prev;o!==null;){switch(o.type){case zh:i.match.push(i={syntax:o.syntax,match:[]}),a.push(i);break;case iE:a.pop(),i=a[a.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 eE,SH,kH,zh,iE,tE,CH,EH,nE,TH,aE=$(()=>{"use strict";Lh();({hasOwnProperty:eE}=Object.prototype),SH=0,kH=1,zh=2,iE=3,tE="Match",CH="Mismatch",EH="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",nE=15e3,TH=0});var Oh={};ze(Oh,{getTrace:()=>sE,isKeyword:()=>PH,isProperty:()=>MH,isType:()=>FH});function sE(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 FH(e,t){return Nh(this,e,n=>n.type==="Type"&&n.name===t)}function MH(e,t){return Nh(this,e,n=>n.type==="Property"&&n.name===t)}function PH(e){return Nh(this,e,t=>t.type==="Keyword")}function Nh(e,t,n){let r=sE.call(e,t);return r===null?!1:r.some(n)}var lE=$(()=>{"use strict"});function cE(e){return"node"in e?e.node:cE(e.match[0])}function uE(e){return"node"in e?e.node:uE(e.match[e.match.length-1])}function $h(e,t,n,r,o){function i(s){if(s.syntax!==null&&s.syntax.type===r&&s.syntax.name===o){let c=cE(s),u=uE(s);e.syntax.walk(t,function(l,d,f){if(l===c){let p=new Jr;do{if(p.appendData(d.data),d.data===u)break;d=d.next}while(d!==null);a.push({parent:f,nodes:p})}})}Array.isArray(s.match)&&s.match.forEach(i)}let a=[];return n.matched!==null&&i(n.matched),a}var pE=$(()=>{"use strict";Dc()});function Hh(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function dE(e){return!!e&&Hh(e.offset)&&Hh(e.line)&&Hh(e.column)}function _H(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 a=!0;if(Xc.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(!dE(r.loc.start))i+=".start";else if(!dE(r.loc.end))i+=".end";else continue;a=!1}else if(t.hasOwnProperty(i)){a=!1;for(let s=0;!a&&s<t[i].length;s++){let c=t[i][s];switch(c){case String:a=typeof r[i]=="string";break;case Boolean:a=typeof r[i]=="boolean";break;case null:a=r[i]===null;break;default:typeof c=="string"?a=r[i]&&r[i].type===c:Array.isArray(c)&&(a=r[i]instanceof Jr)}}}else o(r,"Unknown field `"+i+"` for "+e+" node type");a||o(r,"Bad value for `"+e+"."+i+"`")}}for(let i in t)Xc.call(t,i)&&Xc.call(r,i)===!1&&o(r,"Field `"+e+"."+i+"` is missed")}}function fE(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<"+(fE(o,t)||"any")+">");else throw new Error("Wrong value `"+o+"` in `"+t+"` structure definition")}return n.join(" | ")}function LH(e,t){let n=t.structure,r={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in n){if(Xc.call(n,i)===!1)continue;let a=r[i]=Array.isArray(n[i])?n[i].slice():[n[i]];o[i]=fE(a,e+"."+i)}return{docs:o,check:_H(e,r)}}function gE(e){let t={};if(e.node){for(let n in e.node)if(Xc.call(e.node,n)){let r=e.node[n];if(r.structure)t[n]=LH(n,r);else throw new Error("Missed `structure` field in `"+n+"` node type definition")}}return t}var Xc,mE=$(()=>{"use strict";Dc();({hasOwnProperty:Xc}=Object.prototype)});function Uh(e,t,n){let r={};for(let o in e)e[o].syntax&&(r[o]=n?e[o].syntax:dl(e[o].syntax,{compact:t}));return r}function BH(e,t,n){let r={};for(let[o,i]of Object.entries(e))r[o]={prelude:i.prelude&&(n?i.prelude.syntax:dl(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&Uh(i.descriptors,t,n)};return r}function zH(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function DH(e){let t=e.terms[0];return e.explicit===!1&&e.terms.length===1&&t.type==="Multiplier"&&t.comma===!0}function $o(e,t,n){return{matched:e,iterations:n,error:t,...Oh}}function bl(e,t,n,r){let o=X4(n,e.syntax),i;return zH(o)?$o(null,new Error("Matching for a tree with var() is not supported")):(r&&(i=Dh(o,e.cssWideKeywordsSyntax,e)),(!r||!i.match)&&(i=Dh(o,t.match,e),!i.match)?$o(null,new y4(i.reason,t.syntax,n,i),i.iterations):$o(i.match,null,i.iterations))}var Jc,hE=$(()=>{"use strict";b4();Md();Pd();P4();_4();Ph();J4();Lh();aE();lE();pE();mE();Jc=class{constructor(t,n,r){if(this.cssWideKeywords=ml,this.syntax=n,this.generic=!1,this.units={...Bd},this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=r||gE(t),t){if(t.cssWideKeywords&&(this.cssWideKeywords=t.cssWideKeywords),t.units)for(let o of Object.keys(Bd))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(M4(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=Kc(this.cssWideKeywords.join(" | "))}checkStructure(t){function n(i,a){o.push({node:i,message:a})}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},a={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"?a.match=Kc(t,i):(typeof t=="string"?Object.defineProperty(a,"syntax",{get(){return Object.defineProperty(a,"syntax",{value:Gc(t)}),a.syntax}}):a.syntax=t,Object.defineProperty(a,"match",{get(){return Object.defineProperty(a,"match",{value:Kc(a.syntax,i)}),a.match}}),n==="Property"&&Object.defineProperty(a,"matchRef",{get(){let s=a.syntax,c=DH(s)?Kc({...s,terms:[s.terms[0].term]},i):null;return Object.defineProperty(a,"matchRef",{value:c}),c}})),a}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 fl("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&&!bl(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=Ad(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 fl("Unknown at-rule descriptor",n)}checkPropertyName(t){if(!this.getProperty(t))return new fl("Unknown property",t)}matchAtrulePrelude(t,n){let r=this.checkAtrulePrelude(t,n);if(r)return $o(null,r);let o=this.getAtrule(t);return o.prelude?bl(this,o.prelude,n||"",!1):$o(null,null)}matchAtruleDescriptor(t,n,r){let o=this.checkAtruleDescriptorName(t,n);if(o)return $o(null,o);let i=this.getAtrule(t),a=Ad(n);return bl(this,i.descriptors[a.name]||i.descriptors[a.basename],r,!1)}matchDeclaration(t){return t.type!=="Declaration"?$o(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,n){if(uh(t).custom)return $o(null,new Error("Lexer matching doesn't applicable for custom properties"));let r=this.checkPropertyName(t);return r?$o(null,r):bl(this,this.getProperty(t),n,!0)}matchType(t,n){let r=this.getType(t);return r?bl(this,r,n,!1):$o(null,new fl("Unknown type",t))}match(t,n){return typeof t!="string"&&(!t||!t.type)?$o(null,new fl("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),bl(this,t,n,!1))}findValueFragments(t,n,r,o){return $h(this,n,this.matchProperty(t,n),r,o)}findDeclarationValueFragments(t,n,r){return $h(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=Ad(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=uh(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(c,u){return u?`<${c}>`:`<'${c}'>`}function n(c,u,l,d){if(l.has(u))return l.get(u);l.set(u,!1),d.syntax!==null&&Mh(d.syntax,function(f){if(f.type!=="Type"&&f.type!=="Property")return;let p=f.type==="Type"?c.types:c.properties,g=f.type==="Type"?o:i;hasOwnProperty.call(p,f.name)?n(c,f.name,g,p[f.name])&&(r.push(`${t(u,l===o)} used broken syntax definition ${t(f.name,f.type==="Type")}`),l.set(u,!0)):(r.push(`${t(u,l===o)} used missed syntax definition ${t(f.name,f.type==="Type")}`),l.set(u,!0))},this)}let r=[],o=new Map,i=new Map;for(let c in this.types)n(this,c,o,this.types[c]);for(let c in this.properties)n(this,c,i,this.properties[c]);let a=[...o.keys()].filter(c=>o.get(c)),s=[...i.keys()].filter(c=>i.get(c));return a.length||s.length?{errors:r,types:a,properties:s}:null}dump(t,n){return{generic:this.generic,cssWideKeywords:this.cssWideKeywords,units:this.units,types:Uh(this.types,!n,t),properties:Uh(this.properties,!n,t),atrules:BH(this.atrules,!n,t)}}toString(){return JSON.stringify(this.dump())}}});function jh(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function NH(e,t){let n=Object.create(null);for(let r of Object.keys(e))t.includes(r)&&(n[r]=e[r]);return n}function Vh(e,t,n){let r={...e};for(let[o,i]of Object.entries(t))r[o]={...r[o],...n?NH(i,n):i};return r}function Qc(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,a]of Object.entries(o))n[r][i]=Array.isArray(a)?a:[];break;case"atrules":n[r]={...e[r]};for(let[i,a]of Object.entries(o)){let s=n[r][i]||{},c=n[r][i]={prelude:s.prelude||null,descriptors:{...s.descriptors}};if(a){c.prelude=a.prelude?jh(c.prelude,a.prelude):c.prelude||null;for(let[u,l]of Object.entries(a.descriptors||{}))c.descriptors[u]=l?jh(c.descriptors[u],l):null;Object.keys(c.descriptors).length||(c.descriptors=null)}}break;case"types":case"properties":n[r]={...e[r]};for(let[i,a]of Object.entries(o))n[r][i]=jh(n[r][i],a);break;case"parseContext":n[r]={...e[r],...o};break;case"scope":case"features":n[r]=Vh(e[r],o);break;case"atrule":case"pseudo":n[r]=Vh(e[r],o,["parse"]);break;case"node":n[r]=Vh(e[r],o,["name","structure","parse","generate","walkContext"]);break}return n}var xE=$(()=>{"use strict"});function yE(e){let t=_C(e),n=m4(e),r=s4(e),{fromPlainObject:o,toPlainObject:i}=c4(n),a={lexer:null,createLexer:s=>new Jc(s,a,a.lexer.structure),tokenize:ba,parse:t,generate:r,walk:n,find:n.find,findLast:n.findLast,findAll:n.findAll,fromPlainObject:o,toPlainObject:i,fork(s){let c=Qc({},e);return yE(typeof s=="function"?s(c):Qc(c,s))}};return a.lexer=new Jc({generic:e.generic,cssWideKeywords:e.cssWideKeywords,units:e.units,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},a),a}var bE,wE=$(()=>{"use strict";po();LC();l4();u4();h4();hE();xE();bE=e=>yE(Qc({},e))});var vE,SE=$(()=>{"use strict";vE={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 qh={};ze(qh,{generate:()=>UH,name:()=>$H,parse:()=>Gh,structure:()=>HH});function jd(e,t){let n=this.tokenStart+e,r=this.charCodeAt(n);for((r===ui||r===Qr)&&(t&&this.error("Number sign is not allowed"),n++);n<this.tokenEnd;n++)vn(this.charCodeAt(n))||this.error("Integer is expected",n)}function wl(e){return jd.call(this,0,e)}function Sa(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let n="";switch(t){case Ud:n="N is expected";break;case Qr:n="HyphenMinus is expected";break}this.error(n,this.tokenStart+e)}}function Wh(){let e=0,t=0,n=this.tokenType;for(;n===13||n===25;)n=this.lookupType(++e);if(n!==10)if(this.isDelim(ui,e)||this.isDelim(Qr,e)){t=this.isDelim(ui,e)?ui:Qr;do n=this.lookupType(++e);while(n===13||n===25);n!==10&&(this.skip(e),wl.call(this,ps))}else return null;return e>0&&this.skip(e),t===0&&(n=this.charCodeAt(this.tokenStart),n!==ui&&n!==Qr&&this.error("Number sign is expected")),wl.call(this,t!==0),t===Qr?"-"+this.consume(10):this.consume(10)}function Gh(){let e=this.tokenStart,t=null,n=null;if(this.tokenType===10)wl.call(this,OH),n=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,Qr))switch(t="-1",Sa.call(this,1,Ud),this.tokenEnd-this.tokenStart){case 2:this.next(),n=Wh.call(this);break;case 3:Sa.call(this,2,Qr),this.next(),this.skipSC(),wl.call(this,ps),n="-"+this.consume(10);break;default:Sa.call(this,2,Qr),jd.call(this,3,ps),this.next(),n=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(ui)&&this.lookupType(1)===1){let r=0;switch(t="1",this.isDelim(ui)&&(r=1,this.next()),Sa.call(this,0,Ud),this.tokenEnd-this.tokenStart){case 1:this.next(),n=Wh.call(this);break;case 2:Sa.call(this,1,Qr),this.next(),this.skipSC(),wl.call(this,ps),n="-"+this.consume(10);break;default:Sa.call(this,1,Qr),jd.call(this,2,ps),this.next(),n=this.substrToCursor(e+r+1)}}else if(this.tokenType===12){let r=this.charCodeAt(this.tokenStart),o=r===ui||r===Qr,i=this.tokenStart+o;for(;i<this.tokenEnd&&vn(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Sa.call(this,i-this.tokenStart,Ud),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),n=Wh.call(this)):(Sa.call(this,i-this.tokenStart+1,Qr),i+2===this.tokenEnd?(this.next(),this.skipSC(),wl.call(this,ps),n="-"+this.consume(10)):(jd.call(this,i-this.tokenStart+2,ps),this.next(),n=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===ui&&(t=t.substr(1)),n!==null&&n.charCodeAt(0)===ui&&(n=n.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:n}}function UH(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 ui,Qr,Ud,ps,OH,$H,HH,Yh=$(()=>{"use strict";po();ui=43,Qr=45,Ud=110,ps=!0,OH=!1;$H="AnPlusB",HH={a:[String,null],b:[String,null]}});var Xh={};ze(Xh,{generate:()=>qH,name:()=>VH,parse:()=>Kh,structure:()=>GH,walkContext:()=>WH});function kE(){return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function jH(){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 Kh(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),kE):o=kE.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(jH.call(this));break}return{type:"Atrule",loc:this.getLocation(t,this.tokenStart),name:n,prelude:o,block:i}}function qH(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var VH,WH,GH,Jh=$(()=>{"use strict";VH="Atrule",WH="atrule",GH={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]}});var Zh={};ze(Zh,{generate:()=>JH,name:()=>YH,parse:()=>Qh,structure:()=>XH,walkContext:()=>KH});function Qh(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 JH(e){this.children(e)}var YH,KH,XH,e1=$(()=>{"use strict";YH="AtrulePrelude",KH="atrulePrelude",XH={children:[[]]}});var r1={};ze(r1,{generate:()=>iU,name:()=>rU,parse:()=>n1,structure:()=>oU});function tU(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(CE)?(t=!0,this.next()):this.isDelim(t1)||this.eat(1),this.isDelim(t1)?this.charCodeAt(this.tokenStart+1)!==Vd?(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 nU(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==Vd&&t!==eU&&t!==ZH&&t!==QH&&t!==CE&&t!==t1&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==Vd&&(this.isDelim(Vd)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}function n1(){let e=this.tokenStart,t,n=null,r=null,o=null;return this.eat(19),this.skipSC(),t=tU.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(n=nU.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 iU(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 QH,CE,Vd,ZH,t1,eU,rU,oU,o1=$(()=>{"use strict";QH=36,CE=42,Vd=61,ZH=94,t1=124,eU=126;rU="AttributeSelector",oU={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]}});var a1={};ze(a1,{generate:()=>pU,name:()=>lU,parse:()=>i1,structure:()=>uU,walkContext:()=>cU});function IE(){return this.Raw(null,!0)}function EE(){return this.parseWithFallback(this.Rule,IE)}function TE(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function sU(){if(this.tokenType===17)return TE.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,TE);return this.tokenType===17&&this.next(),e}function i1(e){let t=e?sU:EE,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),IE));break;default:e&&this.isDelim(aU)?r.push(EE.call(this)):r.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(n,this.tokenStart),children:r}}function pU(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var aU,lU,cU,uU,s1=$(()=>{"use strict";aU=38;lU="Block",cU="block",uU={children:[["Atrule","Rule","Declaration"]]}});var c1={};ze(c1,{generate:()=>gU,name:()=>dU,parse:()=>l1,structure:()=>fU});function l1(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 gU(e){this.token(9,"["),this.children(e),this.token(9,"]")}var dU,fU,u1=$(()=>{"use strict";dU="Brackets",fU={children:[[]]}});var d1={};ze(d1,{generate:()=>xU,name:()=>mU,parse:()=>p1,structure:()=>hU});function p1(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function xU(){this.token(15,"-->")}var mU,hU,f1=$(()=>{"use strict";mU="CDC",hU=[]});var m1={};ze(m1,{generate:()=>wU,name:()=>yU,parse:()=>g1,structure:()=>bU});function g1(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function wU(){this.token(14,"<!--")}var yU,bU,h1=$(()=>{"use strict";yU="CDO",bU=[]});var y1={};ze(y1,{generate:()=>CU,name:()=>SU,parse:()=>x1,structure:()=>kU});function x1(){return this.eatDelim(vU),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function CU(e){this.token(9,"."),this.token(1,e.name)}var vU,SU,kU,b1=$(()=>{"use strict";vU=46,SU="ClassSelector",kU={name:String}});var v1={};ze(v1,{generate:()=>FU,name:()=>RU,parse:()=>w1,structure:()=>AU});function w1(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case TU:case EU:case IU:this.next();break;case RE:this.next(),this.eatIdent("deep"),this.eatDelim(RE);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function FU(e){this.tokenize(e.name)}var EU,RE,TU,IU,RU,AU,S1=$(()=>{"use strict";EU=43,RE=47,TU=62,IU=126,RU="Combinator",AU={name:String}});var C1={};ze(C1,{generate:()=>BU,name:()=>_U,parse:()=>k1,structure:()=>LU});function k1(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===MU&&this.charCodeAt(t-1)===PU&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function BU(e){this.token(25,"/*"+e.value+"*/")}var MU,PU,_U,LU,E1=$(()=>{"use strict";MU=42,PU=47,_U="Comment",LU={value:String}});var I1={};ze(I1,{generate:()=>$U,name:()=>DU,parse:()=>T1,structure:()=>NU});function AE(e){return this.lookupTypeNonSC(1)===1&&zU.has(this.lookupTypeNonSC(2))?this.Feature(e):this.FeatureRange(e)}function T1(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(()=>OU[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 $U(e){e.children.forEach(t=>{t.type==="Condition"?(this.token(21,"("),this.node(t),this.token(22,")")):this.node(t)})}var zU,DU,NU,OU,R1=$(()=>{"use strict";zU=new Set([16,22,0]),DU="Condition",NU={kind:String,children:[["Identifier","Feature","FeatureFunction","FeatureRange","SupportsDeclaration"]]};OU={media:AE,container:AE,supports(){return this.SupportsDeclaration()}}});var F1={};ze(F1,{generate:()=>QU,name:()=>KU,parse:()=>A1,structure:()=>JU,walkContext:()=>XU});function GU(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!0)}function qU(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!1)}function YU(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(ME)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}function A1(){let e=this.tokenStart,t=this.tokenIndex,n=ZU.call(this),r=Fd(n),o=r?this.parseCustomProperty:this.parseValue,i=r?qU:GU,a=!1,s;this.skipSC(),this.eat(16);let c=this.tokenIndex;if(r||this.skipSC(),o?s=this.parseWithFallback(YU,i):s=i.call(this,this.tokenIndex),r&&s.type==="Value"&&s.children.isEmpty){for(let u=c-this.tokenIndex;u<=0;u++)if(this.lookupType(u)===13){s.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(ME)&&(a=ej.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:a,property:n,value:s}}function QU(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 ZU(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case VU:case UU:case WU:case HU:case jU:this.next();break;case FE:this.next(),this.isDelim(FE)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function ej(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var ME,HU,UU,jU,VU,WU,FE,KU,XU,JU,M1=$(()=>{"use strict";Md();ME=33,HU=35,UU=36,jU=38,VU=42,WU=43,FE=47;KU="Declaration",XU="declaration",JU={important:[Boolean,String],property:String,value:["Value","Raw"]}});var L1={};ze(L1,{generate:()=>oj,name:()=>nj,parse:()=>_1,structure:()=>rj});function P1(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function _1(){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),P1));break;default:this.isDelim(tj)?e.push(this.parseWithFallback(this.Rule,P1)):e.push(this.parseWithFallback(this.Declaration,P1))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function oj(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var tj,nj,rj,B1=$(()=>{"use strict";tj=38;nj="DeclarationList",rj={children:[["Declaration","Atrule","Rule"]]}});var D1={};ze(D1,{generate:()=>sj,name:()=>ij,parse:()=>z1,structure:()=>aj});function z1(){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 sj(e){this.token(12,e.value+e.unit)}var ij,aj,N1=$(()=>{"use strict";ij="Dimension",aj={value:String,unit:String}});var $1={};ze($1,{generate:()=>pj,name:()=>cj,parse:()=>O1,structure:()=>uj});function O1(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(lj)&&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 pj(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var lj,cj,uj,H1=$(()=>{"use strict";lj=47,cj="Feature",uj={kind:String,name:String,value:["Identifier","Number","Dimension","Ratio","Function",null]}});var j1={};ze(j1,{generate:()=>mj,name:()=>dj,parse:()=>U1,structure:()=>fj});function gj(e,t){let r=(this.features[e]||{})[t];return typeof r!="function"&&this.error(`Unknown feature ${t}()`),r}function U1(e="unknown"){let t=this.tokenStart,n=this.consumeFunctionName(),r=gj.call(this,e,n.toLowerCase());this.skipSC();let o=this.parseWithFallback(()=>{let i=this.tokenIndex,a=r.call(this);return this.eof===!1&&this.isBalanceEdge(i)===!1&&this.error(),a},()=>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 mj(e){this.token(2,e.feature+"("),this.node(e.value),this.token(22,")")}var dj,fj,V1=$(()=>{"use strict";dj="FeatureFunction",fj={kind:String,feature:String,value:["Declaration","Selector"]}});var q1={};ze(q1,{generate:()=>wj,name:()=>yj,parse:()=>G1,structure:()=>bj});function W1(){switch(this.skipSC(),this.tokenType){case 10:return this.isDelim(PE,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(PE)&&this.error(),e},()=>this.Ratio());default:this.error("Number, dimension, ratio or identifier is expected")}}function LE(e){if(this.skipSC(),this.isDelim(hj)||this.isDelim(xj)){let t=this.source[this.tokenStart];return this.next(),this.isDelim(_E)?(this.next(),t+"="):t}if(this.isDelim(_E))return"=";this.error(`Expected ${e?'":", ':""}"<", ">", "=" or ")"`)}function G1(e="unknown"){let t=this.tokenStart;this.skipSC(),this.eat(21);let n=W1.call(this),r=LE.call(this,n.type==="Identifier"),o=W1.call(this),i=null,a=null;return this.lookupNonWSType(0)!==22&&(i=LE.call(this),a=W1.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:a}}function wj(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 PE,hj,_E,xj,yj,bj,Y1=$(()=>{"use strict";PE=47,hj=60,_E=61,xj=62,yj="FeatureRange",bj={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 X1={};ze(X1,{generate:()=>Cj,name:()=>vj,parse:()=>K1,structure:()=>kj,walkContext:()=>Sj});function K1(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 Cj(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var vj,Sj,kj,J1=$(()=>{"use strict";vj="Function",Sj="function",kj={name:String,children:[[]]}});var Z1={};ze(Z1,{generate:()=>Ij,name:()=>Ej,parse:()=>Q1,structure:()=>Tj});function Q1(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 Ij(e){e.function?this.token(2,e.function+"("):this.token(21,"("),this.children(e),this.token(22,")")}var Ej,Tj,ex=$(()=>{"use strict";Ej="GeneralEnclosed",Tj={kind:String,function:[String,null],children:[[]]}});var nx={};ze(nx,{generate:()=>Mj,name:()=>Aj,parse:()=>tx,structure:()=>Fj,xxx:()=>Rj});function tx(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function Mj(e){this.token(4,"#"+e.value)}var Rj,Aj,Fj,rx=$(()=>{"use strict";Rj="XXX",Aj="Hash",Fj={value:String}});var ix={};ze(ix,{generate:()=>Lj,name:()=>Pj,parse:()=>ox,structure:()=>_j});function ox(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function Lj(e){this.token(1,e.name)}var Pj,_j,ax=$(()=>{"use strict";Pj="Identifier",_j={name:String}});var lx={};ze(lx,{generate:()=>Dj,name:()=>Bj,parse:()=>sx,structure:()=>zj});function sx(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Dj(e){this.token(9,"#"+e.name)}var Bj,zj,cx=$(()=>{"use strict";Bj="IdSelector",zj={name:String}});var px={};ze(px,{generate:()=>Hj,name:()=>Oj,parse:()=>ux,structure:()=>$j});function ux(){let e=this.tokenStart,t=this.consume(1);for(;this.isDelim(Nj);)this.eat(9),t+="."+this.consume(1);return{type:"Layer",loc:this.getLocation(e,this.tokenStart),name:t}}function Hj(e){this.tokenize(e.name)}var Nj,Oj,$j,dx=$(()=>{"use strict";Nj=46,Oj="Layer",$j={name:String}});var gx={};ze(gx,{generate:()=>Vj,name:()=>Uj,parse:()=>fx,structure:()=>jj});function fx(){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 Vj(e){this.children(e,()=>this.token(18,","))}var Uj,jj,mx=$(()=>{"use strict";Uj="LayerList",jj={children:[["Layer"]]}});var xx={};ze(xx,{generate:()=>qj,name:()=>Wj,parse:()=>hx,structure:()=>Gj});function hx(){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 qj(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 Wj,Gj,yx=$(()=>{"use strict";Wj="MediaQuery",Gj={modifier:[String,null],mediaType:[String,null],condition:["Condition",null]}});var wx={};ze(wx,{generate:()=>Xj,name:()=>Yj,parse:()=>bx,structure:()=>Kj});function bx(){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 Xj(e){this.children(e,()=>this.token(18,","))}var Yj,Kj,vx=$(()=>{"use strict";Yj="MediaQueryList",Kj={children:[["MediaQuery"]]}});var kx={};ze(kx,{generate:()=>eV,name:()=>Qj,parse:()=>Sx,structure:()=>Zj});function Sx(){let e=this.tokenStart;return this.eatDelim(Jj),{type:"NestingSelector",loc:this.getLocation(e,this.tokenStart)}}function eV(){this.token(9,"&")}var Jj,Qj,Zj,Cx=$(()=>{"use strict";Jj=38,Qj="NestingSelector",Zj={}});var Tx={};ze(Tx,{generate:()=>rV,name:()=>tV,parse:()=>Ex,structure:()=>nV});function Ex(){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 rV(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var tV,nV,Ix=$(()=>{"use strict";tV="Nth",nV={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]}});var Ax={};ze(Ax,{generate:()=>aV,name:()=>oV,parse:()=>Rx,structure:()=>iV});function Rx(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function aV(e){this.token(10,e.value)}var oV,iV,Fx=$(()=>{"use strict";oV="Number",iV={value:String}});var Px={};ze(Px,{generate:()=>cV,name:()=>sV,parse:()=>Mx,structure:()=>lV});function Mx(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function cV(e){this.tokenize(e.value)}var sV,lV,_x=$(()=>{"use strict";sV="Operator",lV={value:String}});var Bx={};ze(Bx,{generate:()=>dV,name:()=>uV,parse:()=>Lx,structure:()=>pV});function Lx(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 dV(e){this.token(21,"("),this.children(e),this.token(22,")")}var uV,pV,zx=$(()=>{"use strict";uV="Parentheses",pV={children:[[]]}});var Nx={};ze(Nx,{generate:()=>mV,name:()=>fV,parse:()=>Dx,structure:()=>gV});function Dx(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function mV(e){this.token(11,e.value+"%")}var fV,gV,Ox=$(()=>{"use strict";fV="Percentage",gV={value:String}});var Hx={};ze(Hx,{generate:()=>bV,name:()=>hV,parse:()=>$x,structure:()=>yV,walkContext:()=>xV});function $x(){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 bV(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var hV,xV,yV,Ux=$(()=>{"use strict";hV="PseudoClassSelector",xV="function",yV={name:String,children:[["Raw"],null]}});var Vx={};ze(Vx,{generate:()=>kV,name:()=>wV,parse:()=>jx,structure:()=>SV,walkContext:()=>vV});function jx(){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 kV(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 wV,vV,SV,Wx=$(()=>{"use strict";wV="PseudoElementSelector",vV="function",SV={name:String,children:[["Raw"],null]}});var qx={};ze(qx,{generate:()=>TV,name:()=>CV,parse:()=>Gx,structure:()=>EV});function zE(){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 Gx(){let e=this.tokenStart,t=zE.call(this),n=null;return this.skipSC(),this.isDelim(BE)&&(this.eatDelim(BE),n=zE.call(this)),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:n}}function TV(e){this.node(e.left),this.token(9,"/"),e.right?this.node(e.right):this.node(10,1)}var BE,CV,EV,Yx=$(()=>{"use strict";BE=47;CV="Ratio",EV={left:["Number","Function"],right:["Number","Function",null]}});var Xx={};ze(Xx,{generate:()=>FV,name:()=>RV,parse:()=>Kx,structure:()=>AV});function IV(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}function Kx(e,t){let n=this.getTokenStart(this.tokenIndex),r;return this.skipUntilBalanced(this.tokenIndex,e||this.consumeUntilBalanceEnd),t&&this.tokenStart>n?r=IV.call(this):r=this.tokenStart,{type:"Raw",loc:this.getLocation(n,r),value:this.substring(n,r)}}function FV(e){this.tokenize(e.value)}var RV,AV,Jx=$(()=>{"use strict";RV="Raw",AV={value:String}});var Zx={};ze(Zx,{generate:()=>BV,name:()=>PV,parse:()=>Qx,structure:()=>LV,walkContext:()=>_V});function DE(){return this.Raw(this.consumeUntilLeftCurlyBracket,!0)}function MV(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}function Qx(){let e=this.tokenIndex,t=this.tokenStart,n,r;return this.parseRulePrelude?n=this.parseWithFallback(MV,DE):n=DE.call(this,e),r=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:n,block:r}}function BV(e){this.node(e.prelude),this.node(e.block)}var PV,_V,LV,ey=$(()=>{"use strict";PV="Rule",_V="rule",LV={prelude:["SelectorList","Raw"],block:["Block"]}});var ny={};ze(ny,{generate:()=>NV,name:()=>zV,parse:()=>ty,structure:()=>DV});function ty(){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 NV(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 zV,DV,ry=$(()=>{"use strict";zV="Scope",DV={root:["SelectorList","Raw",null],limit:["SelectorList","Raw",null]}});var iy={};ze(iy,{generate:()=>HV,name:()=>OV,parse:()=>oy,structure:()=>$V});function oy(){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 HV(e){this.children(e)}var OV,$V,ay=$(()=>{"use strict";OV="Selector",$V={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator"]]}});var ly={};ze(ly,{generate:()=>WV,name:()=>UV,parse:()=>sy,structure:()=>VV,walkContext:()=>jV});function sy(){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 WV(e){this.children(e,()=>this.token(18,","))}var UV,jV,VV,cy=$(()=>{"use strict";UV="SelectorList",jV="selector",VV={children:[["Selector","Raw"]]}});function Wd(e){let t=e.length,n=e.charCodeAt(0),r=n===NE||n===OE?1:0,o=r===1&&t>1&&e.charCodeAt(t-1)===n?t-2:t-1,i="";for(let a=r;a<=o;a++){let s=e.charCodeAt(a);if(s===uy){if(a===o){a!==t-1&&(i=e.substr(a+1));break}if(s=e.charCodeAt(++a),Mr(uy,s)){let c=a-1,u=ji(e,c);a=u-1,i+=gd(e.substring(c+1,u))}else s===13&&e.charCodeAt(a+1)===10&&a++}else i+=e[a]}return i}function $E(e,t){let n=t?"'":'"',r=t?OE:NE,o="",i=!1;for(let a=0;a<e.length;a++){let s=e.charCodeAt(a);if(s===0){o+="\uFFFD";continue}if(s<=31||s===127){o+="\\"+s.toString(16),i=!0;continue}s===r||s===uy?(o+="\\"+e.charAt(a),i=!1):(i&&(Pr(s)||li(s))&&(o+=" "),o+=e.charAt(a),i=!1)}return n+o+n}var uy,NE,OE,Gd=$(()=>{"use strict";po();uy=92,NE=34,OE=39});var dy={};ze(dy,{generate:()=>YV,name:()=>GV,parse:()=>py,structure:()=>qV});function py(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Wd(this.consume(5))}}function YV(e){this.token(5,$E(e.value))}var GV,qV,fy=$(()=>{"use strict";Gd();GV="String",qV={value:String}});var my={};ze(my,{generate:()=>ZV,name:()=>XV,parse:()=>gy,structure:()=>QV,walkContext:()=>JV});function UE(){return this.Raw(null,!1)}function gy(){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)!==KV){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,UE);break;default:n=this.parseWithFallback(this.Rule,UE)}t.push(n)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function ZV(e){this.children(e)}var KV,XV,JV,QV,hy=$(()=>{"use strict";KV=33;XV="StyleSheet",JV="stylesheet",QV={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]}});var yy={};ze(yy,{generate:()=>nW,name:()=>eW,parse:()=>xy,structure:()=>tW});function xy(){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 nW(e){this.token(21,"("),this.node(e.declaration),this.token(22,")")}var eW,tW,by=$(()=>{"use strict";eW="SupportsDeclaration",tW={declaration:"Declaration"}});var Sy={};ze(Sy,{generate:()=>aW,name:()=>oW,parse:()=>vy,structure:()=>iW});function wy(){this.tokenType!==1&&this.isDelim(rW)===!1&&this.error("Identifier or asterisk is expected"),this.next()}function vy(){let e=this.tokenStart;return this.isDelim(jE)?(this.next(),wy.call(this)):(wy.call(this),this.isDelim(jE)&&(this.next(),wy.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function aW(e){this.tokenize(e.name)}var rW,jE,oW,iW,ky=$(()=>{"use strict";rW=42,jE=124;oW="TypeSelector",iW={name:String}});var Ty={};ze(Ty,{generate:()=>pW,name:()=>cW,parse:()=>Ey,structure:()=>uW});function Zc(e,t){let n=0;for(let r=this.tokenStart+e;r<this.tokenEnd;r++){let o=this.charCodeAt(r);if(o===WE&&t&&n!==0)return Zc.call(this,e+n+1,!1),-1;Pr(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 qd(e){let t=0;for(;this.isDelim(Cy);)++t>e&&this.error("Too many question marks"),this.next()}function sW(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===VE?"Plus sign":"Hyphen minus")+" is expected")}function lW(){let e=0;switch(this.tokenType){case 10:if(e=Zc.call(this,1,!0),this.isDelim(Cy)){qd.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){sW.call(this,WE),Zc.call(this,1,!1);break}break;case 12:e=Zc.call(this,1,!0),e>0&&qd.call(this,6-e);break;default:if(this.eatDelim(VE),this.tokenType===1){e=Zc.call(this,0,!0),e>0&&qd.call(this,6-e);break}if(this.isDelim(Cy)){this.next(),qd.call(this,5);break}this.error("Hex digit or question mark is expected")}}function Ey(){let e=this.tokenStart;return this.eatIdent("u"),lW.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function pW(e){this.tokenize(e.value)}var VE,WE,Cy,cW,uW,Iy=$(()=>{"use strict";po();VE=43,WE=45,Cy=63;cW="UnicodeRange",uW={value:String}});function qE(e){let t=e.length,n=4,r=e.charCodeAt(t-1)===GE?t-2:t-1,o="";for(;n<r&&li(e.charCodeAt(n));)n++;for(;n<r&&li(e.charCodeAt(r));)r--;for(let i=n;i<=r;i++){let a=e.charCodeAt(i);if(a===Ry){if(i===r){i!==t-1&&(o=e.substr(i+1));break}if(a=e.charCodeAt(++i),Mr(Ry,a)){let s=i-1,c=ji(e,s);i=c-1,o+=gd(e.substring(s+1,c))}else a===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function YE(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===dW||o===Ry||o===fW||o===gW||o===mW||o===GE?(t+="\\"+e.charAt(r),n=!1):(n&&Pr(o)&&(t+=" "),t+=e.charAt(r),n=!1)}return"url("+t+")"}var dW,Ry,fW,gW,mW,GE,Ay=$(()=>{"use strict";po();dW=32,Ry=92,fW=34,gW=39,mW=40,GE=41});var My={};ze(My,{generate:()=>yW,name:()=>hW,parse:()=>Fy,structure:()=>xW});function Fy(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=qE(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=Wd(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 yW(e){this.token(7,YE(e.value))}var hW,xW,Py=$(()=>{"use strict";Ay();Gd();hW="Url",xW={value:String}});var Ly={};ze(Ly,{generate:()=>vW,name:()=>bW,parse:()=>_y,structure:()=>wW});function _y(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function vW(e){this.children(e)}var bW,wW,By=$(()=>{"use strict";bW="Value",wW={children:[[]]}});var Dy={};ze(Dy,{generate:()=>EW,name:()=>kW,parse:()=>zy,structure:()=>CW});function zy(){return this.eat(13),SW}function EW(e){this.token(13,e.value)}var SW,kW,CW,Ny=$(()=>{"use strict";SW=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),kW="WhiteSpace",CW={value:String}});var eu={};ze(eu,{AnPlusB:()=>qh,Atrule:()=>Xh,AtrulePrelude:()=>Zh,AttributeSelector:()=>r1,Block:()=>a1,Brackets:()=>c1,CDC:()=>d1,CDO:()=>m1,ClassSelector:()=>y1,Combinator:()=>v1,Comment:()=>C1,Condition:()=>I1,Declaration:()=>F1,DeclarationList:()=>L1,Dimension:()=>D1,Feature:()=>$1,FeatureFunction:()=>j1,FeatureRange:()=>q1,Function:()=>X1,GeneralEnclosed:()=>Z1,Hash:()=>nx,IdSelector:()=>lx,Identifier:()=>ix,Layer:()=>px,LayerList:()=>gx,MediaQuery:()=>xx,MediaQueryList:()=>wx,NestingSelector:()=>kx,Nth:()=>Tx,Number:()=>Ax,Operator:()=>Px,Parentheses:()=>Bx,Percentage:()=>Nx,PseudoClassSelector:()=>Hx,PseudoElementSelector:()=>Vx,Ratio:()=>qx,Raw:()=>Xx,Rule:()=>Zx,Scope:()=>ny,Selector:()=>iy,SelectorList:()=>ly,String:()=>dy,StyleSheet:()=>my,SupportsDeclaration:()=>yy,TypeSelector:()=>Sy,UnicodeRange:()=>Ty,Url:()=>My,Value:()=>Ly,WhiteSpace:()=>Dy});var Oy=$(()=>{"use strict";Yh();Jh();e1();o1();s1();u1();f1();h1();b1();S1();E1();R1();M1();B1();N1();H1();V1();Y1();J1();ex();rx();ax();cx();dx();mx();yx();vx();Cx();Ix();Fx();_x();zx();Ox();Ux();Wx();Yx();Jx();ey();ry();ay();cy();fy();hy();by();ky();Iy();Py();By();Ny()});var XE,JE=$(()=>{"use strict";Pd();SE();Oy();XE={generic:!0,cssWideKeywords:ml,...vE,node:eu}});function tu(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,FW)&&this.cmpChar(this.tokenStart+1,QE)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===AW||t===IW||t===QE||t===RW)return this.Operator();t===TW&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var TW,IW,QE,RW,AW,FW,$y=$(()=>{"use strict";TW=35,IW=42,QE=43,RW=45,AW=47,FW=117});var ZE,eT=$(()=>{"use strict";$y();ZE={getNode:tu}});function OW(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function $W(){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)===tT&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case LW:case zW:case NW:case BW:return this.Combinator();case tT:return this.ClassSelector();case _W:case DW:return this.TypeSelector();case MW:return this.IdSelector();case PW:return this.NestingSelector()}break}}}var MW,PW,_W,LW,BW,tT,zW,DW,NW,nT,rT=$(()=>{"use strict";MW=35,PW=38,_W=42,LW=43,BW=47,tT=46,zW=62,DW=124,NW=126;nT={onWhiteSpace:OW,getNode:$W}});function oT(){return this.createSingleNodeList(this.Raw(null,!1))}var iT=$(()=>{"use strict"});function aT(){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 sT=$(()=>{"use strict"});function lT(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var cT,uT=$(()=>{"use strict";$y();iT();sT();cT={getNode:tu,onWhiteSpace(e,t){lT(e)&&(e.value=" "+e.value),lT(t.last)&&(t.last.value+=" ")},expression:oT,var:aT}});var Hy={};ze(Hy,{AtrulePrelude:()=>ZE,Selector:()=>nT,Value:()=>cT});var pT=$(()=>{"use strict";eT();rT();uT()});var HW,dT,fT=$(()=>{"use strict";HW=new Set(["none","and","not","or"]),dT={parse:{prelude(){let e=this.createList();if(this.tokenType===1){let t=this.substring(this.tokenStart,this.tokenEnd);HW.has(t.toLowerCase())||e.push(this.Identifier())}return e.push(this.Condition("container")),e},block(e=!1){return this.Block(e)}}}});var gT,mT=$(()=>{"use strict";gT={parse:{prelude:null,block(){return this.Block(!0)}}}});function Uy(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 hT,xT,yT=$(()=>{"use strict";hT={layer(){this.skipSC();let e=this.createList(),t=Uy.call(this,this.Layer);return(t.type!=="Raw"||t.value!=="")&&e.push(t),e},supports(){this.skipSC();let e=this.createList(),t=Uy.call(this,this.Declaration,()=>Uy.call(this,()=>this.Condition("supports")));return(t.type!=="Raw"||t.value!=="")&&e.push(t),e}},xT={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,hT)),this.skipSC(),this.tokenType===2&&this.cmpStr(this.tokenStart,this.tokenEnd,"supports(")&&e.push(this.Function(null,hT)),(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}}});var bT,wT=$(()=>{"use strict";bT={parse:{prelude(){return this.createSingleNodeList(this.LayerList())},block(){return this.Block(!1)}}}});var vT,ST=$(()=>{"use strict";vT={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(e=!1){return this.Block(e)}}}});var kT,CT=$(()=>{"use strict";kT={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var ET,TT=$(()=>{"use strict";ET={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var IT,RT=$(()=>{"use strict";IT={parse:{prelude(){return this.createSingleNodeList(this.Scope())},block(e=!1){return this.Block(e)}}}});var AT,FT=$(()=>{"use strict";AT={parse:{prelude:null,block(e=!1){return this.Block(e)}}}});var MT,PT=$(()=>{"use strict";MT={parse:{prelude(){return this.createSingleNodeList(this.Condition("supports"))},block(e=!1){return this.Block(e)}}}});var _T,LT=$(()=>{"use strict";fT();mT();yT();wT();ST();CT();TT();RT();FT();PT();_T={container:dT,"font-face":gT,import:xT,layer:bT,media:vT,nest:kT,page:ET,scope:IT,"starting-style":AT,supports:MT}});function BT(){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 zT=$(()=>{"use strict"});var ds,jy,UW,jW,Yd,DT,NT=$(()=>{"use strict";zT();ds={parse(){return this.createSingleNodeList(this.SelectorList())}},jy={parse(){return this.createSingleNodeList(this.Selector())}},UW={parse(){return this.createSingleNodeList(this.Identifier())}},jW={parse:BT},Yd={parse(){return this.createSingleNodeList(this.Nth())}},DT={dir:UW,has:ds,lang:jW,matches:ds,is:ds,"-moz-any":ds,"-webkit-any":ds,where:ds,not:ds,"nth-child":Yd,"nth-last-child":Yd,"nth-last-of-type":Yd,"nth-of-type":Yd,slotted:jy,host:jy,"host-context":jy}});var Vy={};ze(Vy,{AnPlusB:()=>Gh,Atrule:()=>Kh,AtrulePrelude:()=>Qh,AttributeSelector:()=>n1,Block:()=>i1,Brackets:()=>l1,CDC:()=>p1,CDO:()=>g1,ClassSelector:()=>x1,Combinator:()=>w1,Comment:()=>k1,Condition:()=>T1,Declaration:()=>A1,DeclarationList:()=>_1,Dimension:()=>z1,Feature:()=>O1,FeatureFunction:()=>U1,FeatureRange:()=>G1,Function:()=>K1,GeneralEnclosed:()=>Q1,Hash:()=>tx,IdSelector:()=>sx,Identifier:()=>ox,Layer:()=>ux,LayerList:()=>fx,MediaQuery:()=>hx,MediaQueryList:()=>bx,NestingSelector:()=>Sx,Nth:()=>Ex,Number:()=>Rx,Operator:()=>Mx,Parentheses:()=>Lx,Percentage:()=>Dx,PseudoClassSelector:()=>$x,PseudoElementSelector:()=>jx,Ratio:()=>Gx,Raw:()=>Kx,Rule:()=>Qx,Scope:()=>ty,Selector:()=>oy,SelectorList:()=>sy,String:()=>py,StyleSheet:()=>gy,SupportsDeclaration:()=>xy,TypeSelector:()=>vy,UnicodeRange:()=>Ey,Url:()=>Fy,Value:()=>_y,WhiteSpace:()=>zy});var OT=$(()=>{"use strict";Yh();Jh();e1();o1();s1();u1();f1();h1();b1();S1();E1();R1();M1();B1();N1();H1();V1();Y1();J1();ex();rx();ax();cx();dx();mx();yx();vx();Cx();Ix();Fx();_x();zx();Ox();Ux();Wx();Yx();Jx();ey();ry();ay();cy();fy();hy();by();ky();Iy();Py();By();Ny()});var $T,HT=$(()=>{"use strict";pT();LT();NT();OT();$T={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:Hy,atrule:_T,pseudo:DT,node:Vy}});var UT,jT=$(()=>{"use strict";Oy();UT={node:eu}});var VT,WT=$(()=>{"use strict";wE();JE();HT();jT();VT=bE({...XE,...$T,...UT})});var GT=$(()=>{"use strict"});var qT=$(()=>{"use strict"});var jye,YT,Vye,Wye,Gye,KT,qye,Yye,Kye,Xye,Jye,Qye,XT=$(()=>{"use strict";WT();GT();Ph();Md();qT();Gd();Ay();({tokenize:jye,parse:YT,generate:Vye,lexer:Wye,createLexer:Gye,walk:KT,find:qye,findLast:Yye,findAll:Kye,toPlainObject:Xye,fromPlainObject:Jye,fork:Qye}=VT)});function qW(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function QT(e){try{let t=YT(e.trim(),{context:"value"}),n=[];return KT(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 YW(e,t){let n=qW(e);if(!GW.has(n))return t;let r=QT(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 JT(e,t){let n=t.trim();if(!n)return"";let r=YW(e,n);return QT(r).map(i=>i==="0"?"0px":i).join(" ")}function ZT(e,t,n){let r=JT(e,t),o=JT(e,n);return r!==""&&o!==""&&r===o}var GW,eI=$(()=>{"use strict";XT();GW=new Set(["padding","margin","border-radius","borderradius","inset","border-width","borderwidth"])});function KW(e){let t=e.toLowerCase();return t.length===4?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t}function XW(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 tI(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=XW(n[0]);if(i)return i}let r=t.match(/#([0-9a-fA-F]{3,8})/);if(r)return KW(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 fs(e,t,n){if(!e||!t)return!1;let r=String(e),o=String(t),i=r.toLowerCase(),a=o.toLowerCase(),s=i.includes("none"),c=a.includes("none");if(s!==c)return!1;let u=/\b(fill|stroke)\s*:/i,l=u.test(r),d=u.test(o);if(l!==d)return!1;let f=tI(r),p=tI(o);return!!(f===p||n&&ZT(n,r,o))}var Wy=$(()=>{"use strict";eI()});function Gy(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 JW(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=c=>c.endsWith("%")?Math.round(parseFloat(c)/100*255):Math.round(parseFloat(c)),o=r(n[0]),i=r(n[1]),a=r(n[2]);if([o,i,a].some(c=>isNaN(c)))return null;let s=c=>Math.max(0,Math.min(255,c));return[s(o),s(i),s(a)]}function QW(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)),a=0,s=0,c=0;o<1?[a,s,c]=[r,i,0]:o<2?[a,s,c]=[i,r,0]:o<3?[a,s,c]=[0,r,i]:o<4?[a,s,c]=[0,i,r]:o<5?[a,s,c]=[i,0,r]:[a,s,c]=[r,0,i];let u=n-r/2;return[Math.round((a+u)*255),Math.round((s+u)*255),Math.round((c+u)*255)]}function ZW(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(a=>isNaN(a))?null:QW(r,o/100,i/100)}function tG(e){return eG[e.trim().toLowerCase()]??null}function nI(e){return e?Gy(e)??JW(e)??ZW(e)??qy(e)??tG(e):null}function qy(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),a=i(n),s=i(r),c=i(o),u=1.2249*a-.2247*s+0*c,l=-.042*a+1.0419*s+0*c,d=-.0197*a-.0786*s+1.0983*c,f=p=>{let g=Math.max(0,Math.min(1,p));return g<=.0031308?12.92*g:1.055*Math.pow(g,1/2.4)-.055};return[Math.round(f(u)*255),Math.round(f(l)*255),Math.round(f(d)*255)]}function rI(e,t,n){let r=v=>{let h=v/255;return h<=.04045?h/12.92:Math.pow((h+.055)/1.055,2.4)},o=r(e),i=r(t),a=r(n),s=o*.4124564+i*.3575761+a*.1804375,c=o*.2126729+i*.7151522+a*.072175,u=o*.0193339+i*.119192+a*.9503041,l=.95047,d=1,f=1.08883,p=v=>v>.008856?Math.cbrt(v):7.787*v+16/116,g=p(s/l),m=p(c/d),C=p(u/f);return[116*m-16,500*(g-m),200*(m-C)]}function oI(e,t){let[n,r,o]=rI(...e),[i,a,s]=rI(...t),c=(n+i)/2,u=Math.sqrt(r*r+o*o),l=Math.sqrt(a*a+s*s),d=(u+l)/2,f=.5*(1-Math.sqrt(Math.pow(d,7)/(Math.pow(d,7)+Math.pow(25,7)))),p=(1+f)*r,g=(1+f)*a,m=Math.sqrt(p*p+o*o),C=Math.sqrt(g*g+s*s),v=(m+C)/2,h=(Math.atan2(o,p)*180/Math.PI+360)%360,M=(Math.atan2(s,g)*180/Math.PI+360)%360,L=M-h;Math.abs(L)>180&&(L-=Math.sign(L)*360);let z=i-n,A=C-m,D=2*Math.sqrt(m*C)*Math.sin(L*Math.PI/360),y=Math.abs(h-M)>180?(h+M+360)/2:(h+M)/2,k=1-.17*Math.cos((y-30)*Math.PI/180)+.24*Math.cos(2*y*Math.PI/180)+.32*Math.cos((3*y+6)*Math.PI/180)-.2*Math.cos((4*y-63)*Math.PI/180),T=1+.015*Math.pow(c-50,2)/Math.sqrt(20+Math.pow(c-50,2)),F=1+.045*v,S=1+.015*v*k,x=-2*Math.sqrt(Math.pow(v,7)/(Math.pow(v,7)+Math.pow(25,7)))*Math.sin(60*Math.exp(-Math.pow((y-275)/25,2))*Math.PI/180);return Math.sqrt(Math.pow(z/T,2)+Math.pow(A/F,2)+Math.pow(D/S,2)+x*(A/F)*(D/S))}function iI(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=Gy(r)??Gy(o),a=qy(r)??qy(o);return!i||!a||r===o?!1:oI(i,a)<5}function nu(e){let t=String(e.expected??e.suggestedValue??""),n=String(e.actual??e.currentValue??"");if(!t||!n||t===n)return null;let r=nI(t),o=nI(n);return!r||!o?null:oI(r,o)}function ru(e){let t=e.severity||"minor";if(t==="minor")return t;if(iI(e))return"minor";let n=nu(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)),a=(e.type||"").toLowerCase();if(!(r.some(p=>i.has(p))||o.some(p=>a===p)))return t;let c=String(e.expected||e.suggestedValue||""),u=String(e.actual||e.currentValue||""),l=parseFloat(c.replace(/[^0-9.-]/g,"")),d=parseFloat(u.replace(/[^0-9.-]/g,""));if(isNaN(l)||isNaN(d))return t;let f=Math.abs(l-d);return f<5?"minor":f<10&&t==="critical"?"major":t}function Kd(e,t,n){return e>0?"D":t>0?"C":n>0?"B":"A"}function Xd(e){let t=e.filter(n=>!n.dismissed).map(n=>ru(n));return Kd(t.filter(n=>n==="critical").length,t.filter(n=>n==="major").length,t.filter(n=>n==="minor").length)}function Ki(e,t,n){let r=100-n*1-t*3-e*10,o=ou[Kd(e,t,n)];return Math.max(0,Math.min(o,r))}var eG,ou,Yy=$(()=>{"use strict";eG={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]};ou={A:100,B:99,C:89,D:69}});function vl(e,t={}){if(e==null)return"";let n=String(e).split(",")[0].trim().replace(/['"]/g,"").toLowerCase();return t.stripSeparators&&(n=n.replace(/[\s_-]/g,"")),n}function lI(e,t){let n=vl(e,{stripSeparators:!0}),r=vl(t,{stripSeparators:!0});return!n||!r||n===r?!1:nG.some(o=>o.has(n)&&o.has(r))}function sI(e){if(e==null)return null;let t=String(e).trim().toLowerCase();if(!t)return null;let n=t.replace(/[\s_-]/g,"");if(n in aI)return aI[n];let r=parseFloat(t.replace(/[^0-9.-]/g,""));return isNaN(r)?null:r}function cI(e,t){let n=sI(e),r=sI(t);return n==null||r==null?!1:Math.round(n/100)===Math.round(r/100)}var nG,aI,Jd=$(()=>{"use strict";nG=[new Set(["applesystem","blinkmacsystemfont","systemui","webkitsystemfont","sfpro","sfprotext","sfprodisplay","sanfrancisco","sanfranciscopro","sanfranciscotext","sanfranciscodisplay"])];aI={thin:100,hairline:100,extralight:200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,demibold:600,demi:600,bold:700,extrabold:800,ultrabold:800,black:900,heavy:900}});function gI(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=a=>/^#[0-9a-f]{3,8}$/i.test(a)||a.includes("rgb")||["white","black","red","blue","green","orange","yellow","transparent"].includes(a);return!!(i(r)||i(o)||e.relatedProperties?.some(a=>{let s=a.property?.toLowerCase()||"";return s.includes("color")||s.includes("fill")||s.includes("background")}))}function sG(e){if(!gI(e))return!1;let t=nu(e);return t!==null&&t<2}function uI(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 lG(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",a=t.includes("gap")||o.includes("gap");return i&&a}function mI(e){return cG.has(e?.toLowerCase()||"")}function uG(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&&gI(n)||uI(r)||uI(o)||n&&lG(n))return!1;let i=parseFloat(r),a=parseFloat(o);if(isNaN(i)||isNaN(a))return!1;let s=Math.abs(i-a);return r.includes("px")||o.includes("px")?mI(n?.property)?s<dI:s<pI:r.includes("%")||o.includes("%")?s<1:!1}function pG(e){let t=`${e.description||""} ${e.title||""} ${e.suggestedFix||""}`.toLowerCase();if(aG.some(a=>t.includes(a))||!oG.some(a=>t.includes(a)))return!1;let o=e.expected||e.suggestedValue,i=e.actual||e.currentValue;return!(o&&i&&!fs(o,i,e.property))}function dG(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 a=`${e.description||""} ${e.title||""}`.toLowerCase();return a.includes("container")||a.includes("svg ")||a.includes("<svg")||a.includes("wrapper")}function fG(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||"",a=e.actual||e.currentValue||"",s=parseFloat(i),c=parseFloat(a);return isNaN(s)||isNaN(c)?!1:Math.abs(s-c)<fI}function gG(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(!iG.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 s=n.includes("hug")||n.includes("auto"),c=/\d+\.?\d*px/.test(r);if(!s||!c)return!1;let u=n.match(/(\d+\.?\d*)px/),l=r.match(/(\d+\.?\d*)px/);return!(u&&l&&Math.abs(parseFloat(u[1])-parseFloat(l[1]))>rG)}function mG(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 hI(e){return(e||"").toLowerCase().replace(/[\s_-]/g,"")==="fontfamily"}function hG(e){return(e||"").toLowerCase().replace(/[\s_-]/g,"")==="fontweight"}function xG(e,t,n){if(!hI(n))return!1;let r=vl(e,{stripSeparators:!0}),o=vl(t,{stripSeparators:!0});return r.length>0&&o.length>0&&r===o}function yG(e,t,n){return hI(n)?lI(e,t):!1}function bG(e,t,n){return hG(n)?cI(e,t):!1}function iu(e){let t=e.expected||e.suggestedValue,n=e.actual||e.currentValue;return xG(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: font-family naming difference (same font)",dismissedBy:"post-ai-validation"}:yG(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: system font stack equivalence (-apple-system renders as SF Pro)",dismissedBy:"post-ai-validation"}:bG(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: font weight renders identically (same named weight)",dismissedBy:"post-ai-validation"}:e.programmaticallyVerified?{dismissed:!1}:e.fixRequired===!1?{dismissed:!0,dismissReason:"Auto-dismissed: FixRequired is false (no code change needed)",dismissedBy:"post-ai-validation"}:fs(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: expected equals actual (identical values)",dismissedBy:"post-ai-validation"}:sG(e)?{dismissed:!0,dismissReason:`Auto-dismissed: imperceptible color difference (\u0394E < ${2})`,dismissedBy:"post-ai-validation"}:e.fixRequired===!0?{dismissed:!1}:fG(e)?{dismissed:!0,dismissReason:`Auto-dismissed: text dimension variance (<${fI}px) - font rendering difference, not actionable`,dismissedBy:"post-ai-validation"}:uG(t,n,e)?{dismissed:!0,dismissReason:`Auto-dismissed: negligible difference (<${mI(e.property)?dI:pI}px)`,dismissedBy:"post-ai-validation"}:mG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no measurable values to compare",dismissedBy:"post-ai-validation"}:pG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no fix needed",dismissedBy:"post-ai-validation"}:gG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: HUG sizing - CSS auto-sizes content without explicit dimensions",dismissedBy:"post-ai-validation"}:dG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: SVG container fill - child elements use their own fills",dismissedBy:"post-ai-validation"}:{dismissed:!1}}var pI,dI,fI,rG,oG,iG,aG,cG,xI=$(()=>{"use strict";Wy();Yy();Jd();pI=.5,dI=2,fI=2,rG=5,oG=["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"],iG=["hug","auto (hug)","should be hug","fixed pixel values are being rendered","fixed values are being rendered"],aG=["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"];cG=new Set(["width","height","minwidth","maxwidth","minheight","maxheight","min-width","max-width","min-height","max-height"])});var yI=$(()=>{"use strict"});var bI=$(()=>{"use strict"});var Qd=$(()=>{"use strict";Wy();xI();Yy();yI();bI()});var IG,RG,ybe,Xy=$(()=>{"use strict";IG=["flex","inline-flex"],RG=["grid","inline-grid"],ybe=[...IG,...RG]});var vI=$(()=>{"use strict";Qd();Xy()});var SI=$(()=>{"use strict"});var kI=$(()=>{"use strict"});var CI=$(()=>{"use strict"});var Zd=$(()=>{"use strict";Jd()});var Jy=$(()=>{"use strict";Zd();Qd()});var Qy=$(()=>{"use strict"});var Zy=$(()=>{"use strict"});function ef(e){return typeof e=="string"&&e.startsWith("element:")}function TI(e){return!e||e.length===0?"":` (${e.slice(0,EI).join(", ")}${e.length>EI?", \u2026":""})`}function II(e){let t=String(e.property).slice(8),[n,r]=MG[t]??[t,`${t}s`],o=Number(e.expected),i=Number(e.actual),a=o>i,s=Math.abs(o-i),c=u=>u===1?n:r;return{title:`${a?"Missing":"Extra"} ${s===1?n:`${s} ${r}`} in code`,description:`Design has ${o} ${c(o)}${TI(e.elements?.figma)}; code renders ${i}${TI(e.elements?.code)}. `+(a?`${s===1?"One is":`${s} are`} in the design but not implemented.`:`${s===1?"One is":`${s} are`} rendered but not in the design.`),suggested:`${o} ${c(o)}`,current:`${i} ${c(i)}`}}var MG,EI,RI=$(()=>{"use strict";MG={icon:["icon","icons"],text:["text element","text elements"],image:["image","images"],shape:["shape","shapes"]},EI=4});var AI=$(()=>{"use strict"});function FI(e,t){let n=e?.split("/").pop()?.trim();return n||(t?.trim()??"")}var MI=$(()=>{"use strict"});var PI=$(()=>{"use strict"});var tf=$(()=>{"use strict";Qy();Jy()});var _I=$(()=>{"use strict"});var eb=$(()=>{"use strict";tf()});var tb=$(()=>{"use strict";Zy()});var LI=$(()=>{"use strict";eb();tf();tb()});var BI=$(()=>{"use strict"});var nb=$(()=>{"use strict"});var zI=$(()=>{"use strict";nb()});var DI=$(()=>{"use strict"});var rb=$(()=>{"use strict"});var ob=$(()=>{"use strict";rb();Zd()});var ib=$(()=>{"use strict"});var ab=$(()=>{"use strict";ib();rb()});var HI=$(()=>{"use strict";ob();ab();ob();ab();ib()});var UI=$(()=>{"use strict"});var jI=$(()=>{"use strict"});var VI=$(()=>{"use strict";kI();CI();Zd();Jy();Qy();Zy();RI();AI();MI();PI();tf();_I();eb();tb();LI();BI();nb();zI();DI();HI();UI();jI()});var WI=$(()=>{"use strict";Jd()});var au,GI=$(()=>{"use strict";au={admin:{enableFixGeneration:!1,enableFixApply:!0,enableAutoMap:!0,enableAutoFigmaLinking:!0,enableReviewBadges:!0,showCosts:!0,enableParallelReview:!0,enableModelSelection:!0},beta:{enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableAutoFigmaLinking:!0,enableReviewBadges:!0,showCosts:!1,enableParallelReview:!0,enableModelSelection:!1},anonymous:{enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableAutoFigmaLinking:!0,enableReviewBadges:!0,showCosts:!1,enableParallelReview:!0,enableModelSelection:!1}}});var pn=$(()=>{"use strict";H0();hC();xC();Qd();Xy();vI();SI();VI();WI();GI()});function LG(e){let{aiPrompt:t,aiResponse:n,...r}=e;return r}function Zr(e){try{let t=e.map(LG),n=JSON.stringify(t,BG);sessionStorage.setItem(sb,n)}catch(t){b.error("[SessionStorage] Failed to save review history:",t)}}function lb(){try{let e=sessionStorage.getItem(sb);if(!e)return[];let t=JSON.parse(e,zG);return Array.isArray(t)?t:[]}catch(e){return b.error("[SessionStorage] Failed to load review history:",e),[]}}function qI(){try{let e=lb();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,...a}=r;return a}return r});t&&(Zr(n),b.debug("[SessionStorage] Stripped aiPrompt/aiResponse from existing review history"))}catch(e){b.error("[SessionStorage] Failed to strip sensitive fields:",e)}}function cb(){try{sessionStorage.removeItem(sb),b.debug("[SessionStorage] Review history cleared")}catch(e){b.error("[SessionStorage] Failed to clear review history:",e)}}function BG(e,t){return t instanceof Date?{__type:"Date",value:t.toISOString()}:t}function zG(e,t){return t&&t.__type==="Date"?new Date(t.value):t}var sb,ub=$(()=>{"use strict";Pe();sb="uicopilot_review_history"});var nf,pb=$(()=>{"use strict";nf={REVIEW_START:"uireview/review-start",REVIEW_COMPLETE:"uireview/review-complete",REVIEW_ERROR:"uireview/review-error",REVIEW_CLEAR:"uireview/review-clear",REVIEW_RESET:"uireview/review-reset"}});import DG,{createContext as NG,useContext as OG,useReducer as $G,useMemo as YI,useRef as HG,useEffect as KI}from"react";import{addons as UG}from"storybook/manager-api";function rf(e){let t=e.length>JI?e.slice(e.length-JI):e,n=Math.max(0,t.length-jG);return n===0?t:t.map((r,o)=>{if(o>=n)return r;let i=r.storybookImageData?.startsWith("data:"),a=r.figmaImageData?.startsWith("data:");return!i&&!a?r:{...r,storybookImageData:i?void 0:r.storybookImageData,figmaImageData:a?void 0:r.figmaImageData}})}function VG(e,t){switch(t.type){case"SET_STATE":return{...e,...t.payload};case"REQUEST_REVIEW_RETRY":return{...e,reviewRetryNonce:e.reviewRetryNonce+1};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:t.payload.storybookImageData||e.storybookImageUrl||void 0,figmaImageData:t.payload.figmaImageData||e.figmaImageUrl||void 0,figmaComponentProperties:t.payload.figmaComponentProperties,aiPrompt:n&&e.fullPrompt||void 0,aiResponse:n&&e.fullResponse||void 0,costUsd:t.payload.costUsd,inputTokens:t.payload.inputTokens,outputTokens:t.payload.outputTokens,reviewDurationMs:t.payload.reviewDurationMs},o=e.reviewHistory.findIndex(a=>a.id===t.payload.id),i;return o>=0?i=e.reviewHistory.map((a,s)=>s===o?r:a):i=[...e.reviewHistory,r],i=rf(i),Zr(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(a=>[a.id,a])),r=!1,o=e.reviewHistory.slice();for(let a of t.payload){let s=n.get(a.id);if(!s){o.push(a),r=!0;continue}let c=a.issues?.length??0,u=s.issues?.length??0;if(c>u){let l=o.indexOf(s);l!==-1&&(o[l]=a,r=!0)}}if(!r)return e;let i=rf(o);return Zr(i),{...e,reviewHistory:i}}case"ADD_REVIEW":{let n=rf([...e.reviewHistory,t.payload]);return Zr(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 Zr(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 Zr(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 Zr(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 a=n.get(i.id);return a?{...i,generatedFix:i.generatedFix?{...i.generatedFix,...a}:a,selectedForFix:a?.status==="failed"?!1:i.selectedForFix}:i})});return Zr(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(u=>u.id===t.payload.issueId?{...u,dismissed:!0,dismissReason:t.payload.reason,dismissedAt:new Date,dismissedBy:t.payload.dismissedBy}:u),i=o.filter(u=>!u.dismissed),a=i.filter(u=>u.severity==="critical").length,s=i.filter(u=>u.severity==="major").length,c=i.filter(u=>u.severity==="minor").length;return{...r,issues:o,complianceScore:Ki(a,s,c),issuesCount:i.length}});return Zr(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(u=>u.id===t.payload?{...u,dismissed:!1,dismissReason:void 0,dismissedAt:void 0}:u),i=o.filter(u=>!u.dismissed),a=i.filter(u=>u.severity==="critical").length,s=i.filter(u=>u.severity==="major").length,c=i.filter(u=>u.severity==="minor").length;return{...r,issues:o,complianceScore:Ki(a,s,c),issuesCount:i.length}});return Zr(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(u=>!u.dismissed),i=o.filter(u=>u.severity==="critical").length,a=o.filter(u=>u.severity==="major").length,s=o.filter(u=>u.severity==="minor").length,c=Ki(i,a,s);return b.debug(`[recalculateScore] Active: ${o.length}, score: ${c}`),{...r,complianceScore:c,issuesCount:o.length}});return Zr(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 Zr(n),{...e,reviewHistory:n}}case"CLEAR_ALL_REVIEWS":return cb(),{...e,reviewHistory:[],currentReviewId:null};case"CLEAR_REVIEWS_FOR_UNLINK":{let n=!t.payload;return n&&cb(),{...e,reviewResults:null,currentReviewId:null,isNewReviewMode:!1,...n?{reviewHistory:[]}:{}}}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 fb({children:e}){let[t,n]=$G(VG,KG),r=HG(t);KI(()=>{r.current=t},[t]),KI(()=>{let a;try{a=UG.getChannel()}catch{return}let s=({storyId:c}={})=>n({type:"CLEAR_REVIEWS_FOR_UNLINK",payload:c});return a.on(XI,s),()=>{a.off(XI,s)}},[]);let o=YI(()=>({setIsReviewing:a=>n({type:"SET_STATE",payload:{isReviewing:a}}),setReviewingStoryId:a=>n({type:"SET_STATE",payload:{reviewingStoryId:a}}),setReviewError:a=>n({type:"SET_STATE",payload:{reviewError:a}}),requestReviewRetry:()=>n({type:"REQUEST_REVIEW_RETRY"}),bulkAddReviews:a=>n({type:"BULK_ADD_REVIEWS",payload:a}),setReviewResults:a=>n({type:"SET_REVIEW_RESULTS",payload:a}),setMultiModelResults:a=>n({type:"SET_STATE",payload:{multiModelResults:a}}),updateMultiModelStreamingMessages:(a,s)=>n({type:"UPDATE_MULTI_MODEL_STREAMING",payload:{modelId:a,messages:s}}),setModelCompleted:a=>n({type:"SET_MODEL_COMPLETED",payload:a}),setActiveModelId:a=>{let s=r.current;s.multiModelResults&&n({type:"SET_STATE",payload:{multiModelResults:{...s.multiModelResults,activeModelId:a}}})},setShowReviewMenu:a=>n({type:"SET_STATE",payload:{showReviewMenu:a}}),setSeverityFilter:a=>n({type:"SET_STATE",payload:{severityFilter:a}}),setShowStreamingPanel:a=>n({type:"SET_STATE",payload:{showStreamingPanel:a}}),setStreamingPanelCollapsed:a=>n({type:"SET_STATE",payload:{streamingPanelCollapsed:a}}),addStreamingMessage:a=>n({type:"ADD_STREAMING_MESSAGE",payload:a}),updateStreamingMessage:(a,s)=>n({type:"UPDATE_STREAMING_MESSAGE",payload:{index:a,content:s}}),clearStreamingMessages:()=>n({type:"CLEAR_STREAMING_MESSAGES"}),setStreamingProgress:a=>n({type:"SET_STATE",payload:{streamingProgress:a}}),setStreamingStatus:a=>n({type:"SET_STATE",payload:{streamingStatus:a}}),setReviewDetailTab:a=>n({type:"SET_STATE",payload:{reviewDetailTab:a}}),setFullPrompt:a=>n({type:"SET_STATE",payload:{fullPrompt:a}}),setFullResponse:a=>n({type:"SET_STATE",payload:{fullResponse:a}}),setFigmaImageUrl:a=>n({type:"SET_STATE",payload:{figmaImageUrl:a}}),setStorybookImageUrl:a=>n({type:"SET_STATE",payload:{storybookImageUrl:a}}),setFigmaDimensions:a=>n({type:"SET_STATE",payload:{figmaDimensions:a}}),setSelectedModels:a=>n({type:"SET_STATE",payload:{selectedModels:a}}),toggleModel:a=>n({type:"TOGGLE_MODEL",payload:a}),setModelComparisonView:a=>n({type:"SET_STATE",payload:{modelComparisonView:a}}),resetReview:()=>n({type:"RESET_REVIEW"}),addReview:a=>n({type:"ADD_REVIEW",payload:a}),getCurrentReview:()=>{let a=r.current;return a.currentReviewId&&a.reviewHistory.find(s=>s.id===a.currentReviewId)||null},getReviewById:a=>r.current.reviewHistory.find(s=>s.id===a)||null,getParentReview:()=>{let a=r.current,s=a.reviewHistory.find(c=>c.id===a.currentReviewId);return s?.parentReviewId&&a.reviewHistory.find(c=>c.id===s.parentReviewId)||null},hasAppliedFixes:()=>{let a=r.current,s=a.reviewHistory.find(c=>c.id===a.currentReviewId);return!s||!Array.isArray(s.issues)||s.issues.length===0?!1:s.issues.some(c=>c.status==="applied"||c.generatedFix?.status==="applied")},toggleIssueSelection:a=>n({type:"TOGGLE_ISSUE_SELECTION",payload:a}),updateIssueStatus:(a,s,c)=>n({type:"UPDATE_ISSUE_STATUS",payload:{issueId:a,status:s,error:c}}),updateIssueGeneratedFix:(a,s)=>n({type:"UPDATE_ISSUE_GENERATED_FIX",payload:{issueId:a,generatedFix:s}}),batchUpdateIssueGeneratedFixes:a=>n({type:"BATCH_UPDATE_ISSUE_GENERATED_FIXES",payload:a}),dismissIssue:(a,s,c)=>n({type:"DISMISS_ISSUE",payload:{issueId:a,reason:s,dismissedBy:c}}),undismissIssue:a=>n({type:"UNDISMISS_ISSUE",payload:a}),recalculateScore:()=>n({type:"RECALCULATE_SCORE"}),updateReviewScore:(a,s)=>n({type:"UPDATE_REVIEW_SCORE",payload:{reviewId:a,newScore:s}}),clearAllReviews:()=>n({type:"CLEAR_ALL_REVIEWS"}),clearStaleReviewsForStory:a=>n({type:"CLEAR_STALE_REVIEWS",payload:a}),setIsApplying:a=>n({type:"SET_STATE",payload:{isApplying:a}}),setApplyFixesResult:a=>n({type:"SET_STATE",payload:{applyFixesResult:a}}),setIncludeComponentIssues:a=>n({type:"SET_STATE",payload:{includeComponentIssues:a}}),setIncludeTextComparison:a=>n({type:"SET_STATE",payload:{includeTextComparison:a}}),setUsePromptCache:a=>n({type:"SET_STATE",payload:{usePromptCache:a}}),setIsValidating:a=>n({type:"SET_STATE",payload:{isValidating:a}}),setIsSpecChecking:a=>n({type:"SET_STATE",payload:{isSpecChecking:a}}),setReviewHistoryLoading:a=>n({type:"SET_STATE",payload:{reviewHistoryLoading:a}}),setValidationUsage:a=>n({type:"SET_STATE",payload:{validationUsage:a}}),setWorkspacePath:a=>n({type:"SET_STATE",payload:{workspacePath:a}}),triggerScreenshotRefresh:()=>n({type:"TRIGGER_SCREENSHOT_REFRESH"}),setHoveredIssueId:a=>n({type:"SET_STATE",payload:{hoveredIssueId:a}}),setNewReviewMode:a=>n({type:"SET_STATE",payload:{isNewReviewMode:a}}),setPendingSettingsOpen:a=>n({type:"SET_STATE",payload:{pendingSettingsOpen:a}}),setFeatureFlags:a=>n({type:"SET_STATE",payload:{featureFlags:a}}),setUserRole:a=>n({type:"SET_STATE",payload:{userRole:a}}),setRoleOverride:a=>{try{a?localStorage.setItem("uicopilot_role_override",a):localStorage.removeItem("uicopilot_role_override")}catch{}n({type:"SET_STATE",payload:{roleOverride:a}})},setReviewAllConcurrency:a=>{let s=Math.max(1,Math.min(5,a));try{localStorage.setItem("uicopilot_review_all_concurrency",String(s))}catch{}n({type:"SET_STATE",payload:{reviewAllConcurrency:s}})},setIsGenerating:a=>n({type:"SET_STATE",payload:{isGenerating:a}}),setGeneratedPrompt:a=>n({type:"SET_STATE",payload:{generatedPrompt:a}}),setPromptError:a=>n({type:"SET_STATE",payload:{promptError:a}}),resetPrompt:()=>n({type:"RESET_PROMPT"})}),[]),i=YI(()=>({...t,...o}),[t,o]);return DG.createElement(QI.Provider,{value:i},e)}function ve(){let e=OG(QI);if(!e)throw new Error("useReviewStore must be used within a ReviewProvider");return e}var XI,JI,jG,WG,GG,db,qG,YG,KG,QI,gb=$(()=>{"use strict";pn();ub();Pe();pb();XI=nf.REVIEW_CLEAR,JI=20,jG=5;WG=()=>{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},GG=()=>{if(typeof localStorage>"u")return null;try{let e=localStorage.getItem("uicopilot_role_override");if(e==="admin"||e==="beta")return e}catch{}return null},db={enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableAutoFigmaLinking:!1,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1},qG=()=>{if(typeof localStorage>"u")return db;try{let e=localStorage.getItem("uicopilot_feature_flags");if(!e)return db;let t=JSON.parse(e);return{enableFixGeneration:!!t.enableFixGeneration,enableFixApply:!!t.enableFixApply,enableAutoMap:!!t.enableAutoMap,enableAutoFigmaLinking:!!t.enableAutoFigmaLinking,enableReviewBadges:!!t.enableReviewBadges,showCosts:!!t.showCosts,enableParallelReview:!!t.enableParallelReview,enableModelSelection:!!t.enableModelSelection}}catch{}return db},YG=()=>{if(typeof localStorage>"u")return"beta";try{let e=localStorage.getItem("uicopilot_user_role");if(e==="admin"||e==="beta")return e}catch{}return"beta"},KG={isReviewing:!1,reviewingStoryId:null,reviewError:null,reviewRetryNonce:0,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-6"],modelComparisonView:"side-by-side",reviewHistory:rf(lb()),currentReviewId:null,includeComponentIssues:!0,includeTextComparison:!1,usePromptCache:!1,isApplying:!1,applyFixesResult:null,screenshotRefreshKey:0,isValidating:!1,isSpecChecking:!1,reviewHistoryLoading:!1,validationUsage:null,lastAiCallTimestamp:null,aiRateLimitSeconds:0,isGenerating:!1,generatedPrompt:null,promptError:null,workspacePath:null,userRole:YG(),roleOverride:GG(),featureFlags:qG(),reviewAllConcurrency:WG(),hoveredIssueId:null,isNewReviewMode:!1,pendingSettingsOpen:!1},QI=NG(null)});import su,{useMemo as XG}from"react";function hb({children:e}){return su.createElement(B0,null,su.createElement(D0,null,su.createElement(O0,null,su.createElement(fb,null,su.createElement(JG,null),e))))}function ZI(e){let t=we(),n=We(),r=yt(),o=ve(),i=XG(()=>({...t,...n,...r,...o}),[t,n,r,o]);return e?e(i):i}function JG(){return mb=ZI(),null}var mb,Tt,e3=$(()=>{"use strict";z0();N0();$0();gb();mb=null,Tt=Object.assign(ZI,{getState:()=>{if(!mb)throw new Error("Store not initialized. Make sure StoreProvider is mounted.");return mb}})});var Ce=$(()=>{"use strict";e3();z0();N0();$0();gb()});function q(){return(process.env.STORYBOOK_UICOPILOT_URL||QG).replace(/\/$/,"")}var QG,t3,n3,Me=$(()=>{"use strict";QG="https://app.uiparity.com",t3="0.20.0";n3=3.6});async function J(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 nt=$(()=>{"use strict"});function Ca(e){let r=e.ownerDocument?.defaultView;if(!r)return e.firstElementChild??e;let o=e.getBoundingClientRect(),i=d=>{let f=r.getComputedStyle(d);if(f.position==="fixed"||f.display==="none"||f.visibility==="hidden")return!0;let p=d.getBoundingClientRect();return p.width===0||p.height===0||d.children.length===0&&!(d.textContent??"").trim()},a=d=>{if(o.width===0||o.height===0)return!1;let f=d.getBoundingClientRect();return f.width>=o.width*.9&&f.height>=o.height*.9},s=[],c=d=>{for(let f of Array.from(d.children))f.hasAttribute("data-uicopilot-instance")?s.push(f):c(f)};if(c(e),s.length>1){let d=g=>{let m=[];for(let C=g;C&&C!==e;C=C.parentElement)m.unshift(C);return m},f=s.map(d),p=e;for(let g=0;;g+=1){let m=f[0][g];if(!m||!f.every(C=>C[g]===m))break;p=m}if(p!==e)return p}let u=e;for(let d=0;d<6;d+=1){if(u!==e&&u.hasAttribute("data-uicopilot-instance"))return u;let f=Array.from(u.children).filter(p=>!i(p));if(f.length!==1||u!==e&&!a(u))break;u=f[0]}if(u!==e&&a(u)){let d=Array.from(u.children).filter(f=>!i(f));if(d.length>1&&l(d))return d[0].setAttribute("data-uicopilot-instances",String(d.length)),d[0]}if(u===e)return e.firstElementChild??e;return u;function l(d){let f=g=>{let m=g.className,C=typeof m=="string"?m:"";return`${g.tagName}.${C.split(" ")[0]??""}`},p=f(d[0]);return d.every(g=>f(g)===p)}}var fu=$(()=>{"use strict"});function Jq(){return!q().startsWith("http://localhost")}function Qq(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 D3(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=Qq(o,t,n);return r.set(o,i),i})}async function Zq(){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.getElementById("storybook-root")||t.contentDocument.getElementById("root");if(!n)throw new Error("Story root not found in iframe");let r=Ca(n);if(!r)throw new Error("Story element not found in iframe");let o=t.contentWindow,i=t.contentDocument;return(await e(r,{useCORS:!0,logging:!1,backgroundColor:null,scale:1,onclone:s=>{s.querySelectorAll("style").forEach(u=>{let l=u.textContent||"";/(?:color|oklch|oklab|lab|lch)\(/.test(l)&&(u.textContent=D3(l,i,o))});let c=Array.from(i.styleSheets);s.querySelectorAll('link[rel="stylesheet"]').forEach(u=>{let l=u.href,d=c.find(f=>f.href===l);if(d)try{let f="";for(let p of Array.from(d.cssRules))f+=p.cssText+`
12
+ --`+new Array((n||t.length)+1).join("-")+"^"})}var B4=$(()=>{"use strict";wd()});var J$,Q$,Z$,eH,tH,z4,zd,D4=$(()=>{"use strict";B4();J$=9,Q$=10,Z$=12,eH=13,tH=32,z4=new Uint8Array(128).map((e,t)=>/[a-zA-Z0-9\-]/.test(String.fromCharCode(t))?1:0),zd=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&&z4[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!==eH&&n!==Q$&&n!==Z$&&n!==tH&&n!==J$)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 L4(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||z4[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 j4(e){let t=null,n=null;return e.eat(Od),e.skipWs(),t=e.scanNumber(e),e.skipWs(),e.charCode()===Rh?(e.pos++,e.skipWs(),e.charCode()!==Eh&&(n=e.scanNumber(e),e.skipWs())):n=t,e.eat(Eh),{min:Number(t),max:n?Number(n):0}}function lH(e){let t=null,n=!1;switch(e.charCode()){case q4:e.pos++,t={min:0,max:0};break;case Ih:e.pos++,t={min:1,max:0};break;case Nd:e.pos++,t={min:0,max:1};break;case Th:e.pos++,n=!0,e.charCode()===Od?t=j4(e):e.charCode()===Nd?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case Od:t=j4(e);break;default:return null}return{type:"Multiplier",comma:n,min:t.min,max:t.max,term:null}}function Yi(e,t){let n=lH(e);return n!==null?(n.term=t,e.charCode()===Th&&e.charCodeAt(e.pos-1)===Ih||e.charCode()===Nd&&e.charCodeAt(e.pos-1)===Eh?Yi(e,n):n):t}function kh(e){let t=e.peek();return t===""?null:Yi(e,{type:"Token",value:t})}function cH(e){let t;return e.eat(Ah),e.eat(Dd),t=e.scanWord(),e.eat(Dd),e.eat(Ch),Yi(e,{type:"Property",name:t})}function uH(e){let t=null,n=null,r=1;return e.eat(Wc),e.charCode()===O4&&(e.peek(),r=-1),r==-1&&e.charCode()===H4?e.peek():(t=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(t+=e.scanWord())),e.skipWs(),e.eat(Rh),e.skipWs(),e.charCode()===H4?e.peek():(r=1,e.charCode()===O4&&(e.peek(),r=-1),n=r*Number(e.scanNumber(e)),e.isNameCharCode()&&(n+=e.scanWord())),e.eat(xl),{type:"Range",min:t,max:n}}function pH(e){let t,n=null;if(e.eat(Ah),t=e.scanWord(),t==="boolean-expr"){e.eat(Wc);let r=$d(e,xl);return e.eat(xl),e.eat(Ch),Yi(e,{type:"Boolean",term:r.terms.length===1?r.terms[0]:r})}return e.charCode()===W4&&e.nextCharCode()===G4&&(e.pos+=2,t+="()"),e.charCodeAt(e.findWsEnd(e.pos))===Wc&&(e.skipWs(),n=uH(e)),e.eat(Ch),Yi(e,{type:"Type",name:t,opts:n})}function dH(e){let t=e.scanWord();return e.charCode()===W4?(e.pos++,{type:"Function",name:t}):Yi(e,{type:"Keyword",name:t})}function fH(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)=>U4[o]-U4[i]);t.length>0;){r=t.shift();let o=0,i=0;for(;o<e.length;o++){let a=e[o];a.type==="Combinator"&&(a.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 $d(e,t=-1){let n=Object.create(null),r=[],o=null,i=e.pos,a=!1;for(;e.charCode()!==t;){let s=a?$d(e,G4):mH(e);if(!s)break;if(s.type!=="Spaces"){if(a){if(s.terms.length===0){a=!1;continue}if(s.combinator===" "){for(;s.terms.length>1;)n[" "]=!0,r.push({type:"Combinator",value:" "},s.terms.shift());s=s.terms[0]}}s.type==="Combinator"?((o===null||o.type==="Combinator")&&(e.pos=i,e.error("Unexpected combinator")),n[s.value]=!0):o!==null&&o.type!=="Combinator"&&(n[" "]=!0,r.push({type:"Combinator",value:" "})),r.push(s),o=s,i=e.pos,a=s.type==="Function"}}return o!==null&&o.type==="Combinator"&&(e.pos-=i,e.error("Unexpected combinator")),{type:"Group",terms:r,combinator:fH(r,n)||" ",disallowEmpty:!1,explicit:!1}}function gH(e){let t;return e.eat(Wc),t=$d(e,xl),e.eat(xl),t.explicit=!0,e.charCode()===V4&&(e.pos++,t.disallowEmpty=!0),t}function mH(e){let t=e.charCode();switch(t){case xl:break;case Wc:return Yi(e,gH(e));case Ah:return e.nextCharCode()===Dd?cH(e):pH(e);case $4:return{type:"Combinator",value:e.substringToPos(e.pos+(e.nextCharCode()===$4?2:1))};case N4:return e.pos++,e.eat(N4),{type:"Combinator",value:"&&"};case Rh:return e.pos++,{type:"Comma"};case Dd:return Yi(e,{type:"String",value:e.scanString()});case aH:case nH:case rH:case iH:case oH:return{type:"Spaces",value:e.scanSpaces()};case sH:return t=e.nextCharCode(),e.isNameCharCode(t)?(e.pos++,{type:"AtKeyword",name:e.scanWord()}):kh(e);case q4:case Ih:case Nd:case Th:case V4:break;case Od:if(t=e.nextCharCode(),t<48||t>57)return kh(e);break;default:return e.isNameCharCode(t)?dH(e):kh(e)}}function Gc(e){let t=new zd(e),n=$d(t);return t.pos!==e.length&&t.error("Unexpected input"),n.terms.length===1&&n.terms[0].type==="Group"?n.terms[0]:n}var nH,rH,oH,iH,aH,V4,Th,N4,Dd,W4,G4,q4,Ih,Rh,O4,Ah,Ch,Nd,sH,Wc,xl,Od,$4,Eh,H4,U4,Fh=$(()=>{"use strict";D4();nH=9,rH=10,oH=12,iH=13,aH=32,V4=33,Th=35,N4=38,Dd=39,W4=40,G4=41,q4=42,Ih=43,Rh=44,O4=45,Ah=60,Ch=62,Nd=63,sH=64,Wc=91,xl=93,Od=123,$4=124,Eh=125,H4=8734,U4={" ":1,"&&":2,"||":3,"|":4}});function Y4(e){return typeof e=="function"?e:qc}function Mh(e,t,n){function r(a){switch(o.call(n,a),a.type){case"Group":a.terms.forEach(r);break;case"Multiplier":case"Boolean":r(a.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: "+a.type)}i.call(n,a)}let o=qc,i=qc;if(typeof t=="function"?o=t:t&&(o=Y4(t.enter),i=Y4(t.leave)),o===qc&&i===qc)throw new Error("Neither `enter` nor `leave` walker handler is set or both aren't a function");r(e,n)}var qc,K4=$(()=>{"use strict";qc=function(){}});var Ph=$(()=>{"use strict";ch();Fh();K4()});function yH(e){let t=[];return ba(e,(n,r,o)=>t.push({type:n,value:e.slice(r,o),node:null})),t}function X4(e,t){return typeof e=="string"?yH(e):t.generate(e,xH)}var xH,J4=$(()=>{"use strict";po();xH={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 pr(e,t,n){return t===Bt&&n===Wt||e===Bt&&t===Bt&&n===Bt?e:(e.type==="If"&&e.else===Wt&&t===Bt&&(t=e.then,e=e.match),{type:"If",match:e,then:t,else:n})}function Z4(e){return e.length>2&&e.charCodeAt(e.length-2)===bH&&e.charCodeAt(e.length-1)===wH}function Q4(e){return e.type==="Keyword"||e.type==="AtKeyword"||e.type==="Function"||e.type==="Type"&&Z4(e.name)}function va(e,t=" ",n=!1){return{type:"Group",terms:e,combinator:t,disallowEmpty:!1,explicit:n}}function Yc(e,t,n=new Set){if(!n.has(e))switch(n.add(e),e.type){case"If":e.match=Yc(e.match,t,n),e.then=Yc(e.then,t,n),e.else=Yc(e.else,t,n);break;case"Type":return t[e.name]||e}return e}function _h(e,t,n){switch(e){case" ":{let r=Bt;for(let o=t.length-1;o>=0;o--){let i=t[o];r=pr(i,r,Wt)}return r}case"|":{let r=Wt,o=null;for(let i=t.length-1;i>=0;i--){let a=t[i];if(Q4(a)&&(o===null&&i>0&&Q4(t[i-1])&&(o=Object.create(null),r=pr({type:"Enum",map:o},Bt,r)),o!==null)){let s=(Z4(a.name)?a.name.slice(0,-1):a.name).toLowerCase();if(!(s in o)){o[s]=a;continue}}o=null,r=pr(a,Bt,r)}return r}case"&&":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!0};let r=Wt;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=_h(e,t.filter(function(s){return s!==i}),!1):a=Bt,r=pr(i,a,r)}return r}case"||":{if(t.length>5)return{type:"MatchOnce",terms:t,all:!1};let r=n?Bt:Wt;for(let o=t.length-1;o>=0;o--){let i=t[o],a;t.length>1?a=_h(e,t.filter(function(s){return s!==i}),!0):a=Bt,r=pr(i,a,r)}return r}}}function vH(e){let t=Bt,n=yl(e.term);if(e.max===0)n=pr(n,Hd,Wt),t=pr(n,null,Wt),t.then=pr(Bt,Bt,t),e.comma&&(t.then.else=pr({type:"Comma",syntax:e},t,Wt));else for(let r=e.min||1;r<=e.max;r++)e.comma&&t!==Bt&&(t=pr({type:"Comma",syntax:e},t,Wt)),t=pr(n,pr(Bt,Bt,t),Wt);if(e.min===0)t=pr(Bt,Bt,t);else for(let r=0;r<e.min-1;r++)e.comma&&t!==Bt&&(t=pr({type:"Comma",syntax:e},t,Wt)),t=pr(n,t,Wt);return t}function yl(e){if(typeof e=="function")return{type:"Generic",fn:e};switch(e.type){case"Group":{let t=_h(e.combinator,e.terms.map(yl),!1);return e.disallowEmpty&&(t=pr(t,Hd,Wt)),t}case"Multiplier":return vH(e);case"Boolean":{let t=yl(e.term),n=yl(va([va([{type:"Keyword",name:"not"},{type:"Type",name:"!boolean-group"}]),va([{type:"Type",name:"!boolean-group"},va([{type:"Multiplier",comma:!1,min:0,max:0,term:va([{type:"Keyword",name:"and"},{type:"Type",name:"!boolean-group"}])},{type:"Multiplier",comma:!1,min:0,max:0,term:va([{type:"Keyword",name:"or"},{type:"Type",name:"!boolean-group"}])}],"|")])],"|")),r=yl(va([{type:"Type",name:"!term"},va([{type:"Token",value:"("},{type:"Type",name:"!self"},{type:"Token",value:")"}]),{type:"Type",name:"general-enclosed"}],"|"));return Yc(r,{"!term":t,"!self":n}),Yc(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 Kc(e,t){return typeof e=="string"&&(e=Gc(e)),{type:"MatchGraph",match:yl(e),syntax:t||null,source:e}}var Bt,Wt,Hd,bH,wH,Lh=$(()=>{"use strict";Fh();Bt={type:"Match"},Wt={type:"Mismatch"},Hd={type:"DisallowEmpty"},bH=40,wH=41});function IH(e){let t=null,n=null,r=e;for(;r!==null;)n=r.prev,r.prev=t,t=r,r=n;return t}function Bh(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 RH(e){return e.type!==9?!1:e.value!=="?"}function rE(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||RH(e)}function oE(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value==="/"}function AH(e,t,n){function r(){do h++,v=h<e.length?e[h]:null;while(v!==null&&(v.type===13||v.type===25))}function o(z){let A=h+z;return A<e.length?e[A]:null}function i(z,A){return{nextState:z,matchStack:L,syntaxStack:d,thenStack:f,tokenIndex:h,prev:A}}function a(z){f={nextState:z,matchStack:L,syntaxStack:d,prev:f}}function s(z){p=i(z,p)}function c(){L={type:kH,syntax:t.syntax,token:v,prev:L},r(),g=null,h>M&&(M=h)}function u(){d={syntax:t.syntax,opts:t.syntax.opts||d!==null&&d.opts||null,prev:d},L={type:zh,syntax:t.syntax,token:L.token,prev:L}}function l(){L.type===zh?L=L.prev:L={type:iE,syntax:d.syntax,token:L.token,prev:L},d=d.prev}let d=null,f=null,p=null,g=null,m=0,C=null,v=null,h=-1,M=0,L={type:SH,syntax:null,token:null,prev:null};for(r();C===null&&++m<nE;)switch(t.type){case"Match":if(f===null){if(v!==null&&(h!==e.length-1||v.value!=="\\0"&&v.value!=="\\9")){t=Wt;break}C=tE;break}if(t=f.nextState,t===Hd)if(f.matchStack===L){t=Wt;break}else t=Bt;for(;f.syntaxStack!==d;)l();f=f.prev;break;case"Mismatch":if(g!==null&&g!==!1)(p===null||h>p.tokenIndex)&&(p=g,g=!1);else if(p===null){C=CH;break}t=p.nextState,f=p.thenStack,d=p.syntaxStack,L=p.matchStack,h=p.tokenIndex,v=h<e.length?e[h]:null,p=p.prev;break;case"MatchGraph":t=t.match;break;case"If":t.else!==Wt&&s(t.else),t.then!==Bt&&a(t.then),t=t.match;break;case"MatchOnce":t={type:"MatchOnceBuffer",syntax:t,index:0,mask:0};break;case"MatchOnceBuffer":{let D=t.syntax.terms;if(t.index===D.length){if(t.mask===0||t.syntax.all){t=Wt;break}t=Bt;break}if(t.mask===(1<<D.length)-1){t=Bt;break}for(;t.index<D.length;t.index++){let y=1<<t.index;if((t.mask&y)===0){s(t),a({type:"AddMatchOnce",syntax:t.syntax,mask:t.mask|y}),t=D[t.index++];break}}break}case"AddMatchOnce":t={type:"MatchOnceBuffer",syntax:t.syntax,index:0,mask:t.mask};break;case"Enum":if(v!==null){let D=v.value.toLowerCase();if(D.indexOf("\\")!==-1&&(D=D.replace(/\\[09].*$/,"")),eE.call(t.map,D)){t=t.map[D];break}}t=Wt;break;case"Generic":{let D=d!==null?d.opts:null,y=h+Math.floor(t.fn(v,o,D));if(!isNaN(y)&&y>h){for(;h<y;)c();t=Bt}else t=Wt;break}case"Type":case"Property":{let D=t.type==="Type"?"types":"properties",y=eE.call(n,D)?n[D][t.name]:null;if(!y||!y.match)throw new Error("Bad syntax reference: "+(t.type==="Type"?"<"+t.name+">":"<'"+t.name+"'>"));if(g!==!1&&v!==null&&t.type==="Type"&&(t.name==="custom-ident"&&v.type===1||t.name==="length"&&v.value==="0")){g===null&&(g=i(t,p)),t=Wt;break}u(),t=y.matchRef||y.match;break}case"Keyword":{let D=t.name;if(v!==null){let y=v.value;if(y.indexOf("\\")!==-1&&(y=y.replace(/\\[09].*$/,"")),Bh(y,D)){c(),t=Bt;break}}t=Wt;break}case"AtKeyword":case"Function":if(v!==null&&Bh(v.value,t.name)){c(),t=Bt;break}t=Wt;break;case"Token":if(v!==null&&v.value===t.value){c(),t=Bt;break}t=Wt;break;case"Comma":v!==null&&v.type===18?rE(L.token)?t=Wt:(c(),t=oE(v)?Wt:Bt):t=rE(L.token)||oE(v)?Bt:Wt;break;case"String":let z="",A=h;for(;A<e.length&&z.length<t.value.length;A++)z+=e[A].value;if(Bh(z,t.value)){for(;h<A;)c();t=Bt}else t=Wt;break;default:throw new Error("Unknown node type: "+t.type)}switch(TH+=m,C){case null:console.warn("[csstree-match] BREAK after "+nE+" iterations"),C=EH,L=null;break;case tE:for(;d!==null;)l();break;default:L=null}return{tokens:e,reason:C,iterations:m,match:L,longestMatch:M}}function Dh(e,t,n){let r=AH(e,t,n||{});if(r.match===null)return r;let o=r.match,i=r.match={syntax:t.syntax||null,match:[]},a=[i];for(o=IH(o).prev;o!==null;){switch(o.type){case zh:i.match.push(i={syntax:o.syntax,match:[]}),a.push(i);break;case iE:a.pop(),i=a[a.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 eE,SH,kH,zh,iE,tE,CH,EH,nE,TH,aE=$(()=>{"use strict";Lh();({hasOwnProperty:eE}=Object.prototype),SH=0,kH=1,zh=2,iE=3,tE="Match",CH="Mismatch",EH="Maximum iteration number exceeded (please fill an issue on https://github.com/csstree/csstree/issues)",nE=15e3,TH=0});var Oh={};ze(Oh,{getTrace:()=>sE,isKeyword:()=>PH,isProperty:()=>MH,isType:()=>FH});function sE(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 FH(e,t){return Nh(this,e,n=>n.type==="Type"&&n.name===t)}function MH(e,t){return Nh(this,e,n=>n.type==="Property"&&n.name===t)}function PH(e){return Nh(this,e,t=>t.type==="Keyword")}function Nh(e,t,n){let r=sE.call(e,t);return r===null?!1:r.some(n)}var lE=$(()=>{"use strict"});function cE(e){return"node"in e?e.node:cE(e.match[0])}function uE(e){return"node"in e?e.node:uE(e.match[e.match.length-1])}function $h(e,t,n,r,o){function i(s){if(s.syntax!==null&&s.syntax.type===r&&s.syntax.name===o){let c=cE(s),u=uE(s);e.syntax.walk(t,function(l,d,f){if(l===c){let p=new Jr;do{if(p.appendData(d.data),d.data===u)break;d=d.next}while(d!==null);a.push({parent:f,nodes:p})}})}Array.isArray(s.match)&&s.match.forEach(i)}let a=[];return n.matched!==null&&i(n.matched),a}var pE=$(()=>{"use strict";Dc()});function Hh(e){return typeof e=="number"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function dE(e){return!!e&&Hh(e.offset)&&Hh(e.line)&&Hh(e.column)}function _H(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 a=!0;if(Xc.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(!dE(r.loc.start))i+=".start";else if(!dE(r.loc.end))i+=".end";else continue;a=!1}else if(t.hasOwnProperty(i)){a=!1;for(let s=0;!a&&s<t[i].length;s++){let c=t[i][s];switch(c){case String:a=typeof r[i]=="string";break;case Boolean:a=typeof r[i]=="boolean";break;case null:a=r[i]===null;break;default:typeof c=="string"?a=r[i]&&r[i].type===c:Array.isArray(c)&&(a=r[i]instanceof Jr)}}}else o(r,"Unknown field `"+i+"` for "+e+" node type");a||o(r,"Bad value for `"+e+"."+i+"`")}}for(let i in t)Xc.call(t,i)&&Xc.call(r,i)===!1&&o(r,"Field `"+e+"."+i+"` is missed")}}function fE(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<"+(fE(o,t)||"any")+">");else throw new Error("Wrong value `"+o+"` in `"+t+"` structure definition")}return n.join(" | ")}function LH(e,t){let n=t.structure,r={type:String,loc:!0},o={type:'"'+e+'"'};for(let i in n){if(Xc.call(n,i)===!1)continue;let a=r[i]=Array.isArray(n[i])?n[i].slice():[n[i]];o[i]=fE(a,e+"."+i)}return{docs:o,check:_H(e,r)}}function gE(e){let t={};if(e.node){for(let n in e.node)if(Xc.call(e.node,n)){let r=e.node[n];if(r.structure)t[n]=LH(n,r);else throw new Error("Missed `structure` field in `"+n+"` node type definition")}}return t}var Xc,mE=$(()=>{"use strict";Dc();({hasOwnProperty:Xc}=Object.prototype)});function Uh(e,t,n){let r={};for(let o in e)e[o].syntax&&(r[o]=n?e[o].syntax:dl(e[o].syntax,{compact:t}));return r}function BH(e,t,n){let r={};for(let[o,i]of Object.entries(e))r[o]={prelude:i.prelude&&(n?i.prelude.syntax:dl(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&Uh(i.descriptors,t,n)};return r}function zH(e){for(let t=0;t<e.length;t++)if(e[t].value.toLowerCase()==="var(")return!0;return!1}function DH(e){let t=e.terms[0];return e.explicit===!1&&e.terms.length===1&&t.type==="Multiplier"&&t.comma===!0}function $o(e,t,n){return{matched:e,iterations:n,error:t,...Oh}}function bl(e,t,n,r){let o=X4(n,e.syntax),i;return zH(o)?$o(null,new Error("Matching for a tree with var() is not supported")):(r&&(i=Dh(o,e.cssWideKeywordsSyntax,e)),(!r||!i.match)&&(i=Dh(o,t.match,e),!i.match)?$o(null,new y4(i.reason,t.syntax,n,i),i.iterations):$o(i.match,null,i.iterations))}var Jc,hE=$(()=>{"use strict";b4();Md();Pd();P4();_4();Ph();J4();Lh();aE();lE();pE();mE();Jc=class{constructor(t,n,r){if(this.cssWideKeywords=ml,this.syntax=n,this.generic=!1,this.units={...Bd},this.atrules=Object.create(null),this.properties=Object.create(null),this.types=Object.create(null),this.structure=r||gE(t),t){if(t.cssWideKeywords&&(this.cssWideKeywords=t.cssWideKeywords),t.units)for(let o of Object.keys(Bd))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(M4(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=Kc(this.cssWideKeywords.join(" | "))}checkStructure(t){function n(i,a){o.push({node:i,message:a})}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},a={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"?a.match=Kc(t,i):(typeof t=="string"?Object.defineProperty(a,"syntax",{get(){return Object.defineProperty(a,"syntax",{value:Gc(t)}),a.syntax}}):a.syntax=t,Object.defineProperty(a,"match",{get(){return Object.defineProperty(a,"match",{value:Kc(a.syntax,i)}),a.match}}),n==="Property"&&Object.defineProperty(a,"matchRef",{get(){let s=a.syntax,c=DH(s)?Kc({...s,terms:[s.terms[0].term]},i):null;return Object.defineProperty(a,"matchRef",{value:c}),c}})),a}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 fl("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&&!bl(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=Ad(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 fl("Unknown at-rule descriptor",n)}checkPropertyName(t){if(!this.getProperty(t))return new fl("Unknown property",t)}matchAtrulePrelude(t,n){let r=this.checkAtrulePrelude(t,n);if(r)return $o(null,r);let o=this.getAtrule(t);return o.prelude?bl(this,o.prelude,n||"",!1):$o(null,null)}matchAtruleDescriptor(t,n,r){let o=this.checkAtruleDescriptorName(t,n);if(o)return $o(null,o);let i=this.getAtrule(t),a=Ad(n);return bl(this,i.descriptors[a.name]||i.descriptors[a.basename],r,!1)}matchDeclaration(t){return t.type!=="Declaration"?$o(null,new Error("Not a Declaration node")):this.matchProperty(t.property,t.value)}matchProperty(t,n){if(uh(t).custom)return $o(null,new Error("Lexer matching doesn't applicable for custom properties"));let r=this.checkPropertyName(t);return r?$o(null,r):bl(this,this.getProperty(t),n,!0)}matchType(t,n){let r=this.getType(t);return r?bl(this,r,n,!1):$o(null,new fl("Unknown type",t))}match(t,n){return typeof t!="string"&&(!t||!t.type)?$o(null,new fl("Bad syntax")):((typeof t=="string"||!t.match)&&(t=this.createDescriptor(t,"Type","anonymous")),bl(this,t,n,!1))}findValueFragments(t,n,r,o){return $h(this,n,this.matchProperty(t,n),r,o)}findDeclarationValueFragments(t,n,r){return $h(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=Ad(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=uh(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(c,u){return u?`<${c}>`:`<'${c}'>`}function n(c,u,l,d){if(l.has(u))return l.get(u);l.set(u,!1),d.syntax!==null&&Mh(d.syntax,function(f){if(f.type!=="Type"&&f.type!=="Property")return;let p=f.type==="Type"?c.types:c.properties,g=f.type==="Type"?o:i;hasOwnProperty.call(p,f.name)?n(c,f.name,g,p[f.name])&&(r.push(`${t(u,l===o)} used broken syntax definition ${t(f.name,f.type==="Type")}`),l.set(u,!0)):(r.push(`${t(u,l===o)} used missed syntax definition ${t(f.name,f.type==="Type")}`),l.set(u,!0))},this)}let r=[],o=new Map,i=new Map;for(let c in this.types)n(this,c,o,this.types[c]);for(let c in this.properties)n(this,c,i,this.properties[c]);let a=[...o.keys()].filter(c=>o.get(c)),s=[...i.keys()].filter(c=>i.get(c));return a.length||s.length?{errors:r,types:a,properties:s}:null}dump(t,n){return{generic:this.generic,cssWideKeywords:this.cssWideKeywords,units:this.units,types:Uh(this.types,!n,t),properties:Uh(this.properties,!n,t),atrules:BH(this.atrules,!n,t)}}toString(){return JSON.stringify(this.dump())}}});function jh(e,t){return typeof t=="string"&&/^\s*\|/.test(t)?typeof e=="string"?e+t:t.replace(/^\s*\|\s*/,""):t||null}function NH(e,t){let n=Object.create(null);for(let r of Object.keys(e))t.includes(r)&&(n[r]=e[r]);return n}function Vh(e,t,n){let r={...e};for(let[o,i]of Object.entries(t))r[o]={...r[o],...n?NH(i,n):i};return r}function Qc(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,a]of Object.entries(o))n[r][i]=Array.isArray(a)?a:[];break;case"atrules":n[r]={...e[r]};for(let[i,a]of Object.entries(o)){let s=n[r][i]||{},c=n[r][i]={prelude:s.prelude||null,descriptors:{...s.descriptors}};if(a){c.prelude=a.prelude?jh(c.prelude,a.prelude):c.prelude||null;for(let[u,l]of Object.entries(a.descriptors||{}))c.descriptors[u]=l?jh(c.descriptors[u],l):null;Object.keys(c.descriptors).length||(c.descriptors=null)}}break;case"types":case"properties":n[r]={...e[r]};for(let[i,a]of Object.entries(o))n[r][i]=jh(n[r][i],a);break;case"parseContext":n[r]={...e[r],...o};break;case"scope":case"features":n[r]=Vh(e[r],o);break;case"atrule":case"pseudo":n[r]=Vh(e[r],o,["parse"]);break;case"node":n[r]=Vh(e[r],o,["name","structure","parse","generate","walkContext"]);break}return n}var xE=$(()=>{"use strict"});function yE(e){let t=_C(e),n=m4(e),r=s4(e),{fromPlainObject:o,toPlainObject:i}=c4(n),a={lexer:null,createLexer:s=>new Jc(s,a,a.lexer.structure),tokenize:ba,parse:t,generate:r,walk:n,find:n.find,findLast:n.findLast,findAll:n.findAll,fromPlainObject:o,toPlainObject:i,fork(s){let c=Qc({},e);return yE(typeof s=="function"?s(c):Qc(c,s))}};return a.lexer=new Jc({generic:e.generic,cssWideKeywords:e.cssWideKeywords,units:e.units,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},a),a}var bE,wE=$(()=>{"use strict";po();LC();l4();u4();h4();hE();xE();bE=e=>yE(Qc({},e))});var vE,SE=$(()=>{"use strict";vE={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 qh={};ze(qh,{generate:()=>UH,name:()=>$H,parse:()=>Gh,structure:()=>HH});function jd(e,t){let n=this.tokenStart+e,r=this.charCodeAt(n);for((r===ui||r===Qr)&&(t&&this.error("Number sign is not allowed"),n++);n<this.tokenEnd;n++)vn(this.charCodeAt(n))||this.error("Integer is expected",n)}function wl(e){return jd.call(this,0,e)}function Sa(e,t){if(!this.cmpChar(this.tokenStart+e,t)){let n="";switch(t){case Ud:n="N is expected";break;case Qr:n="HyphenMinus is expected";break}this.error(n,this.tokenStart+e)}}function Wh(){let e=0,t=0,n=this.tokenType;for(;n===13||n===25;)n=this.lookupType(++e);if(n!==10)if(this.isDelim(ui,e)||this.isDelim(Qr,e)){t=this.isDelim(ui,e)?ui:Qr;do n=this.lookupType(++e);while(n===13||n===25);n!==10&&(this.skip(e),wl.call(this,ps))}else return null;return e>0&&this.skip(e),t===0&&(n=this.charCodeAt(this.tokenStart),n!==ui&&n!==Qr&&this.error("Number sign is expected")),wl.call(this,t!==0),t===Qr?"-"+this.consume(10):this.consume(10)}function Gh(){let e=this.tokenStart,t=null,n=null;if(this.tokenType===10)wl.call(this,OH),n=this.consume(10);else if(this.tokenType===1&&this.cmpChar(this.tokenStart,Qr))switch(t="-1",Sa.call(this,1,Ud),this.tokenEnd-this.tokenStart){case 2:this.next(),n=Wh.call(this);break;case 3:Sa.call(this,2,Qr),this.next(),this.skipSC(),wl.call(this,ps),n="-"+this.consume(10);break;default:Sa.call(this,2,Qr),jd.call(this,3,ps),this.next(),n=this.substrToCursor(e+2)}else if(this.tokenType===1||this.isDelim(ui)&&this.lookupType(1)===1){let r=0;switch(t="1",this.isDelim(ui)&&(r=1,this.next()),Sa.call(this,0,Ud),this.tokenEnd-this.tokenStart){case 1:this.next(),n=Wh.call(this);break;case 2:Sa.call(this,1,Qr),this.next(),this.skipSC(),wl.call(this,ps),n="-"+this.consume(10);break;default:Sa.call(this,1,Qr),jd.call(this,2,ps),this.next(),n=this.substrToCursor(e+r+1)}}else if(this.tokenType===12){let r=this.charCodeAt(this.tokenStart),o=r===ui||r===Qr,i=this.tokenStart+o;for(;i<this.tokenEnd&&vn(this.charCodeAt(i));i++);i===this.tokenStart+o&&this.error("Integer is expected",this.tokenStart+o),Sa.call(this,i-this.tokenStart,Ud),t=this.substring(e,i),i+1===this.tokenEnd?(this.next(),n=Wh.call(this)):(Sa.call(this,i-this.tokenStart+1,Qr),i+2===this.tokenEnd?(this.next(),this.skipSC(),wl.call(this,ps),n="-"+this.consume(10)):(jd.call(this,i-this.tokenStart+2,ps),this.next(),n=this.substrToCursor(i+1)))}else this.error();return t!==null&&t.charCodeAt(0)===ui&&(t=t.substr(1)),n!==null&&n.charCodeAt(0)===ui&&(n=n.substr(1)),{type:"AnPlusB",loc:this.getLocation(e,this.tokenStart),a:t,b:n}}function UH(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 ui,Qr,Ud,ps,OH,$H,HH,Yh=$(()=>{"use strict";po();ui=43,Qr=45,Ud=110,ps=!0,OH=!1;$H="AnPlusB",HH={a:[String,null],b:[String,null]}});var Xh={};ze(Xh,{generate:()=>qH,name:()=>VH,parse:()=>Kh,structure:()=>GH,walkContext:()=>WH});function kE(){return this.Raw(this.consumeUntilLeftCurlyBracketOrSemicolon,!0)}function jH(){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 Kh(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),kE):o=kE.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(jH.call(this));break}return{type:"Atrule",loc:this.getLocation(t,this.tokenStart),name:n,prelude:o,block:i}}function qH(e){this.token(3,"@"+e.name),e.prelude!==null&&this.node(e.prelude),e.block?this.node(e.block):this.token(17,";")}var VH,WH,GH,Jh=$(()=>{"use strict";VH="Atrule",WH="atrule",GH={name:String,prelude:["AtrulePrelude","Raw",null],block:["Block",null]}});var Zh={};ze(Zh,{generate:()=>JH,name:()=>YH,parse:()=>Qh,structure:()=>XH,walkContext:()=>KH});function Qh(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 JH(e){this.children(e)}var YH,KH,XH,e1=$(()=>{"use strict";YH="AtrulePrelude",KH="atrulePrelude",XH={children:[[]]}});var r1={};ze(r1,{generate:()=>iU,name:()=>rU,parse:()=>n1,structure:()=>oU});function tU(){this.eof&&this.error("Unexpected end of input");let e=this.tokenStart,t=!1;return this.isDelim(CE)?(t=!0,this.next()):this.isDelim(t1)||this.eat(1),this.isDelim(t1)?this.charCodeAt(this.tokenStart+1)!==Vd?(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 nU(){let e=this.tokenStart,t=this.charCodeAt(e);return t!==Vd&&t!==eU&&t!==ZH&&t!==QH&&t!==CE&&t!==t1&&this.error("Attribute selector (=, ~=, ^=, $=, *=, |=) is expected"),this.next(),t!==Vd&&(this.isDelim(Vd)||this.error("Equal sign is expected"),this.next()),this.substrToCursor(e)}function n1(){let e=this.tokenStart,t,n=null,r=null,o=null;return this.eat(19),this.skipSC(),t=tU.call(this),this.skipSC(),this.tokenType!==20&&(this.tokenType!==1&&(n=nU.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 iU(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 QH,CE,Vd,ZH,t1,eU,rU,oU,o1=$(()=>{"use strict";QH=36,CE=42,Vd=61,ZH=94,t1=124,eU=126;rU="AttributeSelector",oU={name:"Identifier",matcher:[String,null],value:["String","Identifier",null],flags:[String,null]}});var a1={};ze(a1,{generate:()=>pU,name:()=>lU,parse:()=>i1,structure:()=>uU,walkContext:()=>cU});function IE(){return this.Raw(null,!0)}function EE(){return this.parseWithFallback(this.Rule,IE)}function TE(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function sU(){if(this.tokenType===17)return TE.call(this,this.tokenIndex);let e=this.parseWithFallback(this.Declaration,TE);return this.tokenType===17&&this.next(),e}function i1(e){let t=e?sU:EE,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),IE));break;default:e&&this.isDelim(aU)?r.push(EE.call(this)):r.push(t.call(this))}return this.eof||this.eat(24),{type:"Block",loc:this.getLocation(n,this.tokenStart),children:r}}function pU(e){this.token(23,"{"),this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")}),this.token(24,"}")}var aU,lU,cU,uU,s1=$(()=>{"use strict";aU=38;lU="Block",cU="block",uU={children:[["Atrule","Rule","Declaration"]]}});var c1={};ze(c1,{generate:()=>gU,name:()=>dU,parse:()=>l1,structure:()=>fU});function l1(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 gU(e){this.token(9,"["),this.children(e),this.token(9,"]")}var dU,fU,u1=$(()=>{"use strict";dU="Brackets",fU={children:[[]]}});var d1={};ze(d1,{generate:()=>xU,name:()=>mU,parse:()=>p1,structure:()=>hU});function p1(){let e=this.tokenStart;return this.eat(15),{type:"CDC",loc:this.getLocation(e,this.tokenStart)}}function xU(){this.token(15,"-->")}var mU,hU,f1=$(()=>{"use strict";mU="CDC",hU=[]});var m1={};ze(m1,{generate:()=>wU,name:()=>yU,parse:()=>g1,structure:()=>bU});function g1(){let e=this.tokenStart;return this.eat(14),{type:"CDO",loc:this.getLocation(e,this.tokenStart)}}function wU(){this.token(14,"<!--")}var yU,bU,h1=$(()=>{"use strict";yU="CDO",bU=[]});var y1={};ze(y1,{generate:()=>CU,name:()=>SU,parse:()=>x1,structure:()=>kU});function x1(){return this.eatDelim(vU),{type:"ClassSelector",loc:this.getLocation(this.tokenStart-1,this.tokenEnd),name:this.consume(1)}}function CU(e){this.token(9,"."),this.token(1,e.name)}var vU,SU,kU,b1=$(()=>{"use strict";vU=46,SU="ClassSelector",kU={name:String}});var v1={};ze(v1,{generate:()=>FU,name:()=>RU,parse:()=>w1,structure:()=>AU});function w1(){let e=this.tokenStart,t;switch(this.tokenType){case 13:t=" ";break;case 9:switch(this.charCodeAt(this.tokenStart)){case TU:case EU:case IU:this.next();break;case RE:this.next(),this.eatIdent("deep"),this.eatDelim(RE);break;default:this.error("Combinator is expected")}t=this.substrToCursor(e);break}return{type:"Combinator",loc:this.getLocation(e,this.tokenStart),name:t}}function FU(e){this.tokenize(e.name)}var EU,RE,TU,IU,RU,AU,S1=$(()=>{"use strict";EU=43,RE=47,TU=62,IU=126,RU="Combinator",AU={name:String}});var C1={};ze(C1,{generate:()=>BU,name:()=>_U,parse:()=>k1,structure:()=>LU});function k1(){let e=this.tokenStart,t=this.tokenEnd;return this.eat(25),t-e+2>=2&&this.charCodeAt(t-2)===MU&&this.charCodeAt(t-1)===PU&&(t-=2),{type:"Comment",loc:this.getLocation(e,this.tokenStart),value:this.substring(e+2,t)}}function BU(e){this.token(25,"/*"+e.value+"*/")}var MU,PU,_U,LU,E1=$(()=>{"use strict";MU=42,PU=47,_U="Comment",LU={value:String}});var I1={};ze(I1,{generate:()=>$U,name:()=>DU,parse:()=>T1,structure:()=>NU});function AE(e){return this.lookupTypeNonSC(1)===1&&zU.has(this.lookupTypeNonSC(2))?this.Feature(e):this.FeatureRange(e)}function T1(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(()=>OU[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 $U(e){e.children.forEach(t=>{t.type==="Condition"?(this.token(21,"("),this.node(t),this.token(22,")")):this.node(t)})}var zU,DU,NU,OU,R1=$(()=>{"use strict";zU=new Set([16,22,0]),DU="Condition",NU={kind:String,children:[["Identifier","Feature","FeatureFunction","FeatureRange","SupportsDeclaration"]]};OU={media:AE,container:AE,supports(){return this.SupportsDeclaration()}}});var F1={};ze(F1,{generate:()=>QU,name:()=>KU,parse:()=>A1,structure:()=>JU,walkContext:()=>XU});function GU(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!0)}function qU(){return this.Raw(this.consumeUntilExclamationMarkOrSemicolon,!1)}function YU(){let e=this.tokenIndex,t=this.Value();return t.type!=="Raw"&&this.eof===!1&&this.tokenType!==17&&this.isDelim(ME)===!1&&this.isBalanceEdge(e)===!1&&this.error(),t}function A1(){let e=this.tokenStart,t=this.tokenIndex,n=ZU.call(this),r=Fd(n),o=r?this.parseCustomProperty:this.parseValue,i=r?qU:GU,a=!1,s;this.skipSC(),this.eat(16);let c=this.tokenIndex;if(r||this.skipSC(),o?s=this.parseWithFallback(YU,i):s=i.call(this,this.tokenIndex),r&&s.type==="Value"&&s.children.isEmpty){for(let u=c-this.tokenIndex;u<=0;u++)if(this.lookupType(u)===13){s.children.appendData({type:"WhiteSpace",loc:null,value:" "});break}}return this.isDelim(ME)&&(a=ej.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:a,property:n,value:s}}function QU(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 ZU(){let e=this.tokenStart;if(this.tokenType===9)switch(this.charCodeAt(this.tokenStart)){case VU:case UU:case WU:case HU:case jU:this.next();break;case FE:this.next(),this.isDelim(FE)&&this.next();break}return this.tokenType===4?this.eat(4):this.eat(1),this.substrToCursor(e)}function ej(){this.eat(9),this.skipSC();let e=this.consume(1);return e==="important"?!0:e}var ME,HU,UU,jU,VU,WU,FE,KU,XU,JU,M1=$(()=>{"use strict";Md();ME=33,HU=35,UU=36,jU=38,VU=42,WU=43,FE=47;KU="Declaration",XU="declaration",JU={important:[Boolean,String],property:String,value:["Value","Raw"]}});var L1={};ze(L1,{generate:()=>oj,name:()=>nj,parse:()=>_1,structure:()=>rj});function P1(){return this.Raw(this.consumeUntilSemicolonIncluded,!0)}function _1(){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),P1));break;default:this.isDelim(tj)?e.push(this.parseWithFallback(this.Rule,P1)):e.push(this.parseWithFallback(this.Declaration,P1))}return{type:"DeclarationList",loc:this.getLocationFromList(e),children:e}}function oj(e){this.children(e,t=>{t.type==="Declaration"&&this.token(17,";")})}var tj,nj,rj,B1=$(()=>{"use strict";tj=38;nj="DeclarationList",rj={children:[["Declaration","Atrule","Rule"]]}});var D1={};ze(D1,{generate:()=>sj,name:()=>ij,parse:()=>z1,structure:()=>aj});function z1(){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 sj(e){this.token(12,e.value+e.unit)}var ij,aj,N1=$(()=>{"use strict";ij="Dimension",aj={value:String,unit:String}});var $1={};ze($1,{generate:()=>pj,name:()=>cj,parse:()=>O1,structure:()=>uj});function O1(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(lj)&&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 pj(e){this.token(21,"("),this.token(1,e.name),e.value!==null&&(this.token(16,":"),this.node(e.value)),this.token(22,")")}var lj,cj,uj,H1=$(()=>{"use strict";lj=47,cj="Feature",uj={kind:String,name:String,value:["Identifier","Number","Dimension","Ratio","Function",null]}});var j1={};ze(j1,{generate:()=>mj,name:()=>dj,parse:()=>U1,structure:()=>fj});function gj(e,t){let r=(this.features[e]||{})[t];return typeof r!="function"&&this.error(`Unknown feature ${t}()`),r}function U1(e="unknown"){let t=this.tokenStart,n=this.consumeFunctionName(),r=gj.call(this,e,n.toLowerCase());this.skipSC();let o=this.parseWithFallback(()=>{let i=this.tokenIndex,a=r.call(this);return this.eof===!1&&this.isBalanceEdge(i)===!1&&this.error(),a},()=>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 mj(e){this.token(2,e.feature+"("),this.node(e.value),this.token(22,")")}var dj,fj,V1=$(()=>{"use strict";dj="FeatureFunction",fj={kind:String,feature:String,value:["Declaration","Selector"]}});var q1={};ze(q1,{generate:()=>wj,name:()=>yj,parse:()=>G1,structure:()=>bj});function W1(){switch(this.skipSC(),this.tokenType){case 10:return this.isDelim(PE,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(PE)&&this.error(),e},()=>this.Ratio());default:this.error("Number, dimension, ratio or identifier is expected")}}function LE(e){if(this.skipSC(),this.isDelim(hj)||this.isDelim(xj)){let t=this.source[this.tokenStart];return this.next(),this.isDelim(_E)?(this.next(),t+"="):t}if(this.isDelim(_E))return"=";this.error(`Expected ${e?'":", ':""}"<", ">", "=" or ")"`)}function G1(e="unknown"){let t=this.tokenStart;this.skipSC(),this.eat(21);let n=W1.call(this),r=LE.call(this,n.type==="Identifier"),o=W1.call(this),i=null,a=null;return this.lookupNonWSType(0)!==22&&(i=LE.call(this),a=W1.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:a}}function wj(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 PE,hj,_E,xj,yj,bj,Y1=$(()=>{"use strict";PE=47,hj=60,_E=61,xj=62,yj="FeatureRange",bj={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 X1={};ze(X1,{generate:()=>Cj,name:()=>vj,parse:()=>K1,structure:()=>kj,walkContext:()=>Sj});function K1(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 Cj(e){this.token(2,e.name+"("),this.children(e),this.token(22,")")}var vj,Sj,kj,J1=$(()=>{"use strict";vj="Function",Sj="function",kj={name:String,children:[[]]}});var Z1={};ze(Z1,{generate:()=>Ij,name:()=>Ej,parse:()=>Q1,structure:()=>Tj});function Q1(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 Ij(e){e.function?this.token(2,e.function+"("):this.token(21,"("),this.children(e),this.token(22,")")}var Ej,Tj,ex=$(()=>{"use strict";Ej="GeneralEnclosed",Tj={kind:String,function:[String,null],children:[[]]}});var nx={};ze(nx,{generate:()=>Mj,name:()=>Aj,parse:()=>tx,structure:()=>Fj,xxx:()=>Rj});function tx(){let e=this.tokenStart;return this.eat(4),{type:"Hash",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e+1)}}function Mj(e){this.token(4,"#"+e.value)}var Rj,Aj,Fj,rx=$(()=>{"use strict";Rj="XXX",Aj="Hash",Fj={value:String}});var ix={};ze(ix,{generate:()=>Lj,name:()=>Pj,parse:()=>ox,structure:()=>_j});function ox(){return{type:"Identifier",loc:this.getLocation(this.tokenStart,this.tokenEnd),name:this.consume(1)}}function Lj(e){this.token(1,e.name)}var Pj,_j,ax=$(()=>{"use strict";Pj="Identifier",_j={name:String}});var lx={};ze(lx,{generate:()=>Dj,name:()=>Bj,parse:()=>sx,structure:()=>zj});function sx(){let e=this.tokenStart;return this.eat(4),{type:"IdSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e+1)}}function Dj(e){this.token(9,"#"+e.name)}var Bj,zj,cx=$(()=>{"use strict";Bj="IdSelector",zj={name:String}});var px={};ze(px,{generate:()=>Hj,name:()=>Oj,parse:()=>ux,structure:()=>$j});function ux(){let e=this.tokenStart,t=this.consume(1);for(;this.isDelim(Nj);)this.eat(9),t+="."+this.consume(1);return{type:"Layer",loc:this.getLocation(e,this.tokenStart),name:t}}function Hj(e){this.tokenize(e.name)}var Nj,Oj,$j,dx=$(()=>{"use strict";Nj=46,Oj="Layer",$j={name:String}});var gx={};ze(gx,{generate:()=>Vj,name:()=>Uj,parse:()=>fx,structure:()=>jj});function fx(){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 Vj(e){this.children(e,()=>this.token(18,","))}var Uj,jj,mx=$(()=>{"use strict";Uj="LayerList",jj={children:[["Layer"]]}});var xx={};ze(xx,{generate:()=>qj,name:()=>Wj,parse:()=>hx,structure:()=>Gj});function hx(){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 qj(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 Wj,Gj,yx=$(()=>{"use strict";Wj="MediaQuery",Gj={modifier:[String,null],mediaType:[String,null],condition:["Condition",null]}});var wx={};ze(wx,{generate:()=>Xj,name:()=>Yj,parse:()=>bx,structure:()=>Kj});function bx(){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 Xj(e){this.children(e,()=>this.token(18,","))}var Yj,Kj,vx=$(()=>{"use strict";Yj="MediaQueryList",Kj={children:[["MediaQuery"]]}});var kx={};ze(kx,{generate:()=>eV,name:()=>Qj,parse:()=>Sx,structure:()=>Zj});function Sx(){let e=this.tokenStart;return this.eatDelim(Jj),{type:"NestingSelector",loc:this.getLocation(e,this.tokenStart)}}function eV(){this.token(9,"&")}var Jj,Qj,Zj,Cx=$(()=>{"use strict";Jj=38,Qj="NestingSelector",Zj={}});var Tx={};ze(Tx,{generate:()=>rV,name:()=>tV,parse:()=>Ex,structure:()=>nV});function Ex(){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 rV(e){this.node(e.nth),e.selector!==null&&(this.token(1,"of"),this.node(e.selector))}var tV,nV,Ix=$(()=>{"use strict";tV="Nth",nV={nth:["AnPlusB","Identifier"],selector:["SelectorList",null]}});var Ax={};ze(Ax,{generate:()=>aV,name:()=>oV,parse:()=>Rx,structure:()=>iV});function Rx(){return{type:"Number",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consume(10)}}function aV(e){this.token(10,e.value)}var oV,iV,Fx=$(()=>{"use strict";oV="Number",iV={value:String}});var Px={};ze(Px,{generate:()=>cV,name:()=>sV,parse:()=>Mx,structure:()=>lV});function Mx(){let e=this.tokenStart;return this.next(),{type:"Operator",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function cV(e){this.tokenize(e.value)}var sV,lV,_x=$(()=>{"use strict";sV="Operator",lV={value:String}});var Bx={};ze(Bx,{generate:()=>dV,name:()=>uV,parse:()=>Lx,structure:()=>pV});function Lx(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 dV(e){this.token(21,"("),this.children(e),this.token(22,")")}var uV,pV,zx=$(()=>{"use strict";uV="Parentheses",pV={children:[[]]}});var Nx={};ze(Nx,{generate:()=>mV,name:()=>fV,parse:()=>Dx,structure:()=>gV});function Dx(){return{type:"Percentage",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:this.consumeNumber(11)}}function mV(e){this.token(11,e.value+"%")}var fV,gV,Ox=$(()=>{"use strict";fV="Percentage",gV={value:String}});var Hx={};ze(Hx,{generate:()=>bV,name:()=>hV,parse:()=>$x,structure:()=>yV,walkContext:()=>xV});function $x(){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 bV(e){this.token(16,":"),e.children===null?this.token(1,e.name):(this.token(2,e.name+"("),this.children(e),this.token(22,")"))}var hV,xV,yV,Ux=$(()=>{"use strict";hV="PseudoClassSelector",xV="function",yV={name:String,children:[["Raw"],null]}});var Vx={};ze(Vx,{generate:()=>kV,name:()=>wV,parse:()=>jx,structure:()=>SV,walkContext:()=>vV});function jx(){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 kV(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 wV,vV,SV,Wx=$(()=>{"use strict";wV="PseudoElementSelector",vV="function",SV={name:String,children:[["Raw"],null]}});var qx={};ze(qx,{generate:()=>TV,name:()=>CV,parse:()=>Gx,structure:()=>EV});function zE(){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 Gx(){let e=this.tokenStart,t=zE.call(this),n=null;return this.skipSC(),this.isDelim(BE)&&(this.eatDelim(BE),n=zE.call(this)),{type:"Ratio",loc:this.getLocation(e,this.tokenStart),left:t,right:n}}function TV(e){this.node(e.left),this.token(9,"/"),e.right?this.node(e.right):this.node(10,1)}var BE,CV,EV,Yx=$(()=>{"use strict";BE=47;CV="Ratio",EV={left:["Number","Function"],right:["Number","Function",null]}});var Xx={};ze(Xx,{generate:()=>FV,name:()=>RV,parse:()=>Kx,structure:()=>AV});function IV(){return this.tokenIndex>0&&this.lookupType(-1)===13?this.tokenIndex>1?this.getTokenStart(this.tokenIndex-1):this.firstCharOffset:this.tokenStart}function Kx(e,t){let n=this.getTokenStart(this.tokenIndex),r;return this.skipUntilBalanced(this.tokenIndex,e||this.consumeUntilBalanceEnd),t&&this.tokenStart>n?r=IV.call(this):r=this.tokenStart,{type:"Raw",loc:this.getLocation(n,r),value:this.substring(n,r)}}function FV(e){this.tokenize(e.value)}var RV,AV,Jx=$(()=>{"use strict";RV="Raw",AV={value:String}});var Zx={};ze(Zx,{generate:()=>BV,name:()=>PV,parse:()=>Qx,structure:()=>LV,walkContext:()=>_V});function DE(){return this.Raw(this.consumeUntilLeftCurlyBracket,!0)}function MV(){let e=this.SelectorList();return e.type!=="Raw"&&this.eof===!1&&this.tokenType!==23&&this.error(),e}function Qx(){let e=this.tokenIndex,t=this.tokenStart,n,r;return this.parseRulePrelude?n=this.parseWithFallback(MV,DE):n=DE.call(this,e),r=this.Block(!0),{type:"Rule",loc:this.getLocation(t,this.tokenStart),prelude:n,block:r}}function BV(e){this.node(e.prelude),this.node(e.block)}var PV,_V,LV,ey=$(()=>{"use strict";PV="Rule",_V="rule",LV={prelude:["SelectorList","Raw"],block:["Block"]}});var ny={};ze(ny,{generate:()=>NV,name:()=>zV,parse:()=>ty,structure:()=>DV});function ty(){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 NV(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 zV,DV,ry=$(()=>{"use strict";zV="Scope",DV={root:["SelectorList","Raw",null],limit:["SelectorList","Raw",null]}});var iy={};ze(iy,{generate:()=>HV,name:()=>OV,parse:()=>oy,structure:()=>$V});function oy(){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 HV(e){this.children(e)}var OV,$V,ay=$(()=>{"use strict";OV="Selector",$V={children:[["TypeSelector","IdSelector","ClassSelector","AttributeSelector","PseudoClassSelector","PseudoElementSelector","Combinator"]]}});var ly={};ze(ly,{generate:()=>WV,name:()=>UV,parse:()=>sy,structure:()=>VV,walkContext:()=>jV});function sy(){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 WV(e){this.children(e,()=>this.token(18,","))}var UV,jV,VV,cy=$(()=>{"use strict";UV="SelectorList",jV="selector",VV={children:[["Selector","Raw"]]}});function Wd(e){let t=e.length,n=e.charCodeAt(0),r=n===NE||n===OE?1:0,o=r===1&&t>1&&e.charCodeAt(t-1)===n?t-2:t-1,i="";for(let a=r;a<=o;a++){let s=e.charCodeAt(a);if(s===uy){if(a===o){a!==t-1&&(i=e.substr(a+1));break}if(s=e.charCodeAt(++a),Mr(uy,s)){let c=a-1,u=ji(e,c);a=u-1,i+=gd(e.substring(c+1,u))}else s===13&&e.charCodeAt(a+1)===10&&a++}else i+=e[a]}return i}function $E(e,t){let n=t?"'":'"',r=t?OE:NE,o="",i=!1;for(let a=0;a<e.length;a++){let s=e.charCodeAt(a);if(s===0){o+="\uFFFD";continue}if(s<=31||s===127){o+="\\"+s.toString(16),i=!0;continue}s===r||s===uy?(o+="\\"+e.charAt(a),i=!1):(i&&(Pr(s)||li(s))&&(o+=" "),o+=e.charAt(a),i=!1)}return n+o+n}var uy,NE,OE,Gd=$(()=>{"use strict";po();uy=92,NE=34,OE=39});var dy={};ze(dy,{generate:()=>YV,name:()=>GV,parse:()=>py,structure:()=>qV});function py(){return{type:"String",loc:this.getLocation(this.tokenStart,this.tokenEnd),value:Wd(this.consume(5))}}function YV(e){this.token(5,$E(e.value))}var GV,qV,fy=$(()=>{"use strict";Gd();GV="String",qV={value:String}});var my={};ze(my,{generate:()=>ZV,name:()=>XV,parse:()=>gy,structure:()=>QV,walkContext:()=>JV});function UE(){return this.Raw(null,!1)}function gy(){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)!==KV){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,UE);break;default:n=this.parseWithFallback(this.Rule,UE)}t.push(n)}return{type:"StyleSheet",loc:this.getLocation(e,this.tokenStart),children:t}}function ZV(e){this.children(e)}var KV,XV,JV,QV,hy=$(()=>{"use strict";KV=33;XV="StyleSheet",JV="stylesheet",QV={children:[["Comment","CDO","CDC","Atrule","Rule","Raw"]]}});var yy={};ze(yy,{generate:()=>nW,name:()=>eW,parse:()=>xy,structure:()=>tW});function xy(){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 nW(e){this.token(21,"("),this.node(e.declaration),this.token(22,")")}var eW,tW,by=$(()=>{"use strict";eW="SupportsDeclaration",tW={declaration:"Declaration"}});var Sy={};ze(Sy,{generate:()=>aW,name:()=>oW,parse:()=>vy,structure:()=>iW});function wy(){this.tokenType!==1&&this.isDelim(rW)===!1&&this.error("Identifier or asterisk is expected"),this.next()}function vy(){let e=this.tokenStart;return this.isDelim(jE)?(this.next(),wy.call(this)):(wy.call(this),this.isDelim(jE)&&(this.next(),wy.call(this))),{type:"TypeSelector",loc:this.getLocation(e,this.tokenStart),name:this.substrToCursor(e)}}function aW(e){this.tokenize(e.name)}var rW,jE,oW,iW,ky=$(()=>{"use strict";rW=42,jE=124;oW="TypeSelector",iW={name:String}});var Ty={};ze(Ty,{generate:()=>pW,name:()=>cW,parse:()=>Ey,structure:()=>uW});function Zc(e,t){let n=0;for(let r=this.tokenStart+e;r<this.tokenEnd;r++){let o=this.charCodeAt(r);if(o===WE&&t&&n!==0)return Zc.call(this,e+n+1,!1),-1;Pr(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 qd(e){let t=0;for(;this.isDelim(Cy);)++t>e&&this.error("Too many question marks"),this.next()}function sW(e){this.charCodeAt(this.tokenStart)!==e&&this.error((e===VE?"Plus sign":"Hyphen minus")+" is expected")}function lW(){let e=0;switch(this.tokenType){case 10:if(e=Zc.call(this,1,!0),this.isDelim(Cy)){qd.call(this,6-e);break}if(this.tokenType===12||this.tokenType===10){sW.call(this,WE),Zc.call(this,1,!1);break}break;case 12:e=Zc.call(this,1,!0),e>0&&qd.call(this,6-e);break;default:if(this.eatDelim(VE),this.tokenType===1){e=Zc.call(this,0,!0),e>0&&qd.call(this,6-e);break}if(this.isDelim(Cy)){this.next(),qd.call(this,5);break}this.error("Hex digit or question mark is expected")}}function Ey(){let e=this.tokenStart;return this.eatIdent("u"),lW.call(this),{type:"UnicodeRange",loc:this.getLocation(e,this.tokenStart),value:this.substrToCursor(e)}}function pW(e){this.tokenize(e.value)}var VE,WE,Cy,cW,uW,Iy=$(()=>{"use strict";po();VE=43,WE=45,Cy=63;cW="UnicodeRange",uW={value:String}});function qE(e){let t=e.length,n=4,r=e.charCodeAt(t-1)===GE?t-2:t-1,o="";for(;n<r&&li(e.charCodeAt(n));)n++;for(;n<r&&li(e.charCodeAt(r));)r--;for(let i=n;i<=r;i++){let a=e.charCodeAt(i);if(a===Ry){if(i===r){i!==t-1&&(o=e.substr(i+1));break}if(a=e.charCodeAt(++i),Mr(Ry,a)){let s=i-1,c=ji(e,s);i=c-1,o+=gd(e.substring(s+1,c))}else a===13&&e.charCodeAt(i+1)===10&&i++}else o+=e[i]}return o}function YE(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===dW||o===Ry||o===fW||o===gW||o===mW||o===GE?(t+="\\"+e.charAt(r),n=!1):(n&&Pr(o)&&(t+=" "),t+=e.charAt(r),n=!1)}return"url("+t+")"}var dW,Ry,fW,gW,mW,GE,Ay=$(()=>{"use strict";po();dW=32,Ry=92,fW=34,gW=39,mW=40,GE=41});var My={};ze(My,{generate:()=>yW,name:()=>hW,parse:()=>Fy,structure:()=>xW});function Fy(){let e=this.tokenStart,t;switch(this.tokenType){case 7:t=qE(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=Wd(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 yW(e){this.token(7,YE(e.value))}var hW,xW,Py=$(()=>{"use strict";Ay();Gd();hW="Url",xW={value:String}});var Ly={};ze(Ly,{generate:()=>vW,name:()=>bW,parse:()=>_y,structure:()=>wW});function _y(){let e=this.tokenStart,t=this.readSequence(this.scope.Value);return{type:"Value",loc:this.getLocation(e,this.tokenStart),children:t}}function vW(e){this.children(e)}var bW,wW,By=$(()=>{"use strict";bW="Value",wW={children:[[]]}});var Dy={};ze(Dy,{generate:()=>EW,name:()=>kW,parse:()=>zy,structure:()=>CW});function zy(){return this.eat(13),SW}function EW(e){this.token(13,e.value)}var SW,kW,CW,Ny=$(()=>{"use strict";SW=Object.freeze({type:"WhiteSpace",loc:null,value:" "}),kW="WhiteSpace",CW={value:String}});var eu={};ze(eu,{AnPlusB:()=>qh,Atrule:()=>Xh,AtrulePrelude:()=>Zh,AttributeSelector:()=>r1,Block:()=>a1,Brackets:()=>c1,CDC:()=>d1,CDO:()=>m1,ClassSelector:()=>y1,Combinator:()=>v1,Comment:()=>C1,Condition:()=>I1,Declaration:()=>F1,DeclarationList:()=>L1,Dimension:()=>D1,Feature:()=>$1,FeatureFunction:()=>j1,FeatureRange:()=>q1,Function:()=>X1,GeneralEnclosed:()=>Z1,Hash:()=>nx,IdSelector:()=>lx,Identifier:()=>ix,Layer:()=>px,LayerList:()=>gx,MediaQuery:()=>xx,MediaQueryList:()=>wx,NestingSelector:()=>kx,Nth:()=>Tx,Number:()=>Ax,Operator:()=>Px,Parentheses:()=>Bx,Percentage:()=>Nx,PseudoClassSelector:()=>Hx,PseudoElementSelector:()=>Vx,Ratio:()=>qx,Raw:()=>Xx,Rule:()=>Zx,Scope:()=>ny,Selector:()=>iy,SelectorList:()=>ly,String:()=>dy,StyleSheet:()=>my,SupportsDeclaration:()=>yy,TypeSelector:()=>Sy,UnicodeRange:()=>Ty,Url:()=>My,Value:()=>Ly,WhiteSpace:()=>Dy});var Oy=$(()=>{"use strict";Yh();Jh();e1();o1();s1();u1();f1();h1();b1();S1();E1();R1();M1();B1();N1();H1();V1();Y1();J1();ex();rx();ax();cx();dx();mx();yx();vx();Cx();Ix();Fx();_x();zx();Ox();Ux();Wx();Yx();Jx();ey();ry();ay();cy();fy();hy();by();ky();Iy();Py();By();Ny()});var XE,JE=$(()=>{"use strict";Pd();SE();Oy();XE={generic:!0,cssWideKeywords:ml,...vE,node:eu}});function tu(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,FW)&&this.cmpChar(this.tokenStart+1,QE)?this.UnicodeRange():this.Identifier();case 9:{let t=this.charCodeAt(this.tokenStart);if(t===AW||t===IW||t===QE||t===RW)return this.Operator();t===TW&&this.error("Hex or identifier is expected",this.tokenStart+1);break}}}var TW,IW,QE,RW,AW,FW,$y=$(()=>{"use strict";TW=35,IW=42,QE=43,RW=45,AW=47,FW=117});var ZE,eT=$(()=>{"use strict";$y();ZE={getNode:tu}});function OW(e,t){t.last!==null&&t.last.type!=="Combinator"&&e!==null&&e.type!=="Combinator"&&t.push({type:"Combinator",loc:null,name:" "})}function $W(){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)===tT&&this.error("Identifier is expected",this.tokenStart+1);break;case 9:{switch(this.charCodeAt(this.tokenStart)){case LW:case zW:case NW:case BW:return this.Combinator();case tT:return this.ClassSelector();case _W:case DW:return this.TypeSelector();case MW:return this.IdSelector();case PW:return this.NestingSelector()}break}}}var MW,PW,_W,LW,BW,tT,zW,DW,NW,nT,rT=$(()=>{"use strict";MW=35,PW=38,_W=42,LW=43,BW=47,tT=46,zW=62,DW=124,NW=126;nT={onWhiteSpace:OW,getNode:$W}});function oT(){return this.createSingleNodeList(this.Raw(null,!1))}var iT=$(()=>{"use strict"});function aT(){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 sT=$(()=>{"use strict"});function lT(e){return e!==null&&e.type==="Operator"&&(e.value[e.value.length-1]==="-"||e.value[e.value.length-1]==="+")}var cT,uT=$(()=>{"use strict";$y();iT();sT();cT={getNode:tu,onWhiteSpace(e,t){lT(e)&&(e.value=" "+e.value),lT(t.last)&&(t.last.value+=" ")},expression:oT,var:aT}});var Hy={};ze(Hy,{AtrulePrelude:()=>ZE,Selector:()=>nT,Value:()=>cT});var pT=$(()=>{"use strict";eT();rT();uT()});var HW,dT,fT=$(()=>{"use strict";HW=new Set(["none","and","not","or"]),dT={parse:{prelude(){let e=this.createList();if(this.tokenType===1){let t=this.substring(this.tokenStart,this.tokenEnd);HW.has(t.toLowerCase())||e.push(this.Identifier())}return e.push(this.Condition("container")),e},block(e=!1){return this.Block(e)}}}});var gT,mT=$(()=>{"use strict";gT={parse:{prelude:null,block(){return this.Block(!0)}}}});function Uy(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 hT,xT,yT=$(()=>{"use strict";hT={layer(){this.skipSC();let e=this.createList(),t=Uy.call(this,this.Layer);return(t.type!=="Raw"||t.value!=="")&&e.push(t),e},supports(){this.skipSC();let e=this.createList(),t=Uy.call(this,this.Declaration,()=>Uy.call(this,()=>this.Condition("supports")));return(t.type!=="Raw"||t.value!=="")&&e.push(t),e}},xT={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,hT)),this.skipSC(),this.tokenType===2&&this.cmpStr(this.tokenStart,this.tokenEnd,"supports(")&&e.push(this.Function(null,hT)),(this.lookupNonWSType(0)===1||this.lookupNonWSType(0)===21)&&e.push(this.MediaQueryList()),e},block:null}}});var bT,wT=$(()=>{"use strict";bT={parse:{prelude(){return this.createSingleNodeList(this.LayerList())},block(){return this.Block(!1)}}}});var vT,ST=$(()=>{"use strict";vT={parse:{prelude(){return this.createSingleNodeList(this.MediaQueryList())},block(e=!1){return this.Block(e)}}}});var kT,CT=$(()=>{"use strict";kT={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var ET,TT=$(()=>{"use strict";ET={parse:{prelude(){return this.createSingleNodeList(this.SelectorList())},block(){return this.Block(!0)}}}});var IT,RT=$(()=>{"use strict";IT={parse:{prelude(){return this.createSingleNodeList(this.Scope())},block(e=!1){return this.Block(e)}}}});var AT,FT=$(()=>{"use strict";AT={parse:{prelude:null,block(e=!1){return this.Block(e)}}}});var MT,PT=$(()=>{"use strict";MT={parse:{prelude(){return this.createSingleNodeList(this.Condition("supports"))},block(e=!1){return this.Block(e)}}}});var _T,LT=$(()=>{"use strict";fT();mT();yT();wT();ST();CT();TT();RT();FT();PT();_T={container:dT,"font-face":gT,import:xT,layer:bT,media:vT,nest:kT,page:ET,scope:IT,"starting-style":AT,supports:MT}});function BT(){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 zT=$(()=>{"use strict"});var ds,jy,UW,jW,Yd,DT,NT=$(()=>{"use strict";zT();ds={parse(){return this.createSingleNodeList(this.SelectorList())}},jy={parse(){return this.createSingleNodeList(this.Selector())}},UW={parse(){return this.createSingleNodeList(this.Identifier())}},jW={parse:BT},Yd={parse(){return this.createSingleNodeList(this.Nth())}},DT={dir:UW,has:ds,lang:jW,matches:ds,is:ds,"-moz-any":ds,"-webkit-any":ds,where:ds,not:ds,"nth-child":Yd,"nth-last-child":Yd,"nth-last-of-type":Yd,"nth-of-type":Yd,slotted:jy,host:jy,"host-context":jy}});var Vy={};ze(Vy,{AnPlusB:()=>Gh,Atrule:()=>Kh,AtrulePrelude:()=>Qh,AttributeSelector:()=>n1,Block:()=>i1,Brackets:()=>l1,CDC:()=>p1,CDO:()=>g1,ClassSelector:()=>x1,Combinator:()=>w1,Comment:()=>k1,Condition:()=>T1,Declaration:()=>A1,DeclarationList:()=>_1,Dimension:()=>z1,Feature:()=>O1,FeatureFunction:()=>U1,FeatureRange:()=>G1,Function:()=>K1,GeneralEnclosed:()=>Q1,Hash:()=>tx,IdSelector:()=>sx,Identifier:()=>ox,Layer:()=>ux,LayerList:()=>fx,MediaQuery:()=>hx,MediaQueryList:()=>bx,NestingSelector:()=>Sx,Nth:()=>Ex,Number:()=>Rx,Operator:()=>Mx,Parentheses:()=>Lx,Percentage:()=>Dx,PseudoClassSelector:()=>$x,PseudoElementSelector:()=>jx,Ratio:()=>Gx,Raw:()=>Kx,Rule:()=>Qx,Scope:()=>ty,Selector:()=>oy,SelectorList:()=>sy,String:()=>py,StyleSheet:()=>gy,SupportsDeclaration:()=>xy,TypeSelector:()=>vy,UnicodeRange:()=>Ey,Url:()=>Fy,Value:()=>_y,WhiteSpace:()=>zy});var OT=$(()=>{"use strict";Yh();Jh();e1();o1();s1();u1();f1();h1();b1();S1();E1();R1();M1();B1();N1();H1();V1();Y1();J1();ex();rx();ax();cx();dx();mx();yx();vx();Cx();Ix();Fx();_x();zx();Ox();Ux();Wx();Yx();Jx();ey();ry();ay();cy();fy();hy();by();ky();Iy();Py();By();Ny()});var $T,HT=$(()=>{"use strict";pT();LT();NT();OT();$T={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:Hy,atrule:_T,pseudo:DT,node:Vy}});var UT,jT=$(()=>{"use strict";Oy();UT={node:eu}});var VT,WT=$(()=>{"use strict";wE();JE();HT();jT();VT=bE({...XE,...$T,...UT})});var GT=$(()=>{"use strict"});var qT=$(()=>{"use strict"});var jye,YT,Vye,Wye,Gye,KT,qye,Yye,Kye,Xye,Jye,Qye,XT=$(()=>{"use strict";WT();GT();Ph();Md();qT();Gd();Ay();({tokenize:jye,parse:YT,generate:Vye,lexer:Wye,createLexer:Gye,walk:KT,find:qye,findLast:Yye,findAll:Kye,toPlainObject:Xye,fromPlainObject:Jye,fork:Qye}=VT)});function qW(e){return e.toLowerCase().replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function QT(e){try{let t=YT(e.trim(),{context:"value"}),n=[];return KT(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 YW(e,t){let n=qW(e);if(!GW.has(n))return t;let r=QT(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 JT(e,t){let n=t.trim();if(!n)return"";let r=YW(e,n);return QT(r).map(i=>i==="0"?"0px":i).join(" ")}function ZT(e,t,n){let r=JT(e,t),o=JT(e,n);return r!==""&&o!==""&&r===o}var GW,eI=$(()=>{"use strict";XT();GW=new Set(["padding","margin","border-radius","borderradius","inset","border-width","borderwidth"])});function KW(e){let t=e.toLowerCase();return t.length===4?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`:t}function XW(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 tI(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=XW(n[0]);if(i)return i}let r=t.match(/#([0-9a-fA-F]{3,8})/);if(r)return KW(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 fs(e,t,n){if(!e||!t)return!1;let r=String(e),o=String(t),i=r.toLowerCase(),a=o.toLowerCase(),s=i.includes("none"),c=a.includes("none");if(s!==c)return!1;let u=/\b(fill|stroke)\s*:/i,l=u.test(r),d=u.test(o);if(l!==d)return!1;let f=tI(r),p=tI(o);return!!(f===p||n&&ZT(n,r,o))}var Wy=$(()=>{"use strict";eI()});function Gy(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 JW(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=c=>c.endsWith("%")?Math.round(parseFloat(c)/100*255):Math.round(parseFloat(c)),o=r(n[0]),i=r(n[1]),a=r(n[2]);if([o,i,a].some(c=>isNaN(c)))return null;let s=c=>Math.max(0,Math.min(255,c));return[s(o),s(i),s(a)]}function QW(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)),a=0,s=0,c=0;o<1?[a,s,c]=[r,i,0]:o<2?[a,s,c]=[i,r,0]:o<3?[a,s,c]=[0,r,i]:o<4?[a,s,c]=[0,i,r]:o<5?[a,s,c]=[i,0,r]:[a,s,c]=[r,0,i];let u=n-r/2;return[Math.round((a+u)*255),Math.round((s+u)*255),Math.round((c+u)*255)]}function ZW(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(a=>isNaN(a))?null:QW(r,o/100,i/100)}function tG(e){return eG[e.trim().toLowerCase()]??null}function nI(e){return e?Gy(e)??JW(e)??ZW(e)??qy(e)??tG(e):null}function qy(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),a=i(n),s=i(r),c=i(o),u=1.2249*a-.2247*s+0*c,l=-.042*a+1.0419*s+0*c,d=-.0197*a-.0786*s+1.0983*c,f=p=>{let g=Math.max(0,Math.min(1,p));return g<=.0031308?12.92*g:1.055*Math.pow(g,1/2.4)-.055};return[Math.round(f(u)*255),Math.round(f(l)*255),Math.round(f(d)*255)]}function rI(e,t,n){let r=v=>{let h=v/255;return h<=.04045?h/12.92:Math.pow((h+.055)/1.055,2.4)},o=r(e),i=r(t),a=r(n),s=o*.4124564+i*.3575761+a*.1804375,c=o*.2126729+i*.7151522+a*.072175,u=o*.0193339+i*.119192+a*.9503041,l=.95047,d=1,f=1.08883,p=v=>v>.008856?Math.cbrt(v):7.787*v+16/116,g=p(s/l),m=p(c/d),C=p(u/f);return[116*m-16,500*(g-m),200*(m-C)]}function oI(e,t){let[n,r,o]=rI(...e),[i,a,s]=rI(...t),c=(n+i)/2,u=Math.sqrt(r*r+o*o),l=Math.sqrt(a*a+s*s),d=(u+l)/2,f=.5*(1-Math.sqrt(Math.pow(d,7)/(Math.pow(d,7)+Math.pow(25,7)))),p=(1+f)*r,g=(1+f)*a,m=Math.sqrt(p*p+o*o),C=Math.sqrt(g*g+s*s),v=(m+C)/2,h=(Math.atan2(o,p)*180/Math.PI+360)%360,M=(Math.atan2(s,g)*180/Math.PI+360)%360,L=M-h;Math.abs(L)>180&&(L-=Math.sign(L)*360);let z=i-n,A=C-m,D=2*Math.sqrt(m*C)*Math.sin(L*Math.PI/360),y=Math.abs(h-M)>180?(h+M+360)/2:(h+M)/2,k=1-.17*Math.cos((y-30)*Math.PI/180)+.24*Math.cos(2*y*Math.PI/180)+.32*Math.cos((3*y+6)*Math.PI/180)-.2*Math.cos((4*y-63)*Math.PI/180),T=1+.015*Math.pow(c-50,2)/Math.sqrt(20+Math.pow(c-50,2)),F=1+.045*v,S=1+.015*v*k,x=-2*Math.sqrt(Math.pow(v,7)/(Math.pow(v,7)+Math.pow(25,7)))*Math.sin(60*Math.exp(-Math.pow((y-275)/25,2))*Math.PI/180);return Math.sqrt(Math.pow(z/T,2)+Math.pow(A/F,2)+Math.pow(D/S,2)+x*(A/F)*(D/S))}function iI(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=Gy(r)??Gy(o),a=qy(r)??qy(o);return!i||!a||r===o?!1:oI(i,a)<5}function nu(e){let t=String(e.expected??e.suggestedValue??""),n=String(e.actual??e.currentValue??"");if(!t||!n||t===n)return null;let r=nI(t),o=nI(n);return!r||!o?null:oI(r,o)}function ru(e){let t=e.severity||"minor";if(t==="minor")return t;if(iI(e))return"minor";let n=nu(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)),a=(e.type||"").toLowerCase();if(!(r.some(p=>i.has(p))||o.some(p=>a===p)))return t;let c=String(e.expected||e.suggestedValue||""),u=String(e.actual||e.currentValue||""),l=parseFloat(c.replace(/[^0-9.-]/g,"")),d=parseFloat(u.replace(/[^0-9.-]/g,""));if(isNaN(l)||isNaN(d))return t;let f=Math.abs(l-d);return f<5?"minor":f<10&&t==="critical"?"major":t}function Kd(e,t,n){return e>0?"D":t>0?"C":n>0?"B":"A"}function Xd(e){let t=e.filter(n=>!n.dismissed).map(n=>ru(n));return Kd(t.filter(n=>n==="critical").length,t.filter(n=>n==="major").length,t.filter(n=>n==="minor").length)}function Ki(e,t,n){let r=100-n*1-t*3-e*10,o=ou[Kd(e,t,n)];return Math.max(0,Math.min(o,r))}var eG,ou,Yy=$(()=>{"use strict";eG={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]};ou={A:100,B:99,C:89,D:69}});function vl(e,t={}){if(e==null)return"";let n=String(e).split(",")[0].trim().replace(/['"]/g,"").toLowerCase();return t.stripSeparators&&(n=n.replace(/[\s_-]/g,"")),n}function lI(e,t){let n=vl(e,{stripSeparators:!0}),r=vl(t,{stripSeparators:!0});return!n||!r||n===r?!1:nG.some(o=>o.has(n)&&o.has(r))}function sI(e){if(e==null)return null;let t=String(e).trim().toLowerCase();if(!t)return null;let n=t.replace(/[\s_-]/g,"");if(n in aI)return aI[n];let r=parseFloat(t.replace(/[^0-9.-]/g,""));return isNaN(r)?null:r}function cI(e,t){let n=sI(e),r=sI(t);return n==null||r==null?!1:Math.round(n/100)===Math.round(r/100)}var nG,aI,Jd=$(()=>{"use strict";nG=[new Set(["applesystem","blinkmacsystemfont","systemui","webkitsystemfont","sfpro","sfprotext","sfprodisplay","sanfrancisco","sanfranciscopro","sanfranciscotext","sanfranciscodisplay"])];aI={thin:100,hairline:100,extralight:200,ultralight:200,light:300,normal:400,regular:400,book:400,medium:500,semibold:600,demibold:600,demi:600,bold:700,extrabold:800,ultrabold:800,black:900,heavy:900}});function gI(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=a=>/^#[0-9a-f]{3,8}$/i.test(a)||a.includes("rgb")||["white","black","red","blue","green","orange","yellow","transparent"].includes(a);return!!(i(r)||i(o)||e.relatedProperties?.some(a=>{let s=a.property?.toLowerCase()||"";return s.includes("color")||s.includes("fill")||s.includes("background")}))}function sG(e){if(!gI(e))return!1;let t=nu(e);return t!==null&&t<2}function uI(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 lG(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",a=t.includes("gap")||o.includes("gap");return i&&a}function mI(e){return cG.has(e?.toLowerCase()||"")}function uG(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&&gI(n)||uI(r)||uI(o)||n&&lG(n))return!1;let i=parseFloat(r),a=parseFloat(o);if(isNaN(i)||isNaN(a))return!1;let s=Math.abs(i-a);return r.includes("px")||o.includes("px")?mI(n?.property)?s<dI:s<pI:r.includes("%")||o.includes("%")?s<1:!1}function pG(e){let t=`${e.description||""} ${e.title||""} ${e.suggestedFix||""}`.toLowerCase();if(aG.some(a=>t.includes(a))||!oG.some(a=>t.includes(a)))return!1;let o=e.expected||e.suggestedValue,i=e.actual||e.currentValue;return!(o&&i&&!fs(o,i,e.property))}function dG(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 a=`${e.description||""} ${e.title||""}`.toLowerCase();return a.includes("container")||a.includes("svg ")||a.includes("<svg")||a.includes("wrapper")}function fG(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||"",a=e.actual||e.currentValue||"",s=parseFloat(i),c=parseFloat(a);return isNaN(s)||isNaN(c)?!1:Math.abs(s-c)<fI}function gG(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(!iG.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 s=n.includes("hug")||n.includes("auto"),c=/\d+\.?\d*px/.test(r);if(!s||!c)return!1;let u=n.match(/(\d+\.?\d*)px/),l=r.match(/(\d+\.?\d*)px/);return!(u&&l&&Math.abs(parseFloat(u[1])-parseFloat(l[1]))>rG)}function mG(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 hI(e){return(e||"").toLowerCase().replace(/[\s_-]/g,"")==="fontfamily"}function hG(e){return(e||"").toLowerCase().replace(/[\s_-]/g,"")==="fontweight"}function xG(e,t,n){if(!hI(n))return!1;let r=vl(e,{stripSeparators:!0}),o=vl(t,{stripSeparators:!0});return r.length>0&&o.length>0&&r===o}function yG(e,t,n){return hI(n)?lI(e,t):!1}function bG(e,t,n){return hG(n)?cI(e,t):!1}function iu(e){let t=e.expected||e.suggestedValue,n=e.actual||e.currentValue;return xG(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: font-family naming difference (same font)",dismissedBy:"post-ai-validation"}:yG(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: system font stack equivalence (-apple-system renders as SF Pro)",dismissedBy:"post-ai-validation"}:bG(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: font weight renders identically (same named weight)",dismissedBy:"post-ai-validation"}:e.programmaticallyVerified?{dismissed:!1}:e.fixRequired===!1?{dismissed:!0,dismissReason:"Auto-dismissed: FixRequired is false (no code change needed)",dismissedBy:"post-ai-validation"}:fs(t,n,e.property)?{dismissed:!0,dismissReason:"Auto-dismissed: expected equals actual (identical values)",dismissedBy:"post-ai-validation"}:sG(e)?{dismissed:!0,dismissReason:`Auto-dismissed: imperceptible color difference (\u0394E < ${2})`,dismissedBy:"post-ai-validation"}:e.fixRequired===!0?{dismissed:!1}:fG(e)?{dismissed:!0,dismissReason:`Auto-dismissed: text dimension variance (<${fI}px) - font rendering difference, not actionable`,dismissedBy:"post-ai-validation"}:uG(t,n,e)?{dismissed:!0,dismissReason:`Auto-dismissed: negligible difference (<${mI(e.property)?dI:pI}px)`,dismissedBy:"post-ai-validation"}:mG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no measurable values to compare",dismissedBy:"post-ai-validation"}:pG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: no fix needed",dismissedBy:"post-ai-validation"}:gG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: HUG sizing - CSS auto-sizes content without explicit dimensions",dismissedBy:"post-ai-validation"}:dG(e)?{dismissed:!0,dismissReason:"Auto-dismissed: SVG container fill - child elements use their own fills",dismissedBy:"post-ai-validation"}:{dismissed:!1}}var pI,dI,fI,rG,oG,iG,aG,cG,xI=$(()=>{"use strict";Wy();Yy();Jd();pI=.5,dI=2,fI=2,rG=5,oG=["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"],iG=["hug","auto (hug)","should be hug","fixed pixel values are being rendered","fixed values are being rendered"],aG=["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"];cG=new Set(["width","height","minwidth","maxwidth","minheight","maxheight","min-width","max-width","min-height","max-height"])});var yI=$(()=>{"use strict"});var bI=$(()=>{"use strict"});var Qd=$(()=>{"use strict";Wy();xI();Yy();yI();bI()});var IG,RG,ybe,Xy=$(()=>{"use strict";IG=["flex","inline-flex"],RG=["grid","inline-grid"],ybe=[...IG,...RG]});var vI=$(()=>{"use strict";Qd();Xy()});var SI=$(()=>{"use strict"});var kI=$(()=>{"use strict"});var CI=$(()=>{"use strict"});var Zd=$(()=>{"use strict";Jd()});var Jy=$(()=>{"use strict";Zd();Qd()});var Qy=$(()=>{"use strict"});var Zy=$(()=>{"use strict"});function ef(e){return typeof e=="string"&&e.startsWith("element:")}function TI(e){return!e||e.length===0?"":` (${e.slice(0,EI).join(", ")}${e.length>EI?", \u2026":""})`}function II(e){let t=String(e.property).slice(8),[n,r]=MG[t]??[t,`${t}s`],o=Number(e.expected),i=Number(e.actual),a=o>i,s=Math.abs(o-i),c=u=>u===1?n:r;return{title:`${a?"Missing":"Extra"} ${s===1?n:`${s} ${r}`} in code`,description:`Design has ${o} ${c(o)}${TI(e.elements?.figma)}; code renders ${i}${TI(e.elements?.code)}. `+(a?`${s===1?"One is":`${s} are`} in the design but not implemented.`:`${s===1?"One is":`${s} are`} rendered but not in the design.`),suggested:`${o} ${c(o)}`,current:`${i} ${c(i)}`}}var MG,EI,RI=$(()=>{"use strict";MG={icon:["icon","icons"],text:["text element","text elements"],image:["image","images"],shape:["shape","shapes"]},EI=4});var AI=$(()=>{"use strict"});function FI(e,t){let n=e?.split("/").pop()?.trim();return n||(t?.trim()??"")}var MI=$(()=>{"use strict"});var PI=$(()=>{"use strict"});var tf=$(()=>{"use strict";Qy();Jy()});var _I=$(()=>{"use strict"});var eb=$(()=>{"use strict";tf()});var tb=$(()=>{"use strict";Zy()});var LI=$(()=>{"use strict";eb();tf();tb()});var BI=$(()=>{"use strict"});var nb=$(()=>{"use strict"});var zI=$(()=>{"use strict";nb()});var DI=$(()=>{"use strict"});var rb=$(()=>{"use strict"});var ob=$(()=>{"use strict";rb();Zd()});var ib=$(()=>{"use strict"});var ab=$(()=>{"use strict";ib();rb()});var HI=$(()=>{"use strict";ob();ab();ob();ab();ib()});var UI=$(()=>{"use strict"});var jI=$(()=>{"use strict"});var VI=$(()=>{"use strict";kI();CI();Zd();Jy();Qy();Zy();RI();AI();MI();PI();tf();_I();eb();tb();LI();BI();nb();zI();DI();HI();UI();jI()});var WI=$(()=>{"use strict";Jd()});var au,GI=$(()=>{"use strict";au={admin:{enableFixGeneration:!1,enableFixApply:!0,enableAutoMap:!0,enableAutoFigmaLinking:!0,enableReviewBadges:!0,showCosts:!0,enableParallelReview:!0,enableModelSelection:!0},beta:{enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableAutoFigmaLinking:!0,enableReviewBadges:!0,showCosts:!1,enableParallelReview:!0,enableModelSelection:!1},anonymous:{enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableAutoFigmaLinking:!0,enableReviewBadges:!0,showCosts:!1,enableParallelReview:!0,enableModelSelection:!1}}});var pn=$(()=>{"use strict";H0();hC();xC();Qd();Xy();vI();SI();VI();WI();GI()});function LG(e){let{aiPrompt:t,aiResponse:n,...r}=e;return r}function Zr(e){try{let t=e.map(LG),n=JSON.stringify(t,BG);sessionStorage.setItem(sb,n)}catch(t){b.error("[SessionStorage] Failed to save review history:",t)}}function lb(){try{let e=sessionStorage.getItem(sb);if(!e)return[];let t=JSON.parse(e,zG);return Array.isArray(t)?t:[]}catch(e){return b.error("[SessionStorage] Failed to load review history:",e),[]}}function qI(){try{let e=lb();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,...a}=r;return a}return r});t&&(Zr(n),b.debug("[SessionStorage] Stripped aiPrompt/aiResponse from existing review history"))}catch(e){b.error("[SessionStorage] Failed to strip sensitive fields:",e)}}function cb(){try{sessionStorage.removeItem(sb),b.debug("[SessionStorage] Review history cleared")}catch(e){b.error("[SessionStorage] Failed to clear review history:",e)}}function BG(e,t){return t instanceof Date?{__type:"Date",value:t.toISOString()}:t}function zG(e,t){return t&&t.__type==="Date"?new Date(t.value):t}var sb,ub=$(()=>{"use strict";Pe();sb="uicopilot_review_history"});var nf,pb=$(()=>{"use strict";nf={REVIEW_START:"uireview/review-start",REVIEW_COMPLETE:"uireview/review-complete",REVIEW_ERROR:"uireview/review-error",REVIEW_CLEAR:"uireview/review-clear",REVIEW_RESET:"uireview/review-reset"}});import DG,{createContext as NG,useContext as OG,useReducer as $G,useMemo as YI,useRef as HG,useEffect as KI}from"react";import{addons as UG}from"storybook/manager-api";function rf(e){let t=e.length>JI?e.slice(e.length-JI):e,n=Math.max(0,t.length-jG);return n===0?t:t.map((r,o)=>{if(o>=n)return r;let i=r.storybookImageData?.startsWith("data:"),a=r.figmaImageData?.startsWith("data:");return!i&&!a?r:{...r,storybookImageData:i?void 0:r.storybookImageData,figmaImageData:a?void 0:r.figmaImageData}})}function VG(e,t){switch(t.type){case"SET_STATE":return{...e,...t.payload};case"REQUEST_REVIEW_RETRY":return{...e,reviewRetryNonce:e.reviewRetryNonce+1};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:t.payload.storybookImageData||e.storybookImageUrl||void 0,figmaImageData:t.payload.figmaImageData||e.figmaImageUrl||void 0,figmaComponentProperties:t.payload.figmaComponentProperties,aiPrompt:n&&e.fullPrompt||void 0,aiResponse:n&&e.fullResponse||void 0,costUsd:t.payload.costUsd,inputTokens:t.payload.inputTokens,outputTokens:t.payload.outputTokens,reviewDurationMs:t.payload.reviewDurationMs},o=e.reviewHistory.findIndex(a=>a.id===t.payload.id),i;return o>=0?i=e.reviewHistory.map((a,s)=>s===o?r:a):i=[...e.reviewHistory,r],i=rf(i),Zr(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(a=>[a.id,a])),r=!1,o=e.reviewHistory.slice();for(let a of t.payload){let s=n.get(a.id);if(!s){o.push(a),r=!0;continue}let c=a.issues?.length??0,u=s.issues?.length??0;if(c>u){let l=o.indexOf(s);l!==-1&&(o[l]=a,r=!0)}}if(!r)return e;let i=rf(o);return Zr(i),{...e,reviewHistory:i}}case"ADD_REVIEW":{let n=rf([...e.reviewHistory,t.payload]);return Zr(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 Zr(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 Zr(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 Zr(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 a=n.get(i.id);return a?{...i,generatedFix:i.generatedFix?{...i.generatedFix,...a}:a,selectedForFix:a?.status==="failed"?!1:i.selectedForFix}:i})});return Zr(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(u=>u.id===t.payload.issueId?{...u,dismissed:!0,dismissReason:t.payload.reason,dismissedAt:new Date,dismissedBy:t.payload.dismissedBy}:u),i=o.filter(u=>!u.dismissed),a=i.filter(u=>u.severity==="critical").length,s=i.filter(u=>u.severity==="major").length,c=i.filter(u=>u.severity==="minor").length;return{...r,issues:o,complianceScore:Ki(a,s,c),issuesCount:i.length}});return Zr(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(u=>u.id===t.payload?{...u,dismissed:!1,dismissReason:void 0,dismissedAt:void 0}:u),i=o.filter(u=>!u.dismissed),a=i.filter(u=>u.severity==="critical").length,s=i.filter(u=>u.severity==="major").length,c=i.filter(u=>u.severity==="minor").length;return{...r,issues:o,complianceScore:Ki(a,s,c),issuesCount:i.length}});return Zr(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(u=>!u.dismissed),i=o.filter(u=>u.severity==="critical").length,a=o.filter(u=>u.severity==="major").length,s=o.filter(u=>u.severity==="minor").length,c=Ki(i,a,s);return b.debug(`[recalculateScore] Active: ${o.length}, score: ${c}`),{...r,complianceScore:c,issuesCount:o.length}});return Zr(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 Zr(n),{...e,reviewHistory:n}}case"CLEAR_ALL_REVIEWS":return cb(),{...e,reviewHistory:[],currentReviewId:null};case"CLEAR_REVIEWS_FOR_UNLINK":{let n=!t.payload;return n&&cb(),{...e,reviewResults:null,currentReviewId:null,isNewReviewMode:!1,...n?{reviewHistory:[]}:{}}}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 fb({children:e}){let[t,n]=$G(VG,KG),r=HG(t);KI(()=>{r.current=t},[t]),KI(()=>{let a;try{a=UG.getChannel()}catch{return}let s=({storyId:c}={})=>n({type:"CLEAR_REVIEWS_FOR_UNLINK",payload:c});return a.on(XI,s),()=>{a.off(XI,s)}},[]);let o=YI(()=>({setIsReviewing:a=>n({type:"SET_STATE",payload:{isReviewing:a}}),setReviewingStoryId:a=>n({type:"SET_STATE",payload:{reviewingStoryId:a}}),setReviewError:a=>n({type:"SET_STATE",payload:{reviewError:a}}),requestReviewRetry:()=>n({type:"REQUEST_REVIEW_RETRY"}),bulkAddReviews:a=>n({type:"BULK_ADD_REVIEWS",payload:a}),setReviewResults:a=>n({type:"SET_REVIEW_RESULTS",payload:a}),setMultiModelResults:a=>n({type:"SET_STATE",payload:{multiModelResults:a}}),updateMultiModelStreamingMessages:(a,s)=>n({type:"UPDATE_MULTI_MODEL_STREAMING",payload:{modelId:a,messages:s}}),setModelCompleted:a=>n({type:"SET_MODEL_COMPLETED",payload:a}),setActiveModelId:a=>{let s=r.current;s.multiModelResults&&n({type:"SET_STATE",payload:{multiModelResults:{...s.multiModelResults,activeModelId:a}}})},setShowReviewMenu:a=>n({type:"SET_STATE",payload:{showReviewMenu:a}}),setSeverityFilter:a=>n({type:"SET_STATE",payload:{severityFilter:a}}),setShowStreamingPanel:a=>n({type:"SET_STATE",payload:{showStreamingPanel:a}}),setStreamingPanelCollapsed:a=>n({type:"SET_STATE",payload:{streamingPanelCollapsed:a}}),addStreamingMessage:a=>n({type:"ADD_STREAMING_MESSAGE",payload:a}),updateStreamingMessage:(a,s)=>n({type:"UPDATE_STREAMING_MESSAGE",payload:{index:a,content:s}}),clearStreamingMessages:()=>n({type:"CLEAR_STREAMING_MESSAGES"}),setStreamingProgress:a=>n({type:"SET_STATE",payload:{streamingProgress:a}}),setStreamingStatus:a=>n({type:"SET_STATE",payload:{streamingStatus:a}}),setReviewDetailTab:a=>n({type:"SET_STATE",payload:{reviewDetailTab:a}}),setFullPrompt:a=>n({type:"SET_STATE",payload:{fullPrompt:a}}),setFullResponse:a=>n({type:"SET_STATE",payload:{fullResponse:a}}),setFigmaImageUrl:a=>n({type:"SET_STATE",payload:{figmaImageUrl:a}}),setStorybookImageUrl:a=>n({type:"SET_STATE",payload:{storybookImageUrl:a}}),setFigmaDimensions:a=>n({type:"SET_STATE",payload:{figmaDimensions:a}}),setSelectedModels:a=>n({type:"SET_STATE",payload:{selectedModels:a}}),toggleModel:a=>n({type:"TOGGLE_MODEL",payload:a}),setModelComparisonView:a=>n({type:"SET_STATE",payload:{modelComparisonView:a}}),resetReview:()=>n({type:"RESET_REVIEW"}),addReview:a=>n({type:"ADD_REVIEW",payload:a}),getCurrentReview:()=>{let a=r.current;return a.currentReviewId&&a.reviewHistory.find(s=>s.id===a.currentReviewId)||null},getReviewById:a=>r.current.reviewHistory.find(s=>s.id===a)||null,getParentReview:()=>{let a=r.current,s=a.reviewHistory.find(c=>c.id===a.currentReviewId);return s?.parentReviewId&&a.reviewHistory.find(c=>c.id===s.parentReviewId)||null},hasAppliedFixes:()=>{let a=r.current,s=a.reviewHistory.find(c=>c.id===a.currentReviewId);return!s||!Array.isArray(s.issues)||s.issues.length===0?!1:s.issues.some(c=>c.status==="applied"||c.generatedFix?.status==="applied")},toggleIssueSelection:a=>n({type:"TOGGLE_ISSUE_SELECTION",payload:a}),updateIssueStatus:(a,s,c)=>n({type:"UPDATE_ISSUE_STATUS",payload:{issueId:a,status:s,error:c}}),updateIssueGeneratedFix:(a,s)=>n({type:"UPDATE_ISSUE_GENERATED_FIX",payload:{issueId:a,generatedFix:s}}),batchUpdateIssueGeneratedFixes:a=>n({type:"BATCH_UPDATE_ISSUE_GENERATED_FIXES",payload:a}),dismissIssue:(a,s,c)=>n({type:"DISMISS_ISSUE",payload:{issueId:a,reason:s,dismissedBy:c}}),undismissIssue:a=>n({type:"UNDISMISS_ISSUE",payload:a}),recalculateScore:()=>n({type:"RECALCULATE_SCORE"}),updateReviewScore:(a,s)=>n({type:"UPDATE_REVIEW_SCORE",payload:{reviewId:a,newScore:s}}),clearAllReviews:()=>n({type:"CLEAR_ALL_REVIEWS"}),clearStaleReviewsForStory:a=>n({type:"CLEAR_STALE_REVIEWS",payload:a}),setIsApplying:a=>n({type:"SET_STATE",payload:{isApplying:a}}),setApplyFixesResult:a=>n({type:"SET_STATE",payload:{applyFixesResult:a}}),setIncludeComponentIssues:a=>n({type:"SET_STATE",payload:{includeComponentIssues:a}}),setIncludeTextComparison:a=>n({type:"SET_STATE",payload:{includeTextComparison:a}}),setUsePromptCache:a=>n({type:"SET_STATE",payload:{usePromptCache:a}}),setIsValidating:a=>n({type:"SET_STATE",payload:{isValidating:a}}),setIsSpecChecking:a=>n({type:"SET_STATE",payload:{isSpecChecking:a}}),setReviewHistoryLoading:a=>n({type:"SET_STATE",payload:{reviewHistoryLoading:a}}),setValidationUsage:a=>n({type:"SET_STATE",payload:{validationUsage:a}}),setWorkspacePath:a=>n({type:"SET_STATE",payload:{workspacePath:a}}),triggerScreenshotRefresh:()=>n({type:"TRIGGER_SCREENSHOT_REFRESH"}),setHoveredIssueId:a=>n({type:"SET_STATE",payload:{hoveredIssueId:a}}),setNewReviewMode:a=>n({type:"SET_STATE",payload:{isNewReviewMode:a}}),setPendingSettingsOpen:a=>n({type:"SET_STATE",payload:{pendingSettingsOpen:a}}),setFeatureFlags:a=>n({type:"SET_STATE",payload:{featureFlags:a}}),setUserRole:a=>n({type:"SET_STATE",payload:{userRole:a}}),setRoleOverride:a=>{try{a?localStorage.setItem("uicopilot_role_override",a):localStorage.removeItem("uicopilot_role_override")}catch{}n({type:"SET_STATE",payload:{roleOverride:a}})},setReviewAllConcurrency:a=>{let s=Math.max(1,Math.min(5,a));try{localStorage.setItem("uicopilot_review_all_concurrency",String(s))}catch{}n({type:"SET_STATE",payload:{reviewAllConcurrency:s}})},setIsGenerating:a=>n({type:"SET_STATE",payload:{isGenerating:a}}),setGeneratedPrompt:a=>n({type:"SET_STATE",payload:{generatedPrompt:a}}),setPromptError:a=>n({type:"SET_STATE",payload:{promptError:a}}),resetPrompt:()=>n({type:"RESET_PROMPT"})}),[]),i=YI(()=>({...t,...o}),[t,o]);return DG.createElement(QI.Provider,{value:i},e)}function ve(){let e=OG(QI);if(!e)throw new Error("useReviewStore must be used within a ReviewProvider");return e}var XI,JI,jG,WG,GG,db,qG,YG,KG,QI,gb=$(()=>{"use strict";pn();ub();Pe();pb();XI=nf.REVIEW_CLEAR,JI=20,jG=5;WG=()=>{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},GG=()=>{if(typeof localStorage>"u")return null;try{let e=localStorage.getItem("uicopilot_role_override");if(e==="admin"||e==="beta")return e}catch{}return null},db={enableFixGeneration:!1,enableFixApply:!1,enableAutoMap:!1,enableAutoFigmaLinking:!1,enableReviewBadges:!1,showCosts:!1,enableParallelReview:!1,enableModelSelection:!1},qG=()=>{if(typeof localStorage>"u")return db;try{let e=localStorage.getItem("uicopilot_feature_flags");if(!e)return db;let t=JSON.parse(e);return{enableFixGeneration:!!t.enableFixGeneration,enableFixApply:!!t.enableFixApply,enableAutoMap:!!t.enableAutoMap,enableAutoFigmaLinking:!!t.enableAutoFigmaLinking,enableReviewBadges:!!t.enableReviewBadges,showCosts:!!t.showCosts,enableParallelReview:!!t.enableParallelReview,enableModelSelection:!!t.enableModelSelection}}catch{}return db},YG=()=>{if(typeof localStorage>"u")return"beta";try{let e=localStorage.getItem("uicopilot_user_role");if(e==="admin"||e==="beta")return e}catch{}return"beta"},KG={isReviewing:!1,reviewingStoryId:null,reviewError:null,reviewRetryNonce:0,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-6"],modelComparisonView:"side-by-side",reviewHistory:rf(lb()),currentReviewId:null,includeComponentIssues:!0,includeTextComparison:!1,usePromptCache:!1,isApplying:!1,applyFixesResult:null,screenshotRefreshKey:0,isValidating:!1,isSpecChecking:!1,reviewHistoryLoading:!1,validationUsage:null,lastAiCallTimestamp:null,aiRateLimitSeconds:0,isGenerating:!1,generatedPrompt:null,promptError:null,workspacePath:null,userRole:YG(),roleOverride:GG(),featureFlags:qG(),reviewAllConcurrency:WG(),hoveredIssueId:null,isNewReviewMode:!1,pendingSettingsOpen:!1},QI=NG(null)});import su,{useMemo as XG}from"react";function hb({children:e}){return su.createElement(B0,null,su.createElement(D0,null,su.createElement(O0,null,su.createElement(fb,null,su.createElement(JG,null),e))))}function ZI(e){let t=we(),n=We(),r=yt(),o=ve(),i=XG(()=>({...t,...n,...r,...o}),[t,n,r,o]);return e?e(i):i}function JG(){return mb=ZI(),null}var mb,Tt,e3=$(()=>{"use strict";z0();N0();$0();gb();mb=null,Tt=Object.assign(ZI,{getState:()=>{if(!mb)throw new Error("Store not initialized. Make sure StoreProvider is mounted.");return mb}})});var Ce=$(()=>{"use strict";e3();z0();N0();$0();gb()});function q(){return(process.env.STORYBOOK_UICOPILOT_URL||QG).replace(/\/$/,"")}var QG,t3,n3,Me=$(()=>{"use strict";QG="https://app.uiparity.com",t3="0.20.1";n3=3.6});async function J(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 nt=$(()=>{"use strict"});function Ca(e){let r=e.ownerDocument?.defaultView;if(!r)return e.firstElementChild??e;let o=e.getBoundingClientRect(),i=d=>{let f=r.getComputedStyle(d);if(f.position==="fixed"||f.display==="none"||f.visibility==="hidden")return!0;let p=d.getBoundingClientRect();return p.width===0||p.height===0||d.children.length===0&&!(d.textContent??"").trim()},a=d=>{if(o.width===0||o.height===0)return!1;let f=d.getBoundingClientRect();return f.width>=o.width*.9&&f.height>=o.height*.9},s=[],c=d=>{for(let f of Array.from(d.children))f.hasAttribute("data-uicopilot-instance")?s.push(f):c(f)};if(c(e),s.length>1){let d=g=>{let m=[];for(let C=g;C&&C!==e;C=C.parentElement)m.unshift(C);return m},f=s.map(d),p=e;for(let g=0;;g+=1){let m=f[0][g];if(!m||!f.every(C=>C[g]===m))break;p=m}if(p!==e)return p}let u=e;for(let d=0;d<6;d+=1){if(u!==e&&u.hasAttribute("data-uicopilot-instance"))return u;let f=Array.from(u.children).filter(p=>!i(p));if(f.length!==1||u!==e&&!a(u))break;u=f[0]}if(u!==e&&a(u)){let d=Array.from(u.children).filter(f=>!i(f));if(d.length>1&&l(d))return d[0].setAttribute("data-uicopilot-instances",String(d.length)),d[0]}if(u===e)return e.firstElementChild??e;return u;function l(d){let f=g=>{let m=g.className,C=typeof m=="string"?m:"";return`${g.tagName}.${C.split(" ")[0]??""}`},p=f(d[0]);return d.every(g=>f(g)===p)}}var fu=$(()=>{"use strict"});function Jq(){return!q().startsWith("http://localhost")}function Qq(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 D3(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=Qq(o,t,n);return r.set(o,i),i})}async function Zq(){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.getElementById("storybook-root")||t.contentDocument.getElementById("root");if(!n)throw new Error("Story root not found in iframe");let r=Ca(n);if(!r)throw new Error("Story element not found in iframe");let o=t.contentWindow,i=t.contentDocument;return(await e(r,{useCORS:!0,logging:!1,backgroundColor:null,scale:1,onclone:s=>{s.querySelectorAll("style").forEach(u=>{let l=u.textContent||"";/(?:color|oklch|oklab|lab|lch)\(/.test(l)&&(u.textContent=D3(l,i,o))});let c=Array.from(i.styleSheets);s.querySelectorAll('link[rel="stylesheet"]').forEach(u=>{let l=u.href,d=c.find(f=>f.href===l);if(d)try{let f="";for(let p of Array.from(d.cssRules))f+=p.cssText+`
13
13
  `;if(/(?:color|oklch|oklab|lab|lch)\(/.test(f)){let p=s.createElement("style");p.textContent=D3(f,i,o),u.replaceWith(p)}}catch{}})}})).toDataURL("image/png")}function eY(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 tY(e,t){b.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 J(`${Xq}/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 nY(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),a=r.slice(o+1);typeof a=="string"&&(a==="!true"?a=!0:a==="!false"?a=!1:!isNaN(Number(a))&&a!==""?a=Number(a):a=decodeURIComponent(a.replace(/\+/g," "))),t[i]=a}return t}function rY(e){let t=new URLSearchParams(window.location.search),n=e;if(n||(n=(t.get("path")||"").replace("/story/","").replace("/docs/",""),b.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}`,a=Rl();if(!a||Object.keys(a).length===0){let s=t.get("args");s&&(a=nY(s),b.debug("[Screenshot] Parsed args from URL:",a))}if(a&&Object.keys(a).length>0){let s=eY(a);i+=`&args=${s}`,b.debug("[Screenshot] Using URL with current args:",i)}else b.debug("[Screenshot] No current args, using default URL:",i);return i}async function oY(e){try{let t=await fetch(`/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`);if(t.status===501)return b.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 b.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 pf(e){let t=e?.storyId||iY();if(t){let n=Rb.get(t);if(n)return b.debug("[Screenshot] Reusing in-flight capture for",t),n;let r=N3(t,e).finally(()=>{Rb.delete(t)});return Rb.set(t,r),r}return N3(void 0,e)}async function N3(e,t){try{if(e){let n=await oY(e);if(n)return n}if(!Jq()){let n=rY(t?.storyId);return await tY(n,{...t,selector:"#storybook-root > *"})}return b.info("[Screenshot] Using client-side capture (html2canvas fallback)"),await Zq()}catch(n){throw b.error("Error capturing screenshot:",n),new Error(`Failed to capture screenshot: ${n instanceof Error?n.message:"Unknown error"}`)}}function iY(){return(new URLSearchParams(window.location.search).get("path")||"").replace("/story/","").replace("/docs/","")||void 0}var Xq,Rb,Ab=$(()=>{"use strict";Me();Al();Pe();nt();fu();Xq=q();Rb=new Map});import{useEffect as Ea,useState as df,useRef as O3,useCallback as Fb}from"react";import{addons as Mb}from"storybook/manager-api";async function aY(e,t,n){let r=`${e}:${t}`,o=Pb.get(r);if(o)return b.debug("[useReviewScreenshots] Reusing in-flight Figma image fetch for",r),o;let i=(async()=>{let a=await J(`${V3}/api/figma/image?projectId=${e}&nodeId=${t}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`}});return a.ok?a.json():{imageUrl:null}})().finally(()=>{Pb.delete(r)});return Pb.set(r,i),i}function sY(e,t,n){try{sessionStorage.setItem(`${ff}${e}`,JSON.stringify({figmaNodeId:t,imageUrl:n,timestamp:Date.now()}))}catch{}}function lY(e,t){try{let n=sessionStorage.getItem(`${ff}${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(`${ff}${e}`)}catch{}return null}function cY(e){try{let t=sessionStorage.getItem(`${ff}${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 $3,H3,U3,j3,Rl,V3,dr,_b,Pb,ff,W3,G3,hs,Al=$(()=>{"use strict";Ce();Ab();Pe();Me();nt();$3="storyArgsUpdated",H3="storyRendered",U3="forceRemount",j3=null,Rl=()=>j3,V3=q(),dr=new Map,_b=null,Pb=new Map;ff="uicopilot-figma-image-";W3=(e,t,n)=>{let r=dr.get(e);r?(r.storybookImageUrl=t,n&&(r.figmaImageUrl=n)):dr.set(e,{storybookImageUrl:t,figmaImageUrl:n??null}),b.debug("[useReviewScreenshots] Populated historical screenshots for story:",e)},G3=(e,t,n)=>{_b=t;let r=dr.get(e);r?r.figmaImageUrl=n:dr.set(e,{storybookImageUrl:null,figmaImageUrl:n}),b.debug("[useReviewScreenshots] Pre-set Figma image for mapping:",{storyId:e,figmaNodeId:t,imageUrl:n.substring(0,50)+"..."})},hs=()=>{let[e,t]=df(!1),[n,r]=df(!1),[o,i]=df(!1),[a,s]=df(null),c=O3(null),{screenshotRefreshKey:u,triggerScreenshotRefresh:l}=ve(),d=Fb(()=>{let A=Tt.getState().currentStoryId;A&&(b.debug("[useReviewScreenshots] Refreshing screenshots for story:",A),dr.delete(A),c.current=null,i(!0),l())},[l]),f=Fb(()=>{let A=Tt.getState().currentStoryId;if(A){b.debug("[useReviewScreenshots] Refreshing Storybook screenshot only for story:",A);let D=dr.get(A);D&&(D.storybookImageUrl=null),c.current=null,i(!0),l()}},[l]),{sessionToken:p}=we(),{selectedProjectId:g}=We(),{currentStoryId:m,currentMapping:C,loadingMapping:v}=yt(),{setStorybookImageUrl:h,setFigmaImageUrl:M}=ve(),L=O3(null);Ea(()=>{m&&L.current&&L.current!==m&&(b.debug("[useReviewScreenshots] Story switched, clearing images"),h(""),M("")),L.current=m},[m,h,M]),Ea(()=>{!m||v||C||M("")},[m,C,v,M]),Ea(()=>{if(!m)return;let A=cY(m);A&&(b.debug("[useReviewScreenshots] Quick-restored Figma image for:",m),M(A))},[m,M]),Ea(()=>{if(!m||v)return;let A=C?.figmaFileUrl;if(A){b.debug("[useReviewScreenshots] Restoring Figma image from mapping.figmaFileUrl for:",m),M(A);let D=dr.get(m);D?D.figmaImageUrl=A:dr.set(m,{storybookImageUrl:null,figmaImageUrl:A})}},[m,C,v,M]),Ea(()=>{let A=!1;return(async()=>{if(!p||!g||!m){b.debug("[useReviewScreenshots] Missing required context, skipping auto-load");return}c.current&&c.current!==m&&(b.debug("[useReviewScreenshots] Story changed, clearing stale screenshots"),h(""),M(""));let y=Tt.getState();if(c.current===m&&y.storybookImageUrl&&y.figmaImageUrl){b.debug("[useReviewScreenshots] Screenshots already loaded for this story, skipping capture");return}let k=C?.figmaNodeId??null;if(k!==_b){b.debug("[useReviewScreenshots] Figma mapping changed, invalidating Figma image only for story:",m);let _=dr.get(m);_&&(_.figmaImageUrl=null),_b=k,c.current=null}let T=C?.figmaNodeId;if(T&&!dr.get(m)?.figmaImageUrl){let _=lY(m,T);if(_){b.debug("[useReviewScreenshots] Hydrated Figma image from sessionStorage for story:",m),M(_);let P=dr.get(m);P?P.figmaImageUrl=_:dr.set(m,{storybookImageUrl:null,figmaImageUrl:_})}}let F=dr.get(m),S=F&&F.storybookImageUrl&&F.figmaImageUrl,x=F&&F.storybookImageUrl&&!F.figmaImageUrl,E=F&&!F.storybookImageUrl&&F.figmaImageUrl;if(S){b.debug("[useReviewScreenshots] Using fully cached screenshots for story:",m),h(F.storybookImageUrl),M(F.figmaImageUrl),c.current=m;return}let w=x&&C?.figmaNodeId;w&&(b.debug("[useReviewScreenshots] Using cached Storybook, fetching new Figma for story:",m),h(F.storybookImageUrl));let R=E;if(R&&(b.debug("[useReviewScreenshots] Using cached Figma, recapturing Storybook for story:",m),M(F.figmaImageUrl)),c.current===m&&C?.figmaNodeId){b.debug("[useReviewScreenshots] Screenshots already loaded for this story, skipping");return}try{if(s(null),w?r(!0):(R||(t(!0),r(!0)),i(!0)),c.current=m,A)return;let _=R?F.figmaImageUrl:null,P;if(R)b.debug("[useReviewScreenshots] Figma cached (storybookOnlyRefresh), skipping fetch"),r(!1);else if(T){b.debug("[useReviewScreenshots] Found Figma node ID from mapping:",T);let I=null;try{b.debug("[useReviewScreenshots] Fetching Figma image (with caching)...");let O=await aY(g,T,p);I=O.imageUrl||null;let j=O.cached?"(cached)":"(fresh)";b.debug(`[useReviewScreenshots] Figma image fetched ${j}:`,I?"success":"not found")}catch(O){b.warn("[useReviewScreenshots] Failed to fetch Figma image:",O)}if(I)try{b.debug("[useReviewScreenshots] Fetching Figma image via proxy...");let O=`${V3}/api/proxy/image?url=${encodeURIComponent(I)}`,j=await J(O);if(j.ok){let B=await j.blob(),se=new FileReader,H=await new Promise((Z,Y)=>{se.onloadend=()=>Z(se.result),se.onerror=Y,se.readAsDataURL(B)});_=H,M(H),b.debug("[useReviewScreenshots] Figma image loaded via proxy");let V=new Image;await new Promise(Z=>{V.onload=()=>{P={width:V.naturalWidth,height:V.naturalHeight},b.debug("[useReviewScreenshots] Figma dimensions:",P),Z()},V.onerror=()=>Z(),V.src=H})}else _=I,M(I),b.warn("[useReviewScreenshots] Proxy failed, using direct URL as fallback")}catch(O){b.warn("[useReviewScreenshots] Proxy error, using direct URL as fallback:",O),_=I,M(I)}else b.warn("[useReviewScreenshots] No thumbnail found for node:",T),M(null);_&&T&&sY(m,T,_),r(!1)}else b.debug("[useReviewScreenshots] No Figma mapping exists for this component"),M(null),r(!1);let N=F?.storybookImageUrl||null;if(N)b.debug("[useReviewScreenshots] Using cached Storybook screenshot"),i(!1);else{b.debug("[useReviewScreenshots] Capturing Storybook screenshot for story:",m);let I=await pf({storyId:m,sessionToken:p||void 0,...P&&{figmaWidth:P.width,figmaHeight:P.height}});I&&!A?(N=I,h(I),b.debug("[useReviewScreenshots] Storybook screenshot captured at dimensions:",P||"natural")):b.warn("[useReviewScreenshots] Failed to capture Storybook screenshot"),i(!1)}dr.set(m,{storybookImageUrl:N,figmaImageUrl:_}),b.debug("[useReviewScreenshots] Screenshots cached for story:",m)}catch(_){b.error("[useReviewScreenshots] Error loading screenshots:",_),s(_ instanceof Error?_.message:"Failed to load screenshots"),c.current=null,r(!1),i(!1)}finally{t(!1)}})(),()=>{A=!0}},[p,g,m,C?.figmaNodeId,u]),Ea(()=>{let A=Mb.getChannel(),D=null,y=k=>{j3=k.args,b.debug("[useReviewScreenshots] Args updated for story:",k.storyId,"args:",k.args),D&&clearTimeout(D),D=setTimeout(()=>{b.debug("[useReviewScreenshots] Story args changed, refreshing screenshot"),d()},500)};return A.on($3,y),()=>{A.off($3,y),D&&clearTimeout(D)}},[d]),Ea(()=>{let A=Mb.getChannel(),D=!1,y=null,k=()=>{b.debug("[useReviewScreenshots] FORCE_REMOUNT detected, showing Storybook loader"),D=!0,i(!0)},T=()=>{D&&(b.debug("[useReviewScreenshots] STORY_RENDERED after remount, waiting for styles to settle..."),y&&clearTimeout(y),y=setTimeout(()=>{D=!1,b.debug("[useReviewScreenshots] Refreshing Storybook screenshot after HMR (preserving Figma)"),f()},500))};return A.on(U3,k),A.on(H3,T),()=>{A.off(U3,k),A.off(H3,T),y&&clearTimeout(y)}},[f]),Ea(()=>{let A=Mb.getChannel(),D=async y=>{if(!y?.snapshot?.html){b.debug("[useReviewScreenshots] DOM mutated but no snapshot available");return}b.debug("[useReviewScreenshots] DOM mutated, capturing snapshot screenshot"),i(!0);try{let k=Tt.getState().currentStoryId,T=await fetch("/__uicopilot/screenshot-snapshot",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...y.snapshot,storyId:k})});if(T.ok){let F=await T.json();if(F.screenshot){h(F.screenshot);let S=Tt.getState().currentStoryId;if(S){let x=dr.get(S);x?x.storybookImageUrl=F.screenshot:dr.set(S,{storybookImageUrl:F.screenshot,figmaImageUrl:null})}}}else b.error("[useReviewScreenshots] Snapshot screenshot failed:",await T.text())}catch(k){b.error("[useReviewScreenshots] Snapshot screenshot error:",k)}finally{i(!1)}};return A.on("UICOPILOT/STORY_DOM_MUTATED",D),()=>{A.off("UICOPILOT/STORY_DOM_MUTATED",D)}},[]);let z=Fb((A,D,y)=>{b.debug("[useReviewScreenshots] setFigmaImageDirect called - bypassing load"),G3(A,D,y),M(y),r(!1),c.current=A},[M]);return{isLoadingScreenshots:e,isLoadingFigma:n,isLoadingStorybook:o,screenshotError:a,refreshScreenshots:d,refreshStorybookOnly:f,setFigmaImageDirect:z}}});function fr(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,a=i?parseFloat(i):1;return a<1?`rgba(${n}, ${r}, ${o}, ${a})`:`#${[n,r,o].map(c=>parseInt(c).toString(16).padStart(2,"0")).join("")}`}function Or(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 Su(e){return e.split(",").map(n=>n.trim().replace(/['"]/g,""))[0]||e}function S7(e){let t=e.ownerDocument,r=(t.defaultView||window).getComputedStyle(e);if("fonts"in t){let C=r.fontSize||"16px",v=r.fontWeight||"400";if(r.fontFamily.includes("Roboto")){let h=t.fonts.check(`${v} ${C} Roboto`);if(b.debug("[computedStyles] Roboto check:",{cssFamily:r.fontFamily,robotoLoaded:h,fontWeight:v,fontSize:C,isIframe:t!==document,fontStatus:Array.from(t.fonts).map(M=>({family:M.family,status:M.status}))}),h)return"Roboto"}}let o="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",a=t.createElement("canvas").getContext("2d");if(!a)return"unknown";let s=r.fontSize,c=r.fontWeight,u=r.fontStyle,l=r.fontFamily.split(",").map(C=>C.trim().replace(/['"]/g,"")),d=["Arial","Helvetica","Helvetica Neue","Times New Roman","Georgia","Courier New","Verdana","Tahoma","Trebuchet MS","sans-serif","serif","monospace"],f=[...new Set([...l,...d])];a.font=`${u} ${c} ${s} monospace`;let p=a.measureText(o).width,g="unknown",m=new Map;for(let C of f){a.font=`${u} ${c} ${s} "${C}", monospace`;let v=a.measureText(o).width;if(m.set(C,v),v!==p){a.font=`${u} ${c} ${s} "${C}"`;let h=a.measureText(o).width;a.font=`${u} ${c} ${s} ${r.fontFamily}`;let M=a.measureText(o).width;if(Math.abs(h-M)<.1){g=C;break}}}return b.debug("[computedStyles] Font detection:",{declared:r.fontFamily,detected:g,declaredFonts:l,fontWidths:Array.from(m.entries()),isIframe:t!==document}),g}var ku=$(()=>{"use strict";Pe()});function _l(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 s5(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e);return b.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:fr(n.color),backgroundColor:fr(n.backgroundColor),borderColor:fr(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:S7(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 l5(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 a=i.cssRules||i.rules;if(!a)continue;for(let s of Array.from(a))if(s.type===1){let c=s;try{if(e.matches(c.selectorText)){let u=c.style;u.width&&(n.width=u.width),u.height&&(n.height=u.height),u.minWidth&&(n.minWidth=u.minWidth),u.minHeight&&(n.minHeight=u.minHeight),u.maxWidth&&(n.maxWidth=u.maxWidth),u.maxHeight&&(n.maxHeight=u.maxHeight),u.display&&(n.display=u.display),u.flexGrow&&(n.flexGrow=u.flexGrow),u.flexShrink&&(n.flexShrink=u.flexShrink),u.flexBasis&&(n.flexBasis=u.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){b.error("Error extracting declared styles:",r)}return n}var If=$(()=>{"use strict";Pe();ku()});function HX(e){let t=[],n=new Set,r=k7.join(", "),o=e.querySelectorAll(r);for(let i of Array.from(o)){let a=`${i.tagName.toLowerCase()}.${i.className}`;n.has(a)||(n.add(a),t.push(i))}if(k7.includes(e.tagName.toLowerCase())){let i=`${e.tagName.toLowerCase()}.${e.className}`;n.has(i)||t.unshift(e)}return t}function UX(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:_l(r,i),tagName:r,className:i,styles:{fontSize:n.fontSize,fontFamily:Su(n.fontFamily),fontWeight:n.fontWeight,lineHeight:n.lineHeight,letterSpacing:n.letterSpacing,color:fr(n.color),textAlign:n.textAlign,textTransform:n.textTransform}}}function jX(e,t=2){let n=[e],r=new Set,o=a=>{let s=a.className;return typeof s=="string"?s:s?.baseVal||""};r.add(`${e.tagName}.${o(e)}`);function i(a,s){if(s>=t)return;let c=Array.from(a.children);for(let u of c){let l=u.tagName.toLowerCase();if(["script","style","link","meta","br","hr"].includes(l))continue;let d=`${u.tagName}.${o(u)}`;r.has(d)||(r.add(d),n.push(u),i(u,s+1))}}return i(e,0),n}function VX(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e),r=e.tagName.toLowerCase(),o=e.className,i=typeof o=="string"?o:o?.baseVal||"",a=n.borderWidth!=="0px",s=n.backgroundColor!=="transparent"&&n.backgroundColor!=="rgba(0, 0, 0, 0)",c=n.borderRadius!=="0px",u=n.gap!=="normal"&&n.gap!=="0px";if(!a&&!s&&!c&&!u)return null;let l=n.borderWidth,d=n.borderStyle,f=fr(n.borderColor),p=a?`${l} ${d} ${f}`:"none";return{selector:_l(r,i),className:i,border:p,borderRadius:n.borderRadius,backgroundColor:fr(n.backgroundColor),gap:n.gap}}function Cu(){b.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=jX(r,2),i=o.map(VX).filter(s=>s!==null);b.debug("[computedStyles] Extracted visual styles from nested elements:",{total:o.length,withVisuals:i.length,elements:i.map(s=>({selector:s.selector,border:s.border,background:s.backgroundColor,borderRadius:s.borderRadius}))});let a=[];try{let s=HX(r);a=s.map(UX),b.debug("[computedStyles] Text elements found:",{count:s.length,elements:a.map(c=>({selector:c.selector,fontSize:c.styles.fontSize,fontWeight:c.styles.fontWeight}))})}catch(s){b.error("[computedStyles] Error extracting text elements:",s)}return{computed:s5(r),declared:l5(r,t),markup:r.outerHTML,textElementStyles:a,nestedElementStyles:i}}catch(e){return b.error("Error extracting computed styles:",e),null}}var k7,C7=$(()=>{"use strict";Pe();ku();If();k7=["input","textarea","button","select","label","span","a","p","h1","h2","h3","h4","h5","h6"]});function E7(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect();return{x:Math.round(n.left-r.left),y:Math.round(n.top-r.top),w:Math.round(n.width),h:Math.round(n.height)}}var T7=$(()=>{"use strict"});function c5(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 GX(e,t,n){if(!(e==="0px"||t==="none"))return`${e} ${t} ${n}`}function qX(e){let n=(e.ownerDocument.defaultView||window).getComputedStyle(e),r={},o=fr(n.backgroundColor);Or("backgroundColor",o)||(r.backgroundColor=o);let i=GX(n.borderWidth,n.borderStyle,fr(n.borderColor));if(i&&(r.border=i),!r.border){let p=["Top","Right","Bottom","Left"].filter(g=>parseFloat(n[`border${g}Width`])>0&&n[`border${g}Style`]!=="none");if(p.length>0){let g=p.reduce((m,C)=>parseFloat(n[`border${C}Width`])>parseFloat(n[`border${m}Width`])?C:m);r.border=`${n[`border${g}Width`]} ${n[`border${g}Style`]} ${fr(n[`border${g}Color`])}`,r.borderSides=p.map(m=>m.toLowerCase()).join(" ")}}Or("borderRadius",n.borderRadius)||(r.borderRadius=n.borderRadius),Or("boxShadow",n.boxShadow)||(r.boxShadow=n.boxShadow),Or("opacity",n.opacity)||(r.opacity=n.opacity);let a=e.tagName.toLowerCase(),s=["svg","circle","rect","ellipse","line","polyline","polygon","path","text","tspan","g","use","defs","clipPath","mask"];if(e instanceof SVGElement||s.includes(a)){for(let C=0;C<e.attributes.length;C++){let v=e.attributes[C];if(["class","style","id","xmlns","xmlns:xlink"].includes(v.name))continue;let h=v.name.replace(/-([a-z])/g,(L,z)=>z.toUpperCase()),M=v.value.startsWith("rgb")?fr(v.value):v.value;h==="d"&&M.length>100?r[h]=M.substring(0,100)+"...":r[h]=M}let p=n.getPropertyValue("fill"),g=n.getPropertyValue("stroke");if(p&&p!=="none"&&(r.fill=p.startsWith("rgb")?fr(p):p),g&&g!=="none"&&(r.stroke=g.startsWith("rgb")?fr(g):g),["circle","ellipse","rect","path","line","polyline","polygon"].includes(a)){let C=e.getBoundingClientRect();C.width>0&&(r.width=`${Math.round(C.width*100)/100}px`),C.height>0&&(r.height=`${Math.round(C.height*100)/100}px`)}}let u=e.textContent&&e.textContent.trim().length>0,l=WX.includes(e.tagName.toLowerCase());(u||l)&&(r.fontSize=n.fontSize,r.fontFamily=Su(n.fontFamily),r.fontWeight=n.fontWeight,r.lineHeight=n.lineHeight,r.color=fr(n.color),Or("letterSpacing",n.letterSpacing)||(r.letterSpacing=n.letterSpacing),Or("textAlign",n.textAlign)||(r.textAlign=n.textAlign)),r.display=n.display;let d=c5(n.paddingTop,n.paddingRight,n.paddingBottom,n.paddingLeft);Or("padding",d)||(r.padding=d);let f=c5(n.marginTop,n.marginRight,n.marginBottom,n.marginLeft);return Or("margin",f)||(r.margin=f),Or("gap",n.gap)||(r.gap=n.gap),(n.display==="flex"||n.display==="inline-flex")&&(Or("flexDirection",n.flexDirection)||(r.flexDirection=n.flexDirection),Or("justifyContent",n.justifyContent)||(r.justifyContent=n.justifyContent),Or("alignItems",n.alignItems)||(r.alignItems=n.alignItems)),r.width||(r.width=n.width),r.height||(r.height=n.height),r}function I7(e){let t=1;for(let n of e.children)t+=I7(n);return t}function KX(e){let t=Number(e.getAttribute(YX));return t>0?t:void 0}function Ll(e,t=4){function n(i,a){let s=i.tagName.toLowerCase(),c=i.className,u=typeof c=="string"?c:c?.baseVal||"",l=i.id||void 0,d=i.getAttribute("role")||void 0,f;for(let C of Array.from(i.childNodes))if(C.nodeType===Node.TEXT_NODE){let v=C.textContent?.trim();if(v){f=v.length>50?v.substring(0,50)+"...":v;break}}let p=s;l?p=`${s}#${l}`:u&&(p=_l(s,u));let g=qX(i),m=[];if(a<t){let C=Array.from(i.children);for(let v of C){let h=v.tagName.toLowerCase();if(["script","style","link","meta","br","hr","noscript"].includes(h))continue;let L=(v.ownerDocument.defaultView||window).getComputedStyle(v);L.display==="none"||L.visibility==="hidden"||m.push(n(v,a+1))}}return{selector:p,tagName:s,className:u,id:l,role:d,textContent:f,rect:E7(i,e),instance:KX(i),styles:g,children:m}}b.debug("[computedStyles] Extracting DOM tree with maxDepth:",t);let r=n(e,0),o=e.closest("[data-uicopilot-instance-count]");return o&&(r.instanceCount=Number(o.getAttribute("data-uicopilot-instance-count"))),b.debug("[computedStyles] DOM tree extracted:",{rootSelector:r.selector,childrenCount:r.children.length,totalNodes:I7(r)}),r}function Eu(e=4){b.debug("[extractStoryDOMTree] Starting DOM tree extraction...");try{let t=document.getElementById("storybook-preview-iframe");if(b.debug("[extractStoryDOMTree] iframe found:",!!t),!t)throw new Error("Storybook preview iframe not found");if(b.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(b.debug("[extractStoryDOMTree] storyRoot found:",!!n),!n)throw new Error("Story root element not found");let r=Ca(n);if(b.debug("[extractStoryDOMTree] componentElement found:",!!r,r?.tagName),!r)throw new Error("Component element not found in story root");let o=Ll(r,e);return b.debug("[extractStoryDOMTree] DOM tree extracted successfully:",{selector:o.selector,childrenCount:o.children.length}),o}catch(t){return b.error("[extractStoryDOMTree] Error extracting DOM tree:",t),null}}var WX,YX,R7=$(()=>{"use strict";Pe();ku();If();fu();T7();WX=["input","textarea","button","select","label","span","a","p","h1","h2","h3","h4","h5","h6"];YX="data-uicopilot-instance"});var Bl=$(()=>{"use strict";ku();If();C7();R7()});var PR=ao((N4e,MR)=>{"use strict";MR.exports={compareTwoStrings:FR,findBestMatch:GQ};function FR(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),a=n.has(i)?n.get(i)+1:1;n.set(i,a)}let r=0;for(let o=0;o<t.length-1;o++){let i=t.substring(o,o+2),a=n.has(i)?n.get(i):0;a>0&&(n.set(i,a-1),r++)}return 2*r/(e.length+t.length-2)}function GQ(e,t){if(!qQ(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 a=t[i],s=FR(e,a);n.push({target:a,rating:s}),s>n[r].rating&&(r=i)}let o=n[r];return{ratings:n,bestMatch:o,bestMatchIndex:r}}function qQ(e,t){return!(typeof e!="string"||!Array.isArray(t)||!t.length||t.find(function(n){return typeof n!="string"}))}});var tP=ao((GMe,eP)=>{"use strict";var XM=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,goe=/\n/g,moe=/^\s*/,hoe=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,xoe=/^:\s*/,yoe=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,boe=/^[;\s]*/,woe=/^\s+|\s+$/g,voe=`
14
14
  `,JM="/",QM="*",Ms="",Soe="comment",koe="declaration";function Coe(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(g){var m=g.match(goe);m&&(n+=m.length);var C=g.lastIndexOf(voe);r=~C?g.length-C:r+g.length}function i(){var g={line:n,column:r};return function(m){return m.position=new a(g),u(),m}}function a(g){this.start=g,this.end={line:n,column:r},this.source=t.source}a.prototype.content=e;function s(g){var m=new Error(t.source+":"+n+":"+r+": "+g);if(m.reason=g,m.filename=t.source,m.line=n,m.column=r,m.source=e,!t.silent)throw m}function c(g){var m=g.exec(e);if(m){var C=m[0];return o(C),e=e.slice(C.length),m}}function u(){c(moe)}function l(g){var m;for(g=g||[];m=d();)m!==!1&&g.push(m);return g}function d(){var g=i();if(!(JM!=e.charAt(0)||QM!=e.charAt(1))){for(var m=2;Ms!=e.charAt(m)&&(QM!=e.charAt(m)||JM!=e.charAt(m+1));)++m;if(m+=2,Ms===e.charAt(m-1))return s("End of comment missing");var C=e.slice(2,m-2);return r+=2,o(C),e=e.slice(m),r+=2,g({type:Soe,comment:C})}}function f(){var g=i(),m=c(hoe);if(m){if(d(),!c(xoe))return s("property missing ':'");var C=c(yoe),v=g({type:koe,property:ZM(m[0].replace(XM,Ms)),value:C?ZM(C[0].replace(XM,Ms)):Ms});return c(boe),v}}function p(){var g=[];l(g);for(var m;m=f();)m!==!1&&(g.push(m),l(g));return g}return u(),p()}function ZM(e){return e?e.replace(woe,Ms):Ms}eP.exports=Coe});var nP=ao(rp=>{"use strict";var Eoe=rp&&rp.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(rp,"__esModule",{value:!0});rp.default=Ioe;var Toe=Eoe(tP());function Ioe(e,t){let n=null;if(!e||typeof e!="string")return n;let r=(0,Toe.default)(e),o=typeof t=="function";return r.forEach(i=>{if(i.type!=="declaration")return;let{property:a,value:s}=i;o?t(a,s,i):s&&(n=n||{},n[a]=s)}),n}});var oP=ao(qg=>{"use strict";Object.defineProperty(qg,"__esModule",{value:!0});qg.camelCase=void 0;var Roe=/^--[a-zA-Z0-9_-]+$/,Aoe=/-([a-z])/g,Foe=/^[^-]+$/,Moe=/^-(webkit|moz|ms|o|khtml)-/,Poe=/^-(ms)-/,_oe=function(e){return!e||Foe.test(e)||Roe.test(e)},Loe=function(e,t){return t.toUpperCase()},rP=function(e,t){return"".concat(t,"-")},Boe=function(e,t){return t===void 0&&(t={}),_oe(e)?e:(e=e.toLowerCase(),t.reactCompat?e=e.replace(Poe,rP):e=e.replace(Moe,rP),e.replace(Aoe,Loe))};qg.camelCase=Boe});var aP=ao((uv,iP)=>{"use strict";var zoe=uv&&uv.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},Doe=zoe(nP()),Noe=oP();function cv(e,t){var n={};return!e||typeof e!="string"||(0,Doe.default)(e,function(r,o){r&&o&&(n[(0,Noe.camelCase)(r,t)]=o)}),n}cv.default=cv;iP.exports=cv});var _9=ao((vze,P9)=>{"use strict";var hm=Object.prototype.hasOwnProperty,M9=Object.prototype.toString,E9=Object.defineProperty,T9=Object.getOwnPropertyDescriptor,I9=function(t){return typeof Array.isArray=="function"?Array.isArray(t):M9.call(t)==="[object Array]"},R9=function(t){if(!t||M9.call(t)!=="[object Object]")return!1;var n=hm.call(t,"constructor"),r=t.constructor&&t.constructor.prototype&&hm.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!n&&!r)return!1;var o;for(o in t);return typeof o>"u"||hm.call(t,o)},A9=function(t,n){E9&&n.name==="__proto__"?E9(t,n.name,{enumerable:!0,configurable:!0,value:n.newValue,writable:!0}):t[n.name]=n.newValue},F9=function(t,n){if(n==="__proto__")if(hm.call(t,n)){if(T9)return T9(t,n).value}else return;return t[n]};P9.exports=function e(){var t,n,r,o,i,a,s=arguments[0],c=1,u=arguments.length,l=!1;for(typeof s=="boolean"&&(l=s,s=arguments[1]||{},c=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});c<u;++c)if(t=arguments[c],t!=null)for(n in t)r=F9(s,n),o=F9(t,n),s!==o&&(l&&o&&(R9(o)||(i=I9(o)))?(i?(i=!1,a=r&&I9(r)?r:[]):a=r&&R9(r)?r:{},A9(s,{name:n,newValue:e(l,a,o)})):typeof o<"u"&&A9(s,{name:n,newValue:o}));return s}});import ro from"react";import{addons as qp,types as k0,experimental_getStatusStore as zk}from"storybook/manager-api";import{AddonPanel as jN}from"storybook/internal/components";import{styled as WN}from"storybook/theming";import{styled as cn}from"storybook/theming";var W="#ea580c",lo="#c2410c",C0="#ff6b35",Dk="#A259FF",Nk="#8a3de8",Ok=W,$k="#d1d5db",Di="#7c3aed",rs="#9747ff",pe={red:"#ef4444",amber:"#f59e0b",green:"#16a34a",linked:"#9ca3af",redText:"#b91c1c",amberText:"#b45309",greenText:"#16a34a",criticalRail:"#dc2626",criticalLabel:"#dc2626",majorLabel:"#f59e0b",minorLabel:"#f59e0b",minorRail:"#fbbf24"},Hk="#c4b5fd",E0="#ffffff",Ni={darkBg:"#1e293b",lightBg:"#f8fafc",darkText:"#e2e8f0",lightText:"#1e293b"},si={highText:pe.green,mediumText:"#ca8a04",lowText:pe.criticalRail,highBg:"#dcfce7",mediumBg:"#fef9c3",lowBg:"#fee2e2"},os={programmaticBg:"#4b5563",aiBg:"#0369a1",userBg:Di,text:E0},Uk={color:{text:"#1d4ed8",bg:"rgba(59, 130, 246, 0.1)",border:"rgba(59, 130, 246, 0.25)"},spacing:{text:"#c2410c",bg:"rgba(249, 115, 22, 0.1)",border:"rgba(249, 115, 22, 0.25)"},typography:{text:"#be185d",bg:"rgba(236, 72, 153, 0.1)",border:"rgba(236, 72, 153, 0.25)"},border:{text:"#047857",bg:"rgba(16, 185, 129, 0.1)",border:"rgba(16, 185, 129, 0.25)"},layout:{text:"#0f766e",bg:"rgba(20, 184, 166, 0.1)",border:"rgba(20, 184, 166, 0.25)"},sizing:{text:"#6d28d9",bg:"rgba(139, 92, 246, 0.1)",border:"rgba(139, 92, 246, 0.25)"}},T0={spec:"#c2410c",ai:"#6d28d9"},Q={card:"#ffffff",green:"#10b981",border:"#e5e7eb",track:"#f1f5f9",muted:"#6b7280",locked:"#9ca3af",text:"#111827",subText:"#374151",formBg:"#fafafa",lockedBtnBg:"#f3f4f6",calloutBg:"#fffbeb",calloutText:"#b45309",accentTint:"#fff7ed"},is={snapshotBg:"#ede9fe",snapshotText:"#6d28d9",infoBg:"#eff6ff",infoText:"#1d4ed8",dropBg:"#fafafa",dropBgHover:"#f3f4f6"},as={pillBg:"#fff7ed",pillBorder:"#f5d0b5",iconFrom:"#d97706",iconTo:lo,badgeBg:"#fef3c7",badgeText:"#92400e"},ol={bgIdle:"#f1f5f9",bgActive:"#eff6ff",iconIdle:"#94a3b8",iconActive:"#3b82f6"};var jk=cn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,height:"100%",display:"flex",flexDirection:"column",backgroundColor:e.background.content,color:e.color.defaultText})),Vk=cn.div(({theme:e})=>({flex:1,overflow:"auto",padding:"6px 12px 12px",backgroundColor:e.background.app})),Qp=cn.div({marginBottom:"20px"}),Zp=cn.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})),Ec=cn.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*2,backgroundColor:e.input.background,color:e.color.defaultText,"&:focus":{outline:"none",borderColor:e.color.secondary,boxShadow:`0 0 0 2px ${e.color.secondary}20`}})),Fr=cn.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*2,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"}})),ed=cn(Fr)(({theme:e})=>({width:"auto",padding:`${e.layoutMargin*.6}px 28px ${e.layoutMargin*.6}px ${e.layoutMargin}px`,fontSize:e.typography.size.s1})),td=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*2,cursor:"pointer",transition:"all 0.15s","&:disabled":{opacity:.5,cursor:"not-allowed"}}),Oi=cn.button(({theme:e})=>({...td(e),backgroundColor:e.color.secondary,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9}})),tn=cn.button(({theme:e})=>({...td(e),backgroundColor:W,color:e.color.inverseText,boxShadow:`0 2px 4px ${W}4d`,"&:hover:not(:disabled)":{backgroundColor:lo,transform:"translateY(-1px)",boxShadow:`0 4px 8px ${W}66`}})),co=cn.button(({theme:e})=>({...td(e),backgroundColor:"transparent",border:`1px solid ${e.appBorderColor}`,color:e.color.defaultText,"&:hover:not(:disabled)":{backgroundColor:e.background.hoverable}})),Wk=cn.button(({theme:e})=>({...td(e),backgroundColor:e.color.negative,color:e.color.inverseText,"&:hover:not(:disabled)":{opacity:.9}})),qr=cn.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"}})),I0=cn.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"}})),ha=cn.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}})),xa=cn(Ec)(({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"})),b0e=cn.div(({theme:e})=>({padding:`${e.layoutMargin*1.6}px`,borderRadius:e.appBorderRadius*2.5,border:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.content})),Gk=cn.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})),w0e=cn.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})),R0=cn.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})),A0=cn.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%)"}}})),qk=cn.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}}),Tc=cn.div(({theme:e})=>({padding:"40px 20px",textAlign:"center",color:e.color.mediumdark})),v0e=cn.div(({theme:e})=>({fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,marginBottom:`${e.layoutMargin*.8}px`,color:e.color.defaultText})),Ic=cn.div(({theme:e})=>({fontSize:e.typography.size.s2,color:e.color.mediumdark}));import gt,{useState as epe,useEffect as YS}from"react";import{styled as Sr}from"storybook/theming";import Yk from"react";var F0=({header:e,children:t,footer:n})=>Yk.createElement(jk,null,e,Yk.createElement(Vk,null,t),n);import ZN from"react";import{styled as eO}from"storybook/theming";var tO=eO.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})),M0=({toolbar:e})=>ZN.createElement(tO,null,e);import M0e from"react";import{styled as nd}from"storybook/theming";var L0e=nd.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})),B0e=nd.div({display:"flex",flex:1}),z0e=nd(ha)(({theme:e,disabled:t})=>({padding:"6px 12px",...t?{color:e.color.mediumlight,cursor:"not-allowed",opacity:.5,"&:hover":{}}:{}})),D0e=nd.div({display:"flex",gap:"8px",alignItems:"center"});import St,{useState as Mu,useCallback as b5,useEffect as Wf,useRef as nQ}from"react";import{styled as Mn}from"storybook/theming";import Ie from"react";var Kk=()=>Ie.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"},Ie.createElement("path",{d:"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"}),Ie.createElement("circle",{cx:"12",cy:"12",r:"3"})),Rc=()=>Ie.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"},Ie.createElement("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),Ie.createElement("circle",{cx:"12",cy:"7",r:"4"})),Yr={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"},Ac=()=>Ie.createElement("svg",{...Yr},Ie.createElement("circle",{cx:"11",cy:"11",r:"8"}),Ie.createElement("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})),Xk=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"M18.84 12.25l1.72-1.71a5 5 0 0 0-7.07-7.07l-1.71 1.71"}),Ie.createElement("path",{d:"M5.17 11.75l-1.71 1.71a5 5 0 0 0 7.07 7.07l1.71-1.71"}),Ie.createElement("line",{x1:"8",y1:"2",x2:"8",y2:"5"}),Ie.createElement("line",{x1:"2",y1:"8",x2:"5",y2:"8"}),Ie.createElement("line",{x1:"16",y1:"22",x2:"16",y2:"19"}),Ie.createElement("line",{x1:"22",y1:"16",x2:"19",y2:"16"})),Jk=()=>Ie.createElement("svg",{...Yr},Ie.createElement("polyline",{points:"23 4 23 10 17 10"}),Ie.createElement("polyline",{points:"1 20 1 14 7 14"}),Ie.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"}));var P0=()=>Ie.createElement("svg",{...Yr},Ie.createElement("circle",{cx:"12",cy:"12",r:"3"}),Ie.createElement("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})),rd=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"M12 3l1.9 5.1L19 10l-5.1 1.9L12 17l-1.9-5.1L5 10l5.1-1.9L12 3z"}),Ie.createElement("path",{d:"M19 14l.7 1.9L21.6 17l-1.9.7L19 19.6l-.7-1.9L16.4 17l1.9-.7L19 14z"})),Qk=()=>Ie.createElement("svg",{...Yr},Ie.createElement("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),Ie.createElement("polyline",{points:"12 5 19 12 12 19"})),Zk=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),Ie.createElement("polyline",{points:"17 8 12 3 7 8"}),Ie.createElement("line",{x1:"12",y1:"3",x2:"12",y2:"15"})),eC=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72Z"}),Ie.createElement("path",{d:"m14 7 3 3"}),Ie.createElement("path",{d:"M5 6v4"}),Ie.createElement("path",{d:"M19 14v4"}),Ie.createElement("path",{d:"M10 2v2"}),Ie.createElement("path",{d:"M7 8H3"}),Ie.createElement("path",{d:"M21 16h-4"}),Ie.createElement("path",{d:"M11 3H9"})),tC=()=>Ie.createElement("svg",{...Yr},Ie.createElement("polyline",{points:"6 9 12 15 18 9"})),nC=()=>Ie.createElement("svg",{...Yr},Ie.createElement("polyline",{points:"20 6 9 17 4 12"})),rC=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"M7 10v12"}),Ie.createElement("path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"})),oC=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"M3 3v5h5"}),Ie.createElement("path",{d:"M3.05 13A9 9 0 1 0 6 5.3L3 8"}),Ie.createElement("path",{d:"M12 7v5l4 2"})),_0=()=>Ie.createElement("svg",{...Yr},Ie.createElement("path",{d:"M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5a2 2 0 0 0 2 2h1"}),Ie.createElement("path",{d:"M16 3h1a2 2 0 0 1 2 2v5a2 2 0 0 0 2 2 2 2 0 0 0-2 2v5a2 2 0 0 1-2 2h-1"})),$i=()=>Ie.createElement("svg",{width:"10",height:"15",viewBox:"0 0 38 57","aria-label":"Figma",role:"img"},Ie.createElement("path",{fill:"#1abcfe",d:"M19 28.5a9.5 9.5 0 1 1 19 0 9.5 9.5 0 0 1-19 0z"}),Ie.createElement("path",{fill:"#0acf83",d:"M0 47.5A9.5 9.5 0 0 1 9.5 38H19v9.5a9.5 9.5 0 1 1-19 0z"}),Ie.createElement("path",{fill:"#ff7262",d:"M19 0v19h9.5a9.5 9.5 0 1 0 0-19H19z"}),Ie.createElement("path",{fill:"#f24e1e",d:"M0 9.5A9.5 9.5 0 0 0 9.5 19H19V0H9.5A9.5 9.5 0 0 0 0 9.5z"}),Ie.createElement("path",{fill:"#a259ff",d:"M0 28.5A9.5 9.5 0 0 0 9.5 38H19V19H9.5A9.5 9.5 0 0 0 0 28.5z"})),L0=()=>Ie.createElement("svg",{width:"13",height:"13",viewBox:"0 0 64 64","aria-label":"Storybook",role:"img"},Ie.createElement("path",{fill:"#ff4785",d:"M8 4l1.5 56L56 62l2-58z"}),Ie.createElement("path",{fill:"#fff",d:"M40.5 18.2c-.2 1.5-3.6 2.4-7.6 2.1-4-.3-7-1.6-6.9-3.1.1-1.4 2.4-2 5.3-2 .8 0 1.2-.4 1.2-1.1 0-1.6-3.6-2.6-7-2.6-7 0-10.6 3.8-10.6 7.6 0 6.6 8.9 7 11.4 7.2 5.5.4 6.9 1.5 6.9 3 0 1.6-2.1 2.6-5 2.6-3.8 0-5.6-1.4-5.7-3.1 0-.6-.4-1-1-1l-3.5.1c-.6 0-1 .4-1 1 .2 4.7 4.3 7.6 11.3 7.6 6.7 0 11.2-3.1 11.2-7.6 0-5.7-5-7-11.1-7.5-4.2-.3-6.5-.6-6.5-2 0-1 1.8-1.8 4.4-1.8 2.5 0 4.2.6 4.4 1.7.1.6.5 1 1.1 1l3.5-.1c.6-.1 1-.5 1-1.1z"}));import Oe,{useEffect as r3}from"react";import{styled as It}from"storybook/theming";Ce();Me();Pe();nt();var o3=It.div({position:"fixed",top:0,left:0,right:0,bottom:0,zIndex:1e4}),i3=It.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})),ZG=It.div({display:"flex",alignItems:"center",gap:"12px",padding:"16px 16px 12px"}),eq=It.div({width:"36px",height:"36px",borderRadius:"50%",backgroundColor:W,display:"flex",alignItems:"center",justifyContent:"center",color:"#fff",fontSize:"14px",fontWeight:700,flexShrink:0}),tq=It.div({display:"flex",flexDirection:"column",gap:"4px"}),nq=It.div(({theme:e})=>({fontSize:"15px",fontWeight:600,color:e.color.defaultText,lineHeight:1.2})),rq=It.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"}),oq=It.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"10px 16px 8px",fontSize:"14px",color:e.color.defaultText})),iq=It.span(({theme:e})=>({color:e.textMutedColor,fontSize:"13px"})),aq=It.span(({theme:e})=>({color:e.color.defaultText,fontSize:"15px",fontWeight:600})),sq=It.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"})),lq=It.div(({percent:e})=>({height:"100%",width:`${Math.min(100,Math.max(0,e))}%`,background:`linear-gradient(90deg, #f59e0b 0%, ${W} 100%)`,transition:"width 0.3s ease"})),cq=It.div(({theme:e})=>({padding:"0 16px 14px",fontSize:"12px",color:e.textMutedColor})),uq=It.div(({theme:e})=>({height:"1px",backgroundColor:e.appBorderColor})),pq=It.button({width:"100%",padding:"14px 16px",background:"transparent",border:"none",color:W,fontSize:"14px",fontWeight:500,textAlign:"left",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px","&:hover":{backgroundColor:"rgba(0, 0, 0, 0.03)"}}),a3=It.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}})),dq=It.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px",borderBottom:`1px solid ${e.appBorderColor}`})),fq=It.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"10px",color:e.color.defaultText,fontSize:"14px",fontWeight:500})),gq=It.div(({theme:e})=>({width:"32px",height:"32px",borderRadius:"50%",backgroundColor:W,display:"flex",alignItems:"center",justifyContent:"center",color:e.color.inverseText,fontSize:"14px",fontWeight:600})),mq=It.div({display:"flex",gap:"8px"}),s3=It(qr)({fontSize:"18px"}),hq=It.div({padding:"20px 16px"}),xq=It.div(({theme:e})=>({padding:"16px",borderRadius:"8px",background:"linear-gradient(135deg, #10B981 0%, #3B82F6 100%)",marginBottom:"16px",color:"#fff"})),yq=It.div({fontSize:"12px",fontWeight:500,opacity:.9,marginBottom:"4px"}),bq=It.div({fontSize:"28px",fontWeight:700}),wq=It.div({fontSize:"11px",opacity:.8,marginTop:"4px"}),vq=It.div(({theme:e})=>({padding:"16px",borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,marginBottom:"16px"})),Sq=It.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),kq=It.div({display:"flex",alignItems:"center",gap:"8px"}),Cq=It.span(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),Eq=It.span(({theme:e})=>({fontSize:"10px",fontWeight:600,padding:"2px 6px",borderRadius:"4px",backgroundColor:W,color:e.color.inverseText})),Tq=It.button(({theme:e})=>({background:"none",border:"none",color:W,fontSize:"12px",cursor:"pointer","&:hover":{textDecoration:"underline"}})),Iq=It.div(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),Rq=It.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"?W:e.background.hoverable,color:t==="primary"?e.color.inverseText:e.color.defaultText,"&:hover":{opacity:.9}})),Aq=30*1e3,l3=({onClose:e})=>{let{sessionToken:t,resetAuth:n,usageData:r,usageLastFetched:o,setUsageData:i}=we(),{featureFlags:a}=ve(),s=a.showCosts,c=r,u=!r&&t,l=async(g=!1)=>{if(!t)return;let m=o&&Date.now()-o<Aq;if(!(!g&&m&&r))try{let C=q(),v=await J(`${C}/api/addon/account`,{headers:{Authorization:`Bearer ${t}`}});if(v.ok){let h=await v.json();i(h)}}catch(C){b.error("Failed to fetch usage:",C)}};r3(()=>{l()},[t]),r3(()=>{let g=()=>{document.visibilityState==="visible"&&(b.debug("[TokenUsageModal] Tab visible, refreshing balance..."),l(!0))};return document.addEventListener("visibilitychange",g),()=>document.removeEventListener("visibilitychange",g)},[t]);let d=async()=>{if(t){let g=q();try{await fetch(`${g}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${t}`}})}catch{}}n(),e()},f=()=>{let g=q();window.open(`${g}/pricing`,"_blank")},p=()=>{let g=q();window.open(`${g}/pricing#add-credits`,"_blank")};if(t&&!s&&!u){let g=Math.floor(c?.creditBalance??0),C=Math.max(g,10),v=Math.max(0,C-g),h=C>0?g/C*100:0;return Oe.createElement(Oe.Fragment,null,Oe.createElement(o3,{onClick:e}),Oe.createElement(i3,{onClick:M=>M.stopPropagation(),style:{width:"320px"}},Oe.createElement(ZG,null,Oe.createElement(eq,null,(c?.name||c?.email||"U")[0].toUpperCase()),Oe.createElement(tq,null,Oe.createElement(nq,null,c?.name||c?.email||"Your account"),Oe.createElement(rq,null,(c?.plan||"FREE").toUpperCase())),Oe.createElement("div",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:"2px"}},Oe.createElement(a3,{onClick:d,title:"Sign out",style:{position:"static"}},Oe.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Oe.createElement("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),Oe.createElement("polyline",{points:"16 17 21 12 16 7"}),Oe.createElement("line",{x1:"21",y1:"12",x2:"9",y2:"12"}))),Oe.createElement(a3,{onClick:e,title:"Close",style:{position:"static"}},"\xD7"))),Oe.createElement(oq,null,Oe.createElement(iq,null,"Credits"),Oe.createElement(aq,null,g," left")),Oe.createElement(sq,null,Oe.createElement(lq,{percent:h})),Oe.createElement(cq,null,v," used \xB7 ",g," remaining"),Oe.createElement(uq,null),Oe.createElement(pq,{onClick:()=>window.open("mailto:hello@uiparity.com?subject=Credits request","_blank")},"Contact us for credits \u2192")))}return Oe.createElement(Oe.Fragment,null,Oe.createElement(o3,{onClick:e}),Oe.createElement(i3,{onClick:g=>g.stopPropagation()},Oe.createElement(dq,null,Oe.createElement(fq,null,Oe.createElement(gq,null,c?.email?c.email[0].toUpperCase():"U"),Oe.createElement("span",null,c?.email||"Loading...")),Oe.createElement(mq,null,Oe.createElement(s3,{onClick:d,title:"Sign out"},Oe.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Oe.createElement("path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}),Oe.createElement("polyline",{points:"16 17 21 12 16 7"}),Oe.createElement("line",{x1:"21",y1:"12",x2:"9",y2:"12"}))),Oe.createElement(s3,{onClick:e,title:"Close"},"\xD7"))),Oe.createElement(hq,null,u?Oe.createElement("div",{style:{textAlign:"center",padding:"20px"}},"Loading..."):t?Oe.createElement(Oe.Fragment,null,Oe.createElement(xq,null,Oe.createElement(yq,null,"Credit Balance"),Oe.createElement(bq,null,"$",(c?.creditBalance??0).toFixed(2)),Oe.createElement(wq,null,(c?.creditBalance??0)<2?"Low balance - consider topping up":"Pay only for what you use")),Oe.createElement(vq,null,Oe.createElement(Sq,null,Oe.createElement(kq,null,Oe.createElement(Cq,null,"Current Plan"),Oe.createElement(Eq,null,c?.plan||"Free")),Oe.createElement(Tq,{onClick:f},"View detail >")),Oe.createElement(Iq,null,"~$0.02-0.05 per review depending on complexity"),Oe.createElement(Rq,{onClick:p,style:{marginTop:"16px"}},"Add Credits"))):Oe.createElement("div",{style:{textAlign:"center",padding:"20px"}},"Please sign in to view usage"))))};pn();Ce();import Sl from"react";import{styled as c3}from"storybook/theming";Me();Ce();nt();Pe();var Fq=c3.div({display:"flex",alignItems:"center",gap:"8px",flexWrap:"wrap"}),Mq=c3.span(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark})),u3=()=>{let{userRole:e,roleOverride:t,setRoleOverride:n,setFeatureFlags:r}=ve(),{sessionToken:o}=we();return e!=="admin"?null:Sl.createElement(Fq,null,Sl.createElement(Mq,null,"View as:"),Sl.createElement(ed,{value:t??e,onChange:s=>{let c=s.target.value;if(c===e)n(null),o&&J(`${q()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(u=>u.json()).then(u=>{let l={enableFixGeneration:!!u.enableFixGeneration,enableFixApply:!!u.enableFixApply,enableAutoMap:!!u.enableAutoMap,enableAutoFigmaLinking:!!u.enableAutoFigmaLinking,enableReviewBadges:!!u.enableReviewBadges,showCosts:!!u.showCosts,enableParallelReview:!!u.enableParallelReview,enableModelSelection:!!u.enableModelSelection};r(l);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(l))}catch{}}).catch(u=>b.warn("[RoleSwitcher] Failed to re-fetch flags:",u.message));else{n(c);let u=au[c];r(u);try{localStorage.setItem("uicopilot_feature_flags",JSON.stringify(u))}catch{}}},style:{width:"auto",minWidth:"100px"}},Sl.createElement("option",{value:"admin"},"Admin"),Sl.createElement("option",{value:"beta"},"Regular user")),t&&Sl.createElement(qk,{variant:"warning"},"Previewing as"," ",t==="beta"?"regular user":t))};Me();Ce();nt();import Ot,{useState as lu,useCallback as xb}from"react";import{styled as Ho}from"storybook/theming";var Pq="0.5.7",_q=[{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"}],Lq=Ho.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center"}),Bq=Ho.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)"})),zq=Ho.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px 12px",borderBottom:`1px solid ${e.appBorderColor}`})),Dq=Ho.h3(({theme:e})=>({margin:0,fontSize:"15px",fontWeight:600,color:e.color.defaultText,display:"flex",alignItems:"center",gap:"8px"})),Nq=Ho.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}})),Oq=Ho.div({padding:"16px 20px",display:"flex",flexDirection:"column",gap:"14px"}),$q=Ho.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:W}})),p3=Ho.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 20px 16px",borderTop:`1px solid ${e.appBorderColor}`,gap:"8px"})),d3=Ho.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s1,color:e.color.mediumdark,lineHeight:1.4})),Hq=Ho.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s1,color:e.color.negative})),Uq=Ho.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 f3({isOpen:e,onClose:t}){let{sessionToken:n,isConnected:r}=we(),{selectedProjectId:o}=We(),{currentStoryId:i}=yt(),[a,s]=lu("other"),[c,u]=lu(""),[l,d]=lu(!1),[f,p]=lu(!1),[g,m]=lu(null),C=xb(()=>{u(""),s("other"),p(!1),m(null),d(!1)},[]),v=xb(()=>{C(),t()},[C,t]),h=xb(async M=>{if(M.preventDefault(),!c.trim()){m("Please write a message.");return}if(!r||!n){m("Sign in to send feedback.");return}d(!0),m(null);try{let L=await J(`${q()}/api/feedback`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({message:c.trim(),severity:a,projectId:o||void 0,storyId:i||void 0,addonVersion:Pq})});if(!L.ok){let z=await L.json().catch(()=>({}));throw new Error(z.error||`Request failed (${L.status})`)}p(!0)}catch(L){m(L instanceof Error?L.message:"Something went wrong")}finally{d(!1)}},[c,a,n,r,o,i]);return e?Ot.createElement(Lq,{onClick:v},Ot.createElement(Bq,{onClick:M=>M.stopPropagation()},Ot.createElement(zq,null,Ot.createElement(Dq,null,Ot.createElement("span",null,"\u{1F4AC}"),"Send feedback"),Ot.createElement(Nq,{onClick:v,"aria-label":"Close"},"\xD7")),f?Ot.createElement(Ot.Fragment,null,Ot.createElement(Uq,null,Ot.createElement("h4",null,"Thanks \u2014 got it."),Ot.createElement("p",null,"We read every message. If it's a bug, we'll likely follow up by email.")),Ot.createElement(p3,null,Ot.createElement("span",null),Ot.createElement(Oi,{onClick:v},"Close"))):Ot.createElement("form",{onSubmit:h},Ot.createElement(Oq,null,Ot.createElement(Qp,null,Ot.createElement(Zp,{htmlFor:"feedback-severity"},"Type"),Ot.createElement(Fr,{id:"feedback-severity",value:a,onChange:M=>s(M.target.value),disabled:l},_q.map(M=>Ot.createElement("option",{key:M.value,value:M.value},M.label)))),Ot.createElement(Qp,null,Ot.createElement(Zp,{htmlFor:"feedback-message"},"What happened?"),Ot.createElement($q,{id:"feedback-message",value:c,onChange:M=>u(M.target.value),placeholder:"Tell us what you were doing, what you expected, and what happened.",disabled:l,autoFocus:!0,maxLength:5e3})),Ot.createElement(d3,null,"We auto-attach your current story and project so we can reproduce it. No screenshots sent."),g&&Ot.createElement(Hq,null,g)),Ot.createElement(p3,null,Ot.createElement(d3,null,i?`Context: ${i}`:"No story selected"),Ot.createElement("div",{style:{display:"flex",gap:"8px"}},Ot.createElement(Oi,{type:"button",onClick:v,disabled:l},"Cancel"),Ot.createElement(tn,{type:"submit",disabled:l||!c.trim()},l?"Sending\u2026":"Send")))))):null}Ce();import _e,{useCallback as Z7,useEffect as ZJ,useState as Fu}from"react";import{styled as eQ}from"storybook/theming";Me();nt();Me();nt();import{useCallback as yb,useEffect as jq,useRef as g3,useState as Vq}from"react";var m3=15e3,Wq=2e3,bb={connected:!1,mapped:0,totalStories:0,crawling:!1,pagesDone:0,pagesTotal:0,errored:!1};function h3(e,t,n){let[r,o]=Vq(bb),i=g3(null),a=g3(!0),s=yb(async()=>{if(!e||!t)return o(bb),m3;let l=q(),d={Authorization:`Bearer ${t}`},f={...bb,totalStories:n};try{let[p,g]=await Promise.all([J(`${l}/api/figma/cache-status?projectId=${encodeURIComponent(e)}`,{headers:d}).catch(()=>null),J(`${l}/api/mappings?projectId=${encodeURIComponent(e)}`,{headers:d}).catch(()=>null)]);if(p?.ok){let m=await p.json(),C=m.crawlProgress;f={...f,connected:(m.structureStatus??"none")!=="none",crawling:C?.status==="crawling"||C?.status==="cancelling",pagesDone:C?.pagesDone??0,pagesTotal:C?.pagesTotal??0,...C?.currentPage?{currentPage:C.currentPage}:{},...C?.phase?{phase:C.phase}:{},...C?.setsFound!=null?{setsFound:C.setsFound}:{},errored:C?.status==="error",...C?.error?{error:C.error}:{},...m.structureCachedAt?{lastSyncAt:m.structureCachedAt}:{},...m.componentSetCount!=null?{setsIndexed:m.componentSetCount}:{},...m.totalVariants!=null?{variantsIndexed:m.totalVariants}:{},...m.pageCount!=null?{pagesIndexed:m.pageCount}:{},...m.cacheDiff?.added?.length?{addedCount:m.cacheDiff.added.length}:{},...m.cacheDiff?.removed?.length?{removedCount:m.cacheDiff.removed.length}:{}}}if(g?.ok){let m=await g.json();f.mapped=m.mappings?.length??0,f.mapped>0&&(f.connected=!0)}}catch{}return a.current&&o(f),f.crawling?Wq:m3},[e,t,n]),c=yb(()=>{s().then(l=>{a.current&&(i.current=setTimeout(c,l))})},[s]);jq(()=>(a.current=!0,c(),()=>{a.current=!1,i.current&&clearTimeout(i.current)}),[c]);let u=yb(()=>{i.current&&clearTimeout(i.current),c()},[c]);return{status:r,refresh:u}}function x3(e){if(e.crawling){if(e.phase==="repairing")return{text:"Fetching nested variants\u2026",tone:"busy"};let t=e.pagesTotal>0?` ${e.pagesDone}/${e.pagesTotal}`:"";return{text:e.currentPage?`Reading \u201C${e.currentPage}\u201D${t}`:`Importing${t}`,tone:"busy"}}return e.errored?{text:"Figma sync failed",tone:"warn"}:e.connected?e.mapped===0?{text:e.totalStories>0?`Map ${e.totalStories} stories`:"Map stories",tone:"action"}:{text:e.totalStories>0?`${e.mapped}/${e.totalStories}`:`${e.mapped} mapped`,tone:"idle"}:{text:"Connect Figma",tone:"action"}}function wb(e){if(!e)return null;let t=new Date(e).getTime();if(Number.isNaN(t))return null;let n=Math.floor((Date.now()-t)/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}var pi="data-uic-rollup",vb="data-uic-frac",Sb={success:1,warn:2,error:3},Gq=["linked","success","warn","error"];function y3(e){let t=e.indexOf("--");return t===-1?e:e.slice(0,t)}function kb(e,t,n,r,o,i,a){let s=new Map,c=0,u=0,l=0,d=0,f=0;e.forEach(C=>{let v=y3(C),h=s.get(v)??{mapped:0,worst:0,compared:0,drifted:0};h.mapped+=1;let M=n.get(C);if(M&&t.has(C)){h.worst=Math.max(h.worst,Sb[M]),h.compared+=1,M!=="success"&&(h.drifted+=1),M==="success"?c+=1:M==="warn"?u+=1:l+=1;let L=o?.get(C);typeof L=="number"&&(d+=L,f+=1)}s.set(v,h)});let p=[...s.entries()].map(([C,v])=>({id:C,mapped:v.mapped,total:Math.max(r.get(C)??v.mapped,v.mapped),worst:v.worst,compared:v.compared,drifted:v.drifted})),g=0;i?.forEach(C=>{e.has(C)&&(g+=1)});let m=0;return a?.forEach(C=>{e.has(C)&&i?.has(C)&&(m+=1)}),{mapped:e.size,reviewed:t.size,pass:c,warn:u,fail:l,incomparable:g,variantUnclear:m,avgScore:f>0?Math.round(d/f):null,components:p}}function b3(e,t,n,r){if(typeof document>"u")return;let o=new Map(kb(e,t,n,r).components.map(i=>[i.id,i]));document.querySelectorAll('[data-nodetype="component"]').forEach(i=>{let a=i.getAttribute("data-item-id"),s=a?o.get(a):void 0;if(!s){i.removeAttribute(pi),i.removeAttribute(vb);return}i.setAttribute(pi,Gq[s.worst]),i.setAttribute(vb,`${s.mapped}/${s.total}`),i.setAttribute("title",`${s.mapped} of ${s.total} stories mapped`)})}function w3(){return`
15
15
  [data-nodetype="component"][${pi}] { position: relative; }
@@ -84,7 +84,7 @@ ${w3()}
84
84
  `,document.head.appendChild(e)}function _3(e,t){let n=Math.max(t,e.mapped),r=e.pass+e.warn+e.fail,o=Math.min(e.variantUnclear,e.incomparable);return{stories:n,mapped:e.mapped,unmapped:Math.max(0,n-e.mapped),compared:r,matched:e.pass,drifted:e.warn+e.fail,critical:e.fail,driftedComponents:e.components.filter(i=>i.drifted>0).length,components:e.components.length,variantPick:o,nothingToCompare:Math.max(0,e.incomparable-o),notChecked:Math.max(0,e.mapped-r-e.incomparable)}}var El=(e,t)=>t>0?Math.round(e/t*100):null,L3=e=>El(e.matched,e.compared);function lf(e){let t=n=>n.compared>0?n.drifted/n.compared:-1;return[...e].sort((n,r)=>t(r)-t(n)||r.drifted-n.drifted||n.mapped/n.total-r.mapped/r.total)}import De,{useState as bs,useEffect as q7,useCallback as ho}from"react";import{createPortal as RJ}from"react-dom";import{styled as Bn}from"storybook/theming";import{useStorybookApi as AJ}from"storybook/manager-api";Me();Me();Pe();import ce,{useState as Pl,useEffect as W6,useMemo as Yb,useCallback as G6}from"react";import{styled as ft}from"storybook/theming";import{useState as xs,useMemo as o6,useCallback as Fl,useEffect as i6,useRef as uY}from"react";Me();Pe();nt();pn();import{useState as Zi,useEffect as cf,useRef as Tl,useCallback as Ib}from"react";var Yq=300;function B3({projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o=20,enabled:i=!0}){let[a,s]=Zi([]),[c,u]=Zi({}),[l,d]=Zi(0),[f,p]=Zi([]),[g,m]=Zi(new Set),[C,v]=Zi(!1),[h,M]=Zi(!1),[L,z]=Zi(null),A=Tl(1),D=Tl(null),y=Tl(null),[k,T]=Zi(0),F=Tl(!1),S=Tl({projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o});S.current={projectId:e,typeFilter:t,search:n,figmaPage:r,limit:o};let x=Ib(async(P,N,I=!1)=>{let{projectId:O,typeFilter:j,search:B,figmaPage:se,limit:H}=S.current;if(!O||!j)return;D.current&&D.current.abort();let V=new AbortController;D.current=V,N?M(!0):v(!0),z(null);try{let Z=q(),Y=localStorage.getItem("uicopilot_session_token");if(!Y)throw new Error(`Not authenticated. Please connect to ${Kt.NAME} first.`);let re=new URLSearchParams({projectId:O,page:String(P),limit:String(H)});j&&re.append("type",j),se&&re.append("figmaPage",se),B.trim()&&re.append("search",B.trim()),I&&re.append("refresh","true");let xe=await fetch(`${Z}/api/figma/frames?${re.toString()}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},signal:V.signal});if(!xe.ok){let Re=await xe.json();throw new Error(Re.error||"Failed to fetch frames")}let me=await xe.json(),Xe=me.frames||[],be=me.thumbnails||{},fe=xe.headers.get("X-Cache-Status");if(Xe.length===0&&P===1&&!N&&!I&&!F.current&&fe!=="HIT"){b.debug("[useFigmaFrameFetch] Empty result (cache miss), retrying with refresh=true"),F.current=!0,await x(1,!1,!0);return}N?(s(Re=>[...Re,...Xe]),u(Re=>({...Re,...be}))):(s(Xe),u(be)),d(me.total||Xe.length),me.pages&&p(me.pages),me.cacheDiff?.added&&m(new Set(me.cacheDiff.added)),A.current=P}catch(Z){if(Z instanceof DOMException&&Z.name==="AbortError")return;let Y=Z instanceof Error?Z.message:"Failed to fetch Figma frames.";z(Y),b.error("Error fetching frames:",Z)}finally{V.signal.aborted||(v(!1),M(!1))}},[]);cf(()=>{if(!i||!e||!t)return;F.current=!1,y.current&&clearTimeout(y.current);let P=n.trim()?Yq:0;return y.current=setTimeout(()=>{A.current=1,x(1,!1)},P),()=>{y.current&&clearTimeout(y.current)}},[e,t,n,r,i,k,x]);let E=Tl(new Set);cf(()=>{if(a.length===0)return;let P={};for(let N of a)N.thumbnailCdnUrl&&!c[N.id]&&(P[N.id]=N.thumbnailCdnUrl);Object.keys(P).length>0&&u(N=>({...N,...P}))},[a]),cf(()=>{if(a.length===0)return;let P=a.filter(I=>!I.thumbnailCdnUrl&&!c[I.id]&&!E.current.has(I.id)).map(I=>I.id);if(P.length===0)return;P.forEach(I=>E.current.add(I)),(async()=>{try{let{projectId:I}=S.current,O=q(),j=localStorage.getItem("uicopilot_session_token");if(!j||!I)return;let B=await J(`${O}/api/figma/frames?projectId=${I}&thumbnailIds=${P.join(",")}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${j}`}},6e4);if(B.ok){let se=await B.json();se.thumbnails&&Object.keys(se.thumbnails).length>0&&u(H=>({...H,...se.thumbnails}))}}catch(I){P.forEach(O=>E.current.delete(O)),b.error("Failed to fetch frame thumbnails:",I)}})()},[a,c]),cf(()=>()=>{D.current&&D.current.abort(),y.current&&clearTimeout(y.current)},[]);let w=Ib(async()=>{let P=A.current+1;await x(P,!0)},[x]),R=Ib(()=>{F.current=!1,A.current=1,s([]),u({}),T(P=>P+1)},[]),_=a.length<l;return{frames:a,thumbnails:c,totalFrames:l,availablePages:f,recentlyAdded:g,isLoading:C,loadingMore:h,hasMore:_,loadMore:w,refresh:R,error:L}}Me();Pe();nt();import{useState as Il,useCallback as uf,useRef as Kq}from"react";function z3({projectId:e}){let[t,n]=Il({}),[r,o]=Il({}),[i,a]=Il(new Set),[s,c]=Il(new Set),[u,l]=Il({}),[d,f]=Il(null),p=Kq({}),g=uf(async h=>{if(!(!e||i.has(h))){a(M=>new Set(M).add(h));try{let M=q(),L=localStorage.getItem("uicopilot_session_token"),z=await J(`${M}/api/figma/variants?projectId=${e}&componentSetId=${h}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`}});if(z.ok){let A=await z.json();if(A.variants){n(y=>({...y,[h]:A.variants}));let D={};for(let y of A.variants)y.thumbnailCdnUrl&&(D[y.id]=y.thumbnailCdnUrl);o(y=>({...y,[h]:{...y[h]||{},...D}})),p.current[h]||(p.current[h]=new Set),Object.keys(D).forEach(y=>p.current[h].add(y))}else o(D=>({...D,[h]:D[h]||{}}))}else o(A=>({...A,[h]:{}}))}catch(M){b.error("Failed to fetch variant metadata:",M),o(L=>({...L,[h]:{}}))}finally{a(M=>{let L=new Set(M);return L.delete(h),L})}}},[e,i]),m=uf(async(h,M)=>{if(!e||M.length===0)return;p.current[h]||(p.current[h]=new Set);let L=r[h]||{},z=M.filter(A=>!p.current[h].has(A)&&!L[A]);if(z.length!==0){z.forEach(A=>p.current[h].add(A)),c(A=>new Set(A).add(h));try{let A=q(),D=localStorage.getItem("uicopilot_session_token"),y=await J(`${A}/api/figma/variants?projectId=${e}&componentSetId=${h}&thumbnailIds=${z.join(",")}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${D}`}});if(y.ok){let k=await y.json();k.rateLimitError?(f(k.rateLimitError),z.forEach(T=>p.current[h]?.delete(T))):(k.thumbnails&&Object.keys(k.thumbnails).length>0&&o(T=>({...T,[h]:{...T[h]||{},...k.thumbnails}})),Array.isArray(k.failed)&&k.failed.length>0&&l(T=>{let F=new Set(T[h]||[]);for(let S of k.failed)F.add(S);return{...T,[h]:F}}))}}catch(A){b.error("Failed to fetch variant thumbnails:",A),z.forEach(D=>p.current[h]?.delete(D))}finally{c(A=>{let D=new Set(A);return D.delete(h),D})}}},[e]),C=uf(h=>{o(M=>{let L={...M};return delete L[h],L}),n(M=>{let L={...M};return delete L[h],L}),l(M=>{let L={...M};return delete L[h],L}),delete p.current[h]},[]),v=uf(()=>{o({}),n({}),l({}),p.current={}},[]);return{variantChildren:t,variantThumbnails:r,variantFailed:u,loadingVariants:i,loadingThumbnails:s,rateLimitError:d,fetchVariants:g,fetchVariantThumbnails:m,clearVariantsForSet:C,clearAllVariants:v}}Me();Al();Ce();Pe();nt();import{useState as q3,useEffect as Y3,useRef as K3,useCallback as Lb}from"react";function X3({expandedSetId:e,availableFilters:t,filtersReady:n}){let[r,o]=q3(null),[i,a]=q3(!1),s=K3(null),c=K3(new Set),u=Lb(async()=>{if(!e||!n||t.length===0||s.current===e||c.current.has(e))return;let f=Rl();if(!f||Object.keys(f).length===0)return;let p=Tt.getState().currentStoryId||"",g=p.replace(/--/g," / ").replace(/-/g," ").replace(/\b\w/g,m=>m.toUpperCase());s.current=e,a(!0),o(null);try{let m=q(),C=localStorage.getItem("uicopilot_session_token"),v=await J(`${m}/api/figma/match-filters`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${C}`},body:JSON.stringify({storyName:g,storyId:p,storyArgs:f,availableFilters:t.map(h=>({property:h.property,values:h.values}))})});if(v.ok){let h=await v.json();h.confidence>0&&Object.keys(h.suggestedFilters).length>0&&(b.debug("[useFilterSuggestion] Suggestion:",h),o(h))}else v.status===404?b.debug("[useFilterSuggestion] match-filters endpoint not available (404), skipping suggestions"):b.error("[useFilterSuggestion] Unexpected status:",v.status)}catch(m){b.error("[useFilterSuggestion] Error:",m)}finally{a(!1)}},[e,t,n]);Y3(()=>{u()},[u]),Y3(()=>{e||(o(null),s.current=null)},[e]);let l=Lb(()=>{},[]),d=Lb(()=>{e&&c.current.add(e),o(null)},[e]);return{suggestion:r,isLoading:i,applySuggestion:l,dismissSuggestion:d}}var gf={search:"",figmaPage:"",showComponentSets:!0,showFrames:!1,showComponents:!1},J3=e=>`uicopilot:figma-browser-prefs:${e}`;function Q3(e){if(!e||typeof sessionStorage>"u")return{...gf};try{let t=sessionStorage.getItem(J3(e));if(!t)return{...gf};let n=JSON.parse(t);return{...gf,...n}}catch{return{...gf}}}function Z3(e,t){if(!(!e||typeof sessionStorage>"u"))try{sessionStorage.setItem(J3(e),JSON.stringify(t))}catch{}}function e6(e,t,n){let r=[];return e&&r.push("COMPONENT_SET"),t&&r.push("FRAME"),n&&r.push("COMPONENT"),r.join(",")}function t6(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 n6(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 r6(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 gu({projectId:e,limit:t=20,enabled:n=!0}){let[r,o]=xs(!0),[i,a]=xs(!1),[s,c]=xs(!1),[u,l]=xs(""),[d,f]=xs(""),[p,g]=xs([]),[m,C]=xs(new Set),v=Fl(fe=>{l(fe),p.length>0&&g([]),m.size>0&&C(new Set)},[p.length,m.size]),h=uY(null);i6(()=>{if(!e||h.current===e)return;let fe=Q3(e);l(fe.search),f(fe.figmaPage),o(fe.showComponentSets),a(fe.showFrames),c(fe.showComponents),h.current=e},[e]),i6(()=>{!e||h.current!==e||Z3(e,{search:u,figmaPage:d,showComponentSets:r,showFrames:i,showComponents:s})},[e,u,d,r,i,s]);let M=e6(r,i,s),{frames:L,thumbnails:z,totalFrames:A,availablePages:D,recentlyAdded:y,isLoading:k,loadingMore:T,hasMore:F,loadMore:S,refresh:x,error:E}=B3({projectId:e,typeFilter:M,search:u,figmaPage:d||void 0,limit:t,enabled:n&&!!M}),{variantChildren:w,variantThumbnails:R,variantFailed:_,loadingVariants:P,loadingThumbnails:N,rateLimitError:I,fetchVariants:O,fetchVariantThumbnails:j,clearVariantsForSet:B,clearAllVariants:se}=z3({projectId:e}),H=o6(()=>{let fe=t6(w),Re=n6(L),xt={};for(let Pt of[...fe,...Re])xt[Pt.property]||(xt[Pt.property]=new Set),Pt.values.forEach(Je=>xt[Pt.property].add(Je));return Object.entries(xt).map(([Pt,Je])=>({property:Pt,values:Array.from(Je).sort()}))},[w,L]),V=m.size===1?Array.from(m)[0]:null,Z=X3({expandedSetId:V,availableFilters:H,filtersReady:H.length>0}),Y=Fl(()=>{if(!Z.suggestion)return;let{suggestedFilters:fe}=Z.suggestion,Re=Object.entries(fe).map(([xt,Pt])=>({property:xt,value:Pt}));g(Re),Z.dismissSuggestion()},[Z.suggestion]),re=o6(()=>p.some(fe=>fe.value)?L.filter(fe=>r6(fe,p,w[fe.id])):L,[L,p,w]),xe=Fl((fe,Re)=>{Re.stopPropagation();let xt=!m.has(fe);C(Pt=>{let Je=new Set(Pt);return Je.has(fe)?Je.delete(fe):Je.add(fe),Je}),xt&&!w[fe]&&!P.has(fe)?O(fe):xt||B(fe)},[m,w,P,O,B]),me=Fl((fe,Re)=>{let xt=Re===""?null:Re;g(Pt=>Pt.find(Qe=>Qe.property===fe)?Pt.map(Qe=>Qe.property===fe?{...Qe,value:xt}:Qe):[...Pt,{property:fe,value:xt}])},[]),Xe=Fl(()=>{g([])},[]),be=Fl(fe=>{let Re=L.find(xt=>xt.id===fe);if(Re?.thumbnailCdnUrl)return Re.thumbnailCdnUrl;if(z[fe])return z[fe];for(let xt of Object.values(R))if(xt[fe])return xt[fe]},[z,R]);return{frames:L,filteredFrames:re,thumbnails:z,totalFrames:A,isLoading:k,loadingMore:T,hasMore:F,error:E,loadMore:S,refresh:x,search:u,setSearch:v,figmaPage:d,setFigmaPage:f,availablePages:D,recentlyAdded:y,showComponentSets:r,showFrames:i,showComponents:s,setShowComponentSets:o,setShowFrames:a,setShowComponents:c,variantFilters:p,availableFilters:H,handleFilterChange:me,clearFilters:Xe,expandedSets:m,toggleExpanded:xe,variantChildren:w,variantThumbnails:R,variantFailed:_,loadingVariants:P,loadingThumbnails:N,rateLimitError:I,fetchVariantThumbnails:j,resolveThumbnail:be,filterSuggestion:Z.suggestion,filterSuggestionLoading:Z.isLoading,applySuggestedFilters:Y,dismissFilterSuggestion:Z.dismissSuggestion}}nt();import Ke,{useState as V6,useEffect as pY,memo as dY}from"react";import{styled as Le}from"storybook/theming";var a6=Le.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}),s6=Le.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}`})),l6=Le.div(({theme:e})=>({padding:"16px 20px",borderBottom:`1px solid ${e.appBorderColor}`,display:"flex",justifyContent:"space-between",alignItems:"center"})),c6=Le.h2(({theme:e})=>({margin:0,fontSize:"16px",fontWeight:600,color:e.color.defaultText})),u6=Le(qr)({fontSize:"20px",padding:"4px 8px"}),p6=Le.div({flex:1,overflow:"auto",padding:"20px"}),d6=Le(xa)({fontSize:"14px",marginBottom:"16px"}),Bb=Le.div({display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:"12px"}),f6=Le.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:W,transform:"translateY(-2px)",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)"}})),zb=Le.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"})),g6=Le.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"})),m6=Le.img(({theme:e})=>({maxWidth:"100%",maxHeight:"100%",objectFit:"cover",display:"block",backgroundColor:e.background.content,borderRadius:"4px"})),mu=Le.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})),Db=Le.div(({theme:e})=>({width:"32px",height:"32px",border:`3px solid ${e.appBorderColor}`,borderTopColor:W,borderRadius:"50%",animation:"thumbnail-spin 0.8s linear infinite","@keyframes thumbnail-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),hu=Le.div(({theme:e})=>({fontSize:"11px",fontWeight:500,color:e.color.mediumdark,textTransform:"uppercase",letterSpacing:"0.5px"})),Nb=Le.div(({theme:e})=>({fontSize:"32px",opacity:.5,color:e.color.mediumdark})),Ob=Le.div(({theme:e})=>({padding:"12px",textAlign:"left",backgroundColor:e.background.content,borderTop:`1px solid ${e.appBorderColor}`})),$b=Le.div(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText,marginBottom:"6px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:1.3})),Hb=Le.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,textTransform:"uppercase",letterSpacing:"0.5px"})),h6=Le.div(({theme:e})=>({display:"flex",gap:"16px",marginBottom:"16px",padding:"12px",backgroundColor:e.background.app,borderRadius:"4px",border:`1px solid ${e.appBorderColor}`})),mf=Le.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",fontSize:"13px",color:e.color.defaultText,cursor:"pointer",userSelect:"none","& input":{cursor:"pointer"}})),Ub=Le.div(({theme:e})=>({padding:"40px",textAlign:"center",color:e.color.mediumdark,fontSize:"14px"})),x6=Le.div(({theme:e})=>({padding:"20px",backgroundColor:e.background.critical,color:e.color.inverseText,borderRadius:"4px",fontSize:"14px"})),y6=Le.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:W}})),b6=Le.button(({theme:e})=>({display:"flex",flexDirection:"column",padding:0,border:`1px solid ${e.appBorderColor}`,borderLeft:`3px solid ${W}`,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:W,transform:"translateY(-2px)",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)"}})),w6=Le.div(({theme:e})=>({position:"absolute",top:"8px",right:"8px",padding:"2px 8px",background:W,color:e.color.lightest,borderRadius:"4px",fontSize:"10px",fontWeight:600,textTransform:"uppercase",letterSpacing:"0.5px",zIndex:10})),v6=Le.div({display:"flex",flexWrap:"wrap",gap:"4px",marginTop:"4px",marginBottom:"4px"}),kSe=Le.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"})),S6=Le.div(({theme:e})=>({display:"flex",flexDirection:"column",border:`1px solid ${e.appBorderColor}`,borderLeft:`3px solid ${W}`,borderRadius:"6px",backgroundColor:e.background.content,overflow:"hidden",minHeight:"200px"})),k6=Le.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%"}}})),jb=Le.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"}})),C6=Le.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})),E6=Le.span(({theme:e})=>({fontWeight:600,color:e.color.mediumdark})),T6=Le.span(({theme:e})=>({color:e.color.defaultText})),hf=Le.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%"}}})),I6=Le.div(({theme:e})=>({display:"flex",flexDirection:"column",border:`2px solid ${e.appBorderColor}`,borderRadius:"8px",backgroundColor:e.background.app,overflow:"hidden"})),R6=Le.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",marginBottom:"16px",padding:"12px",backgroundColor:e.background.app,borderRadius:"4px",border:`1px solid ${e.appBorderColor}`})),A6=Le.span(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText})),F6=Le(Fr)({flex:1,width:"auto"}),M6=Le.span(({theme:e,hasMapping:t})=>({fontSize:"12px",color:t?e.color.positive:e.color.mediumdark,fontWeight:t?500:400})),P6=Le.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"})),_6=Le.span(({theme:e})=>({color:e.color.secondary,fontWeight:e.typography.weight.bold})),L6=Le.span(({theme:e})=>({color:e.color.defaultText})),B6=Le.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}})),z6=Le.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}})),D6=Le.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,marginBottom:"8px",fontStyle:"italic"})),xf=Le.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",marginBottom:"12px",flexWrap:"wrap"})),xu=Le.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),Ml=Le(Fr)(({theme:e,isActive:t})=>({width:"auto",padding:"6px 28px 6px 10px",fontSize:"12px",...t&&{borderColor:e.color.secondary,backgroundColor:`${e.color.secondary}14`}})),yf=Le.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`}})),N6=Le.div(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"12px",padding:"8px 0",borderBottom:`1px solid ${e.appBorderColor}`})),O6=Le.button(({theme:e})=>({padding:"6px 12px",border:"none",borderRadius:"4px",backgroundColor:"transparent",color:W,fontSize:"12px",cursor:"pointer","&:hover":{backgroundColor:"rgba(234, 88, 12, 0.08)"}})),$6=Le.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),Vb=Le.button(({theme:e,isSelected:t})=>({display:"flex",flexDirection:"column",padding:0,border:`2px solid ${t?W: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:W,transform:"translateY(-2px)",boxShadow:"0 4px 12px rgba(0, 0, 0, 0.15)"}})),Wb=Le.div(({theme:e,isSelected:t})=>({position:"absolute",top:"8px",left:"8px",width:"20px",height:"20px",borderRadius:"4px",border:`2px solid ${t?W:e.appBorderColor}`,backgroundColor:t?W:e.background.content,display:"flex",alignItems:"center",justifyContent:"center",zIndex:10,fontSize:"12px",color:t?e.color.lightest:"transparent"})),H6=Le.div(({theme:e})=>({padding:"16px 20px",borderTop:`1px solid ${e.appBorderColor}`,display:"flex",justifyContent:"flex-end",gap:"12px"})),U6=Le.button(({theme:e,disabled:t})=>({padding:"10px 20px",border:"none",borderRadius:"4px",backgroundColor:t?e.color.mediumdark:W,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:W,opacity:t?.6:.9}})),j6=Le.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"}));Pe();import{styled as fY}from"storybook/theming";var gY=fY.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}})),Gb=dY(({src:e,alt:t,isComponentSet:n,loadingDone:r,failed:o})=>{let[i,a]=V6(!1),[s,c]=V6(!1);return pY(()=>{a(!1),c(!1)},[e]),i?Ke.createElement(mu,null,Ke.createElement(Nb,null,n?"\u229E":"\u{1F5BC}\uFE0F"),Ke.createElement(hu,null,"Failed to load")):e?Ke.createElement(Ke.Fragment,null,!s&&Ke.createElement(mu,{style:{position:"absolute",inset:0}},Ke.createElement(Db,null),Ke.createElement(hu,null,"Loading...")),Ke.createElement(m6,{src:e,alt:t,onLoad:()=>c(!0),onError:()=>a(!0),style:{opacity:s?1:0}})):r?Ke.createElement(mu,null,Ke.createElement(Nb,null,n?"\u229E":"\u{1F5BC}\uFE0F"),Ke.createElement(hu,null,o?"Render failed":"No preview")):Ke.createElement(mu,null,Ke.createElement(Db,null),Ke.createElement(hu,null,"Loading..."))}),yu=({frame:e,thumbnail:t,thumbnails:n,variantThumbnails:r,variantChildren:o,variantFailed:i,isLoadingVariants:a=!1,isExpanded:s,isNew:c=!1,onToggleExpand:u,onSelect:l,multiSelect:d=!1,selectedFrames:f=new Set,variantFilters:p=[],variantPage:g=1,onShowMore:m})=>{let v=e.type==="COMPONENT_SET",h=v&&(e.children&&e.children.length>0||(e.childCount??0)>0),M=e.children||o||[],L=Ke.useMemo(()=>M.length===0?[]:p.some(D=>D.value)?M.filter(D=>D.variantProperties?p.every(y=>y.value?D.variantProperties?.[y.property]===y.value:!0):!1):M,[M,p]),z=D=>{if(v){u(e.id,D);return}l(e)},A=d?Vb:f6;return Ke.createElement(Ke.Fragment,null,Ke.createElement(A,{onClick:z,title:e.name,isSelected:d?f.has(e.id):void 0,style:{cursor:"pointer"}},d&&!h&&Ke.createElement(Wb,{isSelected:f.has(e.id)},f.has(e.id)?"\u2713":""),v?Ke.createElement(g6,null,h&&Ke.createElement(y6,{onClick:D=>u(e.id,D),title:s?"Collapse variants":"Expand variants"},s?"\u25BC":"\u25B6"),h&&Ke.createElement(w6,null,L.length>0&&L.length!==M.length?`${L.length} / ${M.length}`:e.childCount??M.length," ","variants"),Ke.createElement(Gb,{src:t,alt:e.name,isComponentSet:!0})):Ke.createElement(zb,null,Ke.createElement(Gb,{src:t,alt:e.name,isComponentSet:!1})),Ke.createElement(Ob,null,Ke.createElement($b,null,e.name,c&&Ke.createElement(j6,null,"New")),Ke.createElement(Hb,null,e.type))),h&&s&&a&&Ke.createElement(Ke.Fragment,null,Array.from({length:Math.min(6,e.childCount??e.children?.length??6)}).map((D,y)=>Ke.createElement(S6,{key:`skeleton-${y}`},Ke.createElement(k6,null),Ke.createElement(jb,{width:"80%"}),Ke.createElement(jb,{width:"50%"})))),h&&s&&!a&&L.slice(0,g*50).map(D=>Ke.createElement(qb,{key:D.id,variant:D,thumbnail:r?.[D.id]||n[D.id],onSelect:l,multiSelect:d,isSelected:f.has(D.id),loadingDone:!!t||r!==void 0&&D.id in(r||{})||!!i?.has(D.id),failed:i?.has(D.id)})),h&&s&&!a&&L.length>g*50&&Ke.createElement(gY,{onClick:()=>m?.(e.id)},"Show more (",L.length-g*50," ","remaining)"))},qb=({variant:e,thumbnail:t,onSelect:n,multiSelect:r=!1,isSelected:o=!1,loadingDone:i=!1,failed:a=!1})=>Ke.createElement(r?Vb:b6,{onClick:()=>{b.debug("[VariantCard] Clicked:",e.id,e.name),n(e)},title:e.name,isSelected:r?o:void 0},r&&Ke.createElement(Wb,{isSelected:o},o?"\u2713":""),Ke.createElement(zb,null,Ke.createElement(Gb,{src:t,alt:e.name,isComponentSet:!1,loadingDone:i,failed:a})),Ke.createElement(Ob,null,Ke.createElement($b,null,e.name),e.variantProperties&&Object.keys(e.variantProperties).length>0&&Ke.createElement(v6,null,Object.entries(e.variantProperties).map(([u,l])=>Ke.createElement(C6,{key:u},Ke.createElement(E6,null,u,":")," ",Ke.createElement(T6,null,l)))),Ke.createElement(Hb,{style:{marginTop:"6px"}},"VARIANT")));var mY=ft.div({display:"flex",height:"100%",overflow:"hidden"}),hY=ft.div(({theme:e})=>({width:"380px",minWidth:"300px",borderRight:`1px solid ${e.appBorderColor}`,display:"flex",flexDirection:"column",overflow:"hidden"})),xY=ft.div({flex:1,display:"flex",flexDirection:"column",overflow:"hidden"}),q6=ft.div(({theme:e})=>({padding:"12px 16px",borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app})),Y6=ft.h4(({theme:e})=>({fontSize:"12px",fontWeight:600,color:e.color.mediumdark,textTransform:"uppercase",letterSpacing:"0.5px",margin:0})),bf=ft.div({display:"flex",gap:"8px",marginTop:"10px"}),yY=ft(Fr)({flex:1,width:"auto"}),K6=ft(xa)({flex:1,fontSize:"13px"}),bY=ft.div({flex:1,overflow:"auto",padding:"8px"}),wY=ft.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}})),vY=ft.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"6px"}),SY=ft.div(({theme:e})=>({fontSize:"13px",fontWeight:500,color:e.color.defaultText,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),kY=ft.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})),CY=ft.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),EY=ft.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"})),TY=ft.img(({theme:e})=>({width:"48px",height:"36px",objectFit:"contain",backgroundColor:e.background.content,borderRadius:"4px",border:`1px solid ${e.appBorderColor}`,flexShrink:0})),IY=ft.div({flex:1,overflow:"hidden"}),RY=ft.div({fontWeight:500,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),AY=ft.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)"}}})),FY=ft.img(({theme:e})=>({width:"100%",maxWidth:"260px",maxHeight:"200px",objectFit:"contain",borderRadius:"4px",backgroundColor:e.background.app,display:"block"})),MY=ft.div(({theme:e})=>({marginTop:"8px",fontSize:"12px",fontWeight:500,color:e.color.defaultText,textAlign:"center",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),PY=ft.div({flex:1,display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"}),_Y=ft.div({display:"flex",gap:"8px",flexWrap:"wrap"}),Kb=ft.label(({theme:e})=>({display:"flex",alignItems:"center",gap:"4px",fontSize:"12px",color:e.color.mediumdark,cursor:"pointer","& input":{cursor:"pointer"}})),LY=ft.div({flex:1,overflow:"auto",padding:"12px",display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",gap:"12px",alignContent:"start"}),Xb=20,BY=ft.div(({theme:e})=>({gridColumn:"1 / -1",display:"flex",alignItems:"center",justifyContent:"center",gap:"12px",padding:"12px 0",borderTop:`1px solid ${e.appBorderColor}`,marginTop:"8px"})),zY=ft.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`}})),DY=ft.div(({theme:e})=>({gridColumn:"1 / -1",display:"flex",alignItems:"center",gap:"12px",padding:"8px 12px",backgroundColor:e.background.app,borderRadius:"6px",marginBottom:"8px"})),NY=ft.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`}})),OY=ft.span(({theme:e})=>({fontSize:"14px",fontWeight:600,color:e.color.defaultText})),Jb=ft.div(({theme:e})=>({gridColumn:"1 / -1",fontSize:"12px",color:e.color.mediumdark,textAlign:"center",padding:"8px 0"})),Qb=ft.div(({theme:e})=>({flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:e.color.mediumdark,fontSize:"14px",gap:"8px"})),$Y=ft.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:e.color.mediumdark,fontSize:"14px"})),HY=ft.div({flex:1,overflow:"auto",padding:"12px",display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",gap:"12px",alignContent:"start"}),X6=ft.div(({theme:e})=>({borderRadius:"8px",border:`1px solid ${e.appBorderColor}`,overflow:"hidden",backgroundColor:e.background.content})),J6=ft.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"}}})),Q6=ft.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"}}})),UY=()=>ce.createElement(HY,null,Array.from({length:8}).map((e,t)=>ce.createElement(X6,{key:t},ce.createElement(J6,null),ce.createElement(Q6,{width:`${60+t%3*15}%`})))),jY=ft.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"})),VY=ft.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"}),WY=ft.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)"}}})),GY=ft.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark})),Z6=({stories:e,loading:t,selectedStoryId:n,onSelectStory:r,onStoryMapped:o,projectId:i})=>{let a=gu({projectId:i,limit:Xb,enabled:!!i}),[s,c]=Pl("all"),[u,l]=Pl(""),[d,f]=Pl(null),[p,g]=Pl(1),[m,C]=Pl(null),[v,h]=Pl(!1),M=Yb(()=>{let S=new Set;return e.forEach(x=>{x.componentTitle&&S.add(x.componentTitle)}),Array.from(S).sort()},[e]),L=Yb(()=>e.filter(S=>{if(s!=="all"&&S.componentTitle!==s)return!1;if(u){let x=u.toLowerCase();return S.name.toLowerCase().includes(x)||S.title.toLowerCase().includes(x)}return!0}),[e,s,u]),z=d?a.frames.find(S=>S.id===d):null,A=Yb(()=>{if(!d)return[];let S=a.variantChildren[d]||[];return S.length===0?[]:a.variantFilters.some(x=>x.value)?S.filter(x=>x.variantProperties?a.variantFilters.every(E=>E.value?x.variantProperties?.[E.property]===E.value:!0):!1):S},[d,a.variantChildren,a.variantFilters]),D=A.slice(0,p*Xb),y=A.length>p*Xb;W6(()=>{if(!d||D.length===0)return;let S=D.map(x=>x.id);a.fetchVariantThumbnails(d,S)},[d,D.length,p]),W6(()=>{h(!1)},[]);let k=G6(async S=>{if(n)try{let x=q(),E=localStorage.getItem("uicopilot_session_token");if(!(await J(`${x}/api/mappings`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({projectId:i,storyId:n,figmaNodeId:S.id,name:S.name})})).ok)throw new Error("Failed to save mapping");o(n,S.id,S.name)}catch(x){b.error("[MapStoriesTab] Error saving mapping:",x)}},[n,i,o]),T=G6((S,x)=>{if(x.stopPropagation(),d===S){f(null),g(1);return}f(S),g(1),!a.variantThumbnails[S]&&!a.loadingVariants.has(S)&&a.toggleExpanded(S,x)},[d,a]),F=e.find(S=>S.id===n);return t?ce.createElement($Y,null,"Loading stories..."):ce.createElement(mY,null,ce.createElement(hY,null,ce.createElement(q6,null,ce.createElement(Y6,null,"Storybook Stories"),ce.createElement(bf,null,ce.createElement(yY,{value:s,onChange:S=>c(S.target.value)},ce.createElement("option",{value:"all"},"All Components"),M.map(S=>ce.createElement("option",{key:S,value:S},S)))),ce.createElement(bf,null,ce.createElement(K6,{type:"text",placeholder:"Search stories...",value:u,onChange:S=>l(S.target.value)}))),ce.createElement(bY,null,L.length===0?ce.createElement(Qb,null,"No stories found"):L.map(S=>ce.createElement(wY,{key:S.id,selected:S.id===n,mapped:!!S.figmaMapping,onClick:()=>r(S.id)},ce.createElement(vY,null,ce.createElement(SY,null,S.name),ce.createElement(kY,{mapped:!!S.figmaMapping},S.figmaMapping?"Mapped":"Unmapped")),ce.createElement(CY,null,S.title),S.figmaMapping&&ce.createElement(EY,{onMouseEnter:()=>C(S.id),onMouseLeave:()=>C(null)},(()=>{let x=S.figmaMapping?.figmaNodeId,E=x?a.resolveThumbnail(x):void 0;return ce.createElement(ce.Fragment,null,E?ce.createElement(TY,{src:E,alt:S.figmaMapping?.figmaFrameName||""}):ce.createElement("span",null,"\u{1F517}"),m===S.id&&E&&ce.createElement(AY,null,ce.createElement(FY,{src:E,alt:S.figmaMapping?.figmaFrameName||""}),ce.createElement(MY,null,S.figmaMapping?.figmaFrameName)))})(),ce.createElement(IY,null,ce.createElement(RY,null,S.figmaMapping.figmaFrameName))))))),ce.createElement(xY,null,n?ce.createElement(ce.Fragment,null,ce.createElement(jY,null,ce.createElement("span",null,"Click a Figma component below to link it to"," ",ce.createElement("strong",null,F?.name))),ce.createElement(q6,null,ce.createElement(Y6,null,"Figma Components"),ce.createElement(bf,null,ce.createElement(_Y,null,ce.createElement(Kb,null,ce.createElement("input",{type:"checkbox",checked:a.showComponentSets,onChange:S=>a.setShowComponentSets(S.target.checked)}),"Component Sets"),ce.createElement(Kb,null,ce.createElement("input",{type:"checkbox",checked:a.showFrames,onChange:S=>a.setShowFrames(S.target.checked)}),"Frames"),ce.createElement(Kb,null,ce.createElement("input",{type:"checkbox",checked:a.showComponents,onChange:S=>a.setShowComponents(S.target.checked)}),"Components")),a.availablePages.length>1&&ce.createElement(Ml,{isActive:!!a.figmaPage,value:a.figmaPage,onChange:S=>a.setFigmaPage(S.target.value)},ce.createElement("option",{value:""},"All pages"),a.availablePages.map(S=>ce.createElement("option",{key:S,value:S},S)))),a.availableFilters.length>0&&ce.createElement(xf,null,ce.createElement(xu,null,"Filters:"),a.availableFilters.slice(0,5).map(({property:S,values:x})=>{let E=a.variantFilters.find(w=>w.property===S);return ce.createElement(Ml,{key:S,isActive:!!E?.value,value:E?.value||"",onChange:w=>a.handleFilterChange(S,w.target.value)},ce.createElement("option",{value:""},S),x.map(w=>ce.createElement("option",{key:w,value:w},S,"=",w)))}),a.availableFilters.length>5&&ce.createElement(xu,{style:{opacity:.6,fontSize:"11px"}},"+",a.availableFilters.length-5," more"),a.variantFilters.some(S=>S.value)&&ce.createElement(yf,{onClick:a.clearFilters},"Clear All")),ce.createElement(bf,null,ce.createElement(K6,{type:"text",placeholder:"Search Figma components...",value:a.search,onChange:S=>a.setSearch(S.target.value)}))),ce.createElement(PY,null,v&&ce.createElement(VY,null,ce.createElement(WY,null),ce.createElement(GY,null,"Loading thumbnails...")),a.isLoading?ce.createElement(UY,null):a.filteredFrames.length===0?ce.createElement(Qb,null,ce.createElement("span",null,"No components match. Try a different search term, or check that your Figma file has components defined. We index Figma components (component sets and standalone components) \u2014 plain design frames aren't indexed yet (support planned).")):ce.createElement(LY,null,d&&z?ce.createElement(ce.Fragment,null,ce.createElement(DY,null,ce.createElement(NY,{onClick:()=>{f(null),g(1)}},"Back"),ce.createElement(OY,null,z.name)),a.loadingVariants.has(d)?ce.createElement(ce.Fragment,null,ce.createElement(Jb,null,"Loading ",z.childCount??"..."," ","variants..."),Array.from({length:Math.min(8,z.childCount??8)}).map((S,x)=>ce.createElement(X6,{key:`variant-skeleton-${x}`},ce.createElement(J6,null),ce.createElement(Q6,{width:`${60+x%3*15}%`})))):ce.createElement(ce.Fragment,null,ce.createElement(Jb,null,"Showing ",D.length," of"," ",A.length," variants"),D.map(S=>ce.createElement(qb,{key:S.id,variant:S,thumbnail:a.variantThumbnails[d]?.[S.id]||a.thumbnails[S.id],onSelect:k,loadingDone:a.variantThumbnails[d]!==void 0&&!a.loadingVariants.has(d),failed:a.variantFailed[d]?.has(S.id)})))):ce.createElement(ce.Fragment,null,ce.createElement(Jb,null,"Showing ",a.frames.length," of ",a.totalFrames," ","components"),a.filteredFrames.map(S=>ce.createElement(yu,{key:S.id,frame:S,thumbnail:a.thumbnails[S.id],thumbnails:a.thumbnails,variantThumbnails:a.variantThumbnails[S.id],variantChildren:a.variantChildren[S.id],variantFailed:a.variantFailed[S.id],isLoadingVariants:a.loadingVariants.has(S.id),isExpanded:!1,onToggleExpand:T,onSelect:k,variantFilters:a.variantFilters}))),(d?y:a.hasMore)&&ce.createElement(BY,null,ce.createElement(zY,{disabled:a.loadingMore,onClick:async()=>{d?g(S=>S+1):await a.loadMore()}},a.loadingMore?"Loading...":"Load More"))))):ce.createElement(Qb,null,ce.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."))))};Me();import wt,{useState as bu,useMemo as t7,useCallback as Zb}from"react";import{styled as dn}from"storybook/theming";nt();import zr,{useState as qY,useEffect as YY,useCallback as KY}from"react";import{styled as ea,keyframes as e7}from"storybook/theming";var XY=e7({from:{opacity:0},to:{opacity:1}}),JY=e7({from:{opacity:0,transform:"translate(-50%, -50%) scale(0.95)"},to:{opacity:1,transform:"translate(-50%, -50%) scale(1)"}}),QY=ea.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.5)",zIndex:1e4,animation:`${XY} 150ms ease-out`}),ZY=ea.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:`${JY} 150ms ease-out`})),eK=ea.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,color:e.color.defaultText})),tK=ea.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})),nK=ea.div(({theme:e})=>({display:"flex",justifyContent:"flex-end",gap:`${e.layoutMargin*.8}px`})),rK=ea.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}})),oK=ea.p(({theme:e})=>({margin:`0 0 ${e.layoutMargin*.6}px`,fontSize:e.typography.size.s1,fontFamily:e.typography.fonts.base,color:e.color.mediumdark})),iK=ea.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}})),aK=ea.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"}})),Dr=({isOpen:e,title:t,message:n,confirmLabel:r="OK",cancelLabel:o="Cancel",variant:i="default",confirmText:a,onConfirm:s,onCancel:c})=>{let[u,l]=qY(""),d=!!a&&u!==a,f=KY(p=>{p.key==="Escape"&&c()},[c]);return YY(()=>{if(e)return l(""),document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[e,f]),e?zr.createElement(zr.Fragment,null,zr.createElement(QY,{onClick:c}),zr.createElement(ZY,{role:"dialog","aria-modal":"true","aria-label":t},zr.createElement(eK,null,t),zr.createElement(tK,null,n),a&&zr.createElement(zr.Fragment,null,zr.createElement(oK,null,"Type ",zr.createElement("strong",null,a)," to confirm:"),zr.createElement(rK,{type:"text",value:u,onChange:p=>l(p.target.value),placeholder:a,autoFocus:!0})),zr.createElement(nK,null,zr.createElement(iK,{onClick:c},o),zr.createElement(aK,{variant:i,onClick:s,disabled:d},r)))):null};var sK=dn.div({display:"flex",flexDirection:"column",height:"100%",overflow:"hidden"}),lK=dn.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"12px 20px",backgroundColor:e.background.app,borderBottom:`1px solid ${e.appBorderColor}`,flexWrap:"wrap"})),cK=dn(Fr)({width:"auto",minWidth:"200px"}),uK=dn(xa)({fontSize:"13px",minWidth:"250px"}),pK=dn.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}})),dK=dn.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}})),fK=dn.button(({theme:e})=>({padding:"8px 12px",fontSize:"13px",fontWeight:500,border:`1px solid ${e.color.negative}`,borderRadius:"6px",backgroundColor:e.background.content,color:e.color.negative,cursor:"pointer",display:"flex",alignItems:"center",gap:"6px",transition:"all 0.2s","&:hover":{backgroundColor:`${e.color.negative}10`},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),gK=dn.div({flex:1,overflow:"auto"}),mK=dn.table(({theme:e})=>({width:"100%",borderCollapse:"collapse",fontSize:"13px"})),hK=dn.thead(({theme:e})=>({position:"sticky",top:0,backgroundColor:e.background.app,zIndex:1})),wf=dn.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}`})),xK=dn.tbody({}),yK=dn.tr(({theme:e,mapped:t})=>({backgroundColor:t?"transparent":`${e.color.warning}05`,"&:hover":{backgroundColor:e.background.hoverable}})),vf=dn.td(({theme:e})=>({padding:"14px 20px",borderBottom:`1px solid ${e.appBorderColor}`,verticalAlign:"middle"})),bK=dn.div({display:"flex",flexDirection:"column",gap:"2px"}),wK=dn.div(({theme:e})=>({fontWeight:500,color:e.color.defaultText})),vK=dn.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark})),SK=dn.div(({theme:e,mapped:t})=>({color:t?e.color.positive:e.color.mediumlight,fontWeight:t?500:400,display:"flex",alignItems:"center",gap:"6px"})),kK=dn.div({display:"flex",alignItems:"center",gap:"8px"}),CK=dn.span(({theme:e,mapped:t})=>({width:"10px",height:"10px",borderRadius:"50%",backgroundColor:t?e.color.positive:e.color.mediumlight})),EK=dn.span(({theme:e,mapped:t})=>({color:t?e.color.positive:e.color.mediumdark,fontWeight:500})),n7=dn.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`}})),TK=dn.div(({theme:e})=>({flex:1,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",color:e.color.mediumdark,fontSize:"14px",gap:"8px",padding:"40px"})),IK=dn.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",height:"100%",color:e.color.mediumdark,fontSize:"14px"})),r7=({stories:e,loading:t,onLink:n,onUnlink:r,onUnlinkAll:o,projectId:i})=>{let[a,s]=bu("all"),[c,u]=bu(""),[l,d]=bu(!0),[f,p]=bu(!1),[g,m]=bu(!1),C=t7(()=>{let A=new Set;return e.forEach(D=>{D.componentTitle&&A.add(D.componentTitle)}),Array.from(A).sort()},[e]),v=t7(()=>e.filter(A=>{if(a!=="all"&&A.componentTitle!==a||!l&&!A.figmaMapping)return!1;if(c){let D=c.toLowerCase();return A.name.toLowerCase().includes(D)||A.title.toLowerCase().includes(D)||(A.figmaMapping?.figmaFrameName?.toLowerCase().includes(D)??!1)}return!0}),[e,a,c,l]),h=Zb(async A=>{try{let D=q(),y=localStorage.getItem("uicopilot_session_token");if(!(await J(`${D}/api/mappings?projectId=${i}&storyId=${A}`,{method:"DELETE",headers:{Authorization:`Bearer ${y}`}})).ok)throw new Error("Failed to delete mapping");r(A)}catch(D){console.error("[ViewAllMappingsTab] Error unlinking:",D)}},[i,r]),M=Zb(()=>{let A=e.filter(T=>T.figmaMapping).map(T=>({storyId:T.id,storyName:T.name,storyTitle:T.title,figmaNodeId:T.figmaMapping.figmaNodeId,figmaFrameName:T.figmaMapping.figmaFrameName})),D=new Blob([JSON.stringify(A,null,2)],{type:"application/json"}),y=URL.createObjectURL(D),k=document.createElement("a");k.href=y,k.download=`figma-mappings-${new Date().toISOString().split("T")[0]}.json`,document.body.appendChild(k),k.click(),document.body.removeChild(k),URL.revokeObjectURL(y)},[e]),L=Zb(async()=>{m(!0);try{let A=q(),D=localStorage.getItem("uicopilot_session_token");if(!(await J(`${A}/api/mappings/batch?projectId=${i}`,{method:"DELETE",headers:{Authorization:`Bearer ${D}`}})).ok)throw new Error("Failed to delete mappings");o()}catch(A){console.error("[ViewAllMappingsTab] Error unlinking all:",A)}finally{m(!1),p(!1)}},[i,o]);if(t)return wt.createElement(IK,null,"Loading mappings...");let z=e.filter(A=>A.figmaMapping).length;return wt.createElement(sK,null,wt.createElement(lK,null,wt.createElement(cK,{value:a,onChange:A=>s(A.target.value)},wt.createElement("option",{value:"all"},"All Components"),C.map(A=>wt.createElement("option",{key:A,value:A},A))),wt.createElement(uK,{type:"text",placeholder:"\u{1F50D} Search stories or Figma components...",value:c,onChange:A=>u(A.target.value)}),wt.createElement(pK,{active:l,onClick:()=>d(!l)},l?"\u2611":"\u2610"," Show unmapped"),wt.createElement(dK,{onClick:M,disabled:z===0},"\u{1F4E5} Export JSON"),z>0&&wt.createElement(fK,{onClick:()=>p(!0),disabled:g,title:"Remove every story\u2192Figma mapping for this project"},g?"Unlinking\u2026":`\u{1F5D1} Unlink All (${z})`)),v.length===0?wt.createElement(TK,null,wt.createElement("span",null,"\u{1F4ED}"),c?"No stories match your search":"No stories found"):wt.createElement(gK,null,wt.createElement(mK,null,wt.createElement(hK,null,wt.createElement("tr",null,wt.createElement(wf,{style:{width:"35%"}},"Story"),wt.createElement(wf,{style:{width:"35%"}},"Figma Component"),wt.createElement(wf,{style:{width:"15%"}},"Status"),wt.createElement(wf,{style:{width:"15%"}},"Actions"))),wt.createElement(xK,null,v.map(A=>wt.createElement(yK,{key:A.id,mapped:!!A.figmaMapping},wt.createElement(vf,null,wt.createElement(bK,null,wt.createElement(wK,null,A.name),wt.createElement(vK,null,A.title))),wt.createElement(vf,null,wt.createElement(SK,{mapped:!!A.figmaMapping},A.figmaMapping?wt.createElement(wt.Fragment,null,wt.createElement("span",null,"\u{1F3A8}"),A.figmaMapping.figmaFrameName):"\u2014")),wt.createElement(vf,null,wt.createElement(kK,null,wt.createElement(CK,{mapped:!!A.figmaMapping}),wt.createElement(EK,{mapped:!!A.figmaMapping},A.figmaMapping?"Mapped":"Unmapped"))),wt.createElement(vf,null,A.figmaMapping?wt.createElement(n7,{variant:"unlink",onClick:()=>h(A.id)},"Unlink"):wt.createElement(n7,{variant:"link",onClick:()=>n(A.id)},"Link"))))))),wt.createElement(Dr,{isOpen:f,variant:"danger",title:"Unlink all mappings?",message:`This removes all ${z} story\u2192Figma mapping${z===1?"":"s"} for this project. Stories stay; only the Figma links are cleared, so you can re-map from scratch. This can't be undone.`,confirmLabel:"Unlink All",cancelLabel:"Cancel",onConfirm:L,onCancel:()=>p(!1)}))};import he,{useState as ys,useMemo as d7,useRef as JK,useEffect as QK}from"react";import{styled as st}from"storybook/theming";import Kn,{useEffect as RK,useRef as AK}from"react";import{createPortal as FK}from"react-dom";import{styled as ta}from"storybook/theming";var MK=ta.div(({theme:e})=>({position:"fixed",zIndex:10050,minWidth:"440px",maxWidth:"620px",maxHeight:"60vh",overflowY:"auto",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:"0 10px 30px rgba(0,0,0,0.22)",padding:`${e.layoutMargin}px`,fontFamily:e.typography.fonts.base})),PK=ta.div(({theme:e})=>({fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,color:e.color.defaultText,marginBottom:"2px"})),_K=ta.div(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontSize:"11px",color:e.color.mediumdark,marginBottom:`${e.layoutMargin*.8}px`})),LK=ta.table({width:"100%",borderCollapse:"collapse",tableLayout:"fixed"}),e5=ta.th(({theme:e})=>({textAlign:"left",fontFamily:e.typography.fonts.mono,fontSize:"10px",letterSpacing:"0.08em",textTransform:"uppercase",color:e.color.mediumdark,fontWeight:"normal",padding:"0 6px 4px 0",borderBottom:`1px solid ${e.appBorderColor}`})),t5=ta.td(({theme:e,muted:t})=>({fontFamily:e.typography.fonts.mono,fontSize:"11px",color:t?e.color.mediumdark:e.color.defaultText,padding:"3px 6px 3px 0",verticalAlign:"top",wordBreak:"break-word"})),BK=ta.tr(({theme:e})=>({"& td":{borderTop:`1px solid ${e.appBorderColor}`,paddingTop:"6px"}})),zK=ta.span(({theme:e,vouch:t})=>({color:t==="differs"?pe.amber:t==="matched"?pe.green:e.color.mediumdark,fontWeight:e.typography.weight.bold,marginRight:"5px"})),DK=ta.div(({theme:e})=>({display:"flex",justifyContent:"space-between",gap:`${e.layoutMargin}px`,marginTop:`${e.layoutMargin*.8}px`,paddingTop:"6px",borderTop:`1px solid ${e.appBorderColor}`,fontFamily:e.typography.fonts.mono,fontSize:"10px",color:e.color.mediumdark})),NK={matched:"\u2713",differs:"\u2260","no-evidence":"\xF8"},o7={differs:0,matched:1,"no-evidence":2},i7=({title:e,subtitle:t,verdicts:n,figmaNodeId:r,renderScore:o,anchor:i,onClose:a})=>{let s=AK(null);RK(()=>{let l=f=>{s.current?.contains(f.target)||a()},d=f=>{f.key==="Escape"&&a()};return document.addEventListener("mousedown",l),document.addEventListener("keydown",d),()=>{document.removeEventListener("mousedown",l),document.removeEventListener("keydown",d)}},[a]);let c=[...n].sort((l,d)=>o7[l.vouch]-o7[d.vouch]||l.prop.localeCompare(d.prop)),u={differs:n.filter(l=>l.vouch==="differs").length,matched:n.filter(l=>l.vouch==="matched").length,none:n.filter(l=>l.vouch==="no-evidence").length};return FK(Kn.createElement(MK,{ref:s,role:"dialog","aria-label":`Property comparison for ${e}`,style:{top:i.top,left:i.left}},Kn.createElement(PK,null,e),t&&Kn.createElement(_K,null,t),Kn.createElement(LK,null,Kn.createElement("thead",null,Kn.createElement("tr",null,Kn.createElement(e5,{style:{width:"34%"}},"Property"),Kn.createElement(e5,{style:{width:"33%"}},"Figma"),Kn.createElement(e5,{style:{width:"33%"}},"Code"))),Kn.createElement("tbody",null,c.map((l,d)=>{let f=l.vouch==="no-evidence",p=d>0&&c[d-1].vouch!==l.vouch?BK:"tr";return Kn.createElement(p,{key:l.prop},Kn.createElement(t5,{muted:f},Kn.createElement(zK,{vouch:l.vouch},NK[l.vouch]),l.prop),Kn.createElement(t5,{muted:f},l.figma??"\u2014"),Kn.createElement(t5,{muted:f},l.code??"\u2014"))}))),Kn.createElement(DK,null,Kn.createElement("span",null,"node ",r,o!=null&&` \xB7 render ${Math.round(o*100)}%`),Kn.createElement("span",null,u.differs," differ \xB7 ",u.matched," agree \xB7 ",u.none," no data"))),document.body)};import a7 from"react";import{styled as s7,keyframes as OK}from"storybook/theming";var $K=OK`
85
85
  0% { transform: rotate(0deg); }
86
86
  100% { transform: rotate(360deg); }
87
- `,HK=s7.span(({theme:e})=>({display:"inline-block",width:"12px",height:"12px",border:`2px solid ${e.appBorderColor}`,borderTopColor:"currentColor",borderRadius:"50%",animation:`${$K} 0.6s linear infinite`,marginRight:"6px",verticalAlign:"middle"})),UK=s7.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}}})),fi=({loading:e=!1,disabled:t=!1,onClick:n,variant:r="default",children:o,loadingText:i})=>a7.createElement(UK,{variant:r,disabled:t||e,onClick:n},e&&a7.createElement(HK,null),e&&i?i:o);Me();import Xn from"react";import{styled as wu}from"storybook/theming";var l7=wu.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"})),jK=wu.div({display:"flex",alignItems:"center",gap:"12px"}),Sf=wu.span({whiteSpace:"nowrap"}),c7=wu.div({display:"flex",alignItems:"center",gap:"8px"}),kf=wu.span(({theme:e})=>({fontWeight:600,color:e.color.defaultText})),Cf=({inputTokens:e,outputTokens:t,costUsd:n,compact:r=!1})=>{let o=e+t,i=n*n3;return r?Xn.createElement(l7,null,Xn.createElement(Sf,null,o.toLocaleString()," tokens"),Xn.createElement(c7,null,Xn.createElement(kf,null,"$",n.toFixed(4)),Xn.createElement("span",null,"\xB7"),Xn.createElement(kf,null,"\u20AA",i.toFixed(2)))):Xn.createElement(l7,null,Xn.createElement(jK,null,Xn.createElement(Sf,null,e.toLocaleString()," input"),Xn.createElement("span",null,"+"),Xn.createElement(Sf,null,t.toLocaleString()," output"),Xn.createElement("span",null,"="),Xn.createElement(Sf,null,Xn.createElement("strong",null,o.toLocaleString())," tokens")),Xn.createElement(c7,null,Xn.createElement(kf,null,"$",n.toFixed(4)),Xn.createElement("span",null,"\xB7"),Xn.createElement(kf,null,"\u20AA",i.toFixed(2))))};import Nr from"react";import{styled as Ta}from"storybook/theming";function n5(e){if(typeof e!="string")return e;try{let t=JSON.parse(e);if(t.summary)return t}catch{}return{summary:e}}var VK=Ta.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:`${e.layoutMargin*.5}px`})),u7=Ta.div(({theme:e,color:t})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:t||e.color.defaultText,lineHeight:"1.4"})),WK=Ta.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*.25}px`,flexWrap:"wrap",fontSize:e.typography.size.s1,color:e.color.mediumdark})),GK=Ta.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})),qK=Ta.span(({theme:e})=>({color:e.color.mediumlight,fontSize:e.typography.size.s1})),YK=Ta.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,fontStyle:"italic"})),KK=Ta.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,display:"flex",gap:`${e.layoutMargin*.25}px`})),XK=Ta.span(({theme:e})=>({fontWeight:e.typography.weight.bold,color:e.color.defaultText})),p7=({data:e,color:t,compact:n})=>n?Nr.createElement(u7,{color:t},e.summary):Nr.createElement(VK,null,Nr.createElement(u7,{color:t},e.summary),e.mappings&&e.mappings.length>0&&Nr.createElement(WK,null,e.mappings.map((r,o)=>Nr.createElement(Nr.Fragment,{key:o},Nr.createElement(GK,null,r.from," ",Nr.createElement(qK,null,"\u2192")," ",r.to)))),e.candidates!=null&&e.candidates>1&&Nr.createElement(YK,null,e.candidates," candidate variants matched"),e.defaults&&e.defaults.length>0&&Nr.createElement(Nr.Fragment,null,e.defaults.map((r,o)=>Nr.createElement(KK,{key:o},Nr.createElement(XK,null,r.choice),Nr.createElement("span",null,"\u2014 ",r.why)))));var ZK=st.div({display:"flex",flexDirection:"column",flex:1,overflow:"hidden"}),eX=st.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px",borderBottom:`1px solid ${e.appBorderColor}`})),tX=st.div({display:"flex",flexDirection:"column",gap:"4px"}),nX=st.div({display:"flex",alignItems:"center",gap:"10px"}),rX=st.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"})),r5=st.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})),oX=st.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark})),iX=st.div({display:"flex",gap:"8px"}),aX=st.div(({theme:e})=>({display:"flex",alignItems:"center",padding:"12px 24px",gap:"12px",borderBottom:`1px solid ${e.appBorderColor}`})),sX=st(xa)(({theme:e})=>({flex:1,fontSize:e.typography.size.s2})),lX=st.div({display:"flex",gap:"4px"}),Ef=st.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}})),cX=st.div({display:"flex",flexDirection:"column",flex:1,padding:"16px 24px",gap:"8px",overflowY:"auto"}),f7=st.div({display:"flex",flexDirection:"column",alignItems:"center",gap:"4px",flex:"none"}),g7=st.span(({theme:e})=>({fontSize:"9px",fontWeight:e.typography.weight.bold,letterSpacing:"0.06em",textTransform:"uppercase",color:e.color.mediumdark,whiteSpace:"nowrap"})),uX=st.div(({theme:e,dimmed:t,accent:n})=>{let r=n==="ready"?pe.green:n==="drift"?pe.amber:n==="flag"?e.color.secondary:n==="needyou"?e.color.mediumdark:e.appBorderColor;return{display:"flex",alignItems:"center",padding:"12px 16px",border:`1px solid ${e.appBorderColor}`,borderLeft:`4px solid ${r}`,borderRadius:"10px",gap:"12px",backgroundColor:e.background.content,opacity:t?.6:1,transition:"opacity 0.15s",position:"relative",zIndex:0,"&:hover":{zIndex:10}}}),pX=st.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}`}})),dX=st.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"})),i5=st.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}`})),fX=st.img({width:"100%",height:"100%",objectFit:"contain"}),w7=st.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)"}}})),gX=st.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:"9px",letterSpacing:"0.03em",textTransform:"uppercase",color:e.color.mediumdark,textAlign:"center",padding:"4px"})),m7=st.div({flex:1,display:"flex",flexDirection:"column",gap:"2px",minWidth:0}),h7=st.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"})),o5=st.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"})),v2e=st.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"})),mX=st.div(({theme:e})=>({flexShrink:0,color:e.color.mediumlight,fontSize:"14px"})),hX=st.div({display:"flex",flexWrap:"wrap",gap:"4px",marginTop:"4px"}),xX=st.span(({theme:e,vouch:t})=>{let n=t==="matched"?pe.green:t==="differs"?pe.amber:e.color.mediumdark;return{display:"inline-flex",alignItems:"center",gap:"4px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.defaultText,background:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,padding:"1px 6px",opacity:t==="no-evidence"?.65:1,"&::before":{content:'""',width:"6px",height:"6px",borderRadius:"50%",background:n,flexShrink:0}}}),yX=st.div(({theme:e,tone:t})=>({display:"flex",alignItems:"flex-start",gap:"6px",marginTop:"6px",padding:`${e.layoutMargin*.5}px ${e.layoutMargin*.75}px`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,lineHeight:1.45,color:e.color.defaultText,background:e.background.hoverable,borderLeft:`3px solid ${t==="good"?pe.green:pe.amber}`,borderRadius:e.appBorderRadius})),x7=st.span(({tone:e})=>({fontWeight:600,color:e==="good"?pe.green:pe.amber})),bX=st.div(({theme:e})=>({marginTop:"6px",padding:`${e.layoutMargin*.5}px ${e.layoutMargin*.75}px`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,lineHeight:1.45,color:e.color.mediumdark,background:e.background.hoverable,borderLeft:`3px dashed ${e.appBorderColor}`,borderRadius:e.appBorderRadius})),wX=st.div(({theme:e})=>({marginTop:"6px",padding:`${e.layoutMargin*.5}px ${e.layoutMargin*.75}px`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,lineHeight:1.45,color:e.color.defaultText,background:e.background.hoverable,borderLeft:`3px solid ${e.color.secondary}`,borderRadius:e.appBorderRadius})),vX=st.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})),SX=st.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}})),kX=st.button(({theme:e})=>({padding:"4px 7px",borderRadius:e.appBorderRadius,fontFamily:e.typography.fonts.mono,fontSize:e.typography.size.s1,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}})),CX=st.div(({theme:e})=>({padding:"16px 0",marginTop:"8px",borderTop:`1px solid ${e.appBorderColor}`,display:"flex",flexDirection:"column",gap:"8px"})),EX=st.div({display:"flex",flexWrap:"wrap",gap:"6px"}),TX=st.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})),IX=st.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})),RX=st.div(({theme:e})=>({marginTop:"4px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.warning}));function AX(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}var FX=st.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"}})),S2e=st.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})),y7=({storyId:e,alt:t,src:n,onRequestCapture:r,fallback:o,title:i})=>{let a=JK(null),[s,c]=ys(!1);return QK(()=>{if(s||n)return;let u=a.current;if(!u||typeof IntersectionObserver>"u"){c(!0),r?.(e);return}let l=new IntersectionObserver(d=>{d.some(f=>f.isIntersecting)&&(c(!0),r?.(e),l.disconnect())},{root:null,rootMargin:"200px 0px",threshold:.01});return l.observe(u),()=>l.disconnect()},[e,n,s,r]),he.createElement("div",{ref:a},n?he.createElement(i5,{title:i},he.createElement(MX,{src:n,alt:t})):s?he.createElement(i5,{title:i},he.createElement(w7,null)):o)},MX=({src:e,alt:t})=>{let[n,r]=ys(!1),[o,i]=ys(!1);return o?he.createElement(gX,{title:t},"preview unavailable"):he.createElement(he.Fragment,null,!n&&he.createElement(w7,null),he.createElement(fX,{src:e,alt:t,onLoad:()=>r(!0),onError:()=>i(!0),style:n?void 0:{position:"absolute",opacity:0}}))};function Tf(e){return e.belowFloor?"needyou":e.rendersMoreLike?"flag":e.vouching?.verdicts?.some(t=>t.vouch==="differs")?"drift":"ready"}function b7(e,t){if(t==="all")return!0;let n=Tf(e);return t==="ready"?n==="ready"||n==="drift":n===t}function PX(e){return e>=90?"high":e>=70?"medium":"low"}function _X(e){return e==="high"?"#16a34a":e==="medium"?"#d97706":"#ef4444"}var LX={matched:"\u2713",differs:"\u2260","no-evidence":"\xF8"},BX={backgroundColor:"color",color:"color",textColor:"color",fill:"color",borderColor:"border",borderWidth:"border",strokes:"border",strokeWeight:"border",padding:"padding",paddingV:"padding",paddingH:"padding",paddingTop:"padding",paddingRight:"padding",paddingBottom:"padding",paddingLeft:"padding",gap:"padding",itemSpacing:"padding",borderRadius:"radius",cornerRadius:"radius",fontFamily:"type",fontSize:"type",fontWeight:"type",lineHeight:"type",letterSpacing:"type",fontStyle:"type",boxShadow:"shadow",shadow:"shadow",effects:"shadow",opacity:"shadow",icon:"icon",hasIcon:"icon"},zX=["color","border","padding","radius","type","shadow","icon","other"];function DX({vouching:e}){let t=new Map;for(let i of e.verdicts){if(i.vouch==="no-evidence")continue;let a=BX[i.prop]??"other",s=t.get(a)??{differs:!1,matched:!1};i.vouch==="differs"?s.differs=!0:s.matched=!0,t.set(a,s)}let n=zX.filter(i=>t.has(i)).map(i=>{let s=t.get(i).differs?"differs":"matched";return{axis:i,vouch:s}});if(n.length===0)return null;let r=n.filter(i=>i.vouch==="differs"),o=e.specScore!=null?` \xB7 render ${Math.round(e.specScore*100)}%`:"";return he.createElement(he.Fragment,null,he.createElement(hX,null,n.map(i=>he.createElement(xX,{key:i.axis,vouch:i.vouch},i.axis," ",LX[i.vouch]))),he.createElement(yX,{tone:r.length===0?"good":"drift"},r.length===0?he.createElement("span",null,he.createElement(x7,{tone:"good"},"Strong match.")," Every compared axis agrees \u2014 ",n.length," of ",n.length,o,"."):he.createElement("span",null,he.createElement(x7,{tone:"drift"},r.map(i=>i.axis).join(", ")," ",r.length===1?"differs":"differ",".")," ","value drift the review flags, not a mapping problem",o,".")))}var a5=({results:e,stories:t,onApply:n,onCancel:r,onRerun:o,isApplying:i,isRerunning:a,source:s,resolveThumbnail:c,resolveStoryScreenshot:u,isCapturingScreenshots:l,onRequestStoryCapture:d,onRequestFigmaThumbnail:f,onBrowse:p})=>{let[g,m]=ys(()=>{let E=new Set;for(let w of e.mappings)w.belowFloor||(w.vouching||w.confidence>=90)&&E.add(w.storyId);return E}),[C,v]=ys(""),[h,M]=ys("all"),[L,z]=ys(null),A=d7(()=>{let E=new Map;for(let w of t)E.set(w.id,{name:w.name,title:w.title});return E},[t]),D=d7(()=>{let E=e.mappings;if(h!=="all"&&(E=E.filter(w=>b7(w,h))),C.trim()){let w=C.toLowerCase();E=E.filter(R=>{let _=A.get(R.storyId);return _?.name.toLowerCase().includes(w)||_?.title.toLowerCase().includes(w)||R.componentSetName.toLowerCase().includes(w)||R.figmaFrameName.toLowerCase().includes(w)})}return E},[e.mappings,h,C,A]),y=E=>{m(w=>{let R=new Set(w);return R.has(E)?R.delete(E):R.add(E),R})},k=()=>{let E=e.mappings.filter(R=>g.has(R.storyId)),w=e.mappings.filter(R=>!g.has(R.storyId)).map(R=>R.storyId);n(E,w)},T=e.mappings.filter(E=>b7(E,"ready")).length,F=e.mappings.filter(E=>Tf(E)==="flag").length,S=e.mappings.filter(E=>Tf(E)==="needyou").length,x=e.usage;return he.createElement(ZK,null,he.createElement(eX,null,he.createElement(tX,null,he.createElement(nX,null,he.createElement(rX,null,s==="deterministic"?"Auto-Link Results":"Auto-Map Results"),he.createElement(r5,{variant:"success"},e.mappings.filter(E=>!E.belowFloor).length," matched"),e.mappings.some(E=>E.belowFloor)&&he.createElement(r5,{variant:"info"},e.mappings.filter(E=>E.belowFloor).length," need you"),e.unmatched.length>0&&he.createElement(r5,{variant:"danger"},e.unmatched.length," unmatched"),s&&he.createElement(IX,{variant:s},s==="cache"?"Loaded from cache":s==="deterministic"?"Deterministic (no AI)":"Fresh analysis")),he.createElement(oX,null,"Review matches below. Uncheck any incorrect mappings before applying."),e.computedAt&&he.createElement(RX,null,"\u26A0 Computed ",AX(e.computedAt)," \u2014 re-run to match against your current Figma file.")),he.createElement(iX,null,o&&he.createElement(FX,{onClick:o,disabled:a},a?"Running\u2026":s==="deterministic"?"\u21BB Run again":"\u21BB Re-run LLM"),he.createElement(fi,{onClick:r,variant:"ghost"},"Cancel"),he.createElement(fi,{loading:i,onClick:k,loadingText:"Applying..."},"Apply ",g.size," Selected"))),he.createElement(aX,null,he.createElement(sX,{type:"text",placeholder:"Filter stories...",value:C,onChange:E=>v(E.target.value)}),he.createElement(lX,null,he.createElement(Ef,{active:h==="all",onClick:()=>M("all")},"All ",e.mappings.length),T>0&&he.createElement(Ef,{active:h==="ready",onClick:()=>M("ready")},"Ready (",T,")"),F>0&&he.createElement(Ef,{active:h==="flag",onClick:()=>M("flag")},"Renders elsewhere (",F,")"),S>0&&he.createElement(Ef,{active:h==="needyou",onClick:()=>M("needyou")},"Need you (",S,")"))),he.createElement(cX,null,D.map(E=>{let w=A.get(E.storyId),R=PX(E.confidence),_=g.has(E.storyId),P=R==="low";return he.createElement(uX,{key:E.storyId,dimmed:P&&!_,accent:Tf(E)},he.createElement(pX,{checked:_,onClick:()=>y(E.storyId)},_?"\u2713":""),(()=>{let N=u?.(E.storyId),I=he.createElement(y7,{storyId:E.storyId,alt:w?.name||E.storyId,src:N,onRequestCapture:d,fallback:he.createElement(dX,{bgColor:P?ol.bgIdle:ol.bgActive},he.createElement("span",{style:{fontFamily:"Inter",fontSize:"8px",fontWeight:500,color:P?ol.iconIdle:ol.iconActive}},(w?.name||"?").substring(0,4)))});return he.createElement(f7,null,I,he.createElement(g7,null,"Storybook"))})(),he.createElement(m7,null,he.createElement(h7,null,w?.name||E.storyId),he.createElement(o5,null,w?.title||"")),he.createElement(mX,null,"\u2192"),(()=>{let N=c?.(E.figmaNodeId),I=n5(E.reason),O=E.vouching?E.figmaFrameName:I.summary+(I.candidates?` (${I.candidates} candidates)`:""),j=he.createElement(y7,{storyId:E.figmaNodeId,alt:E.figmaFrameName,src:N,title:O,onRequestCapture:f,fallback:he.createElement(i5,{title:O},he.createElement("span",{style:{fontFamily:"Inter",fontSize:"10px",fontWeight:500,color:ol.iconIdle}},"No thumbnail"))});return he.createElement(f7,null,j,he.createElement(g7,null,"Figma"))})(),he.createElement(m7,null,he.createElement(h7,null,E.componentSetName),E.figmaFrameName!==E.componentSetName&&he.createElement(o5,null,E.figmaFrameName),E.belowFloor?he.createElement(bX,null,"No confident match \u2014 closest is"," ",he.createElement("b",null,E.componentSetName),E.bestScore!=null?` (best ${Math.round(E.bestScore*100)}%)`:"",". Left unselected; map by hand if it's right."):E.vouching?he.createElement(DX,{vouching:E.vouching}):he.createElement(p7,{data:n5(E.reason),color:_X(R)}),E.rendersMoreLike&&he.createElement(wX,null,"\u2937 renders more like ",he.createElement("b",null,E.rendersMoreLike.name)," (",Math.round(E.rendersMoreLike.score*100),"%) \u2014 name picked this, but check the mapping")),he.createElement(vX,{level:R},E.confidence,"%"),E.vouching?.verdicts?.length?he.createElement(kX,{title:"Compare the Figma and code values behind this match","aria-label":"Compare properties",onClick:N=>{let I=N.currentTarget.getBoundingClientRect();z(O=>O?.storyId===E.storyId?null:{storyId:E.storyId,top:Math.min(I.bottom+6,window.innerHeight-320),left:Math.max(12,I.left-380)})}},"{}"):null,p&&he.createElement(SX,{onClick:()=>p(E.componentSetName)},"Browse"),L?.storyId===E.storyId&&E.vouching?.verdicts&&he.createElement(i7,{title:E.componentSetName,subtitle:E.figmaFrameName!==E.componentSetName?E.figmaFrameName:void 0,verdicts:E.vouching.verdicts,figmaNodeId:E.figmaNodeId,renderScore:E.vouching.specScore,anchor:{top:L.top,left:L.left},onClose:()=>z(null)}))}),e.unmatched.length>0&&he.createElement(CX,null,he.createElement(o5,null,e.unmatched.length," stories couldn't be matched \u2014 map manually after applying"),he.createElement(EX,null,e.unmatched.map(E=>{let w=A.get(E);return he.createElement(TX,{key:E},he.createElement("span",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:"#cbd5e1"}}),w?`${w.name} (${w.title})`:E)})))),x&&s!=="cache"&&he.createElement("div",{style:{padding:"8px 24px",borderTop:"1px solid #f0f0f0"}},he.createElement(Cf,{inputTokens:x.inputTokens||0,outputTokens:x.outputTokens||0,costUsd:x.costUsd||0})))};Me();Pe();import{useState as Ia,useCallback as Ra,useRef as NX}from"react";import{useStorybookApi as OX,addons as $X}from"storybook/manager-api";function v7({projectId:e}){let t=OX(),n=NX(null),[r,o]=Ia(!1),[i,a]=Ia(!1),[s,c]=Ia(!1),[u,l]=Ia(null),[d,f]=Ia(null),[p,g]=Ia(null),[m,C]=Ia(""),[v,h]=Ia(null),M=Ra(async()=>{let F=await fetch("/index.json");if(!F.ok)throw new Error("Failed to fetch Storybook index");let S=await F.json(),x=S.entries||S.stories||{},E=Object.keys(x).filter(_=>x[_].type==="story");b.debug(`[useAutoMap] Found ${E.length} stories in index.json`);let w=[];for(let _ of E){let P=x[_],N=t.getData(_),I={...N?.initialArgs||{}},O=N?.argTypes||{};for(let[j,B]of Object.entries(O))if(!(j in I)){let se=B;if(se.defaultValue!==void 0)I[j]=se.defaultValue;else if(se.table?.defaultValue?.summary!==void 0){let H=se.table.defaultValue.summary;H==="false"?I[j]=!1:H==="true"?I[j]=!0:I[j]=H}}w.push({id:_,name:P.name||_.split("--").pop()||_,title:P.title||"",initialArgs:I,argTypes:O})}let R=w.filter(_=>Object.keys(_.initialArgs).length>0);return b.debug(`[useAutoMap] Manifest: ${w.length} stories, ${R.length} with args`),w},[t]),L=Ra(async()=>{if(!e)return!1;try{let F=q(),S=localStorage.getItem("uicopilot_session_token");if(!S)return!1;let x=await fetch(`${F}/api/figma/auto-map?projectId=${e}`,{headers:{Authorization:`Bearer ${S}`}});if(!x.ok)return!1;let E=await x.json();return E.hasSuggestions&&E.mappings?.length>0?(f(E),h("cache"),C(`Loaded ${E.mappings.length} saved suggestions`),b.debug(`[useAutoMap] Loaded ${E.mappings.length} existing suggestions from DB`),!0):!1}catch{return!1}},[e]),z=Ra(async F=>{o(!0),C("Collecting story information...");let S;try{if(S=await M(),F?.length&&(S=S.filter(E=>!F.includes(E.id)),b.debug(`[useAutoMap] After excluding mapped: ${S.length} stories`)),S.length===0){l("No unmapped stories found"),o(!1);return}g(S)}catch(E){l(E instanceof Error?E.message:"Failed to collect story manifest"),o(!1);return}o(!1),a(!0),C(`Analyzing ${S.length} stories against Figma components...`);let x=new AbortController;n.current=x;try{let E=q(),w=localStorage.getItem("uicopilot_session_token");if(!w)throw new Error("Not authenticated");let R=await fetch(`${E}/api/figma/auto-map`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${w}`},body:JSON.stringify({projectId:e,stories:S.map(P=>({id:P.id,name:P.name,title:P.title,initialArgs:P.initialArgs,argTypes:P.argTypes}))}),signal:x.signal});if(!R.ok){let P=await R.json();throw new Error(P.error||"Auto-map failed")}let _=await R.json();f(_),h("llm"),C(`Found ${_.stats.matched} matches (${_.stats.highConfidence} high confidence)`),b.debug(`[useAutoMap] Results: ${_.stats.matched}/${_.stats.total} matched, ${_.unmatched.length} unmatched`)}catch(E){if(E instanceof DOMException&&E.name==="AbortError"){C("Cancelled");return}l(E instanceof Error?E.message:"Auto-map failed")}finally{a(!1),n.current=null}},[e,M]),A=Ra(async F=>{if(!e)return;if(l(null),f(null),h(null),o(!0),C("Checking for existing suggestions..."),await L()){o(!1);return}await z(F)},[e,L,z]),D=Ra(async F=>{e&&(l(null),f(null),h(null),await z(F))},[e,z]),y=Ra(async(F,S=[])=>{if(!(!e||F.length===0)){c(!0),C(`Applying ${F.length} mappings...`);try{let x=q(),E=localStorage.getItem("uicopilot_session_token");if(!E)throw new Error("Not authenticated");let w=await fetch(`${x}/api/mappings/batch`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({projectId:e,mappings:F.map(_=>({storyId:_.storyId,figmaNodeId:_.figmaNodeId,name:_.figmaFrameName||_.componentSetName}))})});if(!w.ok){let _=await w.json().catch(()=>({}));throw new Error(_.error||`Apply failed (${w.status})`)}let{applied:R=F.length}=await w.json();C(`Applied ${R}/${F.length} mappings`),fetch(`${x}/api/figma/auto-map/verdicts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({projectId:e,accepted:F.map(_=>_.storyId),rejected:S})}).catch(_=>{b.debug("[useAutoMap] verdict recording failed (ignored)",_)}),b.debug(`[useAutoMap] Applied ${R}/${F.length} mappings (batch)`);try{$X.getChannel().emit("uireview/mappings-changed")}catch{}}catch(x){l(x instanceof Error?x.message:"Failed to apply mappings")}finally{c(!1)}}},[e]),k=Ra(()=>{n.current?.abort()},[]),T=Ra(()=>{f(null),g(null),l(null),C(""),h(null)},[]);return{collectAndMap:A,rerun:D,loadExisting:L,applyMappings:y,cancel:k,reset:T,isCollecting:r,isMapping:i,isApplying:s,error:u,results:d,manifest:p,progress:m,source:v}}Me();Pe();import{useState as zl,useCallback as Tu,useRef as Pf,useEffect as iJ}from"react";async function vu(e,t,n,r){let o=new Array(e.length),i=0;async function a(){for(;i<e.length&&!r();){let s=i++;try{let c=await e[s]();o[s]=c,r()||n(s,c)}catch(c){o[s]=c,r()||n(s,c)}}}return await Promise.all(Array.from({length:Math.min(t,e.length)},()=>a())),o}nt();Bl();async function Rf(e,t,n,r){let o=e.document;o.querySelectorAll("[data-uicopilot-instance]").forEach(f=>f.removeAttribute("data-uicopilot-instance")),o.querySelectorAll("[data-uicopilot-instance-count]").forEach(f=>f.removeAttribute("data-uicopilot-instance-count"));let i=e.__STORYBOOK_PREVIEW__;if(!i?.storyStoreValue)return 0;let a;try{a=await i.storyStoreValue.loadStory({storyId:t})}catch{return 0}let s=r??o.getElementById("storybook-root")??o.getElementById("root");if(!s||!a.component)return 0;let c=r?[]:Array.from(o.body.children).filter(f=>f!==s&&!f.contains(s)&&f.tagName!=="SCRIPT"),u=[s,...c],l=n(a.component,u);if(l.length===0&&a.subcomponents){let f=Object.values(a.subcomponents).flatMap(p=>p?n(p,u):[]);l=Array.from(new Set(f)).filter(p=>!f.some(g=>g!==p&&g.contains(p))).sort((p,g)=>p.compareDocumentPosition(g)&4?-1:1)}return l.forEach((f,p)=>f.setAttribute("data-uicopilot-instance",String(p+1))),[s,...c].some(f=>[f,...Array.from(f.querySelectorAll("*"))].some(p=>Object.keys(p).some(g=>g.startsWith("__reactFiber$"))))&&s.setAttribute("data-uicopilot-instance-count",String(l.length)),l.length}function Af(e,t){let n=u=>{let l=Object.keys(u).find(d=>d.startsWith("__reactFiber$"));return l?u[l]:void 0},r=u=>!!u&&u.nodeType===1&&typeof u.getBoundingClientRect=="function",o=u=>u.elementType===e||u.type===e,i=u=>{for(let l=u?.child??null;l;l=l.sibling){if(l.tag===5&&r(l.stateNode)){let f=l.stateNode.getBoundingClientRect();if(f.width>0&&f.height>0)return l.stateNode}let d=i(l);if(d)return d}},a=u=>{for(let l=u.return;l;l=l.return)if(o(l))return!0;return!1},s=new Set,c=[];for(let u of t)for(let l of[u,...Array.from(u.querySelectorAll("*"))])for(let d=n(l)??null;d;d=d.return){if(!o(d)||s.has(d)||(s.add(d),a(d)))continue;let f=i(d);f&&c.push(f)}return c}fu();Pe();async function Ff(e,t){let n=new Map,r=new Set(e.map(f=>f.id)),o=new Set;for(let f of e)o.add(f.id.includes("--")?f.id.split("--")[0]:f.id);let i=new Map;try{let f=await fetch(`${window.location.origin}/index.json`);if(f.ok){let p=await f.json();for(let g of Object.values(p.entries??{})){if(g.type!=="docs")continue;let m=g.id.includes("--")?g.id.split("--")[0]:g.id;i.has(m)||i.set(m,g.id)}}}catch{}let a=[...o],s=Math.min(4,a.length||1),c=Array.from({length:s},()=>{let f=document.createElement("iframe");return f.style.cssText="position:absolute;left:-9999px;top:0;width:1000px;height:800px;border:0;visibility:hidden;",f.setAttribute("aria-hidden","true"),document.body.appendChild(f),f}),u=0,l=0,d=async f=>{let p=await XX(f,r,g=>n.has(g));for(let[g,m]of p)n.set(g,m),u+=1,t?.(u,e.length)};try{await Promise.all(c.map(async f=>{for(;l<a.length;){let p=a[l++],g=i.get(p)??`${p}--docs`;if(!(i.size>0&&!i.has(p)))try{await JX(f,g),f.contentDocument&&await d(f.contentDocument)}catch{}}}))}finally{c.forEach(f=>f.remove())}return n}async function XX(e,t,n=()=>!1){let r=new Map,o=e.defaultView;for(let i of Array.from(e.querySelectorAll(".docs-story"))){let s=i.closest('[id^="anchor--"]')?.id.replace("anchor--","");if(!s||!t.has(s)||n(s)||r.has(s))continue;let c=i.querySelector(".innerZoomElementWrapper");if(!c||c.querySelectorAll("*").length<=1)continue;o&&await Rf(o,s,Af,c);let u=Ca(c)??c;try{r.set(s,Ll(u))}catch(l){b.warn(`[docsBatch] extract failed for ${s}`,l)}}return r}function JX(e,t,n=2500){return new Promise((r,o)=>{let i=!1,a=u=>{i||(i=!0,clearInterval(s),clearTimeout(c),u?o(u):r())};e.src=`/iframe.html?id=${encodeURIComponent(t)}&viewMode=docs`;let s=setInterval(()=>{let u=e.contentDocument;if(!u)return;let l=Array.from(u.querySelectorAll(".innerZoomElementWrapper"));if(l.length===0)return;l.filter(f=>f.querySelectorAll("*").length>1).length>=l.length&&setTimeout(()=>a(),100)},50),c=setTimeout(()=>a(new Error(`docs render timeout: ${t}`)),n)})}Bl();fu();Pe();var QX=4,ZX=8e3;async function A7(e,t){let n=new Map;if(e.length===0)return n;let r=[...e],o=Math.min(QX,r.length),i=Array.from({length:o},()=>{let c=document.createElement("iframe");return c.style.cssText="position:absolute;left:-9999px;top:0;width:1000px;height:800px;border:0;visibility:hidden;",c.setAttribute("aria-hidden","true"),document.body.appendChild(c),c}),a=0,s=0;try{await Promise.all(i.map(async c=>{for(;s<r.length;){let u=r[s++];try{await oJ(c,u.id);let l=c.contentDocument;if(!l)continue;c.contentWindow&&await Rf(c.contentWindow,u.id,Af);let d=eJ(l);d&&(n.set(u.id,d),a+=1,t?.(a,e.length))}catch{}}}))}finally{i.forEach(c=>c.remove())}return b.debug(`[storiesBatch] captured ${n.size}/${e.length} via per-story iframes`),n}function eJ(e){let t=e.querySelector("#storybook-root")??e.querySelector("#root");if(!t||t.childElementCount===0)return null;let n=Ca(t)??t.firstElementChild;if(!n)return null;try{let r=Ll(n),o=r?.children??[],i=r?.styles??{};return o.length===0&&!rJ(i)?null:r}catch(r){return b.warn("[storiesBatch] extract failed",r),null}}var tJ=new Set(["","none","normal","auto","0px","block","inline","transparent","rgba(0, 0, 0, 0)","1"]),nJ=/^0*(\.0+)?(px|em|rem|%|pt|vh|vw)?$/;function rJ(e){return Object.values(e).some(t=>{if(typeof t!="string")return!1;let n=t.trim().toLowerCase();return!tJ.has(n)&&!nJ.test(n)})}function oJ(e,t,n=ZX){return new Promise((r,o)=>{let i=!1,a=u=>{i||(i=!0,clearInterval(s),clearTimeout(c),u?o(u):r())};e.src=`/iframe.html?id=${encodeURIComponent(t)}&viewMode=story`;let s=setInterval(()=>{let u=e.contentDocument;if(!u)return;let l=u.querySelector("#storybook-root")??u.querySelector("#root");!l||l.childElementCount===0||l.querySelectorAll("*").length<=1||setTimeout(()=>a(),100)},50),c=setTimeout(()=>a(new Error(`story render timeout: ${t}`)),n)})}Pe();async function F7(){try{let e=await fetch(`${window.location.origin}/__uicopilot/health`);return e.ok?(await e.json()).ok===!0:!1}catch{return!1}}async function Mf(e,t=!1){let n=window.location.origin;try{let r=await fetch(`${n}/__uicopilot/capture?storyId=${encodeURIComponent(e)}${t?"&domOnly=1":""}`);if(r.ok){let o=await r.json();return{screenshot:o.screenshot||void 0,computedStyles:o.computedStyles||void 0,domTree:o.domTree||void 0}}}catch{}try{let r=await fetch(`${n}/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`);if(r.ok)return{screenshot:(await r.json()).screenshot||void 0}}catch{b.debug(`[presetCapture] no capture endpoint for ${e}`)}return{}}function aJ(){try{return localStorage.getItem("uicopilot_client_capture")==="0"}catch{return!1}}function sJ(){try{return localStorage.getItem("uicopilot_docs_batch")==="1"}catch{return!1}}var M7=25,lJ=3,cJ=3e5,uJ=4;function pJ(e){let t=Object.entries(e).filter(([,n])=>n!=null&&n>=.9).map(([n])=>n);return t.length?`matched: ${t.join(", ")}`:"weak signature match"}function dJ(e,t){let n=`Signature ${Math.round(e.score*100)}% \u2014 ${pJ(e.signals)}`;return t?`${n}; runner-up: ${t.name} (${Math.round(t.score*100)}%)`:n}function _f({projectId:e}){let[t,n]=zl(!1),[r,o]=zl(""),[i,a]=zl(null),[s,c]=zl(null),[u,l]=zl(null),[d,f]=zl(0),p=Pf(null),g=Pf(null),m=Pf(!1),C=Pf(!1),v=Tu(()=>{g.current&&(clearInterval(g.current),g.current=null)},[]);iJ(()=>v,[v]);let h=Tu(async A=>{if(C.current)return;if(!e||A.length===0){c(A.length===0?"No unmapped stories found":null);return}let D=localStorage.getItem("uicopilot_session_token");if(!D){c("Not authenticated");return}C.current=!0,m.current=!1,n(!0),c(null),l(null),p.current=Date.now(),f(0),v(),g.current=setInterval(()=>{p.current!=null&&f(Date.now()-p.current)},500);let y=q(),k=new Map;if(sJ()){o("Capturing story renders (docs batch)\u2026"),a({done:0,total:A.length,phase:"capturing"});try{let R=await Ff(A,(_,P)=>a({done:_,total:P,phase:"capturing"}));for(let[_,P]of R)k.set(_,P);b.debug(`[useAutoLink] docs-batch captured ${k.size}/${A.length}`)}catch(R){b.warn("[useAutoLink] docs-batch capture failed, server fallback",R)}if(m.current){o("Cancelled"),C.current=!1,n(!1),a(null);return}}o("Preparing match index\u2026 first run can take ~30s, then it is cached"),a({done:0,total:A.length,phase:"index"});let T=[],F=[],S={},x=R=>{let _=[];for(let N=0;N<R.length;N+=M7)_.push(R.slice(N,N+M7));let P=_.map(N=>async()=>{let I=JSON.stringify({projectId:e,captureMissing:!1,stories:N.map(j=>({id:j.id,name:j.name,title:j.title,args:j.args,domTree:k.get(j.id)??void 0}))}),O=async()=>{let j=await J(`${y}/api/figma/suggest-links/batch`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${D}`},body:I},cJ);if(!j.ok){let B=await j.json().catch(()=>({}));throw new Error(B.error||`suggest-links/batch failed (${j.status})`)}return await j.json()};try{return await O()}catch(j){if(m.current)throw j;return b.warn(`[useAutoLink] chunk retry after: ${j instanceof Error?j.message:j}`),await O()}});return{chunks:_,tasks:P}},E=R=>{let[_,P]=R.suggestions??[];if(!_){F.push(R.storyId);return}T.push({storyId:R.storyId,figmaNodeId:_.figmaNodeId,figmaFrameName:_.variantName??_.name,componentSetName:_.name,confidence:Math.round(_.score*100),reason:dJ(_,P),vouching:R.vouching?.[_.figmaNodeId],belowFloor:R.belowFloor,bestScore:R.bestScore,rendersMoreLike:R.rendersMoreLike?{name:R.rendersMoreLike.name,score:R.rendersMoreLike.score}:null})},w=async(R,_)=>{let{chunks:P,tasks:N}=x(R),I=0;return(await vu(N,lJ,(j,B)=>{let se=P[j];if(I+=se.length,o("Matching stories\u2026"),a({done:I,total:R.length,phase:"matching"}),B instanceof Error){b.warn(`[useAutoLink] chunk ${j} (${se.length} stories): ${B.message}`);for(let H of se)F.push(H.id);return}for(let H of B.results??[])E(H);for(let H of B.unmatched??[])F.includes(H)||F.push(H),_.push(H)},()=>m.current)).find(j=>j instanceof Error)};try{let R=[],_=await w(A,R);if(m.current){o("Cancelled");return}let P=A.filter(V=>R.includes(V.id)&&!k.has(V.id));if(P.length>0&&!aJ()){o("Capturing story renders\u2026"),a({done:0,total:P.length,phase:"capturing"});try{let V=await A7(P,Z=>a({done:Z,total:P.length,phase:"capturing"}));for(let[Z,Y]of V)k.set(Z,Y);b.debug(`[useAutoLink] client-captured ${V.size}/${P.length}`)}catch(V){b.warn("[useAutoLink] client capture failed",V)}if(m.current){o("Cancelled");return}}let N=P.filter(V=>!k.has(V.id));if(N.length>0&&await F7()){o("Capturing story renders\u2026"),a({done:0,total:N.length,phase:"capturing"});let V=0;if(await vu(N.map(Z=>async()=>{let Y=await Mf(Z.id,!0);Y.domTree&&k.set(Z.id,Y.domTree)}),uJ,()=>{V+=1,a({done:V,total:N.length,phase:"capturing"})},()=>m.current),m.current){o("Cancelled");return}}let I=A.filter(V=>k.has(V.id));if(I.length>0&&P.length>0){b.debug(`[useAutoLink] captured ${I.length}/${P.length}, re-matching`),await w(I,[]);for(let V of T){let Z=F.indexOf(V.storyId);Z!==-1&&F.splice(Z,1)}if(m.current){o("Cancelled");return}}if(T.length===0&&_)throw _;let O=new Set,j=T.filter(V=>O.has(V.storyId)?!1:(O.add(V.storyId),!0));b.debug(`[useAutoLink] ${A.length} stories \u2192 ${T.length} mappings (${j.length} unique)`);let B=[...new Set(j.map(V=>V.figmaNodeId))];if(B.length>0&&!m.current){o("Rendering thumbnails\u2026");try{let V=await J(`${y}/api/figma/thumbnails`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${D}`},body:JSON.stringify({projectId:e,nodeIds:B})},12e4);if(V.ok){let{thumbnails:Z}=await V.json();Object.assign(S,Z??{})}else b.warn(`[useAutoLink] batched thumbnails failed (${V.status})`)}catch(V){b.warn("[useAutoLink] batched thumbnails error",V)}}let se=new Set(j.map(V=>V.storyId)),H=[...new Set(F)].filter(V=>!se.has(V));l({mappings:j,unmatched:H,thumbnailUrls:S,stats:{total:A.length,matched:j.length,highConfidence:j.filter(V=>V.confidence>=90).length}}),o(`Found ${j.length} matches (no AI)`)}catch(R){c(R instanceof Error?R.message:"Auto-link failed")}finally{C.current=!1,n(!1),a(null),v()}},[e]),M=Tu(()=>{m.current=!0,n(!1),v()},[v]),L=Tu(()=>{l(null),c(null),o(""),a(null)},[]),z=Tu(async()=>{if(e)try{let A=q(),D=localStorage.getItem("uicopilot_session_token"),y=await J(`${A}/api/figma/auto-map?projectId=${encodeURIComponent(e)}`,{headers:{Authorization:`Bearer ${D}`}});if(!y.ok)return;let k=await y.json();k?.hasSuggestions&&Array.isArray(k.mappings)&&k.mappings.length>0&&l({mappings:k.mappings,unmatched:k.unmatched??[],thumbnailUrls:k.thumbnailUrls??{},computedAt:k.computedAt??void 0,stats:k.stats??{total:k.mappings.length,matched:k.mappings.filter(T=>!T.belowFloor).length,highConfidence:k.mappings.filter(T=>!T.belowFloor&&T.confidence>=90).length}})}catch(A){b.warn("[useAutoLink] hydrate failed",A)}},[e]);return{run:h,cancel:M,reset:L,hydrate:z,isRunning:t,progress:r,progressCount:i,elapsedMs:d,error:s,results:u}}Pe();import{useState as Lf,useEffect as P7,useRef as Bf,useCallback as _7}from"react";var fJ=2;async function gJ(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 zf(){let[e,t]=Lf({}),[n,r]=Lf(0),[o,i]=Lf(0),[a,s]=Lf(0),c=Bf(null),u=Bf(new Set),l=Bf([]),d=Bf(0);P7(()=>{let g=new AbortController;return c.current=g,()=>g.abort()},[]);let f=_7(()=>{let g=c.current;if(!(!g||g.signal.aborted))for(;d.current<fJ&&l.current.length>0;){let m=l.current.shift();d.current+=1,s(d.current),gJ(m,g.signal).then(C=>{g.signal.aborted||(C&&t(v=>({...v,[m]:C})),r(v=>v+1))}).finally(()=>{d.current-=1,s(d.current),g.signal.aborted||f()})}},[]),p=_7(g=>{!g||u.current.has(g)||(u.current.add(g),l.current.push(g),i(m=>m+1),f())},[f]);return P7(()=>()=>{b.debug(`[useStoryScreenshots] captured ${Object.keys(e).length} of ${u.current.size} requested`)},[]),{screenshots:e,requestCapture:p,isCapturing:a>0,progress:{done:n,total:o}}}Me();nt();Pe();import{useCallback as L7,useEffect as mJ,useRef as Df,useState as B7}from"react";var z7=new Map,hJ=300,D7=120;function u5(e){let t=z7.get(e);return t||(t=new Map,z7.set(e,t)),t}function Nf(e){let[t,n]=B7(()=>e?Object.fromEntries(u5(e)):{}),[r,o]=B7(0),i=Df(new Set),a=Df(new Set),s=Df(null),c=Df(null);mJ(()=>{let d=new AbortController;return c.current=d,()=>{d.abort(),s.current&&clearTimeout(s.current)}},[]);let u=L7(async()=>{let d=c.current;if(!e||!d||d.signal.aborted)return;let f=[...a.current].slice(0,hJ);if(f.length){for(let p of f)a.current.delete(p);o(p=>p+1);try{let p=localStorage.getItem("uicopilot_session_token"),g=await J(`${q()}/api/figma/thumbnails`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${p}`},body:JSON.stringify({projectId:e,nodeIds:f})},12e4);if(!g.ok){b.warn(`[useFigmaThumbnails] batch failed (${g.status})`);return}let{thumbnails:m}=await g.json();if(!m||d.signal.aborted)return;let C=u5(e);for(let[v,h]of Object.entries(m))C.set(v,h);n(v=>({...v,...m}))}catch(p){b.warn("[useFigmaThumbnails] batch error",p)}finally{o(p=>Math.max(0,p-1)),a.current.size>0&&(s.current=setTimeout(()=>{u()},D7))}}},[e]),l=L7(d=>{if(!e||!d||i.current.has(d))return;let f=u5(e).get(d);if(f){i.current.add(d),n(p=>p[d]?p:{...p,[d]:f});return}i.current.add(d),a.current.add(d),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{u()},D7)},[e,u]);return{thumbnails:t,requestThumbnail:l,isRendering:r>0}}import Be,{useState as p5,useEffect as Iu,useMemo as bJ,useCallback as wJ}from"react";import{styled as vJ}from"storybook/theming";Pe();import{useEffect as xJ,useState as yJ}from"react";function N7(e,t=5e3){let[n,r]=yJ(!1);return xJ(()=>{if(!e){r(!1);return}let o=setTimeout(()=>r(!0),t);return()=>clearTimeout(o)},[e,t]),n}var SJ=vJ.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"}})),Dl=({isOpen:e,onClose:t,onSelect:n,projectId:r,stories:o=[],currentStoryId:i,onStoryChange:a,multiSelect:s=!1,onMultiSelect:c,initialSearch:u})=>{let l=gu({projectId:r||"",enabled:e&&!!r}),d=N7(l.isLoading),f=Be.useRef(!1);Iu(()=>{e&&u&&!f.current&&(l.setSearch(u),f.current=!0),e||(f.current=!1)},[e,u]);let[p,g]=p5(new Set),[m,C]=p5(i||o[0]?.id||"");Iu(()=>{i&&C(i)},[i]);let v=50,h=8,[M,L]=p5({}),z=wJ(x=>{L(E=>({...E,[x]:(E[x]||1)+1}))},[]);Iu(()=>{L({})},[l.variantFilters]),Iu(()=>{l.expandedSets.forEach(x=>{let E=l.variantChildren[x];if(!E||E.length===0)return;let w=E;l.variantFilters.some(P=>P.value)&&(w=E.filter(P=>P.variantProperties?l.variantFilters.every(N=>N.value?P.variantProperties?.[N.property]===N.value:!0):!1));let R=M[x]||1,_=w.slice(0,R*v).map(P=>P.id);for(let P=0;P<_.length;P+=h){let N=_.slice(P,P+h),I=P/h*300;I===0?l.fetchVariantThumbnails(x,N):setTimeout(()=>l.fetchVariantThumbnails(x,N),I)}})},[l.expandedSets,l.variantChildren,l.variantFilters,M]),Iu(()=>{g(new Set)},[m]);let A=bJ(()=>{let x=[];return l.filteredFrames.forEach(E=>{if(E.type==="COMPONENT_SET"&&E.children){let w=l.variantFilters.some(R=>R.value)?E.children.filter(R=>R.variantProperties?l.variantFilters.every(_=>_.value?R.variantProperties?.[_.property]===_.value:!0):!1):E.children;x.push(...w)}else x.push(E)}),x},[l.filteredFrames,l.variantFilters]),D=x=>{if(s)g(E=>{let w=new Set(E);return w.has(x.id)?w.delete(x.id):w.add(x.id),w});else{let E=l.resolveThumbnail(x.id);try{n({...x,thumbnail:E})}catch(w){b.error("[ComponentBrowserModal] onSelect threw error:",w)}t()}},y=()=>{let x=A.map(w=>w.id),E=x.every(w=>p.has(w));g(E?new Set:new Set(x))},k=()=>{if(c&&p.size>0){let x=A.filter(E=>p.has(E.id)).map(E=>({...E,thumbnail:l.resolveThumbnail(E.id)}));c(x),g(new Set)}},T=x=>{C(x),a?.(x)},F=x=>{x.target===x.currentTarget&&t()},S=o.find(x=>x.id===m);return e?Be.createElement(a6,{onClick:F},Be.createElement(s6,null,Be.createElement(l6,null,Be.createElement(c6,null,"Link Figma Frames"),Be.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center"}},Be.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"),Be.createElement(u6,{onClick:t},"\xD7"))),Be.createElement(p6,null,l.error&&Be.createElement(x6,null,l.error),!l.error&&Be.createElement(Be.Fragment,null,o.length>0&&Be.createElement(R6,null,Be.createElement(A6,null,"Story:"),Be.createElement(F6,{value:m,onChange:x=>T(x.target.value)},o.map(x=>Be.createElement("option",{key:x.id,value:x.id},x.name,x.mappingsCount?` (${x.mappingsCount} linked)`:""))),S?.mappingsCount?Be.createElement(M6,{hasMapping:!0},S.mappingsCount," frames linked"):null),Be.createElement(h6,null,Be.createElement(mf,null,Be.createElement("input",{type:"checkbox",checked:l.showComponentSets,onChange:x=>l.setShowComponentSets(x.target.checked)}),"Component Sets"),Be.createElement(mf,null,Be.createElement("input",{type:"checkbox",checked:l.showFrames,onChange:x=>l.setShowFrames(x.target.checked)}),"Frames"),Be.createElement(mf,null,Be.createElement("input",{type:"checkbox",checked:l.showComponents,onChange:x=>l.setShowComponents(x.target.checked)}),"Components"),l.availablePages.length>1&&Be.createElement(Ml,{isActive:!!l.figmaPage,value:l.figmaPage,onChange:x=>l.setFigmaPage(x.target.value),style:{marginLeft:"auto"}},Be.createElement("option",{value:""},"All pages"),l.availablePages.map(x=>Be.createElement("option",{key:x,value:x},x)))),l.filterSuggestion&&Be.createElement(P6,null,Be.createElement(_6,null,"AI suggests:"),Be.createElement(L6,null,Object.entries(l.filterSuggestion.suggestedFilters).map(([x,E])=>`${x}=${E}`).join(", ")),Be.createElement(B6,{onClick:l.applySuggestedFilters},"Apply"),Be.createElement(z6,{onClick:l.dismissFilterSuggestion},"Dismiss")),l.filterSuggestionLoading&&Be.createElement(D6,null,"Matching story args to Figma filters..."),l.availableFilters.length>0&&Be.createElement(xf,null,Be.createElement(xu,null,"Filters:"),l.availableFilters.map(({property:x,values:E})=>{let w=l.variantFilters.find(R=>R.property===x);return Be.createElement(Ml,{key:x,isActive:!!w?.value,value:w?.value||"",onChange:R=>l.handleFilterChange(x,R.target.value)},Be.createElement("option",{value:""},x),E.map(R=>Be.createElement("option",{key:R,value:R},x,"=",R)))}),l.variantFilters.some(x=>x.value)&&Be.createElement(yf,{onClick:l.clearFilters},"Clear All")),l.rateLimitError&&Be.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."),Be.createElement(d6,{type:"text",placeholder:"Search frames...",value:l.search,onChange:x=>l.setSearch(x.target.value),autoFocus:!0}),s&&A.length>0&&Be.createElement(N6,null,Be.createElement(O6,{onClick:y},p.size===A.length?"Deselect All":"Select All Visible"),Be.createElement($6,null,p.size>0?`${p.size} selected of `:"Showing ",A.length," frames")),l.isLoading&&d&&Be.createElement(Ub,null,"Indexing your Figma file for the first time. This walks every page and can take a couple of minutes on a large file \u2014 later loads are cached and open in under a second."),l.isLoading&&Be.createElement(Bb,null,Array.from({length:6}).map((x,E)=>Be.createElement(I6,{key:E},Be.createElement("div",{style:{width:"100%",aspectRatio:"4 / 3"}},Be.createElement(hf,{width:"100%",height:"100%"})),Be.createElement("div",{style:{padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},Be.createElement(hf,{width:"80%",height:"16px"}),Be.createElement(hf,{width:"50%",height:"12px"}))))),!l.isLoading&&l.filteredFrames.length===0&&Be.createElement(Ub,null,l.search?"No components match your search":"No Figma components found. We index Figma components \u2014 component sets and standalone components. Plain design frames (screens, mockups) aren't included yet \u2014 frame support is planned \u2014 so a file made only of frames will look empty here for now."),!l.isLoading&&l.filteredFrames.length>0&&Be.createElement(Bb,null,l.filteredFrames.map(x=>Be.createElement(yu,{key:x.id,frame:x,thumbnail:l.thumbnails[x.id],thumbnails:l.thumbnails,variantThumbnails:l.variantThumbnails[x.id],variantChildren:l.variantChildren[x.id],variantFailed:l.variantFailed[x.id],isLoadingVariants:l.loadingVariants.has(x.id),isExpanded:l.expandedSets.has(x.id),isNew:l.recentlyAdded.has(x.name),onToggleExpand:l.toggleExpanded,onSelect:D,multiSelect:s,selectedFrames:p,variantFilters:l.variantFilters,variantPage:M[x.id]||1,onShowMore:z})),l.hasMore&&Be.createElement(SJ,{onClick:l.loadMore,disabled:l.loadingMore},l.loadingMore?"Loading...":`Show more (${l.totalFrames-l.frames.length} remaining)`)))),s&&Be.createElement(H6,null,Be.createElement(U6,{disabled:p.size===0,onClick:k},"Link ",p.size," Selected")))):null};Ce();nt();pb();import{addons as Fa}from"storybook/manager-api";function Of(e,t,n){return e>0?"error":t>0||n>0?"warn":"success"}var d5="uireview/badge",jo=nf;function kJ(e){return e.criticalCount>0?"status-value:error":e.majorCount>0||e.minorCount>0?"status-value:warning":"status-value:success"}function CJ(e){return Of(e.criticalCount,e.majorCount,e.minorCount)}function EJ(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 TJ(e){let t=e.criticalCount+e.majorCount;return t>0?`\u2717 ${t} major difference${t>1?"s":""} from design`:e.minorCount>0?`\u26A0 ${e.minorCount} minor difference${e.minorCount>1?"s":""}`:"\u2713 No drift found"}function Aa(){try{let e=localStorage.getItem("uicopilot_feature_flags");return e?!!JSON.parse(e).enableReviewBadges:!1}catch{return!1}}function $7(e){if(Aa())try{Fa.getChannel().emit(jo.REVIEW_START,{storyId:e})}catch{}}function gi(e,t){if(Aa())try{Fa.getChannel().emit(jo.REVIEW_COMPLETE,{storyId:e,summary:t})}catch{}}function H7(e){if(Aa())try{Fa.getChannel().emit(jo.REVIEW_ERROR,{storyId:e})}catch{}}function Ru(e){try{Fa.getChannel().emit(jo.REVIEW_CLEAR,{storyId:e})}catch{}}function U7(){try{Fa.getChannel().emit(jo.REVIEW_RESET,{})}catch{}}function f5(e){try{typeof e.unset=="function"?e.unset():typeof e.set=="function"&&e.set([])}catch{}C3()}var O7=null;function j7(e){if(O7!==null)return;let t=Fa.getChannel(),n=o=>i=>{Aa()&&o(i)};t.on(jo.REVIEW_START,n(({storyId:o})=>{e.set([{value:"status-value:pending",typeId:d5,storyId:o,title:"Reviewing...",description:"AI review in progress"}]),Qi(o,!0),of(o,0)})),t.on(jo.REVIEW_COMPLETE,n(({storyId:o,summary:i})=>{e.set([{value:kJ(i),typeId:d5,storyId:o,title:TJ(i),description:EJ(i)}]),Qi(o,!0),of(o,i.issueCount),pu(o,CJ(i)),typeof i.score=="number"&&sf(o,i.score)})),t.on(jo.REVIEW_ERROR,n(({storyId:o})=>{e.set([{value:"status-value:error",typeId:d5,storyId:o,title:"Review Failed",description:"An error occurred during review"}]),Qi(o,!0),of(o,0),pu(o,"error")})),t.on(jo.REVIEW_CLEAR,({storyId:o})=>{if(o){try{e.unset?.([o])}catch{}E3(o)}else f5(e)}),t.on(jo.REVIEW_RESET,()=>{try{e.unset?.()}catch{}});let r=Aa();r||f5(e),O7=setInterval(()=>{let o=Aa();o!==r&&(r=o,o||f5(e))},1500)}var IJ="uireview/mapped",V7="uireview/mappings-updated";function W7(e){try{Fa.getChannel().emit(V7,{storyIds:e})}catch{}}function G7(e){let t=Fa.getChannel();t.on(jo.REVIEW_CLEAR,({storyId:n})=>{try{n?e.unset?.([n]):e.unset?.()}catch{}}),t.on(V7,({storyIds:n})=>{if(!n.length){try{e.unset?.()}catch{}return}for(let r of n)Qi(r,!1);e.set(n.map(r=>({value:"status-value:success",typeId:IJ,storyId:r,title:"\u{1F517} Linked to Figma (not yet reviewed)",description:"Story has a Figma mapping"})))})}var FJ=Bn.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}),MJ=Bn.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"})),PJ=Bn.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app})),_J=Bn.div({display:"flex",alignItems:"center",gap:"20px"}),LJ=Bn.h2(({theme:e})=>({fontSize:"16px",fontWeight:600,color:e.color.defaultText,margin:0,display:"flex",alignItems:"center",gap:"8px"})),BJ=Bn.div({display:"flex",gap:"4px"}),Y7=Bn(ha)(({theme:e,active:t})=>({padding:"8px 16px",borderBottom:"none",borderRadius:"6px",backgroundColor:t?e.background.hoverable:"transparent","&:hover":{backgroundColor:e.background.hoverable}})),zJ=Bn(qr)({width:"32px",height:"32px",fontSize:"20px",borderRadius:"6px"}),DJ=Bn.div({flex:1,overflow:"hidden",display:"flex",flexDirection:"column"}),NJ=Bn.div(({theme:e})=>({padding:"12px 20px",borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app,display:"flex",alignItems:"center",justifyContent:"space-between"})),OJ=Bn.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,display:"flex",gap:"16px"})),g5=Bn.div({display:"flex",flexDirection:"column",flex:1,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(255, 255, 255, 0.95)",padding:"40px"}),m5=Bn.div({display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",maxWidth:"400px"}),h5=Bn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText,textAlign:"center"})),x5=Bn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark,textAlign:"center"})),K7=Bn.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden"})),X7=Bn.div(({theme:e,pct:t})=>({width:t!=null?`${Math.max(t,4)}%`:"100%",height:"100%",backgroundColor:e.color.secondary,borderRadius:"4px",transition:"width 0.4s ease",animation:"uicopilot-progress-pulse 1.4s ease-in-out infinite","@keyframes uicopilot-progress-pulse":{"0%, 100%":{opacity:.6},"50%":{opacity:1}}})),J7=Bn.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"}})),Q7=Bn.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"}})),$f=({isOpen:e,onClose:t,projectId:n,autoRun:r,autoLink:o,hideWhileRunning:i})=>{let[a,s]=bs("map"),[c,u]=bs([]),[l,d]=bs(!0),[f,p]=bs(null),[g,m]=bs(!1),[C,v]=bs(null),h=AJ(),M=v7({projectId:n}),L=_f({projectId:n}),z=o??L,[A,D]=bs(!1),{refreshMappings:y}=yt(),{featureFlags:k}=ve(),T=zf(),F=Nf(n),S=ho(async()=>{d(!0);try{let Y=await fetch("/index.json");if(!Y.ok)throw new Error("Failed to fetch index.json");let re=await Y.json(),xe=re.entries||re.stories||{},me=Object.entries(xe).filter(([,be])=>be.type==="story").map(([be,fe])=>({id:be,name:fe.name||be.split("--").pop()||be,title:fe.title||"",importPath:fe.importPath,componentTitle:fe.title?.split("/").slice(0,-1).join("/")||fe.title,figmaMapping:null}));try{let be=q(),fe=localStorage.getItem("uicopilot_session_token"),Re=await J(`${be}/api/mappings?projectId=${n}&_t=${Date.now()}`,{headers:{Authorization:`Bearer ${fe}`}});if(Re.ok){let xt=await Re.json(),Pt=new Map((xt.mappings||[]).map(Je=>[Je.storyId,Je]));me.forEach(Je=>{let Qe=Pt.get(Je.id);Qe&&Qe.figmaNodeId&&(Je.figmaMapping={figmaNodeId:Qe.figmaNodeId,figmaFrameName:Qe.name||Qe.figmaFrameName||""})})}}catch(be){console.warn("[StoryMappingAssistant] Failed to fetch mappings (stories still loaded):",be)}u(me);let Xe=me.find(be=>!be.figmaMapping);Xe?p(Xe.id):me.length>0&&p(me[0].id)}catch(Y){console.error("[StoryMappingAssistant] Error fetching stories:",Y)}finally{d(!1)}},[n]);q7(()=>{e&&(S(),z.hydrate())},[e,S,z.hydrate]);let x=ho((Y,re,xe)=>{u(be=>be.map(fe=>fe.id===Y?{...fe,figmaMapping:{figmaNodeId:re,figmaFrameName:xe}}:fe));let me=c.findIndex(be=>be.id===Y),Xe=c.find((be,fe)=>fe>me&&!be.figmaMapping);Xe&&p(Xe.id)},[c]),E=ho(Y=>{u(re=>re.map(xe=>xe.id===Y?{...xe,figmaMapping:null}:xe)),Ru(Y)},[]),w=ho(Y=>{p(Y),s("map")},[]),R=ho(()=>{let Y=c.filter(re=>re.figmaMapping).map(re=>re.id);M.collectAndMap(Y)},[c,M]),_=ho(()=>{let Y=c.filter(re=>re.figmaMapping).map(re=>re.id);m(!1),M.rerun(Y)},[c,M]),P=ho(async(Y,re)=>{await M.applyMappings(Y,re),m(!1),M.reset(),S(),y(),t()},[M,S,y,t]),N=ho(()=>{m(!1),M.reset()},[M]),I=ho(()=>{let Y=c.filter(re=>!re.figmaMapping).map(re=>{let xe=h.getData(re.id);return{id:re.id,name:re.name,title:re.title,args:xe?.initialArgs??{}}});z.run(Y)},[c,z,h]),O=ho(async(Y,re)=>{await M.applyMappings(Y,re),D(!1),z.reset(),S(),y(),t()},[M,z,S,y,t]),j=De.useRef(!1);q7(()=>{!r||j.current||l||c.length===0||(j.current=!0,I())},[r,l,c.length,I]);let B=ho(()=>{D(!1),z.reset()},[z]),se=ho(()=>{D(!1),z.reset(),I()},[z,I]);De.useEffect(()=>{M.results&&m(!0)},[M.results]),De.useEffect(()=>{z.results&&D(!0)},[z.results]);let H=Y=>{Y.target===Y.currentTarget&&t()};if(!e||i&&z.isRunning&&!z.results)return null;let V=c.filter(Y=>Y.figmaMapping).length,Z=c.length;return RJ(De.createElement(De.Fragment,null,De.createElement(FJ,{onClick:H},De.createElement(MJ,{onClick:Y=>Y.stopPropagation()},De.createElement(PJ,null,De.createElement(_J,null,De.createElement(LJ,null,De.createElement("span",null,"\u{1F517}"),"Link Stories to Figma"),De.createElement(BJ,null,De.createElement(Y7,{active:a==="map",onClick:()=>s("map")},"Map Stories"),De.createElement(Y7,{active:a==="view",onClick:()=>s("view")},"View All Mappings"))),De.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},k.enableAutoMap&&!g&&!M.isCollecting&&!M.isMapping&&De.createElement(J7,{onClick:R,disabled:l||c.length===0},De.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"white",strokeWidth:"2"},De.createElement("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),De.createElement("path",{d:"M2 17l10 5 10-5"}),De.createElement("path",{d:"M2 12l10 5 10-5"})),"Auto-Map All"),k.enableAutoFigmaLinking&&!g&&!A&&!z.isRunning&&De.createElement(J7,{onClick:I,disabled:l||c.length===0,title:"Match stories to Figma sets by structural spec signatures \u2014 no LLM"},De.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"white",strokeWidth:"2"},De.createElement("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),De.createElement("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})),"Auto-Link (No AI)"),De.createElement(zJ,{onClick:t},"\xD7"))),De.createElement(DJ,null,(M.isCollecting||M.isMapping)&&De.createElement(g5,null,De.createElement(m5,null,De.createElement(K7,null,De.createElement(X7,null)),De.createElement(h5,null,"Auto-mapping stories to Figma"),De.createElement(x5,null,M.progress),De.createElement(fi,{onClick:M.cancel,variant:"ghost"},"Cancel"))),z.isRunning&&(()=>{let Y=z.progressCount,re=Y&&Y.total>0?Math.round(Y.done/Y.total*100):0,xe=Y?.phase==="index",me=Math.floor(z.elapsedMs/1e3),Xe=`${Math.floor(me/60)}:${(me%60).toString().padStart(2,"0")}`,be=Y?.phase==="capturing"?`Capturing story renders (docs batch) \xB7 ${Y.done} of ${Y.total} \xB7 ${re}% \xB7 ${Xe}`:xe?`Building the Figma match index \u2014 reading each variant's design spec from Figma. First run only; on a large library this takes a few minutes. \xB7 ${Xe}`:Y?`Matching stories \xB7 ${Y.done} of ${Y.total} \xB7 ${re}% \xB7 ${Xe}`:z.progress;return De.createElement(g5,null,De.createElement(m5,null,De.createElement(K7,null,De.createElement(X7,{pct:xe?8:re})),De.createElement(h5,null,"Auto-linking stories to Figma (no AI)"),De.createElement(x5,null,be),De.createElement(fi,{onClick:z.cancel,variant:"ghost"},"Cancel")))})(),z.error&&!z.isRunning&&!A&&De.createElement(g5,null,De.createElement(m5,null,De.createElement(h5,null,"Auto-link failed"),De.createElement(x5,null,z.error),De.createElement(fi,{onClick:z.reset,variant:"ghost"},"Dismiss"))),A&&z.results&&De.createElement(a5,{results:z.results,stories:c,onApply:O,onCancel:B,onRerun:se,isRerunning:z.isRunning,isApplying:M.isApplying,source:"deterministic",resolveThumbnail:Y=>F.thumbnails[Y]??z.results?.thumbnailUrls?.[Y],onRequestFigmaThumbnail:F.requestThumbnail,resolveStoryScreenshot:Y=>T.screenshots[Y],isCapturingScreenshots:T.isCapturing,onRequestStoryCapture:T.requestCapture,onBrowse:Y=>v(Y)}),g&&M.results&&De.createElement(a5,{results:M.results,stories:c,onApply:P,onCancel:N,onRerun:_,isApplying:M.isApplying,isRerunning:M.isCollecting||M.isMapping,source:M.source,resolveThumbnail:Y=>F.thumbnails[Y]??M.results?.thumbnailUrls?.[Y],onRequestFigmaThumbnail:F.requestThumbnail,resolveStoryScreenshot:Y=>T.screenshots[Y],isCapturingScreenshots:T.isCapturing,onRequestStoryCapture:T.requestCapture,onBrowse:Y=>v(Y)}),!g&&!A&&!z.isRunning&&!z.error&&!M.isCollecting&&!M.isMapping&&(a==="map"?De.createElement(Z6,{stories:c,loading:l,selectedStoryId:f,onSelectStory:p,onStoryMapped:x,projectId:n}):De.createElement(r7,{stories:c,loading:l,onLink:w,onUnlink:E,onUnlinkAll:()=>{Ru(),S(),y()},projectId:n}))),De.createElement(NJ,null,De.createElement(OJ,null,De.createElement("span",null,"Total: ",Z," stories"),De.createElement(Q7,{type:"mapped"},De.createElement("span",{className:"dot"}),V," mapped"),De.createElement(Q7,{type:"unmapped"},De.createElement("span",{className:"dot"}),Z-V," unmapped"))))),De.createElement(Dl,{isOpen:!!C,onClose:()=>v(null),onSelect:()=>v(null),projectId:n,initialSearch:C||void 0})),document.body)};import Vo,{useEffect as $J,useRef as HJ,useState as UJ}from"react";import{styled as gr}from"storybook/theming";var jJ=gr.div({position:"relative",display:"inline-flex"}),VJ=gr.button(({theme:e,tone:t,minWidth:n,maxWidth:r})=>({display:"inline-flex",alignItems:"center",gap:"8px",height:"26px",padding:"0 10px",border:"none",borderRadius:"6px",background:"transparent",cursor:"pointer",whiteSpace:"nowrap",...n?{minWidth:`${n}px`}:{},justifyContent:"flex-start",maxWidth:`${r??320}px`,overflow:"hidden",fontFamily:e.typography.fonts.base,color:t==="action"?W:t==="error"?e.color.negative:e.color.defaultText,"&:hover":{backgroundColor:e.background.hoverable}})),WJ=gr.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontSize:"10px",letterSpacing:"0.08em",textTransform:"uppercase",color:e.color.mediumdark})),GJ=gr.span(({theme:e})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,overflow:"hidden",textOverflow:"ellipsis"})),qJ=gr.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontSize:"11px",color:e.color.mediumdark})),YJ=gr.span(({tone:e})=>({width:"6px",height:"6px",borderRadius:"50%",backgroundColor:e,flexShrink:0})),KJ=gr.span(({theme:e})=>({width:"10px",height:"10px",border:`2px solid ${e.appBorderColor}`,borderTopColor:W,borderRadius:"50%",display:"inline-block",flexShrink:0,animation:"uicopilot-seg-spin 0.8s linear infinite","@keyframes uicopilot-seg-spin":{to:{transform:"rotate(360deg)"}}})),XJ=gr.span(({theme:e,width:t})=>({width:`${t}px`,height:"5px",borderRadius:"3px",backgroundColor:e.appBorderColor,overflow:"hidden",display:"flex",flexShrink:0})),JJ=gr.span(({pct:e,color:t})=>({width:`${e}%`,backgroundColor:t})),Hf=gr.span(({theme:e})=>({width:"1px",height:"20px",backgroundColor:e.appBorderColor,flexShrink:0})),QJ=gr.div(({theme:e})=>({position:"absolute",top:"30px",left:0,minWidth:"260px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:"0 8px 24px rgba(0,0,0,0.18)",padding:"4px",zIndex:10001})),Uf=gr.div(({theme:e})=>({padding:"8px 10px 4px",fontFamily:e.typography.fonts.base,fontSize:"10px",fontWeight:e.typography.weight.bold,letterSpacing:"0.1em",textTransform:"uppercase",color:e.color.mediumdark})),Wo=gr.div(({theme:e})=>({display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:"12px",padding:"3px 10px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.mediumdark,"& b":{color:e.color.defaultText,fontWeight:e.typography.weight.bold}})),Au=gr.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"7px 10px",border:"none",borderRadius:"6px",background:"transparent",textAlign:"left",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.defaultText,cursor:"pointer","&:hover":{backgroundColor:e.background.hoverable},"&:disabled":{opacity:.45,cursor:"not-allowed"}})),y5=gr.div(({theme:e})=>({padding:"6px 10px 8px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.mediumdark,borderTop:`1px solid ${e.appBorderColor}`,marginTop:"4px",lineHeight:1.5})),jf=gr.div(({theme:e})=>({borderTop:`1px solid ${e.appBorderColor}`,margin:"5px 0 4px"})),Vf=({label:e,value:t,sub:n,dot:r,busy:o,tone:i="idle",bar:a,minWidth:s,maxWidth:c,title:u,children:l})=>{let[d,f]=UJ(!1),p=HJ(null);return $J(()=>{if(!d)return;let g=C=>{p.current?.contains(C.target)||f(!1)},m=C=>{C.key==="Escape"&&f(!1)};return document.addEventListener("mousedown",g),document.addEventListener("keydown",m),()=>{document.removeEventListener("mousedown",g),document.removeEventListener("keydown",m)}},[d]),Vo.createElement(jJ,{ref:p},Vo.createElement(VJ,{tone:i,minWidth:s,maxWidth:c,title:u,onClick:()=>l&&f(g=>!g),"aria-haspopup":l?"menu":void 0,"aria-expanded":l?d:void 0},o?Vo.createElement(KJ,null):r?Vo.createElement(YJ,{tone:r}):null,e&&Vo.createElement(WJ,null,e),a&&Vo.createElement(XJ,{width:a.width??88},a.bands.map((g,m)=>Vo.createElement(JJ,{key:m,pct:g.pct,color:g.color,title:g.title}))),Vo.createElement(GJ,null,t),n&&Vo.createElement(qJ,null,n),l&&Vo.createElement("span",{"aria-hidden":!0},"\u25BE")),d&&l&&Vo.createElement(QJ,{role:"menu",onClick:()=>f(!1)},l))};var tQ=eQ.div({display:"flex",alignItems:"center",gap:"4px",minWidth:0,flexWrap:"wrap",rowGap:"4px"}),eR=({projectId:e,sessionToken:t,totalStories:n})=>{let{status:r,refresh:o}=h3(e,t,n),[i,a]=Fu(null),s=_f({projectId:e??""}),[c,u]=Fu(!1),[l,d]=Fu(!1),[f,p]=Fu(!1),[g,m]=Fu(()=>ka());ZJ(()=>{let S=setInterval(()=>m(ka()),2e3);return()=>clearInterval(S)},[]);let C=Z7(async()=>{if(!(!e||!t)){u(!0);try{await J(`${q()}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({projectId:e})})}catch{}finally{u(!1),o()}}},[e,t,o]),v=Z7(async()=>{if(!(!e||!t)){p(!0);try{await J(`${q()}/api/mappings/batch?projectId=${e}`,{method:"DELETE",headers:{Authorization:`Bearer ${t}`}})}catch{}finally{p(!1),d(!1),o()}}},[e,t,o]);if(!e||!t)return null;let{text:h,tone:M}=x3(r),L=r.crawling||c,z=g.pass+g.warn+g.fail,A=El(z,n)??0,D=El(g.pass,z),y=s.isRunning?s.progressCount:null,k=y&&y.total>0?Math.min(100,Math.round(y.done/y.total*100)):s.isRunning?0:null,T=s.isRunning?`${y?.phase==="capturing"?"capturing":y?.phase==="index"?"indexing":"matching"} ${y?`${y.done}/${y.total}`:""} \xB7 ${Math.floor(s.elapsedMs/6e4)}:${String(Math.floor(s.elapsedMs/1e3)%60).padStart(2,"0")}`:null,F=S=>z>0?S/z*100:0;return _e.createElement(tQ,null,_e.createElement(Hf,null),_e.createElement(Vf,{label:"Figma",value:L||r.errored||!r.connected?h:wb(r.lastSyncAt)??"synced",sub:!L&&r.setsIndexed!=null?`${r.setsIndexed} sets`:void 0,dot:r.errored?pe.red:r.connected?pe.green:W,busy:L,minWidth:170,tone:M==="warn"?"error":M,title:r.error??"Figma sync \u2014 age, contents and actions"},_e.createElement(Uf,null,"Sync"),_e.createElement(Wo,null,_e.createElement("span",null,"Last sync"),_e.createElement("b",null,wb(r.lastSyncAt)??"unknown")),r.setsIndexed!=null&&_e.createElement(Wo,null,_e.createElement("span",null,"Indexed"),_e.createElement("b",null,r.setsIndexed," sets",r.variantsIndexed!=null&&_e.createElement(_e.Fragment,null," \xB7 ",_e.createElement("span",{style:r.variantsIndexed===0?{color:pe.red}:void 0},r.variantsIndexed," variants")))),(r.addedCount!=null||r.removedCount!=null)&&_e.createElement(Wo,null,_e.createElement("span",null,"Since last"),_e.createElement("b",null,`+${r.addedCount??0} \xB7 \u2212${r.removedCount??0}`)),_e.createElement(jf,null),_e.createElement(Au,{onClick:C,disabled:L},"\u27F3 ",L?"Importing\u2026":"Reload from Figma"),r.errored&&r.error&&_e.createElement(y5,null,"\u26A0 ",r.error)),_e.createElement(Hf,null),_e.createElement(Vf,{label:"Coverage",value:k!=null?`${k}%`:`${A}%`,sub:T??(n>0?`${z}/${n}`:void 0),bar:{width:64,bands:[{pct:k??A,color:k!=null?pe.amber:W}]},minWidth:210,title:T?"Auto-map in progress":`${z} of ${n} stories checked against Figma \xB7 ${r.mapped} mapped`},_e.createElement(Uf,null,"Coverage"),_e.createElement(Wo,null,_e.createElement("span",null,"Checked"),_e.createElement("b",null,z,n>0?` / ${n}`:"")),_e.createElement(Wo,null,_e.createElement("span",null,"Mapped"),_e.createElement("b",null,r.mapped,n>0?` / ${n}`:"")),_e.createElement(Wo,null,_e.createElement("span",null,"Unmapped"),_e.createElement("b",null,Math.max(0,n-r.mapped))),_e.createElement(jf,null),_e.createElement(Au,{onClick:()=>a("auto")},"\u26A1 Auto-Map All"),_e.createElement(Au,{onClick:()=>a("browse")},"\u{1F517} Map stories to Figma\u2026"),r.mapped>0&&_e.createElement(_e.Fragment,null,_e.createElement(jf,null),_e.createElement(Au,{onClick:()=>d(!0),style:{color:pe.red}},"\u{1F5D1} Clear all ",r.mapped," mappings"))),_e.createElement(Hf,null),_e.createElement(Vf,{label:"Parity",value:D!=null?`${D}%`:"\u2014",sub:z>0?`${g.pass}/${z}`:"not run yet",bar:{width:96,bands:z>0?[{pct:F(g.pass),color:pe.green,title:`${g.pass} pass`},{pct:F(g.warn),color:pe.amber,title:`${g.warn} warn`},{pct:F(g.fail),color:pe.red,title:`${g.fail} fail`}]:[]},minWidth:215,maxWidth:400,title:"Share of checked stories that match Figma, and the pass / warn / fail split behind it"},_e.createElement(Uf,null,"Parity"),_e.createElement(Wo,null,_e.createElement("span",null,"Match Figma"),_e.createElement("b",null,D!=null?`${g.pass} of ${z} \xB7 ${D}%`:"\u2014")),_e.createElement(Wo,null,_e.createElement("span",null,"Verdicts"),_e.createElement("b",null,_e.createElement("span",{style:{color:pe.green}},g.pass," pass")," \xB7 ",_e.createElement("span",{style:{color:pe.amber}},g.warn," warn")," \xB7 ",_e.createElement("span",{style:{color:pe.red}},g.fail," fail"))),_e.createElement(Wo,null,_e.createElement("span",null,"Reviewed"),_e.createElement("b",null,g.reviewed," of ",g.mapped)),g.incomparable>0&&_e.createElement(Wo,null,_e.createElement("span",null,"No overlap"),_e.createElement("b",null,g.incomparable)),z===0&&_e.createElement(y5,null,"No review has run yet. Map stories to Figma, then Run in the review panel below to populate this.")),_e.createElement(Dr,{isOpen:l,title:"Clear all mappings?",message:`This removes all ${r.mapped} story-to-Figma mappings in this project. Auto-Map can recreate them, but any mapping you set by hand will be lost.`,confirmLabel:f?"Clearing\u2026":"Clear all",variant:"danger",onConfirm:v,onCancel:()=>d(!1)}),i&&_e.createElement($f,{isOpen:!0,autoRun:i==="auto",onClose:()=>{a(null),o()},projectId:e,autoLink:s,hideWhileRunning:i==="auto"}))};Me();nt();pn();var rQ=Mn.div({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",gap:"8px"}),oQ=Mn.div({display:"inline-flex",alignItems:"center",gap:"6px",minWidth:0,flex:"1 1 auto",userSelect:"none"}),iQ=Mn.span(({theme:e})=>({width:"20px",height:"20px",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"5px",background:`linear-gradient(135deg, ${C0} 0%, ${W} 100%)`,color:e.color.lightest,fontSize:"11px",fontWeight:900,letterSpacing:"-0.5px",boxShadow:"0 1px 2px rgba(0,0,0,0.15)"})),aQ=Mn.span(({theme:e})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,letterSpacing:"-0.2px",color:e.color.defaultText})),sQ=Mn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:e.color.mediumdark,opacity:.8,marginLeft:"2px"})),lQ=Mn.div({display:"flex",alignItems:"center",gap:"6px",flexShrink:0}),cQ=Mn.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"999px",fontSize:"10px",fontWeight:e.typography.weight.bold,lineHeight:1.6,color:e.color.mediumdark,backgroundColor:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,userSelect:"none",cursor:"default","& svg":{width:"11px",height:"11px"}})),uQ=Mn.div({position:"relative"}),pQ=Mn.button(({theme:e})=>({width:"22px",height:"22px",padding:0,background:e.background.app,border:`1px solid ${e.appBorderColor}`,borderRadius:"50%",color:e.color.defaultText,cursor:"pointer",fontSize:"10px",fontWeight:600,display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s","&:hover":{backgroundColor:e.background.hoverable}})),dQ=Mn.div(({theme:e})=>({position:"absolute",top:"calc(100% + 6px)",right:0,minWidth:"220px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:"0 8px 24px rgba(0,0,0,0.14)",zIndex:1e3,overflow:"hidden",padding:"4px"})),fQ=Mn.div(({theme:e})=>({padding:"8px 10px 10px",borderBottom:`1px solid ${e.appBorderColor}`,marginBottom:"4px"})),gQ=Mn.div(({theme:e})=>({fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),mQ=Mn.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:"2px"})),w5=Mn.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"7px 10px",border:"none",borderRadius:e.appBorderRadius,background:"transparent",color:e.color.defaultText,fontSize:e.typography.size.s2,textAlign:"left",cursor:"pointer",transition:"background 0.12s","&:hover":{backgroundColor:e.background.hoverable}})),hQ=Mn.div(({theme:e})=>({height:"1px",margin:"4px 0",backgroundColor:e.appBorderColor})),tR=Mn.button(({theme:e,isLow:t})=>({display:"flex",alignItems:"center",gap:"6px",padding:"4px 8px",background:"transparent",border:"none",borderRadius:e.appBorderRadius,color:t?e.color.warning:pe.green,cursor:"pointer",fontFamily:e.typography.fonts.mono,fontSize:"11px",fontWeight:e.typography.weight.bold,transition:"background 0.15s","&:hover":{backgroundColor:e.background.hoverable}})),nR=Mn.span(({theme:e,isLow:t})=>({width:"6px",height:"6px",borderRadius:"50%",flexShrink:0,backgroundColor:t?e.color.warning:pe.green})),xQ=Mn.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)"}}}),yQ=Mn.button(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",width:"28px",height:"28px",border:"none",borderRadius:e.appBorderRadius,backgroundColor:"transparent",color:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","& svg":{width:"14px",height:"14px"},"&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText}})),bQ=Mn.button({position:"fixed",bottom:"20px",right:"20px",width:"48px",height:"48px",borderRadius:"50%",backgroundColor:W,color:"white",border:"none",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"22px",cursor:"pointer",boxShadow:`0 4px 14px ${W}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 ${W}88, 0 3px 6px rgba(0,0,0,0.15)`},"&:active":{transform:"scale(0.96)"}}),wQ=30*1e3,v5=({onOpenSettings:e})=>{let[t,n]=Mu(!1),[r,o]=Mu(!1),[i,a]=Mu(!1),[s,c]=Mu(!1),u=nQ(null),{selectedProjectId:l}=We(),[d,f]=Mu(()=>Cl());Wf(()=>{let w=setInterval(()=>f(Cl()),3e3);return()=>clearInterval(w)},[]);let{usageData:p,usageLastFetched:g,setUsageData:m,sessionToken:C,resetAuth:v}=we(),{userRole:h,roleOverride:M,featureFlags:L}=ve(),z=M??h,A=!!C&&C.startsWith("uic_anon_"),D=z==="admin"||!!L.enableAiReview;Wf(()=>{(async()=>{if(!(!C||g&&Date.now()-g<wQ&&p)){c(!0);try{let _=q(),P=await J(`${_}/api/addon/account`,{headers:{Authorization:`Bearer ${C}`}});if(P.ok){let N=await P.json();m(N)}}catch(_){console.error("Failed to fetch balance:",_)}finally{c(!1)}}})()},[C,g,p,m]),Wf(()=>{let w=()=>{document.visibilityState==="visible"&&t&&n(!1)},R=()=>{t&&n(!1)};return document.addEventListener("visibilitychange",w),window.addEventListener("focus",R),()=>{document.removeEventListener("visibilitychange",w),window.removeEventListener("focus",R)}},[t]),Wf(()=>{if(!i)return;let w=_=>{u.current&&!u.current.contains(_.target)&&a(!1)},R=_=>{_.key==="Escape"&&a(!1)};return document.addEventListener("mousedown",w),document.addEventListener("keydown",R),()=>{document.removeEventListener("mousedown",w),document.removeEventListener("keydown",R)}},[i]);let y=b5(()=>{n(!0)},[]),k=b5(()=>{n(!1)},[]),T=b5(async()=>{if(a(!1),C)try{await fetch(`${q()}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${C}`}})}catch{}v()},[C,v]),F=p?.creditBalance??0,S=F<2&&!s,x=p?.email,E=(()=>{if(!x)return"?";let w=x.split("@")[0],R=w.split(/[^a-zA-Z0-9]+/).filter(Boolean);return R.length>=2?(R[0][0]+R[1][0]).toUpperCase():w.slice(0,2).toUpperCase()})();return St.createElement(rQ,null,St.createElement(oQ,null,St.createElement(iQ,{"aria-hidden":!0},"\u21CB"),St.createElement(aQ,null,Kt.NAME),St.createElement(sQ,null,"v","0.20.0"),St.createElement(eR,{projectId:l??null,sessionToken:C??null,totalStories:d})),St.createElement(lQ,null,A&&St.createElement(cQ,{title:"Guest session \u2014 sign up to save your work"},St.createElement("span",{"aria-hidden":!0},St.createElement(Rc,null)),"Guest"),C&&h==="admin"&&z==="admin"&&St.createElement(u3,null),C&&L.showCosts&&D&&St.createElement(tR,{onClick:y,isLow:S,title:s?"Loading...":p?S?"Low balance - click to top up":"Credit balance - click for details":"Click to load balance"},s?St.createElement(xQ,null):p?St.createElement(St.Fragment,null,St.createElement(nR,{isLow:S}),"$",F.toFixed(2)):"..."),C&&!L.showCosts&&p&&D&&St.createElement(tR,{onClick:y,isLow:Math.floor(F)<=3,title:`${Math.floor(F)} review credits \u2014 click for details`},St.createElement(nR,{isLow:Math.floor(F)<=3}),Math.floor(F)),e&&C&&St.createElement(yQ,{onClick:e,title:"Settings","aria-label":"Settings"},St.createElement(P0,null)),!A&&St.createElement(uQ,{ref:u},St.createElement(pQ,{title:"Account","aria-label":"Account",onClick:()=>a(w=>!w)},E),i&&St.createElement(dQ,{role:"menu"},St.createElement(fQ,null,St.createElement(gQ,null,x||"Account"),p?.plan&&St.createElement(mQ,null,p.plan," plan")),St.createElement(w5,{role:"menuitem",onClick:()=>{a(!1),y()}},St.createElement("span",{"aria-hidden":!0},St.createElement(Rc,null))," ","Account & usage"),e&&St.createElement(w5,{role:"menuitem",onClick:()=>{a(!1),e()}},St.createElement("span",{"aria-hidden":!0},St.createElement(P0,null))," ","Settings"),St.createElement(hQ,null),St.createElement(w5,{role:"menuitem",onClick:T},"Sign out")),t&&St.createElement(l3,{onClose:k}))),C&&St.createElement(bQ,{onClick:()=>o(!0),title:"Send feedback","aria-label":"Send feedback"},"\u{1F4AC}"),St.createElement(f3,{isOpen:r,onClose:()=>o(!1)}))};import Ue,{useEffect as hne,useRef as Ag,useState as xne}from"react";import mr from"react";Ce();Pe();Me();nt();pn();import{useState as iR,useCallback as Go,useRef as aR,useEffect as S5}from"react";Me();nt();var vQ=q(),Nl=null;function rR(e){Nl=e}async function oR(e){if(!Nl||!e||e===Nl||e.startsWith("uic_anon_"))return null;let t=Nl;Nl=null;try{let n=await J(`${vQ}/api/anonymous/claim`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({anonymousToken:t})});if(!n.ok)throw new Error(`claim failed: ${n.status}`);let r=await n.json().catch(()=>({}));return typeof r?.claimedProjects=="number"?r.claimedProjects:0}catch(n){throw Nl=t,n}}var xo=q();b.debug("[useAuth] Module loaded, APP_URL:",xo);var Gf=null,qf=null,Pu=null;function _u(){Gf&&(clearInterval(Gf),Gf=null),qf&&(clearTimeout(qf),qf=null)}var qo=()=>{let e=aR(null),t=aR(null),n=Go(()=>{t.current&&(clearTimeout(t.current),t.current=null)},[]),{sessionToken:r,apiKey:o,authMethod:i,deviceCode:a,userCode:s,verificationUri:c,isConnected:u,authError:l,setSessionToken:d,setApiKey:f,setAuthMethod:p,setDeviceCode:g,setUserCode:m,setVerificationUri:C,setPollingInterval:v,setAuthError:h,resetAuth:M}=we(),[L,z]=iR(!1),[A,D]=iR(!1),y=Go(()=>{_u(),Pu=null},[]),k=Go(P=>{Pu=P,_u();let N=async()=>{let I=Pu;if(!I){_u();return}try{let j=await(await fetch(`${xo}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:I})})).json();j.status==="authorized"&&j.session_token?(b.debug("[useAuth] \u2705 OAuth poll successful! Got token."),_u(),n(),Pu=null,localStorage.setItem("uicopilot_session_token",j.session_token),d(j.session_token),z(!1)):j.status==="expired"&&(b.debug("[useAuth] OAuth poll_code expired"),_u(),n(),Pu=null,z(!1))}catch(O){b.error("[useAuth] OAuth poll error:",O)}};Gf=setInterval(N,2e3),qf=setTimeout(N,1e3)},[d,n]);S5(()=>{function P(N){if(!N.origin.startsWith(xo))return;let I=N.data;if(!I||typeof I!="object")return;let O=I;if(O.type==="UICOPILOT_AUTH_ERROR"){b.debug("[useAuth] Popup reported auth error:",O.step,O.detail),y(),z(!1);let j=typeof O.step=="string"?O.step:"auth",B=typeof O.detail=="string"?O.detail:"Unknown error";h(`${Kt.NAME} auth failed (${j}): ${B}`)}else O.type==="UICOPILOT_AUTH_POLL_CODE"&&typeof O.pollCode=="string"&&O.pollCode&&(b.debug("[useAuth] Popup handed us a fresh poll_code, switching"),h(null),k(O.pollCode))}return window.addEventListener("message",P),()=>window.removeEventListener("message",P)},[k,y,h]);let T=Go(async()=>{let I=Math.max(0,Math.round((window.screen.width-480)/2)),O=Math.max(0,Math.round((window.screen.height-640)/2)),j=`width=480,height=640,left=${I},top=${O},resizable=yes,scrollbars=yes`,B=null;try{B=window.open("about:blank","uiparity-signin",j)}catch{}try{b.debug("[useAuth] Starting OAuth flow, requesting poll_code...");let se;try{se=await J(`${xo}/api/addon/auth/oauth-poll`,{method:"POST"})}catch(Y){let xe=Y instanceof Error&&Y.message.includes("timed out")?`Cannot reach ${Kt.NAME} server at ${xo}. Is the dashboard running?`:`Connection failed: ${xo} is not responding.`;h(xe),b.error("[useAuth]",xe),B?.close();return}if(!se.ok){let Y=`Cannot reach ${Kt.NAME} server. Is the dashboard running?`;h(Y),b.error("[useAuth]",Y),B?.close();return}let{poll_code:H}=await se.json();b.debug("[useAuth] Got poll_code:",H.substring(0,15)+"...");let V=localStorage.getItem("uicopilot_force_sign_in")==="true";V&&localStorage.removeItem("uicopilot_force_sign_in");let Z=`${xo}/addon/auth?poll_code=${H}${V?"&force_sign_in=true":""}`;z(!0),B&&!B.closed?B.location.href=Z:window.open(Z,"uiparity-signin",j),n(),t.current=setTimeout(()=>{z(!1),y()},9e4),b.debug("[useAuth] Starting OAuth poll for token..."),k(H)}catch(se){b.error("[useAuth] OAuth flow error:",se),h(`Connection failed. Is the dashboard running at ${xo}?`),z(!1),B?.close()}},[h,k,n,y]),F=Go(async()=>{try{let P=await fetch(`${xo}/api/addon/auth/device`,{method:"POST"});if(!P.ok)throw new Error("Failed to start device code flow");let N=await P.json();g(N.device_code),m(N.user_code),C(N.verification_uri),window.open(N.verification_uri,"_blank"),S(N.device_code,N.interval*1e3)}catch(P){throw b.error("[useAuth] Device code flow error:",P),P}},[g,m,C]),S=Go((P,N)=>{b.debug("[useAuth] Starting polling. Device code:",P,"Interval:",N),e.current&&clearInterval(e.current);let I=async()=>{try{let j=await(await fetch(`${xo}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:P})})).json();j.status==="authorized"?(b.debug("[useAuth] Device code authorization successful!"),e.current&&(clearInterval(e.current),e.current=null),g(null),m(null),C(null),localStorage.setItem("uicopilot_session_token",j.session_token),d(j.session_token),z(!1)):(j.status==="expired"||j.status==="denied")&&(b.debug("[useAuth] Device code expired or denied"),e.current&&(clearInterval(e.current),e.current=null),g(null),m(null),C(null))}catch(O){b.error("[useAuth] Polling error:",O)}};e.current=setInterval(I,N),v(N)},[g,m,C,d,v]),x=Go(()=>{e.current&&(clearInterval(e.current),e.current=null),g(null),m(null),C(null),v(null)},[g,m,C,v]),E=Go(P=>{f(P),d(P),localStorage.setItem("uicopilot_api_key",P)},[f,d]),w=Go(async()=>{if(r)try{await J(`${xo}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${r}`}})}catch{}M(),z(!1),e.current&&(clearInterval(e.current),e.current=null),y()},[r,M,y]),R=Go(async()=>{D(!0),h(null);try{let P=await J(`${xo}/api/anonymous/session`,{method:"POST"});if(!P.ok)throw new Error(`anonymous session ${P.status}`);let N=await P.json();if(!N?.token)throw new Error("anonymous session: no token");d(N.token)}catch{h("Couldn't start a guest session. Please try again.")}finally{D(!1)}},[d,h]),_=Go(()=>{r&&r.startsWith("uic_anon_")&&(rR(r),typeof localStorage<"u"&&localStorage.removeItem("uicopilot_force_sign_in")),T()},[r,T]);return S5(()=>{!r||r.startsWith("uic_anon_")||oR(r).then(P=>{P!==null&&b.info(`[useAuth] Guest work claimed (${P} project${P===1?"":"s"}).`)}).catch(P=>{b.error("[useAuth] Guest claim failed:",P)})},[r]),S5(()=>()=>{e.current&&clearInterval(e.current),n()},[n]),{sessionToken:r,apiKey:o,authMethod:i,deviceCode:a,userCode:s,verificationUri:c,isConnected:u,authError:l,oauthPending:L,anonPending:A,isAnonymous:!!r&&r.startsWith("uic_anon_"),setAuthMethod:p,startOAuth:T,startAnonymous:R,signUpToSave:_,startDeviceCode:F,cancelDeviceCode:x,saveApiKey:E,logout:w}};Ce();Pe();Me();nt();import{useCallback as Yf}from"react";var Lu=q(),wr=()=>{let{projects:e,selectedProjectId:t,loadingProjects:n,setProjects:r,setSelectedProjectId:o,setLoadingProjects:i,getSelectedProject:a}=We(),{sessionToken:s}=we(),c=Yf(async()=>{if(!s){b.debug("[useProjects] No session token, skipping fetch");return}try{i(!0),b.debug("[useProjects] Fetching from:",`${Lu}/api/projects`);let f=await J(`${Lu}/api/projects`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`}});if(f.ok){let p=await f.json();b.debug("[useProjects] Projects:",p.projects),r(p.projects||[])}else b.error("[useProjects] Failed to fetch projects:",f.status,f.statusText)}catch(f){b.error("[useProjects] Error fetching projects:",f)}finally{i(!1)}},[s,r,i]),u=Yf(async f=>{if(!s)throw new Error("Not authenticated");let p=await J(`${Lu}/api/projects`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(f)});if(!p.ok)throw new Error("Failed to create project");let g=await p.json();return await c(),g.project},[s,c]),l=Yf(async(f,p)=>{if(!s)throw new Error("Not authenticated");let g={};if(p.name!==void 0&&(g.name=p.name),p.description!==void 0&&(g.description=p.description),p.figmaFileUrl!==void 0&&(g.figmaFileId=p.figmaFileUrl===""?null:p.figmaFileUrl),!(await J(`${Lu}/api/projects/${f}`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(g)})).ok)throw new Error("Failed to update project");await c()},[s,c]),d=Yf(async f=>{if(!s)throw new Error("Not authenticated");if(!(await J(`${Lu}/api/projects/${f}`,{method:"DELETE",headers:{Authorization:`Bearer ${s}`}})).ok)throw new Error("Failed to delete project");await c(),t===f&&o(null)},[s,t,c,o]);return{projects:e,selectedProjectId:t,selectedProject:a(),loadingProjects:n,setSelectedProjectId:o,fetchProjects:c,createProject:u,updateProject:l,deleteProject:d}};Ce();var Bu=()=>{let{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:a,setFigmaFileUrl:s,setCurrentMapping:c,setMappingSource:u,setLoadingMapping:l,setShowFigmaQuality:d}=yt();return{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:a,setFigmaFileUrl:s,setCurrentMapping:c,setMappingSource:u,setLoadingMapping:l,setShowFigmaQuality:d,openComponentBrowser:()=>a(!0),closeComponentBrowser:()=>a(!1)}};Ce();Ab();Bl();import{useCallback as $u,useRef as ng}from"react";Pe();function Kf(){return new Promise(e=>{let t=document.getElementById("storybook-preview-iframe");if(!t||!t.contentWindow){b.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();b.debug("[iframeReload] Triggering cache-busted reload:",o);let i=setTimeout(()=>{b.warn("[iframeReload] Iframe reload timed out after 5s"),t.removeEventListener("load",a),e()},5e3),a=()=>{clearTimeout(i),t.removeEventListener("load",a),b.debug("[iframeReload] Iframe loaded, waiting for HMR and styles to settle..."),setTimeout(()=>{b.debug("[iframeReload] Iframe reloaded and styles should be fresh"),e()},2e3)};t.addEventListener("load",a),t.contentWindow.location.href=o})}function Xf(e){return e&&e!=="admin"?{"X-UIC-Role-Preview":e}:{}}var Jf=BigInt(4294967295),sR=BigInt(32);function SQ(e,t=!1){return t?{h:Number(e&Jf),l:Number(e>>sR&Jf)}:{h:Number(e>>sR&Jf)|0,l:Number(e&Jf)|0}}function lR(e,t=!1){let n=e.length,r=new Uint32Array(n),o=new Uint32Array(n);for(let i=0;i<n;i++){let{h:a,l:s}=SQ(e[i],t);[r[i],o[i]]=[a,s]}return[r,o]}var cR=(e,t,n)=>e<<n|t>>>32-n,uR=(e,t,n)=>t<<n|e>>>32-n,pR=(e,t,n)=>t<<n-32|e>>>64-n,dR=(e,t,n)=>e<<n-32|t>>>64-n;function kQ(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function k5(e,t=""){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw new Error(`${n}expected integer >= 0, got ${e}`)}}function Qf(e,t,n=""){let r=kQ(e),o=e?.length,i=t!==void 0;if(!r||i&&o!==t){let a=n&&`"${n}" `,s=i?` of length ${t}`:"",c=r?`length=${o}`:`type=${typeof e}`;throw new Error(a+"expected Uint8Array"+s+", got "+c)}return e}function C5(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 fR(e,t){Qf(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 gR(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function E5(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var CQ=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function EQ(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function TQ(e){for(let t=0;t<e.length;t++)e[t]=EQ(e[t]);return e}var T5=CQ?e=>e:TQ;function mR(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 hR=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var IQ=BigInt(0),zu=BigInt(1),RQ=BigInt(2),AQ=BigInt(7),FQ=BigInt(256),MQ=BigInt(113),bR=[],wR=[],vR=[];for(let e=0,t=zu,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],bR.push(2*(5*r+n)),wR.push((e+1)*(e+2)/2%64);let o=IQ;for(let i=0;i<7;i++)t=(t<<zu^(t>>AQ)*MQ)%FQ,t&RQ&&(o^=zu<<(zu<<BigInt(i))-zu);vR.push(o)}var SR=lR(vR,!0),PQ=SR[0],_Q=SR[1],xR=(e,t,n)=>n>32?pR(e,t,n):cR(e,t,n),yR=(e,t,n)=>n>32?dR(e,t,n):uR(e,t,n);function LQ(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let a=0;a<10;a++)n[a]=e[a]^e[a+10]^e[a+20]^e[a+30]^e[a+40];for(let a=0;a<10;a+=2){let s=(a+8)%10,c=(a+2)%10,u=n[c],l=n[c+1],d=xR(u,l,1)^n[s],f=yR(u,l,1)^n[s+1];for(let p=0;p<50;p+=10)e[a+p]^=d,e[a+p+1]^=f}let o=e[2],i=e[3];for(let a=0;a<24;a++){let s=wR[a],c=xR(o,i,s),u=yR(o,i,s),l=bR[a];o=e[l],i=e[l+1],e[l]=c,e[l+1]=u}for(let a=0;a<50;a+=10){for(let s=0;s<10;s++)n[s]=e[a+s];for(let s=0;s<10;s++)e[a+s]^=~n[(s+2)%10]&n[(s+4)%10]}e[0]^=PQ[r],e[1]^=_Q[r]}E5(n)}var I5=class e{constructor(t,n,r,o=!1,i=24){so(this,"state");so(this,"pos",0);so(this,"posOut",0);so(this,"finished",!1);so(this,"state32");so(this,"destroyed",!1);so(this,"blockLen");so(this,"suffix");so(this,"outputLen");so(this,"enableXOF",!1);so(this,"rounds");if(this.blockLen=t,this.suffix=n,this.outputLen=r,this.enableXOF=o,this.rounds=i,k5(r,"outputLen"),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=gR(this.state)}clone(){return this._cloneInto()}keccak(){T5(this.state32),LQ(this.state32,this.rounds),T5(this.state32),this.posOut=0,this.pos=0}update(t){C5(this),Qf(t);let{blockLen:n,state:r}=this,o=t.length;for(let i=0;i<o;){let a=Math.min(n-this.pos,o-i);for(let s=0;s<a;s++)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){C5(this,!1),Qf(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 a=Math.min(r-this.posOut,i-o);t.set(n.subarray(this.posOut,this.posOut+a),o),this.posOut+=a,o+=a}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return k5(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(fR(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,E5(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:o,rounds:i,enableXOF:a}=this;return t||(t=new e(n,r,o,a,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=a,t.destroyed=this.destroyed,t}},BQ=(e,t,n,r={})=>mR(()=>new I5(t,e,n),r);var kR=BQ(6,72,64,hR(10));var zQ=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,R5=Math.ceil,bo=Math.floor,$r="[BigNumber Error] ",CR=$r+"Number primitive has more than 15 significant digits: ",Yo=1e14,lt=14,A5=9007199254740991,F5=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ma=1e7,Jn=1e9;function ER(e){var t,n,r,o=h.prototype={constructor:h,toString:null,valueOf:null},i=new h(1),a=20,s=4,c=-7,u=21,l=-1e7,d=1e7,f=!1,p=1,g=0,m={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},C="0123456789abcdefghijklmnopqrstuvwxyz",v=!0;function h(y,k){var T,F,S,x,E,w,R,_,P=this;if(!(P instanceof h))return new h(y,k);if(k==null){if(y&&y._isBigNumber===!0){P.s=y.s,!y.c||y.e>d?P.c=P.e=null:y.e<l?P.c=[P.e=0]:(P.e=y.e,P.c=y.c.slice());return}if((w=typeof y=="number")&&y*0==0){if(P.s=1/y<0?(y=-y,-1):1,y===~~y){for(x=0,E=y;E>=10;E/=10,x++);x>d?P.c=P.e=null:(P.e=x,P.c=[y]);return}_=String(y)}else{if(!zQ.test(_=String(y)))return r(P,_,w);P.s=_.charCodeAt(0)==45?(_=_.slice(1),-1):1}(x=_.indexOf("."))>-1&&(_=_.replace(".","")),(E=_.search(/e/i))>0?(x<0&&(x=E),x+=+_.slice(E+1),_=_.substring(0,E)):x<0&&(x=_.length)}else{if(hn(k,2,C.length,"Base"),k==10&&v)return P=new h(y),A(P,a+P.e+1,s);if(_=String(y),w=typeof y=="number"){if(y*0!=0)return r(P,_,w,k);if(P.s=1/y<0?(_=_.slice(1),-1):1,h.DEBUG&&_.replace(/^0\.0*|\./,"").length>15)throw Error(CR+y)}else P.s=_.charCodeAt(0)===45?(_=_.slice(1),-1):1;for(T=C.slice(0,k),x=E=0,R=_.length;E<R;E++)if(T.indexOf(F=_.charAt(E))<0){if(F=="."){if(E>x){x=R;continue}}else if(!S&&(_==_.toUpperCase()&&(_=_.toLowerCase())||_==_.toLowerCase()&&(_=_.toUpperCase()))){S=!0,E=-1,x=0;continue}return r(P,String(y),w,k)}w=!1,_=n(_,k,10,P.s),(x=_.indexOf("."))>-1?_=_.replace(".",""):x=_.length}for(E=0;_.charCodeAt(E)===48;E++);for(R=_.length;_.charCodeAt(--R)===48;);if(_=_.slice(E,++R)){if(R-=E,w&&h.DEBUG&&R>15&&(y>A5||y!==bo(y)))throw Error(CR+P.s*y);if((x=x-E-1)>d)P.c=P.e=null;else if(x<l)P.c=[P.e=0];else{if(P.e=x,P.c=[],E=(x+1)%lt,x<0&&(E+=lt),E<R){for(E&&P.c.push(+_.slice(0,E)),R-=lt;E<R;)P.c.push(+_.slice(E,E+=lt));E=lt-(_=_.slice(E)).length}else E-=R;for(;E--;_+="0");P.c.push(+_)}}else P.c=[P.e=0]}h.clone=ER,h.ROUND_UP=0,h.ROUND_DOWN=1,h.ROUND_CEIL=2,h.ROUND_FLOOR=3,h.ROUND_HALF_UP=4,h.ROUND_HALF_DOWN=5,h.ROUND_HALF_EVEN=6,h.ROUND_HALF_CEIL=7,h.ROUND_HALF_FLOOR=8,h.EUCLID=9,h.config=h.set=function(y){var k,T;if(y!=null)if(typeof y=="object"){if(y.hasOwnProperty(k="DECIMAL_PLACES")&&(T=y[k],hn(T,0,Jn,k),a=T),y.hasOwnProperty(k="ROUNDING_MODE")&&(T=y[k],hn(T,0,8,k),s=T),y.hasOwnProperty(k="EXPONENTIAL_AT")&&(T=y[k],T&&T.pop?(hn(T[0],-Jn,0,k),hn(T[1],0,Jn,k),c=T[0],u=T[1]):(hn(T,-Jn,Jn,k),c=-(u=T<0?-T:T))),y.hasOwnProperty(k="RANGE"))if(T=y[k],T&&T.pop)hn(T[0],-Jn,-1,k),hn(T[1],1,Jn,k),l=T[0],d=T[1];else if(hn(T,-Jn,Jn,k),T)l=-(d=T<0?-T:T);else throw Error($r+k+" cannot be zero: "+T);if(y.hasOwnProperty(k="CRYPTO"))if(T=y[k],T===!!T)if(T)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))f=T;else throw f=!T,Error($r+"crypto unavailable");else f=T;else throw Error($r+k+" not true or false: "+T);if(y.hasOwnProperty(k="MODULO_MODE")&&(T=y[k],hn(T,0,9,k),p=T),y.hasOwnProperty(k="POW_PRECISION")&&(T=y[k],hn(T,0,Jn,k),g=T),y.hasOwnProperty(k="FORMAT"))if(T=y[k],typeof T=="object")m=T;else throw Error($r+k+" not an object: "+T);if(y.hasOwnProperty(k="ALPHABET"))if(T=y[k],typeof T=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(T))v=T.slice(0,10)=="0123456789",C=T;else throw Error($r+k+" invalid: "+T)}else throw Error($r+"Object expected: "+y);return{DECIMAL_PLACES:a,ROUNDING_MODE:s,EXPONENTIAL_AT:[c,u],RANGE:[l,d],CRYPTO:f,MODULO_MODE:p,POW_PRECISION:g,FORMAT:m,ALPHABET:C}},h.isBigNumber=function(y){if(!y||y._isBigNumber!==!0)return!1;if(!h.DEBUG)return!0;var k,T,F=y.c,S=y.e,x=y.s;e:if({}.toString.call(F)=="[object Array]"){if((x===1||x===-1)&&S>=-Jn&&S<=Jn&&S===bo(S)){if(F[0]===0){if(S===0&&F.length===1)return!0;break e}if(k=(S+1)%lt,k<1&&(k+=lt),String(F[0]).length==k){for(k=0;k<F.length;k++)if(T=F[k],T<0||T>=Yo||T!==bo(T))break e;if(T!==0)return!0}}}else if(F===null&&S===null&&(x===null||x===1||x===-1))return!0;throw Error($r+"Invalid BigNumber: "+y)},h.maximum=h.max=function(){return L(arguments,-1)},h.minimum=h.min=function(){return L(arguments,1)},h.random=(function(){var y=9007199254740992,k=Math.random()*y&2097151?function(){return bo(Math.random()*y)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(T){var F,S,x,E,w,R=0,_=[],P=new h(i);if(T==null?T=a:hn(T,0,Jn),E=R5(T/lt),f)if(crypto.getRandomValues){for(F=crypto.getRandomValues(new Uint32Array(E*=2));R<E;)w=F[R]*131072+(F[R+1]>>>11),w>=9e15?(S=crypto.getRandomValues(new Uint32Array(2)),F[R]=S[0],F[R+1]=S[1]):(_.push(w%1e14),R+=2);R=E/2}else if(crypto.randomBytes){for(F=crypto.randomBytes(E*=7);R<E;)w=(F[R]&31)*281474976710656+F[R+1]*1099511627776+F[R+2]*4294967296+F[R+3]*16777216+(F[R+4]<<16)+(F[R+5]<<8)+F[R+6],w>=9e15?crypto.randomBytes(7).copy(F,R):(_.push(w%1e14),R+=7);R=E/7}else throw f=!1,Error($r+"crypto unavailable");if(!f)for(;R<E;)w=k(),w<9e15&&(_[R++]=w%1e14);for(E=_[--R],T%=lt,E&&T&&(w=F5[lt-T],_[R]=bo(E/w)*w);_[R]===0;_.pop(),R--);if(R<0)_=[x=0];else{for(x=-1;_[0]===0;_.splice(0,1),x-=lt);for(R=1,w=_[0];w>=10;w/=10,R++);R<lt&&(x-=lt-R)}return P.e=x,P.c=_,P}})(),h.sum=function(){for(var y=1,k=arguments,T=new h(k[0]);y<k.length;)T=T.plus(k[y++]);return T},n=(function(){var y="0123456789";function k(T,F,S,x){for(var E,w=[0],R,_=0,P=T.length;_<P;){for(R=w.length;R--;w[R]*=F);for(w[0]+=x.indexOf(T.charAt(_++)),E=0;E<w.length;E++)w[E]>S-1&&(w[E+1]==null&&(w[E+1]=0),w[E+1]+=w[E]/S|0,w[E]%=S)}return w.reverse()}return function(T,F,S,x,E){var w,R,_,P,N,I,O,j,B=T.indexOf("."),se=a,H=s;for(B>=0&&(P=g,g=0,T=T.replace(".",""),j=new h(F),I=j.pow(T.length-B),g=P,j.c=k(na(yo(I.c),I.e,"0"),10,S,y),j.e=j.c.length),O=k(T,F,S,E?(w=C,y):(w=y,C)),_=P=O.length;O[--P]==0;O.pop());if(!O[0])return w.charAt(0);if(B<0?--_:(I.c=O,I.e=_,I.s=x,I=t(I,j,se,H,S),O=I.c,N=I.r,_=I.e),R=_+se+1,B=O[R],P=S/2,N=N||R<0||O[R+1]!=null,N=H<4?(B!=null||N)&&(H==0||H==(I.s<0?3:2)):B>P||B==P&&(H==4||N||H==6&&O[R-1]&1||H==(I.s<0?8:7)),R<1||!O[0])T=N?na(w.charAt(1),-se,w.charAt(0)):w.charAt(0);else{if(O.length=R,N)for(--S;++O[--R]>S;)O[R]=0,R||(++_,O=[1].concat(O));for(P=O.length;!O[--P];);for(B=0,T="";B<=P;T+=w.charAt(O[B++]));T=na(T,_,w.charAt(0))}return T}})(),t=(function(){function y(F,S,x){var E,w,R,_,P=0,N=F.length,I=S%Ma,O=S/Ma|0;for(F=F.slice();N--;)R=F[N]%Ma,_=F[N]/Ma|0,E=O*R+_*I,w=I*R+E%Ma*Ma+P,P=(w/x|0)+(E/Ma|0)+O*_,F[N]=w%x;return P&&(F=[P].concat(F)),F}function k(F,S,x,E){var w,R;if(x!=E)R=x>E?1:-1;else for(w=R=0;w<x;w++)if(F[w]!=S[w]){R=F[w]>S[w]?1:-1;break}return R}function T(F,S,x,E){for(var w=0;x--;)F[x]-=w,w=F[x]<S[x]?1:0,F[x]=w*E+F[x]-S[x];for(;!F[0]&&F.length>1;F.splice(0,1));}return function(F,S,x,E,w){var R,_,P,N,I,O,j,B,se,H,V,Z,Y,re,xe,me,Xe,be=F.s==S.s?1:-1,fe=F.c,Re=S.c;if(!fe||!fe[0]||!Re||!Re[0])return new h(!F.s||!S.s||(fe?Re&&fe[0]==Re[0]:!Re)?NaN:fe&&fe[0]==0||!Re?be*0:be/0);for(B=new h(be),se=B.c=[],_=F.e-S.e,be=x+_+1,w||(w=Yo,_=wo(F.e/lt)-wo(S.e/lt),be=be/lt|0),P=0;Re[P]==(fe[P]||0);P++);if(Re[P]>(fe[P]||0)&&_--,be<0)se.push(1),N=!0;else{for(re=fe.length,me=Re.length,P=0,be+=2,I=bo(w/(Re[0]+1)),I>1&&(Re=y(Re,I,w),fe=y(fe,I,w),me=Re.length,re=fe.length),Y=me,H=fe.slice(0,me),V=H.length;V<me;H[V++]=0);Xe=Re.slice(),Xe=[0].concat(Xe),xe=Re[0],Re[1]>=w/2&&xe++;do{if(I=0,R=k(Re,H,me,V),R<0){if(Z=H[0],me!=V&&(Z=Z*w+(H[1]||0)),I=bo(Z/xe),I>1)for(I>=w&&(I=w-1),O=y(Re,I,w),j=O.length,V=H.length;k(O,H,j,V)==1;)I--,T(O,me<j?Xe:Re,j,w),j=O.length,R=1;else I==0&&(R=I=1),O=Re.slice(),j=O.length;if(j<V&&(O=[0].concat(O)),T(H,O,V,w),V=H.length,R==-1)for(;k(Re,H,me,V)<1;)I++,T(H,me<V?Xe:Re,V,w),V=H.length}else R===0&&(I++,H=[0]);se[P++]=I,H[0]?H[V++]=fe[Y]||0:(H=[fe[Y]],V=1)}while((Y++<re||H[0]!=null)&&be--);N=H[0]!=null,se[0]||se.splice(0,1)}if(w==Yo){for(P=1,be=se[0];be>=10;be/=10,P++);A(B,x+(B.e=P+_*lt-1)+1,E,N)}else B.e=_,B.r=+N;return B}})();function M(y,k,T,F){var S,x,E,w,R;if(T==null?T=s:hn(T,0,8),!y.c)return y.toString();if(S=y.c[0],E=y.e,k==null)R=yo(y.c),R=F==1||F==2&&(E<=c||E>=u)?eg(R,E):na(R,E,"0");else if(y=A(new h(y),k,T),x=y.e,R=yo(y.c),w=R.length,F==1||F==2&&(k<=x||x<=c)){for(;w<k;R+="0",w++);R=eg(R,x)}else if(k-=E+(F===2&&x>E),R=na(R,x,"0"),x+1>w){if(--k>0)for(R+=".";k--;R+="0");}else if(k+=x-w,k>0)for(x+1==w&&(R+=".");k--;R+="0");return y.s<0&&S?"-"+R:R}function L(y,k){for(var T,F,S=1,x=new h(y[0]);S<y.length;S++)F=new h(y[S]),(!F.s||(T=ws(x,F))===k||T===0&&x.s===k)&&(x=F);return x}function z(y,k,T){for(var F=1,S=k.length;!k[--S];k.pop());for(S=k[0];S>=10;S/=10,F++);return(T=F+T*lt-1)>d?y.c=y.e=null:T<l?y.c=[y.e=0]:(y.e=T,y.c=k),y}r=(function(){var y=/^(-?)0([xbo])(?=\w[\w.]*$)/i,k=/^([^.]+)\.$/,T=/^\.([^.]+)$/,F=/^-?(Infinity|NaN)$/,S=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(x,E,w,R){var _,P=w?E:E.replace(S,"");if(F.test(P))x.s=isNaN(P)?null:P<0?-1:1;else{if(!w&&(P=P.replace(y,function(N,I,O){return _=(O=O.toLowerCase())=="x"?16:O=="b"?2:8,!R||R==_?I:N}),R&&(_=R,P=P.replace(k,"$1").replace(T,"0.$1")),E!=P))return new h(P,_);if(h.DEBUG)throw Error($r+"Not a"+(R?" base "+R:"")+" number: "+E);x.s=null}x.c=x.e=null}})();function A(y,k,T,F){var S,x,E,w,R,_,P,N=y.c,I=F5;if(N){e:{for(S=1,w=N[0];w>=10;w/=10,S++);if(x=k-S,x<0)x+=lt,E=k,R=N[_=0],P=bo(R/I[S-E-1]%10);else if(_=R5((x+1)/lt),_>=N.length)if(F){for(;N.length<=_;N.push(0));R=P=0,S=1,x%=lt,E=x-lt+1}else break e;else{for(R=w=N[_],S=1;w>=10;w/=10,S++);x%=lt,E=x-lt+S,P=E<0?0:bo(R/I[S-E-1]%10)}if(F=F||k<0||N[_+1]!=null||(E<0?R:R%I[S-E-1]),F=T<4?(P||F)&&(T==0||T==(y.s<0?3:2)):P>5||P==5&&(T==4||F||T==6&&(x>0?E>0?R/I[S-E]:0:N[_-1])%10&1||T==(y.s<0?8:7)),k<1||!N[0])return N.length=0,F?(k-=y.e+1,N[0]=I[(lt-k%lt)%lt],y.e=-k||0):N[0]=y.e=0,y;if(x==0?(N.length=_,w=1,_--):(N.length=_+1,w=I[lt-x],N[_]=E>0?bo(R/I[S-E]%I[E])*w:0),F)for(;;)if(_==0){for(x=1,E=N[0];E>=10;E/=10,x++);for(E=N[0]+=w,w=1;E>=10;E/=10,w++);x!=w&&(y.e++,N[0]==Yo&&(N[0]=1));break}else{if(N[_]+=w,N[_]!=Yo)break;N[_--]=0,w=1}for(x=N.length;N[--x]===0;N.pop());}y.e>d?y.c=y.e=null:y.e<l&&(y.c=[y.e=0])}return y}function D(y){var k,T=y.e;return T===null?y.toString():(k=yo(y.c),k=T<=c||T>=u?eg(k,T):na(k,T,"0"),y.s<0?"-"+k:k)}return o.absoluteValue=o.abs=function(){var y=new h(this);return y.s<0&&(y.s=1),y},o.comparedTo=function(y,k){return ws(this,new h(y,k))},o.decimalPlaces=o.dp=function(y,k){var T,F,S,x=this;if(y!=null)return hn(y,0,Jn),k==null?k=s:hn(k,0,8),A(new h(x),y+x.e+1,k);if(!(T=x.c))return null;if(F=((S=T.length-1)-wo(this.e/lt))*lt,S=T[S])for(;S%10==0;S/=10,F--);return F<0&&(F=0),F},o.dividedBy=o.div=function(y,k){return t(this,new h(y,k),a,s)},o.dividedToIntegerBy=o.idiv=function(y,k){return t(this,new h(y,k),0,1)},o.exponentiatedBy=o.pow=function(y,k){var T,F,S,x,E,w,R,_,P,N=this;if(y=new h(y),y.c&&!y.isInteger())throw Error($r+"Exponent not an integer: "+D(y));if(k!=null&&(k=new h(k)),w=y.e>14,!N.c||!N.c[0]||N.c[0]==1&&!N.e&&N.c.length==1||!y.c||!y.c[0])return P=new h(Math.pow(+D(N),w?y.s*(2-Zf(y)):+D(y))),k?P.mod(k):P;if(R=y.s<0,k){if(k.c?!k.c[0]:!k.s)return new h(NaN);F=!R&&N.isInteger()&&k.isInteger(),F&&(N=N.mod(k))}else{if(y.e>9&&(N.e>0||N.e<-1||(N.e==0?N.c[0]>1||w&&N.c[1]>=24e7:N.c[0]<8e13||w&&N.c[0]<=9999975e7)))return x=N.s<0&&Zf(y)?-0:0,N.e>-1&&(x=1/x),new h(R?1/x:x);g&&(x=R5(g/lt+2))}for(w?(T=new h(.5),R&&(y.s=1),_=Zf(y)):(S=Math.abs(+D(y)),_=S%2),P=new h(i);;){if(_){if(P=P.times(N),!P.c)break;x?P.c.length>x&&(P.c.length=x):F&&(P=P.mod(k))}if(S){if(S=bo(S/2),S===0)break;_=S%2}else if(y=y.times(T),A(y,y.e+1,1),y.e>14)_=Zf(y);else{if(S=+D(y),S===0)break;_=S%2}N=N.times(N),x?N.c&&N.c.length>x&&(N.c.length=x):F&&(N=N.mod(k))}return F?P:(R&&(P=i.div(P)),k?P.mod(k):x?A(P,g,s,E):P)},o.integerValue=function(y){var k=new h(this);return y==null?y=s:hn(y,0,8),A(k,k.e+1,y)},o.isEqualTo=o.eq=function(y,k){return ws(this,new h(y,k))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(y,k){return ws(this,new h(y,k))>0},o.isGreaterThanOrEqualTo=o.gte=function(y,k){return(k=ws(this,new h(y,k)))===1||k===0},o.isInteger=function(){return!!this.c&&wo(this.e/lt)>this.c.length-2},o.isLessThan=o.lt=function(y,k){return ws(this,new h(y,k))<0},o.isLessThanOrEqualTo=o.lte=function(y,k){return(k=ws(this,new h(y,k)))===-1||k===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(y,k){var T,F,S,x,E=this,w=E.s;if(y=new h(y,k),k=y.s,!w||!k)return new h(NaN);if(w!=k)return y.s=-k,E.plus(y);var R=E.e/lt,_=y.e/lt,P=E.c,N=y.c;if(!R||!_){if(!P||!N)return P?(y.s=-k,y):new h(N?E:NaN);if(!P[0]||!N[0])return N[0]?(y.s=-k,y):new h(P[0]?E:s==3?-0:0)}if(R=wo(R),_=wo(_),P=P.slice(),w=R-_){for((x=w<0)?(w=-w,S=P):(_=R,S=N),S.reverse(),k=w;k--;S.push(0));S.reverse()}else for(F=(x=(w=P.length)<(k=N.length))?w:k,w=k=0;k<F;k++)if(P[k]!=N[k]){x=P[k]<N[k];break}if(x&&(S=P,P=N,N=S,y.s=-y.s),k=(F=N.length)-(T=P.length),k>0)for(;k--;P[T++]=0);for(k=Yo-1;F>w;){if(P[--F]<N[F]){for(T=F;T&&!P[--T];P[T]=k);--P[T],P[F]+=Yo}P[F]-=N[F]}for(;P[0]==0;P.splice(0,1),--_);return P[0]?z(y,P,_):(y.s=s==3?-1:1,y.c=[y.e=0],y)},o.modulo=o.mod=function(y,k){var T,F,S=this;return y=new h(y,k),!S.c||!y.s||y.c&&!y.c[0]?new h(NaN):!y.c||S.c&&!S.c[0]?new h(S):(p==9?(F=y.s,y.s=1,T=t(S,y,0,3),y.s=F,T.s*=F):T=t(S,y,0,p),y=S.minus(T.times(y)),!y.c[0]&&p==1&&(y.s=S.s),y)},o.multipliedBy=o.times=function(y,k){var T,F,S,x,E,w,R,_,P,N,I,O,j,B,se,H=this,V=H.c,Z=(y=new h(y,k)).c;if(!V||!Z||!V[0]||!Z[0])return!H.s||!y.s||V&&!V[0]&&!Z||Z&&!Z[0]&&!V?y.c=y.e=y.s=null:(y.s*=H.s,!V||!Z?y.c=y.e=null:(y.c=[0],y.e=0)),y;for(F=wo(H.e/lt)+wo(y.e/lt),y.s*=H.s,R=V.length,N=Z.length,R<N&&(j=V,V=Z,Z=j,S=R,R=N,N=S),S=R+N,j=[];S--;j.push(0));for(B=Yo,se=Ma,S=N;--S>=0;){for(T=0,I=Z[S]%se,O=Z[S]/se|0,E=R,x=S+E;x>S;)_=V[--E]%se,P=V[E]/se|0,w=O*_+P*I,_=I*_+w%se*se+j[x]+T,T=(_/B|0)+(w/se|0)+O*P,j[x--]=_%B;j[x]=T}return T?++F:j.splice(0,1),z(y,j,F)},o.negated=function(){var y=new h(this);return y.s=-y.s||null,y},o.plus=function(y,k){var T,F=this,S=F.s;if(y=new h(y,k),k=y.s,!S||!k)return new h(NaN);if(S!=k)return y.s=-k,F.minus(y);var x=F.e/lt,E=y.e/lt,w=F.c,R=y.c;if(!x||!E){if(!w||!R)return new h(S/0);if(!w[0]||!R[0])return R[0]?y:new h(w[0]?F:S*0)}if(x=wo(x),E=wo(E),w=w.slice(),S=x-E){for(S>0?(E=x,T=R):(S=-S,T=w),T.reverse();S--;T.push(0));T.reverse()}for(S=w.length,k=R.length,S-k<0&&(T=R,R=w,w=T,k=S),S=0;k;)S=(w[--k]=w[k]+R[k]+S)/Yo|0,w[k]=Yo===w[k]?0:w[k]%Yo;return S&&(w=[S].concat(w),++E),z(y,w,E)},o.precision=o.sd=function(y,k){var T,F,S,x=this;if(y!=null&&y!==!!y)return hn(y,1,Jn),k==null?k=s:hn(k,0,8),A(new h(x),y,k);if(!(T=x.c))return null;if(S=T.length-1,F=S*lt+1,S=T[S]){for(;S%10==0;S/=10,F--);for(S=T[0];S>=10;S/=10,F++);}return y&&x.e+1>F&&(F=x.e+1),F},o.shiftedBy=function(y){return hn(y,-A5,A5),this.times("1e"+y)},o.squareRoot=o.sqrt=function(){var y,k,T,F,S,x=this,E=x.c,w=x.s,R=x.e,_=a+4,P=new h("0.5");if(w!==1||!E||!E[0])return new h(!w||w<0&&(!E||E[0])?NaN:E?x:1/0);if(w=Math.sqrt(+D(x)),w==0||w==1/0?(k=yo(E),(k.length+R)%2==0&&(k+="0"),w=Math.sqrt(+k),R=wo((R+1)/2)-(R<0||R%2),w==1/0?k="5e"+R:(k=w.toExponential(),k=k.slice(0,k.indexOf("e")+1)+R),T=new h(k)):T=new h(w+""),T.c[0]){for(R=T.e,w=R+_,w<3&&(w=0);;)if(S=T,T=P.times(S.plus(t(x,S,_,1))),yo(S.c).slice(0,w)===(k=yo(T.c)).slice(0,w))if(T.e<R&&--w,k=k.slice(w-3,w+1),k=="9999"||!F&&k=="4999"){if(!F&&(A(S,S.e+a+2,0),S.times(S).eq(x))){T=S;break}_+=4,w+=4,F=1}else{(!+k||!+k.slice(1)&&k.charAt(0)=="5")&&(A(T,T.e+a+2,1),y=!T.times(T).eq(x));break}}return A(T,T.e+a+1,s,y)},o.toExponential=function(y,k){return y!=null&&(hn(y,0,Jn),y++),M(this,y,k,1)},o.toFixed=function(y,k){return y!=null&&(hn(y,0,Jn),y=y+this.e+1),M(this,y,k)},o.toFormat=function(y,k,T){var F,S=this;if(T==null)y!=null&&k&&typeof k=="object"?(T=k,k=null):y&&typeof y=="object"?(T=y,y=k=null):T=m;else if(typeof T!="object")throw Error($r+"Argument not an object: "+T);if(F=S.toFixed(y,k),S.c){var x,E=F.split("."),w=+T.groupSize,R=+T.secondaryGroupSize,_=T.groupSeparator||"",P=E[0],N=E[1],I=S.s<0,O=I?P.slice(1):P,j=O.length;if(R&&(x=w,w=R,R=x,j-=x),w>0&&j>0){for(x=j%w||w,P=O.substr(0,x);x<j;x+=w)P+=_+O.substr(x,w);R>0&&(P+=_+O.slice(x)),I&&(P="-"+P)}F=N?P+(T.decimalSeparator||"")+((R=+T.fractionGroupSize)?N.replace(new RegExp("\\d{"+R+"}\\B","g"),"$&"+(T.fractionGroupSeparator||"")):N):P}return(T.prefix||"")+F+(T.suffix||"")},o.toFraction=function(y){var k,T,F,S,x,E,w,R,_,P,N,I,O=this,j=O.c;if(y!=null&&(w=new h(y),!w.isInteger()&&(w.c||w.s!==1)||w.lt(i)))throw Error($r+"Argument "+(w.isInteger()?"out of range: ":"not an integer: ")+D(w));if(!j)return new h(O);for(k=new h(i),_=T=new h(i),F=R=new h(i),I=yo(j),x=k.e=I.length-O.e-1,k.c[0]=F5[(E=x%lt)<0?lt+E:E],y=!y||w.comparedTo(k)>0?x>0?k:_:w,E=d,d=1/0,w=new h(I),R.c[0]=0;P=t(w,k,0,1),S=T.plus(P.times(F)),S.comparedTo(y)!=1;)T=F,F=S,_=R.plus(P.times(S=_)),R=S,k=w.minus(P.times(S=k)),w=S;return S=t(y.minus(T),F,0,1),R=R.plus(S.times(_)),T=T.plus(S.times(F)),R.s=_.s=O.s,x=x*2,N=t(_,F,x,s).minus(O).abs().comparedTo(t(R,T,x,s).minus(O).abs())<1?[_,F]:[R,T],d=E,N},o.toNumber=function(){return+D(this)},o.toPrecision=function(y,k){return y!=null&&hn(y,1,Jn),M(this,y,k,2)},o.toString=function(y){var k,T=this,F=T.s,S=T.e;return S===null?F?(k="Infinity",F<0&&(k="-"+k)):k="NaN":(y==null?k=S<=c||S>=u?eg(yo(T.c),S):na(yo(T.c),S,"0"):y===10&&v?(T=A(new h(T),a+S+1,s),k=na(yo(T.c),T.e,"0")):(hn(y,2,C.length,"Base"),k=n(na(yo(T.c),S,"0"),10,y,F,!0)),F<0&&T.c[0]&&(k="-"+k)),k},o.valueOf=o.toJSON=function(){return D(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,e!=null&&h.set(e),h}function wo(e){var t=e|0;return e>0||e===t?t:t-1}function yo(e){for(var t,n,r=1,o=e.length,i=e[0]+"";r<o;){for(t=e[r++]+"",n=lt-t.length;n--;t="0"+t);i+=t}for(o=i.length;i.charCodeAt(--o)===48;);return i.slice(0,o+1||1)}function ws(e,t){var n,r,o=e.c,i=t.c,a=e.s,s=t.s,c=e.e,u=t.e;if(!a||!s)return null;if(n=o&&!o[0],r=i&&!i[0],n||r)return n?r?0:-s:a;if(a!=s)return a;if(n=a<0,r=c==u,!o||!i)return r?0:!o^n?1:-1;if(!r)return c>u^n?1:-1;for(s=(c=o.length)<(u=i.length)?c:u,a=0;a<s;a++)if(o[a]!=i[a])return o[a]>i[a]^n?1:-1;return c==u?0:c>u^n?1:-1}function hn(e,t,n,r){if(e<t||e>n||e!==bo(e))throw Error($r+(r||"Argument")+(typeof e=="number"?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Zf(e){var t=e.c.length-1;return wo(e.e/lt)==t&&e.c[t]%2!=0}function eg(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function na(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 DQ=ER(),TR=DQ;var NQ=24,Du=32,OQ=()=>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,P5=OQ(),M5=(e=4,t=P5)=>{let n="";for(;n.length<e;)n=n+Math.floor(t()*36).toString(36);return n};function $Q(e){let t=new TR(0);for(let n of e.values())t=t.multipliedBy(256).plus(n);return t}var RR=(e="")=>{let t=new TextEncoder;return $Q(kR(t.encode(e))).toString(36).slice(1)},IR=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),HQ=e=>IR[Math.floor(e()*IR.length)],UQ=({globalObj:e=typeof global<"u"?global:typeof window<"u"?window:{},random:t=P5}={})=>{let n=Object.keys(e).toString(),r=n.length?n+M5(Du,t):M5(Du,t);return RR(r).substring(0,Du)},jQ=e=>()=>e++,VQ=476782367,AR=({random:e=P5,counter:t=jQ(Math.floor(e()*VQ)),length:n=NQ,fingerprint:r=UQ({random:e})}={})=>{if(n>Du)throw new Error(`Length must be between 2 and ${Du}. Received: ${n}`);return function(){let i=HQ(e),a=Date.now().toString(36),s=t().toString(36),c=M5(n,e),u=`${a+c+s+r}`;return`${i+RR(u).substring(1,n)}`}},Pa=WQ(AR);function WQ(e){let t;return()=>(t||(t=e()),t())}var YQ=Jp(PR());pn();Pe();var tg=/\[([^\]]+)\]\s*\[([^\]]+)\]\s*\[([^\]]+)\]\s*-\s*(.+)/g;function KQ(e){return e.replace(/\*\*/g,"").replace(/\*/g,"").replace(/__/g,"").replace(/_/g," ").trim()}function _5(e,t){let n=[],r=e.split(`
87
+ `,HK=s7.span(({theme:e})=>({display:"inline-block",width:"12px",height:"12px",border:`2px solid ${e.appBorderColor}`,borderTopColor:"currentColor",borderRadius:"50%",animation:`${$K} 0.6s linear infinite`,marginRight:"6px",verticalAlign:"middle"})),UK=s7.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}}})),fi=({loading:e=!1,disabled:t=!1,onClick:n,variant:r="default",children:o,loadingText:i})=>a7.createElement(UK,{variant:r,disabled:t||e,onClick:n},e&&a7.createElement(HK,null),e&&i?i:o);Me();import Xn from"react";import{styled as wu}from"storybook/theming";var l7=wu.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"})),jK=wu.div({display:"flex",alignItems:"center",gap:"12px"}),Sf=wu.span({whiteSpace:"nowrap"}),c7=wu.div({display:"flex",alignItems:"center",gap:"8px"}),kf=wu.span(({theme:e})=>({fontWeight:600,color:e.color.defaultText})),Cf=({inputTokens:e,outputTokens:t,costUsd:n,compact:r=!1})=>{let o=e+t,i=n*n3;return r?Xn.createElement(l7,null,Xn.createElement(Sf,null,o.toLocaleString()," tokens"),Xn.createElement(c7,null,Xn.createElement(kf,null,"$",n.toFixed(4)),Xn.createElement("span",null,"\xB7"),Xn.createElement(kf,null,"\u20AA",i.toFixed(2)))):Xn.createElement(l7,null,Xn.createElement(jK,null,Xn.createElement(Sf,null,e.toLocaleString()," input"),Xn.createElement("span",null,"+"),Xn.createElement(Sf,null,t.toLocaleString()," output"),Xn.createElement("span",null,"="),Xn.createElement(Sf,null,Xn.createElement("strong",null,o.toLocaleString())," tokens")),Xn.createElement(c7,null,Xn.createElement(kf,null,"$",n.toFixed(4)),Xn.createElement("span",null,"\xB7"),Xn.createElement(kf,null,"\u20AA",i.toFixed(2))))};import Nr from"react";import{styled as Ta}from"storybook/theming";function n5(e){if(typeof e!="string")return e;try{let t=JSON.parse(e);if(t.summary)return t}catch{}return{summary:e}}var VK=Ta.div(({theme:e})=>({display:"flex",flexDirection:"column",gap:`${e.layoutMargin*.5}px`})),u7=Ta.div(({theme:e,color:t})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,color:t||e.color.defaultText,lineHeight:"1.4"})),WK=Ta.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*.25}px`,flexWrap:"wrap",fontSize:e.typography.size.s1,color:e.color.mediumdark})),GK=Ta.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})),qK=Ta.span(({theme:e})=>({color:e.color.mediumlight,fontSize:e.typography.size.s1})),YK=Ta.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,fontStyle:"italic"})),KK=Ta.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,display:"flex",gap:`${e.layoutMargin*.25}px`})),XK=Ta.span(({theme:e})=>({fontWeight:e.typography.weight.bold,color:e.color.defaultText})),p7=({data:e,color:t,compact:n})=>n?Nr.createElement(u7,{color:t},e.summary):Nr.createElement(VK,null,Nr.createElement(u7,{color:t},e.summary),e.mappings&&e.mappings.length>0&&Nr.createElement(WK,null,e.mappings.map((r,o)=>Nr.createElement(Nr.Fragment,{key:o},Nr.createElement(GK,null,r.from," ",Nr.createElement(qK,null,"\u2192")," ",r.to)))),e.candidates!=null&&e.candidates>1&&Nr.createElement(YK,null,e.candidates," candidate variants matched"),e.defaults&&e.defaults.length>0&&Nr.createElement(Nr.Fragment,null,e.defaults.map((r,o)=>Nr.createElement(KK,{key:o},Nr.createElement(XK,null,r.choice),Nr.createElement("span",null,"\u2014 ",r.why)))));var ZK=st.div({display:"flex",flexDirection:"column",flex:1,overflow:"hidden"}),eX=st.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px",borderBottom:`1px solid ${e.appBorderColor}`})),tX=st.div({display:"flex",flexDirection:"column",gap:"4px"}),nX=st.div({display:"flex",alignItems:"center",gap:"10px"}),rX=st.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"})),r5=st.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})),oX=st.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark})),iX=st.div({display:"flex",gap:"8px"}),aX=st.div(({theme:e})=>({display:"flex",alignItems:"center",padding:"12px 24px",gap:"12px",borderBottom:`1px solid ${e.appBorderColor}`})),sX=st(xa)(({theme:e})=>({flex:1,fontSize:e.typography.size.s2})),lX=st.div({display:"flex",gap:"4px"}),Ef=st.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}})),cX=st.div({display:"flex",flexDirection:"column",flex:1,padding:"16px 24px",gap:"8px",overflowY:"auto"}),f7=st.div({display:"flex",flexDirection:"column",alignItems:"center",gap:"4px",flex:"none"}),g7=st.span(({theme:e})=>({fontSize:"9px",fontWeight:e.typography.weight.bold,letterSpacing:"0.06em",textTransform:"uppercase",color:e.color.mediumdark,whiteSpace:"nowrap"})),uX=st.div(({theme:e,dimmed:t,accent:n})=>{let r=n==="ready"?pe.green:n==="drift"?pe.amber:n==="flag"?e.color.secondary:n==="needyou"?e.color.mediumdark:e.appBorderColor;return{display:"flex",alignItems:"center",padding:"12px 16px",border:`1px solid ${e.appBorderColor}`,borderLeft:`4px solid ${r}`,borderRadius:"10px",gap:"12px",backgroundColor:e.background.content,opacity:t?.6:1,transition:"opacity 0.15s",position:"relative",zIndex:0,"&:hover":{zIndex:10}}}),pX=st.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}`}})),dX=st.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"})),i5=st.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}`})),fX=st.img({width:"100%",height:"100%",objectFit:"contain"}),w7=st.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)"}}})),gX=st.span(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:"9px",letterSpacing:"0.03em",textTransform:"uppercase",color:e.color.mediumdark,textAlign:"center",padding:"4px"})),m7=st.div({flex:1,display:"flex",flexDirection:"column",gap:"2px",minWidth:0}),h7=st.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"})),o5=st.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"})),v2e=st.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"})),mX=st.div(({theme:e})=>({flexShrink:0,color:e.color.mediumlight,fontSize:"14px"})),hX=st.div({display:"flex",flexWrap:"wrap",gap:"4px",marginTop:"4px"}),xX=st.span(({theme:e,vouch:t})=>{let n=t==="matched"?pe.green:t==="differs"?pe.amber:e.color.mediumdark;return{display:"inline-flex",alignItems:"center",gap:"4px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.defaultText,background:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,padding:"1px 6px",opacity:t==="no-evidence"?.65:1,"&::before":{content:'""',width:"6px",height:"6px",borderRadius:"50%",background:n,flexShrink:0}}}),yX=st.div(({theme:e,tone:t})=>({display:"flex",alignItems:"flex-start",gap:"6px",marginTop:"6px",padding:`${e.layoutMargin*.5}px ${e.layoutMargin*.75}px`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,lineHeight:1.45,color:e.color.defaultText,background:e.background.hoverable,borderLeft:`3px solid ${t==="good"?pe.green:pe.amber}`,borderRadius:e.appBorderRadius})),x7=st.span(({tone:e})=>({fontWeight:600,color:e==="good"?pe.green:pe.amber})),bX=st.div(({theme:e})=>({marginTop:"6px",padding:`${e.layoutMargin*.5}px ${e.layoutMargin*.75}px`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,lineHeight:1.45,color:e.color.mediumdark,background:e.background.hoverable,borderLeft:`3px dashed ${e.appBorderColor}`,borderRadius:e.appBorderRadius})),wX=st.div(({theme:e})=>({marginTop:"6px",padding:`${e.layoutMargin*.5}px ${e.layoutMargin*.75}px`,fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,lineHeight:1.45,color:e.color.defaultText,background:e.background.hoverable,borderLeft:`3px solid ${e.color.secondary}`,borderRadius:e.appBorderRadius})),vX=st.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})),SX=st.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}})),kX=st.button(({theme:e})=>({padding:"4px 7px",borderRadius:e.appBorderRadius,fontFamily:e.typography.fonts.mono,fontSize:e.typography.size.s1,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}})),CX=st.div(({theme:e})=>({padding:"16px 0",marginTop:"8px",borderTop:`1px solid ${e.appBorderColor}`,display:"flex",flexDirection:"column",gap:"8px"})),EX=st.div({display:"flex",flexWrap:"wrap",gap:"6px"}),TX=st.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})),IX=st.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})),RX=st.div(({theme:e})=>({marginTop:"4px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.warning}));function AX(e){let t=Date.now()-new Date(e).getTime(),n=Math.floor(t/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;let r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}var FX=st.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"}})),S2e=st.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})),y7=({storyId:e,alt:t,src:n,onRequestCapture:r,fallback:o,title:i})=>{let a=JK(null),[s,c]=ys(!1);return QK(()=>{if(s||n)return;let u=a.current;if(!u||typeof IntersectionObserver>"u"){c(!0),r?.(e);return}let l=new IntersectionObserver(d=>{d.some(f=>f.isIntersecting)&&(c(!0),r?.(e),l.disconnect())},{root:null,rootMargin:"200px 0px",threshold:.01});return l.observe(u),()=>l.disconnect()},[e,n,s,r]),he.createElement("div",{ref:a},n?he.createElement(i5,{title:i},he.createElement(MX,{src:n,alt:t})):s?he.createElement(i5,{title:i},he.createElement(w7,null)):o)},MX=({src:e,alt:t})=>{let[n,r]=ys(!1),[o,i]=ys(!1);return o?he.createElement(gX,{title:t},"preview unavailable"):he.createElement(he.Fragment,null,!n&&he.createElement(w7,null),he.createElement(fX,{src:e,alt:t,onLoad:()=>r(!0),onError:()=>i(!0),style:n?void 0:{position:"absolute",opacity:0}}))};function Tf(e){return e.belowFloor?"needyou":e.rendersMoreLike?"flag":e.vouching?.verdicts?.some(t=>t.vouch==="differs")?"drift":"ready"}function b7(e,t){if(t==="all")return!0;let n=Tf(e);return t==="ready"?n==="ready"||n==="drift":n===t}function PX(e){return e>=90?"high":e>=70?"medium":"low"}function _X(e){return e==="high"?"#16a34a":e==="medium"?"#d97706":"#ef4444"}var LX={matched:"\u2713",differs:"\u2260","no-evidence":"\xF8"},BX={backgroundColor:"color",color:"color",textColor:"color",fill:"color",borderColor:"border",borderWidth:"border",strokes:"border",strokeWeight:"border",padding:"padding",paddingV:"padding",paddingH:"padding",paddingTop:"padding",paddingRight:"padding",paddingBottom:"padding",paddingLeft:"padding",gap:"padding",itemSpacing:"padding",borderRadius:"radius",cornerRadius:"radius",fontFamily:"type",fontSize:"type",fontWeight:"type",lineHeight:"type",letterSpacing:"type",fontStyle:"type",boxShadow:"shadow",shadow:"shadow",effects:"shadow",opacity:"shadow",icon:"icon",hasIcon:"icon"},zX=["color","border","padding","radius","type","shadow","icon","other"];function DX({vouching:e}){let t=new Map;for(let i of e.verdicts){if(i.vouch==="no-evidence")continue;let a=BX[i.prop]??"other",s=t.get(a)??{differs:!1,matched:!1};i.vouch==="differs"?s.differs=!0:s.matched=!0,t.set(a,s)}let n=zX.filter(i=>t.has(i)).map(i=>{let s=t.get(i).differs?"differs":"matched";return{axis:i,vouch:s}});if(n.length===0)return null;let r=n.filter(i=>i.vouch==="differs"),o=e.specScore!=null?` \xB7 render ${Math.round(e.specScore*100)}%`:"";return he.createElement(he.Fragment,null,he.createElement(hX,null,n.map(i=>he.createElement(xX,{key:i.axis,vouch:i.vouch},i.axis," ",LX[i.vouch]))),he.createElement(yX,{tone:r.length===0?"good":"drift"},r.length===0?he.createElement("span",null,he.createElement(x7,{tone:"good"},"Strong match.")," Every compared axis agrees \u2014 ",n.length," of ",n.length,o,"."):he.createElement("span",null,he.createElement(x7,{tone:"drift"},r.map(i=>i.axis).join(", ")," ",r.length===1?"differs":"differ",".")," ","value drift the review flags, not a mapping problem",o,".")))}var a5=({results:e,stories:t,onApply:n,onCancel:r,onRerun:o,isApplying:i,isRerunning:a,source:s,resolveThumbnail:c,resolveStoryScreenshot:u,isCapturingScreenshots:l,onRequestStoryCapture:d,onRequestFigmaThumbnail:f,onBrowse:p})=>{let[g,m]=ys(()=>{let E=new Set;for(let w of e.mappings)w.belowFloor||(w.vouching||w.confidence>=90)&&E.add(w.storyId);return E}),[C,v]=ys(""),[h,M]=ys("all"),[L,z]=ys(null),A=d7(()=>{let E=new Map;for(let w of t)E.set(w.id,{name:w.name,title:w.title});return E},[t]),D=d7(()=>{let E=e.mappings;if(h!=="all"&&(E=E.filter(w=>b7(w,h))),C.trim()){let w=C.toLowerCase();E=E.filter(R=>{let _=A.get(R.storyId);return _?.name.toLowerCase().includes(w)||_?.title.toLowerCase().includes(w)||R.componentSetName.toLowerCase().includes(w)||R.figmaFrameName.toLowerCase().includes(w)})}return E},[e.mappings,h,C,A]),y=E=>{m(w=>{let R=new Set(w);return R.has(E)?R.delete(E):R.add(E),R})},k=()=>{let E=e.mappings.filter(R=>g.has(R.storyId)),w=e.mappings.filter(R=>!g.has(R.storyId)).map(R=>R.storyId);n(E,w)},T=e.mappings.filter(E=>b7(E,"ready")).length,F=e.mappings.filter(E=>Tf(E)==="flag").length,S=e.mappings.filter(E=>Tf(E)==="needyou").length,x=e.usage;return he.createElement(ZK,null,he.createElement(eX,null,he.createElement(tX,null,he.createElement(nX,null,he.createElement(rX,null,s==="deterministic"?"Auto-Link Results":"Auto-Map Results"),he.createElement(r5,{variant:"success"},e.mappings.filter(E=>!E.belowFloor).length," matched"),e.mappings.some(E=>E.belowFloor)&&he.createElement(r5,{variant:"info"},e.mappings.filter(E=>E.belowFloor).length," need you"),e.unmatched.length>0&&he.createElement(r5,{variant:"danger"},e.unmatched.length," unmatched"),s&&he.createElement(IX,{variant:s},s==="cache"?"Loaded from cache":s==="deterministic"?"Deterministic (no AI)":"Fresh analysis")),he.createElement(oX,null,"Review matches below. Uncheck any incorrect mappings before applying."),e.computedAt&&he.createElement(RX,null,"\u26A0 Computed ",AX(e.computedAt)," \u2014 re-run to match against your current Figma file.")),he.createElement(iX,null,o&&he.createElement(FX,{onClick:o,disabled:a},a?"Running\u2026":s==="deterministic"?"\u21BB Run again":"\u21BB Re-run LLM"),he.createElement(fi,{onClick:r,variant:"ghost"},"Cancel"),he.createElement(fi,{loading:i,onClick:k,loadingText:"Applying..."},"Apply ",g.size," Selected"))),he.createElement(aX,null,he.createElement(sX,{type:"text",placeholder:"Filter stories...",value:C,onChange:E=>v(E.target.value)}),he.createElement(lX,null,he.createElement(Ef,{active:h==="all",onClick:()=>M("all")},"All ",e.mappings.length),T>0&&he.createElement(Ef,{active:h==="ready",onClick:()=>M("ready")},"Ready (",T,")"),F>0&&he.createElement(Ef,{active:h==="flag",onClick:()=>M("flag")},"Renders elsewhere (",F,")"),S>0&&he.createElement(Ef,{active:h==="needyou",onClick:()=>M("needyou")},"Need you (",S,")"))),he.createElement(cX,null,D.map(E=>{let w=A.get(E.storyId),R=PX(E.confidence),_=g.has(E.storyId),P=R==="low";return he.createElement(uX,{key:E.storyId,dimmed:P&&!_,accent:Tf(E)},he.createElement(pX,{checked:_,onClick:()=>y(E.storyId)},_?"\u2713":""),(()=>{let N=u?.(E.storyId),I=he.createElement(y7,{storyId:E.storyId,alt:w?.name||E.storyId,src:N,onRequestCapture:d,fallback:he.createElement(dX,{bgColor:P?ol.bgIdle:ol.bgActive},he.createElement("span",{style:{fontFamily:"Inter",fontSize:"8px",fontWeight:500,color:P?ol.iconIdle:ol.iconActive}},(w?.name||"?").substring(0,4)))});return he.createElement(f7,null,I,he.createElement(g7,null,"Storybook"))})(),he.createElement(m7,null,he.createElement(h7,null,w?.name||E.storyId),he.createElement(o5,null,w?.title||"")),he.createElement(mX,null,"\u2192"),(()=>{let N=c?.(E.figmaNodeId),I=n5(E.reason),O=E.vouching?E.figmaFrameName:I.summary+(I.candidates?` (${I.candidates} candidates)`:""),j=he.createElement(y7,{storyId:E.figmaNodeId,alt:E.figmaFrameName,src:N,title:O,onRequestCapture:f,fallback:he.createElement(i5,{title:O},he.createElement("span",{style:{fontFamily:"Inter",fontSize:"10px",fontWeight:500,color:ol.iconIdle}},"No thumbnail"))});return he.createElement(f7,null,j,he.createElement(g7,null,"Figma"))})(),he.createElement(m7,null,he.createElement(h7,null,E.componentSetName),E.figmaFrameName!==E.componentSetName&&he.createElement(o5,null,E.figmaFrameName),E.belowFloor?he.createElement(bX,null,"No confident match \u2014 closest is"," ",he.createElement("b",null,E.componentSetName),E.bestScore!=null?` (best ${Math.round(E.bestScore*100)}%)`:"",". Left unselected; map by hand if it's right."):E.vouching?he.createElement(DX,{vouching:E.vouching}):he.createElement(p7,{data:n5(E.reason),color:_X(R)}),E.rendersMoreLike&&he.createElement(wX,null,"\u2937 renders more like ",he.createElement("b",null,E.rendersMoreLike.name)," (",Math.round(E.rendersMoreLike.score*100),"%) \u2014 name picked this, but check the mapping")),he.createElement(vX,{level:R},E.confidence,"%"),E.vouching?.verdicts?.length?he.createElement(kX,{title:"Compare the Figma and code values behind this match","aria-label":"Compare properties",onClick:N=>{let I=N.currentTarget.getBoundingClientRect();z(O=>O?.storyId===E.storyId?null:{storyId:E.storyId,top:Math.min(I.bottom+6,window.innerHeight-320),left:Math.max(12,I.left-380)})}},"{}"):null,p&&he.createElement(SX,{onClick:()=>p(E.componentSetName)},"Browse"),L?.storyId===E.storyId&&E.vouching?.verdicts&&he.createElement(i7,{title:E.componentSetName,subtitle:E.figmaFrameName!==E.componentSetName?E.figmaFrameName:void 0,verdicts:E.vouching.verdicts,figmaNodeId:E.figmaNodeId,renderScore:E.vouching.specScore,anchor:{top:L.top,left:L.left},onClose:()=>z(null)}))}),e.unmatched.length>0&&he.createElement(CX,null,he.createElement(o5,null,e.unmatched.length," stories couldn't be matched \u2014 map manually after applying"),he.createElement(EX,null,e.unmatched.map(E=>{let w=A.get(E);return he.createElement(TX,{key:E},he.createElement("span",{style:{width:"6px",height:"6px",borderRadius:"50%",backgroundColor:"#cbd5e1"}}),w?`${w.name} (${w.title})`:E)})))),x&&s!=="cache"&&he.createElement("div",{style:{padding:"8px 24px",borderTop:"1px solid #f0f0f0"}},he.createElement(Cf,{inputTokens:x.inputTokens||0,outputTokens:x.outputTokens||0,costUsd:x.costUsd||0})))};Me();Pe();import{useState as Ia,useCallback as Ra,useRef as NX}from"react";import{useStorybookApi as OX,addons as $X}from"storybook/manager-api";function v7({projectId:e}){let t=OX(),n=NX(null),[r,o]=Ia(!1),[i,a]=Ia(!1),[s,c]=Ia(!1),[u,l]=Ia(null),[d,f]=Ia(null),[p,g]=Ia(null),[m,C]=Ia(""),[v,h]=Ia(null),M=Ra(async()=>{let F=await fetch("/index.json");if(!F.ok)throw new Error("Failed to fetch Storybook index");let S=await F.json(),x=S.entries||S.stories||{},E=Object.keys(x).filter(_=>x[_].type==="story");b.debug(`[useAutoMap] Found ${E.length} stories in index.json`);let w=[];for(let _ of E){let P=x[_],N=t.getData(_),I={...N?.initialArgs||{}},O=N?.argTypes||{};for(let[j,B]of Object.entries(O))if(!(j in I)){let se=B;if(se.defaultValue!==void 0)I[j]=se.defaultValue;else if(se.table?.defaultValue?.summary!==void 0){let H=se.table.defaultValue.summary;H==="false"?I[j]=!1:H==="true"?I[j]=!0:I[j]=H}}w.push({id:_,name:P.name||_.split("--").pop()||_,title:P.title||"",initialArgs:I,argTypes:O})}let R=w.filter(_=>Object.keys(_.initialArgs).length>0);return b.debug(`[useAutoMap] Manifest: ${w.length} stories, ${R.length} with args`),w},[t]),L=Ra(async()=>{if(!e)return!1;try{let F=q(),S=localStorage.getItem("uicopilot_session_token");if(!S)return!1;let x=await fetch(`${F}/api/figma/auto-map?projectId=${e}`,{headers:{Authorization:`Bearer ${S}`}});if(!x.ok)return!1;let E=await x.json();return E.hasSuggestions&&E.mappings?.length>0?(f(E),h("cache"),C(`Loaded ${E.mappings.length} saved suggestions`),b.debug(`[useAutoMap] Loaded ${E.mappings.length} existing suggestions from DB`),!0):!1}catch{return!1}},[e]),z=Ra(async F=>{o(!0),C("Collecting story information...");let S;try{if(S=await M(),F?.length&&(S=S.filter(E=>!F.includes(E.id)),b.debug(`[useAutoMap] After excluding mapped: ${S.length} stories`)),S.length===0){l("No unmapped stories found"),o(!1);return}g(S)}catch(E){l(E instanceof Error?E.message:"Failed to collect story manifest"),o(!1);return}o(!1),a(!0),C(`Analyzing ${S.length} stories against Figma components...`);let x=new AbortController;n.current=x;try{let E=q(),w=localStorage.getItem("uicopilot_session_token");if(!w)throw new Error("Not authenticated");let R=await fetch(`${E}/api/figma/auto-map`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${w}`},body:JSON.stringify({projectId:e,stories:S.map(P=>({id:P.id,name:P.name,title:P.title,initialArgs:P.initialArgs,argTypes:P.argTypes}))}),signal:x.signal});if(!R.ok){let P=await R.json();throw new Error(P.error||"Auto-map failed")}let _=await R.json();f(_),h("llm"),C(`Found ${_.stats.matched} matches (${_.stats.highConfidence} high confidence)`),b.debug(`[useAutoMap] Results: ${_.stats.matched}/${_.stats.total} matched, ${_.unmatched.length} unmatched`)}catch(E){if(E instanceof DOMException&&E.name==="AbortError"){C("Cancelled");return}l(E instanceof Error?E.message:"Auto-map failed")}finally{a(!1),n.current=null}},[e,M]),A=Ra(async F=>{if(!e)return;if(l(null),f(null),h(null),o(!0),C("Checking for existing suggestions..."),await L()){o(!1);return}await z(F)},[e,L,z]),D=Ra(async F=>{e&&(l(null),f(null),h(null),await z(F))},[e,z]),y=Ra(async(F,S=[])=>{if(!(!e||F.length===0)){c(!0),C(`Applying ${F.length} mappings...`);try{let x=q(),E=localStorage.getItem("uicopilot_session_token");if(!E)throw new Error("Not authenticated");let w=await fetch(`${x}/api/mappings/batch`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({projectId:e,mappings:F.map(_=>({storyId:_.storyId,figmaNodeId:_.figmaNodeId,name:_.figmaFrameName||_.componentSetName}))})});if(!w.ok){let _=await w.json().catch(()=>({}));throw new Error(_.error||`Apply failed (${w.status})`)}let{applied:R=F.length}=await w.json();C(`Applied ${R}/${F.length} mappings`),fetch(`${x}/api/figma/auto-map/verdicts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${E}`},body:JSON.stringify({projectId:e,accepted:F.map(_=>_.storyId),rejected:S})}).catch(_=>{b.debug("[useAutoMap] verdict recording failed (ignored)",_)}),b.debug(`[useAutoMap] Applied ${R}/${F.length} mappings (batch)`);try{$X.getChannel().emit("uireview/mappings-changed")}catch{}}catch(x){l(x instanceof Error?x.message:"Failed to apply mappings")}finally{c(!1)}}},[e]),k=Ra(()=>{n.current?.abort()},[]),T=Ra(()=>{f(null),g(null),l(null),C(""),h(null)},[]);return{collectAndMap:A,rerun:D,loadExisting:L,applyMappings:y,cancel:k,reset:T,isCollecting:r,isMapping:i,isApplying:s,error:u,results:d,manifest:p,progress:m,source:v}}Me();Pe();import{useState as zl,useCallback as Tu,useRef as Pf,useEffect as iJ}from"react";async function vu(e,t,n,r){let o=new Array(e.length),i=0;async function a(){for(;i<e.length&&!r();){let s=i++;try{let c=await e[s]();o[s]=c,r()||n(s,c)}catch(c){o[s]=c,r()||n(s,c)}}}return await Promise.all(Array.from({length:Math.min(t,e.length)},()=>a())),o}nt();Bl();async function Rf(e,t,n,r){let o=e.document;o.querySelectorAll("[data-uicopilot-instance]").forEach(f=>f.removeAttribute("data-uicopilot-instance")),o.querySelectorAll("[data-uicopilot-instance-count]").forEach(f=>f.removeAttribute("data-uicopilot-instance-count"));let i=e.__STORYBOOK_PREVIEW__;if(!i?.storyStoreValue)return 0;let a;try{a=await i.storyStoreValue.loadStory({storyId:t})}catch{return 0}let s=r??o.getElementById("storybook-root")??o.getElementById("root");if(!s||!a.component)return 0;let c=r?[]:Array.from(o.body.children).filter(f=>f!==s&&!f.contains(s)&&f.tagName!=="SCRIPT"),u=[s,...c],l=n(a.component,u);if(l.length===0&&a.subcomponents){let f=Object.values(a.subcomponents).flatMap(p=>p?n(p,u):[]);l=Array.from(new Set(f)).filter(p=>!f.some(g=>g!==p&&g.contains(p))).sort((p,g)=>p.compareDocumentPosition(g)&4?-1:1)}return l.forEach((f,p)=>f.setAttribute("data-uicopilot-instance",String(p+1))),[s,...c].some(f=>[f,...Array.from(f.querySelectorAll("*"))].some(p=>Object.keys(p).some(g=>g.startsWith("__reactFiber$"))))&&s.setAttribute("data-uicopilot-instance-count",String(l.length)),l.length}function Af(e,t){let n=u=>{let l=Object.keys(u).find(d=>d.startsWith("__reactFiber$"));return l?u[l]:void 0},r=u=>!!u&&u.nodeType===1&&typeof u.getBoundingClientRect=="function",o=u=>u.elementType===e||u.type===e,i=u=>{for(let l=u?.child??null;l;l=l.sibling){if(l.tag===5&&r(l.stateNode)){let f=l.stateNode.getBoundingClientRect();if(f.width>0&&f.height>0)return l.stateNode}let d=i(l);if(d)return d}},a=u=>{for(let l=u.return;l;l=l.return)if(o(l))return!0;return!1},s=new Set,c=[];for(let u of t)for(let l of[u,...Array.from(u.querySelectorAll("*"))])for(let d=n(l)??null;d;d=d.return){if(!o(d)||s.has(d)||(s.add(d),a(d)))continue;let f=i(d);f&&c.push(f)}return c}fu();Pe();async function Ff(e,t){let n=new Map,r=new Set(e.map(f=>f.id)),o=new Set;for(let f of e)o.add(f.id.includes("--")?f.id.split("--")[0]:f.id);let i=new Map;try{let f=await fetch(`${window.location.origin}/index.json`);if(f.ok){let p=await f.json();for(let g of Object.values(p.entries??{})){if(g.type!=="docs")continue;let m=g.id.includes("--")?g.id.split("--")[0]:g.id;i.has(m)||i.set(m,g.id)}}}catch{}let a=[...o],s=Math.min(4,a.length||1),c=Array.from({length:s},()=>{let f=document.createElement("iframe");return f.style.cssText="position:absolute;left:-9999px;top:0;width:1000px;height:800px;border:0;visibility:hidden;",f.setAttribute("aria-hidden","true"),document.body.appendChild(f),f}),u=0,l=0,d=async f=>{let p=await XX(f,r,g=>n.has(g));for(let[g,m]of p)n.set(g,m),u+=1,t?.(u,e.length)};try{await Promise.all(c.map(async f=>{for(;l<a.length;){let p=a[l++],g=i.get(p)??`${p}--docs`;if(!(i.size>0&&!i.has(p)))try{await JX(f,g),f.contentDocument&&await d(f.contentDocument)}catch{}}}))}finally{c.forEach(f=>f.remove())}return n}async function XX(e,t,n=()=>!1){let r=new Map,o=e.defaultView;for(let i of Array.from(e.querySelectorAll(".docs-story"))){let s=i.closest('[id^="anchor--"]')?.id.replace("anchor--","");if(!s||!t.has(s)||n(s)||r.has(s))continue;let c=i.querySelector(".innerZoomElementWrapper");if(!c||c.querySelectorAll("*").length<=1)continue;o&&await Rf(o,s,Af,c);let u=Ca(c)??c;try{r.set(s,Ll(u))}catch(l){b.warn(`[docsBatch] extract failed for ${s}`,l)}}return r}function JX(e,t,n=2500){return new Promise((r,o)=>{let i=!1,a=u=>{i||(i=!0,clearInterval(s),clearTimeout(c),u?o(u):r())};e.src=`/iframe.html?id=${encodeURIComponent(t)}&viewMode=docs`;let s=setInterval(()=>{let u=e.contentDocument;if(!u)return;let l=Array.from(u.querySelectorAll(".innerZoomElementWrapper"));if(l.length===0)return;l.filter(f=>f.querySelectorAll("*").length>1).length>=l.length&&setTimeout(()=>a(),100)},50),c=setTimeout(()=>a(new Error(`docs render timeout: ${t}`)),n)})}Bl();fu();Pe();var QX=4,ZX=8e3;async function A7(e,t){let n=new Map;if(e.length===0)return n;let r=[...e],o=Math.min(QX,r.length),i=Array.from({length:o},()=>{let c=document.createElement("iframe");return c.style.cssText="position:absolute;left:-9999px;top:0;width:1000px;height:800px;border:0;visibility:hidden;",c.setAttribute("aria-hidden","true"),document.body.appendChild(c),c}),a=0,s=0;try{await Promise.all(i.map(async c=>{for(;s<r.length;){let u=r[s++];try{await oJ(c,u.id);let l=c.contentDocument;if(!l)continue;c.contentWindow&&await Rf(c.contentWindow,u.id,Af);let d=eJ(l);d&&(n.set(u.id,d),a+=1,t?.(a,e.length))}catch{}}}))}finally{i.forEach(c=>c.remove())}return b.debug(`[storiesBatch] captured ${n.size}/${e.length} via per-story iframes`),n}function eJ(e){let t=e.querySelector("#storybook-root")??e.querySelector("#root");if(!t||t.childElementCount===0)return null;let n=Ca(t)??t.firstElementChild;if(!n)return null;try{let r=Ll(n),o=r?.children??[],i=r?.styles??{};return o.length===0&&!rJ(i)?null:r}catch(r){return b.warn("[storiesBatch] extract failed",r),null}}var tJ=new Set(["","none","normal","auto","0px","block","inline","transparent","rgba(0, 0, 0, 0)","1"]),nJ=/^0*(\.0+)?(px|em|rem|%|pt|vh|vw)?$/;function rJ(e){return Object.values(e).some(t=>{if(typeof t!="string")return!1;let n=t.trim().toLowerCase();return!tJ.has(n)&&!nJ.test(n)})}function oJ(e,t,n=ZX){return new Promise((r,o)=>{let i=!1,a=u=>{i||(i=!0,clearInterval(s),clearTimeout(c),u?o(u):r())};e.src=`/iframe.html?id=${encodeURIComponent(t)}&viewMode=story`;let s=setInterval(()=>{let u=e.contentDocument;if(!u)return;let l=u.querySelector("#storybook-root")??u.querySelector("#root");!l||l.childElementCount===0||l.querySelectorAll("*").length<=1||setTimeout(()=>a(),100)},50),c=setTimeout(()=>a(new Error(`story render timeout: ${t}`)),n)})}Pe();async function F7(){try{let e=await fetch(`${window.location.origin}/__uicopilot/health`);return e.ok?(await e.json()).ok===!0:!1}catch{return!1}}async function Mf(e,t=!1){let n=window.location.origin;try{let r=await fetch(`${n}/__uicopilot/capture?storyId=${encodeURIComponent(e)}${t?"&domOnly=1":""}`);if(r.ok){let o=await r.json();return{screenshot:o.screenshot||void 0,computedStyles:o.computedStyles||void 0,domTree:o.domTree||void 0}}}catch{}try{let r=await fetch(`${n}/__uicopilot/screenshot?storyId=${encodeURIComponent(e)}`);if(r.ok)return{screenshot:(await r.json()).screenshot||void 0}}catch{b.debug(`[presetCapture] no capture endpoint for ${e}`)}return{}}function aJ(){try{return localStorage.getItem("uicopilot_client_capture")==="0"}catch{return!1}}function sJ(){try{return localStorage.getItem("uicopilot_docs_batch")==="1"}catch{return!1}}var M7=25,lJ=3,cJ=3e5,uJ=4;function pJ(e){let t=Object.entries(e).filter(([,n])=>n!=null&&n>=.9).map(([n])=>n);return t.length?`matched: ${t.join(", ")}`:"weak signature match"}function dJ(e,t){let n=`Signature ${Math.round(e.score*100)}% \u2014 ${pJ(e.signals)}`;return t?`${n}; runner-up: ${t.name} (${Math.round(t.score*100)}%)`:n}function _f({projectId:e}){let[t,n]=zl(!1),[r,o]=zl(""),[i,a]=zl(null),[s,c]=zl(null),[u,l]=zl(null),[d,f]=zl(0),p=Pf(null),g=Pf(null),m=Pf(!1),C=Pf(!1),v=Tu(()=>{g.current&&(clearInterval(g.current),g.current=null)},[]);iJ(()=>v,[v]);let h=Tu(async A=>{if(C.current)return;if(!e||A.length===0){c(A.length===0?"No unmapped stories found":null);return}let D=localStorage.getItem("uicopilot_session_token");if(!D){c("Not authenticated");return}C.current=!0,m.current=!1,n(!0),c(null),l(null),p.current=Date.now(),f(0),v(),g.current=setInterval(()=>{p.current!=null&&f(Date.now()-p.current)},500);let y=q(),k=new Map;if(sJ()){o("Capturing story renders (docs batch)\u2026"),a({done:0,total:A.length,phase:"capturing"});try{let R=await Ff(A,(_,P)=>a({done:_,total:P,phase:"capturing"}));for(let[_,P]of R)k.set(_,P);b.debug(`[useAutoLink] docs-batch captured ${k.size}/${A.length}`)}catch(R){b.warn("[useAutoLink] docs-batch capture failed, server fallback",R)}if(m.current){o("Cancelled"),C.current=!1,n(!1),a(null);return}}o("Preparing match index\u2026 first run can take ~30s, then it is cached"),a({done:0,total:A.length,phase:"index"});let T=[],F=[],S={},x=R=>{let _=[];for(let N=0;N<R.length;N+=M7)_.push(R.slice(N,N+M7));let P=_.map(N=>async()=>{let I=JSON.stringify({projectId:e,captureMissing:!1,stories:N.map(j=>({id:j.id,name:j.name,title:j.title,args:j.args,domTree:k.get(j.id)??void 0}))}),O=async()=>{let j=await J(`${y}/api/figma/suggest-links/batch`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${D}`},body:I},cJ);if(!j.ok){let B=await j.json().catch(()=>({}));throw new Error(B.error||`suggest-links/batch failed (${j.status})`)}return await j.json()};try{return await O()}catch(j){if(m.current)throw j;return b.warn(`[useAutoLink] chunk retry after: ${j instanceof Error?j.message:j}`),await O()}});return{chunks:_,tasks:P}},E=R=>{let[_,P]=R.suggestions??[];if(!_){F.push(R.storyId);return}T.push({storyId:R.storyId,figmaNodeId:_.figmaNodeId,figmaFrameName:_.variantName??_.name,componentSetName:_.name,confidence:Math.round(_.score*100),reason:dJ(_,P),vouching:R.vouching?.[_.figmaNodeId],belowFloor:R.belowFloor,bestScore:R.bestScore,rendersMoreLike:R.rendersMoreLike?{name:R.rendersMoreLike.name,score:R.rendersMoreLike.score}:null})},w=async(R,_)=>{let{chunks:P,tasks:N}=x(R),I=0;return(await vu(N,lJ,(j,B)=>{let se=P[j];if(I+=se.length,o("Matching stories\u2026"),a({done:I,total:R.length,phase:"matching"}),B instanceof Error){b.warn(`[useAutoLink] chunk ${j} (${se.length} stories): ${B.message}`);for(let H of se)F.push(H.id);return}for(let H of B.results??[])E(H);for(let H of B.unmatched??[])F.includes(H)||F.push(H),_.push(H)},()=>m.current)).find(j=>j instanceof Error)};try{let R=[],_=await w(A,R);if(m.current){o("Cancelled");return}let P=A.filter(V=>R.includes(V.id)&&!k.has(V.id));if(P.length>0&&!aJ()){o("Capturing story renders\u2026"),a({done:0,total:P.length,phase:"capturing"});try{let V=await A7(P,Z=>a({done:Z,total:P.length,phase:"capturing"}));for(let[Z,Y]of V)k.set(Z,Y);b.debug(`[useAutoLink] client-captured ${V.size}/${P.length}`)}catch(V){b.warn("[useAutoLink] client capture failed",V)}if(m.current){o("Cancelled");return}}let N=P.filter(V=>!k.has(V.id));if(N.length>0&&await F7()){o("Capturing story renders\u2026"),a({done:0,total:N.length,phase:"capturing"});let V=0;if(await vu(N.map(Z=>async()=>{let Y=await Mf(Z.id,!0);Y.domTree&&k.set(Z.id,Y.domTree)}),uJ,()=>{V+=1,a({done:V,total:N.length,phase:"capturing"})},()=>m.current),m.current){o("Cancelled");return}}let I=A.filter(V=>k.has(V.id));if(I.length>0&&P.length>0){b.debug(`[useAutoLink] captured ${I.length}/${P.length}, re-matching`),await w(I,[]);for(let V of T){let Z=F.indexOf(V.storyId);Z!==-1&&F.splice(Z,1)}if(m.current){o("Cancelled");return}}if(T.length===0&&_)throw _;let O=new Set,j=T.filter(V=>O.has(V.storyId)?!1:(O.add(V.storyId),!0));b.debug(`[useAutoLink] ${A.length} stories \u2192 ${T.length} mappings (${j.length} unique)`);let B=[...new Set(j.map(V=>V.figmaNodeId))];if(B.length>0&&!m.current){o("Rendering thumbnails\u2026");try{let V=await J(`${y}/api/figma/thumbnails`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${D}`},body:JSON.stringify({projectId:e,nodeIds:B})},12e4);if(V.ok){let{thumbnails:Z}=await V.json();Object.assign(S,Z??{})}else b.warn(`[useAutoLink] batched thumbnails failed (${V.status})`)}catch(V){b.warn("[useAutoLink] batched thumbnails error",V)}}let se=new Set(j.map(V=>V.storyId)),H=[...new Set(F)].filter(V=>!se.has(V));l({mappings:j,unmatched:H,thumbnailUrls:S,stats:{total:A.length,matched:j.length,highConfidence:j.filter(V=>V.confidence>=90).length}}),o(`Found ${j.length} matches (no AI)`)}catch(R){c(R instanceof Error?R.message:"Auto-link failed")}finally{C.current=!1,n(!1),a(null),v()}},[e]),M=Tu(()=>{m.current=!0,n(!1),v()},[v]),L=Tu(()=>{l(null),c(null),o(""),a(null)},[]),z=Tu(async()=>{if(e)try{let A=q(),D=localStorage.getItem("uicopilot_session_token"),y=await J(`${A}/api/figma/auto-map?projectId=${encodeURIComponent(e)}`,{headers:{Authorization:`Bearer ${D}`}});if(!y.ok)return;let k=await y.json();k?.hasSuggestions&&Array.isArray(k.mappings)&&k.mappings.length>0&&l({mappings:k.mappings,unmatched:k.unmatched??[],thumbnailUrls:k.thumbnailUrls??{},computedAt:k.computedAt??void 0,stats:k.stats??{total:k.mappings.length,matched:k.mappings.filter(T=>!T.belowFloor).length,highConfidence:k.mappings.filter(T=>!T.belowFloor&&T.confidence>=90).length}})}catch(A){b.warn("[useAutoLink] hydrate failed",A)}},[e]);return{run:h,cancel:M,reset:L,hydrate:z,isRunning:t,progress:r,progressCount:i,elapsedMs:d,error:s,results:u}}Pe();import{useState as Lf,useEffect as P7,useRef as Bf,useCallback as _7}from"react";var fJ=2;async function gJ(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 zf(){let[e,t]=Lf({}),[n,r]=Lf(0),[o,i]=Lf(0),[a,s]=Lf(0),c=Bf(null),u=Bf(new Set),l=Bf([]),d=Bf(0);P7(()=>{let g=new AbortController;return c.current=g,()=>g.abort()},[]);let f=_7(()=>{let g=c.current;if(!(!g||g.signal.aborted))for(;d.current<fJ&&l.current.length>0;){let m=l.current.shift();d.current+=1,s(d.current),gJ(m,g.signal).then(C=>{g.signal.aborted||(C&&t(v=>({...v,[m]:C})),r(v=>v+1))}).finally(()=>{d.current-=1,s(d.current),g.signal.aborted||f()})}},[]),p=_7(g=>{!g||u.current.has(g)||(u.current.add(g),l.current.push(g),i(m=>m+1),f())},[f]);return P7(()=>()=>{b.debug(`[useStoryScreenshots] captured ${Object.keys(e).length} of ${u.current.size} requested`)},[]),{screenshots:e,requestCapture:p,isCapturing:a>0,progress:{done:n,total:o}}}Me();nt();Pe();import{useCallback as L7,useEffect as mJ,useRef as Df,useState as B7}from"react";var z7=new Map,hJ=300,D7=120;function u5(e){let t=z7.get(e);return t||(t=new Map,z7.set(e,t)),t}function Nf(e){let[t,n]=B7(()=>e?Object.fromEntries(u5(e)):{}),[r,o]=B7(0),i=Df(new Set),a=Df(new Set),s=Df(null),c=Df(null);mJ(()=>{let d=new AbortController;return c.current=d,()=>{d.abort(),s.current&&clearTimeout(s.current)}},[]);let u=L7(async()=>{let d=c.current;if(!e||!d||d.signal.aborted)return;let f=[...a.current].slice(0,hJ);if(f.length){for(let p of f)a.current.delete(p);o(p=>p+1);try{let p=localStorage.getItem("uicopilot_session_token"),g=await J(`${q()}/api/figma/thumbnails`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${p}`},body:JSON.stringify({projectId:e,nodeIds:f})},12e4);if(!g.ok){b.warn(`[useFigmaThumbnails] batch failed (${g.status})`);return}let{thumbnails:m}=await g.json();if(!m||d.signal.aborted)return;let C=u5(e);for(let[v,h]of Object.entries(m))C.set(v,h);n(v=>({...v,...m}))}catch(p){b.warn("[useFigmaThumbnails] batch error",p)}finally{o(p=>Math.max(0,p-1)),a.current.size>0&&(s.current=setTimeout(()=>{u()},D7))}}},[e]),l=L7(d=>{if(!e||!d||i.current.has(d))return;let f=u5(e).get(d);if(f){i.current.add(d),n(p=>p[d]?p:{...p,[d]:f});return}i.current.add(d),a.current.add(d),s.current&&clearTimeout(s.current),s.current=setTimeout(()=>{u()},D7)},[e,u]);return{thumbnails:t,requestThumbnail:l,isRendering:r>0}}import Be,{useState as p5,useEffect as Iu,useMemo as bJ,useCallback as wJ}from"react";import{styled as vJ}from"storybook/theming";Pe();import{useEffect as xJ,useState as yJ}from"react";function N7(e,t=5e3){let[n,r]=yJ(!1);return xJ(()=>{if(!e){r(!1);return}let o=setTimeout(()=>r(!0),t);return()=>clearTimeout(o)},[e,t]),n}var SJ=vJ.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"}})),Dl=({isOpen:e,onClose:t,onSelect:n,projectId:r,stories:o=[],currentStoryId:i,onStoryChange:a,multiSelect:s=!1,onMultiSelect:c,initialSearch:u})=>{let l=gu({projectId:r||"",enabled:e&&!!r}),d=N7(l.isLoading),f=Be.useRef(!1);Iu(()=>{e&&u&&!f.current&&(l.setSearch(u),f.current=!0),e||(f.current=!1)},[e,u]);let[p,g]=p5(new Set),[m,C]=p5(i||o[0]?.id||"");Iu(()=>{i&&C(i)},[i]);let v=50,h=8,[M,L]=p5({}),z=wJ(x=>{L(E=>({...E,[x]:(E[x]||1)+1}))},[]);Iu(()=>{L({})},[l.variantFilters]),Iu(()=>{l.expandedSets.forEach(x=>{let E=l.variantChildren[x];if(!E||E.length===0)return;let w=E;l.variantFilters.some(P=>P.value)&&(w=E.filter(P=>P.variantProperties?l.variantFilters.every(N=>N.value?P.variantProperties?.[N.property]===N.value:!0):!1));let R=M[x]||1,_=w.slice(0,R*v).map(P=>P.id);for(let P=0;P<_.length;P+=h){let N=_.slice(P,P+h),I=P/h*300;I===0?l.fetchVariantThumbnails(x,N):setTimeout(()=>l.fetchVariantThumbnails(x,N),I)}})},[l.expandedSets,l.variantChildren,l.variantFilters,M]),Iu(()=>{g(new Set)},[m]);let A=bJ(()=>{let x=[];return l.filteredFrames.forEach(E=>{if(E.type==="COMPONENT_SET"&&E.children){let w=l.variantFilters.some(R=>R.value)?E.children.filter(R=>R.variantProperties?l.variantFilters.every(_=>_.value?R.variantProperties?.[_.property]===_.value:!0):!1):E.children;x.push(...w)}else x.push(E)}),x},[l.filteredFrames,l.variantFilters]),D=x=>{if(s)g(E=>{let w=new Set(E);return w.has(x.id)?w.delete(x.id):w.add(x.id),w});else{let E=l.resolveThumbnail(x.id);try{n({...x,thumbnail:E})}catch(w){b.error("[ComponentBrowserModal] onSelect threw error:",w)}t()}},y=()=>{let x=A.map(w=>w.id),E=x.every(w=>p.has(w));g(E?new Set:new Set(x))},k=()=>{if(c&&p.size>0){let x=A.filter(E=>p.has(E.id)).map(E=>({...E,thumbnail:l.resolveThumbnail(E.id)}));c(x),g(new Set)}},T=x=>{C(x),a?.(x)},F=x=>{x.target===x.currentTarget&&t()},S=o.find(x=>x.id===m);return e?Be.createElement(a6,{onClick:F},Be.createElement(s6,null,Be.createElement(l6,null,Be.createElement(c6,null,"Link Figma Frames"),Be.createElement("div",{style:{display:"flex",gap:"8px",alignItems:"center"}},Be.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"),Be.createElement(u6,{onClick:t},"\xD7"))),Be.createElement(p6,null,l.error&&Be.createElement(x6,null,l.error),!l.error&&Be.createElement(Be.Fragment,null,o.length>0&&Be.createElement(R6,null,Be.createElement(A6,null,"Story:"),Be.createElement(F6,{value:m,onChange:x=>T(x.target.value)},o.map(x=>Be.createElement("option",{key:x.id,value:x.id},x.name,x.mappingsCount?` (${x.mappingsCount} linked)`:""))),S?.mappingsCount?Be.createElement(M6,{hasMapping:!0},S.mappingsCount," frames linked"):null),Be.createElement(h6,null,Be.createElement(mf,null,Be.createElement("input",{type:"checkbox",checked:l.showComponentSets,onChange:x=>l.setShowComponentSets(x.target.checked)}),"Component Sets"),Be.createElement(mf,null,Be.createElement("input",{type:"checkbox",checked:l.showFrames,onChange:x=>l.setShowFrames(x.target.checked)}),"Frames"),Be.createElement(mf,null,Be.createElement("input",{type:"checkbox",checked:l.showComponents,onChange:x=>l.setShowComponents(x.target.checked)}),"Components"),l.availablePages.length>1&&Be.createElement(Ml,{isActive:!!l.figmaPage,value:l.figmaPage,onChange:x=>l.setFigmaPage(x.target.value),style:{marginLeft:"auto"}},Be.createElement("option",{value:""},"All pages"),l.availablePages.map(x=>Be.createElement("option",{key:x,value:x},x)))),l.filterSuggestion&&Be.createElement(P6,null,Be.createElement(_6,null,"AI suggests:"),Be.createElement(L6,null,Object.entries(l.filterSuggestion.suggestedFilters).map(([x,E])=>`${x}=${E}`).join(", ")),Be.createElement(B6,{onClick:l.applySuggestedFilters},"Apply"),Be.createElement(z6,{onClick:l.dismissFilterSuggestion},"Dismiss")),l.filterSuggestionLoading&&Be.createElement(D6,null,"Matching story args to Figma filters..."),l.availableFilters.length>0&&Be.createElement(xf,null,Be.createElement(xu,null,"Filters:"),l.availableFilters.map(({property:x,values:E})=>{let w=l.variantFilters.find(R=>R.property===x);return Be.createElement(Ml,{key:x,isActive:!!w?.value,value:w?.value||"",onChange:R=>l.handleFilterChange(x,R.target.value)},Be.createElement("option",{value:""},x),E.map(R=>Be.createElement("option",{key:R,value:R},x,"=",R)))}),l.variantFilters.some(x=>x.value)&&Be.createElement(yf,{onClick:l.clearFilters},"Clear All")),l.rateLimitError&&Be.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."),Be.createElement(d6,{type:"text",placeholder:"Search frames...",value:l.search,onChange:x=>l.setSearch(x.target.value),autoFocus:!0}),s&&A.length>0&&Be.createElement(N6,null,Be.createElement(O6,{onClick:y},p.size===A.length?"Deselect All":"Select All Visible"),Be.createElement($6,null,p.size>0?`${p.size} selected of `:"Showing ",A.length," frames")),l.isLoading&&d&&Be.createElement(Ub,null,"Indexing your Figma file for the first time. This walks every page and can take a couple of minutes on a large file \u2014 later loads are cached and open in under a second."),l.isLoading&&Be.createElement(Bb,null,Array.from({length:6}).map((x,E)=>Be.createElement(I6,{key:E},Be.createElement("div",{style:{width:"100%",aspectRatio:"4 / 3"}},Be.createElement(hf,{width:"100%",height:"100%"})),Be.createElement("div",{style:{padding:"12px",display:"flex",flexDirection:"column",gap:"8px"}},Be.createElement(hf,{width:"80%",height:"16px"}),Be.createElement(hf,{width:"50%",height:"12px"}))))),!l.isLoading&&l.filteredFrames.length===0&&Be.createElement(Ub,null,l.search?"No components match your search":"No Figma components found. We index Figma components \u2014 component sets and standalone components. Plain design frames (screens, mockups) aren't included yet \u2014 frame support is planned \u2014 so a file made only of frames will look empty here for now."),!l.isLoading&&l.filteredFrames.length>0&&Be.createElement(Bb,null,l.filteredFrames.map(x=>Be.createElement(yu,{key:x.id,frame:x,thumbnail:l.thumbnails[x.id],thumbnails:l.thumbnails,variantThumbnails:l.variantThumbnails[x.id],variantChildren:l.variantChildren[x.id],variantFailed:l.variantFailed[x.id],isLoadingVariants:l.loadingVariants.has(x.id),isExpanded:l.expandedSets.has(x.id),isNew:l.recentlyAdded.has(x.name),onToggleExpand:l.toggleExpanded,onSelect:D,multiSelect:s,selectedFrames:p,variantFilters:l.variantFilters,variantPage:M[x.id]||1,onShowMore:z})),l.hasMore&&Be.createElement(SJ,{onClick:l.loadMore,disabled:l.loadingMore},l.loadingMore?"Loading...":`Show more (${l.totalFrames-l.frames.length} remaining)`)))),s&&Be.createElement(H6,null,Be.createElement(U6,{disabled:p.size===0,onClick:k},"Link ",p.size," Selected")))):null};Ce();nt();pb();import{addons as Fa}from"storybook/manager-api";function Of(e,t,n){return e>0?"error":t>0||n>0?"warn":"success"}var d5="uireview/badge",jo=nf;function kJ(e){return e.criticalCount>0?"status-value:error":e.majorCount>0||e.minorCount>0?"status-value:warning":"status-value:success"}function CJ(e){return Of(e.criticalCount,e.majorCount,e.minorCount)}function EJ(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 TJ(e){let t=e.criticalCount+e.majorCount;return t>0?`\u2717 ${t} major difference${t>1?"s":""} from design`:e.minorCount>0?`\u26A0 ${e.minorCount} minor difference${e.minorCount>1?"s":""}`:"\u2713 No drift found"}function Aa(){try{let e=localStorage.getItem("uicopilot_feature_flags");return e?!!JSON.parse(e).enableReviewBadges:!1}catch{return!1}}function $7(e){if(Aa())try{Fa.getChannel().emit(jo.REVIEW_START,{storyId:e})}catch{}}function gi(e,t){if(Aa())try{Fa.getChannel().emit(jo.REVIEW_COMPLETE,{storyId:e,summary:t})}catch{}}function H7(e){if(Aa())try{Fa.getChannel().emit(jo.REVIEW_ERROR,{storyId:e})}catch{}}function Ru(e){try{Fa.getChannel().emit(jo.REVIEW_CLEAR,{storyId:e})}catch{}}function U7(){try{Fa.getChannel().emit(jo.REVIEW_RESET,{})}catch{}}function f5(e){try{typeof e.unset=="function"?e.unset():typeof e.set=="function"&&e.set([])}catch{}C3()}var O7=null;function j7(e){if(O7!==null)return;let t=Fa.getChannel(),n=o=>i=>{Aa()&&o(i)};t.on(jo.REVIEW_START,n(({storyId:o})=>{e.set([{value:"status-value:pending",typeId:d5,storyId:o,title:"Reviewing...",description:"AI review in progress"}]),Qi(o,!0),of(o,0)})),t.on(jo.REVIEW_COMPLETE,n(({storyId:o,summary:i})=>{e.set([{value:kJ(i),typeId:d5,storyId:o,title:TJ(i),description:EJ(i)}]),Qi(o,!0),of(o,i.issueCount),pu(o,CJ(i)),typeof i.score=="number"&&sf(o,i.score)})),t.on(jo.REVIEW_ERROR,n(({storyId:o})=>{e.set([{value:"status-value:error",typeId:d5,storyId:o,title:"Review Failed",description:"An error occurred during review"}]),Qi(o,!0),of(o,0),pu(o,"error")})),t.on(jo.REVIEW_CLEAR,({storyId:o})=>{if(o){try{e.unset?.([o])}catch{}E3(o)}else f5(e)}),t.on(jo.REVIEW_RESET,()=>{try{e.unset?.()}catch{}});let r=Aa();r||f5(e),O7=setInterval(()=>{let o=Aa();o!==r&&(r=o,o||f5(e))},1500)}var IJ="uireview/mapped",V7="uireview/mappings-updated";function W7(e){try{Fa.getChannel().emit(V7,{storyIds:e})}catch{}}function G7(e){let t=Fa.getChannel();t.on(jo.REVIEW_CLEAR,({storyId:n})=>{try{n?e.unset?.([n]):e.unset?.()}catch{}}),t.on(V7,({storyIds:n})=>{if(!n.length){try{e.unset?.()}catch{}return}for(let r of n)Qi(r,!1);e.set(n.map(r=>({value:"status-value:success",typeId:IJ,storyId:r,title:"\u{1F517} Linked to Figma (not yet reviewed)",description:"Story has a Figma mapping"})))})}var FJ=Bn.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}),MJ=Bn.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"})),PJ=Bn.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",padding:"16px 20px",borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app})),_J=Bn.div({display:"flex",alignItems:"center",gap:"20px"}),LJ=Bn.h2(({theme:e})=>({fontSize:"16px",fontWeight:600,color:e.color.defaultText,margin:0,display:"flex",alignItems:"center",gap:"8px"})),BJ=Bn.div({display:"flex",gap:"4px"}),Y7=Bn(ha)(({theme:e,active:t})=>({padding:"8px 16px",borderBottom:"none",borderRadius:"6px",backgroundColor:t?e.background.hoverable:"transparent","&:hover":{backgroundColor:e.background.hoverable}})),zJ=Bn(qr)({width:"32px",height:"32px",fontSize:"20px",borderRadius:"6px"}),DJ=Bn.div({flex:1,overflow:"hidden",display:"flex",flexDirection:"column"}),NJ=Bn.div(({theme:e})=>({padding:"12px 20px",borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app,display:"flex",alignItems:"center",justifyContent:"space-between"})),OJ=Bn.div(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,display:"flex",gap:"16px"})),g5=Bn.div({display:"flex",flexDirection:"column",flex:1,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(255, 255, 255, 0.95)",padding:"40px"}),m5=Bn.div({display:"flex",flexDirection:"column",alignItems:"center",gap:"20px",maxWidth:"400px"}),h5=Bn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText,textAlign:"center"})),x5=Bn.div(({theme:e})=>({fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.mediumdark,textAlign:"center"})),K7=Bn.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden"})),X7=Bn.div(({theme:e,pct:t})=>({width:t!=null?`${Math.max(t,4)}%`:"100%",height:"100%",backgroundColor:e.color.secondary,borderRadius:"4px",transition:"width 0.4s ease",animation:"uicopilot-progress-pulse 1.4s ease-in-out infinite","@keyframes uicopilot-progress-pulse":{"0%, 100%":{opacity:.6},"50%":{opacity:1}}})),J7=Bn.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"}})),Q7=Bn.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"}})),$f=({isOpen:e,onClose:t,projectId:n,autoRun:r,autoLink:o,hideWhileRunning:i})=>{let[a,s]=bs("map"),[c,u]=bs([]),[l,d]=bs(!0),[f,p]=bs(null),[g,m]=bs(!1),[C,v]=bs(null),h=AJ(),M=v7({projectId:n}),L=_f({projectId:n}),z=o??L,[A,D]=bs(!1),{refreshMappings:y}=yt(),{featureFlags:k}=ve(),T=zf(),F=Nf(n),S=ho(async()=>{d(!0);try{let Y=await fetch("/index.json");if(!Y.ok)throw new Error("Failed to fetch index.json");let re=await Y.json(),xe=re.entries||re.stories||{},me=Object.entries(xe).filter(([,be])=>be.type==="story").map(([be,fe])=>({id:be,name:fe.name||be.split("--").pop()||be,title:fe.title||"",importPath:fe.importPath,componentTitle:fe.title?.split("/").slice(0,-1).join("/")||fe.title,figmaMapping:null}));try{let be=q(),fe=localStorage.getItem("uicopilot_session_token"),Re=await J(`${be}/api/mappings?projectId=${n}&_t=${Date.now()}`,{headers:{Authorization:`Bearer ${fe}`}});if(Re.ok){let xt=await Re.json(),Pt=new Map((xt.mappings||[]).map(Je=>[Je.storyId,Je]));me.forEach(Je=>{let Qe=Pt.get(Je.id);Qe&&Qe.figmaNodeId&&(Je.figmaMapping={figmaNodeId:Qe.figmaNodeId,figmaFrameName:Qe.name||Qe.figmaFrameName||""})})}}catch(be){console.warn("[StoryMappingAssistant] Failed to fetch mappings (stories still loaded):",be)}u(me);let Xe=me.find(be=>!be.figmaMapping);Xe?p(Xe.id):me.length>0&&p(me[0].id)}catch(Y){console.error("[StoryMappingAssistant] Error fetching stories:",Y)}finally{d(!1)}},[n]);q7(()=>{e&&(S(),z.hydrate())},[e,S,z.hydrate]);let x=ho((Y,re,xe)=>{u(be=>be.map(fe=>fe.id===Y?{...fe,figmaMapping:{figmaNodeId:re,figmaFrameName:xe}}:fe));let me=c.findIndex(be=>be.id===Y),Xe=c.find((be,fe)=>fe>me&&!be.figmaMapping);Xe&&p(Xe.id)},[c]),E=ho(Y=>{u(re=>re.map(xe=>xe.id===Y?{...xe,figmaMapping:null}:xe)),Ru(Y)},[]),w=ho(Y=>{p(Y),s("map")},[]),R=ho(()=>{let Y=c.filter(re=>re.figmaMapping).map(re=>re.id);M.collectAndMap(Y)},[c,M]),_=ho(()=>{let Y=c.filter(re=>re.figmaMapping).map(re=>re.id);m(!1),M.rerun(Y)},[c,M]),P=ho(async(Y,re)=>{await M.applyMappings(Y,re),m(!1),M.reset(),S(),y(),t()},[M,S,y,t]),N=ho(()=>{m(!1),M.reset()},[M]),I=ho(()=>{let Y=c.filter(re=>!re.figmaMapping).map(re=>{let xe=h.getData(re.id);return{id:re.id,name:re.name,title:re.title,args:xe?.initialArgs??{}}});z.run(Y)},[c,z,h]),O=ho(async(Y,re)=>{await M.applyMappings(Y,re),D(!1),z.reset(),S(),y(),t()},[M,z,S,y,t]),j=De.useRef(!1);q7(()=>{!r||j.current||l||c.length===0||(j.current=!0,I())},[r,l,c.length,I]);let B=ho(()=>{D(!1),z.reset()},[z]),se=ho(()=>{D(!1),z.reset(),I()},[z,I]);De.useEffect(()=>{M.results&&m(!0)},[M.results]),De.useEffect(()=>{z.results&&D(!0)},[z.results]);let H=Y=>{Y.target===Y.currentTarget&&t()};if(!e||i&&z.isRunning&&!z.results)return null;let V=c.filter(Y=>Y.figmaMapping).length,Z=c.length;return RJ(De.createElement(De.Fragment,null,De.createElement(FJ,{onClick:H},De.createElement(MJ,{onClick:Y=>Y.stopPropagation()},De.createElement(PJ,null,De.createElement(_J,null,De.createElement(LJ,null,De.createElement("span",null,"\u{1F517}"),"Link Stories to Figma"),De.createElement(BJ,null,De.createElement(Y7,{active:a==="map",onClick:()=>s("map")},"Map Stories"),De.createElement(Y7,{active:a==="view",onClick:()=>s("view")},"View All Mappings"))),De.createElement("div",{style:{display:"flex",alignItems:"center",gap:"12px"}},k.enableAutoMap&&!g&&!M.isCollecting&&!M.isMapping&&De.createElement(J7,{onClick:R,disabled:l||c.length===0},De.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"white",strokeWidth:"2"},De.createElement("path",{d:"M12 2L2 7l10 5 10-5-10-5z"}),De.createElement("path",{d:"M2 17l10 5 10-5"}),De.createElement("path",{d:"M2 12l10 5 10-5"})),"Auto-Map All"),k.enableAutoFigmaLinking&&!g&&!A&&!z.isRunning&&De.createElement(J7,{onClick:I,disabled:l||c.length===0,title:"Match stories to Figma sets by structural spec signatures \u2014 no LLM"},De.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"white",strokeWidth:"2"},De.createElement("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),De.createElement("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})),"Auto-Link (No AI)"),De.createElement(zJ,{onClick:t},"\xD7"))),De.createElement(DJ,null,(M.isCollecting||M.isMapping)&&De.createElement(g5,null,De.createElement(m5,null,De.createElement(K7,null,De.createElement(X7,null)),De.createElement(h5,null,"Auto-mapping stories to Figma"),De.createElement(x5,null,M.progress),De.createElement(fi,{onClick:M.cancel,variant:"ghost"},"Cancel"))),z.isRunning&&(()=>{let Y=z.progressCount,re=Y&&Y.total>0?Math.round(Y.done/Y.total*100):0,xe=Y?.phase==="index",me=Math.floor(z.elapsedMs/1e3),Xe=`${Math.floor(me/60)}:${(me%60).toString().padStart(2,"0")}`,be=Y?.phase==="capturing"?`Capturing story renders (docs batch) \xB7 ${Y.done} of ${Y.total} \xB7 ${re}% \xB7 ${Xe}`:xe?`Building the Figma match index \u2014 reading each variant's design spec from Figma. First run only; on a large library this takes a few minutes. \xB7 ${Xe}`:Y?`Matching stories \xB7 ${Y.done} of ${Y.total} \xB7 ${re}% \xB7 ${Xe}`:z.progress;return De.createElement(g5,null,De.createElement(m5,null,De.createElement(K7,null,De.createElement(X7,{pct:xe?8:re})),De.createElement(h5,null,"Auto-linking stories to Figma (no AI)"),De.createElement(x5,null,be),De.createElement(fi,{onClick:z.cancel,variant:"ghost"},"Cancel")))})(),z.error&&!z.isRunning&&!A&&De.createElement(g5,null,De.createElement(m5,null,De.createElement(h5,null,"Auto-link failed"),De.createElement(x5,null,z.error),De.createElement(fi,{onClick:z.reset,variant:"ghost"},"Dismiss"))),A&&z.results&&De.createElement(a5,{results:z.results,stories:c,onApply:O,onCancel:B,onRerun:se,isRerunning:z.isRunning,isApplying:M.isApplying,source:"deterministic",resolveThumbnail:Y=>F.thumbnails[Y]??z.results?.thumbnailUrls?.[Y],onRequestFigmaThumbnail:F.requestThumbnail,resolveStoryScreenshot:Y=>T.screenshots[Y],isCapturingScreenshots:T.isCapturing,onRequestStoryCapture:T.requestCapture,onBrowse:Y=>v(Y)}),g&&M.results&&De.createElement(a5,{results:M.results,stories:c,onApply:P,onCancel:N,onRerun:_,isApplying:M.isApplying,isRerunning:M.isCollecting||M.isMapping,source:M.source,resolveThumbnail:Y=>F.thumbnails[Y]??M.results?.thumbnailUrls?.[Y],onRequestFigmaThumbnail:F.requestThumbnail,resolveStoryScreenshot:Y=>T.screenshots[Y],isCapturingScreenshots:T.isCapturing,onRequestStoryCapture:T.requestCapture,onBrowse:Y=>v(Y)}),!g&&!A&&!z.isRunning&&!z.error&&!M.isCollecting&&!M.isMapping&&(a==="map"?De.createElement(Z6,{stories:c,loading:l,selectedStoryId:f,onSelectStory:p,onStoryMapped:x,projectId:n}):De.createElement(r7,{stories:c,loading:l,onLink:w,onUnlink:E,onUnlinkAll:()=>{Ru(),S(),y()},projectId:n}))),De.createElement(NJ,null,De.createElement(OJ,null,De.createElement("span",null,"Total: ",Z," stories"),De.createElement(Q7,{type:"mapped"},De.createElement("span",{className:"dot"}),V," mapped"),De.createElement(Q7,{type:"unmapped"},De.createElement("span",{className:"dot"}),Z-V," unmapped"))))),De.createElement(Dl,{isOpen:!!C,onClose:()=>v(null),onSelect:()=>v(null),projectId:n,initialSearch:C||void 0})),document.body)};import Vo,{useEffect as $J,useRef as HJ,useState as UJ}from"react";import{styled as gr}from"storybook/theming";var jJ=gr.div({position:"relative",display:"inline-flex"}),VJ=gr.button(({theme:e,tone:t,minWidth:n,maxWidth:r})=>({display:"inline-flex",alignItems:"center",gap:"8px",height:"26px",padding:"0 10px",border:"none",borderRadius:"6px",background:"transparent",cursor:"pointer",whiteSpace:"nowrap",...n?{minWidth:`${n}px`}:{},justifyContent:"flex-start",maxWidth:`${r??320}px`,overflow:"hidden",fontFamily:e.typography.fonts.base,color:t==="action"?W:t==="error"?e.color.negative:e.color.defaultText,"&:hover":{backgroundColor:e.background.hoverable}})),WJ=gr.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontSize:"10px",letterSpacing:"0.08em",textTransform:"uppercase",color:e.color.mediumdark})),GJ=gr.span(({theme:e})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,overflow:"hidden",textOverflow:"ellipsis"})),qJ=gr.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontSize:"11px",color:e.color.mediumdark})),YJ=gr.span(({tone:e})=>({width:"6px",height:"6px",borderRadius:"50%",backgroundColor:e,flexShrink:0})),KJ=gr.span(({theme:e})=>({width:"10px",height:"10px",border:`2px solid ${e.appBorderColor}`,borderTopColor:W,borderRadius:"50%",display:"inline-block",flexShrink:0,animation:"uicopilot-seg-spin 0.8s linear infinite","@keyframes uicopilot-seg-spin":{to:{transform:"rotate(360deg)"}}})),XJ=gr.span(({theme:e,width:t})=>({width:`${t}px`,height:"5px",borderRadius:"3px",backgroundColor:e.appBorderColor,overflow:"hidden",display:"flex",flexShrink:0})),JJ=gr.span(({pct:e,color:t})=>({width:`${e}%`,backgroundColor:t})),Hf=gr.span(({theme:e})=>({width:"1px",height:"20px",backgroundColor:e.appBorderColor,flexShrink:0})),QJ=gr.div(({theme:e})=>({position:"absolute",top:"30px",left:0,minWidth:"260px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:"0 8px 24px rgba(0,0,0,0.18)",padding:"4px",zIndex:10001})),Uf=gr.div(({theme:e})=>({padding:"8px 10px 4px",fontFamily:e.typography.fonts.base,fontSize:"10px",fontWeight:e.typography.weight.bold,letterSpacing:"0.1em",textTransform:"uppercase",color:e.color.mediumdark})),Wo=gr.div(({theme:e})=>({display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:"12px",padding:"3px 10px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.mediumdark,"& b":{color:e.color.defaultText,fontWeight:e.typography.weight.bold}})),Au=gr.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"7px 10px",border:"none",borderRadius:"6px",background:"transparent",textAlign:"left",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s2,color:e.color.defaultText,cursor:"pointer","&:hover":{backgroundColor:e.background.hoverable},"&:disabled":{opacity:.45,cursor:"not-allowed"}})),y5=gr.div(({theme:e})=>({padding:"6px 10px 8px",fontFamily:e.typography.fonts.base,fontSize:e.typography.size.s1,color:e.color.mediumdark,borderTop:`1px solid ${e.appBorderColor}`,marginTop:"4px",lineHeight:1.5})),jf=gr.div(({theme:e})=>({borderTop:`1px solid ${e.appBorderColor}`,margin:"5px 0 4px"})),Vf=({label:e,value:t,sub:n,dot:r,busy:o,tone:i="idle",bar:a,minWidth:s,maxWidth:c,title:u,children:l})=>{let[d,f]=UJ(!1),p=HJ(null);return $J(()=>{if(!d)return;let g=C=>{p.current?.contains(C.target)||f(!1)},m=C=>{C.key==="Escape"&&f(!1)};return document.addEventListener("mousedown",g),document.addEventListener("keydown",m),()=>{document.removeEventListener("mousedown",g),document.removeEventListener("keydown",m)}},[d]),Vo.createElement(jJ,{ref:p},Vo.createElement(VJ,{tone:i,minWidth:s,maxWidth:c,title:u,onClick:()=>l&&f(g=>!g),"aria-haspopup":l?"menu":void 0,"aria-expanded":l?d:void 0},o?Vo.createElement(KJ,null):r?Vo.createElement(YJ,{tone:r}):null,e&&Vo.createElement(WJ,null,e),a&&Vo.createElement(XJ,{width:a.width??88},a.bands.map((g,m)=>Vo.createElement(JJ,{key:m,pct:g.pct,color:g.color,title:g.title}))),Vo.createElement(GJ,null,t),n&&Vo.createElement(qJ,null,n),l&&Vo.createElement("span",{"aria-hidden":!0},"\u25BE")),d&&l&&Vo.createElement(QJ,{role:"menu",onClick:()=>f(!1)},l))};var tQ=eQ.div({display:"flex",alignItems:"center",gap:"4px",minWidth:0,flexWrap:"wrap",rowGap:"4px"}),eR=({projectId:e,sessionToken:t,totalStories:n})=>{let{status:r,refresh:o}=h3(e,t,n),[i,a]=Fu(null),s=_f({projectId:e??""}),[c,u]=Fu(!1),[l,d]=Fu(!1),[f,p]=Fu(!1),[g,m]=Fu(()=>ka());ZJ(()=>{let S=setInterval(()=>m(ka()),2e3);return()=>clearInterval(S)},[]);let C=Z7(async()=>{if(!(!e||!t)){u(!0);try{await J(`${q()}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({projectId:e})})}catch{}finally{u(!1),o()}}},[e,t,o]),v=Z7(async()=>{if(!(!e||!t)){p(!0);try{await J(`${q()}/api/mappings/batch?projectId=${e}`,{method:"DELETE",headers:{Authorization:`Bearer ${t}`}})}catch{}finally{p(!1),d(!1),o()}}},[e,t,o]);if(!e||!t)return null;let{text:h,tone:M}=x3(r),L=r.crawling||c,z=g.pass+g.warn+g.fail,A=El(z,n)??0,D=El(g.pass,z),y=s.isRunning?s.progressCount:null,k=y&&y.total>0?Math.min(100,Math.round(y.done/y.total*100)):s.isRunning?0:null,T=s.isRunning?`${y?.phase==="capturing"?"capturing":y?.phase==="index"?"indexing":"matching"} ${y?`${y.done}/${y.total}`:""} \xB7 ${Math.floor(s.elapsedMs/6e4)}:${String(Math.floor(s.elapsedMs/1e3)%60).padStart(2,"0")}`:null,F=S=>z>0?S/z*100:0;return _e.createElement(tQ,null,_e.createElement(Hf,null),_e.createElement(Vf,{label:"Figma",value:L||r.errored||!r.connected?h:wb(r.lastSyncAt)??"synced",sub:!L&&r.setsIndexed!=null?`${r.setsIndexed} sets`:void 0,dot:r.errored?pe.red:r.connected?pe.green:W,busy:L,minWidth:170,tone:M==="warn"?"error":M,title:r.error??"Figma sync \u2014 age, contents and actions"},_e.createElement(Uf,null,"Sync"),_e.createElement(Wo,null,_e.createElement("span",null,"Last sync"),_e.createElement("b",null,wb(r.lastSyncAt)??"unknown")),r.setsIndexed!=null&&_e.createElement(Wo,null,_e.createElement("span",null,"Indexed"),_e.createElement("b",null,r.setsIndexed," sets",r.variantsIndexed!=null&&_e.createElement(_e.Fragment,null," \xB7 ",_e.createElement("span",{style:r.variantsIndexed===0?{color:pe.red}:void 0},r.variantsIndexed," variants")))),(r.addedCount!=null||r.removedCount!=null)&&_e.createElement(Wo,null,_e.createElement("span",null,"Since last"),_e.createElement("b",null,`+${r.addedCount??0} \xB7 \u2212${r.removedCount??0}`)),_e.createElement(jf,null),_e.createElement(Au,{onClick:C,disabled:L},"\u27F3 ",L?"Importing\u2026":"Reload from Figma"),r.errored&&r.error&&_e.createElement(y5,null,"\u26A0 ",r.error)),_e.createElement(Hf,null),_e.createElement(Vf,{label:"Coverage",value:k!=null?`${k}%`:`${A}%`,sub:T??(n>0?`${z}/${n}`:void 0),bar:{width:64,bands:[{pct:k??A,color:k!=null?pe.amber:W}]},minWidth:210,title:T?"Auto-map in progress":`${z} of ${n} stories checked against Figma \xB7 ${r.mapped} mapped`},_e.createElement(Uf,null,"Coverage"),_e.createElement(Wo,null,_e.createElement("span",null,"Checked"),_e.createElement("b",null,z,n>0?` / ${n}`:"")),_e.createElement(Wo,null,_e.createElement("span",null,"Mapped"),_e.createElement("b",null,r.mapped,n>0?` / ${n}`:"")),_e.createElement(Wo,null,_e.createElement("span",null,"Unmapped"),_e.createElement("b",null,Math.max(0,n-r.mapped))),_e.createElement(jf,null),_e.createElement(Au,{onClick:()=>a("auto")},"\u26A1 Auto-Map All"),_e.createElement(Au,{onClick:()=>a("browse")},"\u{1F517} Map stories to Figma\u2026"),r.mapped>0&&_e.createElement(_e.Fragment,null,_e.createElement(jf,null),_e.createElement(Au,{onClick:()=>d(!0),style:{color:pe.red}},"\u{1F5D1} Clear all ",r.mapped," mappings"))),_e.createElement(Hf,null),_e.createElement(Vf,{label:"Parity",value:D!=null?`${D}%`:"\u2014",sub:z>0?`${g.pass}/${z}`:"not run yet",bar:{width:96,bands:z>0?[{pct:F(g.pass),color:pe.green,title:`${g.pass} pass`},{pct:F(g.warn),color:pe.amber,title:`${g.warn} warn`},{pct:F(g.fail),color:pe.red,title:`${g.fail} fail`}]:[]},minWidth:215,maxWidth:400,title:"Share of checked stories that match Figma, and the pass / warn / fail split behind it"},_e.createElement(Uf,null,"Parity"),_e.createElement(Wo,null,_e.createElement("span",null,"Match Figma"),_e.createElement("b",null,D!=null?`${g.pass} of ${z} \xB7 ${D}%`:"\u2014")),_e.createElement(Wo,null,_e.createElement("span",null,"Verdicts"),_e.createElement("b",null,_e.createElement("span",{style:{color:pe.green}},g.pass," pass")," \xB7 ",_e.createElement("span",{style:{color:pe.amber}},g.warn," warn")," \xB7 ",_e.createElement("span",{style:{color:pe.red}},g.fail," fail"))),_e.createElement(Wo,null,_e.createElement("span",null,"Reviewed"),_e.createElement("b",null,g.reviewed," of ",g.mapped)),g.incomparable>0&&_e.createElement(Wo,null,_e.createElement("span",null,"No overlap"),_e.createElement("b",null,g.incomparable)),z===0&&_e.createElement(y5,null,"No review has run yet. Map stories to Figma, then Run in the review panel below to populate this.")),_e.createElement(Dr,{isOpen:l,title:"Clear all mappings?",message:`This removes all ${r.mapped} story-to-Figma mappings in this project. Auto-Map can recreate them, but any mapping you set by hand will be lost.`,confirmLabel:f?"Clearing\u2026":"Clear all",variant:"danger",onConfirm:v,onCancel:()=>d(!1)}),i&&_e.createElement($f,{isOpen:!0,autoRun:i==="auto",onClose:()=>{a(null),o()},projectId:e,autoLink:s,hideWhileRunning:i==="auto"}))};Me();nt();pn();var rQ=Mn.div({display:"flex",alignItems:"center",justifyContent:"space-between",width:"100%",gap:"8px"}),oQ=Mn.div({display:"inline-flex",alignItems:"center",gap:"6px",minWidth:0,flex:"1 1 auto",userSelect:"none"}),iQ=Mn.span(({theme:e})=>({width:"20px",height:"20px",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:"5px",background:`linear-gradient(135deg, ${C0} 0%, ${W} 100%)`,color:e.color.lightest,fontSize:"11px",fontWeight:900,letterSpacing:"-0.5px",boxShadow:"0 1px 2px rgba(0,0,0,0.15)"})),aQ=Mn.span(({theme:e})=>({fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,letterSpacing:"-0.2px",color:e.color.defaultText})),sQ=Mn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:e.color.mediumdark,opacity:.8,marginLeft:"2px"})),lQ=Mn.div({display:"flex",alignItems:"center",gap:"6px",flexShrink:0}),cQ=Mn.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"4px",padding:"2px 8px",borderRadius:"999px",fontSize:"10px",fontWeight:e.typography.weight.bold,lineHeight:1.6,color:e.color.mediumdark,backgroundColor:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,userSelect:"none",cursor:"default","& svg":{width:"11px",height:"11px"}})),uQ=Mn.div({position:"relative"}),pQ=Mn.button(({theme:e})=>({width:"22px",height:"22px",padding:0,background:e.background.app,border:`1px solid ${e.appBorderColor}`,borderRadius:"50%",color:e.color.defaultText,cursor:"pointer",fontSize:"10px",fontWeight:600,display:"flex",alignItems:"center",justifyContent:"center",transition:"all 0.2s","&:hover":{backgroundColor:e.background.hoverable}})),dQ=Mn.div(({theme:e})=>({position:"absolute",top:"calc(100% + 6px)",right:0,minWidth:"220px",backgroundColor:e.background.content,border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius,boxShadow:"0 8px 24px rgba(0,0,0,0.14)",zIndex:1e3,overflow:"hidden",padding:"4px"})),fQ=Mn.div(({theme:e})=>({padding:"8px 10px 10px",borderBottom:`1px solid ${e.appBorderColor}`,marginBottom:"4px"})),gQ=Mn.div(({theme:e})=>({fontSize:e.typography.size.s2,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),mQ=Mn.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",marginTop:"2px"})),w5=Mn.button(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",width:"100%",padding:"7px 10px",border:"none",borderRadius:e.appBorderRadius,background:"transparent",color:e.color.defaultText,fontSize:e.typography.size.s2,textAlign:"left",cursor:"pointer",transition:"background 0.12s","&:hover":{backgroundColor:e.background.hoverable}})),hQ=Mn.div(({theme:e})=>({height:"1px",margin:"4px 0",backgroundColor:e.appBorderColor})),tR=Mn.button(({theme:e,isLow:t})=>({display:"flex",alignItems:"center",gap:"6px",padding:"4px 8px",background:"transparent",border:"none",borderRadius:e.appBorderRadius,color:t?e.color.warning:pe.green,cursor:"pointer",fontFamily:e.typography.fonts.mono,fontSize:"11px",fontWeight:e.typography.weight.bold,transition:"background 0.15s","&:hover":{backgroundColor:e.background.hoverable}})),nR=Mn.span(({theme:e,isLow:t})=>({width:"6px",height:"6px",borderRadius:"50%",flexShrink:0,backgroundColor:t?e.color.warning:pe.green})),xQ=Mn.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)"}}}),yQ=Mn.button(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"center",width:"28px",height:"28px",border:"none",borderRadius:e.appBorderRadius,backgroundColor:"transparent",color:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","& svg":{width:"14px",height:"14px"},"&:hover":{backgroundColor:e.background.hoverable,color:e.color.defaultText}})),bQ=Mn.button({position:"fixed",bottom:"20px",right:"20px",width:"48px",height:"48px",borderRadius:"50%",backgroundColor:W,color:"white",border:"none",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"22px",cursor:"pointer",boxShadow:`0 4px 14px ${W}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 ${W}88, 0 3px 6px rgba(0,0,0,0.15)`},"&:active":{transform:"scale(0.96)"}}),wQ=30*1e3,v5=({onOpenSettings:e})=>{let[t,n]=Mu(!1),[r,o]=Mu(!1),[i,a]=Mu(!1),[s,c]=Mu(!1),u=nQ(null),{selectedProjectId:l}=We(),[d,f]=Mu(()=>Cl());Wf(()=>{let w=setInterval(()=>f(Cl()),3e3);return()=>clearInterval(w)},[]);let{usageData:p,usageLastFetched:g,setUsageData:m,sessionToken:C,resetAuth:v}=we(),{userRole:h,roleOverride:M,featureFlags:L}=ve(),z=M??h,A=!!C&&C.startsWith("uic_anon_"),D=z==="admin"||!!L.enableAiReview;Wf(()=>{(async()=>{if(!(!C||g&&Date.now()-g<wQ&&p)){c(!0);try{let _=q(),P=await J(`${_}/api/addon/account`,{headers:{Authorization:`Bearer ${C}`}});if(P.ok){let N=await P.json();m(N)}}catch(_){console.error("Failed to fetch balance:",_)}finally{c(!1)}}})()},[C,g,p,m]),Wf(()=>{let w=()=>{document.visibilityState==="visible"&&t&&n(!1)},R=()=>{t&&n(!1)};return document.addEventListener("visibilitychange",w),window.addEventListener("focus",R),()=>{document.removeEventListener("visibilitychange",w),window.removeEventListener("focus",R)}},[t]),Wf(()=>{if(!i)return;let w=_=>{u.current&&!u.current.contains(_.target)&&a(!1)},R=_=>{_.key==="Escape"&&a(!1)};return document.addEventListener("mousedown",w),document.addEventListener("keydown",R),()=>{document.removeEventListener("mousedown",w),document.removeEventListener("keydown",R)}},[i]);let y=b5(()=>{n(!0)},[]),k=b5(()=>{n(!1)},[]),T=b5(async()=>{if(a(!1),C)try{await fetch(`${q()}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${C}`}})}catch{}v()},[C,v]),F=p?.creditBalance??0,S=F<2&&!s,x=p?.email,E=(()=>{if(!x)return"?";let w=x.split("@")[0],R=w.split(/[^a-zA-Z0-9]+/).filter(Boolean);return R.length>=2?(R[0][0]+R[1][0]).toUpperCase():w.slice(0,2).toUpperCase()})();return St.createElement(rQ,null,St.createElement(oQ,null,St.createElement(iQ,{"aria-hidden":!0},"\u21CB"),St.createElement(aQ,null,Kt.NAME),St.createElement(sQ,null,"v","0.20.1"),St.createElement(eR,{projectId:l??null,sessionToken:C??null,totalStories:d})),St.createElement(lQ,null,A&&St.createElement(cQ,{title:"Guest session \u2014 sign up to save your work"},St.createElement("span",{"aria-hidden":!0},St.createElement(Rc,null)),"Guest"),C&&h==="admin"&&z==="admin"&&St.createElement(u3,null),C&&L.showCosts&&D&&St.createElement(tR,{onClick:y,isLow:S,title:s?"Loading...":p?S?"Low balance - click to top up":"Credit balance - click for details":"Click to load balance"},s?St.createElement(xQ,null):p?St.createElement(St.Fragment,null,St.createElement(nR,{isLow:S}),"$",F.toFixed(2)):"..."),C&&!L.showCosts&&p&&D&&St.createElement(tR,{onClick:y,isLow:Math.floor(F)<=3,title:`${Math.floor(F)} review credits \u2014 click for details`},St.createElement(nR,{isLow:Math.floor(F)<=3}),Math.floor(F)),e&&C&&St.createElement(yQ,{onClick:e,title:"Settings","aria-label":"Settings"},St.createElement(P0,null)),!A&&St.createElement(uQ,{ref:u},St.createElement(pQ,{title:"Account","aria-label":"Account",onClick:()=>a(w=>!w)},E),i&&St.createElement(dQ,{role:"menu"},St.createElement(fQ,null,St.createElement(gQ,null,x||"Account"),p?.plan&&St.createElement(mQ,null,p.plan," plan")),St.createElement(w5,{role:"menuitem",onClick:()=>{a(!1),y()}},St.createElement("span",{"aria-hidden":!0},St.createElement(Rc,null))," ","Account & usage"),e&&St.createElement(w5,{role:"menuitem",onClick:()=>{a(!1),e()}},St.createElement("span",{"aria-hidden":!0},St.createElement(P0,null))," ","Settings"),St.createElement(hQ,null),St.createElement(w5,{role:"menuitem",onClick:T},"Sign out")),t&&St.createElement(l3,{onClose:k}))),C&&St.createElement(bQ,{onClick:()=>o(!0),title:"Send feedback","aria-label":"Send feedback"},"\u{1F4AC}"),St.createElement(f3,{isOpen:r,onClose:()=>o(!1)}))};import Ue,{useEffect as hne,useRef as Ag,useState as xne}from"react";import mr from"react";Ce();Pe();Me();nt();pn();import{useState as iR,useCallback as Go,useRef as aR,useEffect as S5}from"react";Me();nt();var vQ=q(),Nl=null;function rR(e){Nl=e}async function oR(e){if(!Nl||!e||e===Nl||e.startsWith("uic_anon_"))return null;let t=Nl;Nl=null;try{let n=await J(`${vQ}/api/anonymous/claim`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`},body:JSON.stringify({anonymousToken:t})});if(!n.ok)throw new Error(`claim failed: ${n.status}`);let r=await n.json().catch(()=>({}));return typeof r?.claimedProjects=="number"?r.claimedProjects:0}catch(n){throw Nl=t,n}}var xo=q();b.debug("[useAuth] Module loaded, APP_URL:",xo);var Gf=null,qf=null,Pu=null;function _u(){Gf&&(clearInterval(Gf),Gf=null),qf&&(clearTimeout(qf),qf=null)}var qo=()=>{let e=aR(null),t=aR(null),n=Go(()=>{t.current&&(clearTimeout(t.current),t.current=null)},[]),{sessionToken:r,apiKey:o,authMethod:i,deviceCode:a,userCode:s,verificationUri:c,isConnected:u,authError:l,setSessionToken:d,setApiKey:f,setAuthMethod:p,setDeviceCode:g,setUserCode:m,setVerificationUri:C,setPollingInterval:v,setAuthError:h,resetAuth:M}=we(),[L,z]=iR(!1),[A,D]=iR(!1),y=Go(()=>{_u(),Pu=null},[]),k=Go(P=>{Pu=P,_u();let N=async()=>{let I=Pu;if(!I){_u();return}try{let j=await(await fetch(`${xo}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:I})})).json();j.status==="authorized"&&j.session_token?(b.debug("[useAuth] \u2705 OAuth poll successful! Got token."),_u(),n(),Pu=null,localStorage.setItem("uicopilot_session_token",j.session_token),d(j.session_token),z(!1)):j.status==="expired"&&(b.debug("[useAuth] OAuth poll_code expired"),_u(),n(),Pu=null,z(!1))}catch(O){b.error("[useAuth] OAuth poll error:",O)}};Gf=setInterval(N,2e3),qf=setTimeout(N,1e3)},[d,n]);S5(()=>{function P(N){if(!N.origin.startsWith(xo))return;let I=N.data;if(!I||typeof I!="object")return;let O=I;if(O.type==="UICOPILOT_AUTH_ERROR"){b.debug("[useAuth] Popup reported auth error:",O.step,O.detail),y(),z(!1);let j=typeof O.step=="string"?O.step:"auth",B=typeof O.detail=="string"?O.detail:"Unknown error";h(`${Kt.NAME} auth failed (${j}): ${B}`)}else O.type==="UICOPILOT_AUTH_POLL_CODE"&&typeof O.pollCode=="string"&&O.pollCode&&(b.debug("[useAuth] Popup handed us a fresh poll_code, switching"),h(null),k(O.pollCode))}return window.addEventListener("message",P),()=>window.removeEventListener("message",P)},[k,y,h]);let T=Go(async()=>{let I=Math.max(0,Math.round((window.screen.width-480)/2)),O=Math.max(0,Math.round((window.screen.height-640)/2)),j=`width=480,height=640,left=${I},top=${O},resizable=yes,scrollbars=yes`,B=null;try{B=window.open("about:blank","uiparity-signin",j)}catch{}try{b.debug("[useAuth] Starting OAuth flow, requesting poll_code...");let se;try{se=await J(`${xo}/api/addon/auth/oauth-poll`,{method:"POST"})}catch(Y){let xe=Y instanceof Error&&Y.message.includes("timed out")?`Cannot reach ${Kt.NAME} server at ${xo}. Is the dashboard running?`:`Connection failed: ${xo} is not responding.`;h(xe),b.error("[useAuth]",xe),B?.close();return}if(!se.ok){let Y=`Cannot reach ${Kt.NAME} server. Is the dashboard running?`;h(Y),b.error("[useAuth]",Y),B?.close();return}let{poll_code:H}=await se.json();b.debug("[useAuth] Got poll_code:",H.substring(0,15)+"...");let V=localStorage.getItem("uicopilot_force_sign_in")==="true";V&&localStorage.removeItem("uicopilot_force_sign_in");let Z=`${xo}/addon/auth?poll_code=${H}${V?"&force_sign_in=true":""}`;z(!0),B&&!B.closed?B.location.href=Z:window.open(Z,"uiparity-signin",j),n(),t.current=setTimeout(()=>{z(!1),y()},9e4),b.debug("[useAuth] Starting OAuth poll for token..."),k(H)}catch(se){b.error("[useAuth] OAuth flow error:",se),h(`Connection failed. Is the dashboard running at ${xo}?`),z(!1),B?.close()}},[h,k,n,y]),F=Go(async()=>{try{let P=await fetch(`${xo}/api/addon/auth/device`,{method:"POST"});if(!P.ok)throw new Error("Failed to start device code flow");let N=await P.json();g(N.device_code),m(N.user_code),C(N.verification_uri),window.open(N.verification_uri,"_blank"),S(N.device_code,N.interval*1e3)}catch(P){throw b.error("[useAuth] Device code flow error:",P),P}},[g,m,C]),S=Go((P,N)=>{b.debug("[useAuth] Starting polling. Device code:",P,"Interval:",N),e.current&&clearInterval(e.current);let I=async()=>{try{let j=await(await fetch(`${xo}/api/addon/auth/poll`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({device_code:P})})).json();j.status==="authorized"?(b.debug("[useAuth] Device code authorization successful!"),e.current&&(clearInterval(e.current),e.current=null),g(null),m(null),C(null),localStorage.setItem("uicopilot_session_token",j.session_token),d(j.session_token),z(!1)):(j.status==="expired"||j.status==="denied")&&(b.debug("[useAuth] Device code expired or denied"),e.current&&(clearInterval(e.current),e.current=null),g(null),m(null),C(null))}catch(O){b.error("[useAuth] Polling error:",O)}};e.current=setInterval(I,N),v(N)},[g,m,C,d,v]),x=Go(()=>{e.current&&(clearInterval(e.current),e.current=null),g(null),m(null),C(null),v(null)},[g,m,C,v]),E=Go(P=>{f(P),d(P),localStorage.setItem("uicopilot_api_key",P)},[f,d]),w=Go(async()=>{if(r)try{await J(`${xo}/api/addon/auth/sign-out`,{method:"POST",headers:{Authorization:`Bearer ${r}`}})}catch{}M(),z(!1),e.current&&(clearInterval(e.current),e.current=null),y()},[r,M,y]),R=Go(async()=>{D(!0),h(null);try{let P=await J(`${xo}/api/anonymous/session`,{method:"POST"});if(!P.ok)throw new Error(`anonymous session ${P.status}`);let N=await P.json();if(!N?.token)throw new Error("anonymous session: no token");d(N.token)}catch{h("Couldn't start a guest session. Please try again.")}finally{D(!1)}},[d,h]),_=Go(()=>{r&&r.startsWith("uic_anon_")&&(rR(r),typeof localStorage<"u"&&localStorage.removeItem("uicopilot_force_sign_in")),T()},[r,T]);return S5(()=>{!r||r.startsWith("uic_anon_")||oR(r).then(P=>{P!==null&&b.info(`[useAuth] Guest work claimed (${P} project${P===1?"":"s"}).`)}).catch(P=>{b.error("[useAuth] Guest claim failed:",P)})},[r]),S5(()=>()=>{e.current&&clearInterval(e.current),n()},[n]),{sessionToken:r,apiKey:o,authMethod:i,deviceCode:a,userCode:s,verificationUri:c,isConnected:u,authError:l,oauthPending:L,anonPending:A,isAnonymous:!!r&&r.startsWith("uic_anon_"),setAuthMethod:p,startOAuth:T,startAnonymous:R,signUpToSave:_,startDeviceCode:F,cancelDeviceCode:x,saveApiKey:E,logout:w}};Ce();Pe();Me();nt();import{useCallback as Yf}from"react";var Lu=q(),wr=()=>{let{projects:e,selectedProjectId:t,loadingProjects:n,setProjects:r,setSelectedProjectId:o,setLoadingProjects:i,getSelectedProject:a}=We(),{sessionToken:s}=we(),c=Yf(async()=>{if(!s){b.debug("[useProjects] No session token, skipping fetch");return}try{i(!0),b.debug("[useProjects] Fetching from:",`${Lu}/api/projects`);let f=await J(`${Lu}/api/projects`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`}});if(f.ok){let p=await f.json();b.debug("[useProjects] Projects:",p.projects),r(p.projects||[])}else b.error("[useProjects] Failed to fetch projects:",f.status,f.statusText)}catch(f){b.error("[useProjects] Error fetching projects:",f)}finally{i(!1)}},[s,r,i]),u=Yf(async f=>{if(!s)throw new Error("Not authenticated");let p=await J(`${Lu}/api/projects`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(f)});if(!p.ok)throw new Error("Failed to create project");let g=await p.json();return await c(),g.project},[s,c]),l=Yf(async(f,p)=>{if(!s)throw new Error("Not authenticated");let g={};if(p.name!==void 0&&(g.name=p.name),p.description!==void 0&&(g.description=p.description),p.figmaFileUrl!==void 0&&(g.figmaFileId=p.figmaFileUrl===""?null:p.figmaFileUrl),!(await J(`${Lu}/api/projects/${f}`,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s}`},body:JSON.stringify(g)})).ok)throw new Error("Failed to update project");await c()},[s,c]),d=Yf(async f=>{if(!s)throw new Error("Not authenticated");if(!(await J(`${Lu}/api/projects/${f}`,{method:"DELETE",headers:{Authorization:`Bearer ${s}`}})).ok)throw new Error("Failed to delete project");await c(),t===f&&o(null)},[s,t,c,o]);return{projects:e,selectedProjectId:t,selectedProject:a(),loadingProjects:n,setSelectedProjectId:o,fetchProjects:c,createProject:u,updateProject:l,deleteProject:d}};Ce();var Bu=()=>{let{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:a,setFigmaFileUrl:s,setCurrentMapping:c,setMappingSource:u,setLoadingMapping:l,setShowFigmaQuality:d}=yt();return{showComponentBrowser:e,figmaFileUrl:t,currentMapping:n,mappingSource:r,loadingMapping:o,showFigmaQuality:i,setShowComponentBrowser:a,setFigmaFileUrl:s,setCurrentMapping:c,setMappingSource:u,setLoadingMapping:l,setShowFigmaQuality:d,openComponentBrowser:()=>a(!0),closeComponentBrowser:()=>a(!1)}};Ce();Ab();Bl();import{useCallback as $u,useRef as ng}from"react";Pe();function Kf(){return new Promise(e=>{let t=document.getElementById("storybook-preview-iframe");if(!t||!t.contentWindow){b.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();b.debug("[iframeReload] Triggering cache-busted reload:",o);let i=setTimeout(()=>{b.warn("[iframeReload] Iframe reload timed out after 5s"),t.removeEventListener("load",a),e()},5e3),a=()=>{clearTimeout(i),t.removeEventListener("load",a),b.debug("[iframeReload] Iframe loaded, waiting for HMR and styles to settle..."),setTimeout(()=>{b.debug("[iframeReload] Iframe reloaded and styles should be fresh"),e()},2e3)};t.addEventListener("load",a),t.contentWindow.location.href=o})}function Xf(e){return e&&e!=="admin"?{"X-UIC-Role-Preview":e}:{}}var Jf=BigInt(4294967295),sR=BigInt(32);function SQ(e,t=!1){return t?{h:Number(e&Jf),l:Number(e>>sR&Jf)}:{h:Number(e>>sR&Jf)|0,l:Number(e&Jf)|0}}function lR(e,t=!1){let n=e.length,r=new Uint32Array(n),o=new Uint32Array(n);for(let i=0;i<n;i++){let{h:a,l:s}=SQ(e[i],t);[r[i],o[i]]=[a,s]}return[r,o]}var cR=(e,t,n)=>e<<n|t>>>32-n,uR=(e,t,n)=>t<<n|e>>>32-n,pR=(e,t,n)=>t<<n-32|e>>>64-n,dR=(e,t,n)=>e<<n-32|t>>>64-n;function kQ(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function k5(e,t=""){if(!Number.isSafeInteger(e)||e<0){let n=t&&`"${t}" `;throw new Error(`${n}expected integer >= 0, got ${e}`)}}function Qf(e,t,n=""){let r=kQ(e),o=e?.length,i=t!==void 0;if(!r||i&&o!==t){let a=n&&`"${n}" `,s=i?` of length ${t}`:"",c=r?`length=${o}`:`type=${typeof e}`;throw new Error(a+"expected Uint8Array"+s+", got "+c)}return e}function C5(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 fR(e,t){Qf(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 gR(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function E5(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}var CQ=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function EQ(e){return e<<24&4278190080|e<<8&16711680|e>>>8&65280|e>>>24&255}function TQ(e){for(let t=0;t<e.length;t++)e[t]=EQ(e[t]);return e}var T5=CQ?e=>e:TQ;function mR(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 hR=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});var IQ=BigInt(0),zu=BigInt(1),RQ=BigInt(2),AQ=BigInt(7),FQ=BigInt(256),MQ=BigInt(113),bR=[],wR=[],vR=[];for(let e=0,t=zu,n=1,r=0;e<24;e++){[n,r]=[r,(2*n+3*r)%5],bR.push(2*(5*r+n)),wR.push((e+1)*(e+2)/2%64);let o=IQ;for(let i=0;i<7;i++)t=(t<<zu^(t>>AQ)*MQ)%FQ,t&RQ&&(o^=zu<<(zu<<BigInt(i))-zu);vR.push(o)}var SR=lR(vR,!0),PQ=SR[0],_Q=SR[1],xR=(e,t,n)=>n>32?pR(e,t,n):cR(e,t,n),yR=(e,t,n)=>n>32?dR(e,t,n):uR(e,t,n);function LQ(e,t=24){let n=new Uint32Array(10);for(let r=24-t;r<24;r++){for(let a=0;a<10;a++)n[a]=e[a]^e[a+10]^e[a+20]^e[a+30]^e[a+40];for(let a=0;a<10;a+=2){let s=(a+8)%10,c=(a+2)%10,u=n[c],l=n[c+1],d=xR(u,l,1)^n[s],f=yR(u,l,1)^n[s+1];for(let p=0;p<50;p+=10)e[a+p]^=d,e[a+p+1]^=f}let o=e[2],i=e[3];for(let a=0;a<24;a++){let s=wR[a],c=xR(o,i,s),u=yR(o,i,s),l=bR[a];o=e[l],i=e[l+1],e[l]=c,e[l+1]=u}for(let a=0;a<50;a+=10){for(let s=0;s<10;s++)n[s]=e[a+s];for(let s=0;s<10;s++)e[a+s]^=~n[(s+2)%10]&n[(s+4)%10]}e[0]^=PQ[r],e[1]^=_Q[r]}E5(n)}var I5=class e{constructor(t,n,r,o=!1,i=24){so(this,"state");so(this,"pos",0);so(this,"posOut",0);so(this,"finished",!1);so(this,"state32");so(this,"destroyed",!1);so(this,"blockLen");so(this,"suffix");so(this,"outputLen");so(this,"enableXOF",!1);so(this,"rounds");if(this.blockLen=t,this.suffix=n,this.outputLen=r,this.enableXOF=o,this.rounds=i,k5(r,"outputLen"),!(0<t&&t<200))throw new Error("only keccak-f1600 function is supported");this.state=new Uint8Array(200),this.state32=gR(this.state)}clone(){return this._cloneInto()}keccak(){T5(this.state32),LQ(this.state32,this.rounds),T5(this.state32),this.posOut=0,this.pos=0}update(t){C5(this),Qf(t);let{blockLen:n,state:r}=this,o=t.length;for(let i=0;i<o;){let a=Math.min(n-this.pos,o-i);for(let s=0;s<a;s++)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){C5(this,!1),Qf(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 a=Math.min(r-this.posOut,i-o);t.set(n.subarray(this.posOut,this.posOut+a),o),this.posOut+=a,o+=a}return t}xofInto(t){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(t)}xof(t){return k5(t),this.xofInto(new Uint8Array(t))}digestInto(t){if(fR(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,E5(this.state)}_cloneInto(t){let{blockLen:n,suffix:r,outputLen:o,rounds:i,enableXOF:a}=this;return t||(t=new e(n,r,o,a,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=a,t.destroyed=this.destroyed,t}},BQ=(e,t,n,r={})=>mR(()=>new I5(t,e,n),r);var kR=BQ(6,72,64,hR(10));var zQ=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,R5=Math.ceil,bo=Math.floor,$r="[BigNumber Error] ",CR=$r+"Number primitive has more than 15 significant digits: ",Yo=1e14,lt=14,A5=9007199254740991,F5=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Ma=1e7,Jn=1e9;function ER(e){var t,n,r,o=h.prototype={constructor:h,toString:null,valueOf:null},i=new h(1),a=20,s=4,c=-7,u=21,l=-1e7,d=1e7,f=!1,p=1,g=0,m={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:"\xA0",suffix:""},C="0123456789abcdefghijklmnopqrstuvwxyz",v=!0;function h(y,k){var T,F,S,x,E,w,R,_,P=this;if(!(P instanceof h))return new h(y,k);if(k==null){if(y&&y._isBigNumber===!0){P.s=y.s,!y.c||y.e>d?P.c=P.e=null:y.e<l?P.c=[P.e=0]:(P.e=y.e,P.c=y.c.slice());return}if((w=typeof y=="number")&&y*0==0){if(P.s=1/y<0?(y=-y,-1):1,y===~~y){for(x=0,E=y;E>=10;E/=10,x++);x>d?P.c=P.e=null:(P.e=x,P.c=[y]);return}_=String(y)}else{if(!zQ.test(_=String(y)))return r(P,_,w);P.s=_.charCodeAt(0)==45?(_=_.slice(1),-1):1}(x=_.indexOf("."))>-1&&(_=_.replace(".","")),(E=_.search(/e/i))>0?(x<0&&(x=E),x+=+_.slice(E+1),_=_.substring(0,E)):x<0&&(x=_.length)}else{if(hn(k,2,C.length,"Base"),k==10&&v)return P=new h(y),A(P,a+P.e+1,s);if(_=String(y),w=typeof y=="number"){if(y*0!=0)return r(P,_,w,k);if(P.s=1/y<0?(_=_.slice(1),-1):1,h.DEBUG&&_.replace(/^0\.0*|\./,"").length>15)throw Error(CR+y)}else P.s=_.charCodeAt(0)===45?(_=_.slice(1),-1):1;for(T=C.slice(0,k),x=E=0,R=_.length;E<R;E++)if(T.indexOf(F=_.charAt(E))<0){if(F=="."){if(E>x){x=R;continue}}else if(!S&&(_==_.toUpperCase()&&(_=_.toLowerCase())||_==_.toLowerCase()&&(_=_.toUpperCase()))){S=!0,E=-1,x=0;continue}return r(P,String(y),w,k)}w=!1,_=n(_,k,10,P.s),(x=_.indexOf("."))>-1?_=_.replace(".",""):x=_.length}for(E=0;_.charCodeAt(E)===48;E++);for(R=_.length;_.charCodeAt(--R)===48;);if(_=_.slice(E,++R)){if(R-=E,w&&h.DEBUG&&R>15&&(y>A5||y!==bo(y)))throw Error(CR+P.s*y);if((x=x-E-1)>d)P.c=P.e=null;else if(x<l)P.c=[P.e=0];else{if(P.e=x,P.c=[],E=(x+1)%lt,x<0&&(E+=lt),E<R){for(E&&P.c.push(+_.slice(0,E)),R-=lt;E<R;)P.c.push(+_.slice(E,E+=lt));E=lt-(_=_.slice(E)).length}else E-=R;for(;E--;_+="0");P.c.push(+_)}}else P.c=[P.e=0]}h.clone=ER,h.ROUND_UP=0,h.ROUND_DOWN=1,h.ROUND_CEIL=2,h.ROUND_FLOOR=3,h.ROUND_HALF_UP=4,h.ROUND_HALF_DOWN=5,h.ROUND_HALF_EVEN=6,h.ROUND_HALF_CEIL=7,h.ROUND_HALF_FLOOR=8,h.EUCLID=9,h.config=h.set=function(y){var k,T;if(y!=null)if(typeof y=="object"){if(y.hasOwnProperty(k="DECIMAL_PLACES")&&(T=y[k],hn(T,0,Jn,k),a=T),y.hasOwnProperty(k="ROUNDING_MODE")&&(T=y[k],hn(T,0,8,k),s=T),y.hasOwnProperty(k="EXPONENTIAL_AT")&&(T=y[k],T&&T.pop?(hn(T[0],-Jn,0,k),hn(T[1],0,Jn,k),c=T[0],u=T[1]):(hn(T,-Jn,Jn,k),c=-(u=T<0?-T:T))),y.hasOwnProperty(k="RANGE"))if(T=y[k],T&&T.pop)hn(T[0],-Jn,-1,k),hn(T[1],1,Jn,k),l=T[0],d=T[1];else if(hn(T,-Jn,Jn,k),T)l=-(d=T<0?-T:T);else throw Error($r+k+" cannot be zero: "+T);if(y.hasOwnProperty(k="CRYPTO"))if(T=y[k],T===!!T)if(T)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))f=T;else throw f=!T,Error($r+"crypto unavailable");else f=T;else throw Error($r+k+" not true or false: "+T);if(y.hasOwnProperty(k="MODULO_MODE")&&(T=y[k],hn(T,0,9,k),p=T),y.hasOwnProperty(k="POW_PRECISION")&&(T=y[k],hn(T,0,Jn,k),g=T),y.hasOwnProperty(k="FORMAT"))if(T=y[k],typeof T=="object")m=T;else throw Error($r+k+" not an object: "+T);if(y.hasOwnProperty(k="ALPHABET"))if(T=y[k],typeof T=="string"&&!/^.?$|[+\-.\s]|(.).*\1/.test(T))v=T.slice(0,10)=="0123456789",C=T;else throw Error($r+k+" invalid: "+T)}else throw Error($r+"Object expected: "+y);return{DECIMAL_PLACES:a,ROUNDING_MODE:s,EXPONENTIAL_AT:[c,u],RANGE:[l,d],CRYPTO:f,MODULO_MODE:p,POW_PRECISION:g,FORMAT:m,ALPHABET:C}},h.isBigNumber=function(y){if(!y||y._isBigNumber!==!0)return!1;if(!h.DEBUG)return!0;var k,T,F=y.c,S=y.e,x=y.s;e:if({}.toString.call(F)=="[object Array]"){if((x===1||x===-1)&&S>=-Jn&&S<=Jn&&S===bo(S)){if(F[0]===0){if(S===0&&F.length===1)return!0;break e}if(k=(S+1)%lt,k<1&&(k+=lt),String(F[0]).length==k){for(k=0;k<F.length;k++)if(T=F[k],T<0||T>=Yo||T!==bo(T))break e;if(T!==0)return!0}}}else if(F===null&&S===null&&(x===null||x===1||x===-1))return!0;throw Error($r+"Invalid BigNumber: "+y)},h.maximum=h.max=function(){return L(arguments,-1)},h.minimum=h.min=function(){return L(arguments,1)},h.random=(function(){var y=9007199254740992,k=Math.random()*y&2097151?function(){return bo(Math.random()*y)}:function(){return(Math.random()*1073741824|0)*8388608+(Math.random()*8388608|0)};return function(T){var F,S,x,E,w,R=0,_=[],P=new h(i);if(T==null?T=a:hn(T,0,Jn),E=R5(T/lt),f)if(crypto.getRandomValues){for(F=crypto.getRandomValues(new Uint32Array(E*=2));R<E;)w=F[R]*131072+(F[R+1]>>>11),w>=9e15?(S=crypto.getRandomValues(new Uint32Array(2)),F[R]=S[0],F[R+1]=S[1]):(_.push(w%1e14),R+=2);R=E/2}else if(crypto.randomBytes){for(F=crypto.randomBytes(E*=7);R<E;)w=(F[R]&31)*281474976710656+F[R+1]*1099511627776+F[R+2]*4294967296+F[R+3]*16777216+(F[R+4]<<16)+(F[R+5]<<8)+F[R+6],w>=9e15?crypto.randomBytes(7).copy(F,R):(_.push(w%1e14),R+=7);R=E/7}else throw f=!1,Error($r+"crypto unavailable");if(!f)for(;R<E;)w=k(),w<9e15&&(_[R++]=w%1e14);for(E=_[--R],T%=lt,E&&T&&(w=F5[lt-T],_[R]=bo(E/w)*w);_[R]===0;_.pop(),R--);if(R<0)_=[x=0];else{for(x=-1;_[0]===0;_.splice(0,1),x-=lt);for(R=1,w=_[0];w>=10;w/=10,R++);R<lt&&(x-=lt-R)}return P.e=x,P.c=_,P}})(),h.sum=function(){for(var y=1,k=arguments,T=new h(k[0]);y<k.length;)T=T.plus(k[y++]);return T},n=(function(){var y="0123456789";function k(T,F,S,x){for(var E,w=[0],R,_=0,P=T.length;_<P;){for(R=w.length;R--;w[R]*=F);for(w[0]+=x.indexOf(T.charAt(_++)),E=0;E<w.length;E++)w[E]>S-1&&(w[E+1]==null&&(w[E+1]=0),w[E+1]+=w[E]/S|0,w[E]%=S)}return w.reverse()}return function(T,F,S,x,E){var w,R,_,P,N,I,O,j,B=T.indexOf("."),se=a,H=s;for(B>=0&&(P=g,g=0,T=T.replace(".",""),j=new h(F),I=j.pow(T.length-B),g=P,j.c=k(na(yo(I.c),I.e,"0"),10,S,y),j.e=j.c.length),O=k(T,F,S,E?(w=C,y):(w=y,C)),_=P=O.length;O[--P]==0;O.pop());if(!O[0])return w.charAt(0);if(B<0?--_:(I.c=O,I.e=_,I.s=x,I=t(I,j,se,H,S),O=I.c,N=I.r,_=I.e),R=_+se+1,B=O[R],P=S/2,N=N||R<0||O[R+1]!=null,N=H<4?(B!=null||N)&&(H==0||H==(I.s<0?3:2)):B>P||B==P&&(H==4||N||H==6&&O[R-1]&1||H==(I.s<0?8:7)),R<1||!O[0])T=N?na(w.charAt(1),-se,w.charAt(0)):w.charAt(0);else{if(O.length=R,N)for(--S;++O[--R]>S;)O[R]=0,R||(++_,O=[1].concat(O));for(P=O.length;!O[--P];);for(B=0,T="";B<=P;T+=w.charAt(O[B++]));T=na(T,_,w.charAt(0))}return T}})(),t=(function(){function y(F,S,x){var E,w,R,_,P=0,N=F.length,I=S%Ma,O=S/Ma|0;for(F=F.slice();N--;)R=F[N]%Ma,_=F[N]/Ma|0,E=O*R+_*I,w=I*R+E%Ma*Ma+P,P=(w/x|0)+(E/Ma|0)+O*_,F[N]=w%x;return P&&(F=[P].concat(F)),F}function k(F,S,x,E){var w,R;if(x!=E)R=x>E?1:-1;else for(w=R=0;w<x;w++)if(F[w]!=S[w]){R=F[w]>S[w]?1:-1;break}return R}function T(F,S,x,E){for(var w=0;x--;)F[x]-=w,w=F[x]<S[x]?1:0,F[x]=w*E+F[x]-S[x];for(;!F[0]&&F.length>1;F.splice(0,1));}return function(F,S,x,E,w){var R,_,P,N,I,O,j,B,se,H,V,Z,Y,re,xe,me,Xe,be=F.s==S.s?1:-1,fe=F.c,Re=S.c;if(!fe||!fe[0]||!Re||!Re[0])return new h(!F.s||!S.s||(fe?Re&&fe[0]==Re[0]:!Re)?NaN:fe&&fe[0]==0||!Re?be*0:be/0);for(B=new h(be),se=B.c=[],_=F.e-S.e,be=x+_+1,w||(w=Yo,_=wo(F.e/lt)-wo(S.e/lt),be=be/lt|0),P=0;Re[P]==(fe[P]||0);P++);if(Re[P]>(fe[P]||0)&&_--,be<0)se.push(1),N=!0;else{for(re=fe.length,me=Re.length,P=0,be+=2,I=bo(w/(Re[0]+1)),I>1&&(Re=y(Re,I,w),fe=y(fe,I,w),me=Re.length,re=fe.length),Y=me,H=fe.slice(0,me),V=H.length;V<me;H[V++]=0);Xe=Re.slice(),Xe=[0].concat(Xe),xe=Re[0],Re[1]>=w/2&&xe++;do{if(I=0,R=k(Re,H,me,V),R<0){if(Z=H[0],me!=V&&(Z=Z*w+(H[1]||0)),I=bo(Z/xe),I>1)for(I>=w&&(I=w-1),O=y(Re,I,w),j=O.length,V=H.length;k(O,H,j,V)==1;)I--,T(O,me<j?Xe:Re,j,w),j=O.length,R=1;else I==0&&(R=I=1),O=Re.slice(),j=O.length;if(j<V&&(O=[0].concat(O)),T(H,O,V,w),V=H.length,R==-1)for(;k(Re,H,me,V)<1;)I++,T(H,me<V?Xe:Re,V,w),V=H.length}else R===0&&(I++,H=[0]);se[P++]=I,H[0]?H[V++]=fe[Y]||0:(H=[fe[Y]],V=1)}while((Y++<re||H[0]!=null)&&be--);N=H[0]!=null,se[0]||se.splice(0,1)}if(w==Yo){for(P=1,be=se[0];be>=10;be/=10,P++);A(B,x+(B.e=P+_*lt-1)+1,E,N)}else B.e=_,B.r=+N;return B}})();function M(y,k,T,F){var S,x,E,w,R;if(T==null?T=s:hn(T,0,8),!y.c)return y.toString();if(S=y.c[0],E=y.e,k==null)R=yo(y.c),R=F==1||F==2&&(E<=c||E>=u)?eg(R,E):na(R,E,"0");else if(y=A(new h(y),k,T),x=y.e,R=yo(y.c),w=R.length,F==1||F==2&&(k<=x||x<=c)){for(;w<k;R+="0",w++);R=eg(R,x)}else if(k-=E+(F===2&&x>E),R=na(R,x,"0"),x+1>w){if(--k>0)for(R+=".";k--;R+="0");}else if(k+=x-w,k>0)for(x+1==w&&(R+=".");k--;R+="0");return y.s<0&&S?"-"+R:R}function L(y,k){for(var T,F,S=1,x=new h(y[0]);S<y.length;S++)F=new h(y[S]),(!F.s||(T=ws(x,F))===k||T===0&&x.s===k)&&(x=F);return x}function z(y,k,T){for(var F=1,S=k.length;!k[--S];k.pop());for(S=k[0];S>=10;S/=10,F++);return(T=F+T*lt-1)>d?y.c=y.e=null:T<l?y.c=[y.e=0]:(y.e=T,y.c=k),y}r=(function(){var y=/^(-?)0([xbo])(?=\w[\w.]*$)/i,k=/^([^.]+)\.$/,T=/^\.([^.]+)$/,F=/^-?(Infinity|NaN)$/,S=/^\s*\+(?=[\w.])|^\s+|\s+$/g;return function(x,E,w,R){var _,P=w?E:E.replace(S,"");if(F.test(P))x.s=isNaN(P)?null:P<0?-1:1;else{if(!w&&(P=P.replace(y,function(N,I,O){return _=(O=O.toLowerCase())=="x"?16:O=="b"?2:8,!R||R==_?I:N}),R&&(_=R,P=P.replace(k,"$1").replace(T,"0.$1")),E!=P))return new h(P,_);if(h.DEBUG)throw Error($r+"Not a"+(R?" base "+R:"")+" number: "+E);x.s=null}x.c=x.e=null}})();function A(y,k,T,F){var S,x,E,w,R,_,P,N=y.c,I=F5;if(N){e:{for(S=1,w=N[0];w>=10;w/=10,S++);if(x=k-S,x<0)x+=lt,E=k,R=N[_=0],P=bo(R/I[S-E-1]%10);else if(_=R5((x+1)/lt),_>=N.length)if(F){for(;N.length<=_;N.push(0));R=P=0,S=1,x%=lt,E=x-lt+1}else break e;else{for(R=w=N[_],S=1;w>=10;w/=10,S++);x%=lt,E=x-lt+S,P=E<0?0:bo(R/I[S-E-1]%10)}if(F=F||k<0||N[_+1]!=null||(E<0?R:R%I[S-E-1]),F=T<4?(P||F)&&(T==0||T==(y.s<0?3:2)):P>5||P==5&&(T==4||F||T==6&&(x>0?E>0?R/I[S-E]:0:N[_-1])%10&1||T==(y.s<0?8:7)),k<1||!N[0])return N.length=0,F?(k-=y.e+1,N[0]=I[(lt-k%lt)%lt],y.e=-k||0):N[0]=y.e=0,y;if(x==0?(N.length=_,w=1,_--):(N.length=_+1,w=I[lt-x],N[_]=E>0?bo(R/I[S-E]%I[E])*w:0),F)for(;;)if(_==0){for(x=1,E=N[0];E>=10;E/=10,x++);for(E=N[0]+=w,w=1;E>=10;E/=10,w++);x!=w&&(y.e++,N[0]==Yo&&(N[0]=1));break}else{if(N[_]+=w,N[_]!=Yo)break;N[_--]=0,w=1}for(x=N.length;N[--x]===0;N.pop());}y.e>d?y.c=y.e=null:y.e<l&&(y.c=[y.e=0])}return y}function D(y){var k,T=y.e;return T===null?y.toString():(k=yo(y.c),k=T<=c||T>=u?eg(k,T):na(k,T,"0"),y.s<0?"-"+k:k)}return o.absoluteValue=o.abs=function(){var y=new h(this);return y.s<0&&(y.s=1),y},o.comparedTo=function(y,k){return ws(this,new h(y,k))},o.decimalPlaces=o.dp=function(y,k){var T,F,S,x=this;if(y!=null)return hn(y,0,Jn),k==null?k=s:hn(k,0,8),A(new h(x),y+x.e+1,k);if(!(T=x.c))return null;if(F=((S=T.length-1)-wo(this.e/lt))*lt,S=T[S])for(;S%10==0;S/=10,F--);return F<0&&(F=0),F},o.dividedBy=o.div=function(y,k){return t(this,new h(y,k),a,s)},o.dividedToIntegerBy=o.idiv=function(y,k){return t(this,new h(y,k),0,1)},o.exponentiatedBy=o.pow=function(y,k){var T,F,S,x,E,w,R,_,P,N=this;if(y=new h(y),y.c&&!y.isInteger())throw Error($r+"Exponent not an integer: "+D(y));if(k!=null&&(k=new h(k)),w=y.e>14,!N.c||!N.c[0]||N.c[0]==1&&!N.e&&N.c.length==1||!y.c||!y.c[0])return P=new h(Math.pow(+D(N),w?y.s*(2-Zf(y)):+D(y))),k?P.mod(k):P;if(R=y.s<0,k){if(k.c?!k.c[0]:!k.s)return new h(NaN);F=!R&&N.isInteger()&&k.isInteger(),F&&(N=N.mod(k))}else{if(y.e>9&&(N.e>0||N.e<-1||(N.e==0?N.c[0]>1||w&&N.c[1]>=24e7:N.c[0]<8e13||w&&N.c[0]<=9999975e7)))return x=N.s<0&&Zf(y)?-0:0,N.e>-1&&(x=1/x),new h(R?1/x:x);g&&(x=R5(g/lt+2))}for(w?(T=new h(.5),R&&(y.s=1),_=Zf(y)):(S=Math.abs(+D(y)),_=S%2),P=new h(i);;){if(_){if(P=P.times(N),!P.c)break;x?P.c.length>x&&(P.c.length=x):F&&(P=P.mod(k))}if(S){if(S=bo(S/2),S===0)break;_=S%2}else if(y=y.times(T),A(y,y.e+1,1),y.e>14)_=Zf(y);else{if(S=+D(y),S===0)break;_=S%2}N=N.times(N),x?N.c&&N.c.length>x&&(N.c.length=x):F&&(N=N.mod(k))}return F?P:(R&&(P=i.div(P)),k?P.mod(k):x?A(P,g,s,E):P)},o.integerValue=function(y){var k=new h(this);return y==null?y=s:hn(y,0,8),A(k,k.e+1,y)},o.isEqualTo=o.eq=function(y,k){return ws(this,new h(y,k))===0},o.isFinite=function(){return!!this.c},o.isGreaterThan=o.gt=function(y,k){return ws(this,new h(y,k))>0},o.isGreaterThanOrEqualTo=o.gte=function(y,k){return(k=ws(this,new h(y,k)))===1||k===0},o.isInteger=function(){return!!this.c&&wo(this.e/lt)>this.c.length-2},o.isLessThan=o.lt=function(y,k){return ws(this,new h(y,k))<0},o.isLessThanOrEqualTo=o.lte=function(y,k){return(k=ws(this,new h(y,k)))===-1||k===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(y,k){var T,F,S,x,E=this,w=E.s;if(y=new h(y,k),k=y.s,!w||!k)return new h(NaN);if(w!=k)return y.s=-k,E.plus(y);var R=E.e/lt,_=y.e/lt,P=E.c,N=y.c;if(!R||!_){if(!P||!N)return P?(y.s=-k,y):new h(N?E:NaN);if(!P[0]||!N[0])return N[0]?(y.s=-k,y):new h(P[0]?E:s==3?-0:0)}if(R=wo(R),_=wo(_),P=P.slice(),w=R-_){for((x=w<0)?(w=-w,S=P):(_=R,S=N),S.reverse(),k=w;k--;S.push(0));S.reverse()}else for(F=(x=(w=P.length)<(k=N.length))?w:k,w=k=0;k<F;k++)if(P[k]!=N[k]){x=P[k]<N[k];break}if(x&&(S=P,P=N,N=S,y.s=-y.s),k=(F=N.length)-(T=P.length),k>0)for(;k--;P[T++]=0);for(k=Yo-1;F>w;){if(P[--F]<N[F]){for(T=F;T&&!P[--T];P[T]=k);--P[T],P[F]+=Yo}P[F]-=N[F]}for(;P[0]==0;P.splice(0,1),--_);return P[0]?z(y,P,_):(y.s=s==3?-1:1,y.c=[y.e=0],y)},o.modulo=o.mod=function(y,k){var T,F,S=this;return y=new h(y,k),!S.c||!y.s||y.c&&!y.c[0]?new h(NaN):!y.c||S.c&&!S.c[0]?new h(S):(p==9?(F=y.s,y.s=1,T=t(S,y,0,3),y.s=F,T.s*=F):T=t(S,y,0,p),y=S.minus(T.times(y)),!y.c[0]&&p==1&&(y.s=S.s),y)},o.multipliedBy=o.times=function(y,k){var T,F,S,x,E,w,R,_,P,N,I,O,j,B,se,H=this,V=H.c,Z=(y=new h(y,k)).c;if(!V||!Z||!V[0]||!Z[0])return!H.s||!y.s||V&&!V[0]&&!Z||Z&&!Z[0]&&!V?y.c=y.e=y.s=null:(y.s*=H.s,!V||!Z?y.c=y.e=null:(y.c=[0],y.e=0)),y;for(F=wo(H.e/lt)+wo(y.e/lt),y.s*=H.s,R=V.length,N=Z.length,R<N&&(j=V,V=Z,Z=j,S=R,R=N,N=S),S=R+N,j=[];S--;j.push(0));for(B=Yo,se=Ma,S=N;--S>=0;){for(T=0,I=Z[S]%se,O=Z[S]/se|0,E=R,x=S+E;x>S;)_=V[--E]%se,P=V[E]/se|0,w=O*_+P*I,_=I*_+w%se*se+j[x]+T,T=(_/B|0)+(w/se|0)+O*P,j[x--]=_%B;j[x]=T}return T?++F:j.splice(0,1),z(y,j,F)},o.negated=function(){var y=new h(this);return y.s=-y.s||null,y},o.plus=function(y,k){var T,F=this,S=F.s;if(y=new h(y,k),k=y.s,!S||!k)return new h(NaN);if(S!=k)return y.s=-k,F.minus(y);var x=F.e/lt,E=y.e/lt,w=F.c,R=y.c;if(!x||!E){if(!w||!R)return new h(S/0);if(!w[0]||!R[0])return R[0]?y:new h(w[0]?F:S*0)}if(x=wo(x),E=wo(E),w=w.slice(),S=x-E){for(S>0?(E=x,T=R):(S=-S,T=w),T.reverse();S--;T.push(0));T.reverse()}for(S=w.length,k=R.length,S-k<0&&(T=R,R=w,w=T,k=S),S=0;k;)S=(w[--k]=w[k]+R[k]+S)/Yo|0,w[k]=Yo===w[k]?0:w[k]%Yo;return S&&(w=[S].concat(w),++E),z(y,w,E)},o.precision=o.sd=function(y,k){var T,F,S,x=this;if(y!=null&&y!==!!y)return hn(y,1,Jn),k==null?k=s:hn(k,0,8),A(new h(x),y,k);if(!(T=x.c))return null;if(S=T.length-1,F=S*lt+1,S=T[S]){for(;S%10==0;S/=10,F--);for(S=T[0];S>=10;S/=10,F++);}return y&&x.e+1>F&&(F=x.e+1),F},o.shiftedBy=function(y){return hn(y,-A5,A5),this.times("1e"+y)},o.squareRoot=o.sqrt=function(){var y,k,T,F,S,x=this,E=x.c,w=x.s,R=x.e,_=a+4,P=new h("0.5");if(w!==1||!E||!E[0])return new h(!w||w<0&&(!E||E[0])?NaN:E?x:1/0);if(w=Math.sqrt(+D(x)),w==0||w==1/0?(k=yo(E),(k.length+R)%2==0&&(k+="0"),w=Math.sqrt(+k),R=wo((R+1)/2)-(R<0||R%2),w==1/0?k="5e"+R:(k=w.toExponential(),k=k.slice(0,k.indexOf("e")+1)+R),T=new h(k)):T=new h(w+""),T.c[0]){for(R=T.e,w=R+_,w<3&&(w=0);;)if(S=T,T=P.times(S.plus(t(x,S,_,1))),yo(S.c).slice(0,w)===(k=yo(T.c)).slice(0,w))if(T.e<R&&--w,k=k.slice(w-3,w+1),k=="9999"||!F&&k=="4999"){if(!F&&(A(S,S.e+a+2,0),S.times(S).eq(x))){T=S;break}_+=4,w+=4,F=1}else{(!+k||!+k.slice(1)&&k.charAt(0)=="5")&&(A(T,T.e+a+2,1),y=!T.times(T).eq(x));break}}return A(T,T.e+a+1,s,y)},o.toExponential=function(y,k){return y!=null&&(hn(y,0,Jn),y++),M(this,y,k,1)},o.toFixed=function(y,k){return y!=null&&(hn(y,0,Jn),y=y+this.e+1),M(this,y,k)},o.toFormat=function(y,k,T){var F,S=this;if(T==null)y!=null&&k&&typeof k=="object"?(T=k,k=null):y&&typeof y=="object"?(T=y,y=k=null):T=m;else if(typeof T!="object")throw Error($r+"Argument not an object: "+T);if(F=S.toFixed(y,k),S.c){var x,E=F.split("."),w=+T.groupSize,R=+T.secondaryGroupSize,_=T.groupSeparator||"",P=E[0],N=E[1],I=S.s<0,O=I?P.slice(1):P,j=O.length;if(R&&(x=w,w=R,R=x,j-=x),w>0&&j>0){for(x=j%w||w,P=O.substr(0,x);x<j;x+=w)P+=_+O.substr(x,w);R>0&&(P+=_+O.slice(x)),I&&(P="-"+P)}F=N?P+(T.decimalSeparator||"")+((R=+T.fractionGroupSize)?N.replace(new RegExp("\\d{"+R+"}\\B","g"),"$&"+(T.fractionGroupSeparator||"")):N):P}return(T.prefix||"")+F+(T.suffix||"")},o.toFraction=function(y){var k,T,F,S,x,E,w,R,_,P,N,I,O=this,j=O.c;if(y!=null&&(w=new h(y),!w.isInteger()&&(w.c||w.s!==1)||w.lt(i)))throw Error($r+"Argument "+(w.isInteger()?"out of range: ":"not an integer: ")+D(w));if(!j)return new h(O);for(k=new h(i),_=T=new h(i),F=R=new h(i),I=yo(j),x=k.e=I.length-O.e-1,k.c[0]=F5[(E=x%lt)<0?lt+E:E],y=!y||w.comparedTo(k)>0?x>0?k:_:w,E=d,d=1/0,w=new h(I),R.c[0]=0;P=t(w,k,0,1),S=T.plus(P.times(F)),S.comparedTo(y)!=1;)T=F,F=S,_=R.plus(P.times(S=_)),R=S,k=w.minus(P.times(S=k)),w=S;return S=t(y.minus(T),F,0,1),R=R.plus(S.times(_)),T=T.plus(S.times(F)),R.s=_.s=O.s,x=x*2,N=t(_,F,x,s).minus(O).abs().comparedTo(t(R,T,x,s).minus(O).abs())<1?[_,F]:[R,T],d=E,N},o.toNumber=function(){return+D(this)},o.toPrecision=function(y,k){return y!=null&&hn(y,1,Jn),M(this,y,k,2)},o.toString=function(y){var k,T=this,F=T.s,S=T.e;return S===null?F?(k="Infinity",F<0&&(k="-"+k)):k="NaN":(y==null?k=S<=c||S>=u?eg(yo(T.c),S):na(yo(T.c),S,"0"):y===10&&v?(T=A(new h(T),a+S+1,s),k=na(yo(T.c),T.e,"0")):(hn(y,2,C.length,"Base"),k=n(na(yo(T.c),S,"0"),10,y,F,!0)),F<0&&T.c[0]&&(k="-"+k)),k},o.valueOf=o.toJSON=function(){return D(this)},o._isBigNumber=!0,o[Symbol.toStringTag]="BigNumber",o[Symbol.for("nodejs.util.inspect.custom")]=o.valueOf,e!=null&&h.set(e),h}function wo(e){var t=e|0;return e>0||e===t?t:t-1}function yo(e){for(var t,n,r=1,o=e.length,i=e[0]+"";r<o;){for(t=e[r++]+"",n=lt-t.length;n--;t="0"+t);i+=t}for(o=i.length;i.charCodeAt(--o)===48;);return i.slice(0,o+1||1)}function ws(e,t){var n,r,o=e.c,i=t.c,a=e.s,s=t.s,c=e.e,u=t.e;if(!a||!s)return null;if(n=o&&!o[0],r=i&&!i[0],n||r)return n?r?0:-s:a;if(a!=s)return a;if(n=a<0,r=c==u,!o||!i)return r?0:!o^n?1:-1;if(!r)return c>u^n?1:-1;for(s=(c=o.length)<(u=i.length)?c:u,a=0;a<s;a++)if(o[a]!=i[a])return o[a]>i[a]^n?1:-1;return c==u?0:c>u^n?1:-1}function hn(e,t,n,r){if(e<t||e>n||e!==bo(e))throw Error($r+(r||"Argument")+(typeof e=="number"?e<t||e>n?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Zf(e){var t=e.c.length-1;return wo(e.e/lt)==t&&e.c[t]%2!=0}function eg(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function na(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 DQ=ER(),TR=DQ;var NQ=24,Du=32,OQ=()=>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,P5=OQ(),M5=(e=4,t=P5)=>{let n="";for(;n.length<e;)n=n+Math.floor(t()*36).toString(36);return n};function $Q(e){let t=new TR(0);for(let n of e.values())t=t.multipliedBy(256).plus(n);return t}var RR=(e="")=>{let t=new TextEncoder;return $Q(kR(t.encode(e))).toString(36).slice(1)},IR=Array.from({length:26},(e,t)=>String.fromCharCode(t+97)),HQ=e=>IR[Math.floor(e()*IR.length)],UQ=({globalObj:e=typeof global<"u"?global:typeof window<"u"?window:{},random:t=P5}={})=>{let n=Object.keys(e).toString(),r=n.length?n+M5(Du,t):M5(Du,t);return RR(r).substring(0,Du)},jQ=e=>()=>e++,VQ=476782367,AR=({random:e=P5,counter:t=jQ(Math.floor(e()*VQ)),length:n=NQ,fingerprint:r=UQ({random:e})}={})=>{if(n>Du)throw new Error(`Length must be between 2 and ${Du}. Received: ${n}`);return function(){let i=HQ(e),a=Date.now().toString(36),s=t().toString(36),c=M5(n,e),u=`${a+c+s+r}`;return`${i+RR(u).substring(1,n)}`}},Pa=WQ(AR);function WQ(e){let t;return()=>(t||(t=e()),t())}var YQ=Jp(PR());pn();Pe();var tg=/\[([^\]]+)\]\s*\[([^\]]+)\]\s*\[([^\]]+)\]\s*-\s*(.+)/g;function KQ(e){return e.replace(/\*\*/g,"").replace(/\*/g,"").replace(/__/g,"").replace(/_/g," ").trim()}function _5(e,t){let n=[],r=e.split(`
88
88
  `);for(let a=0;a<r.length;a++){let s=KQ(r[a]),c=tg.exec(s);if(c){let[,u,l,,d]=c,f=XQ(l),p=JQ(r,a+1),g={id:Pa(),reviewId:t,type:u.trim(),severity:f,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(g)}tg.lastIndex=0}return n.map(a=>{let s=iu(a);return s.dismissed?(b.debug(`[parseIssues] Auto-dismissed: ${a.title} - ${s.dismissReason}`),{...a,dismissed:!0,dismissReason:s.dismissReason,dismissedBy:s.dismissedBy,dismissedAt:new Date}):a})}function XQ(e){let t=e.toLowerCase().trim();return t.includes("critical")||t.includes("high")?"critical":t.includes("major")||t.includes("medium")?"major":"minor"}function JQ(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||tg.test(i)){tg.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 a=i.replace("File:","").trim(),s=a.match(/^(.+?):(\d+)$/);s?(n.file=s[1],n.lineNumber=parseInt(s[2],10)):n.file=a}else if(i.startsWith("Property:"))n.property=i.replace("Property:","").trim();else if(i.startsWith("FixTarget:")){let a=i.replace("FixTarget:","").trim().toLowerCase();(a==="css"||a==="component")&&(n.fixTarget=a)}else if(i.startsWith("FixRequired:")){let a=i.replace("FixRequired:","").trim().toLowerCase();n.fixRequired=a==="true"}else if(i.startsWith("Fix:"))n.suggestedFix=i.replace("Fix:","").trim();else if(i.startsWith("```")){let a=[];for(o++;o<e.length&&!e[o].trim().startsWith("```");)a.push(e[o]),o++;n.suggestedCode=a.join(`
89
89
  `)}else r.push(i)}return n.description=r.join(" ").trim(),n}Pe();var Nu=null,_R=0,QQ=3e4;async function ZQ(){let e=Date.now();if(Nu&&e-_R<QQ)return Nu;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 Nu=n.entries||n.stories||{},_R=e,b.debug("[storyFilePaths] Fetched index.json, entries:",Object.keys(Nu).length),Nu}catch(t){throw b.error("[storyFilePaths] Error fetching index.json:",t),t}}async function vs(e){try{let n=(await ZQ())[e];if(!n?.importPath)return b.warn("[storyFilePaths] No importPath found for story:",e),null;let r=n.importPath;b.debug("[storyFilePaths] Found importPath:",r);let o=r.replace(/^\.\//,""),i;n.componentPath?(i=n.componentPath.replace(/^\.\//,""),b.debug("[storyFilePaths] Using Storybook componentPath:",i)):(i=`${o.replace(/\.stories\.tsx$/,"").replace(/\.stories\.ts$/,"").replace(/\.stories\.jsx$/,"").replace(/\.stories\.js$/,"")}.tsx`,b.debug("[storyFilePaths] Derived componentFile:",i));let a=i.replace(/\.tsx$/,".css").replace(/\.ts$/,".css").replace(/\.jsx$/,".css").replace(/\.js$/,".css"),s=i.substring(0,i.lastIndexOf("/")),c={storyFile:o,componentFile:i,cssFile:a,baseDir:s};return b.debug("[storyFilePaths] Final paths:",c),c}catch(t){return b.error("[storyFilePaths] Error getting file paths:",t),null}}function L5(e,t){if(e==="css")return t.cssFile;if(e==="component")return t.componentFile;if(e==="story")return t.storyFile}function eZ(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 B5(e,t){let n=e.property?.toLowerCase()||"",r=e.domElement?.toLowerCase()||"",o=r.startsWith("svg"),i=r.startsWith("img"),a=n==="width"||n==="height",s=/\[(?:width|height)=/.test(r);return(o||i)&&a||s?(b.debug(`[storyFilePaths] \u{1F50D} INLINE ATTRIBUTE: domElement="${e.domElement}", property="${e.property}" \u2192 component file`),t.componentFile):eZ(e.type,t)}pn();Pe();function tZ(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 nZ(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 rZ(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 oZ(e,t,n){let r={critical:3,major:2,minor:1},i=[...e].sort((u,l)=>(r[l.severity]||0)-(r[u.severity]||0))[0],a=e.length,s,c;if(t.includes("icon")&&n==="dimensions"){let u=e.map(d=>d.currentValue).filter(Boolean),l=e.map(d=>d.suggestedValue).filter(Boolean);s=`Icon sizing is incorrect (${a} related issues)`,c=`Icons are rendered at wrong dimensions. Current: ${u[0]||"10px"}, Expected: ${l[0]||"20px"}. This single CSS fix will resolve all ${a} icon dimension issues.`}else s=`${t} ${n} issues (${a} related)`,c=`${a} related ${n} issues for ${t}. ${i.description}`;return{...i,id:`merged-${t}-${n}-${i.id}`,title:s,description:c,currentValue:i.currentValue,suggestedValue:i.suggestedValue,mergedCount:a,mergedIssueIds:e.map(u=>u.id)}}function z5(e){if(!e||e.length===0)return[];let t=e.filter(i=>!rZ(i)),n=[],r=[];for(let i of t){let a=tZ(i),s=nZ(i);a.includes("icon")&&s==="dimensions"?n.push(i):r.push(i)}let o=[];return n.length>0&&(n.length===1?o.push(n[0]):o.push(oZ(n,"icon","dimensions"))),o.push(...r),b.debug("[deduplicateIssues] Input:",e.length,"issues, Output:",o.length,"issues"),b.debug("[deduplicateIssues] Removed",e.length-t.length,"summary issues"),b.debug("[deduplicateIssues] Merged",n.length,"icon issues into",n.length>0?1:0),o}Pe();function LR(){let e="";return{push(t){e+=t;let n=e.split(`
90
90
  `);e=n.pop()||"";let r=[];for(let o of n){if(!o.startsWith("data: "))continue;let i=o.slice(6);if(i==="[DONE]"){r.push({kind:"done"});continue}try{r.push({kind:"event",data:JSON.parse(i),raw:i})}catch(a){r.push({kind:"error",error:a instanceof Error?a:new Error(String(a)),raw:i})}}return r},get pending(){return e}}}pn();var iZ=[/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],aZ=[/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 Ou(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"Review failed";return aZ.some(n=>n.test(t))?t:iZ.some(n=>n.test(t))?`Can't reach ${Kt.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)?`${Kt.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.replace(/\.+\s*$/,"")}. Try again, or send feedback if this keeps happening.`}Me();var D5=q(),N5=180;function _a(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 O5=()=>{let{isReviewing:e,reviewError:t,reviewResults:n,showReviewMenu:r,severityFilter:o,showStreamingPanel:i,streamingPanelCollapsed:a,streamingMessages:s,streamingProgress:c,streamingStatus:u,selectedModels:l,setIsReviewing:d,setReviewingStoryId:f,setReviewError:p,setReviewResults:g,setShowReviewMenu:m,setSeverityFilter:C,setShowStreamingPanel:v,setStreamingPanelCollapsed:h,addStreamingMessage:M,updateStreamingMessage:L,clearStreamingMessages:z,setStreamingProgress:A,setStreamingStatus:D,setFullPrompt:y,setFullResponse:k,setFigmaImageUrl:T,storybookImageUrl:F,setStorybookImageUrl:S,setFigmaDimensions:x,setMultiModelResults:E,updateMultiModelStreamingMessages:w,setModelCompleted:R,setActiveModelId:_,resetReview:P,addReview:N,setReviewDetailTab:I,includeTextComparison:O,usePromptCache:j,setApplyFixesResult:B,featureFlags:se,roleOverride:H,setPendingSettingsOpen:V}=ve(),{sessionToken:Z,usageData:Y,setUsageData:re}=we(),{selectedProjectId:xe}=We(),{currentStoryId:me,currentStoryName:Xe}=yt(),be=ng(Y);be.current=Y;let fe=ng(null),Re=ng(null),xt=ng({}),Pt=$u((tr,jt)=>{M({role:tr,content:jt})},[M]),Je=$u((tr,jt)=>{A(tr),D(jt)},[A,D]),Qe=$u(async tr=>{let{isIteration:jt=!1,parentReviewId:mn=null}=tr||{};if(!Z)throw new Error("Not authenticated");if(!xe)throw new Error("No project selected");if(!me||!Xe)throw new Error("No story is currently selected in Storybook");if(e){b.debug("[useAIReview] Review already in progress, ignoring duplicate request");return}let nr=Date.now();try{d(!0),f(me),p(null),g(null),I("issues"),B(null),me&&se.enableReviewBadges&&$7(me),Re.current&&clearTimeout(Re.current),Re.current=setTimeout(()=>{b.debug(`[useAIReview] Auto-stopping review after ${N5}s timeout`),fe.current&&fe.current.abort(),M({role:"system",content:`Review auto-stopped after ${N5} seconds timeout.`})},N5*1e3),y(""),k(""),v(!0),h(!1),z(),Je(0,"Starting review..."),Je(5,"Refreshing component preview..."),b.debug("[Review] Forcing iframe reload for fresh styles..."),await Kf(),b.debug("[Review] Iframe reloaded, styles should be fresh"),Je(20,"Capturing screenshot & extracting styles..."),b.debug("[Review] Starting parallel data collection...");let[G,oe,ye]=await Promise.all([pf({sessionToken:Z||void 0}),Promise.resolve(Cu()),Promise.resolve(Eu())]);if(G&&G!==F&&(S(G),b.debug("[Review] Storybook screenshot captured and set")),!oe)throw new Error("Failed to extract styles from component");let{computed:U,declared:ae,markup:ke,textElementStyles:ee,nestedElementStyles:ne}=oe;ye?b.debug("[Review] DOM tree extracted:",{selector:ye.selector,childrenCount:ye.children.length}):(b.error("[Review] DOM tree extraction FAILED - domTree is null"),b.error("[Review] This will cause AI to use comparison table instead of tree comparison")),Je(50,"Preparing metadata..."),b.debug("[Review] Current story:",{id:me,name:Xe});let ge=Tt.getState().currentMapping?.figmaNodeId??null,Et=Tt.getState().figmaImageUrl;if(ge&&(b.debug("[Review] Using Figma node ID from store:",ge),Et&&(Je(65,"Using existing Figma design..."),b.debug("[Review] Reusing already-loaded Figma image"))),!ge)try{let ue=await fetch(`${D5}/api/mappings?projectId=${xe}&storyId=${me}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`}});if(ue.ok){let dt=await ue.json();dt.mapping?.figmaNodeId?(ge=dt.mapping.figmaNodeId,b.debug("[Review] Found Figma node ID from API:",ge)):b.debug("[Review] No mapping found for story:",me)}else b.debug("[Review] Failed to fetch mapping:",ue.status)}catch(ue){b.error("[Review] Error fetching mapping:",ue)}if(ge&&!Et){Je(65,"Fetching Figma design...");try{let ue=await fetch(`${D5}/api/figma/frames?projectId=${xe}`,{headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`}});if(ue.ok){let $e=(await ue.json()).thumbnails?.[ge];$e?(T($e),b.debug("[Review] Figma thumbnail fetched and displayed:",$e)):b.warn("[Review] No thumbnail found for node:",ge)}else b.warn("[Review] Failed to fetch Figma frames:",ue.status)}catch(ue){b.error("[Review] Error fetching Figma frames:",ue)}}if(!ge)throw new Error('Figma mapping required. Please link this story to a Figma frame using the "Map to Figma" button before reviewing.');Je(80,"AI is analyzing your component..."),b.debug("[Review] Sending to streaming API...");let At={projectId:xe,storyId:me,storyName:Xe,storybookScreenshot:G,computedStyles:U,declaredStyles:ae,textElementStyles:ee,nestedElementStyles:ne,componentMarkup:ke,domTree:ye,figmaNodeId:ge,figmaImageUrl:Et||void 0,aiModels:l,includeTextComparison:O,usePromptCache:j,parentReviewId:jt?mn:void 0,isIteration:jt};b.debug("[Review] Request payload:",{...At,storybookScreenshot:G?`${G.substring(0,50)}...`:null,domTree:ye?{selector:ye.selector,childrenCount:ye.children.length}:null}),fe.current=new AbortController;let Vt=await fetch(`${D5}/api/review/stream`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`,...Xf(H)},body:JSON.stringify(At),signal:fe.current.signal});if(b.debug("[Review] Response status:",Vt.status,Vt.statusText),!Vt.ok){let ue=await Vt.json();if(b.error("[Review] API error response:",ue),Vt.status===429){let dt=ue.retryAfter||60;throw new Error(`Rate limit exceeded. Please wait ${dt} seconds before trying again.`)}if(Vt.status===402){if(ue.code==="INSUFFICIENT_CREDITS"){let dt=ue.details?.required??1,$e=ue.details?.balance??0;throw new Error(`Not enough credits. This review requires ${dt} credit(s) but you have ${$e}. Visit Settings to add more.`)}throw ue.code==="SUBSCRIPTION_LIMIT_EXCEEDED"?new Error(ue.message||"Monthly review limit reached. Upgrade your plan to continue."):new Error(ue.message||"Payment required")}throw Vt.status===401&&ue.code==="FIGMA_AUTH_EXPIRED"?(V(!0),new Error("Figma connection expired. Reconnect your Figma account in Settings to continue.")):new Error(ue.error||ue.message||"Review request failed")}let Vn=Vt.body?.getReader(),rl=new TextDecoder,kc=LR(),Rr="",Ve=null,zi=null,ns=l.length>1,io={},at={},tt={};if(!Vn)throw new Error("Response body is not readable");let _n=Tt.getState().streamingMessages.length;for(Pt("assistant","");;){let{done:ue,value:dt}=await Vn.read();if(ue)break;for(let $e of kc.push(rl.decode(dt,{stream:!0})))if($e.kind!=="done"){if($e.kind==="error"){b.error("[Review] Error parsing SSE data:",{message:$e.error.message,name:$e.error.name,stack:$e.error.stack}),b.error("[Review] Failed to parse data:",$e.raw.substring(0,200)+($e.raw.length>200?"...":"")),zi=$e.error;continue}{let en=$e.raw;try{let le=$e.data;if(le.type!=="text"&&le.type!=="content"&&b.debug("[Review] SSE Event received:",le.type),le.type==="prompt")le.prompt&&(y(le.prompt),b.debug("[Review] Prompt received early"));else if(le.type==="model_started")b.debug("[Review] Model started:",le.modelId),io[le.modelId]||(io[le.modelId]="",at[le.modelId]=[{role:"assistant",content:""}]);else if(le.type==="text"||le.type==="content")if(ns&&le.modelId){io[le.modelId]||(io[le.modelId]="",at[le.modelId]=[{role:"assistant",content:""}]),io[le.modelId]+=le.content,at[le.modelId][0].content=io[le.modelId],w(le.modelId,at[le.modelId]);let Wn=Object.entries(io).map(([yr,rr])=>`[${yr}]
@@ -114,7 +114,7 @@ ${rr}`).join(`
114
114
  `,Lee=Hr.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})),Bee=Hr.div(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"10px",paddingBottom:"8px",borderBottom:`1px solid ${e.appBorderColor}`})),zee=Hr.div(({theme:e})=>({fontWeight:e.typography.weight.bold,color:e.color.defaultText,fontSize:e.typography.size.s2})),Dee=Hr.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()}}),Nee=Hr.div({display:"flex",flexDirection:"column",gap:"6px",marginBottom:"10px"}),Oee=Hr.div(({theme:e})=>({display:"flex",justifyContent:"space-between",alignItems:"center",fontSize:e.typography.size.s1,color:e.color.defaultText})),$ee=Hr.span({display:"flex",alignItems:"center",gap:"4px"}),Hee=Hr.span(({status:e,theme:t})=>({color:e==="pass"?t.color.positive:e==="warn"?t.color.warning:t.color.negative,fontSize:t.typography.size.s1})),Uee=Hr.span(({theme:e})=>({fontWeight:500,color:e.color.mediumdark})),jee=Hr.div(({theme:e})=>({fontSize:e.typography.size.s1,color:e.color.mediumdark,lineHeight:1.4,fontStyle:"italic"})),Vee=Hr.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"}})),tA=({figmaFileUrl:e})=>{let{selectedProjectId:t}=We(),[n,r]=cw(!1),[o,i]=cw(!1),[a,s]=cw(null),c=async()=>{if(!(!e||!t||o)){i(!0);try{let u=q(),l=localStorage.getItem("uicopilot_session_token"),d=await J(`${u}/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 f=await d.json();s(f),r(!0)}catch(u){console.error("[FigmaQualityBadge] Quality check error:",u)}finally{i(!1)}}};return e?kn.createElement(Fee,{onMouseEnter:()=>a&&r(!0),onMouseLeave:()=>r(!1)},kn.createElement(Pee,{score:a?.score,isLoading:o,onClick:c,disabled:o||!t,title:a?"Click to refresh quality check":"Click to check Figma design quality"},o?kn.createElement(kn.Fragment,null,kn.createElement(_ee,null)," Checking..."):a?kn.createElement(kn.Fragment,null,"\u{1F3A8} ",Math.round(a.score),"%"):kn.createElement(kn.Fragment,null,"\u{1F3A8} Check Quality")),n&&a&&kn.createElement(Lee,null,kn.createElement(Bee,null,kn.createElement(zee,null,"Figma Design Quality"),kn.createElement(Dee,{score:a.score},Math.round(a.score),"%")),kn.createElement(Nee,null,Object.entries(a.categories).map(([u,l])=>kn.createElement(Oee,{key:u},kn.createElement($ee,null,kn.createElement(Hee,{status:l.status},Aee(l.status)),Ree[u]||u),kn.createElement(Uee,null,l.score)))),a.summary&&kn.createElement(jee,null,a.summary),a.recommendations?.length>0&&kn.createElement(Vee,null,a.recommendations.slice(0,2).map((u,l)=>kn.createElement("li",{key:l},u))))):null};var Gee=mi.div(({theme:e})=>({padding:"12px 16px",marginBottom:"16px"})),qee=mi.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px",marginBottom:"8px"}),Yee=mi.label(({theme:e})=>({fontSize:"10px",fontWeight:e.typography.weight.bold,letterSpacing:"0.06em",textTransform:"uppercase",color:e.color.mediumdark})),Kee=mi.div({display:"flex",gap:"8px",alignItems:"center"}),Xee=mi.div({position:"relative",flex:1,display:"flex"}),Jee=mi.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:W,boxShadow:`0 0 0 1px ${W}`},"&::placeholder":{color:e.color.mediumlight}})),Qee=mi(tn)({whiteSpace:"nowrap"}),Zee=mi.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"}})),ete=mi.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:W,background:e.background.hoverable}})),tte=()=>Dn.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},Dn.createElement("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2"}),Dn.createElement("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})),nte=()=>Dn.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"},Dn.createElement("polyline",{points:"20 6 9 17 4 12"}));function rte(e){return e?e.includes("figma.com")?e:/^[a-zA-Z0-9]+$/.test(e)?`https://www.figma.com/design/${e}`:e:""}var ote=mi.span(({theme:e,variant:t})=>({fontSize:"12px",color:t==="success"?e.color.positive:e.color.negative,marginTop:"4px",display:"block"})),nA=({onFigmaFileChanged:e})=>{let{selectedProjectId:t,projects:n}=We(),{sessionToken:r}=we(),{updateProject:o}=wr(),i=n.find(k=>k.id===t),[a,s]=Hl(""),[c,u]=Hl(!1),[l,d]=Hl(null),[f,p]=Hl(!1),g=i?.figmaFileUrl||i?.figmaFileId||"",m=rte(g);Wee(()=>{s(m),d(null)},[i?.id,m]);let C=a!==m,v=lg(async()=>{if(!t||!C)return;let k=Uu(a);if(Ba(k)){d({type:"error",message:ju(k)??"Invalid Figma URL."});return}try{u(!0),d(null),await o(t,{figmaFileUrl:a.trim()||void 0});let T=q();try{await J(`${T}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({projectId:t})})}catch{}J(`${T}/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(T){d({type:"error",message:T instanceof Error?T.message:"Failed to save"})}finally{u(!1)}},[t,a,C,o,r,e]),h=lg(k=>{k.key==="Enter"&&C&&!c&&v()},[C,c,v]),M=lg(async()=>{if(a)try{await navigator.clipboard.writeText(a),p(!0),setTimeout(()=>p(!1),1500)}catch{}},[a]),[L,z]=Hl(!1),[A,D]=Hl(!1),y=lg(async()=>{if(!(!t||!r))try{D(!0),await o(t,{figmaFileUrl:""});let k=q();await J(`${k}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({projectId:t})}).catch(()=>{}),await J(`${k}/api/figma/frames/invalidate?projectId=${t}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`}}).catch(()=>{}),s(""),z(!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{D(!1)}},[t,r,o,e]);return t?Dn.createElement(Gee,null,Dn.createElement(qee,null,Dn.createElement(Yee,null,"Figma File URL"),Dn.createElement(tA,{figmaFileUrl:m})),Dn.createElement(Kee,null,Dn.createElement(Xee,null,Dn.createElement(Jee,{type:"text",value:a,onChange:k=>s(k.target.value),onKeyDown:h,placeholder:"https://www.figma.com/file/..."}),a&&Dn.createElement(ete,{type:"button",copied:f,onClick:M,title:"Copy Figma URL to clipboard"},f?Dn.createElement(nte,null):Dn.createElement(tte,null))),Dn.createElement(Qee,{onClick:v,disabled:!C||c},c?"Saving...":"Save"),m&&Dn.createElement(Zee,{onClick:()=>z(!0),title:"Remove Figma file and clear cache"},"\u{1F5D1}")),Dn.createElement(Dr,{isOpen:L,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:A?"Removing...":"Remove",variant:"danger",onConfirm:y,onCancel:()=>z(!1)}),l&&Dn.createElement(ote,{variant:l.type},l.message)):null};import Pn,{useState as cg,useEffect as ite}from"react";import{styled as eo}from"storybook/theming";Ce();Me();nt();var rA=eo.div({display:"flex",flexDirection:"column",gap:"6px",padding:"12px 16px"}),ate=eo.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px"}),ste=eo.span(({theme:e})=>({fontSize:"10px",fontWeight:e.typography.weight.bold,letterSpacing:"0.06em",textTransform:"uppercase",color:e.color.mediumdark})),lte=eo.div({display:"flex",alignItems:"center",gap:"12px",fontSize:"11px"}),cte=eo.span(({theme:e,state:t})=>({fontFamily:e.typography.fonts.mono,fontWeight:e.typography.weight.bold,whiteSpace:"nowrap",color:t==="complete"?e.color.positive:t==="partial"?e.color.warning:e.color.mediumdark})),ute=eo.div(({theme:e})=>({width:"100%",height:"4px",backgroundColor:e.appBorderColor,borderRadius:"2px",overflow:"hidden"})),pte=eo.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"})),dte=eo(I0)(({theme:e})=>({padding:0,fontSize:"11px",fontWeight:e.typography.weight.bold,color:e.color.defaultText})),fte=eo(I0)(({theme:e})=>({padding:0,fontSize:"11px",fontWeight:e.typography.weight.regular,color:e.color.mediumdark,"&:hover":{textDecoration:"none",color:e.color.defaultText}})),gte=eo.div({display:"flex",alignItems:"center",gap:"8px"}),mte=eo.span(({theme:e})=>({fontSize:"13px",color:e.color.mediumdark,fontStyle:"italic"})),hte=eo.div(({theme:e})=>({width:"14px",height:"14px",border:`2px solid ${e.appBorderColor}`,borderTopColor:W,borderRadius:"50%",animation:"figma-mapping-spin 0.8s linear infinite","@keyframes figma-mapping-spin":{"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}})),xte=eo.span(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark})),oA=({refreshKey:e=0})=>{let[t,n]=cg(!1),[r,o]=cg({totalStories:0,mappedStories:0,loading:!0}),{selectedProjectId:i}=We(),{sessionToken:a}=we();ite(()=>{i&&a?s():o({totalStories:0,mappedStories:0,loading:!1})},[i,a,e]);let s=async()=>{o(A=>({...A,loading:!0}));try{let A=await fetch("/index.json");if(!A.ok)throw new Error("Failed to fetch Storybook index");let D=await A.json(),y=D.entries||D.stories||{},k=Object.keys(y).filter(E=>y[E].type==="story").length,T=Object.keys(y).filter(E=>y[E].type==="story"),F=q(),S=await J(`${F}/api/mappings?projectId=${i}`,{headers:{Authorization:`Bearer ${a}`}}),x=0;if(S.ok){let E=await S.json(),w=E.mappings||E||[];if(Array.isArray(w)){let R=new Set(w.map(_=>_.storyId).filter(Boolean));x=T.filter(_=>R.has(_)).length}else{let R=await J(`${F}/api/mappings/stats?projectId=${i}`,{headers:{Authorization:`Bearer ${a}`}});if(R.ok){let _=await R.json();x=Math.min(_.mappedStoriesCount||0,k)}}}o({totalStories:k,mappedStories:x,loading:!1})}catch(A){console.error("[FigmaMappingsSection] Error fetching stats:",A),o(D=>({...D,loading:!1}))}},[c,u]=cg(!1),[l,d]=cg(!1),f=async()=>{!i||!a||d(!0)},p=async()=>{d(!1),u(!0);try{let A=q();if(!(await J(`${A}/api/mappings/batch?projectId=${i}`,{method:"DELETE",headers:{Authorization:`Bearer ${a}`}})).ok)throw new Error("Failed to unlink all mappings");Ru(),s()}catch(A){console.error("[FigmaMappingsSection] Unlink all failed:",A)}finally{u(!1)}},g=()=>n(!0),m=()=>{n(!1),i&&a&&s()};if(!i)return Pn.createElement(rA,null,Pn.createElement(mte,null,"Select a project to link Figma designs"));let{totalStories:C,loading:v}=r,h=Math.min(r.mappedStories,C),M=h===0?"none":h>=C?"complete":"partial",L=C>0?Math.min(100,Math.round(h/C*100)):0,z=M==="none"?"Link designs":"Manage";return Pn.createElement(Pn.Fragment,null,Pn.createElement(rA,null,Pn.createElement(ate,null,Pn.createElement(ste,null,"Figma mappings"),Pn.createElement(lte,null,v?Pn.createElement(gte,null,Pn.createElement(hte,null),Pn.createElement(xte,null,"Loading\u2026")):Pn.createElement(Pn.Fragment,null,Pn.createElement(cte,{state:M},`${h} / ${C}`),h>0&&Pn.createElement(fte,{onClick:f,disabled:v||c},c?"Unlinking\u2026":"Unlink all"),Pn.createElement(dte,{onClick:g,disabled:v},z)))),!v&&Pn.createElement(ute,null,Pn.createElement(pte,{percent:L,state:M}))),t&&Pn.createElement($f,{isOpen:t,onClose:m,projectId:i}),Pn.createElement(Dr,{isOpen:l,title:"Unlink All Mappings",message:`Unlink all ${r.mappedStories} Figma mappings?`,confirmLabel:"Unlink All",variant:"danger",onConfirm:p,onCancel:()=>d(!1)}))};Ce();Me();import X,{useState as za,useEffect as Yu,useCallback as t8,useRef as bw}from"react";import{addons as Xte}from"storybook/manager-api";nt();function iA(e){let{loading:t,reloading:n,crawlStatus:r,pagesFailed:o,tries:i,max:a}=e;return t||n||r!=="complete"||(o??0)<=0?!1:i<a}Me();import{useEffect as yte,useRef as bte}from"react";import{addons as wte}from"storybook/manager-api";var ug="uicopilot/crawl-started",vte=3e3,Ste=360*1e3;function aA(e){let t=bte({});yte(()=>{let n=wte.getChannel?.();if(!n)return;let r=a=>{let s=t.current[a];s&&(clearInterval(s),delete t.current[a])},o=a=>{try{e.addNotification?.(a)}catch{}},i=({projectId:a})=>{if(!a||t.current[a])return;let s=localStorage.getItem("uicopilot_session_token");if(!s)return;let c=q(),u=Date.now(),l=setInterval(async()=>{if(Date.now()-u>Ste){r(a);return}try{let d=await fetch(`${c}/api/figma/cache-status?projectId=${a}`,{headers:{Authorization:`Bearer ${s}`}});if(!d.ok)return;let f=await d.json(),p=f?.crawlProgress?.status;if(p==="complete"){r(a);let g=f?.componentSetCount??0;o({id:`uicopilot-crawl-done-${a}-${Date.now()}`,content:{headline:"Figma cache ready",subHeadline:`${g} component set${g===1?"":"s"} cached \u2014 open Settings to map`},duration:8e3})}else p==="error"&&(r(a),o({id:`uicopilot-crawl-error-${a}-${Date.now()}`,content:{headline:"Figma crawl failed",subHeadline:f?.crawlProgress?.error||"Open Settings to retry."},duration:8e3}))}catch{}},vte);t.current[a]=l};return n.on(ug,i),()=>{n.off(ug,i),Object.keys(t.current).forEach(r)}},[e])}import Cn,{useState as Lte}from"react";import{styled as to,keyframes as Bte}from"storybook/theming";Ce();Me();nt();Pe();import{useCallback as kte,useEffect as Cte,useState as Vu}from"react";var Ete=q();function pg(e,t){let{sessionToken:n}=we(),[r,o]=Vu([]),[i,a]=Vu(!1),[s,c]=Vu(0),[u,l]=Vu(!1),[d,f]=Vu(null),p=kte(async()=>{if(!(!e||!n)){l(!0),f(null);try{let g=await J(`${Ete}/api/figma/pages?projectId=${e}`,{headers:{Authorization:`Bearer ${n}`}}),m=await g.json().catch(()=>({}));if(!g.ok||!m.success)throw new Error(m.error||"Couldn't read the file's pages.");o(Array.isArray(m.pages)?m.pages:[]),a(!!m.published),c(m.totalComponentSets??0)}catch(g){b.error("[useFigmaPages] failed to load pages:",g),f(g instanceof Error?g.message:"Couldn't read the file's pages.")}finally{l(!1)}}},[e,n]);return Cte(()=>{t&&p()},[t,p]),{pages:r,published:i,totalComponentSets:s,loading:u,error:d,reload:p}}Pe();import{useEffect as Tte,useState as sA}from"react";function Ite(e){let t=e,n=t?.entries??t?.stories;if(!n||typeof n!="object")return[];let r=[],o=new Set;for(let i of Object.values(n)){if(!i||typeof i!="object"||i.type&&i.type!=="story")continue;let a=`${i.title??""}|${i.name??""}`;!i.title&&!i.name||o.has(a)||(o.add(a),r.push({name:i.name,title:i.title}))}return r}function dg(){let[e,t]=sA([]),[n,r]=sA(!1);return Tte(()=>{let o=!1;return(async()=>{try{let i=await fetch("/index.json");if(!i.ok)throw new Error(`index.json returned ${i.status}`);let a=Ite(await i.json());o||t(a)}catch(i){b.debug("[useStoryNames] could not read story index:",i instanceof Error?i.message:i)}finally{o||r(!0)}})(),()=>{o=!0}},[]),{stories:e,ready:n}}import Ft,{useEffect as Pte,useMemo as BA,useRef as _te,useState as zA}from"react";pn();function Ul(e){return e.toLowerCase().replace(/[^a-z0-9]/g,"")}function Rte(e){let t=FI(e.title,e.name).trim();return t&&Ul(t).length>=3?[t]:[]}function lA(e){return e.length>3&&/(s|x|z|ch|sh)es$/.test(e)?e.slice(0,-2):e.length>3&&e.endsWith("s")?e.slice(0,-1):e}function Ate(e,t){let n=Ul(e),r=Ul(t);return!n||!r?!1:lA(n)===lA(r)}function fg(e,t){if(!e.length||!t.length)return[];let n=[],r=new Set;for(let i of t)for(let a of Rte(i)){let s=Ul(a);r.has(s)||(r.add(s),n.push(a))}let o=[];for(let i of e){let a=null;for(let s of n)Ate(i.name,s)&&(!a||Ul(s).length>Ul(a).length)&&(a=s);a&&o.push({pageId:i.id,matchedBy:a})}return o}var uw="uicopilot_figma_pages:";function cA(e,t,n,r){let o=new Set(e.map(i=>i.id));if(n?.length){let i=n.filter(a=>o.has(a));if(i.length)return i}if(t){let i=e.filter(a=>a.componentCount>0).map(a=>a.id);if(i.length)return i}if(r?.length){let i=fg(e,r).map(a=>a.pageId);if(i.length)return i}return[]}function jl(e){try{let t=localStorage.getItem(uw+e);if(!t)return;let n=JSON.parse(t);if(Array.isArray(n)&&n.every(r=>typeof r=="string"))return n}catch{}}function gg(e,t){try{localStorage.setItem(uw+e,JSON.stringify(t))}catch{}}function uA(e){try{localStorage.removeItem(uw+e)}catch{}}import mg from"react";import{styled as pA}from"storybook/theming";var Fte=pA.span(({state:e})=>({width:"16px",height:"16px",borderRadius:"4px",flex:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",border:e==="none"?`1.5px solid ${Q.locked}`:"none",background:e==="none"?Q.card:W})),Mte=pA.span({width:"8px",height:"2px",background:Q.card,borderRadius:"2px"}),pw=({state:e})=>mg.createElement(Fte,{state:e},e==="all"&&mg.createElement("svg",{width:"11",height:"11",viewBox:"0 0 24 24",fill:"none",stroke:Q.card,strokeWidth:"3.4","aria-hidden":!0},mg.createElement("path",{d:"M5 13l4 4L19 7"})),e==="some"&&mg.createElement(Mte,null));import Vl from"react";import{styled as sn}from"storybook/theming";var dA='ui-monospace, "SF Mono", Menlo, Consolas, monospace',dw=Q.formBg,hg=sn.div({marginTop:"10px",border:`1px solid ${Q.border}`,borderRadius:"6px",overflow:"hidden",background:Q.card}),fA=sn.div({display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 12px",borderBottom:`1px solid ${Q.border}`}),gA=sn.span({fontSize:"10px",fontWeight:700,letterSpacing:"0.08em",textTransform:"uppercase",color:Q.muted}),fw=sn.button({border:"none",background:"none",padding:0,cursor:"pointer",fontSize:"11px",color:Q.muted,"&:hover":{color:Q.text}}),mA=sn.div({display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 12px",background:dw,borderBottom:`1px solid ${Q.border}`}),hA=sn.span({fontSize:"11px",fontWeight:500,color:Q.text}),xA=sn.span({fontSize:"10.5px",color:Q.muted,fontFamily:dA,fontVariantNumeric:"tabular-nums"}),yA=sn.div({position:"relative",padding:"6px 12px",borderBottom:`1px solid ${Q.border}`}),bA=sn.span({position:"absolute",left:"14px",top:"50%",transform:"translateY(-50%)",color:Q.muted,display:"inline-flex",pointerEvents:"none"}),wA=sn.input({width:"100%",height:"28px",paddingLeft:"20px",border:"none",outline:"none",background:"transparent",fontSize:"12px",color:Q.text,"&::placeholder":{color:Q.muted}}),vA=sn.button({width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 12px",border:"none",borderBottom:`1px solid ${Q.border}`,background:Q.accentTint,cursor:"pointer","&:hover":{filter:"brightness(0.97)"}}),gw=sn.span({display:"inline-flex",alignItems:"center",gap:"10px",minWidth:0}),SA=sn.span({fontSize:"12px",fontWeight:500,color:Q.text}),mw=sn.span({fontSize:"11px",color:Q.muted,fontFamily:dA,fontVariantNumeric:"tabular-nums",flex:"none"}),kA=sn.div({maxHeight:"180px",overflowY:"auto"}),CA=sn.button({width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",height:"32px",padding:"0 12px",border:"none",borderBottom:`1px solid ${Q.track}`,background:"transparent",cursor:"pointer","&:last-of-type":{borderBottom:"none"},"&:hover":{background:dw}}),EA=sn.span(({added:e})=>({fontSize:"12px",color:e?W:Q.text,fontWeight:e?500:400,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),TA=sn.span({fontSize:"10px",color:W,flex:"none"}),IA=sn.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"12px",padding:"8px 12px",borderTop:`1px solid ${Q.border}`,background:dw}),RA=sn.p({margin:0,fontSize:"10.5px",lineHeight:1.35,color:Q.muted}),AA=sn.button(({disabled:e})=>({flex:"none",height:"28px",padding:"0 12px",border:"none",borderRadius:"6px",fontSize:"11px",fontWeight:600,color:Q.card,background:W,cursor:e?"not-allowed":"pointer",opacity:e?.5:1,whiteSpace:"nowrap","&:hover":e?{}:{opacity:.9}})),xg=sn.div({padding:"16px 12px",fontSize:"12px",color:Q.muted,textAlign:"center"}),FA=sn.div(({theme:e,tone:t})=>({display:"flex",alignItems:"center",gap:"8px",padding:`${e.layoutMargin*.8}px ${e.layoutMargin*1.2}px`,borderBottom:`1px solid ${e.appBorderColor}`,backgroundColor:t==="warn"?`${e.color.warning}14`:`${W}12`,fontSize:e.typography.size.s1,color:e.color.defaultText})),MA=sn.span(({theme:e,tone:t})=>({width:"16px",height:"16px",borderRadius:"4px",flex:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontWeight:e.typography.weight.bold,color:e.color.lightest,backgroundColor:t==="warn"?e.color.warning:W})),PA=sn.span({lineHeight:1.4}),_A=sn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:W,backgroundColor:`${W}14`,padding:"1px 6px",borderRadius:"10px",flex:"none",maxWidth:"140px",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}));var LA=({value:e,onChange:t,total:n})=>Vl.createElement(yA,null,Vl.createElement(bA,null,Vl.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0},Vl.createElement("circle",{cx:"11",cy:"11",r:"7"}),Vl.createElement("path",{d:"m21 21-4-4"}))),Vl.createElement(wA,{type:"text",value:e,onChange:r=>t(r.target.value),placeholder:`Filter ${n} pages\u2026`,"aria-label":"Filter pages"}));var yg=({pages:e,published:t,loading:n,error:r,busy:o,initialSelection:i,stories:a,ctaVerb:s="Import",highlightAdded:c=!1,emptyHint:u,onReload:l,onCancel:d,onImport:f})=>{let[p,g]=zA(new Set),[m,C]=zA(""),v=_te("");Pte(()=>{if(!e.length)return;let w=e.map(R=>R.id).join(",");w!==v.current&&(v.current=w,g(new Set(cA(e,t,i,a))))},[e,t,i,a]);let h=BA(()=>a?.length?fg(e,a):[],[e,a]),M=BA(()=>new Map(h.map(w=>[w.pageId,w.matchedBy])),[h]);if(n)return Ft.createElement(hg,null,Ft.createElement(xg,null,"Reading your file\u2019s pages\u2026"));if(r)return Ft.createElement(hg,null,Ft.createElement(xg,null,"\u26A0 ",r," ",Ft.createElement(fw,{onClick:l},"Retry")));let L=!t&&!!a?.length,z=L&&h.length===0,A=e.length>0&&p.size===e.length,D=p.size>0&&!A,y=p.size,k=e.filter(w=>p.has(w.id)).reduce((w,R)=>w+R.componentCount,0),T=w=>g(R=>{let _=new Set(R);return _.has(w)?_.delete(w):_.add(w),_}),F=()=>g(A?new Set:new Set(e.map(w=>w.id))),S=m.trim().toLowerCase(),x=S?e.filter(w=>w.name.toLowerCase().includes(S)):e,E=M.size?[...x.filter(w=>M.has(w.id)),...x.filter(w=>!M.has(w.id))]:x;return Ft.createElement(hg,null,Ft.createElement(fA,null,Ft.createElement(gA,null,"Choose pages to import"),d&&Ft.createElement(fw,{onClick:d},"Cancel")),L&&Ft.createElement(FA,{tone:z?"warn":"ok"},Ft.createElement(MA,{tone:z?"warn":"ok"},z?"!":"\u2713"),Ft.createElement(PA,null,z?"Couldn\u2019t match your stories to page names \u2014 choose the pages you need.":`Matched ${h.length} ${h.length===1?"page":"pages"} to your Storybook.`)),Ft.createElement(mA,null,Ft.createElement(hA,null,e.length," pages"),Ft.createElement(xA,null,y," selected",t?` \xB7 ~${k} components`:"")),Ft.createElement(LA,{value:m,onChange:C,total:e.length}),Ft.createElement(vA,{type:"button",onClick:F},Ft.createElement(gw,null,Ft.createElement(pw,{state:A?"all":D?"some":"none"}),Ft.createElement(SA,null,"Select all")),Ft.createElement(mw,null,e.length," pages")),Ft.createElement(kA,null,E.length===0?Ft.createElement(xg,null,"No pages match \u201C",m,"\u201D."):E.map(w=>{let R=c&&p.has(w.id)&&!(i??[]).includes(w.id);return Ft.createElement(CA,{key:w.id,type:"button",onClick:()=>T(w.id)},Ft.createElement(gw,null,Ft.createElement(pw,{state:p.has(w.id)?"all":"none"}),Ft.createElement(EA,{added:R},w.name),R&&Ft.createElement(TA,null,"\xB7 just added"),M.has(w.id)&&Ft.createElement(_A,{title:`Matches your story "${M.get(w.id)}"`},M.get(w.id))),t&&Ft.createElement(mw,null,w.componentCount))})),Ft.createElement(IA,null,Ft.createElement(RA,null,y===0&&u?u:y===0&&z?"Pick the pages holding the components you want to review. Importing every page may exceed Figma\u2019s rate limit.":"Selected pages are fetched at full depth via the Figma API."),Ft.createElement(AA,{type:"button",disabled:y===0||o,onClick:()=>f([...p])},o?"Starting\u2026":`${s} ${y} ${y===1?"page":"pages"}`)))};var hw=to.div({marginTop:"10px"}),zte=to.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"12px",padding:"11px 13px",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius*1.5})),Dte=to.div({minWidth:0,flex:1}),Nte=to.div(({theme:e})=>({fontSize:e.typography.size.s2,color:e.color.defaultText,"& b":{color:W}})),Ote=to.div(({theme:e})=>({marginTop:"2px",fontSize:e.typography.size.s1,color:e.color.mediumdark,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"})),$te=to.button(({theme:e})=>({flex:"none",display:"inline-flex",alignItems:"center",gap:"6px",height:"28px",padding:"0 10px",border:`1px solid ${W}`,borderRadius:e.appBorderRadius*1.5,background:"transparent",color:W,fontSize:e.typography.size.s1,fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,cursor:"pointer",whiteSpace:"nowrap","&:hover":{background:`${W}14`}})),Hte=Bte`from { transform: rotate(0deg); } to { transform: rotate(360deg); }`,Ute=to.div(({theme:e})=>({padding:"11px 13px",border:`1px solid ${e.appBorderColor}`,borderRadius:e.appBorderRadius*1.5,backgroundColor:e.background.content})),jte=to.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px"}),Vte=to.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"6px",fontSize:e.typography.size.s2,color:e.color.defaultText})),Wte=to.span({display:"inline-block",width:"12px",height:"12px",border:`1.5px solid ${W}40`,borderTopColor:W,borderRadius:"50%",animation:`${Hte} 0.7s linear infinite`}),Gte=to.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontSize:e.typography.size.s1,color:e.color.mediumdark})),qte=to.div(({theme:e})=>({marginTop:"8px",height:"4px",borderRadius:"2px",backgroundColor:e.appBorderColor,overflow:"hidden"})),Yte=to.div(({pct:e})=>({width:`${e}%`,height:"100%",backgroundColor:W,transition:"width 0.3s ease"})),DA=({projectId:e,busy:t,importing:n=!1,importPct:r=0,onReimport:o})=>{let[i,a]=Lte(!1),s=pg(e,!0),c=dg(),u=jl(e);if(n)return Cn.createElement(hw,null,Cn.createElement(Ute,null,Cn.createElement(jte,null,Cn.createElement(Vte,null,Cn.createElement(Wte,null),"Re-reading components from Figma\u2026"),Cn.createElement(Gte,null,r,"%")),Cn.createElement(qte,null,Cn.createElement(Yte,{pct:r}))));if(i)return Cn.createElement(hw,null,Cn.createElement(yg,{stories:c.stories,pages:s.pages,published:s.published,loading:s.loading,error:s.error,busy:t,initialSelection:u,ctaVerb:"Re-import",highlightAdded:!0,emptyHint:"Select at least one page \u2014 or use Clear (above) to remove everything.",onReload:s.reload,onCancel:()=>a(!1),onImport:g=>{gg(e,g),o(g),a(!1)}}));let l=s.pages.length,d=u?.length??0,f=u?.length&&s.pages.length?s.pages.find(g=>u.includes(g.id))?.name:void 0,p=l>d?l-d:0;return Cn.createElement(hw,null,Cn.createElement(zte,null,Cn.createElement(Dte,null,Cn.createElement(Nte,null,d>0?Cn.createElement(Cn.Fragment,null,"Importing"," ",Cn.createElement("b",null,d,l?` of ${l}`:""," ",d===1&&!l?"page":"pages")):"Choose which pages to import"),f&&Cn.createElement(Ote,null,f,p>0?` \xB7 ${p} pages not imported`:"")),Cn.createElement($te,{onClick:()=>a(!0)},Cn.createElement("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none",stroke:"currentColor",strokeWidth:"2","aria-hidden":!0},Cn.createElement("path",{d:"M12 5v14M5 12h14"})),"Add or change pages")))};import{styled as zt,keyframes as Kte}from"storybook/theming";var bg=zt.div(({theme:e})=>({padding:"12px 16px",backgroundColor:e.background.content,fontSize:"12px"})),wg=zt.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),vg=zt.span(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"8px",fontSize:"10px",fontWeight:e.typography.weight.bold,letterSpacing:"0.06em",textTransform:"uppercase",color:e.color.mediumdark})),T6e=zt(co)({padding:"5px 12px",fontSize:"12px"}),NA=zt.dl(({theme:e})=>({display:"grid",gridTemplateColumns:"repeat(4, 1fr)",margin:"0 0 8px",borderRadius:e.appBorderRadius,backgroundColor:e.background.hoverable,overflow:"hidden"})),Wu=zt.div({padding:"8px 10px",minWidth:0}),xw=zt.div(({theme:e})=>({fontSize:"12px",color:e.color.mediumdark,padding:"4px 0"})),OA=zt.div({display:"flex",flexDirection:"column",gap:"6px",marginTop:"6px"}),$A=zt.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px"}),HA=zt.div({display:"flex",alignItems:"center",gap:"8px"}),UA=zt.span(({theme:e})=>({fontSize:"12px",color:e.color.defaultText})),jA=zt.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,color:e.color.defaultText})),VA=zt.span(({theme:e,ready:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",padding:"1px 6px",borderRadius:"3px",fontSize:"9px",fontWeight:e.typography.weight.bold,textTransform:"uppercase",letterSpacing:"0.06em",backgroundColor:t?`${e.color.positive}1a`:e.background.hoverable,color:t?e.color.positive:e.color.mediumdark})),WA=zt.button(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"4px",padding:0,border:"none",background:"transparent",cursor:"pointer",fontSize:"11px",color:e.color.mediumdark,transition:"color 0.15s","&:hover":{color:e.color.defaultText},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),GA=zt.div(({theme:e})=>({width:"100%",height:"4px",borderRadius:"2px",backgroundColor:e.appBorderColor,overflow:"hidden"})),qA=zt.div(({theme:e,pct:t,ready:n})=>({width:`${t}%`,height:"100%",borderRadius:"2px",backgroundColor:n?e.color.positive:e.color.secondary,transition:"width 0.3s ease"})),Gu=zt.dt(({theme:e})=>({fontSize:"9px",fontWeight:e.typography.weight.bold,letterSpacing:"0.06em",textTransform:"uppercase",color:e.color.mediumdark,whiteSpace:"nowrap"})),qu=zt.dd(({theme:e,plain:t})=>({margin:"2px 0 0",fontSize:"12px",color:e.color.defaultText,fontFamily:t?e.typography.fonts.base:e.typography.fonts.mono,whiteSpace:"nowrap"})),YA=zt.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})),KA=Kte`
115
115
  from { transform: rotate(0deg); }
116
116
  to { transform: rotate(360deg); }
117
- `,yw=zt.span(({theme:e,tone:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",padding:"1px 6px",borderRadius:"3px",fontSize:"9px",fontWeight:e.typography.weight.bold,textTransform:"uppercase",letterSpacing:"0.05em",backgroundColor:t==="green"?`${e.color.positive}1a`:`${W}1a`,color:t==="green"?e.color.positive:W})),XA=zt.span({display:"inline-block",width:"10px",height:"10px",border:`1.5px solid ${W}40`,borderTopColor:W,borderRadius:"50%",animation:`${KA} 0.6s linear infinite`}),Sg=zt.button(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"4px",height:"25px",padding:"2px 8px",border:"none",background:"transparent",borderRadius:e.appBorderRadius,cursor:"pointer",fontSize:"11px",fontFamily:e.typography.fonts.base,color:e.color.mediumdark,transition:"all 0.15s","&:hover:not(:disabled)":{color:e.color.defaultText,backgroundColor:e.background.hoverable},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),kg=zt.span({display:"inline-block",width:"10px",height:"10px",border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",opacity:.6,animation:`${KA} 0.6s linear infinite`}),JA=zt.div(({theme:e})=>({marginTop:"6px",padding:"6px 8px",backgroundColor:e.background.hoverable,borderRadius:"4px",color:e.color.mediumdark,lineHeight:"1.4"})),Cg=zt.span(({theme:e,type:t})=>({fontWeight:500,color:t==="added"?e.color.positive:t==="removed"?e.color.negative:e.color.warning})),Wl=zt.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"})),QA=zt.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"})),ZA=zt.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"})),e8=zt.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",marginTop:"8px",padding:"6px 8px",borderRadius:e.appBorderRadius,backgroundColor:e.background.hoverable,fontSize:"11px",lineHeight:"1.4",color:e.color.defaultText})),Es=zt.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden",marginTop:"10px"})),Ts=zt.div(({percent:e})=>({width:`${e}%`,height:"100%",backgroundColor:W,borderRadius:"3px",transition:"width 0.5s ease"})),ra=zt.div(({theme:e})=>({display:"flex",justifyContent:"space-between",marginTop:"6px",fontSize:"12px",fontWeight:500,color:e.color.defaultText}));var Jte=()=>X.createElement("svg",{viewBox:"0 0 24 24",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},X.createElement("path",{d:"M20 6 9 17l-5-5"})),Qte=()=>X.createElement("svg",{viewBox:"0 0 24 24",width:"12",height:"12",fill:"currentColor","aria-hidden":!0},X.createElement("path",{d:"M12 2.5l1.6 5.9 5.9 1.6-5.9 1.6L12 17.5l-1.6-5.9L4.5 10l5.9-1.6z"})),Zte=()=>X.createElement("svg",{viewBox:"0 0 24 24",width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},X.createElement("path",{d:"M23 4v6h-6M1 20v-6h6"}),X.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"})),n8=new Set,r8=new Map,ene=2,o8=()=>{let{userRole:e,featureFlags:t}=ve(),[n,r]=za(null),[o,i]=za(!0),[a,s]=za(!1),[c,u]=za(null),[l,d]=za(null),[f,p]=za(!1),[g,m]=za(!1),[C,v]=za(!1),{selectedProjectId:h,projects:M}=We(),{sessionToken:L}=we(),z=bw(null),A=bw(null),D=bw(null),y=t8(()=>{z.current&&(clearInterval(z.current),z.current=null),A.current&&(clearInterval(A.current),A.current=null),D.current&&(clearTimeout(D.current),D.current=null)},[]);Yu(()=>y,[y]);let k=t8(async()=>{if(!(!h||!L))try{let H=q(),V=await J(`${H}/api/figma/cache-status?projectId=${h}`,{headers:{Authorization:`Bearer ${L}`}});if(V.ok){let Z=await V.json();r(Z)}}catch(H){console.error("[FigmaCacheSection] Error:",H)}finally{i(!1)}},[h,L]);Yu(()=>{k()},[k]),Yu(()=>{if(o||a||!n||n.structureStatus!=="none"||!h||n8.has(h))return;let H=M.find(Z=>Z.id===h);(H?.figmaFileUrl||H?.figmaFileId)&&(n8.add(h),T())},[o,a,n?.structureStatus,h,M]),Yu(()=>{if(!h)return;let H=r8.get(h)??0;iA({loading:o,reloading:a,crawlStatus:n?.crawlProgress?.status,pagesFailed:n?.crawlProgress?.pagesFailed,tries:H,max:ene})&&(r8.set(h,H+1),T())},[o,a,n?.crawlProgress?.status,n?.crawlProgress?.pagesFailed,h]),Yu(()=>{let H=n?.thumbnailProgress?.status,V=n?.enrichmentProgress?.status,Z=n?.thumbnailProgress?.cached??0,Y=n?.thumbnailProgress?.total??0,re=H==="in-progress"||H==="pending"||Y>0&&Z<Y,xe=V==="in-progress"||V==="pending",me=!n?.thumbnailProgress&&n?.structureStatus==="cached",Xe=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling";if(!(Xe||re||xe||me)||!Xe&&(!n||n.structureStatus==="none"))return;let fe=setInterval(()=>{k()},3e3);return()=>{clearInterval(fe)}},[n?.thumbnailProgress?.status,n?.thumbnailProgress?.cached,n?.thumbnailProgress?.total,n?.enrichmentProgress?.status,n?.crawlProgress?.status,n?.structureStatus,k]);let T=async H=>{if(!h||!L)return;let V=Array.isArray(H)?H:void 0;s(!0),u(null),d(null);try{let Z=q(),Y=await J(`${Z}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify(V?.length?{projectId:h,pageIds:V}:{projectId:h})});if(!Y.ok){if(Y.status===403){let xe=await Y.json().catch(()=>({}));u(xe.requiresAuth?"auth":"generic")}else u("generic");return}let re=await Y.json().catch(()=>({}));if(re?.status==="skipped-unchanged")d("Figma file unchanged \u2014 reused cached structure.");else if(re?.status==="crawl-started"||re?.status==="retry-started"){if(re?.status==="retry-started"){let xe=re.retryPages;d(`Retrying ${xe?`${xe} `:""}page${xe===1?"":"s"} that hit Figma's rate limit\u2026`)}try{Xte.getChannel()?.emit(ug,{projectId:h})}catch{}}await k()}catch(Z){console.error("[FigmaCacheSection] Crawl start error:",Z),u("generic")}finally{s(!1)}},F=async()=>{if(!(!h||!L)){p(!0);try{let H=q(),V=await J(`${H}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify({projectId:h})});if(console.log("[FigmaCacheSection] Cache invalidate response:",V.status),!V.ok){u("generic");return}await J(`${H}/api/figma/frames/invalidate?projectId=${h}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`}}).catch(()=>{}),h&&uA(h),r({structureStatus:"none",structureCachedAt:null,componentSetCount:0,componentCount:0,pageCount:0,pages:[],cacheDiff:null,thumbnailProgress:null,enrichmentProgress:null,crawlProgress:null})}catch(H){console.error("[FigmaCacheSection] Clear cache error:",H)}finally{p(!1)}}},S=async()=>{if(!(!h||!L)){y(),m(!0);try{let H=q();await J(`${H}/api/figma/enrich`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify({projectId:h})}),z.current=setInterval(async()=>{await k()},3e3),A.current=setInterval(()=>{(n?.enrichmentProgress?.status==="complete"||n?.enrichmentProgress?.status==="error")&&(y(),m(!1),k())},3e3),D.current=setTimeout(()=>{y(),m(!1)},6e5)}catch(H){console.error("[FigmaCacheSection] Enrich error:",H),y(),m(!1)}}},x=async()=>{if(!(!h||!L)){v(!0);try{let H=q();await J(`${H}/api/figma/cancel`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify({projectId:h})}),await k()}catch(H){console.error("[FigmaCacheSection] Cancel error:",H)}finally{v(!1),m(!1),s(!1)}}},E=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling"||n?.thumbnailProgress?.status==="in-progress"||n?.enrichmentProgress?.status==="in-progress";if(!h)return null;if(o)return X.createElement(bg,null,X.createElement(wg,null,X.createElement(vg,null,"Figma Sync")),X.createElement(xw,null,"Loading sync status\u2026"),X.createElement(Es,null,X.createElement(Ts,{percent:100,style:{opacity:.3}})));if(!n||n.structureStatus==="none")return X.createElement(bg,null,X.createElement(wg,null,X.createElement(vg,null,"Figma Sync"),X.createElement(fi,{loading:a,onClick:T,loadingText:"Loading..."},"\u21BB Load")),n?.crawlProgress?.status==="crawling"?X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{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}})),X.createElement(ra,null,X.createElement("span",null,"Reading components from Figma\u2026"),X.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026"))):a?X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{percent:100,style:{animation:"none",opacity:.3}})),X.createElement(ra,null,X.createElement("span",null,"Starting crawl\u2026"))):X.createElement(xw,null,"No cache \u2014 click Load to fetch from Figma"),n?.crawlProgress?.status==="error"&&X.createElement(Wl,null,"Crawl failed",n.crawlProgress.error?`: ${n.crawlProgress.error}`:"",". Try Load again."),c==="auth"&&X.createElement(Wl,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),c==="generic"&&X.createElement(Wl,null,"Failed to load Figma cache. Check the browser console for details."));let w=H=>{let V=Date.now()-new Date(H).getTime(),Z=Math.floor(V/6e4);if(Z<1)return"just now";if(Z<60)return`${Z}m ago`;let Y=Math.floor(Z/60);return Y<24?`${Y}h ago`:`${Math.floor(Y/24)}d ago`},R=H=>H>=1024*1024*1024?`${(H/1024/1024/1024).toFixed(1)} GB`:H>=1024*1024?`${Math.round(H/1024/1024)} MB`:`${Math.max(1,Math.round(H/1024))} KB`,_=n.crawlProgress?.bytesDownloaded,P=n.cacheDiff,N=P&&(P.added.length>0||P.removed.length>0||P.renamed.length>0),I=n.crawlProgress,O=I?.pagesTotal??0,j=I?.pagesDone??0,B=I?.status==="crawling"||a,se=O>0?Math.round(j/O*100):a?8:0;return X.createElement(bg,null,X.createElement(wg,null,X.createElement(vg,null,"Figma Sync"," ",n.crawlProgress?.status==="crawling"?X.createElement(yw,{tone:"orange"},X.createElement(XA,null),"Importing"):n.structureStatus==="cached"?X.createElement(yw,{tone:"green"},X.createElement(Jte,null),"Synced"):X.createElement(YA,{status:n.structureStatus},n.structureStatus)),X.createElement("div",{style:{display:"flex",gap:"2px"}},e==="admin"&&X.createElement(Sg,{onClick:S,disabled:g},g?X.createElement(kg,null):X.createElement(Qte,null),g?"Enriching\u2026":"Enrich"),X.createElement(Sg,{onClick:F,disabled:f},f&&X.createElement(kg,null),f?"Clearing\u2026":"Clear"),X.createElement(Sg,{onClick:()=>T(h?jl(h):void 0),disabled:a},a?X.createElement(kg,null):X.createElement(Zte,null),a?"Reloading\u2026":"Reload"),E&&X.createElement(fi,{loading:C||n?.crawlProgress?.status==="cancelling",onClick:x,variant:"ghost",loadingText:"Stopping..."},"\u2715 Stop"))),n?.crawlProgress?.status==="crawling"&&!((n.crawlProgress.pagesTotal??0)>0&&n.crawlProgress.pagesDone>=n.crawlProgress.pagesTotal)&&X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{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}})),X.createElement(ra,null,X.createElement("span",null,n.crawlProgress.phase==="repairing"?"Fetching variants for deeply-nested components\u2026":n.crawlProgress.currentPage?`Reading \u201C${n.crawlProgress.currentPage}\u201D\u2026`:"Re-reading components from Figma\u2026"),X.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026")),(n.crawlProgress.setsFound??0)>0&&X.createElement(ra,null,X.createElement("span",null,n.crawlProgress.setsFound," component set",n.crawlProgress.setsFound===1?"":"s"," \xB7"," ",n.crawlProgress.variantsFound??0," variant",n.crawlProgress.variantsFound===1?"":"s"," so far"))),a&&n?.crawlProgress?.status!=="crawling"&&X.createElement(ra,null,X.createElement("span",null,"Starting crawl\u2026")),c==="auth"&&X.createElement(Wl,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),c==="generic"&&X.createElement(Wl,null,"Failed to reload Figma sync. Check the browser console for details."),X.createElement(NA,null,X.createElement(Wu,null,X.createElement(Gu,null,"Component sets"),X.createElement(qu,null,n.componentSetCount)),X.createElement(Wu,null,X.createElement(Gu,null,"Pages"),X.createElement(qu,null,n.pageCount)),typeof _=="number"&&_>0&&X.createElement(Wu,null,X.createElement(Gu,null,"Size"),X.createElement(qu,null,"\u2248 ",R(_))),n.structureCachedAt&&X.createElement(Wu,null,X.createElement(Gu,null,"Updated"),X.createElement(qu,{plain:!0},w(n.structureCachedAt)))),X.createElement(e8,null,X.createElement("span",{"aria-hidden":!0},"\u2139\uFE0F"),X.createElement("span",null,X.createElement("strong",null,"Components only")," for now \u2014 plain Figma frames aren't indexed yet (support planned).")),h&&X.createElement(DA,{projectId:h,busy:a,importing:B,importPct:se,onReimport:T}),n.crawlProgress?.status==="complete"&&n.crawlProgress.pagesFailed>0&&X.createElement(QA,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&&X.createElement(ZA,null,"\u2713 ",l),N&&X.createElement(JA,null,"Since last reload:"," ",P.added.length>0&&X.createElement(Cg,{type:"added"},"+",P.added.length," added"),P.added.length>0&&P.removed.length>0&&" \xB7 ",P.removed.length>0&&X.createElement(Cg,{type:"removed"},"\u2212",P.removed.length," removed"),(P.added.length>0||P.removed.length>0)&&P.renamed.length>0&&" \xB7 ",P.renamed.length>0&&X.createElement(Cg,{type:"renamed"},P.renamed.length," renamed")),n.thumbnailProgress&&n.thumbnailProgress.status==="in-progress"&&X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{percent:n.thumbnailProgress.total>0?Math.round(n.thumbnailProgress.cached/n.thumbnailProgress.total*100):0})),X.createElement(ra,null,X.createElement("span",null,"Preparing thumbnails\u2026",n.thumbnailProgress.currentName&&X.createElement(X.Fragment,null," ",n.thumbnailProgress.currentName)),X.createElement("span",null,n.thumbnailProgress.cached,"/",n.thumbnailProgress.total))),n.thumbnailProgress?.status!=="in-progress"&&(()=>{let H=n.thumbnailProgress,V=H?.cached??0,Z=H?.total??0,Y=Z>0&&V>=Z,re=Z>0&&V<Z,xe=Z>0?Math.min(100,Math.round(V/Z*100)):0;return X.createElement(OA,null,X.createElement($A,null,X.createElement(HA,null,X.createElement(UA,null,"Thumbnails",Z>0&&X.createElement(X.Fragment,null," ",X.createElement(jA,null,V," / ",Z))),X.createElement(VA,{ready:Y},Y?"\u2713 Ready":re?"Partial":"Not generated")),X.createElement(WA,{onClick:T,disabled:a},"\u21BB ",Y?"Rebuild":"Reload")),Z>0&&X.createElement(GA,null,X.createElement(qA,{pct:Y?100:xe,ready:Y})))})(),n.enrichmentProgress&&n.enrichmentProgress.status==="in-progress"&&X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{percent:n.enrichmentProgress.total>0?Math.round(n.enrichmentProgress.enriched/n.enrichmentProgress.total*100):0})),X.createElement(ra,null,X.createElement("span",null,"AI descriptions: generating\u2026",n.enrichmentProgress.currentName&&X.createElement(X.Fragment,null," ",n.enrichmentProgress.currentName)),X.createElement("span",null,n.enrichmentProgress.enriched," of"," ",n.enrichmentProgress.total," component sets"))),n.enrichmentProgress&&n.enrichmentProgress.status==="complete"&&X.createElement(X.Fragment,null,X.createElement(ra,null,X.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&&X.createElement("div",{style:{marginTop:"6px"}},X.createElement(Cf,{inputTokens:n.enrichmentProgress.inputTokens||0,outputTokens:n.enrichmentProgress.outputTokens||0,costUsd:n.enrichmentProgress.costUsd,compact:!0})))};import $t,{useState as Gl}from"react";import{styled as hi}from"storybook/theming";Ce();Me();nt();var ww=hi.div({padding:"12px 16px"}),tne=hi.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),i8=hi.label(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),a8=hi.button(({theme:e})=>({background:"none",border:"none",fontSize:"12px",color:W,cursor:"pointer",padding:0,"&:hover":{textDecoration:"underline"}})),nne=hi.div({display:"flex",gap:"8px",alignItems:"center"}),rne=hi.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:W,boxShadow:`0 0 0 1px ${W}`},"&::placeholder":{color:e.color.mediumlight,fontFamily:"inherit"}})),s8=hi.span(({theme:e,variant:t})=>({fontSize:"12px",color:t==="success"?e.color.positive:t==="error"?e.color.negative:e.color.mediumdark,marginTop:"6px",display:"block",lineHeight:1.4})),one=hi.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,marginTop:"8px",lineHeight:1.5,"& a":{color:W,textDecoration:"none","&:hover":{textDecoration:"underline"}},"& ol":{margin:"4px 0 0 16px",padding:0},"& li":{marginBottom:"2px"}})),ine=hi.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})),ane=hi.button(({theme:e})=>({background:"none",border:"none",fontSize:"11px",color:"#dc2626",cursor:"pointer",marginLeft:"auto","&:hover":{textDecoration:"underline"}})),l8=({onConnected:e,defaultExpanded:t=!1})=>{let{sessionToken:n}=we(),[r,o]=Gl(t),[i,a]=Gl(""),[s,c]=Gl(!1),[u,l]=Gl(null),[d,f]=Gl(null),[p,g]=Gl(!1),m=async()=>{if(!(!i.trim()||!n)){c(!0),l(null);try{let C=q(),v=await J(`${C}/api/figma/pat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({token:i.trim()})}),h=await v.json();if(!v.ok){l({type:"error",message:h.error||"Failed to save token"});return}f(h.figmaUser?.handle||h.figmaUser?.email||"Connected"),l({type:"success",message:`Connected as ${h.figmaUser?.handle||"Figma user"}`}),a(""),e?.()}catch{l({type:"error",message:"Failed to connect. Check your token and try again."})}finally{c(!1)}}};return d?$t.createElement(ww,null,$t.createElement(i8,null,"Figma Personal Access Token"),$t.createElement(ine,null,$t.createElement("span",null,"\u2713 Connected as ",$t.createElement("strong",null,d)),$t.createElement(ane,{onClick:()=>{f(null),l(null)}},"Change token"))):r?$t.createElement(ww,null,$t.createElement(tne,null,$t.createElement(i8,null,"Figma Personal Access Token"),$t.createElement(a8,{onClick:()=>g(!p)},p?"Hide instructions":"How to generate")),p&&$t.createElement(one,null,$t.createElement("ol",null,$t.createElement("li",null,"Open"," ",$t.createElement("a",{href:"https://www.figma.com/settings",target:"_blank",rel:"noopener noreferrer"},"Figma Settings")),$t.createElement("li",null,"Click the ",$t.createElement("strong",null,"Security")," tab"),$t.createElement("li",null,"Scroll to ",$t.createElement("strong",null,"Personal access tokens")),$t.createElement("li",null,"Click ",$t.createElement("strong",null,"Generate new token")),$t.createElement("li",null,"Enable ",$t.createElement("strong",null,"File content: Read only")," under Scopes"),$t.createElement("li",null,"Copy the token and paste it below"))),$t.createElement(nne,null,$t.createElement(rne,{type:"password",value:i,onChange:C=>a(C.target.value),placeholder:"figd_...",onKeyDown:C=>{C.key==="Enter"&&i.trim()&&m()}}),$t.createElement(tn,{onClick:m,disabled:!i.trim()||s},s?"Verifying...":"Save & Verify")),u&&$t.createElement(s8,{variant:u.type},u.message),$t.createElement(s8,{variant:"info"},"Read-only access. Your token is stored securely and never shared.")):$t.createElement(ww,null,$t.createElement(a8,{onClick:()=>o(!0)},"Or use a Personal Access Token \u2192"))};Ce();Me();nt();var cne=Ht.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ht.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"}),Ht.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"}),Ht.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),Ht.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"}),Ht.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"})),vw=Da.div({}),une=Da.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"10px 16px",backgroundColor:e.background.hoverable,borderBottom:`1px solid ${e.appBorderColor}`})),pne=Da.div({width:"16px",height:"16px",display:"flex",alignItems:"center","& svg":{width:"14px",height:"14px"}}),dne=Da.span(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText,flex:1})),Sw=Da.div({"& > *":{border:"none",borderRadius:0,marginBottom:0,borderBottom:"1px solid rgba(0,0,0,0.06)","&:last-child":{borderBottom:"none"}}}),fne=Da.div({padding:"20px 16px",display:"flex",flexDirection:"column",gap:"12px"}),s7e=Da.button({display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",padding:"8px 16px",backgroundColor:Dk,color:"#fff",border:"none",borderRadius:"6px",fontSize:"13px",fontWeight:600,cursor:"pointer","&:hover":{backgroundColor:Nk}}),gne=Da.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}})),u8=({hideHeader:e=!1})=>{let{sessionToken:t}=we(),n=!!t&&t.startsWith("uic_anon_"),[r,o]=Ku(!1),[i,a]=Ku(0),[s,c]=Ku(()=>{try{let v=sessionStorage.getItem("uicopilot_figma_connection");if(v){let{connected:h,ts:M}=JSON.parse(v);if(Date.now()-M<300*1e3)return h}}catch{}return null}),[u,l]=Ku(!1),[d,f]=Ku(!1),p=lne();sne(()=>{if(!t)return;let v=q();J(`${v}/api/figma/connection-status`,{headers:{Authorization:`Bearer ${t}`}}).then(h=>h.json()).then(h=>{let M=!!h.connected;l(!!h.expired),c(M);try{sessionStorage.setItem("uicopilot_figma_connection",JSON.stringify({connected:M,ts:Date.now()}))}catch{}}).catch(()=>c(!1))},[t]);let g=c8(()=>{let v=q(),h=`${v}/api/auth/figma/login?addon=true`;window.open(h,"figma-oauth","width=600,height=700,left=200,top=100");let M=setInterval(async()=>{try{(await(await J(`${v}/api/figma/connection-status`,{headers:t?{Authorization:`Bearer ${t}`}:{}})).json()).connected&&(clearInterval(M),c(!0))}catch{}},2e3);setTimeout(()=>clearInterval(M),300*1e3)},[t]),m=c8(async()=>{try{o(!0);let v=q(),h=await J(`${v}/api/figma/disconnect`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(h.ok||h.status===404){c(!1);try{sessionStorage.removeItem("uicopilot_figma_connection")}catch{}}}catch{}finally{o(!1)}},[t]),C=e?null:Ht.createElement(une,null,Ht.createElement(pne,null,cne),Ht.createElement(dne,null,"Figma Integration"));return s===null?Ht.createElement(vw,null,C,Ht.createElement(Sw,null,Ht.createElement("div",{style:{padding:"16px",fontSize:"13px",color:p.color.mediumdark}},"Checking Figma connection..."))):s===!1?Ht.createElement(vw,null,C,Ht.createElement(Sw,null,Ht.createElement(fne,null,u&&Ht.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:p.color.warning}},"\u26A0\uFE0F Your Figma access has expired. Please reconnect."),Ht.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:p.color.mediumdark}},"Requires a Figma ",Ht.createElement("strong",null,"Dev or Full seat"),". Free/Viewer seats can't grant design-read access."),!n&&Ht.createElement(Ht.Fragment,null,Ht.createElement(tn,{onClick:g,style:{width:"100%"}},u?"Reconnect Figma":"Connect with Figma"),Ht.createElement(gne,null,"or")),Ht.createElement(l8,{onConnected:()=>c(!0),defaultExpanded:n})))):Ht.createElement(vw,null,C,Ht.createElement(sg,{connected:!0,label:"Connected to Figma",actionLabel:r?"Disconnecting\u2026":"Disconnect",actionDisabled:r,actionTitle:"Disconnect Figma",onAction:()=>f(!0)}),Ht.createElement(Dr,{isOpen:d,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:()=>{f(!1),m()},onCancel:()=>f(!1)}),Ht.createElement(Sw,null,Ht.createElement(nA,{onFigmaFileChanged:()=>a(v=>v+1)}),Ht.createElement(oA,{refreshKey:i}),Ht.createElement(o8,null)))};Ce();pn();import{styled as fn}from"storybook/theming";var p8=fn.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:1e3,display:"flex",justifyContent:"center",alignItems:"flex-start",paddingTop:"40px"}),d8=fn.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"14px",border:`1px solid ${e.appBorderColor}`,boxShadow:"0 16px 48px rgba(0, 0, 0, 0.22)",width:"820px",maxWidth:"94%",maxHeight:"calc(100vh - 80px)",display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"})),f8=fn.header(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",height:"48px",padding:"0 16px",borderBottom:`1px solid ${e.appBorderColor}`,flexShrink:0})),g8=fn.div({display:"flex",alignItems:"center",gap:"8px"}),m8=fn.span(({theme:e})=>({fontSize:"14px",fontWeight:e.typography.weight.bold,letterSpacing:"-0.01em",color:e.color.defaultText})),h8=fn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:e.color.mediumdark})),x8=fn.button(({theme:e})=>({width:"28px",height:"28px",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:e.appBorderRadius,color:e.color.mediumdark,backgroundColor:"transparent",border:"none",cursor:"pointer",fontSize:"18px",lineHeight:1,transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable}})),y8=fn.div({display:"flex",flex:1,minHeight:"440px",overflow:"hidden"}),b8=fn.nav(({theme:e})=>({width:"178px",flexShrink:0,backgroundColor:e.background.app,padding:"12px 8px",display:"flex",flexDirection:"column",gap:"2px"})),w8=fn.button(({theme:e,active:t})=>({position:"relative",width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"0 8px 0 12px",height:"32px",borderRadius:e.appBorderRadius,border:"none",cursor:"pointer",textAlign:"left",backgroundColor:t?e.background.hoverable:"transparent",color:t?e.color.defaultText:e.color.mediumdark,transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable},"& svg":{flexShrink:0}})),v8=fn.span({position:"absolute",left:0,top:"6px",bottom:"6px",width:"2px",borderRadius:"2px",backgroundColor:W}),S8=fn.span(({theme:e})=>({fontSize:"12px",fontWeight:e.typography.weight.bold,lineHeight:1})),k8=fn.div(({theme:e})=>({flex:1,overflowY:"auto",backgroundColor:e.background.content,borderLeft:`1px solid ${e.appBorderColor}`,padding:"20px"})),Eg=fn.header({display:"flex",alignItems:"center",gap:"10px",marginBottom:"16px"}),C8=fn.div({width:"28px",height:"28px",borderRadius:"7px",backgroundColor:W,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontWeight:700,letterSpacing:"0.3px",flexShrink:0}),kw=fn.div(({theme:e})=>({width:"28px",height:"28px",borderRadius:"7px",backgroundColor:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,color:e.color.mediumdark,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0})),Tg=fn.h3(({theme:e})=>({margin:0,fontSize:"13px",fontWeight:e.typography.weight.bold,color:e.color.defaultText,lineHeight:1.2})),Ig=fn.p(({theme:e})=>({margin:"3px 0 0",fontSize:"11px",color:e.color.mediumdark,lineHeight:1.2})),Rg=fn.div({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"}}),Cw=fn.div(({theme:e})=>({padding:"16px",borderRadius:"10px",border:`1px dashed ${e.appBorderColor}`,backgroundColor:e.background.app,fontSize:"12px",color:e.color.mediumdark,lineHeight:1.5})),E8=fn.footer(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",height:"44px",padding:"0 16px",borderTop:`1px solid ${e.appBorderColor}`,flexShrink:0})),T8=fn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:e.color.mediumdark})),I8=fn.div({display:"flex",alignItems:"center",gap:"6px"}),R8=fn.button(({theme:e})=>({height:"28px",padding:"0 12px",fontSize:"11px",fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,border:"none",borderRadius:e.appBorderRadius*2,background:"transparent",color:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable}}));var A8=()=>Ue.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"},Ue.createElement("path",{d:"M4 4h5l2 3h9a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"})),yne=[{id:"account",label:"Account",icon:Rc},{id:"project",label:"Project",icon:A8},{id:"figma",label:"Figma",icon:$i}],F8=({onClose:e})=>{let{isConnected:t}=we(),{selectedProjectId:n}=We(),[r,o]=xne("account"),i=Ag(t),a=Ag(!t),s=Ag(!1),c=Ag(!1);hne(()=>{a.current&&!s.current&&!i.current&&t&&n&&(s.current=!0,e()),i.current=t},[t,n,e]);let u=()=>r==="account"?Ue.createElement(Ue.Fragment,null,Ue.createElement(Eg,null,Ue.createElement(C8,null,"UI"),Ue.createElement("div",null,Ue.createElement(Tg,null,Kt.NAME," account"),Ue.createElement(Ig,null,"Deterministic Figma \u2194 code comparison"))),Ue.createElement(Rg,null,Ue.createElement(XR,{onConnect:e}))):r==="project"?Ue.createElement(Ue.Fragment,null,Ue.createElement(Eg,null,Ue.createElement(kw,null,Ue.createElement(A8,null)),Ue.createElement("div",null,Ue.createElement(Tg,null,"Project"),Ue.createElement(Ig,null,"The Storybook project being compared"))),t?Ue.createElement(Rg,null,Ue.createElement(ZR,null)):Ue.createElement(Cw,null,"Sign in on the ",Ue.createElement("strong",null,"Account")," tab first to choose a project.")):Ue.createElement(Ue.Fragment,null,Ue.createElement(Eg,null,Ue.createElement(kw,null,Ue.createElement($i,null)),Ue.createElement("div",null,Ue.createElement(Tg,null,"Figma integration"),Ue.createElement(Ig,null,"Source of truth for design tokens"))),t&&n?Ue.createElement(Rg,null,Ue.createElement(u8,{hideHeader:!0})):Ue.createElement(Cw,null,t?"Select a project on the Project tab before connecting Figma.":"Sign in on the Account tab first, then pick a project to connect Figma."));return Ue.createElement(p8,{onMouseDown:l=>{c.current=l.target===l.currentTarget},onClick:l=>{c.current&&l.target===l.currentTarget&&e()}},Ue.createElement(d8,{onClick:l=>l.stopPropagation()},Ue.createElement(f8,null,Ue.createElement(g8,null,Ue.createElement(m8,null,"Settings"),Ue.createElement(h8,null,"v","0.20.0")),Ue.createElement(x8,{onClick:e,title:"Close settings","aria-label":"Close"},"\xD7")),Ue.createElement(y8,null,Ue.createElement(b8,null,yne.map(l=>{let d=l.icon,f=r===l.id;return Ue.createElement(w8,{key:l.id,active:f,onClick:()=>o(l.id)},f&&Ue.createElement(v8,null),Ue.createElement(d,null),Ue.createElement(S8,null,l.label))})),Ue.createElement(k8,null,u())),Ue.createElement(E8,null,Ue.createElement(T8,null,Kt.NAME," \xB7 settings synced"),Ue.createElement(I8,null,Ue.createElement(R8,{onClick:e},"Cancel"),Ue.createElement(tn,{onClick:e},"Done")))))};Ce();pn();import Xt from"react";import Jo from"react";import{styled as xn,keyframes as bne}from"storybook/theming";var oa=xn.div({marginTop:"10px",padding:"12px",borderRadius:"8px",border:`1px solid ${Q.border}`,background:Q.formBg,display:"flex",flexDirection:"column",gap:"10px"}),M8=xn.button({display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",padding:"9px",borderRadius:"8px",border:`1px solid ${Q.border}`,background:Q.card,color:Q.text,fontSize:"13px",fontWeight:600,cursor:"pointer","&:hover":{background:Q.formBg}}),Xu=xn.div({fontSize:"11px",color:Q.muted,textAlign:"center"}),P8=xn.div({display:"flex",alignItems:"center",gap:"8px","&::before, &::after":{content:'""',flex:1,height:"1px",background:Q.border},fontSize:"11px",color:Q.muted}),_8=xn.button({width:"100%",padding:"9px",borderRadius:"6px",border:`1px dashed ${W}`,background:Q.card,color:W,fontSize:"12px",fontWeight:600,cursor:"pointer","&:hover":{background:Q.accentTint},"&:disabled":{opacity:.6,cursor:"default"}}),Na=xn.label({fontSize:"11px",fontWeight:600,color:Q.subText,display:"block",marginBottom:"4px"}),Is=xn.input({width:"100%",padding:"7px 10px",fontSize:"12px",borderRadius:"6px",border:`1px solid ${Q.border}`,background:Q.card,color:Q.text,outline:"none","&:focus":{borderColor:W},"&:disabled":{background:Q.formBg,color:Q.muted}}),L8=xn.select({width:"100%",padding:"7px 10px",fontSize:"12px",borderRadius:"6px",border:`1px solid ${Q.border}`,background:Q.card,color:Q.text}),Xo=xn.button(({disabled:e})=>({width:"100%",padding:"8px",borderRadius:"6px",border:"none",fontSize:"12px",fontWeight:600,color:Q.card,cursor:e?"not-allowed":"pointer",background:W,opacity:e?.5:1,"&:hover":e?{}:{background:lo}})),Ew=xn.div({marginTop:"10px",fontSize:"11px",lineHeight:1.4,padding:"8px 10px",borderRadius:"6px",background:Q.calloutBg,color:Q.calloutText}),B8=xn.div({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px"}),z8=xn.div({display:"flex",flexDirection:"column",gap:"8px",padding:"10px",borderRadius:"6px",border:`1px solid ${Q.border}`,background:Q.card}),D8=xn.div({display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"11px",color:Q.subText}),N8=xn.span({fontVariantNumeric:"tabular-nums",color:Q.muted}),Fg=xn.div({height:"4px",width:"100%",borderRadius:"999px",background:Q.track,overflow:"hidden"}),Mg=xn.div(({pct:e})=>({height:"100%",width:`${Math.min(100,Math.max(0,e))}%`,borderRadius:"999px",background:W,transition:"width 0.3s ease"})),wne=bne`
117
+ `,yw=zt.span(({theme:e,tone:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",padding:"1px 6px",borderRadius:"3px",fontSize:"9px",fontWeight:e.typography.weight.bold,textTransform:"uppercase",letterSpacing:"0.05em",backgroundColor:t==="green"?`${e.color.positive}1a`:`${W}1a`,color:t==="green"?e.color.positive:W})),XA=zt.span({display:"inline-block",width:"10px",height:"10px",border:`1.5px solid ${W}40`,borderTopColor:W,borderRadius:"50%",animation:`${KA} 0.6s linear infinite`}),Sg=zt.button(({theme:e})=>({display:"inline-flex",alignItems:"center",gap:"4px",height:"25px",padding:"2px 8px",border:"none",background:"transparent",borderRadius:e.appBorderRadius,cursor:"pointer",fontSize:"11px",fontFamily:e.typography.fonts.base,color:e.color.mediumdark,transition:"all 0.15s","&:hover:not(:disabled)":{color:e.color.defaultText,backgroundColor:e.background.hoverable},"&:disabled":{opacity:.5,cursor:"not-allowed"}})),kg=zt.span({display:"inline-block",width:"10px",height:"10px",border:"1.5px solid currentColor",borderTopColor:"transparent",borderRadius:"50%",opacity:.6,animation:`${KA} 0.6s linear infinite`}),JA=zt.div(({theme:e})=>({marginTop:"6px",padding:"6px 8px",backgroundColor:e.background.hoverable,borderRadius:"4px",color:e.color.mediumdark,lineHeight:"1.4"})),Cg=zt.span(({theme:e,type:t})=>({fontWeight:500,color:t==="added"?e.color.positive:t==="removed"?e.color.negative:e.color.warning})),Wl=zt.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"})),QA=zt.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"})),ZA=zt.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"})),e8=zt.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"6px",marginTop:"8px",padding:"6px 8px",borderRadius:e.appBorderRadius,backgroundColor:e.background.hoverable,fontSize:"11px",lineHeight:"1.4",color:e.color.defaultText})),Es=zt.div(({theme:e})=>({width:"100%",height:"8px",backgroundColor:e.appBorderColor,borderRadius:"4px",overflow:"hidden",marginTop:"10px"})),Ts=zt.div(({percent:e})=>({width:`${e}%`,height:"100%",backgroundColor:W,borderRadius:"3px",transition:"width 0.5s ease"})),ra=zt.div(({theme:e})=>({display:"flex",justifyContent:"space-between",marginTop:"6px",fontSize:"12px",fontWeight:500,color:e.color.defaultText}));var Jte=()=>X.createElement("svg",{viewBox:"0 0 24 24",width:"10",height:"10",fill:"none",stroke:"currentColor",strokeWidth:"3",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},X.createElement("path",{d:"M20 6 9 17l-5-5"})),Qte=()=>X.createElement("svg",{viewBox:"0 0 24 24",width:"12",height:"12",fill:"currentColor","aria-hidden":!0},X.createElement("path",{d:"M12 2.5l1.6 5.9 5.9 1.6-5.9 1.6L12 17.5l-1.6-5.9L4.5 10l5.9-1.6z"})),Zte=()=>X.createElement("svg",{viewBox:"0 0 24 24",width:"12",height:"12",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},X.createElement("path",{d:"M23 4v6h-6M1 20v-6h6"}),X.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"})),n8=new Set,r8=new Map,ene=2,o8=()=>{let{userRole:e,featureFlags:t}=ve(),[n,r]=za(null),[o,i]=za(!0),[a,s]=za(!1),[c,u]=za(null),[l,d]=za(null),[f,p]=za(!1),[g,m]=za(!1),[C,v]=za(!1),{selectedProjectId:h,projects:M}=We(),{sessionToken:L}=we(),z=bw(null),A=bw(null),D=bw(null),y=t8(()=>{z.current&&(clearInterval(z.current),z.current=null),A.current&&(clearInterval(A.current),A.current=null),D.current&&(clearTimeout(D.current),D.current=null)},[]);Yu(()=>y,[y]);let k=t8(async()=>{if(!(!h||!L))try{let H=q(),V=await J(`${H}/api/figma/cache-status?projectId=${h}`,{headers:{Authorization:`Bearer ${L}`}});if(V.ok){let Z=await V.json();r(Z)}}catch(H){console.error("[FigmaCacheSection] Error:",H)}finally{i(!1)}},[h,L]);Yu(()=>{k()},[k]),Yu(()=>{if(o||a||!n||n.structureStatus!=="none"||!h||n8.has(h))return;let H=M.find(Z=>Z.id===h);(H?.figmaFileUrl||H?.figmaFileId)&&(n8.add(h),T())},[o,a,n?.structureStatus,h,M]),Yu(()=>{if(!h)return;let H=r8.get(h)??0;iA({loading:o,reloading:a,crawlStatus:n?.crawlProgress?.status,pagesFailed:n?.crawlProgress?.pagesFailed,tries:H,max:ene})&&(r8.set(h,H+1),T())},[o,a,n?.crawlProgress?.status,n?.crawlProgress?.pagesFailed,h]),Yu(()=>{let H=n?.thumbnailProgress?.status,V=n?.enrichmentProgress?.status,Z=n?.thumbnailProgress?.cached??0,Y=n?.thumbnailProgress?.total??0,re=H==="in-progress"||H==="pending"||Y>0&&Z<Y,xe=V==="in-progress"||V==="pending",me=!n?.thumbnailProgress&&n?.structureStatus==="cached",Xe=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling";if(!(Xe||re||xe||me)||!Xe&&(!n||n.structureStatus==="none"))return;let fe=setInterval(()=>{k()},3e3);return()=>{clearInterval(fe)}},[n?.thumbnailProgress?.status,n?.thumbnailProgress?.cached,n?.thumbnailProgress?.total,n?.enrichmentProgress?.status,n?.crawlProgress?.status,n?.structureStatus,k]);let T=async H=>{if(!h||!L)return;let V=Array.isArray(H)?H:void 0;s(!0),u(null),d(null);try{let Z=q(),Y=await J(`${Z}/api/figma/crawl`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify(V?.length?{projectId:h,pageIds:V}:{projectId:h})});if(!Y.ok){if(Y.status===403){let xe=await Y.json().catch(()=>({}));u(xe.requiresAuth?"auth":"generic")}else u("generic");return}let re=await Y.json().catch(()=>({}));if(re?.status==="skipped-unchanged")d("Figma file unchanged \u2014 reused cached structure.");else if(re?.status==="crawl-started"||re?.status==="retry-started"){if(re?.status==="retry-started"){let xe=re.retryPages;d(`Retrying ${xe?`${xe} `:""}page${xe===1?"":"s"} that hit Figma's rate limit\u2026`)}try{Xte.getChannel()?.emit(ug,{projectId:h})}catch{}}await k()}catch(Z){console.error("[FigmaCacheSection] Crawl start error:",Z),u("generic")}finally{s(!1)}},F=async()=>{if(!(!h||!L)){p(!0);try{let H=q(),V=await J(`${H}/api/figma/cache/invalidate`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify({projectId:h})});if(console.log("[FigmaCacheSection] Cache invalidate response:",V.status),!V.ok){u("generic");return}await J(`${H}/api/figma/frames/invalidate?projectId=${h}`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`}}).catch(()=>{}),h&&uA(h),r({structureStatus:"none",structureCachedAt:null,componentSetCount:0,componentCount:0,pageCount:0,pages:[],cacheDiff:null,thumbnailProgress:null,enrichmentProgress:null,crawlProgress:null})}catch(H){console.error("[FigmaCacheSection] Clear cache error:",H)}finally{p(!1)}}},S=async()=>{if(!(!h||!L)){y(),m(!0);try{let H=q();await J(`${H}/api/figma/enrich`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify({projectId:h})}),z.current=setInterval(async()=>{await k()},3e3),A.current=setInterval(()=>{(n?.enrichmentProgress?.status==="complete"||n?.enrichmentProgress?.status==="error")&&(y(),m(!1),k())},3e3),D.current=setTimeout(()=>{y(),m(!1)},6e5)}catch(H){console.error("[FigmaCacheSection] Enrich error:",H),y(),m(!1)}}},x=async()=>{if(!(!h||!L)){v(!0);try{let H=q();await J(`${H}/api/figma/cancel`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${L}`},body:JSON.stringify({projectId:h})}),await k()}catch(H){console.error("[FigmaCacheSection] Cancel error:",H)}finally{v(!1),m(!1),s(!1)}}},E=n?.crawlProgress?.status==="crawling"||n?.crawlProgress?.status==="cancelling"||n?.thumbnailProgress?.status==="in-progress"||n?.enrichmentProgress?.status==="in-progress";if(!h)return null;if(o)return X.createElement(bg,null,X.createElement(wg,null,X.createElement(vg,null,"Figma Sync")),X.createElement(xw,null,"Loading sync status\u2026"),X.createElement(Es,null,X.createElement(Ts,{percent:100,style:{opacity:.3}})));if(!n||n.structureStatus==="none")return X.createElement(bg,null,X.createElement(wg,null,X.createElement(vg,null,"Figma Sync"),X.createElement(fi,{loading:a,onClick:T,loadingText:"Loading..."},"\u21BB Load")),n?.crawlProgress?.status==="crawling"?X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{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}})),X.createElement(ra,null,X.createElement("span",null,"Reading components from Figma\u2026"),X.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026"))):a?X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{percent:100,style:{animation:"none",opacity:.3}})),X.createElement(ra,null,X.createElement("span",null,"Starting crawl\u2026"))):X.createElement(xw,null,"No cache \u2014 click Load to fetch from Figma"),n?.crawlProgress?.status==="error"&&X.createElement(Wl,null,"Crawl failed",n.crawlProgress.error?`: ${n.crawlProgress.error}`:"",". Try Load again."),c==="auth"&&X.createElement(Wl,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),c==="generic"&&X.createElement(Wl,null,"Failed to load Figma cache. Check the browser console for details."));let w=H=>{let V=Date.now()-new Date(H).getTime(),Z=Math.floor(V/6e4);if(Z<1)return"just now";if(Z<60)return`${Z}m ago`;let Y=Math.floor(Z/60);return Y<24?`${Y}h ago`:`${Math.floor(Y/24)}d ago`},R=H=>H>=1024*1024*1024?`${(H/1024/1024/1024).toFixed(1)} GB`:H>=1024*1024?`${Math.round(H/1024/1024)} MB`:`${Math.max(1,Math.round(H/1024))} KB`,_=n.crawlProgress?.bytesDownloaded,P=n.cacheDiff,N=P&&(P.added.length>0||P.removed.length>0||P.renamed.length>0),I=n.crawlProgress,O=I?.pagesTotal??0,j=I?.pagesDone??0,B=I?.status==="crawling"||a,se=O>0?Math.round(j/O*100):a?8:0;return X.createElement(bg,null,X.createElement(wg,null,X.createElement(vg,null,"Figma Sync"," ",n.crawlProgress?.status==="crawling"?X.createElement(yw,{tone:"orange"},X.createElement(XA,null),"Importing"):n.structureStatus==="cached"?X.createElement(yw,{tone:"green"},X.createElement(Jte,null),"Synced"):X.createElement(YA,{status:n.structureStatus},n.structureStatus)),X.createElement("div",{style:{display:"flex",gap:"2px"}},e==="admin"&&X.createElement(Sg,{onClick:S,disabled:g},g?X.createElement(kg,null):X.createElement(Qte,null),g?"Enriching\u2026":"Enrich"),X.createElement(Sg,{onClick:F,disabled:f},f&&X.createElement(kg,null),f?"Clearing\u2026":"Clear"),X.createElement(Sg,{onClick:()=>T(h?jl(h):void 0),disabled:a},a?X.createElement(kg,null):X.createElement(Zte,null),a?"Reloading\u2026":"Reload"),E&&X.createElement(fi,{loading:C||n?.crawlProgress?.status==="cancelling",onClick:x,variant:"ghost",loadingText:"Stopping..."},"\u2715 Stop"))),n?.crawlProgress?.status==="crawling"&&!((n.crawlProgress.pagesTotal??0)>0&&n.crawlProgress.pagesDone>=n.crawlProgress.pagesTotal)&&X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{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}})),X.createElement(ra,null,X.createElement("span",null,n.crawlProgress.phase==="repairing"?"Fetching variants for deeply-nested components\u2026":n.crawlProgress.currentPage?`Reading \u201C${n.crawlProgress.currentPage}\u201D\u2026`:"Re-reading components from Figma\u2026"),X.createElement("span",null,(n.crawlProgress.pagesTotal??0)>0?`page ${n.crawlProgress.pagesDone} of ${n.crawlProgress.pagesTotal}`:"starting\u2026")),(n.crawlProgress.setsFound??0)>0&&X.createElement(ra,null,X.createElement("span",null,n.crawlProgress.setsFound," component set",n.crawlProgress.setsFound===1?"":"s"," \xB7"," ",n.crawlProgress.variantsFound??0," variant",n.crawlProgress.variantsFound===1?"":"s"," so far"))),a&&n?.crawlProgress?.status!=="crawling"&&X.createElement(ra,null,X.createElement("span",null,"Starting crawl\u2026")),c==="auth"&&X.createElement(Wl,null,"Figma authentication expired \u2014 reconnect your Figma account in the Figma Integration section above."),c==="generic"&&X.createElement(Wl,null,"Failed to reload Figma sync. Check the browser console for details."),X.createElement(NA,null,X.createElement(Wu,null,X.createElement(Gu,null,"Component sets"),X.createElement(qu,null,n.componentSetCount)),X.createElement(Wu,null,X.createElement(Gu,null,"Pages"),X.createElement(qu,null,n.pageCount)),typeof _=="number"&&_>0&&X.createElement(Wu,null,X.createElement(Gu,null,"Size"),X.createElement(qu,null,"\u2248 ",R(_))),n.structureCachedAt&&X.createElement(Wu,null,X.createElement(Gu,null,"Updated"),X.createElement(qu,{plain:!0},w(n.structureCachedAt)))),X.createElement(e8,null,X.createElement("span",{"aria-hidden":!0},"\u2139\uFE0F"),X.createElement("span",null,X.createElement("strong",null,"Components only")," for now \u2014 plain Figma frames aren't indexed yet (support planned).")),h&&X.createElement(DA,{projectId:h,busy:a,importing:B,importPct:se,onReimport:T}),n.crawlProgress?.status==="complete"&&n.crawlProgress.pagesFailed>0&&X.createElement(QA,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&&X.createElement(ZA,null,"\u2713 ",l),N&&X.createElement(JA,null,"Since last reload:"," ",P.added.length>0&&X.createElement(Cg,{type:"added"},"+",P.added.length," added"),P.added.length>0&&P.removed.length>0&&" \xB7 ",P.removed.length>0&&X.createElement(Cg,{type:"removed"},"\u2212",P.removed.length," removed"),(P.added.length>0||P.removed.length>0)&&P.renamed.length>0&&" \xB7 ",P.renamed.length>0&&X.createElement(Cg,{type:"renamed"},P.renamed.length," renamed")),n.thumbnailProgress&&n.thumbnailProgress.status==="in-progress"&&X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{percent:n.thumbnailProgress.total>0?Math.round(n.thumbnailProgress.cached/n.thumbnailProgress.total*100):0})),X.createElement(ra,null,X.createElement("span",null,"Preparing thumbnails\u2026",n.thumbnailProgress.currentName&&X.createElement(X.Fragment,null," ",n.thumbnailProgress.currentName)),X.createElement("span",null,n.thumbnailProgress.cached,"/",n.thumbnailProgress.total))),n.thumbnailProgress?.status!=="in-progress"&&(()=>{let H=n.thumbnailProgress,V=H?.cached??0,Z=H?.total??0,Y=Z>0&&V>=Z,re=Z>0&&V<Z,xe=Z>0?Math.min(100,Math.round(V/Z*100)):0;return X.createElement(OA,null,X.createElement($A,null,X.createElement(HA,null,X.createElement(UA,null,"Thumbnails",Z>0&&X.createElement(X.Fragment,null," ",X.createElement(jA,null,V," / ",Z))),X.createElement(VA,{ready:Y},Y?"\u2713 Ready":re?"Partial":"Not generated")),X.createElement(WA,{onClick:T,disabled:a},"\u21BB ",Y?"Rebuild":"Reload")),Z>0&&X.createElement(GA,null,X.createElement(qA,{pct:Y?100:xe,ready:Y})))})(),n.enrichmentProgress&&n.enrichmentProgress.status==="in-progress"&&X.createElement(X.Fragment,null,X.createElement(Es,null,X.createElement(Ts,{percent:n.enrichmentProgress.total>0?Math.round(n.enrichmentProgress.enriched/n.enrichmentProgress.total*100):0})),X.createElement(ra,null,X.createElement("span",null,"AI descriptions: generating\u2026",n.enrichmentProgress.currentName&&X.createElement(X.Fragment,null," ",n.enrichmentProgress.currentName)),X.createElement("span",null,n.enrichmentProgress.enriched," of"," ",n.enrichmentProgress.total," component sets"))),n.enrichmentProgress&&n.enrichmentProgress.status==="complete"&&X.createElement(X.Fragment,null,X.createElement(ra,null,X.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&&X.createElement("div",{style:{marginTop:"6px"}},X.createElement(Cf,{inputTokens:n.enrichmentProgress.inputTokens||0,outputTokens:n.enrichmentProgress.outputTokens||0,costUsd:n.enrichmentProgress.costUsd,compact:!0})))};import $t,{useState as Gl}from"react";import{styled as hi}from"storybook/theming";Ce();Me();nt();var ww=hi.div({padding:"12px 16px"}),tne=hi.div({display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"8px"}),i8=hi.label(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText})),a8=hi.button(({theme:e})=>({background:"none",border:"none",fontSize:"12px",color:W,cursor:"pointer",padding:0,"&:hover":{textDecoration:"underline"}})),nne=hi.div({display:"flex",gap:"8px",alignItems:"center"}),rne=hi.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:W,boxShadow:`0 0 0 1px ${W}`},"&::placeholder":{color:e.color.mediumlight,fontFamily:"inherit"}})),s8=hi.span(({theme:e,variant:t})=>({fontSize:"12px",color:t==="success"?e.color.positive:t==="error"?e.color.negative:e.color.mediumdark,marginTop:"6px",display:"block",lineHeight:1.4})),one=hi.div(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark,marginTop:"8px",lineHeight:1.5,"& a":{color:W,textDecoration:"none","&:hover":{textDecoration:"underline"}},"& ol":{margin:"4px 0 0 16px",padding:0},"& li":{marginBottom:"2px"}})),ine=hi.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})),ane=hi.button(({theme:e})=>({background:"none",border:"none",fontSize:"11px",color:"#dc2626",cursor:"pointer",marginLeft:"auto","&:hover":{textDecoration:"underline"}})),l8=({onConnected:e,defaultExpanded:t=!1})=>{let{sessionToken:n}=we(),[r,o]=Gl(t),[i,a]=Gl(""),[s,c]=Gl(!1),[u,l]=Gl(null),[d,f]=Gl(null),[p,g]=Gl(!1),m=async()=>{if(!(!i.trim()||!n)){c(!0),l(null);try{let C=q(),v=await J(`${C}/api/figma/pat`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({token:i.trim()})}),h=await v.json();if(!v.ok){l({type:"error",message:h.error||"Failed to save token"});return}f(h.figmaUser?.handle||h.figmaUser?.email||"Connected"),l({type:"success",message:`Connected as ${h.figmaUser?.handle||"Figma user"}`}),a(""),e?.()}catch{l({type:"error",message:"Failed to connect. Check your token and try again."})}finally{c(!1)}}};return d?$t.createElement(ww,null,$t.createElement(i8,null,"Figma Personal Access Token"),$t.createElement(ine,null,$t.createElement("span",null,"\u2713 Connected as ",$t.createElement("strong",null,d)),$t.createElement(ane,{onClick:()=>{f(null),l(null)}},"Change token"))):r?$t.createElement(ww,null,$t.createElement(tne,null,$t.createElement(i8,null,"Figma Personal Access Token"),$t.createElement(a8,{onClick:()=>g(!p)},p?"Hide instructions":"How to generate")),p&&$t.createElement(one,null,$t.createElement("ol",null,$t.createElement("li",null,"Open"," ",$t.createElement("a",{href:"https://www.figma.com/settings",target:"_blank",rel:"noopener noreferrer"},"Figma Settings")),$t.createElement("li",null,"Click the ",$t.createElement("strong",null,"Security")," tab"),$t.createElement("li",null,"Scroll to ",$t.createElement("strong",null,"Personal access tokens")),$t.createElement("li",null,"Click ",$t.createElement("strong",null,"Generate new token")),$t.createElement("li",null,"Enable ",$t.createElement("strong",null,"File content: Read only")," under Scopes"),$t.createElement("li",null,"Copy the token and paste it below"))),$t.createElement(nne,null,$t.createElement(rne,{type:"password",value:i,onChange:C=>a(C.target.value),placeholder:"figd_...",onKeyDown:C=>{C.key==="Enter"&&i.trim()&&m()}}),$t.createElement(tn,{onClick:m,disabled:!i.trim()||s},s?"Verifying...":"Save & Verify")),u&&$t.createElement(s8,{variant:u.type},u.message),$t.createElement(s8,{variant:"info"},"Read-only access. Your token is stored securely and never shared.")):$t.createElement(ww,null,$t.createElement(a8,{onClick:()=>o(!0)},"Or use a Personal Access Token \u2192"))};Ce();Me();nt();var cne=Ht.createElement("svg",{viewBox:"0 0 38 57",fill:"none",xmlns:"http://www.w3.org/2000/svg"},Ht.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"}),Ht.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"}),Ht.createElement("path",{d:"M19 0V19H28.5C33.7467 19 38 14.7467 38 9.5C38 4.25329 33.7467 0 28.5 0H19Z",fill:"#FF7262"}),Ht.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"}),Ht.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"})),vw=Da.div({}),une=Da.div(({theme:e})=>({display:"flex",alignItems:"center",gap:"8px",padding:"10px 16px",backgroundColor:e.background.hoverable,borderBottom:`1px solid ${e.appBorderColor}`})),pne=Da.div({width:"16px",height:"16px",display:"flex",alignItems:"center","& svg":{width:"14px",height:"14px"}}),dne=Da.span(({theme:e})=>({fontSize:"13px",fontWeight:600,color:e.color.defaultText,flex:1})),Sw=Da.div({"& > *":{border:"none",borderRadius:0,marginBottom:0,borderBottom:"1px solid rgba(0,0,0,0.06)","&:last-child":{borderBottom:"none"}}}),fne=Da.div({padding:"20px 16px",display:"flex",flexDirection:"column",gap:"12px"}),s7e=Da.button({display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",padding:"8px 16px",backgroundColor:Dk,color:"#fff",border:"none",borderRadius:"6px",fontSize:"13px",fontWeight:600,cursor:"pointer","&:hover":{backgroundColor:Nk}}),gne=Da.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}})),u8=({hideHeader:e=!1})=>{let{sessionToken:t}=we(),n=!!t&&t.startsWith("uic_anon_"),[r,o]=Ku(!1),[i,a]=Ku(0),[s,c]=Ku(()=>{try{let v=sessionStorage.getItem("uicopilot_figma_connection");if(v){let{connected:h,ts:M}=JSON.parse(v);if(Date.now()-M<300*1e3)return h}}catch{}return null}),[u,l]=Ku(!1),[d,f]=Ku(!1),p=lne();sne(()=>{if(!t)return;let v=q();J(`${v}/api/figma/connection-status`,{headers:{Authorization:`Bearer ${t}`}}).then(h=>h.json()).then(h=>{let M=!!h.connected;l(!!h.expired),c(M);try{sessionStorage.setItem("uicopilot_figma_connection",JSON.stringify({connected:M,ts:Date.now()}))}catch{}}).catch(()=>c(!1))},[t]);let g=c8(()=>{let v=q(),h=`${v}/api/auth/figma/login?addon=true`;window.open(h,"figma-oauth","width=600,height=700,left=200,top=100");let M=setInterval(async()=>{try{(await(await J(`${v}/api/figma/connection-status`,{headers:t?{Authorization:`Bearer ${t}`}:{}})).json()).connected&&(clearInterval(M),c(!0))}catch{}},2e3);setTimeout(()=>clearInterval(M),300*1e3)},[t]),m=c8(async()=>{try{o(!0);let v=q(),h=await J(`${v}/api/figma/disconnect`,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(h.ok||h.status===404){c(!1);try{sessionStorage.removeItem("uicopilot_figma_connection")}catch{}}}catch{}finally{o(!1)}},[t]),C=e?null:Ht.createElement(une,null,Ht.createElement(pne,null,cne),Ht.createElement(dne,null,"Figma Integration"));return s===null?Ht.createElement(vw,null,C,Ht.createElement(Sw,null,Ht.createElement("div",{style:{padding:"16px",fontSize:"13px",color:p.color.mediumdark}},"Checking Figma connection..."))):s===!1?Ht.createElement(vw,null,C,Ht.createElement(Sw,null,Ht.createElement(fne,null,u&&Ht.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:p.color.warning}},"\u26A0\uFE0F Your Figma access has expired. Please reconnect."),Ht.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:p.color.mediumdark}},"Requires a Figma ",Ht.createElement("strong",null,"Dev or Full seat"),". Free/Viewer seats can't grant design-read access."),!n&&Ht.createElement(Ht.Fragment,null,Ht.createElement(tn,{onClick:g,style:{width:"100%"}},u?"Reconnect Figma":"Connect with Figma"),Ht.createElement(gne,null,"or")),Ht.createElement(l8,{onConnected:()=>c(!0),defaultExpanded:n})))):Ht.createElement(vw,null,C,Ht.createElement(sg,{connected:!0,label:"Connected to Figma",actionLabel:r?"Disconnecting\u2026":"Disconnect",actionDisabled:r,actionTitle:"Disconnect Figma",onAction:()=>f(!0)}),Ht.createElement(Dr,{isOpen:d,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:()=>{f(!1),m()},onCancel:()=>f(!1)}),Ht.createElement(Sw,null,Ht.createElement(nA,{onFigmaFileChanged:()=>a(v=>v+1)}),Ht.createElement(oA,{refreshKey:i}),Ht.createElement(o8,null)))};Ce();pn();import{styled as fn}from"storybook/theming";var p8=fn.div({position:"fixed",inset:0,backgroundColor:"rgba(0, 0, 0, 0.4)",zIndex:1e3,display:"flex",justifyContent:"center",alignItems:"flex-start",paddingTop:"40px"}),d8=fn.div(({theme:e})=>({backgroundColor:e.background.content,borderRadius:"14px",border:`1px solid ${e.appBorderColor}`,boxShadow:"0 16px 48px rgba(0, 0, 0, 0.22)",width:"820px",maxWidth:"94%",maxHeight:"calc(100vh - 80px)",display:"flex",flexDirection:"column",overflow:"hidden",position:"relative"})),f8=fn.header(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",height:"48px",padding:"0 16px",borderBottom:`1px solid ${e.appBorderColor}`,flexShrink:0})),g8=fn.div({display:"flex",alignItems:"center",gap:"8px"}),m8=fn.span(({theme:e})=>({fontSize:"14px",fontWeight:e.typography.weight.bold,letterSpacing:"-0.01em",color:e.color.defaultText})),h8=fn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:e.color.mediumdark})),x8=fn.button(({theme:e})=>({width:"28px",height:"28px",display:"inline-flex",alignItems:"center",justifyContent:"center",borderRadius:e.appBorderRadius,color:e.color.mediumdark,backgroundColor:"transparent",border:"none",cursor:"pointer",fontSize:"18px",lineHeight:1,transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable}})),y8=fn.div({display:"flex",flex:1,minHeight:"440px",overflow:"hidden"}),b8=fn.nav(({theme:e})=>({width:"178px",flexShrink:0,backgroundColor:e.background.app,padding:"12px 8px",display:"flex",flexDirection:"column",gap:"2px"})),w8=fn.button(({theme:e,active:t})=>({position:"relative",width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"0 8px 0 12px",height:"32px",borderRadius:e.appBorderRadius,border:"none",cursor:"pointer",textAlign:"left",backgroundColor:t?e.background.hoverable:"transparent",color:t?e.color.defaultText:e.color.mediumdark,transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable},"& svg":{flexShrink:0}})),v8=fn.span({position:"absolute",left:0,top:"6px",bottom:"6px",width:"2px",borderRadius:"2px",backgroundColor:W}),S8=fn.span(({theme:e})=>({fontSize:"12px",fontWeight:e.typography.weight.bold,lineHeight:1})),k8=fn.div(({theme:e})=>({flex:1,overflowY:"auto",backgroundColor:e.background.content,borderLeft:`1px solid ${e.appBorderColor}`,padding:"20px"})),Eg=fn.header({display:"flex",alignItems:"center",gap:"10px",marginBottom:"16px"}),C8=fn.div({width:"28px",height:"28px",borderRadius:"7px",backgroundColor:W,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontWeight:700,letterSpacing:"0.3px",flexShrink:0}),kw=fn.div(({theme:e})=>({width:"28px",height:"28px",borderRadius:"7px",backgroundColor:e.background.hoverable,border:`1px solid ${e.appBorderColor}`,color:e.color.mediumdark,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0})),Tg=fn.h3(({theme:e})=>({margin:0,fontSize:"13px",fontWeight:e.typography.weight.bold,color:e.color.defaultText,lineHeight:1.2})),Ig=fn.p(({theme:e})=>({margin:"3px 0 0",fontSize:"11px",color:e.color.mediumdark,lineHeight:1.2})),Rg=fn.div({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"}}),Cw=fn.div(({theme:e})=>({padding:"16px",borderRadius:"10px",border:`1px dashed ${e.appBorderColor}`,backgroundColor:e.background.app,fontSize:"12px",color:e.color.mediumdark,lineHeight:1.5})),E8=fn.footer(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",height:"44px",padding:"0 16px",borderTop:`1px solid ${e.appBorderColor}`,flexShrink:0})),T8=fn.span(({theme:e})=>({fontSize:"10px",fontFamily:e.typography.fonts.mono,color:e.color.mediumdark})),I8=fn.div({display:"flex",alignItems:"center",gap:"6px"}),R8=fn.button(({theme:e})=>({height:"28px",padding:"0 12px",fontSize:"11px",fontWeight:e.typography.weight.bold,fontFamily:e.typography.fonts.base,border:"none",borderRadius:e.appBorderRadius*2,background:"transparent",color:e.color.mediumdark,cursor:"pointer",transition:"all 0.15s","&:hover":{color:e.color.defaultText,backgroundColor:e.background.hoverable}}));var A8=()=>Ue.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"},Ue.createElement("path",{d:"M4 4h5l2 3h9a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2z"})),yne=[{id:"account",label:"Account",icon:Rc},{id:"project",label:"Project",icon:A8},{id:"figma",label:"Figma",icon:$i}],F8=({onClose:e})=>{let{isConnected:t}=we(),{selectedProjectId:n}=We(),[r,o]=xne("account"),i=Ag(t),a=Ag(!t),s=Ag(!1),c=Ag(!1);hne(()=>{a.current&&!s.current&&!i.current&&t&&n&&(s.current=!0,e()),i.current=t},[t,n,e]);let u=()=>r==="account"?Ue.createElement(Ue.Fragment,null,Ue.createElement(Eg,null,Ue.createElement(C8,null,"UI"),Ue.createElement("div",null,Ue.createElement(Tg,null,Kt.NAME," account"),Ue.createElement(Ig,null,"Deterministic Figma \u2194 code comparison"))),Ue.createElement(Rg,null,Ue.createElement(XR,{onConnect:e}))):r==="project"?Ue.createElement(Ue.Fragment,null,Ue.createElement(Eg,null,Ue.createElement(kw,null,Ue.createElement(A8,null)),Ue.createElement("div",null,Ue.createElement(Tg,null,"Project"),Ue.createElement(Ig,null,"The Storybook project being compared"))),t?Ue.createElement(Rg,null,Ue.createElement(ZR,null)):Ue.createElement(Cw,null,"Sign in on the ",Ue.createElement("strong",null,"Account")," tab first to choose a project.")):Ue.createElement(Ue.Fragment,null,Ue.createElement(Eg,null,Ue.createElement(kw,null,Ue.createElement($i,null)),Ue.createElement("div",null,Ue.createElement(Tg,null,"Figma integration"),Ue.createElement(Ig,null,"Source of truth for design tokens"))),t&&n?Ue.createElement(Rg,null,Ue.createElement(u8,{hideHeader:!0})):Ue.createElement(Cw,null,t?"Select a project on the Project tab before connecting Figma.":"Sign in on the Account tab first, then pick a project to connect Figma."));return Ue.createElement(p8,{onMouseDown:l=>{c.current=l.target===l.currentTarget},onClick:l=>{c.current&&l.target===l.currentTarget&&e()}},Ue.createElement(d8,{onClick:l=>l.stopPropagation()},Ue.createElement(f8,null,Ue.createElement(g8,null,Ue.createElement(m8,null,"Settings"),Ue.createElement(h8,null,"v","0.20.1")),Ue.createElement(x8,{onClick:e,title:"Close settings","aria-label":"Close"},"\xD7")),Ue.createElement(y8,null,Ue.createElement(b8,null,yne.map(l=>{let d=l.icon,f=r===l.id;return Ue.createElement(w8,{key:l.id,active:f,onClick:()=>o(l.id)},f&&Ue.createElement(v8,null),Ue.createElement(d,null),Ue.createElement(S8,null,l.label))})),Ue.createElement(k8,null,u())),Ue.createElement(E8,null,Ue.createElement(T8,null,Kt.NAME," \xB7 settings synced"),Ue.createElement(I8,null,Ue.createElement(R8,{onClick:e},"Cancel"),Ue.createElement(tn,{onClick:e},"Done")))))};Ce();pn();import Xt from"react";import Jo from"react";import{styled as xn,keyframes as bne}from"storybook/theming";var oa=xn.div({marginTop:"10px",padding:"12px",borderRadius:"8px",border:`1px solid ${Q.border}`,background:Q.formBg,display:"flex",flexDirection:"column",gap:"10px"}),M8=xn.button({display:"flex",alignItems:"center",justifyContent:"center",gap:"8px",width:"100%",padding:"9px",borderRadius:"8px",border:`1px solid ${Q.border}`,background:Q.card,color:Q.text,fontSize:"13px",fontWeight:600,cursor:"pointer","&:hover":{background:Q.formBg}}),Xu=xn.div({fontSize:"11px",color:Q.muted,textAlign:"center"}),P8=xn.div({display:"flex",alignItems:"center",gap:"8px","&::before, &::after":{content:'""',flex:1,height:"1px",background:Q.border},fontSize:"11px",color:Q.muted}),_8=xn.button({width:"100%",padding:"9px",borderRadius:"6px",border:`1px dashed ${W}`,background:Q.card,color:W,fontSize:"12px",fontWeight:600,cursor:"pointer","&:hover":{background:Q.accentTint},"&:disabled":{opacity:.6,cursor:"default"}}),Na=xn.label({fontSize:"11px",fontWeight:600,color:Q.subText,display:"block",marginBottom:"4px"}),Is=xn.input({width:"100%",padding:"7px 10px",fontSize:"12px",borderRadius:"6px",border:`1px solid ${Q.border}`,background:Q.card,color:Q.text,outline:"none","&:focus":{borderColor:W},"&:disabled":{background:Q.formBg,color:Q.muted}}),L8=xn.select({width:"100%",padding:"7px 10px",fontSize:"12px",borderRadius:"6px",border:`1px solid ${Q.border}`,background:Q.card,color:Q.text}),Xo=xn.button(({disabled:e})=>({width:"100%",padding:"8px",borderRadius:"6px",border:"none",fontSize:"12px",fontWeight:600,color:Q.card,cursor:e?"not-allowed":"pointer",background:W,opacity:e?.5:1,"&:hover":e?{}:{background:lo}})),Ew=xn.div({marginTop:"10px",fontSize:"11px",lineHeight:1.4,padding:"8px 10px",borderRadius:"6px",background:Q.calloutBg,color:Q.calloutText}),B8=xn.div({display:"grid",gridTemplateColumns:"1fr 1fr",gap:"8px"}),z8=xn.div({display:"flex",flexDirection:"column",gap:"8px",padding:"10px",borderRadius:"6px",border:`1px solid ${Q.border}`,background:Q.card}),D8=xn.div({display:"flex",alignItems:"center",justifyContent:"space-between",fontSize:"11px",color:Q.subText}),N8=xn.span({fontVariantNumeric:"tabular-nums",color:Q.muted}),Fg=xn.div({height:"4px",width:"100%",borderRadius:"999px",background:Q.track,overflow:"hidden"}),Mg=xn.div(({pct:e})=>({height:"100%",width:`${Math.min(100,Math.max(0,e))}%`,borderRadius:"999px",background:W,transition:"width 0.3s ease"})),wne=bne`
118
118
  0% { transform: translateX(-120%); }
119
119
  100% { transform: translateX(520%); }
120
120
  `,O8=xn.div({height:"100%",width:"20%",borderRadius:"999px",background:W,animation:`${wne} 1.1s ease-in-out infinite`}),$8=xn.span({fontVariantNumeric:"tabular-nums",color:Q.muted}),H8=xn.div({fontSize:"11px",color:Q.muted}),U8=xn.div({fontSize:"11px",fontStyle:"italic",color:Q.muted}),ia=xn.div({fontSize:"11px",lineHeight:1.4,color:pe.redText}),j8=xn.div({paddingTop:"2px",display:"flex",flexDirection:"column",gap:"8px"}),V8=xn.button({alignSelf:"center",border:"none",background:"transparent",color:Q.muted,fontSize:"11px",cursor:"pointer",textDecoration:"underline",textUnderlineOffset:"2px"});var vne=Jo.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24","aria-hidden":"true"},Jo.createElement("path",{fill:"#4285F4",d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.75h3.57c2.08-1.92 3.28-4.74 3.28-8.07z"}),Jo.createElement("path",{fill:"#34A853",d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.75c-.99.66-2.25 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"}),Jo.createElement("path",{fill:"#FBBC05",d:"M5.84 14.12A6.6 6.6 0 0 1 5.49 12c0-.74.13-1.46.35-2.12V7.04H2.18A11 11 0 0 0 1 12c0 1.78.43 3.45 1.18 4.96l3.66-2.84z"}),Jo.createElement("path",{fill:"#EA4335",d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.04l3.66 2.84C6.71 7.31 9.14 5.38 12 5.38z"})),W8=()=>{let{startOAuth:e,oauthPending:t,startAnonymous:n,anonPending:r}=qo(),o=t||r;return Jo.createElement(oa,null,Jo.createElement(M8,{onClick:e,disabled:o},vne," ",t?"Opening sign-in\u2026":"Continue with Google"),Jo.createElement(Xu,null,"New or returning \u2014 we'll take you to the right place."),Jo.createElement(P8,null,"or"),Jo.createElement(_8,{onClick:n,disabled:o},r?"Starting\u2026":"Try without signing in \u2192"),Jo.createElement(Xu,null,"Explore with your own Figma file \u2014 no sign-up needed. Sign up later to save your work."))};Ce();import En,{useEffect as Ine,useState as Qu}from"react";import Tw from"react";import{styled as Iw,keyframes as Sne}from"storybook/theming";var kne=Sne`
@@ -275,7 +275,7 @@ ${"=".repeat(40)}
275
275
  &:hover {
276
276
  background: rgba(255, 255, 255, 0.3);
277
277
  }
278
- `,ape=Sr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",gap:`${e.layoutMargin}px`,height:"28px",padding:`0 ${e.layoutMargin*1.2}px`,borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app,fontSize:"10px",color:e.color.mediumdark})),spe=Sr.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,opacity:.7})),lpe=Sr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*1.2}px`,fontFamily:e.typography.fonts.mono})),hB=Sr.span(({theme:e,tone:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",color:t,"& .muted":{color:e.color.mediumdark,fontWeight:400},"& .val":{fontWeight:e.typography.weight.bold}})),xB=Sr.div(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"48px 24px",textAlign:"center",gap:"16px"})),yB=Sr.div({fontSize:"32px"}),bB=Sr.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),wB=Sr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s2,color:e.color.mediumdark,maxWidth:"320px",lineHeight:1.5})),vB=Sr.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})),SB=Sr.span({flex:1}),kB=Sr.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`}})),CB=()=>{let{selectedProjectId:e,projects:t,loadingProjects:n}=We(),{isConnected:r,sessionToken:o,authError:i}=we(),{currentStoryId:a}=yt(),{currentReviewId:s,userRole:c,roleOverride:u,setRoleOverride:l,setFeatureFlags:d,pendingSettingsOpen:f,setPendingSettingsOpen:p,reviewHistory:g,validationUsage:m,featureFlags:C}=ve(),{figmaExpired:v}=pB(),[h,M]=epe(!1);YS(()=>{gB()},[]),YS(()=>{f&&(M(!0),p(!1))},[f,p]);let L=()=>{l(null),o&&fetch(`${q()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(I=>I.json()).then(I=>{d({enableFixGeneration:!!I.enableFixGeneration,enableFixApply:!!I.enableFixApply,enableAutoMap:!!I.enableAutoMap,enableReviewBadges:!!I.enableReviewBadges,showCosts:!!I.showCosts,enableParallelReview:!!I.enableParallelReview,enableModelSelection:!!I.enableModelSelection,enableAiReview:!!I.enableAiReview})}).catch(()=>{})};H5(),nw(),sB(),uB(),X5(),q5();let{notification:z,dismissNotification:A}=nB();YS(()=>{if(z){let I=setTimeout(A,5e3);return()=>clearTimeout(I)}},[z,A]);let D=t.find(I=>I.id===e),y=r&&!!e&&!!D,{onboarded:k,dismiss:T}=oB(),F=mB({sessionToken:o,selectedProjectId:e,selectedProjectLoaded:!!D,loadingProjects:n,projectsCount:t.length}),{loadingMapping:S}=yt(),x=y&&!!a&&!s&&S,E=g.find(I=>I.id===s),w=(E?.costUsd||0)+(m?.costUsd||0),R=(E?.inputTokens||0)+(E?.outputTokens||0)+(m?.inputTokens||0)+(m?.outputTokens||0),_=!!C.showCosts&&w>0,P=I=>I<.01?I.toFixed(4):I<.1?I.toFixed(3):I.toFixed(2),N=I=>I>=1e3?`${(I/1e3).toFixed(1)}K`:String(I);return gt.createElement(F0,{header:gt.createElement(M0,{toolbar:gt.createElement(v5,{onOpenSettings:()=>M(!0)})}),footer:gt.createElement(ape,null,gt.createElement(spe,null,Kt.NAME," v","0.20.0"),_&&gt.createElement(lpe,null,gt.createElement(hB,{tone:pe.green},gt.createElement("span",{className:"muted"},"cost"),gt.createElement("span",{className:"val"},"$",P(w)),gt.createElement("span",{className:"muted"},"/"),gt.createElement("span",{className:"val"},"\u20AA",P(w*3.65))),R>0&&gt.createElement(hB,{tone:Di},gt.createElement("span",{className:"val"},"#"),gt.createElement("span",{className:"val"},N(R)),gt.createElement("span",{className:"muted"},"tokens"))))},z&&gt.createElement(npe,{variant:z.variant||"success"},gt.createElement(rpe,null,z.variant==="error"?"!":z.variant==="warning"?"\u26A0":"+"),gt.createElement(ope,null,z.message),gt.createElement(ipe,{onClick:A},"x")),i&&gt.createElement(vB,null,gt.createElement("span",null,"\u26A0"),gt.createElement(SB,null,i),gt.createElement(kB,{onClick:()=>M(!0)},"Reconnect")),c==="admin"&&u&&gt.createElement(vB,null,gt.createElement("span",null,"\u{1F441}"),gt.createElement(SB,null,"Previewing as ",u),gt.createElement(kB,{onClick:L},"Exit preview")),F||x?gt.createElement(Rs,{label:F?"Loading...":"Loading review..."}):i?gt.createElement(xB,null,gt.createElement(yB,null,"\u2699"),gt.createElement(bB,null,"Connection issue"),gt.createElement(wB,null,"Session expired or dashboard unreachable. Please reconnect."),gt.createElement(tn,{onClick:()=>M(!0)},"Reconnect")):k&&!v&&o&&!n&&!e?gt.createElement(xB,null,gt.createElement(yB,null,"\u{1F4C1}"),gt.createElement(bB,null,"No project selected"),gt.createElement(wB,null,"Select or create a project for this Storybook to start reviewing."),gt.createElement(tn,{onClick:()=>M(!0)},"Open Settings")):k&&!v?gt.createElement($S,null):gt.createElement(UF,{onSkip:T,canSkip:y&&!v,figmaExpired:v}),h&&gt.createElement(F8,{onClose:()=>M(!1)}))};import TB,{useCallback as cpe,useEffect as upe}from"react";import{useStorybookApi as ppe,useStorybookState as dpe}from"storybook/manager-api";import{IconButton as fpe}from"storybook/internal/components";function EB(e){let t=e?.entries??e,n=new Map;if(!t||typeof t!="object")return n;for(let[r,o]of Object.entries(t)){if(!o||typeof o!="object"||o.type!=="story")continue;let i=r.indexOf("--"),a=i===-1?r:r.slice(0,i);n.set(a,(n.get(a)??0)+1)}return n}var gpe="uireview",mpe=`${gpe}/panel`,IB=()=>{let e=ppe(),{index:t}=dpe();aA(e),upe(()=>{if(!t)return;let r=EB(t);r.size&&I3(r)},[t]);let n=cpe(()=>{e.togglePanel(!0),e.setSelectedPanel(mpe)},[e]);return TB.createElement(fpe,{key:"uireview-tool",title:"UI Review - Compare with Figma",onClick:n},TB.createElement(Kk,null))};Ce();Pe();import Ct,{useState as Hs,useCallback as BB,useEffect as Mm,useRef as Tpe}from"react";import{styled as lr,keyframes as Ipe,useTheme as Rpe}from"storybook/theming";import{addons as Ip}from"storybook/manager-api";Me();Pe();import{addons as bpe,experimental_getStatusStore as Fm}from"storybook/manager-api";function Ya(e){let t=e.indexOf("--"),n=t===-1?e:e.slice(0,t),r=n.split("-").filter(Boolean);return r.length>1&&/^(components?|example|stories|pages?|ui)$/i.test(r[0])&&r.shift(),r.map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join(" ")||n}Me();Pe();var RB=q(),hpe="uireview/badge";async function AB(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;b.warn(`[reviewAll] Rate limited, retrying in ${i}ms`),await new Promise(a=>setTimeout(a,i))}throw new Error("Max retries exceeded")}async function xpe(e,t){let n=new TextDecoder,r="",o=null,i=0,a=0,s=0,c=0,u=0,l=0;for(;;){let{done:d,value:f}=await e.read();if(d)break;if(t()){e.cancel();break}r+=n.decode(f,{stream:!0});let p=r.split(`
278
+ `,ape=Sr.div(({theme:e})=>({display:"flex",alignItems:"center",justifyContent:"space-between",gap:`${e.layoutMargin}px`,height:"28px",padding:`0 ${e.layoutMargin*1.2}px`,borderTop:`1px solid ${e.appBorderColor}`,backgroundColor:e.background.app,fontSize:"10px",color:e.color.mediumdark})),spe=Sr.span(({theme:e})=>({fontFamily:e.typography.fonts.mono,opacity:.7})),lpe=Sr.div(({theme:e})=>({display:"flex",alignItems:"center",gap:`${e.layoutMargin*1.2}px`,fontFamily:e.typography.fonts.mono})),hB=Sr.span(({theme:e,tone:t})=>({display:"inline-flex",alignItems:"center",gap:"4px",color:t,"& .muted":{color:e.color.mediumdark,fontWeight:400},"& .val":{fontWeight:e.typography.weight.bold}})),xB=Sr.div(({theme:e})=>({display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"48px 24px",textAlign:"center",gap:"16px"})),yB=Sr.div({fontSize:"32px"}),bB=Sr.h3(({theme:e})=>({margin:0,fontSize:e.typography.size.s3,fontWeight:e.typography.weight.bold,color:e.color.defaultText})),wB=Sr.p(({theme:e})=>({margin:0,fontSize:e.typography.size.s2,color:e.color.mediumdark,maxWidth:"320px",lineHeight:1.5})),vB=Sr.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})),SB=Sr.span({flex:1}),kB=Sr.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`}})),CB=()=>{let{selectedProjectId:e,projects:t,loadingProjects:n}=We(),{isConnected:r,sessionToken:o,authError:i}=we(),{currentStoryId:a}=yt(),{currentReviewId:s,userRole:c,roleOverride:u,setRoleOverride:l,setFeatureFlags:d,pendingSettingsOpen:f,setPendingSettingsOpen:p,reviewHistory:g,validationUsage:m,featureFlags:C}=ve(),{figmaExpired:v}=pB(),[h,M]=epe(!1);YS(()=>{gB()},[]),YS(()=>{f&&(M(!0),p(!1))},[f,p]);let L=()=>{l(null),o&&fetch(`${q()}/api/addon/flags`,{headers:{Authorization:`Bearer ${o}`}}).then(I=>I.json()).then(I=>{d({enableFixGeneration:!!I.enableFixGeneration,enableFixApply:!!I.enableFixApply,enableAutoMap:!!I.enableAutoMap,enableReviewBadges:!!I.enableReviewBadges,showCosts:!!I.showCosts,enableParallelReview:!!I.enableParallelReview,enableModelSelection:!!I.enableModelSelection,enableAiReview:!!I.enableAiReview})}).catch(()=>{})};H5(),nw(),sB(),uB(),X5(),q5();let{notification:z,dismissNotification:A}=nB();YS(()=>{if(z){let I=setTimeout(A,5e3);return()=>clearTimeout(I)}},[z,A]);let D=t.find(I=>I.id===e),y=r&&!!e&&!!D,{onboarded:k,dismiss:T}=oB(),F=mB({sessionToken:o,selectedProjectId:e,selectedProjectLoaded:!!D,loadingProjects:n,projectsCount:t.length}),{loadingMapping:S}=yt(),x=y&&!!a&&!s&&S,E=g.find(I=>I.id===s),w=(E?.costUsd||0)+(m?.costUsd||0),R=(E?.inputTokens||0)+(E?.outputTokens||0)+(m?.inputTokens||0)+(m?.outputTokens||0),_=!!C.showCosts&&w>0,P=I=>I<.01?I.toFixed(4):I<.1?I.toFixed(3):I.toFixed(2),N=I=>I>=1e3?`${(I/1e3).toFixed(1)}K`:String(I);return gt.createElement(F0,{header:gt.createElement(M0,{toolbar:gt.createElement(v5,{onOpenSettings:()=>M(!0)})}),footer:gt.createElement(ape,null,gt.createElement(spe,null,Kt.NAME," v","0.20.1"),_&&gt.createElement(lpe,null,gt.createElement(hB,{tone:pe.green},gt.createElement("span",{className:"muted"},"cost"),gt.createElement("span",{className:"val"},"$",P(w)),gt.createElement("span",{className:"muted"},"/"),gt.createElement("span",{className:"val"},"\u20AA",P(w*3.65))),R>0&&gt.createElement(hB,{tone:Di},gt.createElement("span",{className:"val"},"#"),gt.createElement("span",{className:"val"},N(R)),gt.createElement("span",{className:"muted"},"tokens"))))},z&&gt.createElement(npe,{variant:z.variant||"success"},gt.createElement(rpe,null,z.variant==="error"?"!":z.variant==="warning"?"\u26A0":"+"),gt.createElement(ope,null,z.message),gt.createElement(ipe,{onClick:A},"x")),i&&gt.createElement(vB,null,gt.createElement("span",null,"\u26A0"),gt.createElement(SB,null,i),gt.createElement(kB,{onClick:()=>M(!0)},"Reconnect")),c==="admin"&&u&&gt.createElement(vB,null,gt.createElement("span",null,"\u{1F441}"),gt.createElement(SB,null,"Previewing as ",u),gt.createElement(kB,{onClick:L},"Exit preview")),F||x?gt.createElement(Rs,{label:F?"Loading...":"Loading review..."}):i?gt.createElement(xB,null,gt.createElement(yB,null,"\u2699"),gt.createElement(bB,null,"Connection issue"),gt.createElement(wB,null,"Session expired or dashboard unreachable. Please reconnect."),gt.createElement(tn,{onClick:()=>M(!0)},"Reconnect")):k&&!v&&o&&!n&&!e?gt.createElement(xB,null,gt.createElement(yB,null,"\u{1F4C1}"),gt.createElement(bB,null,"No project selected"),gt.createElement(wB,null,"Select or create a project for this Storybook to start reviewing."),gt.createElement(tn,{onClick:()=>M(!0)},"Open Settings")):k&&!v?gt.createElement($S,null):gt.createElement(UF,{onSkip:T,canSkip:y&&!v,figmaExpired:v}),h&&gt.createElement(F8,{onClose:()=>M(!1)}))};import TB,{useCallback as cpe,useEffect as upe}from"react";import{useStorybookApi as ppe,useStorybookState as dpe}from"storybook/manager-api";import{IconButton as fpe}from"storybook/internal/components";function EB(e){let t=e?.entries??e,n=new Map;if(!t||typeof t!="object")return n;for(let[r,o]of Object.entries(t)){if(!o||typeof o!="object"||o.type!=="story")continue;let i=r.indexOf("--"),a=i===-1?r:r.slice(0,i);n.set(a,(n.get(a)??0)+1)}return n}var gpe="uireview",mpe=`${gpe}/panel`,IB=()=>{let e=ppe(),{index:t}=dpe();aA(e),upe(()=>{if(!t)return;let r=EB(t);r.size&&I3(r)},[t]);let n=cpe(()=>{e.togglePanel(!0),e.setSelectedPanel(mpe)},[e]);return TB.createElement(fpe,{key:"uireview-tool",title:"UI Review - Compare with Figma",onClick:n},TB.createElement(Kk,null))};Ce();Pe();import Ct,{useState as Hs,useCallback as BB,useEffect as Mm,useRef as Tpe}from"react";import{styled as lr,keyframes as Ipe,useTheme as Rpe}from"storybook/theming";import{addons as Ip}from"storybook/manager-api";Me();Pe();import{addons as bpe,experimental_getStatusStore as Fm}from"storybook/manager-api";function Ya(e){let t=e.indexOf("--"),n=t===-1?e:e.slice(0,t),r=n.split("-").filter(Boolean);return r.length>1&&/^(components?|example|stories|pages?|ui)$/i.test(r[0])&&r.shift(),r.map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join(" ")||n}Me();Pe();var RB=q(),hpe="uireview/badge";async function AB(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;b.warn(`[reviewAll] Rate limited, retrying in ${i}ms`),await new Promise(a=>setTimeout(a,i))}throw new Error("Max retries exceeded")}async function xpe(e,t){let n=new TextDecoder,r="",o=null,i=0,a=0,s=0,c=0,u=0,l=0;for(;;){let{done:d,value:f}=await e.read();if(d)break;if(t()){e.cancel();break}r+=n.decode(f,{stream:!0});let p=r.split(`
279
279
  `);r=p.pop()||"";for(let g of p)if(g.startsWith("data: "))try{let m=JSON.parse(g.slice(6));if(m.type==="complete"){o=m.complianceScore??m.validation?.complianceScore??null;let v=(m.issues||[]).filter(h=>!h.dismissed);i=v.filter(h=>h.severity==="critical").length,a=v.filter(h=>h.severity==="major").length,s=v.filter(h=>h.severity==="minor").length,c=m.costUsd||0,u=m.inputTokens||0,l=m.outputTokens||0}}catch{}}return{score:o,criticalCount:i,majorCount:a,minorCount:s,costUsd:c,inputTokens:u,outputTokens:l}}function $s(e,t,n,r,o){e&&e.set([{value:n,typeId:hpe,storyId:t,title:r,description:o}])}function FB(e,t,n){$s(e,t,"status-value:unknown","Not compared",n),du(t),af(t)}function MB(e,t,n,r,o,i){let a=Of(r,o,i),s=a==="error"?"status-value:error":a==="warn"?"status-value:warning":"status-value:success",c=[`Score: ${n}`];r>0&&c.push(`${r} critical`),o>0&&c.push(`${o} major`),i>0&&c.push(`${i} minor`);let u=a==="success"?`\u2713 Score ${n}`:a==="warn"?`\u26A0 Score ${n}`:`\u2717 Score ${n}`;return $s(e,t,s,u,c.join(" \xB7 ")),Qi(t,!0),pu(t,a),sf(t,n),a}async function ype(e,t,n,r,o){let i=await AB(`${RB}/api/specs/diff`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({projectId:n,storyId:e.storyId,figmaNodeId:e.figmaNodeId,domTree:r})});if(!i.ok&&i.status!==422)throw new Error(`HTTP ${i.status}`);let a=await i.json().catch(()=>({}));if(i.status===422||a.incomparable===!0){let p=typeof a.skipped=="string"?a.skipped:"no-comparison";return b.warn(`[reviewAll] incomparable: ${e.storyName} \u2014 ${p} \xB7 figmaStyles=${a.figmaStyleCount??"?"} codeStyles=${a.codeStyleCount??"?"} deferred=${a.deferredCount??"?"}`+(a.deferReasons?` \xB7 reasons=${JSON.stringify(a.deferReasons)}`:"")+(a.figmaConfReasons?` \xB7 confReasons=${JSON.stringify(a.figmaConfReasons)}`:"")+(a.figmaNodeType||a.figmaNodeWidth?` \xB7 figmaNode=${a.figmaNodeType??"?"}/${a.figmaNodeWidth??"?"}px`:"")+(a.codeConfReasons?` \xB7 codeConfReasons=${JSON.stringify(a.codeConfReasons)}`:"")+(a.codeRootWidth||a.codeRootHeight?` \xB7 codeRoot=${a.codeRootWidth??"?"}x${a.codeRootHeight??"?"}`:"")+(a.codeRootTag||a.codeRootId||a.codeRootClass?` <${a.codeRootTag??"?"} id="${a.codeRootId??""}" class="${a.codeRootClass??""}">`:"")),$s(o,e.storyId,"status-value:unknown","Incomparable",typeof a.error=="string"?a.error:"Couldn't compare design and code"),du(e.storyId),{passed:!1,score:null,incomparable:!0,skipped:p,costUsd:0,inputTokens:0,outputTokens:0}}if(!a.success)throw new Error(a.error||"Spec check failed");let s=a.complianceScore??null,u=(a.issues||[]).filter(p=>!p.dismissed),l=u.filter(p=>p.severity==="critical").length,d=u.filter(p=>p.severity==="major").length,f=u.filter(p=>p.severity==="minor").length;if(s!==null){let p=MB(o,e.storyId,s,l,d,f);return{passed:s>=70,verdict:p,score:s,costUsd:0,inputTokens:0,outputTokens:0}}return $s(o,e.storyId,"status-value:error","Review Failed","No score received"),{passed:!1,score:null,costUsd:0,inputTokens:0,outputTokens:0}}async function PB(e,t,n,r,o,i,a=!0,s){$s(o,e.storyId,"status-value:pending","Reviewing...",e.storyName);try{let c=s!==void 0?{domTree:s}:await Mf(e.storyId,!a);if(b.debug(`[reviewAll] Captured: screenshot=${!!c.screenshot} domTree=${!!c.domTree} styles=${!!c.computedStyles} for: ${e.storyName}`),!a)return await ype(e,t,n,c.domTree,o);let u=await AB(`${RB}/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:c.screenshot,computedStyles:c.computedStyles,domTree:c.domTree,aiModels:[r]})});if(b.debug(`[reviewAll] API response for ${e.storyName}: HTTP ${u.status}`),!u.ok)throw new Error(`HTTP ${u.status}`);let l=u.body?.getReader();if(!l)throw new Error("No response body");let d=await xpe(l,i),{score:f,criticalCount:p,majorCount:g,minorCount:m,costUsd:C,inputTokens:v,outputTokens:h}=d;if(f!==null){let M=MB(o,e.storyId,f,p,g,m);return{passed:f>=70,verdict:M,score:f,costUsd:C,inputTokens:v,outputTokens:h}}return $s(o,e.storyId,"status-value:error","Review Failed","No score received"),{passed:!1,score:null,costUsd:0,inputTokens:0,outputTokens:0}}catch(c){b.error(`[reviewAll] Failed to review ${e.storyName}:`,c);let u=c instanceof Error?c.message:"Unknown error";return $s(o,e.storyId,"status-value:error","Review Failed",u),{passed:!1,score:null,costUsd:0,inputTokens:0,outputTokens:0}}}var wpe=q(),Tp="uireview/badge",KS=9e4,_B=Symbol("review-timed-out");function vpe(e,t,n){return new Promise(r=>{let o=!1,i=setTimeout(()=>{o||(o=!0,r(n()))},t),a=s=>{o||(o=!0,clearTimeout(i),r(s))};e.then(a,()=>a(n()))})}function Spe(){try{return localStorage.getItem("uicopilot_docs_batch")==="1"}catch{return!1}}function LB(){let e=!1,t=!1;try{let n=bpe.getChannel();n.on(ac,async()=>{if(!t){t=!0,e=!1,T3(),U7();try{await Epe(n,()=>e)}finally{t=!1}}}),n.on(JS,()=>{e=!0})}catch{}}async function XS(){try{let e=localStorage.getItem("uicopilot_session_token"),t=localStorage.getItem("uicopilot_selected_project_id");if(!e||!t)return[];let n=await fetch(`${wpe}/api/mappings?projectId=${t}`,{headers:{Authorization:`Bearer ${e}`}});if(!n.ok)return[];let i=((await n.json()).mappings||[]).filter(a=>a.figmaNodeId).map(a=>{let s=a;return{storyId:s.storyId,storyName:s.name||s.storyId,figmaNodeId:s.figmaNodeId}});return kpe(i),i}catch(e){return b.error("[useReviewAll] Failed to load mapped stories:",e),[]}}function kpe(e){try{if(typeof Fm!="function")return;let t=Fm(Tp);if(!t)return;let n=t.getAll?.()||{},r=new Set(e.map(a=>a.storyId)),o=Object.keys(n).filter(a=>n[a]?.[Tp]&&!r.has(a));o.length>0&&t.unset(o);let i=e.filter(a=>{let s=n[a.storyId]?.[Tp];return!(s?.value==="status-value:success"||s?.value==="status-value:warning"||s?.value==="status-value:error")}).map(a=>({value:"status-value:pending",typeId:Tp,storyId:a.storyId,title:"Mapped to Figma",description:"Ready for UI review \u2014 click Run to start"}));i.length>0&&t.set(i)}catch{}}function Cpe(){try{let e=localStorage.getItem("uicopilot_review_all_concurrency");if(e)return Math.max(1,Math.min(5,parseInt(e,10)))}catch{}return 5}async function Epe(e,t){let n=await XS();if(n.length===0){e.emit(Ka,{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 T=localStorage.getItem("uicopilot_selected_models");if(T){let F=JSON.parse(T);Array.isArray(F)&&F.length>0&&(i=F[0])}}catch{}let a=null;try{typeof Fm=="function"&&(a=Fm(Tp))}catch{}let s=Xl(),c=Cpe(),u=0,l=0,d=0,f=0,p=new Map,g=0,m=0,C=0,v=0,h=0,{toReview:M,notCompared:L}=qR(n,await ig(o,r));for(let{story:T,detail:F}of L)FB(a,T.storyId,F);f+=L.length,L.length&&p.set("variant-uncertain",L.length);let z=L.length;e.emit(Ci,{total:M.length,completed:0,notCompared:z,currentStoryName:M[0]?.storyName||"",currentComponent:Ya(M[0]?.storyId||"")});let A=new Map;if(!s&&Spe()&&!t()){e.emit(Ci,{total:M.length,completed:0,notCompared:z,currentStoryName:"Capturing renders\u2026"});try{let T=await Ff(M.map(F=>({id:F.storyId})),(F,S)=>e.emit(Ci,{total:S,completed:F,notCompared:z,currentStoryName:"Capturing renders\u2026"}));for(let[F,S]of T)A.set(F,S);b.debug(`[reviewAll] docs-batch captured ${A.size}/${n.length} DOMs`)}catch(T){b.warn("[reviewAll] docs-batch capture failed \u2014 server fallback",T)}}let D=M.map(T=>()=>vpe(PB(T,r,o,i,a,t,s,A.get(T.storyId)),KS,()=>(b.warn(`[reviewAll] ${T.storyName} exceeded ${KS}ms \u2014 skipping so the run can finish`),_B)));await vu(D,c,(T,F)=>{if(F===_B)g++;else if(F&&typeof F=="object"&&"score"in F){let S=F;if(S.incomparable){f++;let x=S.skipped||"no-comparison";p.set(x,(p.get(x)??0)+1)}else S.verdict?S.verdict==="success"?u++:S.verdict==="warn"?l++:d++:S.score!==null&&S.score>=90?u++:S.score!==null&&S.score>=70?l++:d++;C+=S.costUsd||0,v+=S.inputTokens||0,h+=S.outputTokens||0}else m++;b.debug(`[reviewAll] Story ${T+1}/${M.length} done:`,M[T].storyName,F),e.emit(Ci,{total:M.length,completed:u+l+d+f-z+g+m,notCompared:z,currentStoryName:M[T].storyName,currentComponent:Ya(M[T].storyId)})},t);let k=`[reviewAll] DONE \u2014 ${u+l+d}/${n.length} reviewed (\u2713${u} \u26A0${l} \u2717${d})`+(f?` \xB7 ${f} nothing-to-compare`:"")+(g?` \xB7 ${g} TIMED OUT (>${KS/1e3}s)`:"")+(m?` \xB7 ${m} capture/transport error`:"");if(g||m?b.warn(k):b.info(k),f>0){let T=[...p.entries()].sort((F,S)=>S[1]-F[1]).map(([F,S])=>`${S} ${F}`).join(" \xB7 ");b.warn(`[reviewAll] INCOMPARABLE breakdown \u2014 ${T}`)}e.emit(Ka,{total:n.length,passed:u,failed:d,warnCount:l,incomparable:f,timedOut:g,errored:m,costUsd:C,inputTokens:v,outputTokens:h})}var Ape=lr.div({padding:"8px 12px",display:"flex",flexDirection:"column",gap:"6px"}),Fpe=lr.div({display:"flex",alignItems:"center",justifyContent:"space-between",gap:"8px"}),Mpe=lr.span(({theme:e})=>({fontSize:"12px",fontWeight:500,color:e.color.defaultText})),Us=lr.span(({theme:e})=>({fontSize:"11px",color:e.color.mediumdark})),QS=lr(Us)(({theme:e})=>({fontFamily:e.typography.fonts.mono,fontVariantNumeric:"tabular-nums",flexShrink:0})),Ppe=lr(QS)(({theme:e})=>({color:e.color.defaultText})),_pe=lr(Us)({flexGrow:1,minWidth:0,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}),Lpe=lr.div({display:"flex",alignItems:"center",gap:"10px"}),Bpe=lr.div({display:"flex",justifyContent:"space-between",gap:"8px"}),Pm=[0,1,2,3,4],e2=1500,zpe=4,Dpe=3,ZS=.2,Npe=Ipe`
280
280
  0% { opacity: ${ZS}; }
281
281
  15% { opacity: 1; }