@fayz-ai/plugin-financial 0.25.9 → 0.26.0
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/CashRegistersView-2G7DTIAA.js +4 -0
- package/dist/CashRegistersView-2G7DTIAA.js.map +1 -0
- package/dist/CommissionRulesView-2RW4ZCDT.js +878 -0
- package/dist/CommissionRulesView-2RW4ZCDT.js.map +1 -0
- package/dist/FinancialGeneralSettings-WXJOCJPZ.js +3 -0
- package/dist/FinancialGeneralSettings-WXJOCJPZ.js.map +1 -0
- package/dist/FinancialPage-PGODULVH.js +6484 -0
- package/dist/FinancialPage-PGODULVH.js.map +1 -0
- package/dist/PersonStatementWidget-ULXXXYZ4.js +214 -0
- package/dist/PersonStatementWidget-ULXXXYZ4.js.map +1 -0
- package/dist/chunk-7VKJLBYY.js +1736 -0
- package/dist/chunk-7VKJLBYY.js.map +1 -0
- package/dist/chunk-CNXAVGSW.js +13 -0
- package/dist/chunk-CNXAVGSW.js.map +1 -0
- package/dist/chunk-K37Q7SKX.js +4340 -0
- package/dist/chunk-K37Q7SKX.js.map +1 -0
- package/dist/chunk-MGDAJLUQ.js +823 -0
- package/dist/chunk-MGDAJLUQ.js.map +1 -0
- package/dist/chunk-POYZFEAN.js +64 -0
- package/dist/chunk-POYZFEAN.js.map +1 -0
- package/dist/components/BatchClassify.d.ts +26 -0
- package/dist/components/BatchClassify.d.ts.map +1 -0
- package/dist/components/CashSessionHeaderControl.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4944 -45345
- package/dist/index.js.map +1 -1
- package/dist/migrations/main.browser.js +143 -0
- package/dist/migrations/main.browser.js.map +1 -0
- package/dist/migrations/main.js +26230 -0
- package/dist/migrations/main.js.map +1 -0
- package/dist/payable-agent-TCKHUAQG.js +3 -0
- package/dist/payable-agent-TCKHUAQG.js.map +1 -0
- package/dist/views/ReconciliationView.d.ts.map +1 -1
- package/package.json +11 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/CashSessionReviewModal.tsx","../src/views/CashRegistersView.tsx"],"names":["useTranslation","jsxs","jsx","useState","useEffect","useAuth","Button","Skeleton","React","Fragment"],"mappings":";;;;;;;;AA+BO,SAAS,uBAAuB,EAAE,SAAA,EAAW,MAAM,YAAA,EAAc,IAAA,EAAM,YAAW,EAAgC;AACvH,EAAA,MAAM,IAAI,cAAA,EAAe;AACzB,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,kBAAA,EAAmB;AACxC,EAAA,MAAM,WAAW,oBAAA,EAAqB;AACtC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAI,OAAA,EAAQ;AACzB,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,IAAM,IAAA;AAEvB,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAoC,IAAI,CAAA;AACtE,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAqC,IAAI,CAAA;AAC3E,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,SAAmC,IAAI,CAAA;AACnE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAS,KAAK,CAAA;AAEtC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,IAAI,SAAA,GAAY,KAAA;AAChB,IAAA,UAAA,CAAW,IAAI,CAAA;AAAG,IAAA,YAAA,CAAa,IAAI,CAAA;AAAG,IAAA,SAAA,CAAU,IAAI,CAAA;AAAG,IAAA,QAAA,CAAS,IAAI,CAAA;AACpE,IAAA,eAAe,IAAA,GAAO;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,MAAM,QAAQ,GAAA,CAAI;AAAA,UAC/B,QAAA,CAAS,sBAAsB,SAAS,CAAA;AAAA,UACxC,QAAA,CAAS,aAAa,EAAE,aAAA,EAAe,WAAW,MAAA,EAAQ,MAAA,EAAQ,QAAA,EAAU,GAAA,EAAK;AAAA,SAClF,CAAA;AACD,QAAA,IAAI,SAAA,EAAW;AACf,QAAA,UAAA,CAAW,CAAC,CAAA;AACZ,QAAA,YAAA,CAAa,EAAE,IAAI,CAAA;AAGnB,QAAA,IAAI,SAAS,SAAA,EAAW;AACtB,UAAA,MAAM,OAAA,GAAW,MAAM,QAAA,CAAS,qBAAA,QAA8B,EAAC;AAC/D,UAAA,IAAI,SAAA,EAAW;AACf,UAAA,SAAA,CAAU,OAAA,CAAQ,KAAK,CAAC,CAAA,KAAM,EAAE,SAAA,KAAc,SAAS,KAAK,IAAI,CAAA;AAAA,QAClE;AAAA,MACF,SAAS,CAAA,EAAQ;AACf,QAAA,IAAI,CAAC,SAAA,EAAW,QAAA,CAAS,GAAG,OAAA,IAAW,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,MAClD;AAAA,IACF;AACA,IAAA,KAAK,IAAA,EAAK;AACV,IAAA,OAAO,MAAM;AAAE,MAAA,SAAA,GAAY,IAAA;AAAA,IAAK,CAAA;AAAA,EAClC,GAAG,CAAC,IAAA,EAAM,SAAA,EAAW,IAAA,EAAM,QAAQ,CAAC,CAAA;AAEpC,EAAA,MAAM,UAAU,OAAA,EAAS,OAAA;AACzB,EAAA,MAAM,MAAA,GAAS,CAAC,CAAC,EAAA,IAAM,SAAS,cAAA,KAAmB,EAAA;AACnD,EAAA,MAAM,OAAA,GAAU,OAAA,KAAY,IAAA,IAAQ,SAAA,KAAc,IAAA;AAElD,EAAA,eAAe,OAAO,OAAA,EAAkC;AACtD,IAAA,OAAA,CAAQ,IAAI,CAAA;AAAG,IAAA,QAAA,CAAS,IAAI,CAAA;AAC5B,IAAA,IAAI;AACF,MAAA,MAAM,QAAA,CAAS,iBAAA,GAAoB,SAAA,EAAW,OAAO,CAAA;AACrD,MAAA,UAAA,IAAa;AACb,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB,SAAS,CAAA,EAAQ;AACf,MAAA,QAAA,CAAS,CAAA,EAAG,OAAA,IAAW,MAAA,CAAO,CAAC,CAAC,CAAA;AAAA,IAClC,CAAA,SAAE;AACA,MAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,IACf;AAAA,EACF;AAEA,EAAA,SAAS,WAAA,GAAc;AACrB,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,MAAM,KAAA,GAAQ,gBAAgB,sBAAsB,CAAA;AACpD,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,eAAA,IAAmB,CAAA,CAAE,sBAAsB,CAAA;AACjE,IAAA,MAAM,QAAQ,SAAA,IAAa,IAAI,GAAA,CAAI,CAAC,MAAM,CAAA,QAAA,EAAW,CAAA,CAAE,cAAc,IAAI,IAAA,CAAK,EAAE,WAAW,CAAA,CAAE,gBAAe,GAAI,QAAG,YAAY,CAAA,CAAE,MAAA,GAAS,EAAE,CAAA,iBAAA,EAAoB,CAAA,CAAE,MAAM,CAAA,CAAE,CAAA,GAAI,QAAG,CAAA,kCAAA,EAAqC,CAAA,CAAE,cAAc,QAAA,GAAW,GAAA,GAAM,GAAG,CAAA,EAAG,cAAA,CAAe,EAAE,UAAA,EAAY,QAAQ,CAAC,CAAA,UAAA,CAAY,CAAA,CAAE,KAAK,EAAE,CAAA;AACxT,IAAA,aAAA,CAAc;AAAA,MACZ,KAAA;AAAA,MACA,GAAA,EAAK,wMAAA;AAAA,MACL,IAAA,EAAM,CAAA,IAAA,EAAO,KAAK,CAAA,QAAA,EACZ,CAAA,CAAE,uBAAuB,CAAC,CAAA,EAAA,EAAK,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,cAAA,EAAgB,CAAA,EAAG,OAAA,CAAQ,YAAA,GAAe,CAAA,CAAA,EAAI,EAAE,mBAAmB,CAAC,CAAA,CAAA,EAAI,OAAA,CAAQ,YAAY,CAAA,CAAA,GAAK,EAAE,CAAA,IAAA,CAAA,IAClK,OAAA,CAAQ,QAAA,GAAW,CAAA,GAAA,EAAM,CAAA,CAAE,2BAA2B,CAAC,CAAA,EAAA,EAAK,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,CAAE,gBAAgB,CAAA,EAAG,OAAA,CAAQ,YAAA,GAAe,CAAA,CAAA,EAAI,CAAA,CAAE,mBAAmB,CAAC,CAAA,CAAA,EAAI,OAAA,CAAQ,YAAY,CAAA,CAAA,GAAK,EAAE,SAAS,EAAA,CAAA,GACpM,CAAA,GAAA,EAAM,CAAA,CAAE,+BAA+B,CAAC,CAAA,EAAA,EAAK,eAAe,OAAA,CAAQ,cAAA,EAAgB,QAAQ,CAAC,CAAA,OAAA,EACvF,CAAA,CAAE,2BAA2B,CAAC,CAAA,EAAA,EAAK,cAAA,CAAe,OAAA,CAAQ,cAAA,IAAkB,CAAA,EAAG,QAAQ,CAAC,CAAA,OAAA,EACxF,CAAA,CAAE,2BAA2B,CAAC,CAAA,EAAA,EAAA,CAAM,QAAQ,UAAA,IAAc,CAAA,KAAM,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,EAAG,eAAe,OAAA,CAAQ,UAAA,IAAc,CAAA,EAAG,QAAQ,CAAC,CAAA,0BAAA,EAC7G,EAAE,uBAAuB,CAAC,CAAA,SAAA,EAAY,CAAA,CAAE,uBAAuB,CAAC,qCAAqC,CAAA,CAAE,2BAA2B,CAAC,CAAA,yBAAA,EAA4B,IAAI,CAAA,gBAAA,CAAA;AAAA,MAC5L,MAAA,EAAQ;AAAA,KACT,CAAA;AAAA,EACH;AAEA,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAM,IAAA,EAAY,YAAA,EACjB,QAAA,kBAAA,IAAA,CAAC,YAAA,EAAA,EAAa,IAAA,EAAK,IAAA,EAAK,SAAA,EAAS,IAAA,EAAC,SAAA,EAAU,OAAA,EAC1C,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,WAAA,EAAA,EAAY,WAAU,oBAAA,EACrB,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EACnB,QAAA,EAAA,IAAA,KAAS,QAAA,GAAW,EAAE,iCAAiC,CAAA,GAAI,CAAA,CAAE,kCAAkC,CAAA,EAClG,CAAA;AAAA,sBACA,GAAA,CAAC,oBAAiB,SAAA,EAAU,SAAA,EACzB,mBAAS,eAAA,IAAmB,CAAA,CAAE,sBAAsB,CAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,oBAEA,IAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,eAAA,EAClB,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAS,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,0BAAA,EAA4B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,MAExD,OAAA,uBACE,KAAA,EAAA,EAAI,SAAA,EAAU,aACZ,QAAA,EAAA,CAAC,CAAA,EAAG,GAAG,CAAC,CAAA,CAAE,IAAI,CAAC,CAAA,yBAAO,QAAA,EAAA,EAAiB,SAAA,EAAU,gBAAb,CAA0B,CAAE,CAAA,EACnE,CAAA,mBAEA,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6CAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gEAAA,EAAkE,QAAA,EAAA,CAAA,CAAE,wBAAwB,CAAA,EAAE,CAAA;AAAA,0BAC3G,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,CAAA,CAAE,+BAA+B,CAAA,EAAG,KAAA,EAAO,cAAA,CAAe,OAAA,CAAS,cAAA,EAAgB,QAAQ,CAAA,EAAG,CAAA;AAAA,0BACjH,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,CAAA,CAAE,2BAA2B,CAAA,EAAG,KAAA,EAAO,cAAA,CAAe,OAAA,CAAS,cAAA,IAAkB,CAAA,EAAG,QAAQ,CAAA,EAAG,QAAM,IAAA,EAAC,CAAA;AAAA,0BACzH,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,cACpC,KAAA,EAAO,CAAA,EAAA,CAAI,OAAA,CAAS,UAAA,IAAc,MAAM,CAAA,GAAI,GAAA,GAAM,EAAE,CAAA,EAAG,cAAA,CAAe,OAAA,CAAS,UAAA,IAAc,CAAA,EAAG,QAAQ,CAAC,CAAA,CAAA;AAAA,cACzG,IAAA,EAAA,CAAO,OAAA,CAAS,UAAA,IAAc,CAAA,IAAK,CAAA,GAAI,aAAa,OAAA,CAAS,UAAA,IAAc,CAAA,IAAK,CAAA,GAAI,aAAA,GAAgB;AAAA;AAAA,WACtG;AAAA,0BACA,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,CAAA,CAAE,8BAA8B,GAAG,KAAA,EAAO,MAAA,CAAO,OAAA,CAAS,aAAa,CAAA,EAAG,CAAA;AAAA,0BAC7F,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,CAAA,CAAE,wBAAwB,CAAA,EAAG,KAAA,EAAO,cAAA,CAAe,OAAA,CAAS,WAAA,EAAa,QAAQ,CAAA,EAAG,CAAA;AAAA,0BACvG,GAAA,CAAC,UAAA,EAAA,EAAW,KAAA,EAAO,CAAA,CAAE,yBAAyB,CAAA,EAAG,KAAA,EAAO,cAAA,CAAe,OAAA,CAAS,YAAA,EAAc,QAAQ,CAAA,EAAG;AAAA,SAAA,EAC3G,CAAA;AAAA,wBAEA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mBAAA,EACb,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8EAAA,EAAgF,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAAE,CAAA;AAAA,UAAA,CAC5H,SAAA,IAAa,EAAC,EAAG,MAAA,KAAW,CAAA,uBAC3B,GAAA,EAAA,EAAE,SAAA,EAAU,qDAAA,EAAuD,QAAA,EAAA,CAAA,CAAE,+BAA+B,CAAA,EAAE,oBAEvG,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EACZ,QAAA,EAAA,SAAA,CAAW,GAAA,CAAI,CAAC,CAAA,qBACf,IAAA,CAAC,KAAA,EAAA,EAAe,SAAA,EAAU,qDAAA,EACxB,QAAA,EAAA;AAAA,4BAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,SAAA,EACb,QAAA,EAAA;AAAA,8BAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,aAAA,EAAe,QAAA,EAAA,CAAA,CAAE,MAAA,GAAS,CAAA,CAAE,CAAA,iBAAA,EAAoB,CAAA,CAAE,MAAM,CAAA,CAAE,CAAA,GAAI,QAAA,EAAI,CAAA;AAAA,8BAC/E,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,CAAA,CAAE,WAAA,GAAc,IAAI,IAAA,CAAK,CAAA,CAAE,WAAW,CAAA,CAAE,cAAA,KAAmB,QAAA,EAAI;AAAA,aAAA,EACvG,CAAA;AAAA,4BACA,IAAA,CAAC,UAAK,SAAA,EAAW,CAAA,kCAAA,EAAqC,EAAE,SAAA,KAAc,QAAA,GAAW,cAAA,GAAiB,kBAAkB,CAAA,CAAA,EACjH,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,SAAA,KAAc,WAAW,GAAA,GAAM,GAAA;AAAA,cAAK,cAAA,CAAe,CAAA,CAAE,UAAA,EAAY,QAAQ;AAAA,aAAA,EAC9E;AAAA,WAAA,EAAA,EAPQ,CAAA,CAAE,EAQZ,CACD,CAAA,EACH;AAAA,SAAA,EAEJ,CAAA;AAAA,QAEC,IAAA,KAAS,SAAA,oBACR,IAAA,CAAC,GAAA,EAAA,EAAE,WAAU,+BAAA,EACV,QAAA,EAAA;AAAA,UAAA,MAAA,EAAQ,YAAA,KAAiB,UAAA,GACtB,CAAA,CAAE,gCAAgC,CAAA,GAClC,MAAA,EAAQ,YAAA,KAAiB,UAAA,GACvB,CAAA,CAAE,gCAAgC,CAAA,GAClC,CAAA,CAAE,+BAA+B,CAAA;AAAA,UACtC,MAAA,EAAQ,eAAe,CAAA,MAAA,EAAM,CAAA,CAAE,2BAA2B,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,YAAY,CAAA,CAAA,GAAK;AAAA,SAAA,EAC1F,CAAA;AAAA,QAGD,IAAA,KAAS,YAAY,MAAA,oBACpB,GAAA,CAAC,OAAE,SAAA,EAAU,+BAAA,EAAiC,QAAA,EAAA,CAAA,CAAE,gCAAgC,CAAA,EAAE;AAAA,OAAA,EAEtF;AAAA,KAAA,EAEJ,CAAA;AAAA,oBAEA,IAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,oBAAA,EACrB,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,MAAA,EAAA,EAAO,SAAQ,SAAA,EAAU,IAAA,EAAK,MAAK,OAAA,EAAS,WAAA,EAAa,UAAU,OAAA,EAClE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,WAAU,aAAA,EAAc,CAAA;AAAA,QAAE,GAAA;AAAA,QAAE,EAAE,sBAAsB;AAAA,OAAA,EAC/D,CAAA;AAAA,MACC,IAAA,KAAS,QAAA,IAAY,CAAC,MAAA,oBACrB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,QAAA,EAAU,IAAA,IAAQ,OAAA,EAAS,OAAA,EAAS,MAAM,KAAK,MAAA,CAAO,UAAU,CAAA,EAClG,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,CAAA,EAAA,EAAE,WAAU,aAAA,EAAc,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,EAAE,uBAAuB;AAAA,SAAA,EAC1D,CAAA;AAAA,wBACA,IAAA,CAAC,MAAA,EAAA,EAAO,IAAA,EAAK,IAAA,EAAK,QAAA,EAAU,IAAA,IAAQ,OAAA,EAAS,OAAA,EAAS,MAAM,KAAK,MAAA,CAAO,UAAU,CAAA,EAChF,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,KAAA,EAAA,EAAM,WAAU,aAAA,EAAc,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,EAAE,kCAAkC;AAAA,SAAA,EACzE;AAAA,OAAA,EACF;AAAA,KAAA,EAEJ;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;AAEA,SAAS,WAAW,EAAE,KAAA,EAAO,KAAA,EAAO,MAAA,EAAQ,MAAK,EAAyF;AACxI,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,wBAC9C,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,aAAA,EAAgB,MAAA,GAAS,sBAAsB,aAAa,CAAA,CAAA,EAAI,IAAA,KAAS,SAAA,GAAY,iBAAiB,IAAA,KAAS,aAAA,GAAgB,kBAAA,GAAqB,EAAE,IACpK,QAAA,EAAA,KAAA,EACH;AAAA,GAAA,EACF,CAAA;AAEJ;AC9LA,IAAM,iBAAA,GAAoC;AAAA,EACxC,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,GAAA,EAAK,MAAM,MAAA,EAAO;AAAA,EAC5C,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,GAAA,EAAK,MAAM,MAAA,EAAO;AAAA,EAC5C,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAA,EAAI,MAAM,MAAA,EAAO;AAAA,EAC1C,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAA,EAAI,MAAM,MAAA,EAAO;AAAA,EAC1C,EAAE,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,EAAA,EAAI,MAAM,MAAA,EAAO;AAAA,EAC1C,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,CAAA,EAAG,MAAM,MAAA,EAAO;AAAA,EACxC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,CAAA,EAAG,MAAM,MAAA,EAAO;AAAA,EACxC,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,CAAA,EAAG,MAAM,MAAA,EAAO;AAAA,EACxC,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,GAAA,EAAK,MAAM,MAAA,EAAO;AAAA,EAC7C,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,MAAM,MAAA,EAAO;AAAA,EAC9C,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,GAAA,EAAK,MAAM,MAAA,EAAO;AAAA,EAC7C,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,MAAM,MAAA;AACzC,CAAA;AAMA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,aAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAKG;AACD,EAAA,MAAM,IAAIA,cAAAA,EAAe;AACzB,EAAA,MAAM,QAAQ,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM,CAAA;AAC3D,EAAA,MAAM,QAAQ,aAAA,CAAc,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,SAAS,MAAM,CAAA;AAE3D,EAAA,SAAS,QAAA,CAAS,OAAe,KAAA,EAAe;AAC9C,IAAA,QAAA,CAAS,EAAE,GAAG,MAAA,EAAQ,CAAC,KAAK,GAAG,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,KAAK,CAAA,EAAG,CAAA;AAAA,EACrD;AAEA,EAAA,SAAS,UAAU,CAAA,EAAiB;AAClC,IAAA,MAAM,GAAA,GAAM,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA,IAAK,CAAA;AAC/B,IAAA,MAAM,QAAA,GAAW,MAAM,CAAA,CAAE,KAAA;AACzB,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAMEC,IAAAA,CAAC,KAAA,EAAA,EAAkB,SAAA,EAAU,8CAAA,EAC3B,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2EAAA,EAA6E,YAAE,KAAA,EAAM,CAAA;AAAA,wBACrGA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0CAAyC,QAAA,EAAA,MAAA,EAAC,CAAA;AAAA,wBAC1DA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBACb,QAAA,kBAAAA,GAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,GAAA,EAAK,CAAA;AAAA,YACL,OAAO,GAAA,IAAO,EAAA;AAAA,YACd,QAAA,EAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,KAAA,EAAO,QAAA,CAAS,CAAA,CAAE,MAAA,CAAO,KAAK,CAAA,IAAK,CAAC,CAAA;AAAA,YAChE,WAAA,EAAY,GAAA;AAAA,YACZ,SAAA,EAAU;AAAA;AAAA,SACZ,EACF,CAAA;AAAA,wBACAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0CAAyC,QAAA,EAAA,GAAA,EAAC,CAAA;AAAA,wBAC1DA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gFACb,QAAA,EAAA,cAAA,CAAe,QAAA,EAAU,QAAQ,CAAA,EACpC;AAAA,OAAA,EAAA,EAhBQ,EAAE,KAiBZ;AAAA;AAAA,EAEJ;AAEA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMEA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBACb,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACd,QAAA,EAAA;AAAA,MAAA,KAAA,CAAM,MAAA,GAAS,CAAA,oBACdA,IAAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gEAAA,EAAkE,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAAE,CAAA;AAAA,QACxG,KAAA,CAAM,IAAI,SAAS;AAAA,OAAA,EACtB,CAAA;AAAA,MAED,KAAA,CAAM,MAAA,GAAS,CAAA,oBACdD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,gEAAA,EAAkE,QAAA,EAAA,CAAA,CAAE,sBAAsB,CAAA,EAAE,CAAA;AAAA,QACxG,KAAA,CAAM,IAAI,SAAS;AAAA,OAAA,EACtB;AAAA,KAAA,EAEF,CAAA,EACF;AAAA;AAEJ;AAUA,SAAS,gBAAA,CAAiB;AAAA,EACxB,YAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,CAAC,mBAAmB,oBAAoB,CAAA,GAAIC,SAAiB,YAAA,CAAa,CAAC,CAAA,EAAG,EAAA,IAAM,EAAE,CAAA;AAO5F,EAAAC,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,aAAa,MAAA,EAAQ;AAC1B,IAAA,IAAI,CAAC,aAAa,IAAA,CAAK,CAAC,MAAM,CAAA,CAAE,EAAA,KAAO,iBAAiB,CAAA,EAAG;AACzD,MAAA,oBAAA,CAAqB,YAAA,CAAa,CAAC,CAAA,CAAE,EAAE,CAAA;AAAA,IACzC;AAAA,EACF,CAAA,EAAG,CAAC,YAAA,EAAc,iBAAiB,CAAC,CAAA;AACpC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAID,SAAS,CAAC,CAAA;AACxC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,IAAIH,cAAAA,EAAe;AACzB,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIK,OAAAA,EAAQ;AAKzB,EAAA,IAAI,YAAA,CAAa,WAAW,CAAA,EAAG;AAC7B,IAAA,uBACEH,GAAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,kBAAA;AAAA,QACR,KAAA,EAAO,EAAE,sBAAsB,CAAA;AAAA,QAC/B,OAAA,EAAS,EAAE,8BAA8B,CAAA;AAAA,QACzC,OAAA,EAAS,EAAE,8BAA8B,CAAA;AAAA,QACzC,KAAA,EAAO;AAAA,UACL;AAAA,YACE,KAAA,EAAO,EAAE,2BAA2B,CAAA;AAAA,YACpC,KAAA,EAAO,EAAE,gCAAgC;AAAA;AAC3C;AACF;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,eAAe,UAAA,GAAa;AAC1B,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,MAAA,CAAO,mBAAmB,OAAO,CAAA;AACvC,MAAA,UAAA,CAAW,CAAC,CAAA;AAAA,IACd,CAAA,SAAE;AACA,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,eAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,GAAAA,CAAC,SAAI,SAAA,EAAU,cAAA,EACb,0BAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uBAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAC,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yDAAA,EAA2D,QAAA,EAAA,CAAA,CAAE,qBAAqB,CAAA,EAAE,CAAA;AAAA,wBACrGA,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,mCAAA,EAAqC,QAAA,EAAA,IAAA,EAAM,SAAS,QAAA,EAAI;AAAA,OAAA,EACvE,CAAA;AAAA,sBACAD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAC,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yDAAA,EAA2D,QAAA,EAAA,CAAA,CAAE,4BAA4B,CAAA,EAAE,CAAA;AAAA,wBAC5GA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uCACV,QAAA,EAAA,iBAAA,IAAI,IAAA,IAAO,kBAAA,CAAmB,OAAA,EAAS,EAAE,OAAA,EAAS,MAAA,EAAQ,KAAK,SAAA,EAAW,KAAA,EAAO,QAAQ,IAAA,EAAM,SAAA,EAAW,CAAA,EAC7G;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBAEAA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBACb,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,aAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,OAAA;AAAA,UACP,QAAA,EAAU,UAAA;AAAA,UACV,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,QAAQ,QAAA,CAAS,MAAA;AAAA,UACjB,cAAc,QAAA,CAAS,IAAA;AAAA,UACvB,KAAA,EAAO,EAAE,+BAA+B;AAAA;AAAA,OAC1C;AAAA,sBACAD,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAAC,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yDAAA,EAA2D,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAAE,CAAA;AAAA,wBAC7GD,IAAAA,CAAC,MAAA,EAAA,EAAO,KAAA,EAAO,iBAAA,EAAmB,eAAe,oBAAA,EAC/C,QAAA,EAAA;AAAA,0BAAAC,IAAC,aAAA,EAAA,EAAc,SAAA,EAAU,qFAAoF,QAAA,kBAAAA,GAAAA,CAAC,eAAY,CAAA,EAAE,CAAA;AAAA,0BAC5HA,GAAAA,CAAC,aAAA,EAAA,EACE,uBAAa,GAAA,CAAI,CAAC,sBACjBA,GAAAA,CAAC,UAAA,EAAA,EAAsB,KAAA,EAAO,EAAE,EAAA,EAAK,QAAA,EAAA,CAAA,CAAE,QAAtB,CAAA,CAAE,EAAyB,CAC7C,CAAA,EACH;AAAA,SAAA,EACF;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EACF,CAAA;AAAA,oBAKAD,IAAAA;AAAA,MAACK,MAAAA;AAAA,MAAA;AAAA,QAAO,OAAA,EAAQ,MAAA;AAAA,QAAO,IAAA,EAAK,MAAA;AAAA,QAC1B,WAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS,MAAM,KAAK,UAAA,EAAW;AAAA,QAC/B,QAAA,EAAU,cAAc,OAAA,GAAU,CAAA;AAAA,QAClC,SAAA,EAAU,qPAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,UAAA,GAAa,CAAA,CAAE,wBAAwB,CAAA,GAAI,EAAE,yCAAyC;AAAA;AAAA;AAAA;AACvH,GAAA,EACF,CAAA;AAEJ;AAMA,SAAS,gBAAA,CAAiB;AAAA,EACxB,OAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAIC,SAAmB,OAAO,CAAA;AAClD,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAIA,SAAS,CAAC,CAAA;AAClD,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,QAAAA,CAAiC,EAAE,CAAA;AAC/D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,SAAS,EAAE,CAAA;AACrC,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,IAAIH,cAAAA,EAAe;AAEzB,EAAA,MAAM,YAAA,GAAe,QAAQ,MAAM;AACjC,IAAA,OAAO,iBAAA,CAAkB,MAAA,CAAO,CAAC,GAAA,EAAK,CAAA,KAAM,GAAA,GAAA,CAAO,MAAA,CAAO,CAAA,CAAE,KAAK,CAAA,IAAK,CAAA,IAAK,CAAA,CAAE,OAAO,CAAC,CAAA;AAAA,EACvF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,gBAAA,GAAmB,IAAA,KAAS,OAAA,GAAU,YAAA,GAAe,YAAA;AAM3D,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,YAAA,IAAgB,OAAA,CAAQ,cAAA;AACjD,EAAA,MAAM,aAAa,gBAAA,GAAmB,QAAA;AAEtC,EAAA,eAAe,WAAA,GAAc;AAC3B,IAAA,aAAA,CAAc,IAAI,CAAA;AAClB,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,CAAQ,OAAA,CAAQ,EAAA,EAAI,gBAAA,EAAkB,SAAS,KAAA,CAAS,CAAA;AAAA,IAChE,CAAA,SAAE;AACA,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,uBACEC,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAEb,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0CAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAACI,MAAAA;AAAA,QAAA;AAAA,UAAO,OAAA,EAAQ,MAAA;AAAA,UAAO,IAAA,EAAK,MAAA;AAAA,UAC1B,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAO,CAAA;AAAA,UAC9B,SAAA,EAAW,CAAA,2DAAA,EACT,IAAA,KAAS,OAAA,GAAU,uCAAuC,gBAC5D,CAAA,CAAA;AAAA,UAEC,YAAE,4BAA4B;AAAA;AAAA,OACjC;AAAA,sBACAL,IAAAA;AAAA,QAACK,MAAAA;AAAA,QAAA;AAAA,UAAO,OAAA,EAAQ,MAAA;AAAA,UAAO,IAAA,EAAK,MAAA;AAAA,UAC1B,OAAA,EAAS,MAAM,OAAA,CAAQ,OAAO,CAAA;AAAA,UAC9B,SAAA,EAAW,CAAA,0FAAA,EACT,IAAA,KAAS,OAAA,GAAU,uCAAuC,gBAC5D,CAAA,CAAA;AAAA,UAEA,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,YAAE,GAAA;AAAA,YAAE,EAAE,sBAAsB;AAAA;AAAA;AAAA;AAC9D,KAAA,EACF,CAAA;AAAA,IAEC,IAAA,KAAS,0BACRA,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,YAAA;AAAA,QACP,QAAA,EAAU,eAAA;AAAA,QACV,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,QAAQ,QAAA,CAAS,MAAA;AAAA,QACjB,cAAc,QAAA,CAAS,IAAA;AAAA,QACvB,KAAA,EAAO,EAAE,+BAA+B;AAAA;AAAA,KAC1C,mBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,aAAA,EAAe,iBAAA;AAAA,UACf,MAAA;AAAA,UACA,QAAA,EAAU,SAAA;AAAA,UACV;AAAA;AAAA,OACF;AAAA,sBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qDAAA,EAAuD,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAAE,CAAA;AAAA,wBACxGA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAqB,QAAA,EAAA,cAAA,CAAe,YAAA,EAAc,QAAQ,CAAA,EAAE;AAAA,OAAA,EAC9E;AAAA,KAAA,EACF,CAAA;AAAA,IAKD,OAAA,CAAQ,gBAAA,IAAoB,MAAA,CAAO,IAAA,CAAK,OAAA,CAAQ,gBAAgB,CAAA,CAAE,MAAA,GAAS,CAAA,oBAC1ED,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,uCAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,yDAAA,EACV,QAAA,EAAA,CAAA,CAAE,gCAAgC,CAAA,EACrC,CAAA;AAAA,MACC,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,gBAAgB,EAAE,GAAA,CAAI,CAAC,CAAC,MAAA,EAAQ,KAAK,CAAA,qBAC3DD,IAAAA,CAAC,KAAA,EAAA,EAAiB,WAAU,2CAAA,EAC1B,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,UAAK,SAAA,EAAU,uBAAA,EAAyB,YAAE,CAAA,iBAAA,EAAoB,MAAM,EAAE,CAAA,EAAE,CAAA;AAAA,wBACzEA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,cAAA,EAAgB,yBAAe,MAAA,CAAO,KAAK,CAAA,EAAG,QAAQ,CAAA,EAAE;AAAA,OAAA,EAAA,EAFhE,MAGV,CACD;AAAA,KAAA,EACH,CAAA;AAAA,oBAIFD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,CAAA,CAAE,iCAAiC,CAAA,EAAE,CAAA;AAAA,wBAC9EA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAA4B,QAAA,EAAA,cAAA,CAAe,QAAA,EAAU,QAAQ,CAAA,EAAE;AAAA,OAAA,EACjF,CAAA;AAAA,sBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,uBAAA,EAAyB,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAAE,CAAA;AAAA,wBAC1EA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAA4B,QAAA,EAAA,cAAA,CAAe,gBAAA,EAAkB,QAAQ,CAAA,EAAE;AAAA,OAAA,EACzF,CAAA;AAAA,sBACAD,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iDAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,qBAAA,EAAuB,QAAA,EAAA,CAAA,CAAE,2BAA2B,CAAA,EAAE,CAAA;AAAA,wBACtED,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,+BAAA,EACf,UAAA,GAAa,CAAA,GAAI,cAAA,GAAiB,UAAA,GAAa,CAAA,GAAI,kBAAA,GAAqB,uBAC1E,CAAA,CAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA,IAAc,IAAI,GAAA,GAAM,EAAA;AAAA,UAAI,cAAA,CAAe,YAAY,QAAQ;AAAA,SAAA,EAClE;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA;AAAA,oBAGAA,KAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAAC,IAAC,OAAA,EAAA,EAAM,SAAA,EAAU,yDAAA,EAA2D,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAAE,CAAA;AAAA,sBAC7GA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,KAAA,EAAO,KAAA;AAAA,UACP,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,UACxC,IAAA,EAAM,CAAA;AAAA,UACN,WAAA,EAAa,EAAE,oCAAoC,CAAA;AAAA,UACnD,SAAA,EAAU;AAAA;AAAA;AACZ,KAAA,EACF,CAAA;AAAA,oBAEAD,IAAAA;AAAA,MAACK,MAAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,aAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,OAAA,EAAS,WAAA;AAAA,QAIT,QAAA,EAAU,cAAc,gBAAA,GAAmB,CAAA;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,UAC/B,UAAA,GAAa,CAAA,CAAE,wBAAwB,CAAA,GAAI,EAAE,6BAA6B;AAAA;AAAA;AAAA;AAC7E,GAAA,EACF,CAAA;AAEJ;AAmBA,SAAS,SAAS,GAAA,EAA6B;AAC7C,EAAA,IAAI,CAAC,KAAK,OAAO,EAAA;AACjB,EAAA,MAAM,CAAA,GAAI,IAAI,IAAA,CAAK,GAAG,CAAA;AACtB,EAAA,OAAO,CAAA,EAAG,CAAA,CAAE,WAAA,EAAa,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,QAAA,EAAS,GAAI,CAAC,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAC,CAAA,CAAA,EAAI,MAAA,CAAO,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAChH;AAEA,SAAS,kBAA0D,IAAA,EAA8C;AAC/G,EAAA,MAAM,OAA0C,EAAC;AACjD,EAAA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAA,CAAE,KAAK,CAAC,CAAA,EAAG,CAAA,KAAA,CAAO,CAAA,CAAE,YAAY,EAAA,EAAI,aAAA,CAAc,CAAA,CAAE,QAAA,IAAY,EAAE,CAAC,CAAA;AAC1F,EAAA,KAAA,MAAW,KAAK,MAAA,EAAQ;AACtB,IAAA,MAAM,GAAA,GAAM,QAAA,CAAS,CAAA,CAAE,QAAQ,CAAA;AAC/B,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA;AACjC,IAAA,IAAI,QAAQ,IAAA,CAAK,GAAA,KAAQ,KAAK,IAAA,CAAK,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,SACzC,IAAA,CAAK,KAAK,EAAE,GAAA,EAAK,MAAM,CAAC,CAAC,GAAG,CAAA;AAAA,EACnC;AACA,EAAA,OAAO,IAAA;AACT;AAEA,SAAS,SAAA,CAAU,EAAE,MAAA,EAAQ,KAAA,EAAM,EAAsC;AACvE,EAAA,MAAM,IAAIF,cAAAA,EAAe;AACzB,EAAA,IAAI,KAAA,GAAQ,QAAA;AACZ,EAAA,IAAI,MAAA,KAAW,QAAA,CAAA,iBAAS,IAAI,IAAA,EAAK,EAAE,aAAa,CAAA,EAAG,KAAA,GAAQ,CAAA,CAAE,4BAA4B,CAAA;AAAA,OAAA,IAChF,MAAA,KAAW,QAAA,CAAS,IAAI,IAAA,CAAK,KAAK,GAAA,EAAI,GAAI,KAAU,CAAA,CAAE,WAAA,EAAa,CAAA,EAAG,KAAA,GAAQ,EAAE,gCAAgC,CAAA;AAAA,OAAA,IAChH,MAAA,EAAQ;AACf,IAAA,MAAM,CAAC,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA,GAAI,OAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA;AAC9C,IAAA,KAAA,GAAQ,IAAI,IAAA,CAAK,CAAA,EAAI,CAAA,GAAK,CAAA,EAAG,CAAE,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAW,EAAE,SAAS,MAAA,EAAQ,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,WAAW,CAAA;AAAA,EACtH;AACA,EAAA;AAAA;AAAA;AAAA,oBAGEC,IAAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAU,6GAAA;AAAA,QACV,KAAA,EAAO,EAAE,GAAA,EAAK,4BAAA,EAA6B;AAAA,QAE3C,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,0BAChDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8DAA8D,QAAA,EAAA,KAAA,EAAM;AAAA;AAAA;AAAA;AACtF;AAEJ;AAEA,IAAM,WAAA,GAAc,EAAE,IAAA,EAAM,SAAA,EAAW,QAAQ,SAAA,EAAU;AAEzD,IAAM,kBAAA,GAAqB,CAAA;AAC3B,IAAM,gBAAA,GAAmB,YAAA;AAEzB,SAAS,WAAA,CAAY;AAAA,EACnB,OAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,EAQG;AACD,EAAA,MAAM,IAAIF,cAAAA,EAAe;AACzB,EAAA,MAAM,EAAE,QAAA,EAAS,GAAI,kBAAA,EAAmB;AACxC,EAAA,MAAM,EAAE,IAAA,EAAK,GAAIK,OAAAA,EAAQ;AACzB,EAAA,MAAM,EAAA,GAAK,MAAM,EAAA,IAAM,IAAA;AAIvB,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIF,SAAwB,IAAI,CAAA;AAE9D,EAAA,MAAM,SAAA,GAAA,CAAa,QAAQ,EAAC,EAAG,OAAO,CAAC,CAAA,KAAM,CAAA,CAAE,YAAA,KAAiB,SAAS,CAAA;AACzE,EAAA,MAAM,uBAAA,GAA0B,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,uBAAuB,CAAA;AAMlF,EAAA,MAAM,UAAU,OAAA,KAAY,OAAA;AAC5B,EAAA,MAAM,KAAA,GAAQ,OAAA,GACV,CAAC,GAAG,SAAS,CAAA,CACV,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAM,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,UAAU,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,CAAE,UAAU,CAAA,IAAA,CAAM,CAAA,CAAE,QAAA,IAAY,IAAI,aAAA,CAAc,CAAA,CAAE,QAAA,IAAY,EAAE,CAAC,CAAA,CACpH,KAAA,CAAM,CAAA,EAAG,kBAAkB,CAAA,GAC9B,SAAA;AACJ,EAAA,MAAM,MAAA,GAAS,SAAA,CAAU,MAAA,GAAS,KAAA,CAAM,MAAA;AAExC,EAAA,MAAM,IAAA,GAAO,OAAA,GAAU,EAAC,GAAI,kBAAkB,SAAS,CAAA;AAEvD,EAAA,MAAM,YAAA,GAAe,OAAA,KAAY,OAAA,GAAU,EAAA,GAAK,uCAAA;AAEhD,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,EACb,QAAA,EAAA;AAAA,IAAA,UAAA,oBACCA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4CAAA,EACb,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,sBAC9CA,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAU,uBAAA,EAAyB,QAAA,EAAA,CAAA,CAAE,4BAA4B,CAAA,EAAE,CAAA;AAAA,MACtE,SAAA,CAAU,SAAS,CAAA,oBAClBA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yEAAA,EACb,QAAA,EAAA,SAAA,CAAU,MAAA,EACb;AAAA,KAAA,EAEJ,CAAA;AAAA,IAGD,UAAA,IAAc,CAAC,OAAA,oBACdA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+CAA8C,QAAA,EAAA,uIAAA,EAG3D,CAAA;AAAA,IAGD,yBAASA,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sCAAsC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,IAElE,SAAS,IAAA,mBACRA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iBACZ,QAAA,EAAA,CAAC,CAAA,EAAG,CAAC,CAAA,CAAE,IAAI,CAAC,CAAA,qBACXD,IAAAA,CAAC,KAAA,EAAA,EAAY,WAAU,mCAAA,EACrB,QAAA,EAAA;AAAA,sBAAAC,GAAAA,CAACK,QAAAA,EAAA,EAAS,SAAA,EAAU,UAAA,EAAW,CAAA;AAAA,sBAC/BL,GAAAA,CAACK,QAAAA,EAAA,EAAS,WAAU,UAAA,EAAW;AAAA,KAAA,EAAA,EAFvB,CAGV,CACD,CAAA,EACH,CAAA,GACE,UAAU,MAAA,KAAW,CAAA,mBACvBL,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,qDAAA,EACV,QAAA,EAAA,CAAA,CAAE,iCAAiC,CAAA,EACtC,CAAA,mBAEAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,UAAA,EACX,QAAA,EAAA;AAAA,MAAA,CAAA,OAAA,GAAU,CAAC,EAAE,GAAA,EAAK,EAAA,EAAI,IAAA,EAAM,OAAO,CAAA,GAAI,IAAA,EAAM,GAAA,CAAI,CAAC,GAAA,qBAClDA,IAAAA,CAACO,MAAAA,CAAM,UAAN,EACE,QAAA,EAAA;AAAA,QAAA,CAAC,OAAA,oBAAWN,GAAAA,CAAC,SAAA,EAAA,EAAU,MAAA,EAAQ,IAAI,GAAA,EAAK,KAAA,EAAO,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,CAAA;AAAA,QACpE,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,KAAM;AACnB,UAAA,MAAM,MAAA,GAAS,CAAC,CAAC,EAAA,IAAM,EAAE,cAAA,KAAmB,EAAA;AAC5C,UAAA,MAAM,MAAA,mBACJD,IAAAA,CAAAQ,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,YAAA,cAAA,CAAe,CAAA,CAAE,gBAAgB,QAAQ,CAAA;AAAA,YACzC,CAAA,CAAE,UAAA,KAAe,CAAA,oBAChBR,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,CAAA,0BAAA,EAA6B,CAAA,CAAE,UAAA,GAAa,CAAA,GAAI,cAAA,GAAiB,kBAAkB,CAAA,CAAA,EACjG,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,UAAA,GAAa,IAAI,GAAA,GAAM,EAAA;AAAA,cAAI,cAAA,CAAe,CAAA,CAAE,UAAA,EAAY,QAAQ;AAAA,aAAA,EACrE;AAAA,WAAA,EAEJ,CAAA;AAEF,UAAA,MAAM,MAAA,GAAS,MAAA;AAAA;AAAA,4BAEbC,GAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,mCAAA,EACV,QAAA,EAAA,CAAA,CAAE,gCAAgC,CAAA,EACrC;AAAA,8BAEAD,IAAAA,CAACK,MAAAA,EAAA,EAAO,SAAQ,SAAA,EAAU,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,YAAW,OAAA,EAAS,MAAM,YAAA,CAAa,CAAA,CAAE,SAAS,CAAA,EAC9F,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,cAAA,EAAA,EAAe,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,YAAE,GAAA;AAAA,YAAE,EAAE,uBAAuB;AAAA,WAAA,EACvE,CAAA;AAEF,UAAA,IAAI,OAAA,EAAS;AACX,YAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAsB,SAAA,EAAU,mCAAA,EAC/B,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,2DAAA,EAA6D,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,8BACjFD,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,uDAAA,EACV,QAAA,EAAA;AAAA,gBAAA,CAAA,CAAE,YAAA,IAAgB,QAAA;AAAA,gBAClB,EAAE,QAAA,GAAW,CAAA,MAAA,EAAM,IAAI,IAAA,CAAK,EAAE,QAAQ,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAW,EAAE,GAAA,EAAK,SAAA,EAAW,OAAO,SAAA,EAAW,CAAC,CAAA,CAAA,GAAK;AAAA,eAAA,EACnH,CAAA;AAAA,cACC;AAAA,aAAA,EAAA,EANO,EAAE,SAOZ,CAAA;AAAA,UAEJ;AACA,UAAA,uBACEA,IAAAA,CAAC,KAAA,EAAA,EAAsB,SAAA,EAAU,6DAAA,EAC/B,QAAA,EAAA;AAAA,4BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACb,QAAA,EAAA;AAAA,8BAAAC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qCAAA,EAAuC,QAAA,EAAA,MAAA,EAAO,CAAA;AAAA,8BAC3DD,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACV,QAAA,EAAA;AAAA,gBAAA,CAAA,CAAE,yBAAyB,CAAA;AAAA,gBAAE,GAAA;AAAA,gBAAE,EAAE,YAAA,IAAgB,QAAA;AAAA,gBACjD,CAAA,CAAE,QAAA,GAAW,CAAA,MAAA,EAAM,IAAI,IAAA,CAAK,CAAA,CAAE,QAAQ,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAW,WAAW,CAAC,CAAA,CAAA,GAAK;AAAA,eAAA,EAC1F;AAAA,aAAA,EACF,CAAA;AAAA,YACC;AAAA,WAAA,EAAA,EARO,EAAE,SASZ,CAAA;AAAA,QAEJ,CAAC;AAAA,OAAA,EAAA,EAhDsB,GAAA,CAAI,GAAA,IAAO,KAiDhC,CACD,CAAA;AAAA,MACA,MAAA,GAAS,qBACRA,IAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,OAAA,CAAQ,CAAA,0BAAA,EAA6B,gBAAgB,CAAA,CAAE,CAAA;AAAA,UAC7D,OAAA,EAAS,MAAM,uBAAA,CAAwB,KAAK,CAAA;AAAA,UAC5C,SAAA,EAAU,oHAAA;AAAA,UAET,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,+BAA+B,EAAE,KAAA,EAAO,OAAO,SAAA,CAAU,MAAM,GAAG,CAAA;AAAA,4BACrEC,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAU,aAAA,EAAc;AAAA;AAAA;AAAA;AACxC,KAAA,EAEJ,CAAA;AAAA,IAGD,6BACCA,GAAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,SAAA;AAAA,QACX,IAAA,EAAK,QAAA;AAAA,QACL,IAAA,EAAI,IAAA;AAAA,QACJ,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,UAAA,IAAI,CAAC,CAAA,EAAG,YAAA,CAAa,IAAI,CAAA;AAAA,QAAE,CAAA;AAAA,QAClD,YAAY,MAAM;AAAE,UAAA,YAAA,CAAa,IAAI,CAAA;AAAG,UAAA,QAAA,EAAS;AAAA,QAAE;AAAA;AAAA;AACrD,GAAA,EAEJ,CAAA;AAEJ;AAgBO,SAAS,kBAAkB,EAAE,OAAA,GAAU,MAAA,EAAO,GAA4B,EAAC,EAAG;AACnF,EAAA,MAAM,IAAIF,cAAAA,EAAe;AACzB,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAO,GAAI,kBAAA,EAAmB;AAChD,EAAA,MAAM,WAAW,oBAAA,EAAqB;AACtC,EAAA,MAAM,YAAA,GAAe,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,YAAY,CAAA;AAC5D,EAAA,MAAM,YAAA,GAAe,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,YAAY,CAAA;AAC5D,EAAA,MAAM,iBAAA,GAAoB,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,iBAAiB,CAAA;AACtE,EAAA,MAAM,iBAAA,GAAoB,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,iBAAiB,CAAA;AACtE,EAAA,MAAM,eAAA,GAAkB,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,eAAe,CAAA;AAClE,EAAA,MAAM,gBAAA,GAAmB,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,gBAAgB,CAAA;AACpE,EAAA,MAAM,uBAAA,GAA0B,iBAAA,CAAkB,CAAC,CAAA,KAAM,EAAE,uBAAuB,CAAA;AAElF,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIG,SAAwB,IAAI,CAAA;AAC1E,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIA,SAAwB,IAAI,CAAA;AACxE,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAIA,QAAAA;AAAA,IACpB,MAAO,cAAA,EAAe,CAAE,QAAA,CAAS,gBAAgB,IAAI,QAAA,GAAW;AAAA,GAClE;AAKA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAqC,IAAI,CAAA;AAC7E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAIA,SAAwB,IAAI,CAAA;AAClE,EAAA,MAAM,WAAA,GAAcK,MAAAA,CAAM,WAAA,CAAY,YAAY;AAChD,IAAA,IAAI;AACF,MAAA,cAAA,CAAe,IAAI,CAAA;AACnB,MAAA,aAAA,CAAe,MAAM,QAAA,CAAS,qBAAA,IAAwB,IAAM,EAAE,CAAA;AAAA,IAChE,SAAS,CAAA,EAAQ;AACf,MAAA,cAAA,CAAe,CAAA,EAAG,OAAA,IAAW,MAAA,CAAO,CAAC,CAAC,CAAA;AACtC,MAAA,aAAA,CAAc,EAAE,CAAA;AAAA,IAClB;AAAA,EACF,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAEb,EAAAJ,UAAU,MAAM;AACd,IAAA,iBAAA,EAAkB;AAClB,IAAA,iBAAA,EAAkB;AAClB,IAAA,KAAK,WAAA,EAAY;AAAA,EACnB,CAAA,EAAG,EAAE,CAAA;AAKL,EAAA,MAAM,eAAe,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,gBAAgB,eAAe,CAAA;AACjF,EAAA,MAAM,eAAe,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,MAAM,CAAA;AACnE,EAAA,MAAM,iBAAiB,YAAA,CAAa,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,WAAW,QAAQ,CAAA;AACvE,EAAA,MAAM,cAAA,GAAA,CAAkB,cAAc,EAAC,EAAG,OAAO,CAAC,CAAA,KAAM,CAAA,CAAE,YAAA,KAAiB,SAAS,CAAA;AAEpF,EAAA,MAAM,UAAU,OAAA,KAAY,OAAA;AAG5B,EAAA,MAAM,YAAA,GAAe,UAAU,EAAA,GAAK,uCAAA;AAEpC,EAAA,eAAe,UAAA,CAAW,SAAA,EAAmB,OAAA,EAAiB,KAAA,EAAgB;AAC5E,IAAA,MAAM,gBAAgB,EAAE,aAAA,EAAe,WAAW,cAAA,EAAgB,OAAA,EAAS,OAAO,CAAA;AAAA,EACpF;AAEA,EAAA,eAAe,WAAA,CAAY,SAAA,EAAmB,OAAA,EAAiB,KAAA,EAAgB;AAC7E,IAAA,MAAM,iBAAiB,EAAE,SAAA,EAAW,cAAA,EAAgB,OAAA,EAAS,OAAO,CAAA;AACpE,IAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,EACzB;AAEA,EAAA,MAAM,gBAAA,mBACJF,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,UAAA,EACZ,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAC,OAAA,qBACjBD,IAAAA,CAAC,KAAA,EAAA,EAAqB,WAAU,eAAA,EAC9B,QAAA,EAAA;AAAA,oBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,OAAE,SAAA,EAAU,8CAAA,EAAgD,kBAAQ,eAAA,IAAmB,CAAA,CAAE,sBAAsB,CAAA,EAAE,CAAA;AAAA,wBAClHD,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EACV,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,uBAAuB,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,EAAE,cAAA,EAAe;AAAA,UACvE,OAAA,CAAQ,eAAe,CAAA,CAAA,EAAI,CAAA,CAAE,mBAAmB,CAAC,CAAA,CAAA,EAAI,OAAA,CAAQ,YAAY,CAAA,CAAA,GAAK;AAAA,SAAA,EACjF;AAAA,OAAA,EACF,CAAA;AAAA,sBACAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,qBAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,6CAAA,EAA+C,QAAA,EAAA,CAAA,CAAE,+BAA+B,CAAA,EAAE,CAAA;AAAA,wBAC/FA,IAAC,GAAA,EAAA,EAAE,SAAA,EAAU,kDAAkD,QAAA,EAAA,cAAA,CAAe,OAAA,CAAQ,cAAA,EAAgB,QAAQ,CAAA,EAAE;AAAA,OAAA,EAClH;AAAA,KAAA,EACF,CAAA;AAAA,IAGC,eAAA,KAAoB,OAAA,CAAQ,EAAA,mBAC3BA,GAAAA,CAAC,gBAAA,EAAA,EAAiB,OAAA,EAAkB,QAAA,EAAoB,OAAA,EAAS,WAAA,EAAa,CAAA,mBAE9ED,IAAAA;AAAA,MAACK,MAAAA;AAAA,MAAA;AAAA,QAAO,OAAA,EAAQ,MAAA;AAAA,QAAO,IAAA,EAAK,MAAA;AAAA,QAC1B,WAAA,EAAU,sBAAA;AAAA,QACV,OAAA,EAAS,MAAM,kBAAA,CAAmB,OAAA,CAAQ,EAAE,CAAA;AAAA,QAC5C,SAAA,EAAU,gHAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,EAAE,iCAAiC;AAAA;AAAA;AAAA;AAC1E,GAAA,EAAA,EAzBM,OAAA,CAAQ,EA2BlB,CACD,CAAA,EACH,CAAA;AAGF,EAAA,MAAM,qCACJA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YACZ,QAAA,EAAA,iBAAA,CAAkB,cAAc,CAAA,CAAE,GAAA,CAAI,CAAC,GAAA,qBACtCD,IAAAA,CAACO,MAAAA,CAAM,UAAN,EACC,QAAA,EAAA;AAAA,oBAAAN,GAAAA,CAAC,aAAU,MAAA,EAAQ,GAAA,CAAI,KAAK,KAAA,EAAO,GAAA,CAAI,KAAK,MAAA,EAAQ,CAAA;AAAA,IACvD,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,4BACbA,GAAAA,CAAC,KAAA,EAAA,EAAqB,SAAA,EAAU,WAAA,EAC9B,QAAA,kBAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yCAAA,EACb,QAAA,EAAA;AAAA,sBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,SAAA,EACb,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,OAAE,SAAA,EAAU,qBAAA,EAAuB,kBAAQ,eAAA,IAAmB,CAAA,CAAE,sBAAsB,CAAA,EAAE,CAAA;AAAA,wBACzFD,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,+BAAA,EAEV,QAAA,EAAA;AAAA,UAAA,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,KAAM,QAAA,CAAS,OAAA,CAAQ,QAAQ,CAAA,GACrD,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,CAAE,mBAAmB,MAAA,EAAW,WAAW,CAAA,GACpE,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,CAAE,cAAA,CAAe,MAAA,EAAW,EAAE,GAAA,EAAK,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,GAAG,aAAa,CAAA;AAAA,UAC5G,UAAA;AAAA,UACA,OAAA,CAAQ,QAAA,GAAW,IAAI,IAAA,CAAK,OAAA,CAAQ,QAAQ,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAW,WAAW,CAAA,GAAI;AAAA,SAAA,EAC9F,CAAA;AAAA,QACC,QAAQ,YAAA,oBACPA,IAAAA,CAAC,GAAA,EAAA,EAAE,WAAU,mCAAA,EAAqC,QAAA,EAAA;AAAA,UAAA,CAAA,CAAE,mBAAmB,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,OAAA,CAAQ;AAAA,SAAA,EAAa;AAAA,OAAA,EAEpG,CAAA;AAAA,sBACAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iCAAA,EACb,QAAA,EAAA;AAAA,wBAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,YAAA,EACb,QAAA,EAAA;AAAA,0BAAAA,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uDAAA,EACb,QAAA,EAAA;AAAA,4BAAAA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,0BAA0B,CAAA;AAAA,cAAE,IAAA;AAAA,cAAG,cAAA,CAAe,OAAA,CAAQ,cAAA,EAAgB,QAAQ;AAAA,aAAA,EAAE,CAAA;AAAA,4BACzFA,KAAC,MAAA,EAAA,EAAM,QAAA,EAAA;AAAA,cAAA,CAAA,CAAE,2BAA2B,CAAA;AAAA,cAAE,IAAA;AAAA,cAAG,cAAA,CAAe,OAAA,CAAQ,cAAA,IAAkB,CAAA,EAAG,QAAQ;AAAA,aAAA,EAAE;AAAA,WAAA,EACjG,CAAA;AAAA,UACC,QAAQ,UAAA,KAAe,MAAA,IAAa,OAAA,CAAQ,UAAA,KAAe,qBAC1DA,IAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAW,6CAA6C,OAAA,CAAQ,UAAA,GAAa,CAAA,GAAI,cAAA,GAAiB,kBAAkB,CAAA,CAAA,EACpH,QAAA,EAAA;AAAA,YAAA,CAAA,CAAE,qBAAqB,CAAA;AAAA,YAAE,IAAA;AAAA,YAAG,OAAA,CAAQ,UAAA,IAAc,CAAA,GAAI,GAAA,GAAM,EAAA;AAAA,YAAI,cAAA,CAAe,OAAA,CAAQ,UAAA,EAAY,QAAQ;AAAA,WAAA,EAC9G,CAAA;AAAA,UAED,OAAA,CAAQ,KAAA,oBACPC,GAAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,iEAAA,EAAkE,KAAA,EAAO,OAAA,CAAQ,KAAA,EAC3F,QAAA,EAAA,OAAA,CAAQ,KAAA,EACX;AAAA,SAAA,EAEJ,CAAA;AAAA,wBACAD,IAAAA,CAACK,MAAAA,EAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAM,iBAAA,CAAkB,OAAA,CAAQ,EAAE,CAAA,EAC3E,QAAA,EAAA;AAAA,0BAAAJ,GAAAA,CAAC,GAAA,EAAA,EAAI,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,UAAE,GAAA;AAAA,UAAE,EAAE,wBAAwB;AAAA,SAAA,EAC7D;AAAA,OAAA,EACF;AAAA,KAAA,EACF,CAAA,EAAA,EArCQ,OAAA,CAAQ,EAsClB,CACD;AAAA,GAAA,EAAA,EA1CsB,GAAA,CAAI,GAAA,IAAO,KA2ChC,CACD,CAAA,EACH,CAAA;AAGF,EAAA,uBACED,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,GAAU,KAAK,WAAA,EAG5B,QAAA,EAAA;AAAA,IAAA,CAAC,2BACAC,GAAAA;AAAA,MAAC,aAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAO,MAAA,CAAO,aAAA,IAAiB,CAAA,CAAE,sBAAsB,CAAA;AAAA,QACvD,QAAA,EAAU,EAAE,yBAAyB,CAAA;AAAA,QACrC,OAAA,EACE,YAAA,CAAa,MAAA,GAAS,YAAA,CAAa,MAAA;AAAA;AAAA;AAAA;AAAA,0BAIjCD,IAAAA,CAACK,MAAAA,EAAA,EAAO,WAAA,EAAU,qBAAA,EAAsB,IAAA,EAAK,IAAA,EAAK,OAAA,EAAS,MAAM,uBAAA,CAAwB,IAAI,CAAA,EAC3F,QAAA,EAAA;AAAA,4BAAAJ,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,YAAE,GAAA;AAAA,YAAE,EAAE,yCAAyC;AAAA,WAAA,EAChF;AAAA,YACE;AAAA;AAAA,KAER;AAAA,IAGD,OAAA,mBACCD,IAAAA,CAAAQ,QAAAA,EAAA,EAEE,QAAA,EAAA;AAAA,sBAAAR,IAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,EACd,QAAA,EAAA;AAAA,wBAAAC,GAAAA,CAAC,SAAI,SAAA,EAAU,sDAAA,EACb,0BAAAD,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,0BAAAC,GAAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,mBAAA,EAAoB,CAAA;AAAA,0BACxCA,GAAAA,CAAC,IAAA,EAAA,EAAG,WAAU,uBAAA,EAAyB,QAAA,EAAA,CAAA,CAAE,6BAA6B,CAAA,EAAE,CAAA;AAAA,UACvE,YAAA,CAAa,SAAS,CAAA,oBACrBA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yEAAA,EACb,QAAA,EAAA,YAAA,CAAa,MAAA,EAChB;AAAA,SAAA,EAEJ,CAAA,EACF,CAAA;AAAA,QAEC,YAAA,CAAa,MAAA,KAAW,CAAA,mBACvBA,GAAAA,CAAC,oBAAiB,YAAA,EAA4B,QAAA,EAAoB,MAAA,EAAQ,UAAA,EAAY,CAAA,GAEtF;AAAA,OAAA,EAEJ,CAAA;AAAA,MAGC,YAAA,CAAa,SAAS,CAAA,IAAK,YAAA,CAAa,SAAS,YAAA,CAAa,MAAA,oBAC7DA,GAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,UAAA,EACb,QAAA,kBAAAA,IAAC,sBAAA,EAAA,EAAuB,YAAA,EAA4B,cAA4B,QAAA,EAAoB,MAAA,EAAQ,UAAA,EAAY,OAAA,EAAkB,CAAA,EAC5I,CAAA;AAAA,sBAKFA,IAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,MAAM,UAAA,EAAY,KAAA,EAAO,WAAA,EAAa,QAAA,EAAU,WAAA,EAAa,CAAA;AAAA,sBAK5FD,IAAAA;AAAA,QAAC,GAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAM,QAAQ,2BAA2B,CAAA;AAAA,UACzC,SAAA,EAAU,gJAAA;AAAA,UAEV,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,aAAA,EAAc,CAAA;AAAA,YAC9B,EAAE,+BAA+B,CAAA;AAAA,YACjC,eAAe,MAAA,GAAS,CAAA,oBACvBD,IAAAA,CAAC,MAAA,EAAA,EAAK,WAAU,mCAAA,EAAoC,QAAA,EAAA;AAAA,cAAA,GAAA;AAAA,cAAE,cAAA,CAAe,MAAA;AAAA,cAAO;AAAA,aAAA,EAAC;AAAA;AAAA;AAAA;AAEjF,KAAA,EACF,CAAA,mBAEAA,IAAAA,CAAAQ,QAAAA,EAAA,EAME,QAAA,EAAA;AAAA,sBAAAP,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,YAAA,EAAY,MAAA,CAAO,aAAA,IAAiB,CAAA,CAAE,sBAAsB,CAAA;AAAA,UAC5D,KAAA,EAAO,GAAA;AAAA,UACP,QAAA,EAAU,MAAA;AAAA,UACV,IAAA,EAAM;AAAA,YACJ,EAAE,KAAA,EAAO,MAAA,EAAQ,KAAA,EAAO,CAAA,CAAE,wBAAwB,CAAA,EAAG,IAAA,EAAM,QAAA,EAAU,KAAA,EAAO,YAAA,CAAa,MAAA,EAAO;AAAA,YAChG,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,0BAA0B,CAAA,EAAG,IAAA,EAAM,KAAA,EAAO,KAAA,EAAO,cAAA,CAAe,MAAA,EAAO;AAAA,YACnG,EAAE,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,CAAA,CAAE,0BAA0B,CAAA,EAAG,IAAA,EAAM,cAAA,EAAgB,KAAA,EAAO,cAAA,CAAe,MAAA;AAAO;AAC9G;AAAA,OACF;AAAA,MAEC,QAAQ,MAAA,oBACPA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cACb,QAAA,EAAA,YAAA,CAAa,MAAA,KAAW,oBACvBA,GAAAA,CAAC,OAAE,SAAA,EAAU,qDAAA,EAAuD,YAAE,+BAA+B,CAAA,EAAE,IAEvG,gBAAA,EAEJ,CAAA;AAAA,MAGD,QAAQ,QAAA,oBACPA,IAAC,KAAA,EAAA,EAAI,SAAA,EAAW,cACb,QAAA,EAAA,cAAA,CAAe,MAAA,KAAW,oBACzBA,GAAAA,CAAC,SAAI,SAAA,EAAU,qDAAA,EAAuD,YAAE,iCAAiC,CAAA,EAAE,IAE3G,kBAAA,EAEJ,CAAA;AAAA,MAGD,GAAA,KAAQ,QAAA,oBACPA,GAAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,IAAA,EAAM,UAAA,EAAY,KAAA,EAAO,WAAA,EAAa,QAAA,EAAU,WAAA,EAAa,YAAY,KAAA,EAAO;AAAA,KAAA,EAEnH,CAAA;AAAA,IAGD,kCACCA,GAAAA;AAAA,MAAC,sBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,cAAA;AAAA,QACX,IAAA,EAAK,SAAA;AAAA,QACL,IAAA,EAAI,IAAA;AAAA,QACJ,YAAA,EAAc,CAAC,CAAA,KAAM;AAAE,UAAA,IAAI,CAAC,CAAA,EAAG,iBAAA,CAAkB,IAAI,CAAA;AAAA,QAAE;AAAA;AAAA;AACzD,GAAA,EAEJ,CAAA;AAEJ;AAMA,SAAS,sBAAA,CAAuB;AAAA,EAC9B,YAAA;AAAA,EACA,YAAA;AAAA,EACA,QAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAMG;AACD,EAAA,MAAM,IAAIF,cAAAA,EAAe;AACzB,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIG,SAAS,KAAK,CAAA;AAC9C,EAAA,MAAM,iBAAA,GAAoB,YAAA,CAAa,MAAA,CAAO,CAAC,MAAM,CAAC,YAAA,CAAa,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,aAAA,KAAkB,CAAA,CAAE,EAAE,CAAC,CAAA;AAExG,EAAA,IAAI,iBAAA,CAAkB,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAE3C,EAAA,uBACEF,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,OAAA,KAAY,OAAA,GAAU,KAAK,uCAAA,EACzC,QAAA,EAAA;AAAA,oBAAAA,IAAAA;AAAA,MAACK,MAAAA;AAAA,MAAA;AAAA,QAAO,OAAA,EAAQ,MAAA;AAAA,QAAO,IAAA,EAAK,MAAA;AAAA,QAC1B,OAAA,EAAS,MAAM,WAAA,CAAY,CAAC,QAAQ,CAAA;AAAA,QACpC,SAAA,EAAU,iJAAA;AAAA,QAEV,QAAA,EAAA;AAAA,0BAAAL,IAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,yBAAA,EACd,QAAA,EAAA;AAAA,4BAAAC,GAAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,sBAAA,EAAuB,CAAA;AAAA,YACtC,EAAE,4BAA4B;AAAA,WAAA,EACjC,CAAA;AAAA,UACC,QAAA,mBAAWA,GAAAA,CAAC,SAAA,EAAA,EAAU,SAAA,EAAU,SAAA,EAAU,CAAA,mBAAKA,GAAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAU,SAAA,EAAU;AAAA;AAAA;AAAA,KACnF;AAAA,IACC,4BAAYA,GAAAA,CAAC,oBAAiB,YAAA,EAAc,iBAAA,EAAmB,UAAoB,MAAA,EAAgB;AAAA,GAAA,EACtG,CAAA;AAEJ","file":"chunk-MGDAJLUQ.js","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { Check, X, Printer } from 'lucide-react'\nimport { useFinancialConfig, useFinancialProvider, formatCurrency } from '../context'\nimport type { CashSessionSummary, CashSessionReview } from '@fayz-ai/financial/domain/cash-session'\nimport type { FinancialMovement } from '@fayz-ai/financial/domain/movement'\nimport { useTranslation } from '@fayz-ai/core'\nimport { Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, ModalBody, ModalFooter } from '@fayz-ai/ui'\nimport { Button } from '@fayz-ai/ui'\nimport { Skeleton, openPrintWindow, printDocument } from '@fayz-ai/ui'\nimport { useAuth } from '@fayz-ai/admin'\n\n// ---------------------------------------------------------------------------\n// O passo que faltava entre \"fechou\" e \"aprovado\".\n//\n// A fila de conferência aprovava direto da linha — um clique, sem ver as\n// transações do turno nem o valor final contado. O V1 abre uma tela própria\n// para isso (conferência é OLHAR antes de assinar), e é essa a peça que\n// faltava: a mesma janela serve para CONFERIR (fila pendente, com Aprovar e\n// Rejeitar) e para ver DETALHES de uma sessão já decidida (histórico,\n// somente leitura) — o conteúdo é idêntico, só os botões do rodapé mudam.\n// ---------------------------------------------------------------------------\n\nexport interface CashSessionReviewModalProps {\n sessionId: string\n open: boolean\n onOpenChange: (open: boolean) => void\n /** 'review': fila pendente, mostra Aprovar/Rejeitar (bloqueado para quem fechou). 'details': histórico, somente leitura. */\n mode: 'review' | 'details'\n onReviewed?: () => void\n}\n\nexport function CashSessionReviewModal({ sessionId, open, onOpenChange, mode, onReviewed }: CashSessionReviewModalProps) {\n const t = useTranslation()\n const { currency } = useFinancialConfig()\n const provider = useFinancialProvider()\n const { user } = useAuth()\n const me = user?.id ?? null\n\n const [summary, setSummary] = useState<CashSessionSummary | null>(null)\n const [movements, setMovements] = useState<FinancialMovement[] | null>(null)\n const [review, setReview] = useState<CashSessionReview | null>(null)\n const [error, setError] = useState<string | null>(null)\n const [busy, setBusy] = useState(false)\n\n useEffect(() => {\n if (!open) return\n let cancelled = false\n setSummary(null); setMovements(null); setReview(null); setError(null)\n async function load() {\n try {\n const [s, m] = await Promise.all([\n provider.getCashSessionSummary(sessionId),\n provider.getMovements({ cashSessionId: sessionId, status: 'paid', pageSize: 200 }),\n ])\n if (cancelled) return\n setSummary(s)\n setMovements(m.data)\n // Detalhes do histórico quer saber o veredito; a fila pendente já\n // sabe que não tem um — pedir de novo ali seria uma consulta à toa.\n if (mode === 'details') {\n const reviews = (await provider.getCashSessionReviews?.()) ?? []\n if (cancelled) return\n setReview(reviews.find((r) => r.sessionId === sessionId) ?? null)\n }\n } catch (e: any) {\n if (!cancelled) setError(e?.message ?? String(e))\n }\n }\n void load()\n return () => { cancelled = true }\n }, [open, sessionId, mode, provider])\n\n const session = summary?.session\n const fechei = !!me && session?.closedByUserId === me\n const loading = summary === null || movements === null\n\n async function decide(verdict: 'approved' | 'rejected') {\n setBusy(true); setError(null)\n try {\n await provider.reviewCashSession?.(sessionId, verdict)\n onReviewed?.()\n onOpenChange(false)\n } catch (e: any) {\n setError(e?.message ?? String(e))\n } finally {\n setBusy(false)\n }\n }\n\n function handlePrint() {\n if (!session) return\n const popup = openPrintWindow('width=720,height=900')\n if (!popup) return\n const title = session.bankAccountName ?? t('financial.cash.title')\n const rows = (movements ?? []).map((m) => `<tr><td>${m.paymentDate ? new Date(m.paymentDate).toLocaleString() : '—'}</td><td>${m.method ? t(`financial.method.${m.method}`) : '—'}</td><td style=\"text-align:right\">${m.direction === 'credit' ? '+' : '-'}${formatCurrency(m.paidAmount, currency)}</td></tr>`).join('')\n printDocument({\n title,\n css: 'body{font:12px sans-serif}table{width:100%;border-collapse:collapse;margin-top:16px}th,td{border-bottom:1px solid #ddd;padding:8px;text-align:left}h1{font-size:16px;margin-bottom:8px}p{margin:2px 0}',\n body: `<h1>${title}</h1>` +\n `<p>${t('financial.cash.opened')}: ${new Date(session.openedAt).toLocaleString()}${session.openedByName ? ` ${t('financial.cash.by')} ${session.openedByName}` : ''}</p>` +\n (session.closedAt ? `<p>${t('financial.cash.closeLabel')}: ${new Date(session.closedAt).toLocaleString()}${session.closedByName ? ` ${t('financial.cash.by')} ${session.closedByName}` : ''}</p>` : '') +\n `<p>${t('financial.cash.openingBalance')}: ${formatCurrency(session.openingBalance, currency)}</p>` +\n `<p>${t('financial.cash.finalValue')}: ${formatCurrency(session.closingBalance ?? 0, currency)}</p>` +\n `<p>${t('financial.cash.difference')}: ${(session.difference ?? 0) >= 0 ? '+' : ''}${formatCurrency(session.difference ?? 0, currency)}</p>` +\n `<table><thead><tr><th>${t('financial.cash.opened')}</th><th>${t('financial.cash.method')}</th><th style=\"text-align:right\">${t('financial.cash.finalValue')}</th></tr></thead><tbody>${rows}</tbody></table>`,\n target: popup,\n })\n }\n\n return (\n <Modal open={open} onOpenChange={onOpenChange}>\n <ModalContent size=\"lg\" noPadding className=\"gap-0\">\n <ModalHeader className=\"border-b px-4 py-3\">\n <ModalTitle className=\"text-sm\">\n {mode === 'review' ? t('financial.cash.reviewModalTitle') : t('financial.cash.detailsModalTitle')}\n </ModalTitle>\n <ModalDescription className=\"text-xs\">\n {session?.bankAccountName ?? t('financial.cash.title')}\n </ModalDescription>\n </ModalHeader>\n\n <ModalBody className=\"p-4 space-y-4\">\n {error && <p className=\"text-xs text-destructive\">{error}</p>}\n\n {loading ? (\n <div className=\"space-y-2\">\n {[0, 1, 2].map((i) => <Skeleton key={i} className=\"h-5 w-full\" />)}\n </div>\n ) : (\n <>\n <div className=\"rounded-lg border bg-muted/30 p-3 space-y-1\">\n <p className=\"text-[10px] font-semibold text-muted-foreground uppercase mb-1\">{t('financial.cash.summary')}</p>\n <SummaryRow label={t('financial.cash.openingBalance')} value={formatCurrency(session!.openingBalance, currency)} />\n <SummaryRow label={t('financial.cash.finalValue')} value={formatCurrency(session!.closingBalance ?? 0, currency)} strong />\n <SummaryRow\n label={t('financial.cash.difference')}\n value={`${(session!.difference ?? 0) >= 0 ? '+' : ''}${formatCurrency(session!.difference ?? 0, currency)}`}\n tone={(session!.difference ?? 0) > 0 ? 'success' : (session!.difference ?? 0) < 0 ? 'destructive' : undefined}\n />\n <SummaryRow label={t('financial.cash.movementCount')} value={String(summary!.movementCount)} />\n <SummaryRow label={t('financial.cash.totalIn')} value={formatCurrency(summary!.totalInflow, currency)} />\n <SummaryRow label={t('financial.cash.totalOut')} value={formatCurrency(summary!.totalOutflow, currency)} />\n </div>\n\n <div className=\"rounded-lg border\">\n <p className=\"px-3 py-2 text-[10px] font-semibold text-muted-foreground uppercase border-b\">{t('financial.cash.transactions')}</p>\n {(movements ?? []).length === 0 ? (\n <p className=\"px-3 py-4 text-center text-xs text-muted-foreground\">{t('financial.cash.noTransactions')}</p>\n ) : (\n <div className=\"max-h-64 overflow-y-auto divide-y\">\n {movements!.map((m) => (\n <div key={m.id} className=\"flex items-center justify-between px-3 py-2 text-xs\">\n <div className=\"min-w-0\">\n <p className=\"font-medium\">{m.method ? t(`financial.method.${m.method}`) : '—'}</p>\n <p className=\"text-muted-foreground\">{m.paymentDate ? new Date(m.paymentDate).toLocaleString() : '—'}</p>\n </div>\n <span className={`shrink-0 tabular-nums font-medium ${m.direction === 'credit' ? 'text-success' : 'text-destructive'}`}>\n {m.direction === 'credit' ? '+' : '-'}{formatCurrency(m.paidAmount, currency)}\n </span>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {mode === 'details' && (\n <p className=\"text-xs text-muted-foreground\">\n {review?.reviewStatus === 'approved'\n ? t('financial.cash.verdictApproved')\n : review?.reviewStatus === 'rejected'\n ? t('financial.cash.verdictRejected')\n : t('financial.cash.verdictPending')}\n {review?.reviewerName ? ` · ${t('financial.cash.reviewedBy')} ${review.reviewerName}` : ''}\n </p>\n )}\n\n {mode === 'review' && fechei && (\n <p className=\"text-xs text-muted-foreground\">{t('financial.cash.cannotReviewOwn')}</p>\n )}\n </>\n )}\n </ModalBody>\n\n <ModalFooter className=\"border-t px-4 py-3\">\n <Button variant=\"outline\" size=\"sm\" onClick={handlePrint} disabled={loading}>\n <Printer className=\"h-3.5 w-3.5\" /> {t('financial.cash.print')}\n </Button>\n {mode === 'review' && !fechei && (\n <>\n <Button variant=\"outline\" size=\"sm\" disabled={busy || loading} onClick={() => void decide('rejected')}>\n <X className=\"h-3.5 w-3.5\" /> {t('financial.cash.reject')}\n </Button>\n <Button size=\"sm\" disabled={busy || loading} onClick={() => void decide('approved')}>\n <Check className=\"h-3.5 w-3.5\" /> {t('financial.cash.confirmAndApprove')}\n </Button>\n </>\n )}\n </ModalFooter>\n </ModalContent>\n </Modal>\n )\n}\n\nfunction SummaryRow({ label, value, strong, tone }: { label: string; value: string; strong?: boolean; tone?: 'success' | 'destructive' }) {\n return (\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{label}</span>\n <span className={`tabular-nums ${strong ? 'text-sm font-bold' : 'font-medium'} ${tone === 'success' ? 'text-success' : tone === 'destructive' ? 'text-destructive' : ''}`}>\n {value}\n </span>\n </div>\n )\n}\n","import React, { useEffect, useState, useMemo } from 'react'\nimport { Landmark, Play, Square, Clock, ChevronDown, ChevronUp, ChevronRight, Calculator, ClipboardCheck, Eye, Inbox } from 'lucide-react'\nimport { useFinancialConfig, useFinancialStore, useFinancialProvider, formatCurrency } from '../context'\nimport type { CashSessionReview } from '@fayz-ai/financial/domain/cash-session'\nimport { useTranslation, currentAppPath, appHref } from '@fayz-ai/core'\nimport { SubpageHeader, PageTabs, Textarea, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Input } from '@fayz-ai/ui'\nimport { CurrencyInput } from '@fayz-ai/ui'\nimport { Button } from '@fayz-ai/ui'\nimport { Skeleton } from '@fayz-ai/ui'\nimport { useAuth, GetStarted } from '@fayz-ai/admin'\nimport { CashSessionReviewModal } from '../components/CashSessionReviewModal'\n\n// ---------------------------------------------------------------------------\n// Denomination definitions (BRL default — overridden by currency config)\n// ---------------------------------------------------------------------------\n\ninterface Denomination {\n label: string\n value: number\n type: 'bill' | 'coin'\n}\n\nconst BRL_DENOMINATIONS: Denomination[] = [\n { label: 'R$ 200', value: 200, type: 'bill' },\n { label: 'R$ 100', value: 100, type: 'bill' },\n { label: 'R$ 50', value: 50, type: 'bill' },\n { label: 'R$ 20', value: 20, type: 'bill' },\n { label: 'R$ 10', value: 10, type: 'bill' },\n { label: 'R$ 5', value: 5, type: 'bill' },\n { label: 'R$ 2', value: 2, type: 'bill' },\n { label: 'R$ 1', value: 1, type: 'coin' },\n { label: 'R$ 0,50', value: 0.5, type: 'coin' },\n { label: 'R$ 0,25', value: 0.25, type: 'coin' },\n { label: 'R$ 0,10', value: 0.1, type: 'coin' },\n { label: 'R$ 0,05', value: 0.05, type: 'coin' },\n]\n\n// ---------------------------------------------------------------------------\n// Denomination counter sub-component\n// ---------------------------------------------------------------------------\n\nfunction DenominationCounter({\n denominations,\n counts,\n onChange,\n currency,\n}: {\n denominations: Denomination[]\n counts: Record<number, number>\n onChange: (counts: Record<number, number>) => void\n currency: { code: string; locale: string; symbol: string }\n}) {\n const t = useTranslation()\n const bills = denominations.filter((d) => d.type === 'bill')\n const coins = denominations.filter((d) => d.type === 'coin')\n\n function setCount(value: number, count: number) {\n onChange({ ...counts, [value]: Math.max(0, count) })\n }\n\n function renderRow(d: Denomination) {\n const qty = counts[d.value] ?? 0\n const subtotal = qty * d.value\n return (\n // Larguras fixas somavam ~304px por coluna; dentro do diálogo a coluna\n // tem ~200px e \"R$ 200\" quebrava em duas linhas, deixando as notas com\n // alturas diferentes. O rótulo não quebra e o subtotal é quem cede.\n // `max-w`: numa coluna de 1125px o `flex-1` jogava o subtotal a 380px do\n // \"=\", e o olho perdia a linha entre a nota e o valor dela.\n <div key={d.value} className=\"flex max-w-[17rem] items-center gap-1.5 py-1\">\n <span className=\"w-14 shrink-0 whitespace-nowrap text-xs font-medium text-muted-foreground\">{d.label}</span>\n <span className=\"shrink-0 text-muted-foreground text-xs\">×</span>\n <div className=\"w-12 shrink-0\">\n <Input\n type=\"number\"\n min={0}\n value={qty || ''}\n onChange={(e) => setCount(d.value, parseInt(e.target.value) || 0)}\n placeholder=\"0\"\n className=\"h-auto rounded border-border bg-background px-1.5 py-1 text-center text-xs tabular-nums shadow-none\"\n />\n </div>\n <span className=\"shrink-0 text-xs text-muted-foreground\">=</span>\n <span className=\"min-w-0 flex-1 whitespace-nowrap text-xs text-right tabular-nums font-medium\">\n {formatCurrency(subtotal, currency)}\n </span>\n </div>\n )\n }\n\n return (\n // O contador leva o PRÓPRIO ponto de medida. `fz-fields-2` responde ao\n // `fz-container` mais próximo, e a página do Financeiro não marca um — as\n // notas ficavam numa coluna só com 1125px de largura, enquanto no diálogo\n // (que marca) o `sm:` antigo lia a JANELA e insistia em duas colunas de\n // 200px. Medindo a si mesmo, acerta nos dois lugares.\n <div className=\"fz-container\">\n <div className=\"fz-fields fz-fields-2\">\n {bills.length > 0 && (\n <div>\n <p className=\"text-[10px] font-semibold text-muted-foreground uppercase mb-1\">{t('financial.cash.bills')}</p>\n {bills.map(renderRow)}\n </div>\n )}\n {coins.length > 0 && (\n <div>\n <p className=\"text-[10px] font-semibold text-muted-foreground uppercase mb-1\">{t('financial.cash.coins')}</p>\n {coins.map(renderRow)}\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Opening panel — abertura simples: usuário, data, saldo inicial, conta.\n// Sem etapa de confirmação, sem contagem de cédulas: é a MESMA gaveta que o\n// V1 abre em um único passo.\n// ---------------------------------------------------------------------------\n\ntype OpenMode = 'quick' | 'count'\n\nfunction CashOpeningPanel({\n cashAccounts,\n currency,\n onOpen,\n}: {\n cashAccounts: { id: string; name: string }[]\n currency: { code: string; locale: string; symbol: string }\n onOpen: (accountId: string, balance: number, notes?: string) => Promise<void>\n}) {\n const [selectedAccountId, setSelectedAccountId] = useState<string>(cashAccounts[0]?.id ?? '')\n\n // The accounts arrive AFTER first render, and useState only reads its initial\n // value once — so the id stayed '' while the <select> showed the first option,\n // and opening a caixa sent an empty string where a uuid goes (22P02). Adopt\n // the first account once it exists, and drop a selection that is no longer in\n // the list.\n useEffect(() => {\n if (!cashAccounts.length) return\n if (!cashAccounts.some((a) => a.id === selectedAccountId)) {\n setSelectedAccountId(cashAccounts[0].id)\n }\n }, [cashAccounts, selectedAccountId])\n const [balance, setBalance] = useState(0)\n const [submitting, setSubmitting] = useState(false)\n const t = useTranslation()\n const { user } = useAuth()\n\n // Sem conta de caixa não há o que abrir — e essa é a tela que MAIS gente vê\n // primeiro. Dizer \"nenhuma conta encontrada\" e parar é um beco: quem chegou\n // aqui não sabe que caixa é um tipo de conta, nem onde se cria uma.\n if (cashAccounts.length === 0) {\n return (\n <GetStarted\n feature=\"financial.caixas\"\n title={t('financial.cash.title')}\n heading={t('financial.cash.empty.heading')}\n because={t('financial.cash.empty.because')}\n steps={[\n {\n label: t('financial.cash.empty.step'),\n where: t('financial.cash.empty.stepWhere'),\n },\n ]}\n />\n )\n }\n\n async function handleOpen() {\n setSubmitting(true)\n try {\n await onOpen(selectedAccountId, balance)\n setBalance(0)\n } finally {\n setSubmitting(false)\n }\n }\n\n return (\n <div className=\"p-4 space-y-4\">\n <div className=\"fz-container\">\n <div className=\"fz-fields fz-fields-2\">\n <div>\n <label className=\"text-[10px] font-medium text-muted-foreground uppercase\">{t('financial.cash.user')}</label>\n <p className=\"mt-1 text-sm font-medium truncate\">{user?.email ?? '—'}</p>\n </div>\n <div>\n <label className=\"text-[10px] font-medium text-muted-foreground uppercase\">{t('financial.cash.openingDate')}</label>\n <p className=\"mt-1 text-sm font-medium capitalize\">\n {new Date().toLocaleDateString('pt-BR', { weekday: 'long', day: '2-digit', month: 'long', year: 'numeric' })}\n </p>\n </div>\n </div>\n </div>\n\n <div className=\"fz-container\">\n <div className=\"fz-fields fz-fields-2\">\n <CurrencyInput\n value={balance}\n onChange={setBalance}\n symbol={currency.symbol}\n locale={currency.locale}\n currencyCode={currency.code}\n label={t('financial.cash.openingBalance')}\n />\n <div>\n <label className=\"text-[10px] font-medium text-muted-foreground uppercase\">{t('financial.cash.accountLabel')}</label>\n <Select value={selectedAccountId} onValueChange={setSelectedAccountId}>\n <SelectTrigger className=\"mt-0.5 h-auto bg-card px-2 py-1.5 text-xs shadow-[inset_0_1px_0_rgb(0_0_0_/0.06)]\"><SelectValue /></SelectTrigger>\n <SelectContent>\n {cashAccounts.map((a) => (\n <SelectItem key={a.id} value={a.id}>{a.name}</SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n\n {/* Zero is a VALID opening balance — a drawer that starts with no float\n is ordinary, and disabling the button on zero left the operator with\n a dead control and nothing explaining why. */}\n <Button variant=\"bare\" size=\"bare\"\n data-tour=\"financial.cash-open\"\n onClick={() => void handleOpen()}\n disabled={submitting || balance < 0}\n className=\"inline-flex items-center gap-1.5 rounded-button bg-primary border border-primary px-4 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 shadow-button-primary active:shadow-button-inset transition-colors disabled:opacity-50\"\n >\n <Inbox className=\"h-3 w-3\" /> {submitting ? t('financial.cash.opening') : t('financial.quickActions.openCashRegister')}\n </Button>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Closing panel (inline within open session card)\n// ---------------------------------------------------------------------------\n\nfunction CashClosingPanel({\n session,\n currency,\n onClose,\n}: {\n session: { id: string; openingBalance: number; bankAccountName?: string; expectedCash?: number; receivedByMethod?: Record<string, number> }\n currency: { code: string; locale: string; symbol: string }\n onClose: (sessionId: string, balance: number, notes?: string) => Promise<void>\n}) {\n const [mode, setMode] = useState<OpenMode>('quick')\n const [quickBalance, setQuickBalance] = useState(0)\n const [counts, setCounts] = useState<Record<number, number>>({})\n const [notes, setNotes] = useState('')\n const [submitting, setSubmitting] = useState(false)\n const t = useTranslation()\n\n const countedTotal = useMemo(() => {\n return BRL_DENOMINATIONS.reduce((sum, d) => sum + (counts[d.value] ?? 0) * d.value, 0)\n }, [counts])\n\n const effectiveBalance = mode === 'count' ? countedTotal : quickBalance\n // Against the EXPECTED, not the opening balance. A caixa that opened with 100\n // and correctly took 500 in cash holds 600 — measuring from the opening\n // announced a 500 surplus and the RPC then recorded a difference of zero, so\n // the screen disagreed with the book at the exact moment someone signs for\n // counted money.\n const expected = session.expectedCash ?? session.openingBalance\n const difference = effectiveBalance - expected\n\n async function handleClose() {\n setSubmitting(true)\n try {\n await onClose(session.id, effectiveBalance, notes || undefined)\n } finally {\n setSubmitting(false)\n }\n }\n\n return (\n <div className=\"space-y-3 pt-3 border-t\">\n {/* Mode toggle */}\n <div className=\"flex gap-1 rounded-lg border p-0.5 w-fit\">\n <Button variant=\"bare\" size=\"bare\"\n onClick={() => setMode('quick')}\n className={`px-3 py-1 text-xs rounded-md font-medium transition-colors ${\n mode === 'quick' ? 'bg-primary text-primary-foreground' : 'hover:bg-muted'\n }`}\n >\n {t('financial.cash.quickAmount')}\n </Button>\n <Button variant=\"bare\" size=\"bare\"\n onClick={() => setMode('count')}\n className={`inline-flex items-center gap-1 px-3 py-1 text-xs rounded-md font-medium transition-colors ${\n mode === 'count' ? 'bg-primary text-primary-foreground' : 'hover:bg-muted'\n }`}\n >\n <Calculator className=\"h-3 w-3\" /> {t('financial.cash.count')}\n </Button>\n </div>\n\n {mode === 'quick' ? (\n <CurrencyInput\n value={quickBalance}\n onChange={setQuickBalance}\n symbol={currency.symbol}\n locale={currency.locale}\n currencyCode={currency.code}\n label={t('financial.cash.closingBalance')}\n />\n ) : (\n <div className=\"space-y-3\">\n <DenominationCounter\n denominations={BRL_DENOMINATIONS}\n counts={counts}\n onChange={setCounts}\n currency={currency}\n />\n <div className=\"flex items-center justify-between pt-2 border-t\">\n <span className=\"text-xs font-medium text-muted-foreground uppercase\">{t('financial.cash.countedTotal')}</span>\n <span className=\"text-lg font-bold\">{formatCurrency(countedTotal, currency)}</span>\n </div>\n </div>\n )}\n\n {/* What the shift took in, per method — pix has its own line instead of\n being folded into \"card\", which is how it used to vanish at close. */}\n {session.receivedByMethod && Object.keys(session.receivedByMethod).length > 0 && (\n <div className=\"rounded-lg border px-3 py-2 space-y-1\">\n <p className=\"text-[10px] font-medium text-muted-foreground uppercase\">\n {t('financial.cash.receivedInShift')}\n </p>\n {Object.entries(session.receivedByMethod).map(([method, total]) => (\n <div key={method} className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{t(`financial.method.${method}`)}</span>\n <span className=\"tabular-nums\">{formatCurrency(Number(total), currency)}</span>\n </div>\n ))}\n </div>\n )}\n\n {/* Expected vs counted vs quebra */}\n <div className=\"rounded-lg bg-muted/50 px-3 py-2 space-y-1\">\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{t('financial.cash.expectedInDrawer')}</span>\n <span className=\"tabular-nums font-medium\">{formatCurrency(expected, currency)}</span>\n </div>\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"text-muted-foreground\">{t('financial.cash.countedTotal')}</span>\n <span className=\"tabular-nums font-medium\">{formatCurrency(effectiveBalance, currency)}</span>\n </div>\n <div className=\"flex items-center justify-between border-t pt-1\">\n <span className=\"text-xs font-medium\">{t('financial.cash.difference')}</span>\n <span className={`text-sm font-bold tabular-nums ${\n difference > 0 ? 'text-success' : difference < 0 ? 'text-destructive' : 'text-muted-foreground'\n }`}>\n {difference >= 0 ? '+' : ''}{formatCurrency(difference, currency)}\n </span>\n </div>\n </div>\n\n {/* Notes */}\n <div>\n <label className=\"text-[10px] font-medium text-muted-foreground uppercase\">{t('financial.cash.closingNotes')}</label>\n <Textarea\n value={notes}\n onChange={(e) => setNotes(e.target.value)}\n rows={2}\n placeholder={t('financial.cash.closingObservations')}\n className=\"mt-0.5 px-2 py-1.5 text-xs resize-none\"\n />\n </div>\n\n <Button\n variant=\"destructive\"\n size=\"sm\"\n onClick={handleClose}\n // Zero counted cash is a real close: a shift paid entirely by card or\n // pix ends with an empty drawer. Blocking it meant such a caixa could\n // never be closed at all.\n disabled={submitting || effectiveBalance < 0}\n >\n <Square className=\"h-3.5 w-3.5\" />\n {submitting ? t('financial.cash.closing') : t('financial.cash.closeSession')}\n </Button>\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Main view\n// ---------------------------------------------------------------------------\n\n\n// ---------------------------------------------------------------------------\n// A fila de CONFERÊNCIA.\n//\n// \"Recepção abre e fecha; gerência e financeiro conferem\" — a aba é de quem\n// aprova, não de quem opera. É separação de funções sobre dinheiro contado à\n// mão, o único controle que sobra quando a conferência é de cédula.\n//\n// E quem fechou não confere: o botão não aparece para ele, e o banco recusa\n// também (026). A tela dizendo o porquê evita o clique que voltaria em erro.\n// ---------------------------------------------------------------------------\n// A cash list is read by DAY: \"what is still open from Monday\" is the question,\n// and fifty rows in one run did not answer it. Newest day first.\nfunction dayKeyOf(iso?: string | null): string {\n if (!iso) return ''\n const d = new Date(iso)\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`\n}\n\nfunction groupByClosingDay<R extends { closedAt?: string | null }>(rows: R[]): Array<{ key: string; rows: R[] }> {\n const days: Array<{ key: string; rows: R[] }> = []\n const sorted = [...rows].sort((a, b) => (b.closedAt ?? '').localeCompare(a.closedAt ?? ''))\n for (const r of sorted) {\n const key = dayKeyOf(r.closedAt)\n const last = days[days.length - 1]\n if (last && last.key === key) last.rows.push(r)\n else days.push({ key, rows: [r] })\n }\n return days\n}\n\nfunction DayHeader({ dayKey, count }: { dayKey: string; count: number }) {\n const t = useTranslation()\n let label = '—'\n if (dayKey === dayKeyOf(new Date().toISOString())) label = t('financial.cash.reviewToday')\n else if (dayKey === dayKeyOf(new Date(Date.now() - 86_400_000).toISOString())) label = t('financial.cash.reviewYesterday')\n else if (dayKey) {\n const [y, m, d] = dayKey.split('-').map(Number)\n label = new Date(y!, m! - 1, d!).toLocaleDateString(undefined, { weekday: 'long', day: '2-digit', month: '2-digit' })\n }\n return (\n // Stays on screen while its day scrolls, stopping under the page's tab band\n // like a list's column header. Opaque: rows pass underneath it.\n <div\n className=\"sticky z-10 flex items-center gap-2 border-b bg-muted px-4 py-1.5 text-xs font-medium text-muted-foreground\"\n style={{ top: 'var(--fz-page-band-h, 0px)' }}\n >\n <span className=\"first-letter:uppercase\">{label}</span>\n <span className=\"rounded-full bg-background px-1.5 text-[10px] tabular-nums\">{count}</span>\n </div>\n )\n}\n\nconst HOUR_MINUTE = { hour: '2-digit', minute: '2-digit' } as const\n\nconst PANEL_REVIEW_LIMIT = 3\nconst REVIEW_TAB_QUERY = 'tab=review'\n\nfunction ReviewQueue({\n variant,\n rows,\n error,\n onReload,\n showHeader = true,\n}: {\n variant: 'page' | 'panel'\n rows: CashSessionReview[] | null\n error: string | null\n onReload: () => void\n /** A aba \"Conferência\" já diz o que isto é — repetir título e contagem\n * dentro do conteúdo seria a mesma informação duas vezes. */\n showHeader?: boolean\n}) {\n const t = useTranslation()\n const { currency } = useFinancialConfig()\n const { user } = useAuth()\n const me = user?.id ?? null\n // Conferir agora ABRE um diálogo com as transações do turno, o resumo e o\n // valor final contado antes de aprovar — não aprova mais de dentro da\n // linha, onde ninguém viu nada além do total.\n const [reviewing, setReviewing] = useState<string | null>(null)\n\n const pendentes = (rows ?? []).filter((r) => r.reviewStatus === 'pending')\n const setCashSessionModalOpen = useFinancialStore((s) => s.setCashSessionModalOpen)\n\n // The dialog is for the drawer in front of you: a queue of fifty closings\n // buried it under a scroll. It shows the few that most need a look — the\n // largest differences, oldest first on a tie — and the full queue is the\n // page's \"Conferência\" tab, as in V1.\n const compact = variant === 'panel'\n const shown = compact\n ? [...pendentes]\n .sort((a, b) => Math.abs(b.difference) - Math.abs(a.difference) || (a.closedAt ?? '').localeCompare(b.closedAt ?? ''))\n .slice(0, PANEL_REVIEW_LIMIT)\n : pendentes\n const hidden = pendentes.length - shown.length\n\n const days = compact ? [] : groupByClosingDay(pendentes)\n\n const sectionClass = variant === 'panel' ? '' : 'rounded-card border bg-card shadow-sm'\n\n return (\n <div className={sectionClass}>\n {showHeader && (\n <div className=\"flex items-center gap-2 border-b px-4 py-3\">\n <ClipboardCheck className=\"h-4 w-4 text-info\" />\n <h3 className=\"text-sm font-semibold\">{t('financial.cash.reviewQueue')}</h3>\n {pendentes.length > 0 && (\n <span className=\"rounded-full bg-info/10 px-2 py-0.5 text-[10px] font-semibold text-info\">\n {pendentes.length}\n </span>\n )}\n </div>\n )}\n\n {showHeader && !compact && (\n <p className=\"px-4 pt-3 text-[11px] text-muted-foreground\">\n Quem abre e fecha o caixa não é quem confere. Um fechamento fica aqui até alguém\n da gerência ou do financeiro aprovar.\n </p>\n )}\n\n {error && <p className=\"px-4 pt-2 text-xs text-destructive\">{error}</p>}\n\n {rows === null ? (\n <div className=\"space-y-2 p-4\">\n {[0, 1].map((i) => (\n <div key={i} className=\"flex items-center justify-between\">\n <Skeleton className=\"h-4 w-48\" />\n <Skeleton className=\"h-7 w-32\" />\n </div>\n ))}\n </div>\n ) : pendentes.length === 0 ? (\n <p className=\"px-4 py-6 text-center text-sm text-muted-foreground\">\n {t('financial.cash.reviewQueueEmpty')}\n </p>\n ) : (\n <div className=\"divide-y\">\n {(compact ? [{ key: '', rows: shown }] : days).map((day) => (\n <React.Fragment key={day.key || 'all'}>\n {!compact && <DayHeader dayKey={day.key} count={day.rows.length} />}\n {day.rows.map((r) => {\n const fechei = !!me && r.closedByUserId === me\n const amount = (\n <>\n {formatCurrency(r.closingBalance, currency)}\n {r.difference !== 0 && (\n <span className={`ml-2 text-xs tabular-nums ${r.difference > 0 ? 'text-success' : 'text-destructive'}`}>\n {r.difference > 0 ? '+' : ''}{formatCurrency(r.difference, currency)}\n </span>\n )}\n </>\n )\n const action = fechei ? (\n // Estado que impede não oferece a ação — e diz por quê.\n <p className=\"text-[11px] text-muted-foreground\">\n {t('financial.cash.cannotReviewOwn')}\n </p>\n ) : (\n <Button variant=\"outline\" size=\"sm\" className=\"shrink-0\" onClick={() => setReviewing(r.sessionId)}>\n <ClipboardCheck className=\"h-3.5 w-3.5\" /> {t('financial.cash.review')}\n </Button>\n )\n if (compact) {\n return (\n <div key={r.sessionId} className=\"flex items-center gap-3 px-4 py-2\">\n <p className=\"shrink-0 text-sm font-medium tabular-nums text-foreground\">{amount}</p>\n <p className=\"min-w-0 flex-1 truncate text-xs text-muted-foreground\">\n {r.closedByName ?? '—'}\n {r.closedAt ? ` · ${new Date(r.closedAt).toLocaleDateString(undefined, { day: '2-digit', month: '2-digit' })}` : ''}\n </p>\n {action}\n </div>\n )\n }\n return (\n <div key={r.sessionId} className=\"flex flex-wrap items-center justify-between gap-3 px-4 py-3\">\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-foreground\">{amount}</p>\n <p className=\"text-xs text-muted-foreground\">\n {t('financial.cash.closedBy')} {r.closedByName ?? '—'}\n {r.closedAt ? ` · ${new Date(r.closedAt).toLocaleTimeString(undefined, HOUR_MINUTE)}` : ''}\n </p>\n </div>\n {action}\n </div>\n )\n })}\n </React.Fragment>\n ))}\n {hidden > 0 && (\n <a\n href={appHref(`/financial/cash/registers?${REVIEW_TAB_QUERY}`)}\n onClick={() => setCashSessionModalOpen(false)}\n className=\"flex items-center justify-between px-4 py-2.5 text-xs font-medium text-primary transition-colors hover:bg-muted/50\"\n >\n {t('financial.cash.reviewSeeAll', { count: String(pendentes.length) })}\n <ChevronRight className=\"h-3.5 w-3.5\" />\n </a>\n )}\n </div>\n )}\n\n {reviewing && (\n <CashSessionReviewModal\n sessionId={reviewing}\n mode=\"review\"\n open\n onOpenChange={(o) => { if (!o) setReviewing(null) }}\n onReviewed={() => { setReviewing(null); onReload() }}\n />\n )}\n </div>\n )\n}\n\nexport interface CashRegistersViewProps {\n /**\n * `page` is the module screen; `panel` is the same content served inside the\n * shell-header dialog.\n *\n * O caixa é UM só, e duas telas de caixa divergiriam — mas a moldura de\n * PÁGINA não cabe num diálogo: cabeçalho de subpágina, cartões com borda\n * própria e o histórico inteiro empurraram o painel de fechamento para dentro\n * de um scroll, com a gaveta sendo conferida atrás de uma barra de rolagem.\n * Mesmo conteúdo, moldura conforme o lugar.\n */\n variant?: 'page' | 'panel'\n}\n\nexport function CashRegistersView({ variant = 'page' }: CashRegistersViewProps = {}) {\n const t = useTranslation()\n const { currency, labels } = useFinancialConfig()\n const provider = useFinancialProvider()\n const bankAccounts = useFinancialStore((s) => s.bankAccounts)\n const cashSessions = useFinancialStore((s) => s.cashSessions)\n const fetchBankAccounts = useFinancialStore((s) => s.fetchBankAccounts)\n const fetchCashSessions = useFinancialStore((s) => s.fetchCashSessions)\n const openCashSession = useFinancialStore((s) => s.openCashSession)\n const closeCashSession = useFinancialStore((s) => s.closeCashSession)\n const setCashSessionModalOpen = useFinancialStore((s) => s.setCashSessionModalOpen)\n\n const [expandedClosing, setExpandedClosing] = useState<string | null>(null)\n const [viewingDetails, setViewingDetails] = useState<string | null>(null)\n const [tab, setTab] = useState<'open' | 'closed' | 'review'>(\n () => (currentAppPath().includes(REVIEW_TAB_QUERY) ? 'review' : 'open'),\n )\n\n // A fila de conferência mora AQUI, e não dentro de ReviewQueue: a página\n // precisa da contagem para a aba \"Conferência\", e o painel (diálogo) precisa\n // do mesmo dado — uma fonte só, não duas buscas da mesma lista.\n const [reviewRows, setReviewRows] = useState<CashSessionReview[] | null>(null)\n const [reviewError, setReviewError] = useState<string | null>(null)\n const loadReviews = React.useCallback(async () => {\n try {\n setReviewError(null)\n setReviewRows((await provider.getCashSessionReviews?.()) ?? [])\n } catch (e: any) {\n setReviewError(e?.message ?? String(e))\n setReviewRows([])\n }\n }, [provider])\n\n useEffect(() => {\n fetchBankAccounts()\n fetchCashSessions()\n void loadReviews()\n }, [])\n\n // `cash_physical`, not 'cash_register': getBankAccounts carries the canonical\n // `kind`, so the old word matched nothing and every seeded cofre showed up as\n // \"nenhuma conta de caixa encontrada\" — with no way to open one.\n const cashAccounts = bankAccounts.filter((a) => a.accountType === 'cash_physical')\n const openSessions = cashSessions.filter((s) => s.status === 'open')\n const closedSessions = cashSessions.filter((s) => s.status === 'closed')\n const pendingReviews = (reviewRows ?? []).filter((r) => r.reviewStatus === 'pending')\n\n const inPanel = variant === 'panel'\n // Um cartão com borda dentro de um diálogo com borda desenha dois quadros a\n // um pixel de distância. No diálogo a moldura é o próprio diálogo.\n const sectionClass = inPanel ? '' : 'rounded-card border bg-card shadow-sm'\n\n async function handleOpen(accountId: string, balance: number, notes?: string) {\n await openCashSession({ bankAccountId: accountId, openingBalance: balance, notes })\n }\n\n async function handleClose(sessionId: string, balance: number, notes?: string) {\n await closeCashSession({ sessionId, closingBalance: balance, notes })\n setExpandedClosing(null)\n }\n\n const openSessionsList = (\n <div className=\"divide-y\">\n {openSessions.map((session) => (\n <div key={session.id} className=\"p-4 space-y-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-foreground truncate\">{session.bankAccountName ?? t('financial.cash.title')}</p>\n <p className=\"text-xs text-muted-foreground\">\n {t('financial.cash.opened')} {new Date(session.openedAt).toLocaleString()}\n {session.openedByName ? ` ${t('financial.cash.by')} ${session.openedByName}` : ''}\n </p>\n </div>\n <div className=\"text-right shrink-0\">\n <p className=\"text-[10px] text-muted-foreground uppercase\">{t('financial.cash.openingBalance')}</p>\n <p className=\"text-lg font-bold tabular-nums text-foreground\">{formatCurrency(session.openingBalance, currency)}</p>\n </div>\n </div>\n\n {/* Expand/collapse closing controls */}\n {expandedClosing === session.id ? (\n <CashClosingPanel session={session} currency={currency} onClose={handleClose} />\n ) : (\n <Button variant=\"bare\" size=\"bare\"\n data-tour=\"financial.cash-close\"\n onClick={() => setExpandedClosing(session.id)}\n className=\"inline-flex items-center gap-1.5 text-xs text-destructive hover:text-destructive font-medium transition-colors\"\n >\n <ChevronDown className=\"h-3 w-3\" /> {t('financial.cash.closeThisSession')}\n </Button>\n )}\n </div>\n ))}\n </div>\n )\n\n const closedSessionsList = (\n <div className=\"divide-y\">\n {groupByClosingDay(closedSessions).map((day) => (\n <React.Fragment key={day.key || 'all'}>\n <DayHeader dayKey={day.key} count={day.rows.length} />\n {day.rows.map((session) => (\n <div key={session.id} className=\"px-4 py-3\">\n <div className=\"flex items-center justify-between gap-3\">\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium\">{session.bankAccountName ?? t('financial.cash.title')}</p>\n <p className=\"text-xs text-muted-foreground\">\n {/* The group already says the closing day; the opening day only when it is another one. */}\n {dayKeyOf(session.openedAt) === dayKeyOf(session.closedAt)\n ? new Date(session.openedAt).toLocaleTimeString(undefined, HOUR_MINUTE)\n : new Date(session.openedAt).toLocaleString(undefined, { day: '2-digit', month: '2-digit', ...HOUR_MINUTE })}\n {' — '}\n {session.closedAt ? new Date(session.closedAt).toLocaleTimeString(undefined, HOUR_MINUTE) : ''}\n </p>\n {session.openedByName && (\n <p className=\"text-[10px] text-muted-foreground\">{t('financial.cash.by')} {session.openedByName}</p>\n )}\n </div>\n <div className=\"flex shrink-0 items-start gap-3\">\n <div className=\"text-right\">\n <div className=\"flex items-center gap-3 text-xs text-muted-foreground\">\n <span>{t('financial.cash.openLabel')}: {formatCurrency(session.openingBalance, currency)}</span>\n <span>{t('financial.cash.closeLabel')}: {formatCurrency(session.closingBalance ?? 0, currency)}</span>\n </div>\n {session.difference !== undefined && session.difference !== 0 && (\n <p className={`text-xs font-semibold tabular-nums mt-0.5 ${session.difference > 0 ? 'text-success' : 'text-destructive'}`}>\n {t('financial.cash.diff')}: {session.difference >= 0 ? '+' : ''}{formatCurrency(session.difference, currency)}\n </p>\n )}\n {session.notes && (\n <p className=\"text-[10px] text-muted-foreground mt-0.5 max-w-[200px] truncate\" title={session.notes}>\n {session.notes}\n </p>\n )}\n </div>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => setViewingDetails(session.id)}>\n <Eye className=\"h-3.5 w-3.5\" /> {t('financial.cash.details')}\n </Button>\n </div>\n </div>\n </div>\n ))}\n </React.Fragment>\n ))}\n </div>\n )\n\n return (\n <div className={inPanel ? '' : 'space-y-4'}>\n {/* O diálogo já se apresenta no próprio título; repetir o cabeçalho de\n subpágina é cobrar duas vezes a mesma altura. */}\n {!inPanel && (\n <SubpageHeader\n title={labels.cashRegisters ?? t('financial.cash.title')}\n subtitle={t('financial.cash.subtitle')}\n actions={\n cashAccounts.length > openSessions.length ? (\n // A ABERTURA mora no diálogo da casca, não na página: este botão\n // abre O MESMO modal do ícone do cabeçalho, em vez de desenhar o\n // formulário de novo aqui dentro.\n <Button data-tour=\"financial.cash-open\" size=\"sm\" onClick={() => setCashSessionModalOpen(true)}>\n <Inbox className=\"h-3.5 w-3.5\" /> {t('financial.quickActions.openCashRegister')}\n </Button>\n ) : undefined\n }\n />\n )}\n\n {inPanel ? (\n <>\n {/* Open sessions */}\n <div className={sectionClass}>\n <div className=\"flex items-center justify-between px-4 py-3 border-b\">\n <div className=\"flex items-center gap-2\">\n <Landmark className=\"h-4 w-4 text-info\" />\n <h3 className=\"text-sm font-semibold\">{t('financial.cash.openSessions')}</h3>\n {openSessions.length > 0 && (\n <span className=\"rounded-full bg-info/10 text-info px-2 py-0.5 text-[10px] font-semibold\">\n {openSessions.length}\n </span>\n )}\n </div>\n </div>\n\n {openSessions.length === 0 ? (\n <CashOpeningPanel cashAccounts={cashAccounts} currency={currency} onOpen={handleOpen} />\n ) : (\n openSessionsList\n )}\n </div>\n\n {/* Quick open — when sessions already exist but user may want another. */}\n {openSessions.length > 0 && cashAccounts.length > openSessions.length && (\n <div className=\"border-t\">\n <OpenAnotherCollapsible cashAccounts={cashAccounts} openSessions={openSessions} currency={currency} onOpen={handleOpen} variant={variant} />\n </div>\n )}\n\n {/* A fila de conferência, entre o que está aberto e o histórico: é o\n que alguém da gerência abre esta tela para fazer. */}\n <ReviewQueue variant={variant} rows={reviewRows} error={reviewError} onReload={loadReviews} />\n\n {/* Session history vira UM LINK: quem abre o caixa no balcão quer a\n gaveta, e o histórico completo só rouba a altura de que o\n fechamento precisa. */}\n <a\n href={appHref('/financial/cash/registers')}\n className=\"flex items-center gap-2 border-t px-4 py-3 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted/50 hover:text-foreground\"\n >\n <Clock className=\"h-3.5 w-3.5\" />\n {t('financial.cash.sessionHistory')}\n {closedSessions.length > 0 && (\n <span className=\"text-[10px] text-muted-foreground\">({closedSessions.length})</span>\n )}\n </a>\n </>\n ) : (\n <>\n {/* As três frentes de quem cuida do caixa, como aba — não como três\n cartões empilhados. \"Abertos\", \"Fechados\" e \"Conferência\" são\n estados do MESMO dado (cashSessions/reviewRows), então trocar de\n aba troca o que a tela mostra, e a contagem de cada uma fica\n sempre visível mesmo sem estar na aba. */}\n <PageTabs<typeof tab>\n aria-label={labels.cashRegisters ?? t('financial.cash.title')}\n value={tab}\n onChange={setTab}\n tabs={[\n { value: 'open', label: t('financial.cash.tabOpen'), icon: Landmark, count: openSessions.length },\n { value: 'closed', label: t('financial.cash.tabClosed'), icon: Clock, count: closedSessions.length },\n { value: 'review', label: t('financial.cash.tabReview'), icon: ClipboardCheck, count: pendingReviews.length },\n ]}\n />\n\n {tab === 'open' && (\n <div className={sectionClass}>\n {openSessions.length === 0 ? (\n <p className=\"px-4 py-8 text-center text-sm text-muted-foreground\">{t('financial.cash.noOpenSessions')}</p>\n ) : (\n openSessionsList\n )}\n </div>\n )}\n\n {tab === 'closed' && (\n <div className={sectionClass}>\n {closedSessions.length === 0 ? (\n <div className=\"px-4 py-8 text-center text-sm text-muted-foreground\">{t('financial.cash.noClosedSessions')}</div>\n ) : (\n closedSessionsList\n )}\n </div>\n )}\n\n {tab === 'review' && (\n <ReviewQueue variant={variant} rows={reviewRows} error={reviewError} onReload={loadReviews} showHeader={false} />\n )}\n </>\n )}\n\n {viewingDetails && (\n <CashSessionReviewModal\n sessionId={viewingDetails}\n mode=\"details\"\n open\n onOpenChange={(o) => { if (!o) setViewingDetails(null) }}\n />\n )}\n </div>\n )\n}\n\n// ---------------------------------------------------------------------------\n// Collapsible \"Open another register\"\n// ---------------------------------------------------------------------------\n\nfunction OpenAnotherCollapsible({\n cashAccounts,\n openSessions,\n currency,\n onOpen,\n variant = 'page',\n}: {\n cashAccounts: { id: string; name: string }[]\n openSessions: { bankAccountId: string }[]\n currency: { code: string; locale: string; symbol: string }\n onOpen: (accountId: string, balance: number, notes?: string) => Promise<void>\n variant?: 'page' | 'panel'\n}) {\n const t = useTranslation()\n const [expanded, setExpanded] = useState(false)\n const availableAccounts = cashAccounts.filter((a) => !openSessions.some((s) => s.bankAccountId === a.id))\n\n if (availableAccounts.length === 0) return null\n\n return (\n <div className={variant === 'panel' ? '' : 'rounded-card border bg-card shadow-sm'}>\n <Button variant=\"bare\" size=\"bare\"\n onClick={() => setExpanded(!expanded)}\n className=\"gap-0 rounded-none whitespace-normal w-full flex items-center justify-between px-4 py-3 text-xs font-medium hover:bg-muted/50 transition-colors\"\n >\n <span className=\"flex items-center gap-2\">\n <Play className=\"h-3 w-3 text-primary\" />\n {t('financial.cash.openAnother')}\n </span>\n {expanded ? <ChevronUp className=\"h-3 w-3\" /> : <ChevronDown className=\"h-3 w-3\" />}\n </Button>\n {expanded && <CashOpeningPanel cashAccounts={availableAccounts} currency={currency} onOpen={onOpen} />}\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useTenantPluginSettings, SettingsGroup, ToggleRow } from '@fayz-ai/admin';
|
|
2
|
+
import { useTranslation } from '@fayz-ai/core';
|
|
3
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
|
+
|
|
5
|
+
// src/components/FinancialGeneralSettings.tsx
|
|
6
|
+
var FINANCIAL_MODULE_DEFAULTS = {
|
|
7
|
+
commissions: true,
|
|
8
|
+
cashRegisters: true,
|
|
9
|
+
closing: true
|
|
10
|
+
};
|
|
11
|
+
var FINANCIAL_DEFAULTS = {
|
|
12
|
+
autoInstallments: true,
|
|
13
|
+
requireDoc: false,
|
|
14
|
+
allowPartial: true,
|
|
15
|
+
requireOpening: true,
|
|
16
|
+
autoClose: false,
|
|
17
|
+
overdueAlerts: true,
|
|
18
|
+
dailySummary: false
|
|
19
|
+
};
|
|
20
|
+
function FinancialGeneralSettings({ config }) {
|
|
21
|
+
const t = useTranslation();
|
|
22
|
+
const s = useTenantPluginSettings("financial", FINANCIAL_DEFAULTS);
|
|
23
|
+
const mods = useTenantPluginSettings("financial", FINANCIAL_MODULE_DEFAULTS);
|
|
24
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
25
|
+
(config?.modules.commissions || config?.modules.cashRegisters) && /* @__PURE__ */ jsxs(SettingsGroup, { title: t("financial.settings.modules"), description: t("financial.settings.modulesDesc"), children: [
|
|
26
|
+
config?.modules.commissions && /* @__PURE__ */ jsx(
|
|
27
|
+
ToggleRow,
|
|
28
|
+
{
|
|
29
|
+
label: t("financial.settings.commissions"),
|
|
30
|
+
description: t("financial.settings.commissionsDesc"),
|
|
31
|
+
checked: mods.get("commissions"),
|
|
32
|
+
onChange: (v) => mods.set("commissions", v)
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
config?.modules.cashRegisters && /* @__PURE__ */ jsx(
|
|
36
|
+
ToggleRow,
|
|
37
|
+
{
|
|
38
|
+
label: t("financial.nav.cashRegisters"),
|
|
39
|
+
description: t("financial.settings.cashRegistersDesc"),
|
|
40
|
+
checked: mods.get("cashRegisters"),
|
|
41
|
+
onChange: (v) => mods.set("cashRegisters", v)
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
] }),
|
|
45
|
+
/* @__PURE__ */ jsx(SettingsGroup, { title: t("financial.settings.closing"), description: t("financial.settings.closingDesc"), children: /* @__PURE__ */ jsx(ToggleRow, { label: t("financial.settings.closing"), checked: mods.get("closing"), onChange: (v) => mods.set("closing", v) }) }),
|
|
46
|
+
/* @__PURE__ */ jsxs(SettingsGroup, { title: t("financial.settings.invoices"), description: t("financial.settings.invoicesDesc"), children: [
|
|
47
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.autoInstallments"), description: t("financial.settings.autoInstallmentsDesc"), checked: s.get("autoInstallments"), onChange: (v) => s.set("autoInstallments", v) }),
|
|
48
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.requireDoc"), description: t("financial.settings.requireDocDesc"), checked: s.get("requireDoc"), onChange: (v) => s.set("requireDoc", v) }),
|
|
49
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.allowPartial"), description: t("financial.settings.allowPartialDesc"), checked: s.get("allowPartial"), onChange: (v) => s.set("allowPartial", v) })
|
|
50
|
+
] }),
|
|
51
|
+
/* @__PURE__ */ jsxs(SettingsGroup, { title: t("financial.settings.cashRegister"), description: t("financial.settings.cashRegisterDesc"), children: [
|
|
52
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.requireOpening"), description: t("financial.settings.requireOpeningDesc"), checked: s.get("requireOpening"), onChange: (v) => s.set("requireOpening", v) }),
|
|
53
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.autoClose"), description: t("financial.settings.autoCloseDesc"), checked: s.get("autoClose"), onChange: (v) => s.set("autoClose", v) })
|
|
54
|
+
] }),
|
|
55
|
+
/* @__PURE__ */ jsxs(SettingsGroup, { title: t("financial.settings.notifications"), description: t("financial.settings.notificationsDesc"), children: [
|
|
56
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.overdueAlerts"), description: t("financial.settings.overdueAlertsDesc"), checked: s.get("overdueAlerts"), onChange: (v) => s.set("overdueAlerts", v) }),
|
|
57
|
+
/* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("financial.settings.dailySummary"), description: t("financial.settings.dailySummaryDesc"), checked: s.get("dailySummary"), onChange: (v) => s.set("dailySummary", v) })
|
|
58
|
+
] })
|
|
59
|
+
] });
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { FINANCIAL_MODULE_DEFAULTS, FinancialGeneralSettings };
|
|
63
|
+
//# sourceMappingURL=chunk-POYZFEAN.js.map
|
|
64
|
+
//# sourceMappingURL=chunk-POYZFEAN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/FinancialGeneralSettings.tsx"],"names":[],"mappings":"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","file":"chunk-POYZFEAN.js","sourcesContent":["import React from 'react'\nimport { SettingsGroup, ToggleRow, useTenantPluginSettings } from '@fayz-ai/admin'\nimport { useTranslation } from '@fayz-ai/core'\nimport type { ResolvedFinancialConfig } from '../context'\n\n/**\n * Os módulos do Financeiro que a CASA liga e desliga — não o pacote.\n *\n * `modules.*` na fábrica diz o que este aplicativo OFERECE; isto diz o que esta\n * conta usa. Comissão é o caso claro: metade dos salões paga por serviço e a\n * outra metade não, e as duas rodam o mesmo StudioControl. Sem a chave, tirar a\n * aba era um build.\n *\n * Lido também pela FinancialPage, que é quem tira a aba — a chave é uma só, e é\n * por isso que os defaults moram aqui e não em cada consumidor.\n */\nexport const FINANCIAL_MODULE_DEFAULTS = {\n commissions: true,\n cashRegisters: true,\n closing: true,\n}\n\n// Per-tenant defaults. Rows marked `pending` save but nothing reads them yet\n// (docs/status/SETTINGS-AUDIT.md).\nconst FINANCIAL_DEFAULTS = {\n autoInstallments: true,\n requireDoc: false,\n allowPartial: true,\n requireOpening: true,\n autoClose: false,\n overdueAlerts: true,\n dailySummary: false,\n}\n\nexport function FinancialGeneralSettings({ config }: { config?: ResolvedFinancialConfig }) {\n const t = useTranslation()\n const s = useTenantPluginSettings('financial', FINANCIAL_DEFAULTS)\n const mods = useTenantPluginSettings('financial', FINANCIAL_MODULE_DEFAULTS)\n return (\n <div className=\"space-y-4\">\n {/* Só o que o aplicativo OFERECE aparece aqui: uma chave para um módulo\n que este produto não tem seria um interruptor ligado a nada. */}\n {(config?.modules.commissions || config?.modules.cashRegisters) && (\n <SettingsGroup title={t('financial.settings.modules')} description={t('financial.settings.modulesDesc')}>\n {config?.modules.commissions && (\n <ToggleRow\n label={t('financial.settings.commissions')}\n description={t('financial.settings.commissionsDesc')}\n checked={mods.get('commissions')}\n onChange={(v) => mods.set('commissions', v)}\n />\n )}\n {config?.modules.cashRegisters && (\n <ToggleRow\n label={t('financial.nav.cashRegisters')}\n description={t('financial.settings.cashRegistersDesc')}\n checked={mods.get('cashRegisters')}\n onChange={(v) => mods.set('cashRegisters', v)}\n />\n )}\n </SettingsGroup>\n )}\n <SettingsGroup title={t('financial.settings.closing')} description={t('financial.settings.closingDesc')}>\n <ToggleRow label={t('financial.settings.closing')} checked={mods.get('closing')} onChange={(v) => mods.set('closing', v)} />\n </SettingsGroup>\n <SettingsGroup title={t('financial.settings.invoices')} description={t('financial.settings.invoicesDesc')}>\n <ToggleRow pending label={t('financial.settings.autoInstallments')} description={t('financial.settings.autoInstallmentsDesc')} checked={s.get('autoInstallments')} onChange={(v) => s.set('autoInstallments', v)} />\n <ToggleRow pending label={t('financial.settings.requireDoc')} description={t('financial.settings.requireDocDesc')} checked={s.get('requireDoc')} onChange={(v) => s.set('requireDoc', v)} />\n <ToggleRow pending label={t('financial.settings.allowPartial')} description={t('financial.settings.allowPartialDesc')} checked={s.get('allowPartial')} onChange={(v) => s.set('allowPartial', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('financial.settings.cashRegister')} description={t('financial.settings.cashRegisterDesc')}>\n <ToggleRow pending label={t('financial.settings.requireOpening')} description={t('financial.settings.requireOpeningDesc')} checked={s.get('requireOpening')} onChange={(v) => s.set('requireOpening', v)} />\n <ToggleRow pending label={t('financial.settings.autoClose')} description={t('financial.settings.autoCloseDesc')} checked={s.get('autoClose')} onChange={(v) => s.set('autoClose', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('financial.settings.notifications')} description={t('financial.settings.notificationsDesc')}>\n <ToggleRow pending label={t('financial.settings.overdueAlerts')} description={t('financial.settings.overdueAlertsDesc')} checked={s.get('overdueAlerts')} onChange={(v) => s.set('overdueAlerts', v)} />\n <ToggleRow pending label={t('financial.settings.dailySummary')} description={t('financial.settings.dailySummaryDesc')} checked={s.get('dailySummary')} onChange={(v) => s.set('dailySummary', v)} />\n </SettingsGroup>\n </div>\n )\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ImportedStatementLine } from '@fayz-ai/financial/domain/reconciliation';
|
|
3
|
+
import type { FinancialDataProvider } from '@fayz-ai/financial/data/provider';
|
|
4
|
+
interface Group {
|
|
5
|
+
key: string;
|
|
6
|
+
direction: 'credit' | 'debit';
|
|
7
|
+
label: string;
|
|
8
|
+
document: string | null;
|
|
9
|
+
lines: ImportedStatementLine[];
|
|
10
|
+
total: number;
|
|
11
|
+
}
|
|
12
|
+
/** "PIX TRANSF JUERG H23/10" and "PIX TRANSF JUERG H05/09" are one shape. */
|
|
13
|
+
export declare function descriptionShape(description: string): string;
|
|
14
|
+
export declare function groupLines(lines: ImportedStatementLine[]): Group[];
|
|
15
|
+
export declare function BatchClassifyModal({ provider, bankAccountId, dateRange, onClose, onDone }: {
|
|
16
|
+
provider: FinancialDataProvider;
|
|
17
|
+
bankAccountId: string;
|
|
18
|
+
dateRange: {
|
|
19
|
+
from?: string;
|
|
20
|
+
to?: string;
|
|
21
|
+
};
|
|
22
|
+
onClose: () => void;
|
|
23
|
+
onDone: () => void;
|
|
24
|
+
}): React.JSX.Element;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=BatchClassify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchClassify.d.ts","sourceRoot":"","sources":["../../src/components/BatchClassify.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAS3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAgB7E,UAAU,KAAK;IACb,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,EAAE,qBAAqB,EAAE,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;CACd;AAUD,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,qBAAqB,EAAE,GAAG,KAAK,EAAE,CAelE;AAeD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAC1F,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACzC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,qBAgMA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CashSessionHeaderControl.d.ts","sourceRoot":"","sources":["../../src/components/CashSessionHeaderControl.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CashSessionHeaderControl.d.ts","sourceRoot":"","sources":["../../src/components/CashSessionHeaderControl.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAIvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAoBzD,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,uBAAuB,CAAA;IAC/B,QAAQ,EAAE,qBAAqB,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAA;CAClC;AAED;;;;;;;GAOG;AACH,0FAA0F;AAC1F,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,4BAI5E"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AA2B5E,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,gBAAgB,EAAE,MAAM,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,eAAe,EAAE,CAAA;IACzB,mFAAmF;IACnF,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC;gFAC4E;IAC5E,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;IACvC,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,OAAO,CAAA;QAClB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,aAAa,CAAC,EAAE,OAAO,CAAA;QACvB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,WAAW,CAAC,EAAE,OAAO,CAAA;QACrB,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,kDAAkD;QAClD,KAAK,CAAC,EAAE,OAAO,CAAA;QACf,wEAAwE;QACxE,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,sFAAsF;QACtF,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,uEAAuE;QACvE,YAAY,CAAC,EAAE,OAAO,CAAA;KACvB,CAAA;IACD,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACvC,QAAQ,CAAC,EAAE;QACT,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;IACjC,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IAEvB,mEAAmE;IACnE,YAAY,CAAC,EAAE,qBAAqB,CAAA;IAEpC,6EAA6E;IAC7E,cAAc,CAAC,EAAE,6BAA6B,CAAA;IAE9C,iFAAiF;IACjF,SAAS,CAAC,EAAE,cAAc,EAAE,CAAA;IAE5B,0EAA0E;IAC1E,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAEhC,uDAAuD;IACvD,aAAa,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAEzD,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAEtE,2FAA2F;IAC3F,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAE/D;;;;;OAKG;IACH,aAAa,CAAC,EAAE,eAAe,CAAA;IAE/B,6FAA6F;IAC7F,aAAa,CAAC,EAAE,OAAO,gBAAgB,EAAE,YAAY,CAAA;IAErD,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAExC,qFAAqF;IACrF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAE1C;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACvC;AAQD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;CAQQ,CAAA;AAQ3C,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,cAAc,CAiatF;AAGD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,YAAY,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA;AACxD,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AACtH,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAalJ,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AACtD,YAAY,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAOnG,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAA;AAMhG,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AAKtE,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAA;AACnE,YAAY,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAA;AAIzE,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA"}
|