@deframe-sdk/components 0.1.5 → 0.1.6
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/index.d.mts +287 -1
- package/dist/index.d.ts +287 -1
- package/dist/index.js +880 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +852 -3
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +300 -0
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/stories/buttons/action-button/ActionButton.tsx","../src/stories/buttons/percentage-button/PercentageButton.tsx","../src/stories/buttons/primary-button/PrimaryButton.tsx","../src/stories/buttons/secondary-button/SecondaryButton.tsx","../src/stories/buttons/tertiary-button/TertiaryButton.tsx","../src/stories/texts/Link.tsx","../src/stories/inputs/Input.tsx","../src/stories/lists/List.tsx","../src/stories/lists/wallet-list/WalletListContainer.tsx","../src/stories/texts/Text.tsx","../src/stories/texts/TextAccent.tsx","../src/stories/texts/TextBody.tsx","../src/stories/texts/TextHeading.tsx","../src/stories/texts/Title.tsx","../src/stories/lists/wallet-list/WalletList.tsx","../src/stories/lists/wallet-list/WalletItem.tsx","../src/stories/currency/Currency.tsx","../src/stories/tabs/Tabs.tsx","../src/stories/select/Select.tsx","../src/stories/loading/Skeleton.tsx","../src/stories/banner/BannerNotification.tsx","../src/stories/address/AddressDisplay.tsx","../src/stories/details/SummaryDetails.tsx","../src/stories/action-sheet/ActionSheet.tsx","../src/stories/providers/types.ts","../src/stories/providers/DeframeComponentsProvider.tsx"],"names":["twMerge","jsx","React","React2","React3","React4","jsxs","React5","motion","React6","AnimatePresence","MdInfoOutline","MdWarningAmber","MdErrorOutline","MdCheckCircleOutline","React7","MdClose","React8","React9","useState","useEffect","_a","useMemo"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIe,SAAR,aAA+B,EAAA,EAMtB;AANsB,EAAA,IAAA,EAAA,GAAA,EAAA,EACpC;AAAA,IAAA,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,EAAA;AAAA,IACZ,IAAA,GAAO;AAAA,GART,GAIsC,EAAA,EAKjC,KAAA,GAAA,SAAA,CALiC,EAAA,EAKjC;AAAA,IAJH,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,OAAO;AAAA,QACL,SAAA,EACE,8HAAA;AAAA,QACF,KAAA,EACE,oFAAA;AAAA,QACF,IAAA,EAAM;AAAA,OACR;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,SAAA,EACE,4JAAA;AAAA,MACF,KAAA,EACE,wKAAA;AAAA,MACF,IAAA,EAAM;AAAA,KACR;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,MAAM,gBAAA,GAAmBA,qBAAA;AAAA,IACvB,iVAAA;AAAA,IACA,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF;AAEA,EAAA,uBACEC,cAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,IAAA;AAAA,MACA,SAAA,EAAW,gBAAA;AAAA,MACX;AAAA,KAAA,EACI,KAAA,CAAA,EAJL;AAAA,MAMC,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,KAAA,EACrB,QAAA,kBAAAA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,IAAA,EAAO,QAAA,EAAS,CAAA,EACzC;AAAA,KAAA;AAAA,GACF;AAEJ;AC9Ce,SAAR,iBAAmC,EAAA,EAM1B;AAN0B,EAAA,IAAA,EAAA,GAAA,EAAA,EACxC;AAAA,IAAA,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,EAAA;AAAA,IACZ,IAAA,GAAO;AAAA,GART,GAI0C,EAAA,EAKrC,KAAA,GAAA,SAAA,CALqC,EAAA,EAKrC;AAAA,IAJH,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmBD,qBAAAA;AAAA,IACvB,iVAAA;AAAA,IACA,QAAA,IAAY,oBAAA;AAAA,IACZ;AAAA,GACF;AAEA,EAAA,uBACEC,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,IAAA;AAAA,MACA,SAAA,EAAW,gBAAA;AAAA,MACX;AAAA,KAAA,EACI,KAAA,CAAA,EAJL;AAAA,MAME;AAAA,KAAA;AAAA,GACH;AAEJ;ACvBe,SAAR,cAAgC,EAAA,EAMvB;AANuB,EAAA,IAAA,EAAA,GAAA,EAAA,EACrC;AAAA,IAAA,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,EAAA;AAAA,IACZ,IAAA,GAAO;AAAA,GART,GAIuC,EAAA,EAKlC,KAAA,GAAA,SAAA,CALkC,EAAA,EAKlC;AAAA,IAJH,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAIA,EAAA,MAAM,WAAA,GAAc;AAAA;AAAA,IAElB,qFAAA;AAAA;AAAA,IAEA,0CAAA;AAAA,IACA,gDAAA;AAAA,IACA,qDAAA;AAAA,IACA,0DAAA;AAAA;AAAA,IAEA,8CAAA;AAAA,IACA,8CAAA;AAAA;AAAA,IAEA,gDAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAEV,EAAA,MAAM,YAAA,GAAe;AAAA;AAAA,IAEnB,OAAA,EAAS;AAAA,MACP,kBAAA;AAAA,MACA,iDAAA;AAAA,MACA,gDAAA;AAAA,MACA,2DAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,GAAG,CAAA;AAAA;AAAA,IAEV,QAAA,EAAU;AAAA,MACR,0DAAA;AAAA,MACA,yDAAA;AAAA,MACA,oEAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,GAAG;AAAA,GACZ;AAGA,EAAA,MAAM,aAAA,GAAgBD,qBAAAA;AAAA,IACpB,WAAA;AAAA,IACA,YAAA,CAAa,QAAA,GAAW,UAAA,GAAa,SAAS,CAAA;AAAA,IAC9C;AAAA,GACF;AAEA,EAAA,uBACEC,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,gBAAA;AAAA,MACV,cAAA,EAAa,gBAAA;AAAA,MACb,YAAA,EAAW,gBAAA;AAAA,MACX,IAAA;AAAA,MACA,SAAA,EAAW,aAAA;AAAA,MACX;AAAA,KAAA,EACI,KAAA,CAAA,EAPL;AAAA,MASE;AAAA,KAAA;AAAA,GACH;AAEJ;AC/De,SAAR,gBAAkC,EAAA,EAMzB;AANyB,EAAA,IAAA,EAAA,GAAA,EAAA,EACvC;AAAA,IAAA,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,EAAA;AAAA,IACZ,IAAA,GAAO;AAAA,GART,GAIyC,EAAA,EAKpC,KAAA,GAAA,SAAA,CALoC,EAAA,EAKpC;AAAA,IAJH,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAIA,EAAA,MAAM,WAAA,GAAc;AAAA;AAAA,IAElB,qFAAA;AAAA;AAAA,IAEA,0CAAA;AAAA,IACA,gDAAA;AAAA,IACA,qDAAA;AAAA,IACA,0DAAA;AAAA;AAAA,IAEA,8CAAA;AAAA,IACA,8CAAA;AAAA;AAAA,IAEA,gBAAA;AAAA,IACA,gDAAA;AAAA,IACA,mEAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAGV,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,OAAA,EAAS;AAAA,MACP,0DAAA;AAAA,MACA,6DAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,GAAG,CAAA;AAAA,IACV,QAAA,EAAU;AAAA,MACR,kEAAA;AAAA,MACA,sEAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,GAAG;AAAA,GACZ;AAGA,EAAA,MAAM,aAAA,GAAgBD,qBAAAA;AAAA,IACpB,WAAA;AAAA,IACA,YAAA,CAAa,QAAA,GAAW,UAAA,GAAa,SAAS,CAAA;AAAA,IAC9C;AAAA,GACF;AAEA,EAAA,uBACEC,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,kBAAA;AAAA,MACV,cAAA,EAAa,kBAAA;AAAA,MACb,YAAA,EAAW,kBAAA;AAAA,MACX,IAAA;AAAA,MACA,SAAA,EAAW,aAAA;AAAA,MACX;AAAA,KAAA,EACI,KAAA,CAAA,EAPL;AAAA,MASE;AAAA,KAAA;AAAA,GACH;AAEJ;AC7De,SAAR,eAAiC,EAAA,EAMxB;AANwB,EAAA,IAAA,EAAA,GAAA,EAAA,EACtC;AAAA,IAAA,QAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA,GAAY,EAAA;AAAA,IACZ,IAAA,GAAO;AAAA,GART,GAIwC,EAAA,EAKnC,KAAA,GAAA,SAAA,CALmC,EAAA,EAKnC;AAAA,IAJH,UAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAIA,EAAA,MAAM,WAAA,GAAc;AAAA;AAAA,IAElB,qFAAA;AAAA;AAAA,IAEA,0CAAA;AAAA,IACA,gDAAA;AAAA,IACA,qDAAA;AAAA,IACA,0DAAA;AAAA;AAAA,IAEA,8CAAA;AAAA,IACA,8CAAA;AAAA;AAAA,IAEA,4BAAA;AAAA,IACA,gDAAA;AAAA,IACA;AAAA,GACF,CAAE,KAAK,GAAG,CAAA;AAGV,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,OAAA,EAAS;AAAA,MACP,yDAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,GAAG,CAAA;AAAA,IACV,QAAA,EAAU;AAAA,MACR,iEAAA;AAAA,MACA;AAAA,KACF,CAAE,KAAK,GAAG;AAAA,GACZ;AAGA,EAAA,MAAM,aAAA,GAAgBD,qBAAAA;AAAA,IACpB,WAAA;AAAA,IACA,YAAA,CAAa,QAAA,GAAW,UAAA,GAAa,SAAS,CAAA;AAAA,IAC9C;AAAA,GACF;AAEA,EAAA,uBACEC,cAAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MACV,cAAA,EAAa,iBAAA;AAAA,MACb,YAAA,EAAW,iBAAA;AAAA,MACX,IAAA;AAAA,MACA,SAAA,EAAW,aAAA;AAAA,MACX;AAAA,KAAA,EACI,KAAA,CAAA,EAPL;AAAA,MASE;AAAA,KAAA;AAAA,GACH;AAEJ;AC1De,SAAR,KAAuB,EAAA,EAMhB;AANgB,EAAA,IAAA,EAAA,GAAA,EAAA,EAC5B;AAAA,IAAA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,SAAA,GAAY,EAAA;AAAA,IACZ,MAAA,GAAS;AAAA,GARX,GAI8B,EAAA,EAKzB,KAAA,GAAA,SAAA,CALyB,EAAA,EAKzB;AAAA,IAJH,UAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,IAAA,EAAM;AAAA,GACR;AAEA,EAAA,MAAM,WAAA,GAAcD,qBAAAA,CAAQ,MAAA,CAAO,IAAA,EAAM,SAAS,CAAA;AAElD,EAAA,uBACEC,cAAAA;AAAA,IAAC,GAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,IAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA,EAAW,WAAA;AAAA,MACX,GAAA,EAAK,MAAA,KAAW,QAAA,GAAW,qBAAA,GAAwB;AAAA,KAAA,EAC/C,KAAA,CAAA,EALL;AAAA,MAOE;AAAA,KAAA;AAAA,GACH;AAEJ;ACxBe,SAAR,MAAwB,EAAA,EAShB;AATgB,EAAA,IAAA,EAAA,GAAA,EAAA,EAC7B;AAAA,IAAA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,IAAA,GAAO,MAAA;AAAA,IACP,UAAA,GAAa,kBAAA;AAAA,IACb,QAAA;AAAA,IACA;AAAA,GAXF,GAI+B,EAAA,EAQ1B,KAAA,GAAA,SAAA,CAR0B,EAAA,EAQ1B;AAAA,IAPH,OAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,QAAA,GAAW,CAAC,CAAC,KAAA;AAEnB,EAAA,MAAM,YAAA,GAAeD,qBAAAA;AAAA,IACnB,0BAAA;AAAA,IACA,wDAAA;AAAA,IACA,QAAA,GACI,gBAAA,GACA,QAAA,GACE,4BAAA,GACA,iBAAA;AAAA,IACN;AAAA,GACF;AAEA,EAAA,MAAM,YAAA,GAAe,4CAAA;AAErB,EAAA,uCACG,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,IAAA,KAAA,oBAASC,cAAAA,CAAC,OAAA,EAAA,EAAM,SAAA,EAAW,cAAe,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBACjDA,cAAAA;AAAA,MAAC,OAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,IAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA,SAAA,EAAW;AAAA,OAAA,EACP,KAAA;AAAA,KACN;AAAA,IACC,IAAA,KAAS,UAAA,oBACRA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,kBAAAA,cAAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,GAAA,EAAK,sBAAW,CAAA,EAC7B,CAAA;AAAA,IAED,yBAASA,cAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6BAA6B,QAAA,EAAA,KAAA,EAAM;AAAA,GAAA,EAC5D,CAAA;AAEJ;AC/BO,IAAM,WAAoC,CAAC;AAAA,EAChD,QAAA;AAAA,EACA,SAAA;AAAA,EACA,kBAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,gBAAA,GAAmBD,qBAAAA;AAAA,IACvB,gRAAA;AAAA,IACA,OAAA,IAAW,gBAAA;AAAA,IACX;AAAA,GACF;AAEA,EAAA,uBACEC,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,gBAAA,EAAkB,SAChC,QAAA,kBAAAA,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWD,qBAAAA;AAAA,QACT,mFAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEO,IAAM,gBAAA,GAGR,CAAC,EAAE,QAAA,EAAU,WAAU,KAAM;AAChC,EAAA,uBACEC,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWD,qBAAAA,CAAQ,6CAAA,EAA+C,SAAS,CAAA;AAAA,MAE1E;AAAA;AAAA,GACH;AAEJ;AAEO,IAAM,eAAA,GAGR,CAAC,EAAE,QAAA,EAAU,WAAU,KAAM;AAChC,EAAA,uBACEC,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWD,qBAAAA;AAAA,QACT,gGAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AAEO,IAAM,iBAAA,GAGR,CAAC,EAAE,QAAA,EAAU,WAAU,KAAM;AAChC,EAAA,uBACEC,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWD,qBAAAA;AAAA,QACT,kDAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;ACvEe,SAAR,mBAAA,CAAsC;AAAA,EAC3C,QAAA;AAAA,EACA;AACF,CAAA,EAA6B;AAC3B,EAAA,uBACEC,eAAC,KAAA,EAAA,EAAI,SAAA,EAAWD,sBAAQ,qBAAA,EAAuB,SAAS,GACrD,QAAA,EACH,CAAA;AAEJ;ACXA,IAAM,IAAA,GAAaE,iBAAA,CAAA,UAAA;AAAA,EACjB,CACE,IACA,GAAA,KACG;AAFH,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,EAAA,EAAI,SAAA,GAAY,GAAA,EAAK,YAAA,EAAc,SAAA,EAAW,QAAA,EAdpD,GAcI,EAAA,EAA6D,KAAA,GAAA,SAAA,CAA7D,EAAA,EAA6D,CAA3D,IAAA,EAAqB,gBAAc,WAAA,EAAW,UAAA,CAAA,CAAA;AAGhD,IAAA,OAAaA,iBAAA,CAAA,aAAA;AAAA,MACX,SAAA;AAAA,MACA,cAAA,CAAA;AAAA,QACE,GAAA;AAAA,QACA,SAAA,EAAWF,qBAAAA,CAAQ,cAAA,EAAgB,YAAA,EAAc,SAAS;AAAA,OAAA,EACvD,KAAA,CAAA;AAAA,MAEL;AAAA,KACF;AAAA,EACF;AACF,CAAA;AAEA,IAAA,CAAK,WAAA,GAAc,MAAA;AACnB,IAAO,YAAA,GAAQ;AC3Bf,IAAM,cAAA,GAAiB;AAAA,EACrB,cAAA,EAAgB,0CAAA;AAAA,EAChB,eAAA,EAAiB,0CAAA;AAAA,EACjB,cAAA,EAAgB;AAClB,CAAA;AAOA,IAAM,UAAA,GAAmBG,iBAAA,CAAA,UAAA;AAAA,EACvB,CAAC,IAAsD,GAAA,KAAQ;AAA9D,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,OAAA,GAAU,iBAAiB,EAAA,GAAK,MAAA,KAAlC,EAAA,EAA6C,KAAA,GAAA,SAAA,CAA7C,EAAA,EAA6C,CAA3C,SAAA,EAA2B,IAAA,CAAA,CAAA;AAC5B,IAAA,MAAM,YAAA,GAAe,eAAe,OAAO,CAAA;AAC3C,IAAA,uBAAOF,cAAAA,CAAC,YAAA,EAAA,cAAA,CAAA,EAAK,GAAA,EAAU,EAAA,EAAQ,gBAAgC,KAAA,CAAO,CAAA;AAAA,EACxE;AACF,CAAA;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AACzB,IAAO,kBAAA,GAAQ;ACnBf,IAAM,YAAA,GAAe;AAAA,EACnB,YAAA,EAAc,wCAAA;AAAA,EACd,aAAA,EAAe,wCAAA;AAAA,EACf,YAAA,EAAc;AAChB,CAAA;AAOA,IAAM,QAAA,GAAiBG,iBAAA,CAAA,UAAA;AAAA,EACrB,CAAC,IAAiD,GAAA,KAAQ;AAAzD,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,OAAA,GAAU,eAAe,EAAA,GAAK,GAAA,KAAhC,EAAA,EAAwC,KAAA,GAAA,SAAA,CAAxC,EAAA,EAAwC,CAAtC,SAAA,EAAyB,IAAA,CAAA,CAAA;AAC1B,IAAA,MAAM,YAAA,GAAe,aAAa,OAAO,CAAA;AACzC,IAAA,uBAAOH,cAAAA,CAAC,YAAA,EAAA,cAAA,CAAA,EAAK,GAAA,EAAU,EAAA,EAAQ,gBAAgC,KAAA,CAAO,CAAA;AAAA,EACxE;AACF,CAAA;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;AACvB,IAAO,gBAAA,GAAQ;ACnBf,IAAM,eAAA,GAAkB;AAAA,EACtB,SAAA,EAAW,wDAAA;AAAA,EACX,EAAA,EAAI,2CAAA;AAAA,EACJ,EAAA,EAAI,2CAAA;AAAA,EACJ,EAAA,EAAI,2CAAA;AAAA,EACJ,EAAA,EAAI,2CAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAOA,IAAM,WAAA,GAAoBI,iBAAA,CAAA,UAAA;AAAA,EACxB,CAAC,IAAkC,GAAA,KAAQ;AAA1C,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,OAAA,GAAU,MAAM,EAAA,EAlBrB,GAkBG,IAAyB,KAAA,GAAA,SAAA,CAAzB,EAAA,EAAyB,CAAvB,SAAA,EAAgB,IAAA,CAAA,CAAA;AACjB,IAAA,MAAM,YAAA,GAAe,gBAAgB,OAAO,CAAA;AAC5C,IAAA,uBACEJ,cAAAA;AAAA,MAAC,YAAA;AAAA,MAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,EAAA,EAAI,OAAA,KAAY,SAAA,GAAY,IAAA,GAAO,OAAA;AAAA,QACnC;AAAA,OAAA,EACI,KAAA;AAAA,KACN;AAAA,EAEJ;AACF,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAC1B,IAAO,mBAAA,GAAQ;ACzBA,SAAR,MAAwB,EAAA,EAGV;AAHU,EAAA,IAAA,EAAA,GAAA,EAAA,EAC7B;AAAA,IAAA,OAAA,GAAU;AAAA,GARZ,GAO+B,EAAA,EAE1B,KAAA,GAAA,SAAA,CAF0B,EAAA,EAE1B;AAAA,IADH;AAAA,GAAA,CAAA;AAGA,EAAA,uBAAOA,cAAAA,CAAC,mBAAA,EAAA,cAAA,CAAA,EAAY,OAAA,EAAA,EAAsB,KAAA,CAAO,CAAA;AACnD;ACwBe,SAAR,iBAAA,CAAoC;AAAA,EACzC,OAAA;AAAA,EACA;AACF,CAAA,EAA2B;AACzB,EAAA,MAAM,iBAAA,GAAoB,CAAC,MAAA,KAAyB;AAxCtD,IAAA,IAAA,EAAA;AAyCI,IAAA,CAAA,EAAA,GAAA,MAAA,CAAO,OAAA,KAAP,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA;AAAA,EACF,CAAA;AAEA,EAAA,uBACEA,eAAC,KAAA,EAAA,EAAI,SAAA,EAAWD,sBAAQ,QAAA,EAAU,SAAS,CAAA,EACzC,QAAA,kBAAAC,cAAAA,CAAC,mBAAA,EAAA,EACE,kBAAQ,GAAA,CAAI,CAAC,2BACZK,eAAAA,CAAC,YAAyB,OAAA,EAAS,MAAM,iBAAA,CAAkB,MAAM,CAAA,EAC/D,QAAA,EAAA;AAAA,oBAAAL,eAAC,gBAAA,EAAA,EACE,QAAA,EAAA,OAAO,MAAA,CAAO,IAAA,KAAS,2BAEpBA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAK,MAAA,CAAO,IAAA;AAAA,QACZ,KAAK,MAAA,CAAO,IAAA;AAAA,QACZ,SAAA,EAAU;AAAA;AAAA,KACZ,GAGE,OAAO,IAAA,EAEf,CAAA;AAAA,oBACAA,eAAC,eAAA,EAAA,EACC,QAAA,kBAAAA,eAAC,YAAA,EAAA,EAAM,QAAA,EAAA,MAAA,CAAO,MAAK,CAAA,EACrB,CAAA;AAAA,oBACAA,cAAAA,CAAC,iBAAA,EAAA,EAEC,QAAA,kBAAAA,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,qCAAA;AAAA,QACV,IAAA,EAAK,MAAA;AAAA,QACL,OAAA,EAAQ,WAAA;AAAA,QACR,MAAA,EAAO,cAAA;AAAA,QAEP,QAAA,kBAAAA,cAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAc,OAAA;AAAA,YACd,cAAA,EAAe,OAAA;AAAA,YACf,WAAA,EAAa,CAAA;AAAA,YACb,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA,KACF,EACF;AAAA,GAAA,EAAA,EAhCa,MAAA,CAAO,EAiCtB,CACD,CAAA,EACH,CAAA,EACF,CAAA;AAEJ;ACnEe,SAAR,UAAA,CAA6B;AAAA,EAClC,EAAA;AAAA,EACA,IAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF,CAAA,EAAoB;AAClB,EAAA,uBACEK,eAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MAEC,OAAA;AAAA,MACA,SAAA,EAAWN,qBAAAA;AAAA,QACT,oCAAA;AAAA,QACA,0BAAA;AAAA,QACA,6BAAA;AAAA,QACA,wCAAA;AAAA,QACA,2EAAA;AAAA,QACA;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAC,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,kGACZ,QAAA,EAAA,OAAO,IAAA,KAAS,2BAEbA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,GAAA,EAAK,IAAA;AAAA,YACL,GAAA,EAAK,IAAA;AAAA,YACL,SAAA,EAAU;AAAA;AAAA,YAIV,IAAA,EAER,CAAA;AAAA,wBAGAA,cAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sEACb,QAAA,EAAA,IAAA,EACH,CAAA;AAAA,wBAGAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,qCAAA;AAAA,YACV,IAAA,EAAK,MAAA;AAAA,YACL,OAAA,EAAQ,WAAA;AAAA,YACR,MAAA,EAAO,cAAA;AAAA,YAEP,QAAA,kBAAAA,cAAAA;AAAA,cAAC,MAAA;AAAA,cAAA;AAAA,gBACC,aAAA,EAAc,OAAA;AAAA,gBACd,cAAA,EAAe,OAAA;AAAA,gBACf,WAAA,EAAa,CAAA;AAAA,gBACb,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AACF;AAAA,KAAA;AAAA,IA5CK;AAAA,GA6CP;AAEJ;ACvEA,IAAM,eAAA,GAAkB;AAAA,EACtB,OAAA,EAAS;AAAA,IACP,GAAA,EAAK,GAAA;AAAA,IACL,GAAA,EAAK,IAAA;AAAA,IACL,GAAA,EAAK,QAAA;AAAA,IACL,GAAA,EAAK,QAAA;AAAA,IACL,GAAA,EAAK,QAAA;AAAA,IACL,IAAA,EAAM,GAAA;AAAA,IACN,IAAA,EAAM;AAAA,GACR;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,GAAA,EAAK,KAAA;AAAA,IACL,IAAA,EAAM,MAAA;AAAA,IACN,IAAA,EAAM;AAAA;AAEV,CAAA;AAGA,IAAM,YAAA,GAAe;AAAA,EACnB,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,aAAA;AAAA,IACN,MAAA,EAAQ,cAAA;AAAA,IACR,KAAA,EAAO;AAAA,GACT;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,IAAI,EAAE,OAAA,EAAS,YAAY,SAAA,EAAW,SAAA,EAAW,KAAK,SAAA,EAAU;AAAA,IAChE,IAAI,EAAE,OAAA,EAAS,YAAY,SAAA,EAAW,WAAA,EAAa,KAAK,OAAA,EAAQ;AAAA,IAChE,IAAI,EAAE,OAAA,EAAS,YAAY,SAAA,EAAW,SAAA,EAAW,KAAK,OAAA;AAAQ;AAElE,CAAA;AAGe,SAAR,SAA2B,KAAA,EAAkC;AAxCpE,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0CE,EAAA,MAAM,eAAA,GAIJ,cAAc,KAAA,GACV;AAAA,IACE,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,QAAA,EAAU,KAAA;AAAA,IACV,iBAAiB,KAAA,CAAM,QAAA;AAAA,IACvB,iBAAA,EAAmB,MAAA;AAAA,IACnB,KAAA,EAAA,CAAO,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,OAAA;AAAA,IACtB,IAAA,EAAA,CAAM,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,IAAA,GAAA,EAAA,GAAc,IAAA;AAAA,IACpB,UAAA,EAAY,KAAA;AAAA,IACZ,SAAA,EAAW,KAAA;AAAA,IACX,SAAA,EAAA,CAAW,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB;AAAA,GAChC,GACA;AAAA,IACE,QAAQ,KAAA,CAAM,MAAA;AAAA,IACd,QAAA,EAAA,CAAU,EAAA,GAAA,KAAA,CAAM,QAAA,KAAN,IAAA,GAAA,EAAA,GAAkB,KAAA;AAAA,IAC5B,iBAAiB,KAAA,CAAM,eAAA;AAAA,IACvB,mBAAmB,KAAA,CAAM,iBAAA;AAAA,IACzB,KAAA,EAAA,CAAO,EAAA,GAAA,KAAA,CAAM,KAAA,KAAN,IAAA,GAAA,EAAA,GAAe,OAAA;AAAA,IACtB,IAAA,EAAA,CAAM,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,IAAA,GAAA,EAAA,GAAc,IAAA;AAAA,IACpB,UAAA,EAAA,CAAY,EAAA,GAAA,KAAA,CAAM,UAAA,KAAN,IAAA,GAAA,EAAA,GAAoB,IAAA;AAAA,IAChC,SAAA,EAAA,CAAW,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB,KAAA;AAAA,IAC9B,SAAA,EAAA,CAAW,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,EAAA,GAAmB;AAAA,GAChC;AAEN,EAAA,MAAM;AAAA,IACJ,MAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,iBAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF,GAAI,eAAA;AAGJ,EAAA,MAAM,YAAA,GAAe,CACnB,KAAA,EACA,IAAA,EACA,aAAA,KACW;AACX,IAAA,IAAI,CAAC,aAAA,IAAiB,CAAC,SAAA,EAAW,OAAO,KAAA;AAEzC,IAAA,MAAM,MAAA,GAAS,aAAA,GAAgB,eAAA,CAAgB,OAAA,CAAQ,IAAI,CAAA,GAAI,EAAA;AAC/D,IAAA,MAAM,QAAQ,SAAA,GAAY,CAAA,CAAA,EAAI,gBAAgB,MAAA,CAAO,IAAI,CAAC,CAAA,CAAA,GAAK,EAAA;AAG/D,IAAA,IACE,CAAC,KAAA,EAAO,KAAK,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA,IAC5B,CAAC,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,IACnB,CAAC,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EACnB;AACA,MAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,KAAK,GAAG,KAAK,CAAA,CAAA;AAAA,IAClC;AAEA,IAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,KAAK,CAAA,EAAG,KAAK,GAAG,IAAA,EAAK;AAAA,EAC3C,CAAA;AAEA,EAAA,uBACEK,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWN,qBAAAA;AAAA,QACT,eAAA;AAAA,QACA,YAAA,CAAa,UAAU,KAAK,CAAA;AAAA,QAC5B,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CAAE,GAAA;AAAA,QACxB;AAAA,OACF;AAAA,MAGA,QAAA,EAAA;AAAA,wBAAAC,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,qBAAAA;AAAA,cACT,sEAAA;AAAA,cACA,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CAAE;AAAA,aAC1B;AAAA,YAEC,QAAA,EAAA,YAAA,CAAa,MAAA,EAAQ,QAAA,EAAU,UAAU;AAAA;AAAA,SAC5C;AAAA,QAGC,mCACCC,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,qBAAAA;AAAA,cACT,gEAAA;AAAA,cACA,YAAA,CAAa,IAAA,CAAK,IAAI,CAAA,CAAE;AAAA,aAC1B;AAAA,YAEC,QAAA,EAAA,iBAAA,GACG,YAAA,CAAa,eAAA,EAAiB,iBAAA,EAAmB,IAAI,CAAA,GACrD;AAAA;AAAA;AACN;AAAA;AAAA,GAEJ;AAEJ;AC3HA,IAAM,WAAA,GAAoBO,iBAAA,CAAA,aAAA;AAAA,EACxB;AACF,CAAA;AAEA,IAAM,UAAU,MAAM;AACpB,EAAA,MAAM,GAAA,GAAYA,6BAAW,WAAW,CAAA;AACxC,EAAA,IAAI,CAAC,GAAA,EAAK;AAAE,IAAA,MAAM,IAAI,MAAM,uDAAuD,CAAA;AAAA,EAAE;AACrF,EAAA,OAAO,GAAA;AACT,CAAA;AAaO,IAAM,IAAA,GAAaA,iBAAA,CAAA,UAAA;AAAA,EACxB,CACE,IASA,GAAA,KACG;AAVH,IAAA,IAAA,EAAA,GAAA,EAAA,EACE;AAAA,MAAA,KAAA,EAAO,eAAA;AAAA,MACP,YAAA,GAAe,EAAA;AAAA,MACf,aAAA;AAAA,MACA,OAAA,GAAU,WAAA;AAAA,MACV,SAAA;AAAA,MACA;AAAA,KA7CN,GAuCI,EAAA,EAOK,KAAA,GAAA,SAAA,CAPL,EAAA,EAOK;AAAA,MANH,OAAA;AAAA,MACA,cAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KAAA,CAAA;AAKF,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAUA,2BAAS,YAAY,CAAA;AAC3D,IAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,IAAA,MAAM,WAAA,GAAc,eAAe,eAAA,GAAkB,QAAA;AAErD,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAc;AAClC,MAAA,IAAI,CAAC,YAAA,EAAc,WAAA,CAAY,CAAC,CAAA;AAChC,MAAA,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAgB,CAAA,CAAA;AAAA,IAClB,CAAA;AAEA,IAAA,uBACEN,cAAAA;AAAA,MAAC,WAAA,CAAY,QAAA;AAAA,MAAZ;AAAA,QACC,KAAA,EAAO;AAAA,UACL,KAAA,EAAO,WAAA;AAAA,UACP,aAAA,EAAe,YAAA;AAAA,UACf;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAA,cAAAA,CAAC,KAAA,EAAA,aAAA,CAAA,cAAA,CAAA,EAAI,GAAA,EAAU,SAAA,EAAWD,qBAAAA,CAAQ,QAAA,EAAU,SAAS,CAAA,EAAA,EAAO,KAAA,CAAA,EAA3D,EACE,QAAA,EAAA,CACH;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAQZ,IAAM,QAAA,GAAiBO,iBAAA,CAAA,UAAA;AAAA,EAC5B,CAAC,IAAmC,GAAA,KAAQ;AAA3C,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,aAAW,QAAA,EAnFhB,GAmFG,IAA0B,KAAA,GAAA,SAAA,CAA1B,EAAA,EAA0B,CAAxB,WAAA,EAAW,UAAA,CAAA,CAAA;AACZ,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,OAAA,EAAQ;AAG5B,IAAA,IAAI,YAAY,QAAA,EAAU;AACxB,MAAA,uBACEN,cAAAA;AAAA,QAAC,KAAA;AAAA,QAAA,aAAA,CAAA,cAAA,CAAA;AAAA,UACC,GAAA;AAAA,UACA,IAAA,EAAK,SAAA;AAAA,UACL,SAAA,EAAWD,qBAAAA;AAAA,YACT,wDAAA;AAAA,YACA;AAAA,WACF;AAAA,UACA,KAAA,EAAO;AAAA,YACL,WAAA,EAAa,yBAAA;AAAA,YACb,YAAA,EAAc,yBAAA;AAAA,YACd,eAAA,EAAiB;AAAA;AACnB,SAAA,EACI,KAAA,CAAA,EAZL;AAAA,UAcE;AAAA,SAAA;AAAA,OACH;AAAA,IAEJ;AAGA,IAAA,uBACEC,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA,aAAA,CAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,SAAA;AAAA,QACL,SAAA,EAAWD,qBAAAA;AAAA,UACT,iHAAA;AAAA,UACA,OAAA,KAAY,YAAY,gBAAA,GAAmB,MAAA;AAAA,UAC3C;AAAA;AACF,OAAA,EACI,KAAA,CAAA,EARL;AAAA,QAUE;AAAA,OAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,QAAA,CAAS,WAAA,GAAc,UAAA;AAYhB,IAAM,WAAA,GAAoBO,iBAAA,CAAA,UAAA;AAAA,EAC/B,CACE,IAOA,GAAA,KACG;AARH,IAAA,IAAA,EAAA,GAAA,EAAA,EACE;AAAA,MAAA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA;AAAA,KA/IN,GA2II,EAAA,EAKK,KAAA,GAAA,SAAA,CALL,EAAA,EAKK;AAAA,MAJH,OAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KAAA,CAAA;AAKF,IAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,aAAA,EAAe,OAAA,KAAY,OAAA,EAAQ;AAC/D,IAAA,MAAM,WAAW,WAAA,KAAgB,KAAA;AAGjC,IAAA,MAAM,WAAA,GAAc,YAAY,QAAA,GAC5B,cAAA,CAAA;AAAA,MACE,KAAA,EAAO,WACH,4BAAA,GACA;AAAA,KAAA,EACD,KAAA,CAAA,GAEL,KAAA;AAEJ,IAAA,uBACED,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA,aAAA,CAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,KAAA;AAAA,QACL,eAAA,EAAe,QAAA;AAAA,QACf,OAAA,EAAS,MAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QAClC,SAAA,EAAWN,qBAAAA;AAAA,UACT,yLAAA;AAAA,UACA,OAAA,KAAY,QAAA,GACR,mCAAA,GACA,OAAA,KAAY,YACV,yDAAA,GACA,+CAAA;AAAA,UACN,OAAA,KAAY,QAAA,KAAa,QAAA,GAAW,oBAAA,GAAuB,6GAAA,CAAA;AAAA,UAC3D;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,OAAA,EACH,KAAA,CAAA,EAhBL;AAAA,QAkBC,QAAA,EAAA;AAAA,0BAAAC,cAAAA,CAAC,UAAM,QAAA,EAAS,CAAA;AAAA,UACf,QAAA,IAAY,OAAA,KAAY,QAAA,oBACvBA,cAAAA;AAAA,YAACO,mBAAA,CAAO,IAAA;AAAA,YAAP;AAAA,cACC,QAAA,EAAS,sBAAA;AAAA,cACT,SAAA,EAAU,yBAAA;AAAA,cACV,KAAA,EAAO;AAAA,gBACL,MAAA,EAAQ,CAAA;AAAA,gBACR,IAAA,EAAM,CAAA;AAAA,gBACN,KAAA,EAAO,CAAA;AAAA,gBACP,UAAA,EAAY,MAAA;AAAA,gBACZ,WAAA,EAAa,MAAA;AAAA,gBACb,KAAA,EAAO,QAAA;AAAA,gBACP,MAAA,EAAQ,KAAA;AAAA,gBACR,eAAA,EAAiB;AAAA,eACnB;AAAA,cACA,YAAY,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,GAAA,EAAK,UAAU,GAAA;AAAI;AAAA,WAC3D;AAAA,UAED,QAAA,IAAY,OAAA,KAAY,QAAA,oBACvBP,cAAAA;AAAA,YAACO,mBAAA,CAAO,IAAA;AAAA,YAAP;AAAA,cACC,QAAA,EAAS,eAAA;AAAA,cACT,SAAA,EAAU,8DAAA;AAAA,cACV,YAAY,EAAE,IAAA,EAAM,UAAU,MAAA,EAAQ,GAAA,EAAK,UAAU,GAAA;AAAI;AAAA;AAC3D;AAAA,OAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAUnB,IAAM,WAAA,GAAoBD,iBAAA,CAAA,UAAA;AAAA,EAC/B,CAAC,IAA0C,GAAA,KAAQ;AAAlD,IAAA,IAAA,EAAA,GAAA,EAAA,EAAE,EAAA,KAAA,EAAO,WAAW,QAAA,EA5NvB,GA4NG,IAAiC,KAAA,GAAA,SAAA,CAAjC,EAAA,EAAiC,CAA/B,OAAA,EAAO,WAAA,EAAW,UAAA,CAAA,CAAA;AACnB,IAAA,MAAM,EAAE,KAAA,EAAO,WAAA,EAAa,OAAA,KAAY,OAAA,EAAQ;AAChD,IAAA,IAAI,WAAA,KAAgB,OAAO,OAAO,IAAA;AAElC,IAAA,uBACEN,cAAAA;AAAA,MAAC,KAAA;AAAA,MAAA,aAAA,CAAA,cAAA,CAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,UAAA;AAAA,QACL,SAAA,EAAWD,qBAAAA;AAAA,UACT,4BAAA;AAAA,UACA,OAAA,KAAY,SAAA,IAAa,OAAA,KAAY,QAAA,GAAW,MAAA,GAAS,MAAA;AAAA,UACzD;AAAA;AACF,OAAA,EACI,KAAA,CAAA,EARL;AAAA,QAUE;AAAA,OAAA;AAAA,KACH;AAAA,EAEJ;AACF;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AC1L1B,IAAM,eAAA,GAAoD,CAAC,EAAE,SAAA,uBAC3DC,cAAAA;AAAA,EAAC,KAAA;AAAA,EAAA;AAAA,IACC,SAAA;AAAA,IACA,OAAA,EAAQ,WAAA;AAAA,IACR,IAAA,EAAK,cAAA;AAAA,IACL,aAAA,EAAY,MAAA;AAAA,IAEZ,QAAA,kBAAAA,cAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,QAAA,EAAS,SAAA;AAAA,QACT,CAAA,EAAE,qIAAA;AAAA,QACF,QAAA,EAAS;AAAA;AAAA;AACX;AACF,CAAA;AAOK,IAAM,SAAgC,CAAC;AAAA,EAC5C,KAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA;AACF,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUQ,2BAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAUA,2BAAS,EAAE,CAAA;AACjE,EAAA,MAAM,YAAA,GAAqBA,yBAAuB,IAAI,CAAA;AAEtD,EAAA,MAAM,YAAA,GAAqBA,8BAAY,MAAM;AAC3C,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,SAAA,CAAU,CAAC,IAAA,KAAS,CAAC,IAAI,CAAA;AACzB,MAAA,IAAI,CAAC,MAAA,EAAQ,mBAAA,CAAoB,CAAC,CAAA;AAAA,IACpC;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,MAAM,CAAC,CAAA;AAErB,EAAA,MAAM,YAAA,GAAqBA,iBAAA,CAAA,WAAA;AAAA,IACzB,CAAC,QAAA,KAAqB;AACpB,MAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,MAAA,SAAA,CAAU,KAAK,CAAA;AACf,MAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,IACxB,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAGA,EAAMA,4BAAU,MAAM;AACpB,IAAA,MAAM,kBAAA,GAAqB,CAAC,KAAA,KAAsB;AAChD,MAAA,IACE,YAAA,CAAa,WACb,CAAC,YAAA,CAAa,QAAQ,QAAA,CAAS,KAAA,CAAM,MAAc,CAAA,EACnD;AACA,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,MAAA,EAAQ;AACV,MAAA,QAAA,CAAS,gBAAA,CAAiB,aAAa,kBAAkB,CAAA;AACzD,MAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,WAAA,EAAa,kBAAkB,CAAA;AAAA,IAC3E;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAMA,4BAAU,MAAM;AACpB,IAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KAAyB;AAC7C,MAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,QAAA,IAAY,MAAA,EAAQ;AACpC,QAAA,SAAA,CAAU,KAAK,CAAA;AACf,QAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,MACxB;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,YAAY,CAAA;AACjD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,YAAY,CAAA;AAAA,EACnE,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAGX,EAAA,MAAM,gBAAA,GAAyBA,iBAAA,CAAA,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC/D,IAAA,IAAI,CAAOA,iBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG,OAAO,KAAA;AAEzC,IAAA,IAAI,KAAA,CAAM,SAAS,aAAA,EAAe;AAChC,MAAA,OAAaA,+BAAa,KAAA,EAAiD;AAAA,QACzE,OAAA,EAAS,MAAA;AAAA,QACT,SAAA,EAAW,QAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACZ,CAAA;AAAA,IACH;AAEA,IAAA,IAAI,KAAA,CAAM,SAAS,aAAA,EAAe;AAChC,MAAA,OAAaA,+BAAa,KAAA,EAAiD;AAAA,QACzE,OAAA,EAAS,MAAA;AAAA,QACT,MAAA,EAAQ,KAAA;AAAA,QACR,SAAA,EAAW,YAAA;AAAA,QACX,iBAAA,EAAmB,gBAAA;AAAA,QACnB,oBAAA,EAAsB;AAAA,OACvB,CAAA;AAAA,IACH;AAEA,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,uBACER,cAAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,YAAA,EAAc,WAAWD,qBAAAA,CAAQ,UAAA,EAAY,SAAS,CAAA,EAC7D,QAAA,EAAA,gBAAA,EACH,CAAA;AAEJ;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA;AAMd,IAAM,aAAA,GAAsBS,iBAAA,CAAA,UAAA;AAAA,EACjC,CACE;AAAA,IACE,WAAA,GAAc,WAAA;AAAA,IACd,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,WAAA,GAAoBA,iBAAA,CAAA,QAAA,CAAS,KAAA,CAAM,QAAQ,CAAA,GAAI,CAAA;AAErD,IAAA,uBACEH,eAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,OAAA,EAAS,SAAA;AAAA,QACT,QAAA,EAAU,SAAA;AAAA,QACV,eAAA,EAAc,SAAA;AAAA,QACd,eAAA,EAAe,OAAA;AAAA,QACf,SAAA,EAAWN,qBAAAA;AAAA,UACT,gDAAA;AAAA,UACA,0GAAA;AAAA,UACA,yDAAA;AAAA,UACA,kCAAA;AAAA,UACA,gDAAA;AAAA,UACA,sIAAA;AAAA,UACA,SAAA,IAAa,+BAAA;AAAA,UACb;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAC,cAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EACE,CAAC,WAAA,GACG,wCAAA,GACA,MAAA;AAAA,cAGL,wBAAc,QAAA,GAAW;AAAA;AAAA,WAC5B;AAAA,0BACAA,cAAAA;AAAA,YAAC,eAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWD,qBAAAA;AAAA,gBACT,sEAAA;AAAA,gBACA,OAAA,IAAW;AAAA;AACb;AAAA;AACF;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAMrB,IAAM,aAAA,GAAsBS,iBAAA,CAAA,UAAA;AAAA,EACjC,CACE;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,iBAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAgBA,yBAAyB,IAAI,CAAA;AAGnD,IAAA,MAAM,SAAA,GAAkBA,iBAAA,CAAA,WAAA;AAAA,MACtB,CAAC,IAAA,KAAkC;AACjC,QAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,UAAA,GAAA,CAAI,IAAI,CAAA;AAAA,QACV,WAAW,GAAA,EAAK;AACd,UAAA,GAAA,CAAI,OAAA,GAAU,IAAA;AAAA,QAChB;AACC,QAAC,QAA4D,OAAA,GAAU,IAAA;AAAA,MAC1E,CAAA;AAAA,MACA,CAAC,GAAG;AAAA,KACN;AAGA,IAAMA,4BAAU,MAAM;AACpB,MAAA,IAAI,WAAW,iBAAA,KAAsB,MAAA,IAAa,iBAAA,IAAqB,CAAA,IAAK,QAAQ,OAAA,EAAS;AAC3F,QAAA,MAAM,kBAAA,GAAqB,OAAA,CAAQ,OAAA,CAAQ,QAAA,CAAS,iBAAiB,CAAA;AACrE,QAAA,IAAI,kBAAA,EAAoB;AACtB,UAAA,kBAAA,CAAmB,cAAA,CAAe,EAAE,KAAA,EAAO,SAAA,EAAW,CAAA;AAAA,QACxD;AAAA,MACF;AAAA,IACF,CAAA,EAAG,CAAC,OAAA,EAAS,iBAAiB,CAAC,CAAA;AAG/B,IAAA,IAAI,SAAA,GAAY,CAAA;AAChB,IAAA,MAAM,gBAAA,GAAyBA,iBAAA,CAAA,QAAA,CAAS,GAAA,CAAI,QAAA,EAAU,CAAC,KAAA,KAAU;AAC/D,MAAA,IAAI,CAAOA,iBAAA,CAAA,cAAA,CAAe,KAAK,CAAA,EAAG,OAAO,KAAA;AAEzC,MAAA,IAAI,KAAA,CAAM,SAAS,UAAA,EAAY;AAC7B,QAAA,MAAM,YAAA,GAAe,SAAA,EAAA;AACrB,QAAA,MAAM,YAAY,KAAA,CAAM,KAAA;AACxB,QAAA,OAAaA,+BAAa,KAAA,EAA8C;AAAA,UACtE,MAAA,EAAQ,YAAA;AAAA,UACR,WAAA,EAAa,WAAW,SAAA,CAAU,KAAA;AAAA,UAClC,gBAAgB,iBAAA,KAAsB,YAAA;AAAA,UACtC,SAAA;AAAA,UACA,YAAA,EAAc;AAAA,SACf,CAAA;AAAA,MACH;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,MAAA,EAAQ,EAAE,OAAA,EAAS,CAAA,EAAG,GAAG,EAAA,EAAG;AAAA,MAC5B,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,CAAA;AAAA,QACT,CAAA,EAAG,CAAA;AAAA,QACH,YAAY,EAAE,IAAA,EAAM,UAAmB,OAAA,EAAS,EAAA,EAAI,WAAW,GAAA;AAAI,OACrE;AAAA,MACA,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA,EAAG,IAAI,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAE,KAC3D;AAEA,IAAA,uBACER,cAAAA,CAACS,4BAAA,EAAA,EAAgB,IAAA,EAAK,MAAA,EACnB,qCACCT,cAAAA;AAAA,MAACO,mBAAAA,CAAO,EAAA;AAAA,MAAP;AAAA,QACC,GAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAK,SAAA;AAAA,QACL,QAAA,EAAU,eAAA;AAAA,QACV,OAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAK,MAAA;AAAA,QACL,SAAA,EAAWR,qBAAAA;AAAA,UACT,2BAAA;AAAA,UACA,wGAAA;AAAA,UACA,wBAAA;AAAA,UACA,MAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA;AAAA,KACH,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,aAAA,CAAc,WAAA,GAAc,eAAA;AAMrB,IAAM,UAAA,GAAmBS,iBAAA,CAAA,UAAA;AAAA,EAC9B,CACE;AAAA,IACE,KAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,CAAC,YAAY,SAAA,EAAW;AAC1B,QAAA,SAAA,CAAU,KAAK,CAAA;AAAA,MACjB;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,IAAI,CAAC,QAAA,IAAY,YAAA,IAAgB,MAAA,KAAW,MAAA,EAAW;AACrD,QAAA,YAAA,CAAa,MAAM,CAAA;AAAA,MACrB;AAAA,IACF,CAAA;AAEA,IAAA,uBACER,cAAAA;AAAA,MAAC,IAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAA,EAAK,QAAA;AAAA,QACL,eAAA,EAAe,WAAA;AAAA,QACf,eAAA,EAAe,QAAA;AAAA,QACf,OAAA,EAAS,WAAA;AAAA,QACT,YAAA,EAAc,gBAAA;AAAA,QACd,SAAA,EAAWD,qBAAAA;AAAA,UACT,oDAAA;AAAA,UACA,uCAAA;AAAA,UACA,WAAA,IAAe,4CAAA;AAAA,UACf,cAAA,IAAkB,oCAAA;AAAA,UAClB,QAAA,IAAY,+BAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;AC1WlB,IAAM,QAAA,GAAoC,CAAC,EAAA,KAQ5C;AAR4C,EAAA,IAAA,EAAA,GAAA,EAAA,EAChD;AAAA,IAAA,KAAA,GAAQ,MAAA;AAAA,IACR,MAAA,GAAS,MAAA;AAAA,IACT,OAAA,GAAU,MAAA;AAAA,IACV,OAAA,GAAU,IAAA;AAAA,IACV,SAAA;AAAA,IACA;AAAA,GAtBF,GAgBkD,EAAA,EAO7C,KAAA,GAAA,SAAA,CAP6C,EAAA,EAO7C;AAAA,IANH,OAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,eAAA,GACJ,+DAAA;AAEF,EAAA,uBACEC,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,SAAA,EAAWD,qBAAAA;AAAA,QACT,0CAAA;AAAA,QACA,OAAA,KAAY,WAAW,cAAA,GAAiB,SAAA;AAAA,QACxC;AAAA,OACF;AAAA,MACA,KAAA,EAAO,cAAA,CAAA;AAAA,QACL,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,CAAA,EAAG,KAAK,CAAA,EAAA,CAAA,GAAO,KAAA;AAAA,QAClD,QAAQ,OAAO,MAAA,KAAW,QAAA,GAAW,CAAA,EAAG,MAAM,CAAA,EAAA,CAAA,GAAO,MAAA;AAAA,QACrD,UAAA,EAAY;AAAA,OAAA,EACT,KAAA;AAAA,KAAA,EAED,KAAA,CAAA,EAZL;AAAA,MAcE,QAAA,EAAA,OAAA,oBACCC,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,qHAAA,EAAsH;AAAA,KAAA;AAAA,GAEzI;AAEJ;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA;ACVvB,IAAM,aAAA,GAAgB;AAAA,EACpB,IAAA,EAAM,EAAE,KAAA,EAAO,SAAA,EAAW,MAAMU,gBAAA,EAAc;AAAA,EAC9C,OAAA,EAAS,EAAE,KAAA,EAAO,SAAA,EAAW,MAAMC,iBAAA,EAAe;AAAA,EAClD,KAAA,EAAO,EAAE,KAAA,EAAO,SAAA,EAAW,MAAMC,iBAAA,EAAe;AAAA,EAChD,OAAA,EAAS,EAAE,KAAA,EAAO,SAAA,EAAW,MAAMC,uBAAA;AACrC,CAAA;AAEA,IAAM,cAAA,GAAiB;AAAA,EACrB,WAAA,EAAa,eAAA;AAAA,EACb,UAAA,EAAY,cAAA;AAAA,EACZ,YAAA,EAAc,iCAAA;AAAA,EACd,cAAA,EAAgB,kBAAA;AAAA,EAChB,aAAA,EAAe,iBAAA;AAAA,EACf,eAAA,EAAiB;AACnB,CAAA;AAEO,IAAM,kBAAA,GAAwD,CAAC,EAAA,KAWhE;AAXgE,EAAA,IAAA,EAAA,GAAA,EAAA,EACpE;AAAA,IAAA,IAAA,GAAO,QAAA;AAAA,IACP,OAAA,GAAU,MAAA;AAAA,IACV,KAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA,GAAW,WAAA;AAAA,IACX,gBAAA,GAAmB,GAAA;AAAA,IACnB,IAAA,GAAO,IAAA;AAAA,IACP,OAAA;AAAA,IACA;AAAA,GAjEF,GAwDsE,EAAA,EAUjE,KAAA,GAAA,SAAA,CAViE,EAAA,EAUjE;AAAA,IATH,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GAAA,CAAA;AAGA,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAUC,2BAAS,KAAK,CAAA;AACtD,EAAA,MAAM,QAAA,GAAiBA,yBAA8B,IAAI,CAAA;AAEzD,EAAA,MAAM,MAAA,GAAS,cAAc,OAAO,CAAA;AACpC,EAAA,MAAM,gBAAgB,MAAA,CAAO,IAAA;AAE7B,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,YAAA,CAAa,IAAI,CAAA;AACjB,IAAA,UAAA,CAAW,MAAM;AACf,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,QAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,MACrB;AACA,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,IACF,GAAG,GAAG,CAAA;AAAA,EACR,CAAA;AAGA,EAAA,IAAI,IAAA,KAAS,WAAW,IAAA,IAAQ,gBAAA,GAAmB,KAAK,CAAC,QAAA,CAAS,OAAA,IAAW,CAAC,SAAA,EAAW;AACvF,IAAA,QAAA,CAAS,OAAA,GAAU,WAAW,MAAM;AAClC,MAAA,WAAA,EAAY;AAAA,IACd,GAAG,gBAAgB,CAAA;AAAA,EACrB;AAGA,EAAMA,4BAAU,MAAM;AACpB,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,SAAS,OAAA,EAAS;AACpB,QAAA,YAAA,CAAa,SAAS,OAAO,CAAA;AAC7B,QAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AAAA,MACrB;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAGlB,EAAA,MAAM,kBAAkB,IAAA,KAAS,QAAA,GAAW,GAAG,MAAA,CAAO,KAAK,OAAO,MAAA,CAAO,KAAA;AAEzE,EAAA,uBACET,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA,aAAA,CAAA,cAAA,CAAA;AAAA,MACC,SAAA,EAAWN,qBAAAA;AAAA,QACT,uEAAA;AAAA,QACA,SAAA,IAAa,0BAAA;AAAA,QACb,SAAA;AAAA,QACA,SAAS,OAAA,IAAW,kDAAA;AAAA,QACpB,IAAA,KAAS,OAAA,IAAW,cAAA,CAAe,QAAQ;AAAA,OAC7C;AAAA,MACA,KAAA,EAAO;AAAA,QACL,eAAA;AAAA,QACA,aAAa,MAAA,CAAO;AAAA,OACtB;AAAA,MACA,IAAA,EAAK;AAAA,KAAA,EACD,KAAA,CAAA,EAbL;AAAA,MAeC,QAAA,EAAA;AAAA,wBAAAC,eAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BACb,QAAA,kBAAAA,cAAAA,CAAC,iBAAc,CAAA,EACjB,CAAA;AAAA,wBAEAK,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EACZ,QAAA,EAAA;AAAA,UAAA,KAAA,oBACCL,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,8BACZ,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,0BAEFA,cAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WACZ,QAAA,EAAA,OAAA,EACH;AAAA,SAAA,EACF,CAAA;AAAA,wBAEAA,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,WAAA;AAAA,YACT,SAAA,EAAU,0EAAA;AAAA,YACV,YAAA,EAAW,oBAAA;AAAA,YAEX,QAAA,kBAAAA,eAACe,UAAA,EAAA,EAAQ;AAAA;AAAA;AACX;AAAA,KAAA;AAAA,GACF;AAEJ;AAEA,kBAAA,CAAmB,WAAA,GAAc,oBAAA;AClI1B,IAAM,iBAAgD,CAAC;AAAA,EAC5D,OAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,aAAA,GAAgB,EAAA;AAAA,EAChB,cAAA,GAAiB;AACnB,CAAA,KAAM;AACJ,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAUC,2BAAS,KAAK,CAAA;AAEhD,EAAA,MAAM,aAAa,YAAY;AAC7B,IAAA,IAAI;AACF,MAAA,MAAM,SAAA,CAAU,SAAA,CAAU,SAAA,CAAU,OAAO,CAAA;AAC3C,MAAA,SAAA,CAAU,IAAI,CAAA;AACd,MAAA,MAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAS,OAAA,CAAA;AAGT,MAAA,UAAA,CAAW,MAAM,SAAA,CAAU,KAAK,CAAA,EAAG,GAAI,CAAA;AAAA,IACzC,SAAS,GAAA,EAAK;AACZ,MAAA,OAAA,CAAQ,KAAA,CAAM,2BAA2B,GAAG,CAAA;AAAA,IAC9C;AAAA,EACF,CAAA;AAEA,EAAA,uBACEX,eAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWN,qBAAAA;AAAA,QACT,yFAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAAC,cAAAA;AAAA,UAAC,gBAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,qBAAAA;AAAA,cACT,gDAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEC,QAAA,EAAA;AAAA;AAAA,SACH;AAAA,QACC,kCACCC,cAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,OAAA,EAAS,UAAA;AAAA,YACT,SAAA,EAAU,+EAAA;AAAA,YACV,YAAA,EAAW,cAAA;AAAA,YAEV,mCAEGA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,wBAAA;AAAA,gBACV,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,OAAA,EAAQ,WAAA;AAAA,gBAER,QAAA,kBAAAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe,OAAA;AAAA,oBACf,WAAA,EAAa,CAAA;AAAA,oBACb,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA,gCAIFA,cAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAU,SAAA;AAAA,gBACV,IAAA,EAAK,MAAA;AAAA,gBACL,MAAA,EAAO,cAAA;AAAA,gBACP,OAAA,EAAQ,WAAA;AAAA,gBAER,QAAA,kBAAAA,cAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,aAAA,EAAc,OAAA;AAAA,oBACd,cAAA,EAAe,OAAA;AAAA,oBACf,WAAA,EAAa,CAAA;AAAA,oBACb,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AACF;AAAA;AAEN;AAAA;AAAA,GAEJ;AAEJ;AAEA,cAAA,CAAe,WAAA,GAAc,gBAAA;ACnEtB,IAAM,iBAAgD,CAAC;AAAA,EAC5D,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,SAAA,GAAY,EAAA;AAAA,EACZ,gBAAA,GAAmB,EAAA;AAAA,EACnB,gBAAA,GAAmB,EAAA;AAAA,EACnB,YAAA,GAAe;AACjB,CAAA,KAAM;AACJ,EAAA,uBACEK,eAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWN,qBAAAA,CAAQ,gCAAA,EAAkC,SAAS,CAAA;AAAA,MAC9D,IAAA,EAAM,WAAA;AAAA,MAGN,QAAA,EAAA;AAAA,wBAAAC,cAAAA,CAAC,SAAA,EAAA,EAAQ,SAAA,EAAWD,qBAAAA,CAAQ,uBAAA,EAAyB,gBAAgB,CAAA,EACnE,QAAA,kBAAAM,eAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACb,QAAA,EAAA;AAAA,0BAAAL,cAAAA,CAAC,gBAAA,EAAA,EAAS,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BACpDA,cAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAU,+EAAA;AAAA,cACV,IAAA,EAAK,MAAA;AAAA,cACL,MAAA,EAAO,cAAA;AAAA,cACP,OAAA,EAAQ,WAAA;AAAA,cACR,aAAA,EAAY,MAAA;AAAA,cAEZ,QAAA,kBAAAA,cAAAA;AAAA,gBAAC,MAAA;AAAA,gBAAA;AAAA,kBACC,aAAA,EAAc,OAAA;AAAA,kBACd,cAAA,EAAe,OAAA;AAAA,kBACf,WAAA,EAAa,CAAA;AAAA,kBACb,CAAA,EAAE;AAAA;AAAA;AACJ;AAAA;AACF,SAAA,EACF,CAAA,EACF,CAAA;AAAA,wBAGAA,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAWD,qBAAAA;AAAA,cACT,MAAA;AAAA,cACA,YAAA,IAAgB,2BAAA;AAAA,cAChB;AAAA,aACF;AAAA,YAEC,QAAA,EAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,0BAChBM,eAAAA,CAAC,KAAA,EAAA,EAAgB,SAAA,EAAU,2BAAA,EACzB,QAAA,EAAA;AAAA,8BAAAL,cAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,YAAA;AAAA,kBACR,SAAA,EAAWD,qBAAAA,CAAQ,iDAAA,EAAmD,IAAA,CAAK,cAAc,CAAA;AAAA,kBAExF,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,eACR;AAAA,cACC,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,mBAEnBC,cAAAA;AAAA,gBAAC,gBAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAQ,YAAA;AAAA,kBACR,SAAA,EAAWD,qBAAAA,CAAQ,2DAAA,EAA6D,IAAA,CAAK,cAAc,CAAA;AAAA,kBAElG,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,eACR,mBAGAC,cAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,IAAA,CAAK,cAAA,EAAiB,eAAK,KAAA,EAAM;AAAA,aAAA,EAAA,EAjB7C,KAmBV,CACD;AAAA;AAAA;AACH;AAAA;AAAA,GACF;AAEJ;AC1BO,IAAM,cAA0C,CAAC;AAAA,EACtD,EAAA;AAAA,EACA,oBAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA,GAAY,EAAA;AAAA,EACZ,gBAAA,GAAmB,EAAA;AAAA,EACnB,QAAA,GAAW,QAAA;AAAA,EACX,MAAA,GAAS,MAAA;AAAA,EACT,oBAAA,GAAuB,IAAA;AAAA,EACvB,KAAA;AAAA,EACA,WAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,KAAM;AACJ,EAAA,MAAM,iBAAA,GAAoB,UAAU,oBAAA,KAAyB,EAAA;AAE7D,EAAMiB,4BAAU,MAAM;AACpB,IAAA,IAAI,iBAAA,EAAmB;AAErB,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,QAAA;AAAA,IACjC,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,EAAA;AAAA,IACjC;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAA,GAAW,EAAA;AAAA,IACjC,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAGtB,EAAMA,4BAAU,MAAM;AACpB,IAAA,IAAI,CAAC,iBAAA,EAAmB;AAExB,IAAA,MAAM,YAAA,GAAe,CAAC,CAAA,KAAqB;AACzC,MAAA,IAAI,CAAA,CAAE,QAAQ,QAAA,EAAU;AACtB,QAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,QAAA,CAAS,gBAAA,CAAiB,WAAW,YAAY,CAAA;AACjD,IAAA,OAAO,MAAM,QAAA,CAAS,mBAAA,CAAoB,SAAA,EAAW,YAAY,CAAA;AAAA,EACnE,CAAA,EAAG,CAAC,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAG/B,EAAA,MAAM,mBAAA,GAAsB,CAAC,CAAA,KAAwB;AACnD,IAAA,IAAI,oBAAA,IAAwB,CAAA,CAAE,MAAA,KAAW,CAAA,CAAE,aAAA,EAAe;AACxD,MAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AAAA,IACF;AAAA,EACF,CAAA;AAGA,EAAA,MAAM,gBAAA,GAAmB;AAAA,IACvB,MAAA,EAAQ,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,IACrB,OAAA,EAAS,EAAE,OAAA,EAAS,CAAA,EAAE;AAAA,IACtB,IAAA,EAAM,EAAE,OAAA,EAAS,CAAA;AAAE,GACrB;AAEA,EAAA,MAAM,aAAA,GAAgB;AAAA,IACpB,MAAA,EAAQ,QAAA,KAAa,QAAA,GAAW,EAAE,CAAA,EAAG,MAAA,EAAO,GAAI,EAAE,OAAA,EAAS,CAAA,EAAG,KAAA,EAAO,IAAA,EAAK;AAAA,IAC1E,OAAA,EACE,aAAa,QAAA,GACT;AAAA,MACE,CAAA,EAAG,IAAA;AAAA,MACH,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW;AAAA;AACb,KACF,GACA;AAAA,MACE,OAAA,EAAS,CAAA;AAAA,MACT,KAAA,EAAO,CAAA;AAAA,MACP,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW;AAAA;AACb,KACF;AAAA,IACN,IAAA,EACE,aAAa,QAAA,GACT;AAAA,MACE,CAAA,EAAG,MAAA;AAAA,MACH,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW;AAAA;AACb,KACF,GACA;AAAA,MACE,OAAA,EAAS,CAAA;AAAA,MACT,KAAA,EAAO,IAAA;AAAA,MACP,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,EAAA;AAAA,QACT,SAAA,EAAW;AAAA;AACb;AACF,GACR;AAGA,EAAA,MAAM,iBAAiB,MAAM;AAC3B,IAAA,QAAQ,MAAA;AAAQ,MACd,KAAK,MAAA;AACH,QAAA,OAAO,QAAA;AAAA,MACT,KAAK,MAAA;AACH,QAAA,OAAO,UAAA;AAAA,MACT,KAAK,MAAA;AAAA,MACL;AACE,QAAA,OAAO,QAAA;AAAA;AACX,EACF,CAAA;AAEA,EAAA,uBACEjB,cAAAA,CAACS,4BAAAA,EAAA,EAAgB,IAAA,EAAK,MAAA,EACnB,+CACCJ,eAAAA;AAAA,IAACE,mBAAAA,CAAO,GAAA;AAAA,IAAP;AAAA,MACC,SAAA,EAAWR,qBAAAA;AAAA,QACT,wCAAA;AAAA,QACA,QAAA,KAAa,WAAW,WAAA,GAAc,cAAA;AAAA,QACtC;AAAA,OACF;AAAA,MACA,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAW,MAAA;AAAA,MACX,OAAA,EAAS,mBAAA;AAAA,MACT,QAAA,EAAU,gBAAA;AAAA,MACV,OAAA,EAAQ,QAAA;AAAA,MACR,OAAA,EAAQ,SAAA;AAAA,MACR,IAAA,EAAK,MAAA;AAAA,MACL,UAAA,EAAY,EAAE,QAAA,EAAU,GAAA,EAAI;AAAA,MAG5B,QAAA,EAAA;AAAA,wBAAAC,cAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAU,+CAAA;AAAA,YACV,aAAA,EAAY;AAAA;AAAA,SACd;AAAA,wBAGAA,cAAAA;AAAA,UAACO,mBAAAA,CAAO,GAAA;AAAA,UAAP;AAAA,YACC,SAAA,EAAWR,qBAAAA;AAAA,cACT,yEAAA;AAAA,cACA,QAAA,KAAa,WACT,6BAAA,GACA,2BAAA;AAAA,cACJ,cAAA,EAAe;AAAA,cACf;AAAA,aACF;AAAA,YACA,QAAA,EAAU,aAAA;AAAA,YACV,OAAA,EAAQ,QAAA;AAAA,YACR,OAAA,EAAQ,SAAA;AAAA,YACR,IAAA,EAAK,MAAA;AAAA,YAEJ;AAAA;AAAA;AACH;AAAA;AAAA,GACF,EAEJ,CAAA;AAEJ;;;ACjKO,IAAM,kBAAA,GAAmD;AAAA;AAAA,EAE9D,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA;AAAA,EAGhB,SAAA,EAAW,SAAA;AAAA,EACX,QAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA;AAAA,EAGb,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc;AAChB;AAKO,IAAM,eAAA,GAAgD;AAAA;AAAA,EAE3D,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA;AAAA,EAGhB,SAAA,EAAW,SAAA;AAAA,EACX,QAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA;AAAA,EAGb,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc;AAChB;AAKO,IAAM,wBAAA,GAAyD;AAAA;AAAA,EAEpE,YAAA,EAAc,SAAA;AAAA,EACd,cAAA,EAAgB,SAAA;AAAA;AAAA,EAGhB,SAAA,EAAW,SAAA;AAAA,EACX,QAAA,EAAU,SAAA;AAAA,EACV,OAAA,EAAS,SAAA;AAAA;AAAA,EAGT,WAAA,EAAa,SAAA;AAAA,EACb,aAAA,EAAe,SAAA;AAAA,EACf,YAAA,EAAc,SAAA;AAAA,EACd,WAAA,EAAa,SAAA;AAAA;AAAA,EAGb,YAAA,EAAc,SAAA;AAAA,EACd,UAAA,EAAY,SAAA;AAAA,EACZ,YAAA,EAAc;AAChB;AAKO,SAAS,WAAY,KAAA,EAA2C;AACrE,EAAA,IAAI,EAAC,KAAA,IAAA,IAAA,GAAA,MAAA,GAAA,KAAA,CAAO,MAAA,CAAA,EAAQ,OAAO,EAAC;AAE5B,EAAA,MAAM,OAA+B,EAAC;AACtC,EAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AAErB,EAAA,IAAI,MAAA,CAAO,YAAA,EAAc,IAAA,CAAK,yBAAyB,IAAI,MAAA,CAAO,YAAA;AAClE,EAAA,IAAI,MAAA,CAAO,cAAA,EAAgB,IAAA,CAAK,2BAA2B,IAAI,MAAA,CAAO,cAAA;AACtE,EAAA,IAAI,MAAA,CAAO,SAAA,EAAW,IAAA,CAAK,sBAAsB,IAAI,MAAA,CAAO,SAAA;AAC5D,EAAA,IAAI,MAAA,CAAO,QAAA,EAAU,IAAA,CAAK,qBAAqB,IAAI,MAAA,CAAO,QAAA;AAC1D,EAAA,IAAI,MAAA,CAAO,OAAA,EAAS,IAAA,CAAK,oBAAoB,IAAI,MAAA,CAAO,OAAA;AACxD,EAAA,IAAI,MAAA,CAAO,WAAA,EAAa,IAAA,CAAK,wBAAwB,IAAI,MAAA,CAAO,WAAA;AAChE,EAAA,IAAI,MAAA,CAAO,aAAA,EAAe,IAAA,CAAK,0BAA0B,IAAI,MAAA,CAAO,aAAA;AACpE,EAAA,IAAI,MAAA,CAAO,YAAA,EAAc,IAAA,CAAK,yBAAyB,IAAI,MAAA,CAAO,YAAA;AAClE,EAAA,IAAI,MAAA,CAAO,WAAA,EAAa,IAAA,CAAK,wBAAwB,IAAI,MAAA,CAAO,WAAA;AAChE,EAAA,IAAI,MAAA,CAAO,YAAA,EAAc,IAAA,CAAK,yBAAyB,IAAI,MAAA,CAAO,YAAA;AAClE,EAAA,IAAI,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,uBAAuB,IAAI,MAAA,CAAO,UAAA;AAC9D,EAAA,IAAI,MAAA,CAAO,YAAA,EAAc,IAAA,CAAK,yBAAyB,IAAI,MAAA,CAAO,YAAA;AAElE,EAAA,OAAO,IAAA;AACT;AC3JA,SAAS,kBAAA,GAAwC;AAC/C,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,CAAC,MAAA,CAAO,YAAY,OAAO,OAAA;AAChE,EAAA,OAAO,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA,CAAE,UAAU,MAAA,GAAS,OAAA;AAC9E;AAKA,SAAS,kBAAA,CACP,QACA,UAAA,EACmF;AAvBrF,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAwBE,EAAA,MAAM,QAAyB,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,IAAA,MAAS,SAC5C,UAAA,GAAA,CACC,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,SAAR,IAAA,GAAA,EAAA,GAAgB,OAAA;AAErB,EAAA,MAAM,MAAA,GAAA,CAAsB,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,MAAA,KAAR,IAAA,GAAA,EAAA,GAAkB,SAAA;AAE9C,EAAA,MAAM,gBACJ,MAAA,KAAW,eAAA,GAAkB,eAAA,GAAkB,IAAA,KAAS,SAAS,MAAA,GAAS,OAAA;AAG5E,EAAA,MAAM,cAAA,GAAiB,IAAA,KAAS,MAAA,GAAA,CAC5B,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,SAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,IAAA,KAAnB,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,MAAA,GAAA,CACzB,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,SAAA,KAAR,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,UAAnB,IAAA,GAAA,MAAA,GAAA,EAAA,CAA0B,MAAA;AAE9B,EAAA,MAAM,WAAA,GAAc,cAAA,GAAiB,EAAE,MAAA,EAAQ,gBAAe,GAAI,MAAA;AAElE,EAAA,OAAO,EAAE,eAAe,WAAA,EAAY;AACtC;AAee,SAAR,yBAAA,CAA4C;AAAA,EACjD,KAAA,GAAQ,OAAA;AAAA,EACR,WAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAAmC;AAEjC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,IAAImB,eAAAA,CAA2B,MAAM,oBAAoB,CAAA;AAGzF,EAAAC,iBAAU,MAAM;AAnElB,IAAA,IAAA,EAAA;AAoEI,IAAA,MAAM,WAAA,GAAA,CAAc,2CAAa,IAAA,MAAS,MAAA;AAC1C,IAAA,IAAI,CAAC,WAAA,IAAe,OAAO,WAAW,WAAA,IAAe,CAAC,OAAO,UAAA,EAAY;AAEzE,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,UAAA,CAAW,8BAA8B,CAAA;AAC3D,IAAA,MAAM,UAAU,MAAM,aAAA,CAAc,EAAA,CAAG,OAAA,GAAU,SAAS,OAAO,CAAA;AACjE,IAAA,OAAA,EAAQ;AACR,IAAA,CAAA,EAAA,GAAA,EAAA,CAAG,gBAAA,KAAH,4BAAsB,QAAA,EAAU,OAAA,CAAA;AAChC,IAAA,OAAO,MAAG;AA3Ed,MAAA,IAAAC,GAAAA;AA2EiB,MAAA,OAAA,CAAAA,MAAA,EAAA,CAAG,mBAAA,KAAH,IAAA,GAAA,MAAA,GAAAA,GAAAA,CAAA,SAAyB,QAAA,EAAU,OAAA,CAAA;AAAA,IAAA,CAAA;AAAA,EAClD,CAAA,EAAG,CAAC,WAAA,IAAA,IAAA,GAAA,MAAA,GAAA,WAAA,CAAa,IAAI,CAAC,CAAA;AAGtB,EAAA,MAAM,aAAA,GAAgBC,eAAQ,MAAM;AAElC,IAAA,IAAI,WAAA,EAAa;AACf,MAAA,OAAO,kBAAA,CAAmB,aAAa,UAAU,CAAA;AAAA,IACnD;AAGA,IAAA,OAAO;AAAA,MACL,aAAA,EAAe,KAAA;AAAA,MACf;AAAA,KACF;AAAA,EACF,GAAG,CAAC,WAAA,EAAa,KAAA,EAAO,WAAA,EAAa,UAAU,CAAC,CAAA;AAEhD,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,aAAA,KAAkB,OAAA,GAAU,KAAK,aAAA,CAAc,aAAA;AAChF,EAAA,MAAM,WAAA,GAAc,aAAA,CAAc,aAAA,KAAkB,OAAA,GAAU,OAAA,GAAU,MAAA;AAGxE,EAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,aAAA,CAAc,WAAW,CAAA;AAE1D,EAAA,uBACErB,cAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWD,qBAAAA,CAAQ,gBAAA,EAAkB,UAAA,EAAY,SAAS,CAAA;AAAA,MAC1D,KAAA,EAAO,iBAAE,WAAA,EAAA,EAAgB,aAAA,CAAA;AAAA,MAExB;AAAA;AAAA,GACH;AAEJ","file":"index.js","sourcesContent":["import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function ActionButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const getStyles = () => {\n if (disabled) {\n return {\n container:\n 'flex-1 h-12 rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden bg-bg-muted dark:bg-bg-muted-dark',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2',\n text: 'opacity-state-disabled-content text-center justify-center text-text-disabled dark:text-text-disabled-dark text-sm font-semibold font-poppins leading-5',\n }\n }\n return {\n container:\n 'flex-1 h-12 bg-brand-primary rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden hover:shadow-md transition-shadow duration-200',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2 hover:opacity-90 focus:opacity-85 active:opacity-85 transition-opacity duration-200',\n text: 'text-center justify-center text-text-inverse text-sm font-semibold font-poppins leading-5',\n }\n }\n\n const styles = getStyles()\n\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n <div className={styles.inner}>\n <div className={styles.text}>{children}</div>\n </div>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function PercentageButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction - uses brand-primary color for theming */\nexport default function PrimaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]'\n ].join(' ')\n\n const stateClasses = {\n /** enabled state */\n enabled: [\n 'hover:opacity-90',\n 'text-[var(--deframe-widget-color-text-primary)]',\n 'bg-[var(--deframe-widget-color-brand-primary)]',\n 'border-[color:var(--deframe-widget-color-border-primary)]',\n 'cursor-pointer'\n ].join(' '),\n /** disabled state */\n disabled: [\n 'text-[var(--deframe-widget-color-text-primary-disabled)]',\n 'bg-[var(--deframe-widget-color-brand-primary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-primary-disabled)]',\n 'cursor-not-allowed'\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='primary-button'\n data-test-id='primary-button'\n aria-label='primary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Secondary UI component for user interaction - outline style using brand-primary color */\nexport default function SecondaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-secondary)]',\n 'border-[color:var(--deframe-widget-color-border-secondary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-secondary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-secondary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='secondary-button'\n data-test-id='secondary-button'\n aria-label='secondary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Tertiary UI component for user interaction - ghost style using brand-tertiary color */\nexport default function TertiaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent border-none',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-tertiary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-tertiary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='tertiary-button'\n data-test-id='tertiary-button'\n aria-label='tertiary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { LinkProps } from './index'\n\n/** Link component for navigation and external links */\nexport default function Link ({\n children,\n href,\n className = '',\n target = '_self',\n ...props\n}: LinkProps) {\n const styles = {\n link: 'text-sm font-medium font-poppins leading-5 cursor-pointer',\n }\n\n const linkClasses = twMerge(styles.link, className)\n\n return (\n <a\n href={href}\n target={target}\n className={linkClasses}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n {...props}\n >\n {children}\n </a>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { InputProps } from './index'\nimport Link from '../texts/Link'\n\nexport default function Input ({\n label,\n error,\n placeholder,\n type = 'text',\n repassword = 'Forgot password?',\n disabled,\n className,\n ...props\n}: InputProps) {\n const hasError = !!error\n\n const inputClasses = twMerge(\n 'w-full px-4 py-2 rounded',\n 'text-white placeholder-gray-400 text-base font-poppins',\n hasError\n ? 'border-red-500'\n : disabled\n ? 'border-gray-600 opacity-60'\n : 'border-gray-500',\n className\n )\n\n const labelClasses = 'block mb-1 text-xs text-white font-poppins'\n\n return (\n <div>\n {label && <label className={labelClasses}>{label}</label>}\n <input\n type={type}\n placeholder={placeholder}\n disabled={disabled}\n className={inputClasses}\n {...props}\n />\n {type === 'password' && (\n <div className='text-right'>\n <Link href='#'>{repassword}</Link>\n </div>\n )}\n {error && <p className='mt-1 text-xs text-red-500'>{error}</p>}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ListItemProps {\n children: React.ReactNode;\n /**\n * Applies to the inner content wrapper\n */\n className?: string;\n /**\n * Applies to the outer bordered container\n */\n containerClassName?: string;\n onClick?: () => void;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n className,\n containerClassName,\n onClick,\n}) => {\n const containerClasses = twMerge(\n 'self-stretch min-h-16 relative rounded border border-border-default text-white dark:border-border-default-dark flex flex-col justify-center items-center hover:border-border-strong dark:hover:border-border-strong-dark transition-colors bg-bg-subtle dark:bg-bg-subtle-dark',\n onClick && 'cursor-pointer',\n containerClassName\n )\n\n return (\n <div className={containerClasses} onClick={onClick}>\n <div\n className={twMerge(\n 'self-stretch inline-flex justify-between items-center gap-md px-4 py-2 text-white',\n className\n )}\n >\n {children}\n </div>\n </div>\n )\n}\n\nexport const ListItemLeftSide: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div\n className={twMerge('flex justify-center items-center text-white', className)}\n >\n {children}\n </div>\n )\n}\n\nexport const ListItemContent: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div\n className={twMerge(\n 'flex-1 self-stretch inline-flex flex-col justify-center items-start overflow-hidden text-white',\n className\n )}\n >\n {children}\n </div>\n )\n}\n\nexport const ListItemRightSide: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div\n className={twMerge(\n 'flex flex-col justify-start items-end text-white',\n className\n )}\n >\n {children}\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { ReactNode } from 'react'\n\nexport interface WalletListContainerProps {\n /** Child components (typically WalletItem components) */\n children: ReactNode;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * WalletListContainer - Container wrapper for wallet list items\n * Provides consistent spacing and layout for wallet options\n */\nexport default function WalletListContainer ({\n children,\n className,\n}: WalletListContainerProps) {\n return (\n <div className={twMerge('flex flex-col gap-4', className)}>\n {children}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n as?: keyof React.JSX.IntrinsicElements\n variantClass?: string\n}\n\n/**\n * Base Text component used internally by other text variants.\n * Handles tag selection, base font, and class merging.\n */\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n (\n { as: Component = 'p', variantClass, className, children, ...props },\n ref\n ) => {\n return React.createElement(\n Component,\n {\n ref,\n className: twMerge('font-poppins', variantClass, className),\n ...props,\n },\n children\n )\n }\n)\n\nText.displayName = 'Text'\nexport default Text\n","import * as React from 'react'\nimport Text from './Text'\n\nconst accentVariants = {\n 'accent-large': 'text-[15px] leading-[140%] font-semibold',\n 'accent-medium': 'text-[14px] leading-[140%] font-semibold',\n 'accent-small': 'text-[12px] leading-[140%] font-semibold',\n} as const\n\nexport interface TextAccentProps extends React.HTMLAttributes<HTMLElement> {\n variant?: keyof typeof accentVariants\n as?: keyof React.JSX.IntrinsicElements\n}\n\nconst TextAccent = React.forwardRef<HTMLElement, TextAccentProps>(\n ({ variant = 'accent-medium', as = 'span', ...props }, ref) => {\n const variantClass = accentVariants[variant]\n return <Text ref={ref} as={as} variantClass={variantClass} {...props} />\n }\n)\n\nTextAccent.displayName = 'TextAccent'\nexport default TextAccent\n","import * as React from 'react'\nimport Text from './Text'\n\nconst bodyVariants = {\n 'text-large': 'text-[15px] leading-[140%] font-normal',\n 'text-medium': 'text-[14px] leading-[140%] font-normal',\n 'text-small': 'text-[12px] leading-[140%] font-normal',\n} as const\n\nexport interface TextBodyProps extends React.HTMLAttributes<HTMLElement> {\n variant?: keyof typeof bodyVariants\n as?: keyof React.JSX.IntrinsicElements\n}\n\nconst TextBody = React.forwardRef<HTMLElement, TextBodyProps>(\n ({ variant = 'text-medium', as = 'p', ...props }, ref) => {\n const variantClass = bodyVariants[variant]\n return <Text ref={ref} as={as} variantClass={variantClass} {...props} />\n }\n)\n\nTextBody.displayName = 'TextBody'\nexport default TextBody\n","import * as React from 'react'\nimport Text from './Text'\n\nconst headingVariants = {\n 'h-large': 'text-[56px] leading-[100%] tracking-[0] font-extrabold',\n h1: 'text-[40px] leading-[110%] font-extrabold',\n h2: 'text-[28px] leading-[130%] font-extrabold',\n h3: 'text-[22px] leading-[120%] font-extrabold',\n h4: 'text-[18px] leading-[120%] font-extrabold',\n h5: 'text-[16px] leading-[120%] font-bold',\n} as const\n\nexport interface TextHeadingProps extends React.HTMLAttributes<HTMLElement> {\n variant?: keyof typeof headingVariants\n as?: keyof React.JSX.IntrinsicElements\n}\n\nconst TextHeading = React.forwardRef<HTMLElement, TextHeadingProps>(\n ({ variant = 'h2', as, ...props }, ref) => {\n const variantClass = headingVariants[variant]\n return (\n <Text\n ref={ref}\n as={variant === 'h-large' ? 'h1' : variant}\n variantClass={variantClass}\n {...props}\n />\n )\n }\n)\n\nTextHeading.displayName = 'TextHeading'\nexport default TextHeading\n","import TextHeading from './TextHeading'\nimport type { TextHeadingProps } from './TextHeading'\n\n/**\n * Title component for headings and page titles\n * This is an alias for TextHeading with h1 variant as default\n */\nexport default function Title ({\n variant = 'h1',\n ...props\n}: TextHeadingProps) {\n return <TextHeading variant={variant} {...props} />\n}\n","import { twMerge } from 'tailwind-merge'\nimport WalletListContainer from './WalletListContainer'\nimport {\n ListItem,\n ListItemContent,\n ListItemLeftSide,\n ListItemRightSide,\n} from '../List'\nimport { Text } from '../../texts'\n\nexport interface WalletOption {\n /** Unique identifier for the wallet */\n id: string;\n /** Display name of the wallet */\n name: string;\n /** Wallet icon - can be an image URL or React component */\n icon: string | React.ReactNode;\n /** Click handler for wallet selection */\n onClick?: () => void;\n}\n\nexport interface ConnectWalletListProps {\n /** List of wallet options */\n wallets: WalletOption[];\n /** Title text for the wallet connect screen */\n title?: string;\n /** Subtitle text for the wallet connect screen */\n subtitle?: string;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * ConnectWalletList - Displays a list of wallet options for connection\n * Includes title, subtitle, and clickable wallet items\n */\nexport default function ConnectWalletList ({\n wallets,\n className,\n}: ConnectWalletListProps) {\n const handleWalletClick = (wallet: WalletOption) => {\n wallet.onClick?.()\n }\n\n return (\n <div className={twMerge('w-full', className)}>\n <WalletListContainer>\n {wallets.map((wallet) => (\n <ListItem key={wallet.id} onClick={() => handleWalletClick(wallet)}>\n <ListItemLeftSide>\n {typeof wallet.icon === 'string'\n ? (\n <img\n src={wallet.icon}\n alt={wallet.name}\n className='w-10 h-10 rounded-full'\n />\n )\n : (\n wallet.icon\n )}\n </ListItemLeftSide>\n <ListItemContent>\n <Text>{wallet.name}</Text>\n </ListItemContent>\n <ListItemRightSide>\n {/* Chevron */}\n <svg\n className='flex-shrink-0 w-5 h-5 text-gray-400'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </ListItemRightSide>\n </ListItem>\n ))}\n </WalletListContainer>\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\n\nexport interface WalletItemProps {\n /** Unique identifier for the wallet */\n id: string;\n /** Display name of the wallet */\n name: string;\n /** Wallet icon - can be an image URL or React component */\n icon: string | React.ReactNode;\n /** Click handler for wallet selection */\n onClick?: () => void;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * WalletItem - Individual wallet button component\n * Displays a clickable wallet option with icon, name, and chevron\n */\nexport default function WalletItem ({\n id,\n name,\n icon,\n onClick,\n className,\n}: WalletItemProps) {\n return (\n <button\n key={id}\n onClick={onClick}\n className={twMerge(\n 'w-full flex items-center gap-4 p-5',\n 'bg-[#1E1E1E] rounded-2xl',\n 'transition-all duration-200',\n 'hover:bg-[#2C2C2C] active:scale-[0.98]',\n 'focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50',\n className\n )}\n >\n {/* Icon */}\n <div className='flex-shrink-0 w-12 h-12 rounded-full overflow-hidden bg-white flex items-center justify-center'>\n {typeof icon === 'string'\n ? (\n <img\n src={icon}\n alt={name}\n className='w-full h-full object-cover'\n />\n )\n : (\n icon\n )}\n </div>\n\n {/* Wallet Name */}\n <span className='flex-1 text-left text-[15px] md:text-[17px] font-medium text-white'>\n {name}\n </span>\n\n {/* Chevron */}\n <svg\n className='flex-shrink-0 w-5 h-5 text-gray-400'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { CurrencyProps, CurrencyType, FiatProps } from '.'\n\n// Currency configuration\nconst CURRENCY_CONFIG = {\n symbols: {\n USD: '$',\n BRL: 'R$',\n EUR: '€',\n BTC: '₿',\n ETH: 'Ξ',\n USDC: '$',\n USDT: '$',\n } as Record<CurrencyType, string>,\n labels: {\n USD: 'USD',\n BRL: 'BRL',\n EUR: 'EUR',\n BTC: 'BTC',\n ETH: 'ETH',\n USDC: 'USDC',\n USDT: 'USDT',\n } as Record<CurrencyType, string>,\n}\n\n// Style configuration\nconst STYLE_CONFIG = {\n alignment: {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n },\n size: {\n sm: { primary: 'text-3xl', secondary: 'text-sm', gap: 'gap-0.5' },\n md: { primary: 'text-5xl', secondary: 'text-base', gap: 'gap-1' },\n lg: { primary: 'text-6xl', secondary: 'text-lg', gap: 'gap-1' },\n },\n}\n\n/** Flexible currency display component supporting fiat and crypto */\nexport default function Currency (props: CurrencyProps | FiatProps) {\n // Normalize props: convert FiatProps to CurrencyProps format\n const normalizedProps: Required<\n Omit<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'>\n > &\n Pick<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'> =\n 'usdValue' in props\n ? {\n amount: props.amount,\n currency: 'USD',\n secondaryAmount: props.usdValue,\n secondaryCurrency: undefined,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: false,\n showLabel: false,\n className: props.className ?? '',\n }\n : {\n amount: props.amount,\n currency: props.currency ?? 'USD',\n secondaryAmount: props.secondaryAmount,\n secondaryCurrency: props.secondaryCurrency,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: props.showSymbol ?? true,\n showLabel: props.showLabel ?? false,\n className: props.className ?? '',\n }\n\n const {\n amount,\n currency,\n secondaryAmount,\n secondaryCurrency,\n align,\n size,\n showSymbol,\n showLabel,\n className,\n } = normalizedProps\n\n // Format currency value\n const formatAmount = (\n value: string,\n curr: CurrencyType,\n displaySymbol: boolean\n ): string => {\n if (!displaySymbol && !showLabel) return value\n\n const symbol = displaySymbol ? CURRENCY_CONFIG.symbols[curr] : ''\n const label = showLabel ? ` ${CURRENCY_CONFIG.labels[curr]}` : ''\n\n // Crypto currencies: no space between symbol and value\n if (\n ['BTC', 'ETH'].includes(curr) &&\n !value.includes('.') &&\n !value.includes(',')\n ) {\n return `${symbol}${value}${label}`\n }\n\n return `${symbol} ${value}${label}`.trim()\n }\n\n return (\n <div\n className={twMerge(\n 'flex flex-col',\n STYLE_CONFIG.alignment[align],\n STYLE_CONFIG.size[size].gap,\n className\n )}\n >\n {/* Primary amount */}\n <div\n className={twMerge(\n 'font-bold text-text-primary dark:text-text-primary-dark font-poppins',\n STYLE_CONFIG.size[size].primary\n )}\n >\n {formatAmount(amount, currency, showSymbol)}\n </div>\n\n {/* Secondary amount (optional) */}\n {secondaryAmount && (\n <div\n className={twMerge(\n 'text-text-secondary dark:text-text-secondary-dark font-poppins',\n STYLE_CONFIG.size[size].secondary\n )}\n >\n {secondaryCurrency\n ? formatAmount(secondaryAmount, secondaryCurrency, true)\n : secondaryAmount}\n </div>\n )}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { motion } from 'framer-motion'\n\n// ============================================================================\n// Context\n// ============================================================================\n\nexport type TabsVariant = 'primary' | 'secondary' | 'default' | 'light' | 'medium' | 'dark' | 'header'\n\ninterface TabsContextValue {\n value: string\n onValueChange: (value: string) => void\n variant: TabsVariant\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(\n undefined\n)\n\nconst useTabs = () => {\n const ctx = React.useContext(TabsContext)\n if (!ctx) { throw new Error('Tabs compound components must be used within <Tabs />') }\n return ctx\n}\n\n// ============================================================================\n// Tabs (Main Component)\n// ============================================================================\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string\n onValueChange?: (value: string) => void\n defaultValue?: string\n variant?: TabsVariant\n}\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n variant = 'secondary',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internal, setInternal] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const activeValue = isControlled ? controlledValue : internal\n\n const handleChange = (v: string) => {\n if (!isControlled) setInternal(v)\n onValueChange?.(v)\n }\n\n return (\n <TabsContext.Provider\n value={{\n value: activeValue,\n onValueChange: handleChange,\n variant,\n }}\n >\n <div ref={ref} className={twMerge('w-full', className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n }\n)\nTabs.displayName = 'Tabs'\n\n// ============================================================================\n// TabsList\n// ============================================================================\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useTabs()\n\n // Header variant: full width, space between tabs, minimal padding\n if (variant === 'header') {\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center justify-between pt-2',\n className\n )}\n style={{\n paddingLeft: 'var(--spacing-md, 16px)',\n paddingRight: 'var(--spacing-md, 16px)',\n backgroundColor: 'var(--color-bg-default, transparent)'\n }}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n // Default/other variants\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center bg-transparent border-b border-border-default dark:border-border-default-dark',\n variant === 'primary' ? 'h-[72px] gap-6' : 'h-12',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsList.displayName = 'TabsList'\n\n// ============================================================================\n// TabsTrigger\n// ============================================================================\n\nexport interface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string\n icon?: React.ReactNode\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n (\n {\n value,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const { value: activeValue, onValueChange, variant } = useTabs()\n const isActive = activeValue === value\n\n // Header variant uses inline styles for colors to ensure CSS variables work\n const headerStyle = variant === 'header'\n ? {\n color: isActive\n ? 'var(--color-brand-primary)'\n : 'var(--color-text-secondary)',\n ...style\n }\n : style\n\n return (\n <button\n ref={ref}\n role='tab'\n aria-selected={isActive}\n onClick={() => onValueChange(value)}\n className={twMerge(\n 'relative inline-flex flex-col items-center justify-center whitespace-nowrap font-poppins transition-colors cursor-pointer disabled:pointer-events-none disabled:opacity-50 outline-none',\n variant === 'header'\n ? 'flex-1 text-sm font-semibold py-3'\n : variant === 'primary'\n ? 'h-[72px] text-base font-medium px-0 pb-3 pt-2 flex-none'\n : 'h-12 text-[12px] font-semibold px-4 flex-none',\n variant !== 'header' && (isActive ? 'text-brand-primary' : 'text-text-secondary dark:text-text-secondary-dark hover:text-text-primary dark:hover:text-text-primary-dark'),\n className\n )}\n style={headerStyle}\n {...props}\n >\n <span>{children}</span>\n {isActive && variant === 'header' && (\n <motion.span\n layoutId='header-tab-indicator'\n className='absolute rounded-t-full'\n style={{\n bottom: 0,\n left: 0,\n right: 0,\n marginLeft: 'auto',\n marginRight: 'auto',\n width: '3.5rem',\n height: '3px',\n backgroundColor: 'var(--color-brand-primary)'\n }}\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n {isActive && variant !== 'header' && (\n <motion.span\n layoutId='tab-indicator'\n className='absolute bottom-0 left-0 right-0 h-0.5 bg-brand-primary z-10'\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n </button>\n )\n }\n)\nTabsTrigger.displayName = 'TabsTrigger'\n\n// ============================================================================\n// TabsContent\n// ============================================================================\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const { value: activeValue, variant } = useTabs()\n if (activeValue !== value) return null\n\n return (\n <div\n ref={ref}\n role='tabpanel'\n className={twMerge(\n 'focus-visible:outline-none',\n variant === 'primary' || variant === 'header' ? 'mt-0' : 'mt-6',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsContent.displayName = 'TabsContent'\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SelectProps {\n value: string\n onValueChange: (value: string) => void\n disabled?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport interface SelectTriggerProps {\n placeholder?: string\n className?: string\n children?: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _disabled?: boolean\n _onToggle?: () => void\n}\n\nexport interface SelectContentProps {\n className?: string\n children: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _value?: string\n _onSelect?: (value: string) => void\n _highlightedIndex?: number\n _setHighlightedIndex?: (index: number) => void\n}\n\nexport interface SelectItemProps {\n value: string\n disabled?: boolean\n className?: string\n children: React.ReactNode\n // Internal props (passed by SelectContent)\n _index?: number\n _isSelected?: boolean\n _isHighlighted?: boolean\n _onSelect?: (value: string) => void\n _onHighlight?: (index: number) => void\n}\n\n// ============================================================================\n// ChevronDownIcon\n// ============================================================================\n\nconst ChevronDownIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n viewBox='0 0 20 20'\n fill='currentColor'\n aria-hidden='true'\n >\n <path\n fillRule='evenodd'\n d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'\n clipRule='evenodd'\n />\n </svg>\n)\n\n// ============================================================================\n// Select\n// ============================================================================\n\nexport const Select: React.FC<SelectProps> = ({\n value,\n onValueChange,\n disabled = false,\n children,\n className,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev)\n if (!isOpen) setHighlightedIndex(0)\n }\n }, [disabled, isOpen])\n\n const handleSelect = React.useCallback(\n (newValue: string) => {\n onValueChange(newValue)\n setIsOpen(false)\n setHighlightedIndex(-1)\n },\n [onValueChange]\n )\n\n // Handle click outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Handle escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen])\n\n // Clone children and inject internal props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectTrigger) {\n return React.cloneElement(child as React.ReactElement<SelectTriggerProps>, {\n _isOpen: isOpen,\n _disabled: disabled,\n _onToggle: handleToggle,\n })\n }\n\n if (child.type === SelectContent) {\n return React.cloneElement(child as React.ReactElement<SelectContentProps>, {\n _isOpen: isOpen,\n _value: value,\n _onSelect: handleSelect,\n _highlightedIndex: highlightedIndex,\n _setHighlightedIndex: setHighlightedIndex,\n })\n }\n\n return child\n })\n\n return (\n <div ref={containerRef} className={twMerge('relative', className)}>\n {enhancedChildren}\n </div>\n )\n}\n\nSelect.displayName = 'Select'\n\n// ============================================================================\n// SelectTrigger\n// ============================================================================\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n placeholder = 'Select...',\n className,\n children,\n _isOpen,\n _disabled,\n _onToggle,\n },\n ref\n ) => {\n const hasChildren = React.Children.count(children) > 0\n\n return (\n <button\n ref={ref}\n type='button'\n onClick={_onToggle}\n disabled={_disabled}\n aria-haspopup='listbox'\n aria-expanded={_isOpen}\n className={twMerge(\n 'w-full flex items-center justify-between gap-2',\n 'bg-[var(--color-bg-subtle,#1a1a1a)] border border-[var(--color-border-default,#333)] rounded px-3 py-1.5',\n 'text-sm text-[var(--color-text-primary,#fff)] text-left',\n 'transition-colors cursor-pointer',\n 'hover:border-[var(--color-border-strong,#555)]',\n 'focus:outline-none focus:ring-2 focus:ring-[var(--color-brand-primary,#7C3AED)]/50 focus:border-[var(--color-brand-primary,#7C3AED)]',\n _disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n <span\n className={\n !hasChildren\n ? 'text-[var(--color-text-tertiary,#888)]'\n : undefined\n }\n >\n {hasChildren ? children : placeholder}\n </span>\n <ChevronDownIcon\n className={twMerge(\n 'w-4 h-4 text-[var(--color-text-secondary,#999)] transition-transform',\n _isOpen && 'rotate-180'\n )}\n />\n </button>\n )\n }\n)\n\nSelectTrigger.displayName = 'SelectTrigger'\n\n// ============================================================================\n// SelectContent\n// ============================================================================\n\nexport const SelectContent = React.forwardRef<HTMLUListElement, SelectContentProps>(\n (\n {\n className,\n children,\n _isOpen,\n _value,\n _onSelect,\n _highlightedIndex,\n _setHighlightedIndex,\n },\n ref\n ) => {\n const listRef = React.useRef<HTMLUListElement>(null)\n\n // Merge refs\n const mergedRef = React.useCallback(\n (node: HTMLUListElement | null) => {\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n ;(listRef as React.MutableRefObject<HTMLUListElement | null>).current = node\n },\n [ref]\n )\n\n // Scroll highlighted option into view\n React.useEffect(() => {\n if (_isOpen && _highlightedIndex !== undefined && _highlightedIndex >= 0 && listRef.current) {\n const highlightedElement = listRef.current.children[_highlightedIndex] as HTMLElement\n if (highlightedElement) {\n highlightedElement.scrollIntoView({ block: 'nearest' })\n }\n }\n }, [_isOpen, _highlightedIndex])\n\n // Clone children and inject internal props with index\n let itemIndex = 0\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectItem) {\n const currentIndex = itemIndex++\n const itemProps = child.props as SelectItemProps\n return React.cloneElement(child as React.ReactElement<SelectItemProps>, {\n _index: currentIndex,\n _isSelected: _value === itemProps.value,\n _isHighlighted: _highlightedIndex === currentIndex,\n _onSelect,\n _onHighlight: _setHighlightedIndex,\n })\n }\n\n return child\n })\n\n const contentVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { type: 'spring' as const, damping: 25, stiffness: 400 },\n },\n exit: { opacity: 0, y: -8, transition: { duration: 0.1 } },\n }\n\n return (\n <AnimatePresence mode='wait'>\n {_isOpen && (\n <motion.ul\n ref={mergedRef}\n role='listbox'\n variants={contentVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n className={twMerge(\n 'absolute z-50 w-full mt-1',\n 'bg-[var(--color-bg-raised,#1f1f1f)] border border-[var(--color-border-default,#333)] rounded shadow-lg',\n 'max-h-60 overflow-auto',\n 'py-1',\n className\n )}\n >\n {enhancedChildren}\n </motion.ul>\n )}\n </AnimatePresence>\n )\n }\n)\n\nSelectContent.displayName = 'SelectContent'\n\n// ============================================================================\n// SelectItem\n// ============================================================================\n\nexport const SelectItem = React.forwardRef<HTMLLIElement, SelectItemProps>(\n (\n {\n value,\n disabled = false,\n className,\n children,\n _index,\n _isSelected,\n _isHighlighted,\n _onSelect,\n _onHighlight,\n },\n ref\n ) => {\n const handleClick = () => {\n if (!disabled && _onSelect) {\n _onSelect(value)\n }\n }\n\n const handleMouseEnter = () => {\n if (!disabled && _onHighlight && _index !== undefined) {\n _onHighlight(_index)\n }\n }\n\n return (\n <li\n ref={ref}\n role='option'\n aria-selected={_isSelected}\n aria-disabled={disabled}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={twMerge(\n 'px-3 py-2 text-sm cursor-pointer transition-colors',\n 'text-[var(--color-text-primary,#fff)]',\n _isSelected && 'text-[var(--color-text-highlight,#7C3AED)]',\n _isHighlighted && 'bg-[var(--color-bg-muted,#2a2a2a)]',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n {children}\n </li>\n )\n }\n)\n\nSelectItem.displayName = 'SelectItem'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Width of the skeleton block (px, %, rem, etc.) */\n width?: string | number;\n /** Height of the skeleton block (px, %, rem, etc.) */\n height?: string | number;\n /** Shape of the skeleton */\n variant?: 'rect' | 'circle' | 'text';\n /** Enables shimmer animation */\n shimmer?: boolean;\n /** Custom background color (Tailwind classes) */\n colorClass?: string;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width = '100%',\n height = '1rem',\n variant = 'text',\n shimmer = true,\n className,\n style,\n ...props\n}) => {\n const defaultGradient =\n 'linear-gradient(25deg, #2C2C2C 0%, #2C2C2C 60%, #121212 100%)'\n\n return (\n <div\n className={twMerge(\n 'relative overflow-hidden animate-fade-in',\n variant === 'circle' ? 'rounded-full' : 'rounded',\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n background: defaultGradient,\n ...style,\n }}\n {...props}\n >\n {shimmer && (\n <div className='absolute inset-0 animate-shimmer bg-gradient-to-r from-transparent via-white/20 to-transparent dark:via-gray-600/30' />\n )}\n </div>\n )\n}\n\nSkeleton.displayName = 'Skeleton'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n MdInfoOutline,\n MdWarningAmber,\n MdErrorOutline,\n MdCheckCircleOutline,\n MdClose,\n} from 'react-icons/md'\n\nexport interface BannerNotificationProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Type of notification - inline (default) or toast */\n type?: 'inline' | 'toast'\n /** Variant type that determines colors and icon */\n variant?: 'info' | 'warning' | 'error' | 'success'\n /** The title of the banner */\n title?: string\n /** The message to display in the banner */\n message: string\n /** Position for toast notifications */\n position?:\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n /** Auto hide duration in milliseconds (default: 5000, set to 0 to disable) */\n autoHideDuration?: number\n /** Control visibility for toast notifications */\n show?: boolean\n /** Callback when notification is closed */\n onClose?: () => void\n /** Whether to show the icon (default: true) */\n showIcon?: boolean\n /** Custom icon to display */\n icon?: React.ReactNode\n}\n\nconst variantConfig = {\n info: { color: '#1890FF', icon: MdInfoOutline },\n warning: { color: '#F6A700', icon: MdWarningAmber },\n error: { color: '#FF4D4F', icon: MdErrorOutline },\n success: { color: '#2BA176', icon: MdCheckCircleOutline },\n}\n\nconst positionStyles = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n}\n\nexport const BannerNotification: React.FC<BannerNotificationProps> = ({\n type = 'inline',\n variant = 'info',\n title,\n message,\n position = 'top-right',\n autoHideDuration = 5000,\n show = true,\n onClose,\n className,\n ...props\n}) => {\n const [isExiting, setIsExiting] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const config = variantConfig[variant]\n const IconComponent = config.icon\n\n const handleClose = () => {\n setIsExiting(true)\n setTimeout(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n onClose?.()\n }, 300)\n }\n\n // Auto-hide for toast without useEffect\n if (type === 'toast' && show && autoHideDuration > 0 && !timerRef.current && !isExiting) {\n timerRef.current = setTimeout(() => {\n handleClose()\n }, autoHideDuration)\n }\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n }\n }, [])\n\n if (!show) return null\n\n // Inline: 33% opacity background, Toast: solid background\n const backgroundColor = type === 'inline' ? `${config.color}33` : config.color\n\n return (\n <div\n className={twMerge(\n 'flex items-start gap-3 p-3 rounded border transition-all duration-300',\n isExiting && 'opacity-0 -translate-y-2',\n className,\n type === 'toast' && 'fixed z-50 w-[clamp(18rem,40vw,30rem)] shadow-lg',\n type === 'toast' && positionStyles[position]\n )}\n style={{\n backgroundColor,\n borderColor: config.color,\n }}\n role='alert'\n {...props}\n >\n <div className='flex-shrink-0 text-2xl'>\n <IconComponent />\n </div>\n\n <div className='flex-1 min-w-0'>\n {title && (\n <div className='font-semibold text-sm mb-1'>\n {title}\n </div>\n )}\n <div className='text-sm'>\n {message}\n </div>\n </div>\n\n <button\n onClick={handleClose}\n className='flex-shrink-0 text-xl transition-opacity hover:opacity-70 cursor-pointer'\n aria-label='Close notification'\n >\n <MdClose />\n </button>\n </div>\n )\n}\n\nBannerNotification.displayName = 'BannerNotification'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface AddressDisplayProps {\n /** The full address to display */\n address: string;\n /** Optional truncated display text shown instead of the full address */\n displayText?: string;\n /** Callback when copy button is clicked */\n onCopy?: (address: string) => void;\n /** Custom className for the container */\n className?: string;\n /** Custom className for the text */\n textClassName?: string;\n /** Show copy button */\n showCopyButton?: boolean;\n}\n\nexport const AddressDisplay: React.FC<AddressDisplayProps> = ({\n address,\n onCopy,\n className = '',\n textClassName = '',\n showCopyButton = true,\n}) => {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(address)\n setCopied(true)\n onCopy?.(address)\n\n // Reset copied state after 2 seconds\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error('Failed to copy address:', err)\n }\n }\n\n return (\n <div\n className={twMerge(\n 'bg-[#121212] rounded p-3 flex items-center justify-between gap-2 border border-gray-700',\n className\n )}\n >\n <TextBody\n className={twMerge(\n 'block w-full whitespace-nowrap overflow-hidden',\n textClassName\n )}\n >\n {address}\n </TextBody>\n {showCopyButton && (\n <button\n onClick={handleCopy}\n className='text-gray-400 hover:text-white transition-colors flex-shrink-0 cursor-pointer'\n aria-label='Copy address'\n >\n {copied\n ? (\n <svg\n className='w-5 h-5 text-green-500'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 13l4 4L19 7'\n />\n </svg>\n )\n : (\n <svg\n className='w-5 h-5'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z'\n />\n </svg>\n )}\n </button>\n )}\n </div>\n )\n}\n\nAddressDisplay.displayName = 'AddressDisplay'\n","import * as React from 'react'\nimport { TextBody } from '@/stories/texts'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface DetailItem {\n /** Label for the detail row */\n label: string;\n /** Value to display */\n value: string | React.ReactNode;\n /** Optional custom className for the value */\n valueClassName?: string;\n /** Optional custom className for the label */\n labelClassName?: string;\n}\n\nexport interface SummaryDetailsProps {\n /** Title displayed in the summary header */\n title: string;\n /** Array of detail items to render */\n items: DetailItem[];\n /** Whether the details are open by default */\n defaultOpen?: boolean;\n /** Custom className for the details container */\n className?: string;\n /** Custom className for the summary header */\n summaryClassName?: string;\n /** Custom className for the content area */\n contentClassName?: string;\n /** Show dividers between items */\n showDividers?: boolean;\n}\n\nexport const SummaryDetails: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n className={twMerge('bg-[#1A1A1A] rounded p-4 group', className)}\n open={defaultOpen}\n >\n {/* Summary Header */}\n <summary className={twMerge('cursor-pointer block ', summaryClassName)}>\n <div className='flex items-center justify-between'>\n <TextBody className='text-white font-medium'>{title}</TextBody>\n <svg\n className='w-5 h-5 text-gray-400 transition-transform duration-300 group-open:rotate-180'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 9l7 7 7-7'\n />\n </svg>\n </div>\n </summary>\n\n {/* Details Content */}\n <div\n className={twMerge(\n 'mt-4',\n showDividers && 'divide-y divide-[#2A2A2A]',\n contentClassName\n )}\n >\n {items.map((item, index) => (\n <div key={index} className='flex justify-between py-2'>\n <TextBody\n variant='text-small'\n className={twMerge('text-text-tertiary dark:text-text-tertiary-dark', item.labelClassName)}\n >\n {item.label}\n </TextBody>\n {typeof item.value === 'string'\n ? (\n <TextBody\n variant='text-small'\n className={twMerge('text-text-primary dark:text-text-primary-dark font-medium', item.valueClassName)}\n >\n {item.value}\n </TextBody>\n )\n : (\n <div className={item.valueClassName}>{item.value}</div>\n )}\n </div>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ActionSheetItem {\n id: string\n label: string\n icon?: React.ReactNode\n variant?: 'default' | 'destructive' | 'success'\n disabled?: boolean\n onClick?: () => void\n}\n\nexport interface ActionSheetProps {\n /** Unique identifier for this action sheet */\n id: string\n /** Current action sheet ID from state */\n currentActionSheetId?: string | null\n /** Whether the action sheet is open */\n isOpen?: boolean\n /** Function to close the action sheet */\n onClose?: () => void\n /** Custom content to render */\n children?: React.ReactNode\n /** Custom className for the container */\n className?: string\n /** Custom className for the content area */\n contentClassName?: string\n /** Position of the action sheet */\n position?: 'bottom' | 'center'\n /** Height of the sheet */\n height?: 'auto' | 'full' | 'half'\n /** Whether clicking the backdrop should close the sheet (default: true) */\n closeOnBackdropClick?: boolean\n /** Title displayed in the header */\n title?: string\n /** Description displayed below the title */\n description?: string\n /** List of action items to render */\n items?: ActionSheetItem[]\n /** Whether to show a cancel button (default: true) */\n showCancel?: boolean\n}\n\n/**\n * ActionSheet - A flexible bottom sheet / modal component\n *\n * Pure custom content mode for maximum flexibility.\n * Compose your content using existing library components.\n *\n * Features:\n * - Smooth framer-motion animations with spring physics\n * - Multiple height options (auto, full, half)\n * - Position options (bottom, center)\n * - Dark mode support via CSS custom properties\n * - Keyboard navigation (ESC to close)\n * - Backdrop click to dismiss\n * - ARIA labels for accessibility\n *\n * @example\n * <ActionSheet\n * id=\"token-selector\"\n * currentActionSheetId={currentId}\n * isOpen={isOpen}\n * height=\"full\"\n * onClose={handleClose}\n * >\n * <div className=\"flex flex-col h-full bg-black p-6\">\n * <h2>Select Token</h2>\n * <Input placeholder=\"Search here...\" />\n * <ListItem>...</ListItem>\n * </div>\n * </ActionSheet>\n */\nexport const ActionSheet: React.FC<ActionSheetProps> = ({\n id,\n currentActionSheetId,\n isOpen,\n onClose,\n children,\n className = '',\n contentClassName = '',\n position = 'bottom',\n height = 'auto',\n closeOnBackdropClick = true,\n title,\n description,\n items,\n showCancel = true,\n}) => {\n const isThisSheetActive = isOpen && currentActionSheetId === id\n\n React.useEffect(() => {\n if (isThisSheetActive) {\n // Prevent body scroll when action sheet is open\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n\n return () => {\n document.body.style.overflow = ''\n }\n }, [isThisSheetActive])\n\n // Handle escape key\n React.useEffect(() => {\n if (!isThisSheetActive) return\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.()\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isThisSheetActive, onClose])\n\n // Handle backdrop click\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (closeOnBackdropClick && e.target === e.currentTarget) {\n onClose?.()\n }\n }\n\n // Animation variants\n const backdropVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0 },\n }\n\n const sheetVariants = {\n hidden: position === 'bottom' ? { y: '100%' } : { opacity: 0, scale: 0.95 },\n visible:\n position === 'bottom'\n ? {\n y: '0%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n exit:\n position === 'bottom'\n ? {\n y: '100%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 0,\n scale: 0.95,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n }\n\n // Height classes\n const getHeightClass = () => {\n switch (height) {\n case 'full':\n return 'h-full'\n case 'half':\n return 'h-[50vh]'\n case 'auto':\n default:\n return 'h-auto'\n }\n }\n\n return (\n <AnimatePresence mode='wait'>\n {isThisSheetActive && (\n <motion.div\n className={twMerge(\n 'fixed inset-0 z-50 flex justify-center',\n position === 'bottom' ? 'items-end' : 'items-center',\n className\n )}\n role='dialog'\n aria-modal='true'\n onClick={handleBackdropClick}\n variants={backdropVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n transition={{ duration: 0.2 }}\n >\n {/* Backdrop */}\n <div\n className='absolute inset-0 bg-black/50 backdrop-blur-sm'\n aria-hidden='true'\n />\n\n {/* Action Sheet Content */}\n <motion.div\n className={twMerge(\n 'relative w-full bg-[var(--sheet-bg,#0A0A0A)] shadow-2xl overflow-hidden',\n position === 'bottom'\n ? 'max-w-full rounded-t-[32px]'\n : 'max-w-lg rounded-2xl mx-4',\n getHeightClass(),\n contentClassName\n )}\n variants={sheetVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n >\n {children}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n\nexport default ActionSheet\n","/**\n * Theme color configuration for Deframe components\n */\nexport interface DeframeThemeColors {\n // Brand colors\n /** Primary brand color - used for buttons, links, accents */\n brandPrimary?: string\n /** Secondary brand color - used for secondary accents */\n brandSecondary?: string\n\n // Background colors\n /** Main background color */\n bgDefault?: string\n /** Subtle background color */\n bgSubtle?: string\n /** Muted/disabled background color */\n bgMuted?: string\n\n // Text colors\n /** Primary text color */\n textPrimary?: string\n /** Secondary text color */\n textSecondary?: string\n /** Disabled text color */\n textDisabled?: string\n /** Text color for dark backgrounds */\n textInverse?: string\n\n // State colors\n /** Success state color */\n stateSuccess?: string\n /** Error state color */\n stateError?: string\n /** Warning state color */\n stateWarning?: string\n}\n\n/**\n * Complete theme configuration for Deframe components\n */\nexport interface DeframeTheme {\n colors?: DeframeThemeColors\n}\n\n/**\n * Theme mode - controls light/dark appearance\n */\nexport type ThemeMode = 'light' | 'dark' | 'auto'\n\n/**\n * Theme preset - predefined color schemes\n */\nexport type ThemePreset = 'default' | 'cryptocontrol'\n\n/**\n * Structured theme configuration with mode, preset, and overrides\n */\nexport interface DeframeThemeConfig {\n /** Theme mode: 'light', 'dark', or 'auto' (follows system preference) */\n mode?: ThemeMode\n /** Theme preset: 'default' or 'cryptocontrol' */\n preset?: ThemePreset\n /** Custom color overrides for each mode */\n overrides?: {\n light?: DeframeTheme\n dark?: DeframeTheme\n }\n}\n\n/**\n * Default theme values - these serve as fallbacks when no custom theme is provided\n */\nexport const defaultThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#FFFFFF',\n bgSubtle: '#F8F9FA',\n bgMuted: '#E3E4E8',\n\n // Text\n textPrimary: '#252050',\n textSecondary: '#5C5F66',\n textDisabled: '#C6C8CC',\n textInverse: '#FFFFFF',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Dark mode theme values\n */\nexport const darkThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Cryptocontrol theme values\n */\nexport const cryptocontrolThemeColors: Required<DeframeThemeColors> = {\n // Brand - green primary for cryptocontrol\n brandPrimary: '#1FC16B',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds (same as dark)\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text (same as dark)\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Convert theme colors to CSS variable style object\n */\nexport function themeToCSS (theme?: DeframeTheme): React.CSSProperties {\n if (!theme?.colors) return {}\n\n const vars: Record<string, string> = {}\n const colors = theme.colors\n\n if (colors.brandPrimary) vars['--deframe-brand-primary'] = colors.brandPrimary\n if (colors.brandSecondary) vars['--deframe-brand-secondary'] = colors.brandSecondary\n if (colors.bgDefault) vars['--deframe-bg-default'] = colors.bgDefault\n if (colors.bgSubtle) vars['--deframe-bg-subtle'] = colors.bgSubtle\n if (colors.bgMuted) vars['--deframe-bg-muted'] = colors.bgMuted\n if (colors.textPrimary) vars['--deframe-text-primary'] = colors.textPrimary\n if (colors.textSecondary) vars['--deframe-text-secondary'] = colors.textSecondary\n if (colors.textDisabled) vars['--deframe-text-disabled'] = colors.textDisabled\n if (colors.textInverse) vars['--deframe-text-inverse'] = colors.textInverse\n if (colors.stateSuccess) vars['--deframe-state-success'] = colors.stateSuccess\n if (colors.stateError) vars['--deframe-state-error'] = colors.stateError\n if (colors.stateWarning) vars['--deframe-state-warning'] = colors.stateWarning\n\n return vars as React.CSSProperties\n}\n","import { useEffect, useState, useMemo } from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n type DeframeTheme,\n type DeframeThemeConfig,\n type ThemePreset,\n themeToCSS\n} from './types'\n\n/**\n * Get system color mode preference\n */\nfunction getSystemColorMode (): 'light' | 'dark' {\n if (typeof window === 'undefined' || !window.matchMedia) return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\n/**\n * Resolve theme configuration to provider theme and custom styles\n */\nfunction resolveThemeConfig (\n config: DeframeThemeConfig | undefined,\n systemMode: 'light' | 'dark'\n): { providerTheme: 'light' | 'dark' | 'cryptocontrol'; customTheme?: DeframeTheme } {\n const mode: 'light' | 'dark' = config?.mode === 'auto'\n ? systemMode\n : (config?.mode ?? 'light')\n\n const preset: ThemePreset = config?.preset ?? 'default'\n\n const providerTheme: 'light' | 'dark' | 'cryptocontrol' =\n preset === 'cryptocontrol' ? 'cryptocontrol' : mode === 'dark' ? 'dark' : 'light'\n\n // Get override colors for the active mode\n const overrideColors = mode === 'dark'\n ? config?.overrides?.dark?.colors\n : config?.overrides?.light?.colors\n\n const customTheme = overrideColors ? { colors: overrideColors } : undefined\n\n return { providerTheme, customTheme }\n}\n\nexport interface DeframeComponentsProviderProps {\n /** Theme preset: 'light' | 'dark' | 'cryptocontrol' (legacy) */\n theme?: string\n /** Structured theme configuration (preferred) */\n themeConfig?: DeframeThemeConfig\n /** Custom theme colors that override the preset */\n customTheme?: DeframeTheme\n /** Optional extra className applied to the `.deframe-widget` root */\n className?: string\n /** Child components */\n children: React.ReactNode\n}\n\nexport default function DeframeComponentsProvider ({\n theme = 'light',\n themeConfig,\n customTheme,\n className,\n children\n}: DeframeComponentsProviderProps) {\n // Track system color mode for 'auto' mode\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => getSystemColorMode())\n\n // Listen for system color mode changes when using 'auto' mode\n useEffect(() => {\n const needsSystem = themeConfig?.mode === 'auto'\n if (!needsSystem || typeof window === 'undefined' || !window.matchMedia) return\n\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const handler = () => setSystemMode(mq.matches ? 'dark' : 'light')\n handler()\n mq.addEventListener?.('change', handler)\n return () => mq.removeEventListener?.('change', handler)\n }, [themeConfig?.mode])\n\n // Resolve the final theme values\n const resolvedTheme = useMemo(() => {\n // If using new themeConfig, resolve it\n if (themeConfig) {\n return resolveThemeConfig(themeConfig, systemMode)\n }\n\n // Legacy: use theme string directly\n return {\n providerTheme: theme as 'light' | 'dark' | 'cryptocontrol',\n customTheme\n }\n }, [themeConfig, theme, customTheme, systemMode])\n\n const themeClass = resolvedTheme.providerTheme === 'light' ? '' : resolvedTheme.providerTheme\n const colorScheme = resolvedTheme.providerTheme === 'light' ? 'light' : 'dark'\n\n // Convert custom theme to CSS variables\n const customCSSVars = themeToCSS(resolvedTheme.customTheme)\n\n return (\n <div\n className={twMerge('deframe-widget', themeClass, className)}\n style={{ colorScheme, ...customCSSVars }}\n >\n {children}\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/stories/buttons/action-button/ActionButton.tsx","../src/stories/buttons/percentage-button/PercentageButton.tsx","../src/stories/buttons/primary-button/PrimaryButton.tsx","../src/stories/buttons/secondary-button/SecondaryButton.tsx","../src/stories/buttons/tertiary-button/TertiaryButton.tsx","../src/stories/texts/Link.tsx","../src/stories/inputs/Input.tsx","../src/stories/lists/List.tsx","../src/stories/lists/wallet-list/WalletListContainer.tsx","../src/stories/texts/Text.tsx","../src/stories/texts/TextAccent.tsx","../src/stories/texts/TextBody.tsx","../src/stories/texts/TextHeading.tsx","../src/stories/texts/Title.tsx","../src/stories/lists/wallet-list/WalletList.tsx","../src/stories/lists/wallet-list/WalletItem.tsx","../src/stories/currency/Currency.tsx","../src/stories/tabs/Tabs.tsx","../src/stories/select/Select.tsx","../src/stories/loading/Skeleton.tsx","../src/stories/banner/BannerNotification.tsx","../src/stories/address/AddressDisplay.tsx","../src/stories/details/SummaryDetails.tsx","../src/stories/details/SummaryDetailsCryptoControlV2.tsx","../src/stories/action-sheet/ActionSheet.tsx","../src/stories/providers/types.ts","../src/stories/providers/DeframeComponentsProvider.tsx","../src/stories/info-display/InfoRow.tsx","../src/stories/info-display/InfoLabel.tsx","../src/stories/info-display/InfoValue.tsx","../src/stories/info-display/InfoRowWithIcon.tsx","../src/stories/info-display/InfoRowIconLabel.tsx","../src/stories/info-display/InfoRowIconValue.tsx","../src/stories/info-display/CollapsibleInfoRow.tsx","../src/stories/layout/BackgroundContainer.tsx","../src/stories/layout/SectionCard.tsx","../src/stories/layout/Navbar.tsx","../src/stories/layout/FlexCol.tsx","../src/stories/layout/FlexRow.tsx","../src/stories/layout/ScrollableContent.tsx","../src/stories/details-header/DetailsHeader.tsx","../src/stories/close-button/CloseButton.tsx","../src/stories/badges/HighRiskBadge.tsx","../src/stories/badges/MediumRiskBadge.tsx","../src/stories/badges/LowRiskBadge.tsx","../src/stories/history-details/HistoryDetailsComponents.tsx","../src/stories/history-details/HistoryDepositDetailsView.tsx","../src/stories/history-details/HistoryWithdrawDetailsView.tsx","../src/stories/swap-network-selector/SwapNetworkSelectorView.tsx","../src/stories/swap-quote-header/SwapQuoteHeaderView.tsx","../src/stories/swap-amount-input/SwapAmountInputView.tsx","../src/stories/swap-output-amount/SwapOutputAmountView.tsx","../src/stories/swap-quote-errors/SwapQuoteErrorsView.tsx","../src/stories/swap-slippage-tolerance-buttons/SwapSlippageToleranceButtonsView.tsx","../src/stories/swap-token-selector/SwapTokenSelectorView.tsx","../src/stories/swap-quote-blockchain-costs/SwapQuoteBlockchainCostsView.tsx","../src/stories/choose-strategy-actionsheet/ChooseAStrategyActionsheetView.tsx","../src/stories/strategy-details/StrategyDetailsView.tsx"],"names":["twMerge","jsx","React","React2","React3","React4","jsxs","React5","motion","React6","AnimatePresence","MdInfoOutline","MdWarningAmber","MdErrorOutline","MdCheckCircleOutline","React7","MdClose","React8","React9","React10","useState","useEffect","_a","useMemo","HiChevronUp","HiChevronDown","gapClasses","HiChevronLeft","HiXMark","Fragment","HiArrowRight"],"mappings":"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","file":"index.js","sourcesContent":["import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function ActionButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const getStyles = () => {\n if (disabled) {\n return {\n container:\n 'flex-1 h-12 rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden bg-bg-muted dark:bg-bg-muted-dark',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2',\n text: 'opacity-state-disabled-content text-center justify-center text-text-disabled dark:text-text-disabled-dark text-sm font-semibold font-poppins leading-5',\n }\n }\n return {\n container:\n 'flex-1 h-12 bg-brand-primary rounded inline-flex flex-col justify-center items-center gap-2 overflow-hidden hover:shadow-md transition-shadow duration-200',\n inner:\n 'self-stretch flex-1 pl-4 pr-6 py-2.5 inline-flex justify-center items-center gap-2 hover:opacity-90 focus:opacity-85 active:opacity-85 transition-opacity duration-200',\n text: 'text-center justify-center text-text-inverse text-sm font-semibold font-poppins leading-5',\n }\n }\n\n const styles = getStyles()\n\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n <div className={styles.inner}>\n <div className={styles.text}>{children}</div>\n </div>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction */\nexport default function PercentageButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n const containerClasses = twMerge(\n 'flex-1 px-2 py-1 rounded border border-border-subtle dark:border-border-subtle-dark bg-bg-muted dark:bg-bg-muted-dark text-text-secondary dark:text-text-secondary-dark text-sm font-semibold font-poppins leading-5 hover:border-border-default dark:hover:border-border-default-dark focus:outline-none focus:ring-2 focus:ring-brand-primary',\n disabled && 'cursor-not-allowed',\n className\n )\n\n return (\n <button\n type={type}\n className={containerClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Primary UI component for user interaction - uses brand-primary color for theming */\nexport default function PrimaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]'\n ].join(' ')\n\n const stateClasses = {\n /** enabled state */\n enabled: [\n 'hover:opacity-90',\n 'text-[var(--deframe-widget-color-text-primary)]',\n 'bg-[var(--deframe-widget-color-brand-primary)]',\n 'border-[color:var(--deframe-widget-color-border-primary)]',\n 'cursor-pointer'\n ].join(' '),\n /** disabled state */\n disabled: [\n 'text-[var(--deframe-widget-color-text-primary-disabled)]',\n 'bg-[var(--deframe-widget-color-brand-primary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-primary-disabled)]',\n 'cursor-not-allowed'\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='primary-button'\n data-test-id='primary-button'\n aria-label='primary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Secondary UI component for user interaction - outline style using brand-primary color */\nexport default function SecondaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'border-solid border-[length:var(--deframe-widget-size-border-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-secondary)]',\n 'border-[color:var(--deframe-widget-color-border-secondary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-secondary-disabled)]',\n 'border-[color:var(--deframe-widget-color-border-secondary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='secondary-button'\n data-test-id='secondary-button'\n aria-label='secondary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { ButtonProps } from '../index'\n\n/** Tertiary UI component for user interaction - ghost style using brand-tertiary color */\nexport default function TertiaryButton ({\n children,\n disabled = false,\n className = '',\n type = 'button',\n ...props\n}: ButtonProps) {\n /** base button classes */\n const baseClasses = [\n /** layout */\n 'overflow-hidden w-full flex items-center justify-center transition-all duration-200',\n /** typography */\n 'font-[var(--deframe-widget-font-family)]',\n '[font-size:var(--deframe-widget-font-size-md)]',\n '[line-height:var(--deframe-widget-font-leading-md)]',\n '[font-weight:var(--deframe-widget-font-weight-semibold)]',\n /** spacing */\n 'px-[var(--deframe-widget-size-padding-x-xl)]',\n 'py-[var(--deframe-widget-size-padding-y-md)]',\n /** container */\n 'bg-transparent border-none',\n 'rounded-[var(--deframe-widget-size-radius-xs)]',\n 'gap-[var(--deframe-widget-size-gap-sm)]',\n ].join(' ')\n\n /** state classes map */\n const stateClasses = {\n enabled: [\n 'text-[color:var(--deframe-widget-color-brand-tertiary)]',\n 'hover:opacity-90',\n 'cursor-pointer',\n ].join(' '),\n disabled: [\n 'text-[color:var(--deframe-widget-color-text-tertiary-disabled)]',\n 'cursor-not-allowed',\n ].join(' '),\n } as const\n\n /** button classes merge */\n const buttonClasses = twMerge(\n baseClasses,\n stateClasses[disabled ? 'disabled' : 'enabled'],\n className\n )\n\n return (\n <button\n data-slot='tertiary-button'\n data-test-id='tertiary-button'\n aria-label='tertiary action'\n type={type}\n className={buttonClasses}\n disabled={disabled}\n {...props}\n >\n {children}\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { LinkProps } from './index'\n\n/** Link component for navigation and external links */\nexport default function Link ({\n children,\n href,\n className = '',\n target = '_self',\n ...props\n}: LinkProps) {\n const styles = {\n link: 'text-sm font-medium font-poppins leading-5 cursor-pointer',\n }\n\n const linkClasses = twMerge(styles.link, className)\n\n return (\n <a\n href={href}\n target={target}\n className={linkClasses}\n rel={target === '_blank' ? 'noopener noreferrer' : undefined}\n {...props}\n >\n {children}\n </a>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport type { InputProps } from './index'\nimport Link from '../texts/Link'\n\nexport default function Input ({\n label,\n error,\n placeholder,\n type = 'text',\n repassword = 'Forgot password?',\n disabled,\n className,\n ...props\n}: InputProps) {\n const hasError = !!error\n\n const inputClasses = twMerge(\n 'w-full px-4 py-2 rounded',\n 'text-white placeholder-gray-400 text-base font-poppins',\n hasError\n ? 'border-red-500'\n : disabled\n ? 'border-gray-600 opacity-60'\n : 'border-gray-500',\n className\n )\n\n const labelClasses = 'block mb-1 text-xs text-white font-poppins'\n\n return (\n <div>\n {label && <label className={labelClasses}>{label}</label>}\n <input\n type={type}\n placeholder={placeholder}\n disabled={disabled}\n className={inputClasses}\n {...props}\n />\n {type === 'password' && (\n <div className='text-right'>\n <Link href='#'>{repassword}</Link>\n </div>\n )}\n {error && <p className='mt-1 text-xs text-red-500'>{error}</p>}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ListItemProps {\n children: React.ReactNode;\n /**\n * Applies to the inner content wrapper\n */\n className?: string;\n /**\n * Applies to the outer bordered container\n */\n containerClassName?: string;\n onClick?: () => void;\n}\n\nexport const ListItem: React.FC<ListItemProps> = ({\n children,\n className,\n containerClassName,\n onClick,\n}) => {\n const containerClasses = twMerge(\n 'self-stretch min-h-16 relative rounded border border-border-default text-white dark:border-border-default-dark flex flex-col justify-center items-center hover:border-border-strong dark:hover:border-border-strong-dark transition-colors bg-bg-subtle dark:bg-bg-subtle-dark',\n onClick && 'cursor-pointer',\n containerClassName\n )\n\n return (\n <div className={containerClasses} onClick={onClick}>\n <div\n className={twMerge(\n 'self-stretch inline-flex justify-between items-center gap-md px-4 py-2 text-white',\n className\n )}\n >\n {children}\n </div>\n </div>\n )\n}\n\nexport const ListItemLeftSide: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div\n className={twMerge('flex justify-center items-center text-white', className)}\n >\n {children}\n </div>\n )\n}\n\nexport const ListItemContent: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div\n className={twMerge(\n 'flex-1 self-stretch inline-flex flex-col justify-center items-start overflow-hidden text-white',\n className\n )}\n >\n {children}\n </div>\n )\n}\n\nexport const ListItemRightSide: React.FC<{\n children: React.ReactNode;\n className?: string;\n}> = ({ children, className }) => {\n return (\n <div\n className={twMerge(\n 'flex flex-col justify-start items-end text-white',\n className\n )}\n >\n {children}\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { ReactNode } from 'react'\n\nexport interface WalletListContainerProps {\n /** Child components (typically WalletItem components) */\n children: ReactNode;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * WalletListContainer - Container wrapper for wallet list items\n * Provides consistent spacing and layout for wallet options\n */\nexport default function WalletListContainer ({\n children,\n className,\n}: WalletListContainerProps) {\n return (\n <div className={twMerge('flex flex-col gap-4', className)}>\n {children}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface TextProps extends React.HTMLAttributes<HTMLElement> {\n as?: keyof React.JSX.IntrinsicElements\n variantClass?: string\n}\n\n/**\n * Base Text component used internally by other text variants.\n * Handles tag selection, base font, and class merging.\n */\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n (\n { as: Component = 'p', variantClass, className, children, ...props },\n ref\n ) => {\n return React.createElement(\n Component,\n {\n ref,\n className: twMerge('font-poppins', variantClass, className),\n ...props,\n },\n children\n )\n }\n)\n\nText.displayName = 'Text'\nexport default Text\n","import * as React from 'react'\nimport Text from './Text'\n\nconst accentVariants = {\n 'accent-large': 'text-[15px] leading-[140%] font-semibold',\n 'accent-medium': 'text-[14px] leading-[140%] font-semibold',\n 'accent-small': 'text-[12px] leading-[140%] font-semibold',\n} as const\n\nexport interface TextAccentProps extends React.HTMLAttributes<HTMLElement> {\n variant?: keyof typeof accentVariants\n as?: keyof React.JSX.IntrinsicElements\n}\n\nconst TextAccent = React.forwardRef<HTMLElement, TextAccentProps>(\n ({ variant = 'accent-medium', as = 'span', ...props }, ref) => {\n const variantClass = accentVariants[variant]\n return <Text ref={ref} as={as} variantClass={variantClass} {...props} />\n }\n)\n\nTextAccent.displayName = 'TextAccent'\nexport default TextAccent\n","import * as React from 'react'\nimport Text from './Text'\n\nconst bodyVariants = {\n 'text-large': 'text-[15px] leading-[140%] font-normal',\n 'text-medium': 'text-[14px] leading-[140%] font-normal',\n 'text-small': 'text-[12px] leading-[140%] font-normal',\n} as const\n\nexport interface TextBodyProps extends React.HTMLAttributes<HTMLElement> {\n variant?: keyof typeof bodyVariants\n as?: keyof React.JSX.IntrinsicElements\n}\n\nconst TextBody = React.forwardRef<HTMLElement, TextBodyProps>(\n ({ variant = 'text-medium', as = 'p', ...props }, ref) => {\n const variantClass = bodyVariants[variant]\n return <Text ref={ref} as={as} variantClass={variantClass} {...props} />\n }\n)\n\nTextBody.displayName = 'TextBody'\nexport default TextBody\n","import * as React from 'react'\nimport Text from './Text'\n\nconst headingVariants = {\n 'h-large': 'text-[56px] leading-[100%] tracking-[0] font-extrabold',\n h1: 'text-[40px] leading-[110%] font-extrabold',\n h2: 'text-[28px] leading-[130%] font-extrabold',\n h3: 'text-[22px] leading-[120%] font-extrabold',\n h4: 'text-[18px] leading-[120%] font-extrabold',\n h5: 'text-[16px] leading-[120%] font-bold',\n} as const\n\nexport interface TextHeadingProps extends React.HTMLAttributes<HTMLElement> {\n variant?: keyof typeof headingVariants\n as?: keyof React.JSX.IntrinsicElements\n}\n\nconst TextHeading = React.forwardRef<HTMLElement, TextHeadingProps>(\n ({ variant = 'h2', as, ...props }, ref) => {\n const variantClass = headingVariants[variant]\n return (\n <Text\n ref={ref}\n as={variant === 'h-large' ? 'h1' : variant}\n variantClass={variantClass}\n {...props}\n />\n )\n }\n)\n\nTextHeading.displayName = 'TextHeading'\nexport default TextHeading\n","import TextHeading from './TextHeading'\nimport type { TextHeadingProps } from './TextHeading'\n\n/**\n * Title component for headings and page titles\n * This is an alias for TextHeading with h1 variant as default\n */\nexport default function Title ({\n variant = 'h1',\n ...props\n}: TextHeadingProps) {\n return <TextHeading variant={variant} {...props} />\n}\n","import { twMerge } from 'tailwind-merge'\nimport WalletListContainer from './WalletListContainer'\nimport {\n ListItem,\n ListItemContent,\n ListItemLeftSide,\n ListItemRightSide,\n} from '../List'\nimport { Text } from '../../texts'\n\nexport interface WalletOption {\n /** Unique identifier for the wallet */\n id: string;\n /** Display name of the wallet */\n name: string;\n /** Wallet icon - can be an image URL or React component */\n icon: string | React.ReactNode;\n /** Click handler for wallet selection */\n onClick?: () => void;\n}\n\nexport interface ConnectWalletListProps {\n /** List of wallet options */\n wallets: WalletOption[];\n /** Title text for the wallet connect screen */\n title?: string;\n /** Subtitle text for the wallet connect screen */\n subtitle?: string;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * ConnectWalletList - Displays a list of wallet options for connection\n * Includes title, subtitle, and clickable wallet items\n */\nexport default function ConnectWalletList ({\n wallets,\n className,\n}: ConnectWalletListProps) {\n const handleWalletClick = (wallet: WalletOption) => {\n wallet.onClick?.()\n }\n\n return (\n <div className={twMerge('w-full', className)}>\n <WalletListContainer>\n {wallets.map((wallet) => (\n <ListItem key={wallet.id} onClick={() => handleWalletClick(wallet)}>\n <ListItemLeftSide>\n {typeof wallet.icon === 'string'\n ? (\n <img\n src={wallet.icon}\n alt={wallet.name}\n className='w-10 h-10 rounded-full'\n />\n )\n : (\n wallet.icon\n )}\n </ListItemLeftSide>\n <ListItemContent>\n <Text>{wallet.name}</Text>\n </ListItemContent>\n <ListItemRightSide>\n {/* Chevron */}\n <svg\n className='flex-shrink-0 w-5 h-5 text-gray-400'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </ListItemRightSide>\n </ListItem>\n ))}\n </WalletListContainer>\n </div>\n )\n}\n","import { twMerge } from 'tailwind-merge'\n\nexport interface WalletItemProps {\n /** Unique identifier for the wallet */\n id: string;\n /** Display name of the wallet */\n name: string;\n /** Wallet icon - can be an image URL or React component */\n icon: string | React.ReactNode;\n /** Click handler for wallet selection */\n onClick?: () => void;\n /** Additional CSS class names */\n className?: string;\n}\n\n/**\n * WalletItem - Individual wallet button component\n * Displays a clickable wallet option with icon, name, and chevron\n */\nexport default function WalletItem ({\n id,\n name,\n icon,\n onClick,\n className,\n}: WalletItemProps) {\n return (\n <button\n key={id}\n onClick={onClick}\n className={twMerge(\n 'w-full flex items-center gap-4 p-5',\n 'bg-[#1E1E1E] rounded-2xl',\n 'transition-all duration-200',\n 'hover:bg-[#2C2C2C] active:scale-[0.98]',\n 'focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50',\n className\n )}\n >\n {/* Icon */}\n <div className='flex-shrink-0 w-12 h-12 rounded-full overflow-hidden bg-white flex items-center justify-center'>\n {typeof icon === 'string'\n ? (\n <img\n src={icon}\n alt={name}\n className='w-full h-full object-cover'\n />\n )\n : (\n icon\n )}\n </div>\n\n {/* Wallet Name */}\n <span className='flex-1 text-left text-[15px] md:text-[17px] font-medium text-white'>\n {name}\n </span>\n\n {/* Chevron */}\n <svg\n className='flex-shrink-0 w-5 h-5 text-gray-400'\n fill='none'\n viewBox='0 0 24 24'\n stroke='currentColor'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M9 5l7 7-7 7'\n />\n </svg>\n </button>\n )\n}\n","import { twMerge } from 'tailwind-merge'\nimport { CurrencyProps, CurrencyType, FiatProps } from '.'\n\n// Currency configuration\nconst CURRENCY_CONFIG = {\n symbols: {\n USD: '$',\n BRL: 'R$',\n EUR: '€',\n BTC: '₿',\n ETH: 'Ξ',\n USDC: '$',\n USDT: '$',\n } as Record<CurrencyType, string>,\n labels: {\n USD: 'USD',\n BRL: 'BRL',\n EUR: 'EUR',\n BTC: 'BTC',\n ETH: 'ETH',\n USDC: 'USDC',\n USDT: 'USDT',\n } as Record<CurrencyType, string>,\n}\n\n// Style configuration\nconst STYLE_CONFIG = {\n alignment: {\n left: 'items-start',\n center: 'items-center',\n right: 'items-end',\n },\n size: {\n sm: { primary: 'text-3xl', secondary: 'text-sm', gap: 'gap-0.5' },\n md: { primary: 'text-5xl', secondary: 'text-base', gap: 'gap-1' },\n lg: { primary: 'text-6xl', secondary: 'text-lg', gap: 'gap-1' },\n },\n}\n\n/** Flexible currency display component supporting fiat and crypto */\nexport default function Currency (props: CurrencyProps | FiatProps) {\n // Normalize props: convert FiatProps to CurrencyProps format\n const normalizedProps: Required<\n Omit<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'>\n > &\n Pick<CurrencyProps, 'secondaryAmount' | 'secondaryCurrency'> =\n 'usdValue' in props\n ? {\n amount: props.amount,\n currency: 'USD',\n secondaryAmount: props.usdValue,\n secondaryCurrency: undefined,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: false,\n showLabel: false,\n className: props.className ?? '',\n }\n : {\n amount: props.amount,\n currency: props.currency ?? 'USD',\n secondaryAmount: props.secondaryAmount,\n secondaryCurrency: props.secondaryCurrency,\n align: props.align ?? 'right',\n size: props.size ?? 'lg',\n showSymbol: props.showSymbol ?? true,\n showLabel: props.showLabel ?? false,\n className: props.className ?? '',\n }\n\n const {\n amount,\n currency,\n secondaryAmount,\n secondaryCurrency,\n align,\n size,\n showSymbol,\n showLabel,\n className,\n } = normalizedProps\n\n // Format currency value\n const formatAmount = (\n value: string,\n curr: CurrencyType,\n displaySymbol: boolean\n ): string => {\n if (!displaySymbol && !showLabel) return value\n\n const symbol = displaySymbol ? CURRENCY_CONFIG.symbols[curr] : ''\n const label = showLabel ? ` ${CURRENCY_CONFIG.labels[curr]}` : ''\n\n // Crypto currencies: no space between symbol and value\n if (\n ['BTC', 'ETH'].includes(curr) &&\n !value.includes('.') &&\n !value.includes(',')\n ) {\n return `${symbol}${value}${label}`\n }\n\n return `${symbol} ${value}${label}`.trim()\n }\n\n return (\n <div\n className={twMerge(\n 'flex flex-col',\n STYLE_CONFIG.alignment[align],\n STYLE_CONFIG.size[size].gap,\n className\n )}\n >\n {/* Primary amount */}\n <div\n className={twMerge(\n 'font-bold text-text-primary dark:text-text-primary-dark font-poppins',\n STYLE_CONFIG.size[size].primary\n )}\n >\n {formatAmount(amount, currency, showSymbol)}\n </div>\n\n {/* Secondary amount (optional) */}\n {secondaryAmount && (\n <div\n className={twMerge(\n 'text-text-secondary dark:text-text-secondary-dark font-poppins',\n STYLE_CONFIG.size[size].secondary\n )}\n >\n {secondaryCurrency\n ? formatAmount(secondaryAmount, secondaryCurrency, true)\n : secondaryAmount}\n </div>\n )}\n </div>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { motion } from 'framer-motion'\n\n// ============================================================================\n// Context\n// ============================================================================\n\nexport type TabsVariant = 'primary' | 'secondary' | 'default' | 'light' | 'medium' | 'dark' | 'header'\n\ninterface TabsContextValue {\n value: string\n onValueChange: (value: string) => void\n variant: TabsVariant\n}\n\nconst TabsContext = React.createContext<TabsContextValue | undefined>(\n undefined\n)\n\nconst useTabs = () => {\n const ctx = React.useContext(TabsContext)\n if (!ctx) { throw new Error('Tabs compound components must be used within <Tabs />') }\n return ctx\n}\n\n// ============================================================================\n// Tabs (Main Component)\n// ============================================================================\n\nexport interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {\n value?: string\n onValueChange?: (value: string) => void\n defaultValue?: string\n variant?: TabsVariant\n}\n\nexport const Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n value: controlledValue,\n defaultValue = '',\n onValueChange,\n variant = 'secondary',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internal, setInternal] = React.useState(defaultValue)\n const isControlled = controlledValue !== undefined\n const activeValue = isControlled ? controlledValue : internal\n\n const handleChange = (v: string) => {\n if (!isControlled) setInternal(v)\n onValueChange?.(v)\n }\n\n return (\n <TabsContext.Provider\n value={{\n value: activeValue,\n onValueChange: handleChange,\n variant,\n }}\n >\n <div ref={ref} className={twMerge('w-full', className)} {...props}>\n {children}\n </div>\n </TabsContext.Provider>\n )\n }\n)\nTabs.displayName = 'Tabs'\n\n// ============================================================================\n// TabsList\n// ============================================================================\n\nexport interface TabsListProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const TabsList = React.forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useTabs()\n\n // Header variant: full width, space between tabs, minimal padding\n if (variant === 'header') {\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center justify-between pt-2',\n className\n )}\n style={{\n paddingLeft: 'var(--spacing-md, 16px)',\n paddingRight: 'var(--spacing-md, 16px)',\n backgroundColor: 'var(--color-bg-default, transparent)'\n }}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n // Default/other variants\n return (\n <div\n ref={ref}\n role='tablist'\n className={twMerge(\n 'relative w-full flex items-center bg-transparent border-b border-border-default dark:border-border-default-dark',\n variant === 'primary' ? 'h-[72px] gap-6' : 'h-12',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsList.displayName = 'TabsList'\n\n// ============================================================================\n// TabsTrigger\n// ============================================================================\n\nexport interface TabsTriggerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n value: string\n icon?: React.ReactNode\n}\n\nexport const TabsTrigger = React.forwardRef<HTMLButtonElement, TabsTriggerProps>(\n (\n {\n value,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const { value: activeValue, onValueChange, variant } = useTabs()\n const isActive = activeValue === value\n\n // Header variant uses inline styles for colors to ensure CSS variables work\n const headerStyle = variant === 'header'\n ? {\n color: isActive\n ? 'var(--color-brand-primary)'\n : 'var(--color-text-secondary)',\n ...style\n }\n : style\n\n return (\n <button\n ref={ref}\n role='tab'\n aria-selected={isActive}\n onClick={() => onValueChange(value)}\n className={twMerge(\n 'relative inline-flex flex-col items-center justify-center whitespace-nowrap font-poppins transition-colors cursor-pointer disabled:pointer-events-none disabled:opacity-50 outline-none',\n variant === 'header'\n ? 'flex-1 text-sm font-semibold py-3'\n : variant === 'primary'\n ? 'h-[72px] text-base font-medium px-0 pb-3 pt-2 flex-none'\n : 'h-12 text-[12px] font-semibold px-4 flex-none',\n variant !== 'header' && (isActive ? 'text-brand-primary' : 'text-text-secondary dark:text-text-secondary-dark hover:text-text-primary dark:hover:text-text-primary-dark'),\n className\n )}\n style={headerStyle}\n {...props}\n >\n <span>{children}</span>\n {isActive && variant === 'header' && (\n <motion.span\n layoutId='header-tab-indicator'\n className='absolute rounded-t-full'\n style={{\n bottom: 0,\n left: 0,\n right: 0,\n marginLeft: 'auto',\n marginRight: 'auto',\n width: '3.5rem',\n height: '3px',\n backgroundColor: 'var(--color-brand-primary)'\n }}\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n {isActive && variant !== 'header' && (\n <motion.span\n layoutId='tab-indicator'\n className='absolute bottom-0 left-0 right-0 h-0.5 bg-brand-primary z-10'\n transition={{ type: 'spring', bounce: 0.2, duration: 0.6 }}\n />\n )}\n </button>\n )\n }\n)\nTabsTrigger.displayName = 'TabsTrigger'\n\n// ============================================================================\n// TabsContent\n// ============================================================================\n\nexport interface TabsContentProps extends React.HTMLAttributes<HTMLDivElement> {\n value: string\n}\n\nexport const TabsContent = React.forwardRef<HTMLDivElement, TabsContentProps>(\n ({ value, className, children, ...props }, ref) => {\n const { value: activeValue, variant } = useTabs()\n if (activeValue !== value) return null\n\n return (\n <div\n ref={ref}\n role='tabpanel'\n className={twMerge(\n 'focus-visible:outline-none',\n variant === 'primary' || variant === 'header' ? 'mt-0' : 'mt-6',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nTabsContent.displayName = 'TabsContent'\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SelectProps {\n value: string\n onValueChange: (value: string) => void\n disabled?: boolean\n children: React.ReactNode\n className?: string\n}\n\nexport interface SelectTriggerProps {\n placeholder?: string\n className?: string\n children?: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _disabled?: boolean\n _onToggle?: () => void\n}\n\nexport interface SelectContentProps {\n className?: string\n children: React.ReactNode\n // Internal props (passed by Select)\n _isOpen?: boolean\n _value?: string\n _onSelect?: (value: string) => void\n _highlightedIndex?: number\n _setHighlightedIndex?: (index: number) => void\n}\n\nexport interface SelectItemProps {\n value: string\n disabled?: boolean\n className?: string\n children: React.ReactNode\n // Internal props (passed by SelectContent)\n _index?: number\n _isSelected?: boolean\n _isHighlighted?: boolean\n _onSelect?: (value: string) => void\n _onHighlight?: (index: number) => void\n}\n\n// ============================================================================\n// ChevronDownIcon\n// ============================================================================\n\nconst ChevronDownIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n className={className}\n viewBox='0 0 20 20'\n fill='currentColor'\n aria-hidden='true'\n >\n <path\n fillRule='evenodd'\n d='M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z'\n clipRule='evenodd'\n />\n </svg>\n)\n\n// ============================================================================\n// Select\n// ============================================================================\n\nexport const Select: React.FC<SelectProps> = ({\n value,\n onValueChange,\n disabled = false,\n children,\n className,\n}) => {\n const [isOpen, setIsOpen] = React.useState(false)\n const [highlightedIndex, setHighlightedIndex] = React.useState(-1)\n const containerRef = React.useRef<HTMLDivElement>(null)\n\n const handleToggle = React.useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev)\n if (!isOpen) setHighlightedIndex(0)\n }\n }, [disabled, isOpen])\n\n const handleSelect = React.useCallback(\n (newValue: string) => {\n onValueChange(newValue)\n setIsOpen(false)\n setHighlightedIndex(-1)\n },\n [onValueChange]\n )\n\n // Handle click outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside)\n return () => document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen])\n\n // Handle escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n setIsOpen(false)\n setHighlightedIndex(-1)\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen])\n\n // Clone children and inject internal props\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectTrigger) {\n return React.cloneElement(child as React.ReactElement<SelectTriggerProps>, {\n _isOpen: isOpen,\n _disabled: disabled,\n _onToggle: handleToggle,\n })\n }\n\n if (child.type === SelectContent) {\n return React.cloneElement(child as React.ReactElement<SelectContentProps>, {\n _isOpen: isOpen,\n _value: value,\n _onSelect: handleSelect,\n _highlightedIndex: highlightedIndex,\n _setHighlightedIndex: setHighlightedIndex,\n })\n }\n\n return child\n })\n\n return (\n <div ref={containerRef} className={twMerge('relative', className)}>\n {enhancedChildren}\n </div>\n )\n}\n\nSelect.displayName = 'Select'\n\n// ============================================================================\n// SelectTrigger\n// ============================================================================\n\nexport const SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n (\n {\n placeholder = 'Select...',\n className,\n children,\n _isOpen,\n _disabled,\n _onToggle,\n },\n ref\n ) => {\n const hasChildren = React.Children.count(children) > 0\n\n return (\n <button\n ref={ref}\n type='button'\n onClick={_onToggle}\n disabled={_disabled}\n aria-haspopup='listbox'\n aria-expanded={_isOpen}\n className={twMerge(\n 'w-full flex items-center justify-between gap-2',\n 'bg-[var(--color-bg-subtle,#1a1a1a)] border border-[var(--color-border-default,#333)] rounded px-3 py-1.5',\n 'text-sm text-[var(--color-text-primary,#fff)] text-left',\n 'transition-colors cursor-pointer',\n 'hover:border-[var(--color-border-strong,#555)]',\n 'focus:outline-none focus:ring-2 focus:ring-[var(--color-brand-primary,#7C3AED)]/50 focus:border-[var(--color-brand-primary,#7C3AED)]',\n _disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n <span\n className={\n !hasChildren\n ? 'text-[var(--color-text-tertiary,#888)]'\n : undefined\n }\n >\n {hasChildren ? children : placeholder}\n </span>\n <ChevronDownIcon\n className={twMerge(\n 'w-4 h-4 text-[var(--color-text-secondary,#999)] transition-transform',\n _isOpen && 'rotate-180'\n )}\n />\n </button>\n )\n }\n)\n\nSelectTrigger.displayName = 'SelectTrigger'\n\n// ============================================================================\n// SelectContent\n// ============================================================================\n\nexport const SelectContent = React.forwardRef<HTMLUListElement, SelectContentProps>(\n (\n {\n className,\n children,\n _isOpen,\n _value,\n _onSelect,\n _highlightedIndex,\n _setHighlightedIndex,\n },\n ref\n ) => {\n const listRef = React.useRef<HTMLUListElement>(null)\n\n // Merge refs\n const mergedRef = React.useCallback(\n (node: HTMLUListElement | null) => {\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref) {\n ref.current = node\n }\n ;(listRef as React.MutableRefObject<HTMLUListElement | null>).current = node\n },\n [ref]\n )\n\n // Scroll highlighted option into view\n React.useEffect(() => {\n if (_isOpen && _highlightedIndex !== undefined && _highlightedIndex >= 0 && listRef.current) {\n const highlightedElement = listRef.current.children[_highlightedIndex] as HTMLElement\n if (highlightedElement) {\n highlightedElement.scrollIntoView({ block: 'nearest' })\n }\n }\n }, [_isOpen, _highlightedIndex])\n\n // Clone children and inject internal props with index\n let itemIndex = 0\n const enhancedChildren = React.Children.map(children, (child) => {\n if (!React.isValidElement(child)) return child\n\n if (child.type === SelectItem) {\n const currentIndex = itemIndex++\n const itemProps = child.props as SelectItemProps\n return React.cloneElement(child as React.ReactElement<SelectItemProps>, {\n _index: currentIndex,\n _isSelected: _value === itemProps.value,\n _isHighlighted: _highlightedIndex === currentIndex,\n _onSelect,\n _onHighlight: _setHighlightedIndex,\n })\n }\n\n return child\n })\n\n const contentVariants = {\n hidden: { opacity: 0, y: -8 },\n visible: {\n opacity: 1,\n y: 0,\n transition: { type: 'spring' as const, damping: 25, stiffness: 400 },\n },\n exit: { opacity: 0, y: -8, transition: { duration: 0.1 } },\n }\n\n return (\n <AnimatePresence mode='wait'>\n {_isOpen && (\n <motion.ul\n ref={mergedRef}\n role='listbox'\n variants={contentVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n className={twMerge(\n 'absolute z-50 w-full mt-1',\n 'bg-[var(--color-bg-raised,#1f1f1f)] border border-[var(--color-border-default,#333)] rounded shadow-lg',\n 'max-h-60 overflow-auto',\n 'py-1',\n className\n )}\n >\n {enhancedChildren}\n </motion.ul>\n )}\n </AnimatePresence>\n )\n }\n)\n\nSelectContent.displayName = 'SelectContent'\n\n// ============================================================================\n// SelectItem\n// ============================================================================\n\nexport const SelectItem = React.forwardRef<HTMLLIElement, SelectItemProps>(\n (\n {\n value,\n disabled = false,\n className,\n children,\n _index,\n _isSelected,\n _isHighlighted,\n _onSelect,\n _onHighlight,\n },\n ref\n ) => {\n const handleClick = () => {\n if (!disabled && _onSelect) {\n _onSelect(value)\n }\n }\n\n const handleMouseEnter = () => {\n if (!disabled && _onHighlight && _index !== undefined) {\n _onHighlight(_index)\n }\n }\n\n return (\n <li\n ref={ref}\n role='option'\n aria-selected={_isSelected}\n aria-disabled={disabled}\n onClick={handleClick}\n onMouseEnter={handleMouseEnter}\n className={twMerge(\n 'px-3 py-2 text-sm cursor-pointer transition-colors',\n 'text-[var(--color-text-primary,#fff)]',\n _isSelected && 'text-[var(--color-text-highlight,#7C3AED)]',\n _isHighlighted && 'bg-[var(--color-bg-muted,#2a2a2a)]',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n {children}\n </li>\n )\n }\n)\n\nSelectItem.displayName = 'SelectItem'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Width of the skeleton block (px, %, rem, etc.) */\n width?: string | number;\n /** Height of the skeleton block (px, %, rem, etc.) */\n height?: string | number;\n /** Shape of the skeleton */\n variant?: 'rect' | 'circle' | 'text';\n /** Enables shimmer animation */\n shimmer?: boolean;\n /** Custom background color (Tailwind classes) */\n colorClass?: string;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n width = '100%',\n height = '1rem',\n variant = 'text',\n shimmer = true,\n className,\n style,\n ...props\n}) => {\n const defaultGradient =\n 'linear-gradient(25deg, #2C2C2C 0%, #2C2C2C 60%, #121212 100%)'\n\n return (\n <div\n className={twMerge(\n 'relative overflow-hidden animate-fade-in',\n variant === 'circle' ? 'rounded-full' : 'rounded',\n className\n )}\n style={{\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n background: defaultGradient,\n ...style,\n }}\n {...props}\n >\n {shimmer && (\n <div className='absolute inset-0 animate-shimmer bg-gradient-to-r from-transparent via-white/20 to-transparent dark:via-gray-600/30' />\n )}\n </div>\n )\n}\n\nSkeleton.displayName = 'Skeleton'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n MdInfoOutline,\n MdWarningAmber,\n MdErrorOutline,\n MdCheckCircleOutline,\n MdClose,\n} from 'react-icons/md'\n\nexport interface BannerNotificationProps\n extends React.HTMLAttributes<HTMLDivElement> {\n /** Type of notification - inline (default) or toast */\n type?: 'inline' | 'toast'\n /** Variant type that determines colors and icon */\n variant?: 'info' | 'warning' | 'error' | 'success'\n /** The title of the banner */\n title?: string\n /** The message to display in the banner */\n message: string\n /** Position for toast notifications */\n position?:\n | 'top-right'\n | 'top-left'\n | 'top-center'\n | 'bottom-right'\n | 'bottom-left'\n | 'bottom-center'\n /** Auto hide duration in milliseconds (default: 5000, set to 0 to disable) */\n autoHideDuration?: number\n /** Control visibility for toast notifications */\n show?: boolean\n /** Callback when notification is closed */\n onClose?: () => void\n /** Whether to show the icon (default: true) */\n showIcon?: boolean\n /** Custom icon to display */\n icon?: React.ReactNode\n}\n\nconst variantConfig = {\n info: { color: '#1890FF', icon: MdInfoOutline },\n warning: { color: '#F6A700', icon: MdWarningAmber },\n error: { color: '#FF4D4F', icon: MdErrorOutline },\n success: { color: '#2BA176', icon: MdCheckCircleOutline },\n}\n\nconst positionStyles = {\n 'top-right': 'top-4 right-4',\n 'top-left': 'top-4 left-4',\n 'top-center': 'top-4 left-1/2 -translate-x-1/2',\n 'bottom-right': 'bottom-4 right-4',\n 'bottom-left': 'bottom-4 left-4',\n 'bottom-center': 'bottom-4 left-1/2 -translate-x-1/2',\n}\n\nexport const BannerNotification: React.FC<BannerNotificationProps> = ({\n type = 'inline',\n variant = 'info',\n title,\n message,\n position = 'top-right',\n autoHideDuration = 5000,\n show = true,\n onClose,\n className,\n ...props\n}) => {\n const [isExiting, setIsExiting] = React.useState(false)\n const timerRef = React.useRef<NodeJS.Timeout | null>(null)\n\n const config = variantConfig[variant]\n const IconComponent = config.icon\n\n const handleClose = () => {\n setIsExiting(true)\n setTimeout(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n onClose?.()\n }, 300)\n }\n\n // Auto-hide for toast without useEffect\n if (type === 'toast' && show && autoHideDuration > 0 && !timerRef.current && !isExiting) {\n timerRef.current = setTimeout(() => {\n handleClose()\n }, autoHideDuration)\n }\n\n // Cleanup on unmount\n React.useEffect(() => {\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current)\n timerRef.current = null\n }\n }\n }, [])\n\n if (!show) return null\n\n // Inline: 33% opacity background, Toast: solid background\n const backgroundColor = type === 'inline' ? `${config.color}33` : config.color\n\n return (\n <div\n className={twMerge(\n 'flex items-start gap-3 p-3 rounded border transition-all duration-300',\n isExiting && 'opacity-0 -translate-y-2',\n className,\n type === 'toast' && 'fixed z-50 w-[clamp(18rem,40vw,30rem)] shadow-lg',\n type === 'toast' && positionStyles[position]\n )}\n style={{\n backgroundColor,\n borderColor: config.color,\n }}\n role='alert'\n {...props}\n >\n <div className='flex-shrink-0 text-2xl'>\n <IconComponent />\n </div>\n\n <div className='flex-1 min-w-0'>\n {title && (\n <div className='font-semibold text-sm mb-1'>\n {title}\n </div>\n )}\n <div className='text-sm'>\n {message}\n </div>\n </div>\n\n <button\n onClick={handleClose}\n className='flex-shrink-0 text-xl transition-opacity hover:opacity-70 cursor-pointer'\n aria-label='Close notification'\n >\n <MdClose />\n </button>\n </div>\n )\n}\n\nBannerNotification.displayName = 'BannerNotification'\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface AddressDisplayProps {\n /** The full address to display */\n address: string;\n /** Optional truncated display text shown instead of the full address */\n displayText?: string;\n /** Callback when copy button is clicked */\n onCopy?: (address: string) => void;\n /** Custom className for the container */\n className?: string;\n /** Custom className for the text */\n textClassName?: string;\n /** Show copy button */\n showCopyButton?: boolean;\n}\n\nexport const AddressDisplay: React.FC<AddressDisplayProps> = ({\n address,\n onCopy,\n className = '',\n textClassName = '',\n showCopyButton = true,\n}) => {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(address)\n setCopied(true)\n onCopy?.(address)\n\n // Reset copied state after 2 seconds\n setTimeout(() => setCopied(false), 2000)\n } catch (err) {\n console.error('Failed to copy address:', err)\n }\n }\n\n return (\n <div\n className={twMerge(\n 'bg-[#121212] rounded p-3 flex items-center justify-between gap-2 border border-gray-700',\n className\n )}\n >\n <TextBody\n className={twMerge(\n 'block w-full whitespace-nowrap overflow-hidden',\n textClassName\n )}\n >\n {address}\n </TextBody>\n {showCopyButton && (\n <button\n onClick={handleCopy}\n className='text-gray-400 hover:text-white transition-colors flex-shrink-0 cursor-pointer'\n aria-label='Copy address'\n >\n {copied\n ? (\n <svg\n className='w-5 h-5 text-green-500'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 13l4 4L19 7'\n />\n </svg>\n )\n : (\n <svg\n className='w-5 h-5'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z'\n />\n </svg>\n )}\n </button>\n )}\n </div>\n )\n}\n\nAddressDisplay.displayName = 'AddressDisplay'\n","import * as React from 'react'\nimport { TextBody } from '@/stories/texts'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface DetailItem {\n /** Label for the detail row */\n label: string;\n /** Value to display */\n value: string | React.ReactNode;\n /** Optional custom className for the value */\n valueClassName?: string;\n /** Optional custom className for the label */\n labelClassName?: string;\n}\n\nexport interface SummaryDetailsProps {\n /** Title displayed in the summary header */\n title: string;\n /** Array of detail items to render */\n items: DetailItem[];\n /** Whether the details are open by default */\n defaultOpen?: boolean;\n /** Custom className for the details container */\n className?: string;\n /** Custom className for the summary header */\n summaryClassName?: string;\n /** Custom className for the content area */\n contentClassName?: string;\n /** Show dividers between items */\n showDividers?: boolean;\n}\n\nexport const SummaryDetails: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n className={twMerge('bg-[#1A1A1A] rounded p-4 group', className)}\n open={defaultOpen}\n >\n {/* Summary Header */}\n <summary className={twMerge('cursor-pointer block ', summaryClassName)}>\n <div className='flex items-center justify-between'>\n <TextBody className='text-white font-medium'>{title}</TextBody>\n <svg\n className='w-5 h-5 text-gray-400 transition-transform duration-300 group-open:rotate-180'\n fill='none'\n stroke='currentColor'\n viewBox='0 0 24 24'\n aria-hidden='true'\n >\n <path\n strokeLinecap='round'\n strokeLinejoin='round'\n strokeWidth={2}\n d='M5 9l7 7 7-7'\n />\n </svg>\n </div>\n </summary>\n\n {/* Details Content */}\n <div\n className={twMerge(\n 'mt-4',\n showDividers && 'divide-y divide-[#2A2A2A]',\n contentClassName\n )}\n >\n {items.map((item, index) => (\n <div key={index} className='flex justify-between py-2'>\n <TextBody\n variant='text-small'\n className={twMerge('text-text-tertiary dark:text-text-tertiary-dark', item.labelClassName)}\n >\n {item.label}\n </TextBody>\n {typeof item.value === 'string'\n ? (\n <TextBody\n variant='text-small'\n className={twMerge('text-text-primary dark:text-text-primary-dark font-medium', item.valueClassName)}\n >\n {item.value}\n </TextBody>\n )\n : (\n <div className={item.valueClassName}>{item.value}</div>\n )}\n </div>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { type SummaryDetailsProps } from './SummaryDetails'\n\nexport const SummaryDetailsCryptoControlV2: React.FC<SummaryDetailsProps> = ({\n title,\n items,\n defaultOpen = false,\n className = '',\n summaryClassName = '',\n contentClassName = '',\n showDividers = true,\n}) => {\n return (\n <details\n data-test-id='summary-details-v2'\n data-slot='summary-details-v2'\n className={twMerge(\n 'bg-[var(--color-bg-subtle,#1a1a1a)] rounded-lg border border-border-default dark:border-border-default-dark p-4 w-full max-w-[320px] group',\n className\n )}\n open={defaultOpen}\n >\n {/* Header */}\n <summary\n data-test-id='summary-details-v2-summary'\n data-slot='summary-details-v2-summary'\n className={twMerge('cursor-pointer list-none', summaryClassName)}\n >\n <div className='flex items-center justify-between'>\n <span\n data-test-id='summary-details-v2-title'\n data-slot='summary-details-v2-title'\n className='text-[15px] font-semibold text-text-primary dark:text-text-primary-dark'\n >\n {title}\n </span>\n <svg\n data-test-id='summary-details-v2-chevron'\n data-slot='summary-details-v2-chevron'\n className='w-4 h-4 text-text-secondary dark:text-text-secondary-dark transition-transform duration-300 group-open:rotate-180 flex-shrink-0'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n aria-hidden='true'\n >\n <path strokeLinecap='round' strokeLinejoin='round' strokeWidth={2} d='M5 9l7 7 7-7' />\n </svg>\n </div>\n </summary>\n\n {/* Top divider */}\n <div\n data-test-id='summary-details-v2-top-divider'\n data-slot='summary-details-v2-top-divider'\n className='h-px bg-border-default dark:bg-border-default-dark mt-3'\n />\n\n {/* Rows */}\n <div\n data-test-id='summary-details-v2-content'\n data-slot='summary-details-v2-content'\n className={twMerge('mt-0', contentClassName)}\n >\n {items.map((item, i) => (\n <React.Fragment key={i}>\n <div\n data-test-id='summary-details-v2-row'\n data-slot='summary-details-v2-row'\n className='flex justify-between items-center py-[10px] gap-3'\n >\n <span\n data-test-id='summary-details-v2-row-label'\n data-slot='summary-details-v2-row-label'\n className={twMerge(\n 'text-[11px] font-medium uppercase tracking-[0.07em] text-text-tertiary dark:text-text-tertiary-dark flex-shrink-0',\n item.labelClassName\n )}\n >\n {item.label}\n </span>\n\n {typeof item.value === 'string'\n ? (\n <span\n data-test-id='summary-details-v2-row-value'\n data-slot='summary-details-v2-row-value'\n className={twMerge(\n 'text-[13px] font-semibold text-text-primary dark:text-text-primary-dark text-right',\n item.valueClassName\n )}\n >\n {item.value}\n </span>\n )\n : (\n <div\n data-test-id='summary-details-v2-row-value'\n data-slot='summary-details-v2-row-value'\n className={twMerge('text-right', item.valueClassName)}\n >\n {item.value}\n </div>\n )}\n </div>\n\n {showDividers && i < items.length - 1 && (\n <div\n data-test-id='summary-details-v2-row-divider'\n data-slot='summary-details-v2-row-divider'\n className='h-px bg-border-default dark:bg-border-default-dark'\n />\n )}\n </React.Fragment>\n ))}\n </div>\n </details>\n )\n}\n","import * as React from 'react'\nimport { motion, AnimatePresence } from 'framer-motion'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ActionSheetItem {\n id: string\n label: string\n icon?: React.ReactNode\n variant?: 'default' | 'destructive' | 'success'\n disabled?: boolean\n onClick?: () => void\n}\n\nexport interface ActionSheetProps {\n /** Unique identifier for this action sheet */\n id: string\n /** Current action sheet ID from state */\n currentActionSheetId?: string | null\n /** Whether the action sheet is open */\n isOpen?: boolean\n /** Function to close the action sheet */\n onClose?: () => void\n /** Custom content to render */\n children?: React.ReactNode\n /** Custom className for the container */\n className?: string\n /** Custom className for the content area */\n contentClassName?: string\n /** Position of the action sheet */\n position?: 'bottom' | 'center'\n /** Height of the sheet */\n height?: 'auto' | 'full' | 'half'\n /** Whether clicking the backdrop should close the sheet (default: true) */\n closeOnBackdropClick?: boolean\n /** Title displayed in the header */\n title?: string\n /** Description displayed below the title */\n description?: string\n /** List of action items to render */\n items?: ActionSheetItem[]\n /** Whether to show a cancel button (default: true) */\n showCancel?: boolean\n}\n\n/**\n * ActionSheet - A flexible bottom sheet / modal component\n *\n * Pure custom content mode for maximum flexibility.\n * Compose your content using existing library components.\n *\n * Features:\n * - Smooth framer-motion animations with spring physics\n * - Multiple height options (auto, full, half)\n * - Position options (bottom, center)\n * - Dark mode support via CSS custom properties\n * - Keyboard navigation (ESC to close)\n * - Backdrop click to dismiss\n * - ARIA labels for accessibility\n *\n * @example\n * <ActionSheet\n * id=\"token-selector\"\n * currentActionSheetId={currentId}\n * isOpen={isOpen}\n * height=\"full\"\n * onClose={handleClose}\n * >\n * <div className=\"flex flex-col h-full bg-black p-6\">\n * <h2>Select Token</h2>\n * <Input placeholder=\"Search here...\" />\n * <ListItem>...</ListItem>\n * </div>\n * </ActionSheet>\n */\nexport const ActionSheet: React.FC<ActionSheetProps> = ({\n id,\n currentActionSheetId,\n isOpen,\n onClose,\n children,\n className = '',\n contentClassName = '',\n position = 'bottom',\n height = 'auto',\n closeOnBackdropClick = true,\n title,\n description,\n items,\n showCancel = true,\n}) => {\n const isThisSheetActive = isOpen && currentActionSheetId === id\n\n React.useEffect(() => {\n if (isThisSheetActive) {\n // Prevent body scroll when action sheet is open\n document.body.style.overflow = 'hidden'\n } else {\n document.body.style.overflow = ''\n }\n\n return () => {\n document.body.style.overflow = ''\n }\n }, [isThisSheetActive])\n\n // Handle escape key\n React.useEffect(() => {\n if (!isThisSheetActive) return\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n onClose?.()\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isThisSheetActive, onClose])\n\n // Handle backdrop click\n const handleBackdropClick = (e: React.MouseEvent) => {\n if (closeOnBackdropClick && e.target === e.currentTarget) {\n onClose?.()\n }\n }\n\n // Animation variants\n const backdropVariants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n exit: { opacity: 0 },\n }\n\n const sheetVariants = {\n hidden: position === 'bottom' ? { y: '100%' } : { opacity: 0, scale: 0.95 },\n visible:\n position === 'bottom'\n ? {\n y: '0%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 1,\n scale: 1,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n exit:\n position === 'bottom'\n ? {\n y: '100%',\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n }\n : {\n opacity: 0,\n scale: 0.95,\n transition: {\n type: 'spring' as const,\n damping: 25,\n stiffness: 300,\n },\n },\n }\n\n // Height classes\n const getHeightClass = () => {\n switch (height) {\n case 'full':\n return 'h-full'\n case 'half':\n return 'h-[50vh]'\n case 'auto':\n default:\n return 'h-auto'\n }\n }\n\n return (\n <AnimatePresence mode='wait'>\n {isThisSheetActive && (\n <motion.div\n className={twMerge(\n 'fixed inset-0 z-50 flex justify-center',\n position === 'bottom' ? 'items-end' : 'items-center',\n className\n )}\n role='dialog'\n aria-modal='true'\n onClick={handleBackdropClick}\n variants={backdropVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n transition={{ duration: 0.2 }}\n >\n {/* Backdrop */}\n <div\n className='absolute inset-0 bg-black/50 backdrop-blur-sm'\n aria-hidden='true'\n />\n\n {/* Action Sheet Content */}\n <motion.div\n className={twMerge(\n 'relative w-full bg-[var(--sheet-bg,#0A0A0A)] shadow-2xl overflow-hidden',\n position === 'bottom'\n ? 'max-w-full rounded-t-[32px]'\n : 'max-w-lg rounded-2xl mx-4',\n getHeightClass(),\n contentClassName\n )}\n variants={sheetVariants}\n initial='hidden'\n animate='visible'\n exit='exit'\n >\n {children}\n </motion.div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n\nexport default ActionSheet\n","/**\n * Theme color configuration for Deframe components\n */\nexport interface DeframeThemeColors {\n // Brand colors\n /** Primary brand color - used for buttons, links, accents */\n brandPrimary?: string\n /** Secondary brand color - used for secondary accents */\n brandSecondary?: string\n\n // Background colors\n /** Main background color */\n bgDefault?: string\n /** Subtle background color */\n bgSubtle?: string\n /** Muted/disabled background color */\n bgMuted?: string\n\n // Text colors\n /** Primary text color */\n textPrimary?: string\n /** Secondary text color */\n textSecondary?: string\n /** Disabled text color */\n textDisabled?: string\n /** Text color for dark backgrounds */\n textInverse?: string\n\n // State colors\n /** Success state color */\n stateSuccess?: string\n /** Error state color */\n stateError?: string\n /** Warning state color */\n stateWarning?: string\n}\n\n/**\n * Complete theme configuration for Deframe components\n */\nexport interface DeframeTheme {\n colors?: DeframeThemeColors\n}\n\n/**\n * Theme mode - controls light/dark appearance\n */\nexport type ThemeMode = 'light' | 'dark' | 'auto'\n\n/**\n * Theme preset - predefined color schemes\n */\nexport type ThemePreset = 'default' | 'cryptocontrol'\n\n/**\n * Structured theme configuration with mode, preset, and overrides\n */\nexport interface DeframeThemeConfig {\n /** Theme mode: 'light', 'dark', or 'auto' (follows system preference) */\n mode?: ThemeMode\n /** Theme preset: 'default' or 'cryptocontrol' */\n preset?: ThemePreset\n /** Custom color overrides for each mode */\n overrides?: {\n light?: DeframeTheme\n dark?: DeframeTheme\n }\n}\n\n/**\n * Default theme values - these serve as fallbacks when no custom theme is provided\n */\nexport const defaultThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#FFFFFF',\n bgSubtle: '#F8F9FA',\n bgMuted: '#E3E4E8',\n\n // Text\n textPrimary: '#252050',\n textSecondary: '#5C5F66',\n textDisabled: '#C6C8CC',\n textInverse: '#FFFFFF',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Dark mode theme values\n */\nexport const darkThemeColors: Required<DeframeThemeColors> = {\n // Brand\n brandPrimary: '#405EFF',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Cryptocontrol theme values\n */\nexport const cryptocontrolThemeColors: Required<DeframeThemeColors> = {\n // Brand - green primary for cryptocontrol\n brandPrimary: '#1FC16B',\n brandSecondary: '#A9ABF7',\n\n // Backgrounds (same as dark)\n bgDefault: '#121212',\n bgSubtle: '#1E1E1E',\n bgMuted: '#2C2C2C',\n\n // Text (same as dark)\n textPrimary: '#FFFFFF',\n textSecondary: '#E3E4E8',\n textDisabled: '#898D95',\n textInverse: '#252050',\n\n // States\n stateSuccess: '#2BA176',\n stateError: '#FF4D4F',\n stateWarning: '#F6A700'\n}\n\n/**\n * Convert theme colors to CSS variable style object\n */\nexport function themeToCSS (theme?: DeframeTheme): React.CSSProperties {\n if (!theme?.colors) return {}\n\n const vars: Record<string, string> = {}\n const colors = theme.colors\n\n if (colors.brandPrimary) vars['--deframe-brand-primary'] = colors.brandPrimary\n if (colors.brandSecondary) vars['--deframe-brand-secondary'] = colors.brandSecondary\n if (colors.bgDefault) vars['--deframe-bg-default'] = colors.bgDefault\n if (colors.bgSubtle) vars['--deframe-bg-subtle'] = colors.bgSubtle\n if (colors.bgMuted) vars['--deframe-bg-muted'] = colors.bgMuted\n if (colors.textPrimary) vars['--deframe-text-primary'] = colors.textPrimary\n if (colors.textSecondary) vars['--deframe-text-secondary'] = colors.textSecondary\n if (colors.textDisabled) vars['--deframe-text-disabled'] = colors.textDisabled\n if (colors.textInverse) vars['--deframe-text-inverse'] = colors.textInverse\n if (colors.stateSuccess) vars['--deframe-state-success'] = colors.stateSuccess\n if (colors.stateError) vars['--deframe-state-error'] = colors.stateError\n if (colors.stateWarning) vars['--deframe-state-warning'] = colors.stateWarning\n\n return vars as React.CSSProperties\n}\n","import { useEffect, useState, useMemo } from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport {\n type DeframeTheme,\n type DeframeThemeConfig,\n type ThemePreset,\n themeToCSS\n} from './types'\n\n/**\n * Get system color mode preference\n */\nfunction getSystemColorMode (): 'light' | 'dark' {\n if (typeof window === 'undefined' || !window.matchMedia) return 'light'\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'\n}\n\n/**\n * Resolve theme configuration to provider theme and custom styles\n */\nfunction resolveThemeConfig (\n config: DeframeThemeConfig | undefined,\n systemMode: 'light' | 'dark'\n): { providerTheme: 'light' | 'dark' | 'cryptocontrol'; customTheme?: DeframeTheme } {\n const mode: 'light' | 'dark' = config?.mode === 'auto'\n ? systemMode\n : (config?.mode ?? 'light')\n\n const preset: ThemePreset = config?.preset ?? 'default'\n\n const providerTheme: 'light' | 'dark' | 'cryptocontrol' =\n preset === 'cryptocontrol' ? 'cryptocontrol' : mode === 'dark' ? 'dark' : 'light'\n\n // Get override colors for the active mode\n const overrideColors = mode === 'dark'\n ? config?.overrides?.dark?.colors\n : config?.overrides?.light?.colors\n\n const customTheme = overrideColors ? { colors: overrideColors } : undefined\n\n return { providerTheme, customTheme }\n}\n\nexport interface DeframeComponentsProviderProps {\n /** Theme preset: 'light' | 'dark' | 'cryptocontrol' (legacy) */\n theme?: string\n /** Structured theme configuration (preferred) */\n themeConfig?: DeframeThemeConfig\n /** Custom theme colors that override the preset */\n customTheme?: DeframeTheme\n /** Optional extra className applied to the `.deframe-widget` root */\n className?: string\n /** Child components */\n children: React.ReactNode\n}\n\nexport default function DeframeComponentsProvider ({\n theme = 'light',\n themeConfig,\n customTheme,\n className,\n children\n}: DeframeComponentsProviderProps) {\n // Track system color mode for 'auto' mode\n const [systemMode, setSystemMode] = useState<'light' | 'dark'>(() => getSystemColorMode())\n\n // Listen for system color mode changes when using 'auto' mode\n useEffect(() => {\n const needsSystem = themeConfig?.mode === 'auto'\n if (!needsSystem || typeof window === 'undefined' || !window.matchMedia) return\n\n const mq = window.matchMedia('(prefers-color-scheme: dark)')\n const handler = () => setSystemMode(mq.matches ? 'dark' : 'light')\n handler()\n mq.addEventListener?.('change', handler)\n return () => mq.removeEventListener?.('change', handler)\n }, [themeConfig?.mode])\n\n // Resolve the final theme values\n const resolvedTheme = useMemo(() => {\n // If using new themeConfig, resolve it\n if (themeConfig) {\n return resolveThemeConfig(themeConfig, systemMode)\n }\n\n // Legacy: use theme string directly\n return {\n providerTheme: theme as 'light' | 'dark' | 'cryptocontrol',\n customTheme\n }\n }, [themeConfig, theme, customTheme, systemMode])\n\n const themeClass = resolvedTheme.providerTheme === 'light' ? '' : resolvedTheme.providerTheme\n const colorScheme = resolvedTheme.providerTheme === 'light' ? 'light' : 'dark'\n\n // Convert custom theme to CSS variables\n const customCSSVars = themeToCSS(resolvedTheme.customTheme)\n\n return (\n <div\n className={twMerge('deframe-widget', themeClass, className)}\n style={{ colorScheme, ...customCSSVars }}\n >\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowProps {\n children: React.ReactNode;\n borderBottom?: boolean;\n className?: string;\n}\n\nexport const InfoRow: React.FC<InfoRowProps> = ({ children, borderBottom, className }) => {\n const baseClasses = 'self-stretch inline-flex justify-between items-start'\n const borderClasses = borderBottom ? 'border-b border-border-default dark:border-border-default-dark pb-sm' : ''\n\n return (\n <div data-test-id='info-row' className={twMerge(baseClasses, borderClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoLabelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoLabel: React.FC<InfoLabelProps> = ({ children, className }) => {\n const baseClasses = 'text-sm text-text-secondary dark:text-text-secondary-dark'\n\n return (\n <div data-test-id='info-label' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoValueProps {\n children: React.ReactNode;\n variant?: 'default' | 'success' | 'warning' | 'error';\n className?: string;\n}\n\nconst variantClasses = {\n default: 'text-text-primary dark:text-text-primary-dark',\n success: 'text-state-success',\n warning: 'text-state-warning',\n error: 'text-state-error',\n} as const\n\nexport const InfoValue: React.FC<InfoValueProps> = ({ children, variant = 'default', className }) => {\n const baseClasses = 'text-sm font-semibold'\n\n return (\n <div data-test-id='info-value' className={twMerge(baseClasses, variantClasses[variant], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowWithIconProps {\n children: React.ReactNode;\n borderBottom?: boolean;\n className?: string;\n}\n\nexport const InfoRowWithIcon: React.FC<InfoRowWithIconProps> = ({ children, borderBottom, className }) => {\n const baseClasses = 'flex items-start justify-between h-[17px]'\n const borderClasses = borderBottom ? 'border-b border-border-default dark:border-border-default-dark pb-sm' : ''\n\n return (\n <div data-test-id='info-row-with-icon' className={twMerge(baseClasses, borderClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowIconLabelProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoRowIconLabel: React.FC<InfoRowIconLabelProps> = ({ children, className }) => {\n const baseClasses = 'text-sm text-text-secondary dark:text-text-secondary-dark'\n\n return (\n <div data-test-id='info-row-icon-label' className={twMerge(baseClasses, className)}>\n • {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InfoRowIconValueProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const InfoRowIconValue: React.FC<InfoRowIconValueProps> = ({ children, className }) => {\n const baseClasses = 'text-sm font-semibold text-text-primary dark:text-text-primary-dark'\n\n return (\n <div data-test-id='info-row-icon-value' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronDown, HiChevronUp } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface CollapsibleInfoRowProps {\n label: string;\n value: string;\n children?: React.ReactNode;\n defaultOpen?: boolean;\n className?: string;\n collapseLabel: string;\n expandLabel: string;\n}\n\nexport const CollapsibleInfoRow: React.FC<CollapsibleInfoRowProps> = ({\n label,\n value,\n children,\n defaultOpen = false,\n className,\n collapseLabel,\n expandLabel,\n}) => {\n const [isOpen, setIsOpen] = React.useState(defaultOpen)\n\n const baseClasses = 'flex flex-col gap-sm w-full'\n\n return (\n <div data-test-id='collapsible-info-row' className={twMerge(baseClasses, className)}>\n <button\n type='button'\n onClick={() => setIsOpen(!isOpen)}\n className='flex items-start justify-between w-full text-left h-[18px] cursor-pointer'\n aria-expanded={isOpen}\n aria-label={`${isOpen ? collapseLabel : expandLabel} ${label}`}\n >\n <div className='flex items-start gap-[2px]'>\n <span className='text-text-sm text-text-secondary dark:text-text-secondary-dark'>\n {label}\n </span>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n {isOpen\n ? (\n <HiChevronUp className='w-3 h-3 text-text-secondary dark:text-text-secondary-dark' />\n )\n : (\n <HiChevronDown className='w-3 h-3 text-text-secondary dark:text-text-secondary-dark' />\n )}\n </div>\n </div>\n <span className='text-text-sm font-semibold text-text-secondary dark:text-text-secondary-dark'>\n {value}\n </span>\n </button>\n {isOpen && children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface BackgroundContainerProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const BackgroundContainer: React.FC<BackgroundContainerProps> = ({ children, className }) => {\n const baseClasses = 'w-full flex-1 min-h-0 px-md bg-bg-default lg:bg-bg-subtle dark:bg-bg-default-dark lg:dark:bg-bg-subtle-dark text-text-primary dark:text-text-primary-dark flex flex-col relative overflow-y-auto'\n\n return (\n <div data-test-id='background-container' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface SectionCardProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const SectionCard: React.FC<SectionCardProps> = ({ children, className }) => {\n const baseClasses = 'bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised rounded shadow-sm p-md flex flex-col gap-sm'\n\n return (\n <div data-test-id='section-card' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface NavbarProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const Navbar: React.FC<NavbarProps> = ({ children, className }) => {\n const baseClasses = 'w-full px-sm pr-md pt-sm pb-md border-b items-center border-border-subtle dark:border-border-subtle-dark flex'\n\n return (\n <nav data-test-id='navbar' className={twMerge(baseClasses, className)}>\n {children}\n </nav>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface FlexColProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const FlexCol: React.FC<FlexColProps> = ({ children, className, gap = 'xs' }) => {\n const baseClasses = 'flex flex-col'\n\n return (\n <div data-test-id='flex-col' className={twMerge(baseClasses, gapClasses[gap], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface FlexRowProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const FlexRow: React.FC<FlexRowProps> = ({ children, className, gap = 'xs' }) => {\n const baseClasses = 'flex items-center'\n\n return (\n <div data-test-id='flex-row' className={twMerge(baseClasses, gapClasses[gap], className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface ScrollableContentProps {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const ScrollableContent: React.FC<ScrollableContentProps> = ({ children, className }) => {\n const baseClasses = 'flex-1 overflow-y-auto px-md py-lg'\n\n return (\n <div data-test-id='scrollable-content' className={twMerge(baseClasses, className)}>\n {children}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronLeft } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextHeading } from '../texts'\n\nexport interface DetailsHeaderProps {\n title: string;\n onBack?: () => void;\n className?: string;\n backAriaLabel?: string;\n}\n\nexport const DetailsHeader: React.FC<DetailsHeaderProps> = ({ title, onBack, className, backAriaLabel = 'Back' }) => {\n const baseClasses = 'w-full px-sm pr-md pt-sm pb-md border-b border-border-subtle dark:border-border-subtle-dark flex items-center'\n\n return (\n <div data-test-id='details-header' className={twMerge(baseClasses, className)}>\n <button\n data-test-id='details-header-back-button'\n onClick={onBack}\n className='w-12 h-12 rounded-full flex items-center justify-center text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary cursor-pointer'\n aria-label={backAriaLabel}\n >\n <HiChevronLeft className='w-6 h-6 text-text-tertiary dark:text-text-tertiary-dark' />\n </button>\n <div className='flex-1 flex items-center'>\n <TextHeading variant='h-large'>{title}</TextHeading>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { HiXMark } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface CloseButtonProps {\n onClick?: () => void;\n testId?: string;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const CloseButton: React.FC<CloseButtonProps> = ({ onClick, testId, ariaLabel = 'Close', className }) => {\n const baseClasses = 'w-12 h-12 rounded-full flex items-center justify-center text-text-secondary dark:text-text-secondary-dark hover:text-brand-primary transition-colors cursor-pointer'\n\n return (\n <button\n data-test-id={testId ?? 'close-button'}\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n aria-label={ariaLabel}\n >\n <HiXMark className='w-6 h-6' />\n </button>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface HighRiskBadgeProps {\n className?: string;\n label?: string;\n}\n\nexport const HighRiskBadge: React.FC<HighRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='high-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Failed'\n className='h-6 px-2 py-1 opacity-95 bg-red-500/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-error flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-error text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface MediumRiskBadgeProps {\n className?: string;\n label?: string;\n}\n\nexport const MediumRiskBadge: React.FC<MediumRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='medium-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Warning'\n className='h-6 px-2 py-1 opacity-95 bg-amber-500/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-warning flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-warning text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface LowRiskBadgeProps {\n className?: string;\n label: string;\n}\n\nexport const LowRiskBadge: React.FC<LowRiskBadgeProps> = ({ className, label }) => {\n const baseClasses = 'inline-flex justify-start items-start gap-1'\n\n return (\n <div data-test-id='low-risk-badge' className={twMerge(baseClasses, className)}>\n <div\n data-size='Small'\n data-type='Completed'\n className='h-6 px-2 py-1 opacity-95 bg-teal-600/20 rounded-lg outline outline-1 outline-offset-[-1px] outline-state-success flex justify-center items-center gap-1'\n >\n <div className='flex justify-start items-center gap-2.5'>\n <div className='justify-start text-state-success text-xs font-normal font-poppins leading-4'>\n {label}\n </div>\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { AddressDisplay } from '../address'\n\n// Layout components\nexport interface FlexColCompProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nconst gapClasses = {\n xs: 'gap-xs',\n sm: 'gap-sm',\n md: 'gap-md',\n lg: 'gap-lg',\n} as const\n\nexport const HistoryFlexCol: React.FC<FlexColCompProps> = ({ children, className, gap = 'xs' }) => (\n <div data-test-id='history-flex-col' className={twMerge('flex flex-col', gapClasses[gap], className)}>\n {children}\n </div>\n)\n\nexport interface FlexRowCompProps {\n children: React.ReactNode;\n className?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nexport const HistoryFlexRow: React.FC<FlexRowCompProps> = ({ children, className, gap = 'xs' }) => (\n <div data-test-id='history-flex-row' className={twMerge('flex items-center', gapClasses[gap], className)}>\n {children}\n </div>\n)\n\nexport const HistoryScrollableContent: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='history-scrollable-content' className='flex-1 overflow-y-auto px-md py-lg'>\n {children}\n </div>\n)\n\n// Typography components\nexport const TransactionTypeLabel: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='transaction-type-label' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const StrategyName: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='strategy-name' className='text-accent-md-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const Amount: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='amount' className='text-accent-md-mobile text-text-secondary dark:text-text-secondary-dark'>\n {children}\n </p>\n)\n\nexport const AmountInUsd: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <p data-test-id='amount-in-usd' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n ~ {children}\n </p>\n)\n\nexport const EmptyValue: React.FC = () => (\n <p data-test-id='empty-value' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n -\n </p>\n)\n\n// Icon components\nexport interface TokenIconProps {\n src: string;\n alt: string;\n}\n\nexport const TokenIcon: React.FC<TokenIconProps> = ({ src, alt }) => (\n <img\n data-test-id='token-icon'\n src={src}\n alt={alt}\n className='w-8 h-8 rounded-full'\n onError={(e) => {\n const fallbackText = encodeURIComponent((alt || 'TOK').slice(0, 3).toUpperCase());\n (e.target as HTMLImageElement).src = `https://placehold.co/40x40?text=${fallbackText}`\n }}\n />\n)\n\n// Status badge\nexport const SuccessBadge: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='success-badge' className='bg-[rgba(43,161,118,0.12)] flex items-center gap-xs px-[8px] py-[2px] rounded-[24px]'>\n <span className='w-2 h-2 rounded-full bg-state-success' />\n <span className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>\n {children}\n </span>\n </div>\n)\n\n// Transaction ID with truncated display and copy button\nconst truncateHash = (hash: string, chars: number = 6): string => {\n if (hash.length <= chars * 2 + 3) return hash\n return `${hash.slice(0, chars + 2)}...${hash.slice(-chars)}`\n}\n\nexport interface TransactionIdProps {\n hash: string | null;\n}\n\nexport const TransactionId: React.FC<TransactionIdProps> = ({ hash }) => {\n if (!hash) {\n return <span data-test-id='transaction-id' className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>-</span>\n }\n\n return (\n <div data-test-id='transaction-id' className='flex items-center gap-xs'>\n <span className='text-text-sm-mobile text-text-primary dark:text-text-primary-dark'>\n {truncateHash(hash)}\n </span>\n <AddressDisplay\n address={hash}\n className='border-none bg-transparent p-0 gap-0'\n textClassName='hidden'\n />\n </div>\n )\n}\n\n// Explorer link\nexport interface ExplorerLinkProps {\n href: string;\n children: React.ReactNode;\n}\n\nexport const ExplorerLink: React.FC<ExplorerLinkProps> = ({ href, children }) => (\n <a\n data-test-id='explorer-link'\n href={href}\n target='_blank'\n rel='noopener noreferrer'\n className='text-brand-primary underline text-sm font-semibold font-poppins'\n >\n {children}\n </a>\n)\n\n// Two-line value\nexport interface TwoLineValueProps {\n primary: React.ReactNode;\n secondary: React.ReactNode;\n}\n\nexport const TwoLineValue: React.FC<TwoLineValueProps> = ({ primary, secondary }) => (\n <HistoryFlexCol className='items-end'>\n <p data-test-id='two-line-value-primary' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark font-semibold'>\n {primary}\n </p>\n <p data-test-id='two-line-value-secondary' className='text-text-sm-mobile text-text-secondary dark:text-text-secondary-dark'>\n {secondary}\n </p>\n </HistoryFlexCol>\n)\n\n// Error state\nexport const NotFoundMessage: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <div data-test-id='not-found-message' className='flex flex-col items-center justify-center h-full'>\n <p className='text-text-primary dark:text-text-primary-dark'>{children}</p>\n </div>\n)\n","import React from 'react'\nimport { DetailsHeader } from '../details-header'\nimport { SectionCard, FlexCol, FlexRow, ScrollableContent, BackgroundContainer } from '../layout'\nimport { InfoRow, InfoLabel, InfoValue } from '../info-display'\nimport {\n TransactionTypeLabel,\n Amount,\n AmountInUsd,\n TokenIcon,\n SuccessBadge,\n TransactionId,\n ExplorerLink,\n TwoLineValue,\n} from './HistoryDetailsComponents'\nimport type { HistoryDetailsLabels } from './history-details-labels'\n\nexport interface HistoryAssetViewProps {\n iconUrl: string;\n symbol: string;\n amount: string;\n amountInUSD: string | null;\n}\n\nexport interface HistoryDetailsViewProps {\n transactionTypeLabel: string;\n symbol: string;\n amountWithSymbol: string;\n amountInUsdFormatted: string;\n shouldShowFlow: boolean;\n assetIn?: HistoryAssetViewProps;\n assetOut?: HistoryAssetViewProps;\n primaryAssetIconUrl: string;\n protocolLabel: string;\n statusLabel: string;\n txHash: string | null;\n date: string;\n explorerUrl: string | null;\n onClose: () => void;\n labels: HistoryDetailsLabels;\n}\n\nexport const HistoryDepositDetailsView: React.FC<HistoryDetailsViewProps> = ({\n transactionTypeLabel,\n symbol,\n amountWithSymbol,\n amountInUsdFormatted,\n shouldShowFlow,\n assetIn,\n assetOut,\n primaryAssetIconUrl,\n protocolLabel,\n statusLabel,\n txHash,\n date,\n explorerUrl,\n onClose,\n labels,\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={labels.transactionDetailsTitle} onBack={onClose} />\n\n <ScrollableContent>\n <FlexCol gap='lg'>\n {/* Transaction Summary Card */}\n <SectionCard className='!p-[24px]'>\n <FlexCol gap='xs'>\n <TransactionTypeLabel>{transactionTypeLabel}</TransactionTypeLabel>\n\n {shouldShowFlow && assetIn && assetOut\n ? (\n <FlexCol gap='sm'>\n <FlexRow gap='sm'>\n <TokenIcon src={assetIn.iconUrl} alt={assetIn.symbol} />\n <FlexCol>\n <Amount>\n {assetIn.amount} {assetIn.symbol}\n </Amount>\n {assetIn.amountInUSD\n ? (\n <AmountInUsd>{assetIn.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n <FlexRow gap='sm'>\n <TokenIcon src={assetOut.iconUrl} alt={assetOut.symbol} />\n <FlexCol>\n <Amount>\n {assetOut.amount} {assetOut.symbol}\n </Amount>\n {assetOut.amountInUSD\n ? (\n <AmountInUsd>{assetOut.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n </FlexCol>\n )\n : (\n <FlexRow gap='sm'>\n <TokenIcon src={primaryAssetIconUrl} alt={symbol} />\n <FlexCol>\n <FlexRow gap='xs'>\n <Amount>{amountWithSymbol}</Amount>\n {amountInUsdFormatted !== '-'\n ? (\n <AmountInUsd>{amountInUsdFormatted}</AmountInUsd>\n )\n : null}\n </FlexRow>\n </FlexCol>\n </FlexRow>\n )}\n </FlexCol>\n </SectionCard>\n\n {/* Details Card */}\n <SectionCard className='!p-md'>\n <FlexCol gap='sm'>\n <InfoRow borderBottom>\n <InfoLabel>{labels.currencyLabel}</InfoLabel>\n <InfoValue>{symbol}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.totalAmountLabel}</InfoLabel>\n <TwoLineValue primary={amountInUsdFormatted} secondary={amountWithSymbol} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.operationCostLabel}</InfoLabel>\n <InfoValue>{labels.operationCostSponsoredLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.protocolLabel}</InfoLabel>\n <InfoValue>{protocolLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.statusLabel}</InfoLabel>\n <SuccessBadge>{statusLabel}</SuccessBadge>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.transactionIdLabel}</InfoLabel>\n <TransactionId hash={txHash} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.dateLabel}</InfoLabel>\n <InfoValue>{date}</InfoValue>\n </InfoRow>\n\n {explorerUrl && (\n <InfoRow>\n <InfoLabel>{labels.transactionLabel}</InfoLabel>\n <ExplorerLink href={explorerUrl}>{labels.viewOnExplorerLabel}</ExplorerLink>\n </InfoRow>\n )}\n </FlexCol>\n </SectionCard>\n </FlexCol>\n </ScrollableContent>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { BackgroundContainer } from '../layout/BackgroundContainer'\nimport { DetailsHeader } from '../details-header'\nimport { SectionCard, FlexCol, FlexRow, ScrollableContent } from '../layout'\nimport { InfoRow, InfoLabel, InfoValue } from '../info-display'\nimport {\n TransactionTypeLabel,\n Amount,\n AmountInUsd,\n TokenIcon,\n SuccessBadge,\n TransactionId,\n ExplorerLink,\n TwoLineValue,\n} from './HistoryDetailsComponents'\nimport type { HistoryAssetViewProps, HistoryDetailsViewProps } from './HistoryDepositDetailsView'\n\nexport type { HistoryDetailsViewProps, HistoryAssetViewProps }\n\nexport const HistoryWithdrawDetailsView: React.FC<HistoryDetailsViewProps> = ({\n transactionTypeLabel,\n symbol,\n amountWithSymbol,\n amountInUsdFormatted,\n shouldShowFlow,\n assetIn,\n assetOut,\n primaryAssetIconUrl,\n protocolLabel,\n statusLabel,\n txHash,\n date,\n explorerUrl,\n onClose,\n labels,\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={labels.transactionDetailsTitle} onBack={onClose} />\n\n <ScrollableContent>\n <FlexCol gap='lg'>\n <SectionCard className='!p-[24px]'>\n <FlexCol gap='xs'>\n <TransactionTypeLabel>{transactionTypeLabel}</TransactionTypeLabel>\n\n {shouldShowFlow && assetIn && assetOut\n ? (\n <FlexCol gap='sm'>\n <FlexRow gap='sm'>\n <TokenIcon src={assetIn.iconUrl} alt={assetIn.symbol} />\n <FlexCol>\n <Amount>\n {assetIn.amount} {assetIn.symbol}\n </Amount>\n {assetIn.amountInUSD\n ? (\n <AmountInUsd>{assetIn.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n <FlexRow gap='sm'>\n <TokenIcon src={assetOut.iconUrl} alt={assetOut.symbol} />\n <FlexCol>\n <Amount>\n {assetOut.amount} {assetOut.symbol}\n </Amount>\n {assetOut.amountInUSD\n ? (\n <AmountInUsd>{assetOut.amountInUSD}</AmountInUsd>\n )\n : null}\n </FlexCol>\n </FlexRow>\n </FlexCol>\n )\n : (\n <FlexRow gap='sm'>\n <TokenIcon src={primaryAssetIconUrl} alt={symbol} />\n <FlexCol>\n <FlexRow gap='xs'>\n <Amount>{amountWithSymbol}</Amount>\n {amountInUsdFormatted !== '-'\n ? (\n <AmountInUsd>{amountInUsdFormatted}</AmountInUsd>\n )\n : null}\n </FlexRow>\n </FlexCol>\n </FlexRow>\n )}\n </FlexCol>\n </SectionCard>\n\n <SectionCard className='!p-md'>\n <FlexCol gap='sm'>\n <InfoRow borderBottom>\n <InfoLabel>{labels.currencyLabel}</InfoLabel>\n <InfoValue>{symbol}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.totalAmountLabel}</InfoLabel>\n <TwoLineValue primary={amountInUsdFormatted} secondary={amountWithSymbol} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.operationCostLabel}</InfoLabel>\n <InfoValue>{labels.operationCostSponsoredLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.protocolLabel}</InfoLabel>\n <InfoValue>{protocolLabel}</InfoValue>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.statusLabel}</InfoLabel>\n <SuccessBadge>{statusLabel}</SuccessBadge>\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.transactionIdLabel}</InfoLabel>\n <TransactionId hash={txHash} />\n </InfoRow>\n\n <InfoRow borderBottom>\n <InfoLabel>{labels.dateLabel}</InfoLabel>\n <InfoValue>{date}</InfoValue>\n </InfoRow>\n\n {explorerUrl && (\n <InfoRow>\n <InfoLabel>{labels.transactionLabel}</InfoLabel>\n <ExplorerLink href={explorerUrl}>{labels.viewOnExplorerLabel}</ExplorerLink>\n </InfoRow>\n )}\n </FlexCol>\n </SectionCard>\n </FlexCol>\n </ScrollableContent>\n </BackgroundContainer>\n )\n}\n","import React from 'react'\nimport { HiChevronDown } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapNetworkSelectorViewProps {\n chainLabel: string;\n chainImage?: string;\n onClick: () => void;\n directionLabel?: string;\n testId?: string;\n className?: string;\n}\n\nexport const SwapNetworkSelectorView: React.FC<SwapNetworkSelectorViewProps> = ({\n chainLabel,\n chainImage,\n onClick,\n directionLabel = 'De',\n testId = 'swap-network-selector',\n className,\n}) => {\n const baseClasses = 'flex flex-row items-center gap-xs'\n\n return (\n <div data-test-id={testId} className={twMerge(baseClasses, className)}>\n <TextBody as='span' variant='text-small' className='tracking-wide text-text-tertiary dark:text-text-tertiary-dark'>\n {directionLabel}\n </TextBody>\n <button\n data-testid={testId}\n type='button'\n onClick={onClick}\n className='ml-6 bg-bg-muted dark:bg-bg-muted-dark border border-border-subtle dark:border-border-subtle-dark rounded-lg flex items-center gap-xs px-sm py-xs hover:border-border-default dark:hover:border-border-default-dark transition-colors text-text-sm text-text-secondary dark:text-text-secondary-dark cursor-pointer'\n aria-label={`${directionLabel} ${chainLabel}`}\n >\n {chainImage\n ? (\n <img src={chainImage} alt={chainLabel} className='w-3 h-3 rounded-full' />\n )\n : null}\n <span>{chainLabel}</span>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n <HiChevronDown className='w-3 h-3 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n </button>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapQuoteHeaderViewProps {\n label: React.ReactNode;\n timerElement?: React.ReactNode;\n className?: string;\n}\n\nexport const SwapQuoteHeaderView: React.FC<SwapQuoteHeaderViewProps> = ({\n label,\n timerElement,\n className,\n}) => {\n const baseClasses = 'border-b border-border-default dark:border-border-default-dark pb-sm'\n\n return (\n <div data-test-id='swap-quote-header' className={twMerge(baseClasses, className)}>\n <div className='flex items-center justify-between'>\n <TextBody as='span' variant='text-small' className='font-semibold text-text-secondary dark:text-text-secondary-dark inline-flex items-center'>\n {label}\n </TextBody>\n <div className='flex items-center gap-md'>\n {timerElement}\n </div>\n </div>\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nexport interface InputFieldRegistration {\n name: string;\n onBlur: React.FocusEventHandler<HTMLInputElement>;\n ref: React.Ref<HTMLInputElement>;\n}\n\nexport interface SwapAmountInputViewProps {\n value: string;\n hasError: boolean;\n onChange: (value: string) => void;\n maxFractionDigits?: number;\n field?: InputFieldRegistration;\n ariaLabel?: string;\n className?: string;\n}\n\nexport const SwapAmountInputView: React.FC<SwapAmountInputViewProps> = ({\n value,\n hasError,\n onChange,\n maxFractionDigits = 6,\n field,\n ariaLabel = 'Amount to swap',\n className,\n}) => {\n const normalizeAmountInput = (raw: string) => {\n let val = raw.replace(/[^\\d.,]/g, '')\n const endsWithSeparator = /[.,]$/.test(val)\n val = val.replace(/,/g, '.')\n const firstDot = val.indexOf('.')\n if (firstDot !== -1) {\n const intPart = val.slice(0, firstDot)\n const fractional = val\n .slice(firstDot + 1)\n .replace(/\\./g, '')\n .slice(0, maxFractionDigits)\n if (fractional.length > 0) {\n val = `${intPart}.${fractional}`\n } else {\n val = endsWithSeparator ? `${intPart}.` : intPart\n }\n }\n if (val.startsWith('.')) {\n val = `0${val}`\n }\n return val\n }\n\n const baseClasses = 'text-h2-mobile font-extrabold bg-transparent outline-none text-right w-full min-w-[120px] placeholder:text-text-disabled dark:placeholder:text-text-disabled-dark'\n const colorClasses = hasError\n ? 'text-state-error dark:text-state-error'\n : 'text-text-primary dark:text-text-primary-dark'\n\n return (\n <input\n data-test-id='swap-flow-amount-input'\n placeholder='0.00'\n type='text'\n inputMode='decimal'\n autoComplete='off'\n aria-label={ariaLabel}\n min='0'\n step='any'\n value={value}\n className={twMerge(baseClasses, colorClasses, className)}\n {...field}\n onChange={(event) => {\n let normalized = normalizeAmountInput(event.target.value)\n if (normalized && parseFloat(normalized) < 0) {\n normalized = '0'\n }\n onChange(normalized)\n }}\n onWheel={(event: React.WheelEvent<HTMLInputElement>) => {\n event.currentTarget.blur()\n }}\n />\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapOutputAmountViewProps {\n displayOutput: string | number;\n isLoading: boolean;\n loadingElement?: React.ReactNode;\n searchingQuoteLabel?: string;\n className?: string;\n}\n\nexport const SwapOutputAmountView: React.FC<SwapOutputAmountViewProps> = ({\n displayOutput,\n isLoading,\n loadingElement,\n searchingQuoteLabel = 'Searching quote...',\n className,\n}) => {\n const baseClasses = 'text-h2-mobile font-extrabold text-right w-full min-w-[120px] text-text-primary dark:text-text-primary-dark'\n\n return (\n <div data-test-id='swap-flow-output-amount' className={twMerge(baseClasses, className)}>\n {isLoading\n ? (\n <TextBody as='span' variant='text-small' className='text-text-disabled dark:text-text-disabled-dark inline-flex items-center'>\n {loadingElement ?? searchingQuoteLabel}\n </TextBody>\n )\n : (\n displayOutput\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { BannerNotification } from '../banner'\n\nexport interface SwapQuoteErrorsViewProps {\n hasQuoteError: boolean;\n hasBytecodeError: boolean;\n quoteErrorMessage?: string;\n bytecodeErrorMessage?: string;\n}\n\nexport const SwapQuoteErrorsView: React.FC<SwapQuoteErrorsViewProps> = ({\n hasQuoteError,\n hasBytecodeError,\n quoteErrorMessage = 'Unable to get quote for this transaction',\n bytecodeErrorMessage = 'Error building transaction',\n}) => {\n return (\n <div data-test-id='swap-quote-errors'>\n {hasQuoteError && (\n <div className='mt-sm'>\n <BannerNotification\n type='inline'\n variant='error'\n message={quoteErrorMessage}\n />\n </div>\n )}\n {hasBytecodeError && (\n <div className='mt-sm'>\n <BannerNotification\n type='inline'\n variant='error'\n message={bytecodeErrorMessage}\n />\n </div>\n )}\n </div>\n )\n}\n","import React from 'react'\nimport { twMerge } from 'tailwind-merge'\n\nconst SLIPPAGE_OPTIONS = [10, 50, 100] // basis points\n\nexport interface SwapSlippageToleranceButtonsViewProps {\n slippageBps: number;\n onSelect: (bps: number) => void;\n formatPercentage: (bps: number) => string;\n className?: string;\n}\n\nexport const SwapSlippageToleranceButtonsView: React.FC<SwapSlippageToleranceButtonsViewProps> = ({\n slippageBps,\n onSelect,\n formatPercentage,\n className,\n}) => {\n const baseClasses = 'flex gap-xs'\n\n return (\n <div data-test-id='swap-slippage-tolerance-buttons' className={twMerge(baseClasses, className)}>\n {SLIPPAGE_OPTIONS.map((option) => {\n const isActive = slippageBps === option\n const activeClasses = 'border-brand-primary text-brand-primary bg-brand-tint dark:bg-brand-tint-dark'\n const inactiveClasses = 'border-border-subtle dark:border-border-subtle-dark text-text-secondary dark:text-text-secondary-dark bg-bg-default dark:bg-bg-default-dark'\n const buttonBase = 'px-sm py-xs rounded border text-text-sm cursor-pointer'\n\n return (\n <button\n key={option}\n data-test-id={`slippage-option-${option}`}\n type='button'\n onClick={() => onSelect(option)}\n className={twMerge(buttonBase, isActive ? activeClasses : inactiveClasses)}\n aria-label={`${formatPercentage(option)}% slippage`}\n aria-pressed={isActive}\n >\n {formatPercentage(option)}%\n </button>\n )\n })}\n </div>\n )\n}\n","import React from 'react'\nimport { HiChevronDown } from 'react-icons/hi2'\nimport { twMerge } from 'tailwind-merge'\nimport { TextBody } from '../texts'\n\nexport interface SwapTokenSelectorViewProps {\n token: { symbol: string; logoURI?: string } | null;\n onClick: () => void;\n testId?: string;\n selectTokenLabel?: string;\n className?: string;\n}\n\nexport const SwapTokenSelectorView: React.FC<SwapTokenSelectorViewProps> = ({\n token,\n onClick,\n testId = 'swap-token-selector',\n selectTokenLabel = 'Select token',\n className,\n}) => {\n const baseClasses = 'h-[56px] border border-border-default dark:border-border-default-dark rounded overflow-hidden hover:border-border-strong dark:hover:border-border-strong-dark transition-colors flex items-center px-sm py-[6px] w-full cursor-pointer'\n\n return (\n <button\n data-test-id={testId}\n type='button'\n onClick={onClick}\n className={twMerge(baseClasses, className)}\n aria-label={token ? token.symbol : selectTokenLabel}\n >\n <div className='flex items-center gap-sm flex-1'>\n {token\n ? (\n <>\n {token.logoURI\n ? (\n <img src={token.logoURI} alt={token.symbol} className='w-6 h-6 rounded-full' />\n )\n : (\n <div className='w-6 h-6 rounded-full bg-bg-raised dark:bg-bg-raised-dark text-text-secondary dark:text-text-secondary-dark flex items-center justify-center text-[10px] font-semibold'>\n {(token.symbol || '').slice(0, 3).toUpperCase()}\n </div>\n )}\n <TextBody as='span' className='text-text-primary dark:text-text-primary-dark'>\n {token.symbol}\n </TextBody>\n </>\n )\n : (\n <TextBody as='span' className='text-text-secondary dark:text-text-secondary-dark'>\n {selectTokenLabel}\n </TextBody>\n )}\n </div>\n <div className='flex items-center justify-center w-[18px] h-[18px]'>\n <HiChevronDown className='w-3 h-3 text-text-tertiary dark:text-text-tertiary-dark' />\n </div>\n </button>\n )\n}\n","import React from 'react'\nimport { CollapsibleInfoRow } from '../info-display/CollapsibleInfoRow'\nimport { InfoRowWithIcon } from '../info-display/InfoRowWithIcon'\nimport { InfoRowIconLabel } from '../info-display/InfoRowIconLabel'\nimport { InfoRowIconValue } from '../info-display/InfoRowIconValue'\n\nexport interface SwapQuoteBlockchainCostsViewProps {\n totalCostFormatted: string;\n feePercentage: string;\n gasCostFormatted: string;\n protocolFee: string;\n blockchainCostsLabel?: string;\n networkGasLabel?: string;\n protocolFeeLabel?: string;\n collapseLabel?: string;\n expandLabel?: string;\n}\n\nexport const SwapQuoteBlockchainCostsView: React.FC<SwapQuoteBlockchainCostsViewProps> = ({\n totalCostFormatted,\n feePercentage,\n gasCostFormatted,\n protocolFee,\n blockchainCostsLabel = 'Blockchain Costs',\n networkGasLabel = 'Network Gas',\n protocolFeeLabel = 'Protocol Fee',\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n}) => {\n return (\n <div data-test-id='swap-quote-blockchain-costs'>\n <CollapsibleInfoRow\n label={blockchainCostsLabel}\n value={`${totalCostFormatted} ~ ${feePercentage}%`}\n defaultOpen\n collapseLabel={collapseLabel}\n expandLabel={expandLabel}\n >\n <div className='flex flex-col gap-sm'>\n <InfoRowWithIcon>\n <InfoRowIconLabel>{networkGasLabel}</InfoRowIconLabel>\n <InfoRowIconValue>{gasCostFormatted}</InfoRowIconValue>\n </InfoRowWithIcon>\n <InfoRowWithIcon borderBottom>\n <InfoRowIconLabel>{protocolFeeLabel}</InfoRowIconLabel>\n <InfoRowIconValue>{protocolFee}</InfoRowIconValue>\n </InfoRowWithIcon>\n </div>\n </CollapsibleInfoRow>\n </div>\n )\n}\n","import React from 'react'\nimport { HiArrowRight } from 'react-icons/hi2'\nimport { ActionSheet } from '../action-sheet'\nimport { ListItem, ListItemContent, ListItemLeftSide, ListItemRightSide } from '../lists'\nimport { TextBody, TextHeading } from '../texts'\nimport { HighRiskBadge } from '../badges/HighRiskBadge'\nimport { LowRiskBadge } from '../badges/LowRiskBadge'\nimport { MediumRiskBadge } from '../badges/MediumRiskBadge'\nimport { BackgroundContainer, Navbar } from '../layout'\nimport { CloseButton } from '../close-button'\n\nexport interface ChooseAStrategyActionsheetViewProps {\n isOpen: boolean;\n currentActionSheetId: string | null;\n assetName: string;\n apy: string;\n logoUrl: string;\n strategyId: string;\n riskLevel: 'low' | 'medium' | 'high';\n onStrategyClick: () => void;\n onClose: () => void;\n yieldLabel?: string;\n apyLabel?: string;\n riskBadgeLabels: { low: string; medium: string; high: string };\n closeAriaLabel?: string;\n}\n\nexport const ChooseAStrategyActionsheetView: React.FC<ChooseAStrategyActionsheetViewProps> = ({\n isOpen,\n currentActionSheetId,\n assetName,\n apy,\n logoUrl,\n riskLevel,\n onStrategyClick,\n onClose,\n yieldLabel,\n apyLabel = 'APY',\n riskBadgeLabels,\n closeAriaLabel = 'Close',\n}) => {\n const resolvedYieldLabel = yieldLabel ?? `Yield ${assetName}`\n\n const badges = {\n low: <LowRiskBadge label={riskBadgeLabels.low} />,\n medium: <MediumRiskBadge label={riskBadgeLabels.medium} />,\n high: <HighRiskBadge label={riskBadgeLabels.high} />,\n }\n\n const Badge = badges[riskLevel]\n\n return (\n <div data-test-id='choose-strategy-actionsheet' className='flex justify-center'>\n <ActionSheet\n id='choose-strategy'\n currentActionSheetId={currentActionSheetId}\n isOpen={isOpen}\n onClose={onClose}\n position='bottom'\n height='full'\n contentClassName='w-full max-w-[620px] mx-auto'\n >\n <BackgroundContainer className='flex flex-col h-full'>\n <Navbar>\n <CloseButton onClick={onClose} ariaLabel={closeAriaLabel} />\n </Navbar>\n <div className='flex flex-col flex-1 w-full p-6 overflow-hidden'>\n <div className='flex-shrink-0'>\n <TextHeading>{resolvedYieldLabel}</TextHeading>\n <br />\n </div>\n <div className='flex flex-col gap-2 w-full mt-4 overflow-y-auto flex-1 min-h-0'>\n <ListItem className='flex-shrink-0' onClick={onStrategyClick}>\n <ListItemLeftSide>\n <img src={logoUrl} alt={assetName} className='w-10 h-10 rounded-full' />\n </ListItemLeftSide>\n <ListItemContent className='gap-1'>\n <TextBody>{resolvedYieldLabel}</TextBody>\n <TextBody variant='text-small'>{Badge}</TextBody>\n </ListItemContent>\n <ListItemRightSide>\n <div className='flex justify-center items-center gap-1'>\n <span className='text-state-success'>{apy}% {apyLabel}</span>\n <HiArrowRight className='w-4 h-4' />\n </div>\n </ListItemRightSide>\n </ListItem>\n </div>\n </div>\n </BackgroundContainer>\n </ActionSheet>\n </div>\n )\n}\n","import React from 'react'\nimport { TextBody, TextHeading } from '../texts'\nimport { SummaryDetails } from '../details'\nimport { PrimaryButton } from '../buttons'\nimport { BackgroundContainer } from '../layout'\nimport { DetailsHeader } from '../details-header'\n\nexport interface StrategyDetailsViewProps {\n logoUrl: string;\n title: string;\n description: string;\n strategyInfo: { label: string; value: string }[];\n onBack?: () => void;\n onDeposit?: () => void;\n headerTitle?: string;\n strategyInfoTitle?: string;\n depositButtonLabel?: string;\n backAriaLabel?: string;\n}\n\nexport const StrategyDetailsView: React.FC<StrategyDetailsViewProps> = ({\n logoUrl,\n title,\n description,\n strategyInfo,\n onBack,\n onDeposit,\n headerTitle = 'Details',\n strategyInfoTitle = 'Strategy Info',\n depositButtonLabel = 'Deposit',\n backAriaLabel = 'Back',\n}) => {\n return (\n <BackgroundContainer>\n <DetailsHeader title={headerTitle} onBack={onBack} backAriaLabel={backAriaLabel} />\n\n <div data-test-id='strategy-details-content' className='flex-1 min-h-0 overflow-y-auto p-md py-lg pb-24'>\n <div className='flex flex-col gap-lg min-h-full'>\n <div className='inline-flex flex-col items-start gap-sm'>\n <img data-test-id='strategy-logo' src={logoUrl} alt={title} className='w-20 h-20 rounded-full' />\n <TextHeading variant='h5'>{title}</TextHeading>\n </div>\n\n <TextBody variant='text-small'>{description}</TextBody>\n\n <SummaryDetails\n title={strategyInfoTitle}\n items={strategyInfo}\n defaultOpen\n className='bg-bg-subtle dark:bg-bg-subtle-dark lg:!bg-bg-raised'\n />\n </div>\n </div>\n\n <div data-test-id='strategy-details-footer' className='sticky bottom-0 left-0 right-0 border-t border-border-subtle dark:border-border-subtle-dark px-md py-md'>\n <PrimaryButton onClick={onDeposit} className='w-full'>\n {depositButtonLabel}\n </PrimaryButton>\n </div>\n </BackgroundContainer>\n )\n}\n"]}
|