@accounter/client 0.0.8-alpha-20251029152834-4e95d9a4cd7f292ec1789163f46763388b63a377 → 0.0.8-alpha-20251029232510-4bc0c8b8c08a26f0c27788725ae584e515236d20

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.
Files changed (94) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/assets/{Checkbox-qIwbw1Vm.js → Checkbox-Cmx4P-eR.js} +2 -2
  3. package/dist/assets/{MultiSelect-Uj0K1auE.js → MultiSelect-tfWMeMsf.js} +1 -1
  4. package/dist/assets/{Pagination-D9TkQfLt.js → Pagination-p2BVFuhf.js} +1 -1
  5. package/dist/assets/{Progress-lLgzD5SX.js → Progress-BwoJerOb.js} +1 -1
  6. package/dist/assets/{Table-Cr3nIx5M.js → Table-Cve82Lq5.js} +1 -1
  7. package/dist/assets/{Typography-D8eUZCfX.js → Typography-CAgQOS4U.js} +1 -1
  8. package/dist/assets/{YearPickerInput-BdNLRDw_.js → YearPickerInput-BPVLgEAY.js} +1 -1
  9. package/dist/assets/{accordion-DwkOqBRF.js → accordion-Ca5XgpUz.js} +1 -1
  10. package/dist/assets/accountant-approvals-BXTzXE96.js +1 -0
  11. package/dist/assets/{accounter-table-R92v4QWf.js → accounter-table-CBlUbpQl.js} +1 -1
  12. package/dist/assets/{addDays-CHr5nY3e.js → addDays-ClGDfhvI.js} +1 -1
  13. package/dist/assets/{all-charges-DVKRQLII.js → all-charges-DV7V8QJ6.js} +1 -1
  14. package/dist/assets/{arrow-up-down-CTxePA5K.js → arrow-up-down-DMdWvrmz.js} +1 -1
  15. package/dist/assets/{building-2-B6TvGHom.js → building-2-Y3dys8Pf.js} +1 -1
  16. package/dist/assets/business-CRd0ns94.js +37 -0
  17. package/dist/assets/{business-extended-info-tkrkodR7.js → business-extended-info-BKVk3weU.js} +2 -2
  18. package/dist/assets/{business-header-Dx4N1uVn.js → business-header-S5R7Fq8P.js} +1 -1
  19. package/dist/assets/{business-ledger-filters-GmMxns0y.js → business-ledger-filters-C_x4y5uJ.js} +1 -1
  20. package/dist/assets/{business-ledger-single-BeO0VVgy.js → business-ledger-single-Dku8gbU9.js} +1 -1
  21. package/dist/assets/business-trip-CB51p6xt.js +1 -0
  22. package/dist/assets/{charge-DPnVzmY7.js → charge-C79C95t6.js} +1 -1
  23. package/dist/assets/{charges-filters-BSbPgdun.js → charges-filters-RFRXF1Oa.js} +1 -1
  24. package/dist/assets/{charges-ledger-validation-zkS0soMY.js → charges-ledger-validation-DTglElRA.js} +1 -1
  25. package/dist/assets/{charges-table-BIpECr1x.js → charges-table-D3WwcB50.js} +7 -7
  26. package/dist/assets/{chart-Caa1VlDy.js → chart-2MG3qLL8.js} +1 -1
  27. package/dist/assets/{data-table-pagination-psKhAMGL.js → data-table-pagination-Dhmbf7BR.js} +1 -1
  28. package/dist/assets/{download-csv-button-B1TMXv92.js → download-csv-button-BQSz29rY.js} +1 -1
  29. package/dist/assets/{editable-business-trip-CCy91YvH.js → editable-business-trip-BlqinsvU.js} +2 -2
  30. package/dist/assets/{funnel-DP2XBopJ.js → funnel-B2plvroD.js} +1 -1
  31. package/dist/assets/{index-BsxEk8Re.js → index--xgmdJzW.js} +1 -1
  32. package/dist/assets/{index-CvxMeW9Y.js → index-5R7-0kTp.js} +1 -1
  33. package/dist/assets/{index-lk_kdDxO.js → index-BRNnfzgV.js} +2 -2
  34. package/dist/assets/{index-D9OJexEV.js → index-BdRubi2c.js} +1 -1
  35. package/dist/assets/{index-CY-XVbUJ.js → index-BgLtHIxa.js} +1 -1
  36. package/dist/assets/{index-CV2QxRmK.js → index-Bs4RBq4h.js} +1 -1
  37. package/dist/assets/{index-PfXGaCrc.js → index-C0ZATVhv.js} +1 -1
  38. package/dist/assets/{index-xJNjwngg.js → index-C4gCwrJJ.js} +1 -1
  39. package/dist/assets/{index-fZcP3X7C.js → index-C6OmHOHr.js} +191 -191
  40. package/dist/assets/index-CIdZZL-X.js +1 -0
  41. package/dist/assets/{index-BfV_NJXM.js → index-CSEktEoZ.js} +7 -7
  42. package/dist/assets/{index-CDhroLKu.js → index-Cn4t95Q9.js} +1 -1
  43. package/dist/assets/{index-dsDfIa4Y.js → index-Csdsjvrl.js} +2 -2
  44. package/dist/assets/{index-4ge3Am6D.js → index-DA3Ccstm.js} +1 -1
  45. package/dist/assets/{index-CdGH-wdf.js → index-DKZGNBg3.js} +2 -2
  46. package/dist/assets/{index-BiaDwWnW.js → index-DZ6Bqs7R.js} +1 -1
  47. package/dist/assets/{index-CFIvwwkB.js → index-DemO-kJJ.js} +2 -2
  48. package/dist/assets/index-DhRIY5eN.js +1 -0
  49. package/dist/assets/{index-DtwTITCT.js → index-HG5RXBPG.js} +1 -1
  50. package/dist/assets/{index-CRuhKIVD.js → index-P9_YuS6e.js} +1 -1
  51. package/dist/assets/index-aEEtRfbo.js +1 -0
  52. package/dist/assets/{index-DjTdlXK_.js → index-arYAg9nt.js} +1 -1
  53. package/dist/assets/{index-PaMjwOfa.js → index-eIVAASqp.js} +1 -1
  54. package/dist/assets/index-nshyF-PE.js +6 -0
  55. package/dist/assets/{index-CeSVmmFv.js → index-qMYyjtmt.js} +1 -1
  56. package/dist/assets/{index.es-tIpBPUgx.js → index.es-BrfHJ6Yj.js} +1 -1
  57. package/dist/assets/{insert-business-trip-modal-qIM7A1Dw.js → insert-business-trip-modal-COXHjjIY.js} +2 -2
  58. package/dist/assets/issue-document-CBKTg1VC.js +1 -0
  59. package/dist/assets/{list-plus-ZIHrrCaO.js → list-plus-DbuCDPM8.js} +1 -1
  60. package/dist/assets/{login-page-z7UM7kNz.js → login-page-ChNFTZLU.js} +1 -1
  61. package/dist/assets/{match-document-modal-CpUhpMJc.js → match-document-modal-Cp2DKG3j.js} +4 -4
  62. package/dist/assets/{missing-info-charges-C1tPzMqU.js → missing-info-charges-IUzXIDY1.js} +1 -1
  63. package/dist/assets/{modal-B_jJz-4Z.js → modal-CCAYjiOC.js} +1 -1
  64. package/dist/assets/{page-layout-DUgx8eXl.js → page-layout-DpwpZHY3.js} +1 -1
  65. package/dist/assets/{page-not-found-D8UJ6_C9.js → page-not-found-NbOMK1Jv.js} +1 -1
  66. package/dist/assets/{panel-top-open-CcWXXds7.js → panel-top-open-CNX1-h4c.js} +1 -1
  67. package/dist/assets/{pencil-zApPUfTb.js → pencil-Z4i9z0vF.js} +1 -1
  68. package/dist/assets/{report-commentary-row-BonuPEAK.js → report-commentary-row-C4I-ATEX.js} +1 -1
  69. package/dist/assets/{save-tZoVFUtG.js → save-D0kOxdMh.js} +1 -1
  70. package/dist/assets/similar-transactions-modal-DgD48GZ2.js +1 -0
  71. package/dist/assets/{sub-zRppNrG0.js → sub-BAZr7Qdd.js} +1 -1
  72. package/dist/assets/subMonths-Df-03cZk.js +1 -0
  73. package/dist/assets/{summary-yiqSbK4V.js → summary-CkpRtdVA.js} +1 -1
  74. package/dist/assets/{toggle-expansion-button-pWLCCDmM.js → toggle-expansion-button-Babot8nj.js} +1 -1
  75. package/dist/assets/tooltip-DStdzzhK.js +1 -0
  76. package/dist/assets/{use-url-query-DyJg_rMw.js → use-url-query-BSUiacze.js} +1 -1
  77. package/dist/index.html +1 -1
  78. package/package.json +1 -1
  79. package/src/components/business/admin-business-section.tsx +299 -103
  80. package/src/gql/gql.ts +3 -3
  81. package/src/gql/graphql.ts +53 -17
  82. package/src/providers/index.ts +4 -0
  83. package/dist/assets/accountant-approvals-DX9vcA7l.js +0 -1
  84. package/dist/assets/business-CCLPxEIP.js +0 -37
  85. package/dist/assets/business-trip-D3REiwV6.js +0 -1
  86. package/dist/assets/index-8gQaTQhF.js +0 -6
  87. package/dist/assets/index-CLvGPwjT.js +0 -1
  88. package/dist/assets/index-CmRnzPuP.js +0 -1
  89. package/dist/assets/index-DkgLEg6I.js +0 -1
  90. package/dist/assets/issue-document-CAewRj6P.js +0 -1
  91. package/dist/assets/similar-transactions-modal-Cdv2FmQ8.js +0 -1
  92. package/dist/assets/subMonths-CLe-U48r.js +0 -1
  93. package/dist/assets/tooltip-r34BEIrK.js +0 -1
  94. package/src/providers/index.tsx +0 -56
@@ -1 +1 @@
1
- import{r as m,bv as k,j as e,bp as _,B as I,bo as V,G as Q,bq as G,cQ as q,ak as K,cR as z,br as y,bu as A,bs as F,bt as B,x as S,u as R,gp as X,K as P,c as U,N as $,P as J,aw as W,W as Y,F as Z,a8 as ee,at as ae,Q as se,dG as te,gq as re,aN as ne}from"./index-fZcP3X7C.js";import{u as O}from"./use-url-query-DyJg_rMw.js";import{P as oe}from"./page-layout-DUgx8eXl.js";import{k as ie,B as w,X as H,Y as le,l as ce,m as de,n as ue,o as me,p as pe,q as xe,r as ge}from"./chart-Caa1VlDy.js";import{P as he}from"./modal-B_jJz-4Z.js";import{F as fe}from"./funnel-DP2XBopJ.js";import{M as E}from"./MultiSelect-Uj0K1auE.js";import{T as be}from"./index-8gQaTQhF.js";import{s as je}from"./sub-zRppNrG0.js";import"./sequential-CAnleQny.js";import"./similar-transactions-modal-Cdv2FmQ8.js";import"./addDays-CHr5nY3e.js";import"./list-plus-ZIHrrCaO.js";import"./tooltip-r34BEIrK.js";import"./subMonths-CLe-U48r.js";var ye=ie({chartName:"BarChart",GraphicalChild:w,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:H},{axisType:"yAxis",AxisComp:le}],formatAxisMap:ce});function ve(s){return!s||V(s)?null:encodeURIComponent(JSON.stringify(s))}const L="balanceReportFilters",x={MONTHLY:"Monthly",BI_MONTHLY:"Bi-monthly",QUARTERLY:"Quarterly",SEMI_ANNUALLY:"Semi-Annually",ANNUALLY:"Annually"};function Ce({filter:s,setFilter:i,closeModal:c}){const{control:t,handleSubmit:r,watch:g}=Q({defaultValues:{...s}}),{selectableBusinesses:b,fetching:h}=G(),{selectableFinancialEntities:f,fetching:v}=q(),{selectableTags:p,fetching:j}=K(),M=a=>{i(a),c()},C=g("excludedTags"),o=m.useMemo(()=>p.filter(a=>!C.includes(a.value)),[C,p]),d=g("includedTags"),n=m.useMemo(()=>p.filter(a=>!d.includes(a.value)),[d,p]);return e.jsxs("form",{onSubmit:r(M),children:[e.jsxs(z,{cols:2,children:[e.jsx(y,{name:"ownerId",control:t,defaultValue:s?.ownerId,render:({field:a,fieldState:l})=>e.jsx(A,{...a,data:b,value:a.value,disabled:h,label:"Owners",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"fromDate",control:t,defaultValue:s?.fromDate,rules:{pattern:{value:F,message:"Date must be im format yyyy-mm-dd"}},render:({field:a,fieldState:l})=>e.jsx(B,{...a,onChange:u=>{const T=u?typeof u=="string"?u:S(u,"yyyy-MM-dd"):void 0;T!==a.value&&a.onChange(T)},value:a.value?new Date(a.value):void 0,error:l.error?.message,label:"From Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"toDate",control:t,defaultValue:s?.toDate,rules:{pattern:{value:F,message:"Date must be im format yyyy-mm-dd"}},render:({field:a,fieldState:l})=>e.jsx(B,{...a,onChange:u=>{const T=u?typeof u=="string"?u:S(u,"yyyy-MM-dd"):void 0;T!==a.value&&a.onChange(T)},value:a.value?new Date(a.value):void 0,error:l.error?.message,label:"To Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"period",control:t,defaultValue:x.MONTHLY,render:({field:a,fieldState:l})=>e.jsx(A,{...a,data:Object.values(x).map(u=>({value:u,label:u})),value:a.value,label:"Period",maxDropdownHeight:160,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"excludedCounterparties",control:t,defaultValue:s.excludedCounterparties,render:({field:a,fieldState:l})=>e.jsx(E,{...a,data:f,value:a.value??[],disabled:v,label:"Excluded Counterparties",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"includedTags",control:t,defaultValue:s.includedTags,render:({field:a,fieldState:l})=>e.jsx(E,{...a,data:o,value:a.value??[],disabled:j,label:"Included Tags",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"excludedTags",control:t,defaultValue:s.excludedTags,render:({field:a,fieldState:l})=>e.jsx(E,{...a,data:n,value:a.value??[],disabled:j,label:"Excluded Tags",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})})]}),e.jsxs("div",{className:"flex justify-center mt-5 gap-3",children:[e.jsx("button",{type:"submit",disabled:h,className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Filter"}),e.jsx("button",{type:"button",className:"text-white bg-rose-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-rose-600 rounded-sm text-lg",onClick:c,children:"Cancel"})]})]})}function Te({filter:s,setFilter:i,initiallyOpened:c=!1}){const[t,r]=m.useState(c),[g,b]=m.useState(!!s),{get:h,set:f}=O();m.useEffect(()=>{const p=ve(s),j=h(L);p!==j&&f(L,p)},[s,h,f]);const v=m.useCallback(p=>{k(p,s)||(i(p),b(!!p))},[s,i]);return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(he,{opened:t,onClose:()=>r(!1),content:e.jsx(Ce,{filter:s,setFilter:v,closeModal:()=>r(!1)}),modalSize:"xl"}),e.jsx(_,{inline:!0,size:16,disabled:!g,children:e.jsx(I,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>r(!0),children:e.jsx(fe,{className:"size-5"})})})]})}const Ne=({period:s,transactionIDs:i,onCloseExtendedTransactions:c})=>{const[{data:t,fetching:r}]=R({query:X,variables:{transactionIDs:i}}),g=m.useMemo(()=>t?.transactionsByIDs?i.map(b=>t?.transactionsByIDs.find(h=>h.id===b)).filter(Boolean):[],[t,i]);return e.jsx(P,{className:"mt-5 w-full",children:r?e.jsx(U,{}):e.jsxs(e.Fragment,{children:[e.jsx($,{children:e.jsxs(J,{className:"flex justify-between",children:[e.jsxs("span",{children:[s," Transactions"]}),e.jsx(I,{variant:"link",onClick:c,children:e.jsx(W,{className:"h-4 w-4"})})]})}),e.jsx(Y,{children:e.jsx(be,{transactionsProps:g})})]})})},N={income:{label:"Income",color:"rgba(0, 255, 50, 0.5)"},expense:{label:"Expense",color:"rgba(255, 0, 0, 0.5)"},delta:{label:"Delta",color:"rgba(0, 30, 255, 0.5)"},cumulative:{label:"Cumulative Balance",color:"rgba(100, 0, 255, 0.5)"}};function we(s,i,c){switch(c){case x.MONTHLY:{const t=String(i).padStart(2,"0");return`${s}-${t}`}case x.BI_MONTHLY:{const t=i%2===0?i-1:i,r=String(t).padStart(2,"0");return`${s}-${r}`}case x.QUARTERLY:{const t=Math.ceil(i/3);return`${s}-Q${t}`}case x.SEMI_ANNUALLY:{const t=i>6?2:1;return`${s}-H${t}`}case x.ANNUALLY:return String(s)}}function Me(s,i){switch(i){case x.MONTHLY:{const[c,t]=s.split("-");return`${t}/${c}`}case x.BI_MONTHLY:{const[c,t]=s.split("-"),r=Number(t)+1,g=String(r).padStart(2,"0");return`${t}-${g}/${c}`}case x.QUARTERLY:{const[c,t]=s.split("-");return`${t}, ${c}`}case x.SEMI_ANNUALLY:{const[c,t]=s.split("-");return`${t}, ${c}`}case x.ANNUALLY:return s}}const D=te(ne.Usd),ke=()=>{const{setFiltersContext:s}=m.useContext(Z),{userContext:i}=m.useContext(ee),{get:c}=O(),t=m.useMemo(()=>{const o={ownerId:i?.context.adminBusinessId,toDate:S(new Date,"yyyy-MM-dd"),period:x.MONTHLY,fromDate:S(je(new Date,{years:1}),"yyyy-MM-dd"),excludedCounterparties:[],includedTags:[],excludedTags:[]},d=c(L);if(d)try{return JSON.parse(decodeURIComponent(d))}catch(n){console.log("Error parsing balance report filters from URL:",n)}return o},[i?.context.adminBusinessId,c]),[r,g]=m.useState(t),[b,h]=m.useState(void 0),[f,v]=m.useState(Object.keys(N)),p=m.useMemo(()=>{const{ownerId:o,fromDate:d,toDate:n}=r;return{ownerId:o,fromDate:d,toDate:n}},[r]),[{data:j,fetching:M}]=R({query:re,variables:p,pause:!r});m.useEffect(()=>{s(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(Te,{filter:r,setFilter:g,initiallyOpened:!r}),e.jsx(ae,{options:Object.entries(N).map(([o,d])=>({label:d.label,value:o})),onValueChange:v,defaultValue:f,placeholder:"Select Data Sets",variant:"default",maxCount:1})]})),h(void 0)},[j,M,r,s,g,f]),m.useEffect(()=>{g(o=>({...o,ownerId:i?.context.adminBusinessId}))},[i]);const C=m.useMemo(()=>{if(!j?.transactionsForBalanceReport)return[];const o=new Map;j.transactionsForBalanceReport.map(n=>{if(n.counterparty?.id&&(!n.isFee&&i?.context.financialAccountsBusinessesIds?.includes(n.counterparty.id)||r.excludedCounterparties?.includes(n.counterparty.id))||r.includedTags.length>0&&(!n.charge?.tags||n.charge.tags.length===0||!n.charge.tags.some(u=>r.includedTags.includes(u.id)))||r.excludedTags.length>0&&n.charge?.tags.length&&n.charge.tags.some(u=>r.excludedTags.includes(u.id)))return;const a=we(n.year,n.month,r.period);o.has(a)||o.set(a,{income:0,expense:0,delta:0,transactions:[]});const l=o.get(a);n.amountUsd.raw>0?l.income+=n.amountUsd.raw:l.expense+=n.amountUsd.raw,l.delta+=n.amountUsd.raw,l.transactions.push(n)});let d=0;return Array.from(o.entries()).sort((n,a)=>n[0].localeCompare(a[0])).map(([n,a])=>(d+=a.delta,{period:n,income:a.income,expense:a.expense,delta:a.delta,cumulative:d,transactions:a.transactions.sort((l,u)=>Math.abs(u.amountUsd.raw)-Math.abs(l.amountUsd.raw))}))},[j,r.period,r.excludedCounterparties,i?.context.financialAccountsBusinessesIds,r.includedTags,r.excludedTags]);return e.jsx(oe,{title:"Balance Report",description:"Accounts periodical balance",children:M?e.jsx(U,{}):e.jsxs(e.Fragment,{children:[e.jsxs(P,{className:"w-full",children:[e.jsx($,{children:e.jsx(se,{children:"Click specific period to expand it's transactions data"})}),e.jsx(Y,{children:e.jsx(de,{config:N,className:"h-150 w-full",children:e.jsxs(ye,{accessibilityLayer:!0,data:C,onClick:o=>h(o.activeLabel),children:[e.jsx(ue,{vertical:!1}),e.jsx(H,{dataKey:"period",tickLine:!1,tickMargin:10,axisLine:!1,tickFormatter:o=>Me(o,r.period)}),e.jsx(me,{content:e.jsx(pe,{formatter:(o,d,n,a)=>{const l=`bg-[var(--color-${d})]`;return a<2?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${l} h-2.5 w-2.5 shrink-0 rounded-[2px]`}),N[d]?.label||d,e.jsx("div",{className:"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground",children:D.format(Number(o))})]}):e.jsxs("div",{className:"mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground",children:[e.jsx("div",{className:`h-2.5 w-2.5 shrink-0 rounded-[2px] mr-2 ${l}`}),N[d]?.label||d,e.jsx("div",{className:"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground",children:D.format(Number(o))})]})}})}),e.jsx(xe,{content:e.jsx(ge,{})}),f.includes("income")&&e.jsx(w,{dataKey:"income",fill:"var(--color-income)",radius:4}),f.includes("expense")&&e.jsx(w,{dataKey:"expense",fill:"var(--color-expense)",radius:4}),f.includes("delta")&&e.jsx(w,{dataKey:"delta",fill:"var(--color-delta)",radius:4}),f.includes("cumulative")&&e.jsx(w,{dataKey:"cumulative",fill:"var(--color-cumulative)",radius:4})]})})})]}),b&&e.jsx(Ne,{period:b,onCloseExtendedTransactions:()=>h(void 0),transactionIDs:C.find(o=>o.period===b)?.transactions.map(o=>o.id)??[]})]})})};export{ke as BalanceReport};
1
+ import{r as m,bw as _,j as e,bq as k,B as I,bp as V,G as Q,br as q,cQ as G,aq as z,cR as K,bs as y,bv as A,bt as F,bu as B,x as S,u as R,gp as X,N as P,c as U,O as $,Q as J,a4 as W,X as Y,F as Z,ae as ee,az as ae,V as se,dG as te,gq as re,aQ as ne}from"./index-C6OmHOHr.js";import{u as O}from"./use-url-query-BSUiacze.js";import{P as oe}from"./page-layout-DpwpZHY3.js";import{k as ie,B as w,X as H,Y as le,l as ce,m as de,n as ue,o as me,p as pe,q as xe,r as ge}from"./chart-2MG3qLL8.js";import{P as he}from"./modal-CCAYjiOC.js";import{F as fe}from"./funnel-B2plvroD.js";import{M as E}from"./MultiSelect-tfWMeMsf.js";import{T as be}from"./index-nshyF-PE.js";import{s as je}from"./sub-BAZr7Qdd.js";import"./sequential-CAnleQny.js";import"./similar-transactions-modal-DgD48GZ2.js";import"./addDays-ClGDfhvI.js";import"./list-plus-DbuCDPM8.js";import"./tooltip-DStdzzhK.js";import"./subMonths-Df-03cZk.js";var ye=ie({chartName:"BarChart",GraphicalChild:w,defaultTooltipEventType:"axis",validateTooltipEventTypes:["axis","item"],axisComponents:[{axisType:"xAxis",AxisComp:H},{axisType:"yAxis",AxisComp:le}],formatAxisMap:ce});function ve(s){return!s||V(s)?null:encodeURIComponent(JSON.stringify(s))}const L="balanceReportFilters",x={MONTHLY:"Monthly",BI_MONTHLY:"Bi-monthly",QUARTERLY:"Quarterly",SEMI_ANNUALLY:"Semi-Annually",ANNUALLY:"Annually"};function Ce({filter:s,setFilter:i,closeModal:c}){const{control:t,handleSubmit:r,watch:g}=Q({defaultValues:{...s}}),{selectableBusinesses:b,fetching:h}=q(),{selectableFinancialEntities:f,fetching:v}=G(),{selectableTags:p,fetching:j}=z(),M=a=>{i(a),c()},C=g("excludedTags"),o=m.useMemo(()=>p.filter(a=>!C.includes(a.value)),[C,p]),d=g("includedTags"),n=m.useMemo(()=>p.filter(a=>!d.includes(a.value)),[d,p]);return e.jsxs("form",{onSubmit:r(M),children:[e.jsxs(K,{cols:2,children:[e.jsx(y,{name:"ownerId",control:t,defaultValue:s?.ownerId,render:({field:a,fieldState:l})=>e.jsx(A,{...a,data:b,value:a.value,disabled:h,label:"Owners",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"fromDate",control:t,defaultValue:s?.fromDate,rules:{pattern:{value:F,message:"Date must be im format yyyy-mm-dd"}},render:({field:a,fieldState:l})=>e.jsx(B,{...a,onChange:u=>{const T=u?typeof u=="string"?u:S(u,"yyyy-MM-dd"):void 0;T!==a.value&&a.onChange(T)},value:a.value?new Date(a.value):void 0,error:l.error?.message,label:"From Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"toDate",control:t,defaultValue:s?.toDate,rules:{pattern:{value:F,message:"Date must be im format yyyy-mm-dd"}},render:({field:a,fieldState:l})=>e.jsx(B,{...a,onChange:u=>{const T=u?typeof u=="string"?u:S(u,"yyyy-MM-dd"):void 0;T!==a.value&&a.onChange(T)},value:a.value?new Date(a.value):void 0,error:l.error?.message,label:"To Date",popoverProps:{withinPortal:!0}})}),e.jsx(y,{name:"period",control:t,defaultValue:x.MONTHLY,render:({field:a,fieldState:l})=>e.jsx(A,{...a,data:Object.values(x).map(u=>({value:u,label:u})),value:a.value,label:"Period",maxDropdownHeight:160,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"excludedCounterparties",control:t,defaultValue:s.excludedCounterparties,render:({field:a,fieldState:l})=>e.jsx(E,{...a,data:f,value:a.value??[],disabled:v,label:"Excluded Counterparties",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"includedTags",control:t,defaultValue:s.includedTags,render:({field:a,fieldState:l})=>e.jsx(E,{...a,data:o,value:a.value??[],disabled:j,label:"Included Tags",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})}),e.jsx(y,{name:"excludedTags",control:t,defaultValue:s.excludedTags,render:({field:a,fieldState:l})=>e.jsx(E,{...a,data:n,value:a.value??[],disabled:j,label:"Excluded Tags",placeholder:"Scroll to see all options",maxDropdownHeight:160,searchable:!0,error:l.error?.message,withinPortal:!0})})]}),e.jsxs("div",{className:"flex justify-center mt-5 gap-3",children:[e.jsx("button",{type:"submit",disabled:h,className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",children:"Filter"}),e.jsx("button",{type:"button",className:"text-white bg-rose-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-rose-600 rounded-sm text-lg",onClick:c,children:"Cancel"})]})]})}function Te({filter:s,setFilter:i,initiallyOpened:c=!1}){const[t,r]=m.useState(c),[g,b]=m.useState(!!s),{get:h,set:f}=O();m.useEffect(()=>{const p=ve(s),j=h(L);p!==j&&f(L,p)},[s,h,f]);const v=m.useCallback(p=>{_(p,s)||(i(p),b(!!p))},[s,i]);return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(he,{opened:t,onClose:()=>r(!1),content:e.jsx(Ce,{filter:s,setFilter:v,closeModal:()=>r(!1)}),modalSize:"xl"}),e.jsx(k,{inline:!0,size:16,disabled:!g,children:e.jsx(I,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>r(!0),children:e.jsx(fe,{className:"size-5"})})})]})}const Ne=({period:s,transactionIDs:i,onCloseExtendedTransactions:c})=>{const[{data:t,fetching:r}]=R({query:X,variables:{transactionIDs:i}}),g=m.useMemo(()=>t?.transactionsByIDs?i.map(b=>t?.transactionsByIDs.find(h=>h.id===b)).filter(Boolean):[],[t,i]);return e.jsx(P,{className:"mt-5 w-full",children:r?e.jsx(U,{}):e.jsxs(e.Fragment,{children:[e.jsx($,{children:e.jsxs(J,{className:"flex justify-between",children:[e.jsxs("span",{children:[s," Transactions"]}),e.jsx(I,{variant:"link",onClick:c,children:e.jsx(W,{className:"h-4 w-4"})})]})}),e.jsx(Y,{children:e.jsx(be,{transactionsProps:g})})]})})},N={income:{label:"Income",color:"rgba(0, 255, 50, 0.5)"},expense:{label:"Expense",color:"rgba(255, 0, 0, 0.5)"},delta:{label:"Delta",color:"rgba(0, 30, 255, 0.5)"},cumulative:{label:"Cumulative Balance",color:"rgba(100, 0, 255, 0.5)"}};function we(s,i,c){switch(c){case x.MONTHLY:{const t=String(i).padStart(2,"0");return`${s}-${t}`}case x.BI_MONTHLY:{const t=i%2===0?i-1:i,r=String(t).padStart(2,"0");return`${s}-${r}`}case x.QUARTERLY:{const t=Math.ceil(i/3);return`${s}-Q${t}`}case x.SEMI_ANNUALLY:{const t=i>6?2:1;return`${s}-H${t}`}case x.ANNUALLY:return String(s)}}function Me(s,i){switch(i){case x.MONTHLY:{const[c,t]=s.split("-");return`${t}/${c}`}case x.BI_MONTHLY:{const[c,t]=s.split("-"),r=Number(t)+1,g=String(r).padStart(2,"0");return`${t}-${g}/${c}`}case x.QUARTERLY:{const[c,t]=s.split("-");return`${t}, ${c}`}case x.SEMI_ANNUALLY:{const[c,t]=s.split("-");return`${t}, ${c}`}case x.ANNUALLY:return s}}const D=te(ne.Usd),_e=()=>{const{setFiltersContext:s}=m.useContext(Z),{userContext:i}=m.useContext(ee),{get:c}=O(),t=m.useMemo(()=>{const o={ownerId:i?.context.adminBusinessId,toDate:S(new Date,"yyyy-MM-dd"),period:x.MONTHLY,fromDate:S(je(new Date,{years:1}),"yyyy-MM-dd"),excludedCounterparties:[],includedTags:[],excludedTags:[]},d=c(L);if(d)try{return JSON.parse(decodeURIComponent(d))}catch(n){console.log("Error parsing balance report filters from URL:",n)}return o},[i?.context.adminBusinessId,c]),[r,g]=m.useState(t),[b,h]=m.useState(void 0),[f,v]=m.useState(Object.keys(N)),p=m.useMemo(()=>{const{ownerId:o,fromDate:d,toDate:n}=r;return{ownerId:o,fromDate:d,toDate:n}},[r]),[{data:j,fetching:M}]=R({query:re,variables:p,pause:!r});m.useEffect(()=>{s(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(Te,{filter:r,setFilter:g,initiallyOpened:!r}),e.jsx(ae,{options:Object.entries(N).map(([o,d])=>({label:d.label,value:o})),onValueChange:v,defaultValue:f,placeholder:"Select Data Sets",variant:"default",maxCount:1})]})),h(void 0)},[j,M,r,s,g,f]),m.useEffect(()=>{g(o=>({...o,ownerId:i?.context.adminBusinessId}))},[i]);const C=m.useMemo(()=>{if(!j?.transactionsForBalanceReport)return[];const o=new Map;j.transactionsForBalanceReport.map(n=>{if(n.counterparty?.id&&(!n.isFee&&i?.context.financialAccountsBusinessesIds?.includes(n.counterparty.id)||r.excludedCounterparties?.includes(n.counterparty.id))||r.includedTags.length>0&&(!n.charge?.tags||n.charge.tags.length===0||!n.charge.tags.some(u=>r.includedTags.includes(u.id)))||r.excludedTags.length>0&&n.charge?.tags.length&&n.charge.tags.some(u=>r.excludedTags.includes(u.id)))return;const a=we(n.year,n.month,r.period);o.has(a)||o.set(a,{income:0,expense:0,delta:0,transactions:[]});const l=o.get(a);n.amountUsd.raw>0?l.income+=n.amountUsd.raw:l.expense+=n.amountUsd.raw,l.delta+=n.amountUsd.raw,l.transactions.push(n)});let d=0;return Array.from(o.entries()).sort((n,a)=>n[0].localeCompare(a[0])).map(([n,a])=>(d+=a.delta,{period:n,income:a.income,expense:a.expense,delta:a.delta,cumulative:d,transactions:a.transactions.sort((l,u)=>Math.abs(u.amountUsd.raw)-Math.abs(l.amountUsd.raw))}))},[j,r.period,r.excludedCounterparties,i?.context.financialAccountsBusinessesIds,r.includedTags,r.excludedTags]);return e.jsx(oe,{title:"Balance Report",description:"Accounts periodical balance",children:M?e.jsx(U,{}):e.jsxs(e.Fragment,{children:[e.jsxs(P,{className:"w-full",children:[e.jsx($,{children:e.jsx(se,{children:"Click specific period to expand it's transactions data"})}),e.jsx(Y,{children:e.jsx(de,{config:N,className:"h-150 w-full",children:e.jsxs(ye,{accessibilityLayer:!0,data:C,onClick:o=>h(o.activeLabel),children:[e.jsx(ue,{vertical:!1}),e.jsx(H,{dataKey:"period",tickLine:!1,tickMargin:10,axisLine:!1,tickFormatter:o=>Me(o,r.period)}),e.jsx(me,{content:e.jsx(pe,{formatter:(o,d,n,a)=>{const l=`bg-[var(--color-${d})]`;return a<2?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`${l} h-2.5 w-2.5 shrink-0 rounded-[2px]`}),N[d]?.label||d,e.jsx("div",{className:"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground",children:D.format(Number(o))})]}):e.jsxs("div",{className:"mt-1.5 flex basis-full items-center border-t pt-1.5 text-xs font-medium text-foreground",children:[e.jsx("div",{className:`h-2.5 w-2.5 shrink-0 rounded-[2px] mr-2 ${l}`}),N[d]?.label||d,e.jsx("div",{className:"ml-auto flex items-baseline gap-0.5 font-mono font-medium tabular-nums text-foreground",children:D.format(Number(o))})]})}})}),e.jsx(xe,{content:e.jsx(ge,{})}),f.includes("income")&&e.jsx(w,{dataKey:"income",fill:"var(--color-income)",radius:4}),f.includes("expense")&&e.jsx(w,{dataKey:"expense",fill:"var(--color-expense)",radius:4}),f.includes("delta")&&e.jsx(w,{dataKey:"delta",fill:"var(--color-delta)",radius:4}),f.includes("cumulative")&&e.jsx(w,{dataKey:"cumulative",fill:"var(--color-cumulative)",radius:4})]})})})]}),b&&e.jsx(Ne,{period:b,onCloseExtendedTransactions:()=>h(void 0),transactionIDs:C.find(o=>o.period===b)?.transactions.map(o=>o.id)??[]})]})})};export{_e as BalanceReport};
@@ -1 +1 @@
1
- import{j as e,X as C,Y as p,Z as S,_ as y,as as w,a0 as I,I as L,g as k,hL as _,r as u,t as m,i as M,D as E,aO as R,B as x,bW as H,z as T,aP as A,aQ as $,u as O,hM as V,L as P,G as q,V as K,a5 as z,hN as Q,F as W,cS as X,cV as Y,cW as Z,cX as b,cY as G,cZ as v,c_ as J,c$ as g,hO as ee,d5 as se,d6 as te,d7 as oe}from"./index-fZcP3X7C.js";import{D as re}from"./data-table-pagination-psKhAMGL.js";import{P as ne}from"./page-layout-DUgx8eXl.js";import{A as D}from"./arrow-up-down-CTxePA5K.js";function U({isInsert:s,formManager:n}){const{control:o}=n;return e.jsxs(e.Fragment,{children:[e.jsx(C,{name:"key",control:o,disabled:!s,rules:{required:"Required",validate:{positive:t=>Number(t)>0||"Key must be a positive number",integer:t=>Number.isInteger(Number(t))||"Key must be an integer"}},render:({field:t})=>e.jsxs(p,{children:[e.jsx(S,{children:"Key"}),e.jsx(y,{children:e.jsx(w,{...t,value:t.value??void 0,hideControls:!0,decimalScale:0,thousandSeparator:"",required:!0})}),e.jsx(I,{})]})}),e.jsx(C,{name:"name",control:o,rules:{required:"Required",minLength:{value:2,message:"Must be at least 2 characters"}},render:({field:t})=>e.jsxs(p,{children:[e.jsx(S,{children:"Name"}),e.jsx(y,{children:e.jsx(L,{...t,value:t.value??void 0,required:!0})}),e.jsx(I,{})]})}),e.jsx(C,{name:"defaultIrsCode",control:o,render:({field:t})=>e.jsxs(p,{children:[e.jsx(S,{children:"Default IRS Code"}),e.jsx(y,{children:e.jsx(w,{...t,value:t.value??void 0,hideControls:!0,decimalScale:0})}),e.jsx(I,{})]})})]})}const ae="updateSortCode",de=()=>{const[{fetching:s},n]=k(_),o=u.useCallback(async t=>{const d=`Error updating sort code ID [${t.key}]`,r=`${ae}-${t.key}`;m.loading("Updating Sort Code...",{id:r});try{const a=await n(t),i=M(a,d,r,"updateSortCode");if(i)return m.success("Success",{id:r,description:"SortCode updated"}),i.updateSortCode}catch(a){console.error(`${d}: ${a}`),m.error("Error",{id:r,description:d,duration:1e5,closeButton:!0})}return!1},[n]);return{fetching:s,updateSortCode:o}};function ie({sortCodeKey:s,onAdd:n}){const[o,t]=u.useState(!1);return e.jsxs(E,{open:o,onOpenChange:t,children:[e.jsx(R,{asChild:!0,children:e.jsx(x,{variant:"outline",size:"icon",children:e.jsx(H,{})})}),e.jsxs(T,{className:"w-[400px] max-w-screen-md",children:[e.jsx(A,{children:e.jsx($,{children:"Edit Sort Code"})}),e.jsx(ce,{sortCodeKey:s,close:()=>t(!1),onAdd:n})]})]})}function ce({sortCodeKey:s,close:n,onAdd:o}){const[{data:t,fetching:d}]=O({query:V,variables:{key:s}}),r=t?.sortCode;return!r&&!d&&m.error("Error",{description:"Couldn't find sort code"}),d?e.jsx(P,{className:"h-10 w-10 animate-spin"}):r?e.jsx(le,{sortCode:r,close:n,onAdd:o}):e.jsx("div",{children:"Sort code not found"})}function le({sortCode:s,close:n,onAdd:o}){const t=q({defaultValues:s}),{handleSubmit:d,formState:{dirtyFields:r}}=t,{updateSortCode:a,fetching:i}=de(),c=({key:l,...B})=>{const h=z(B,r);if(h&&Object.keys(h).length>0){let N;if(h.defaultIrsCode){const f=h.defaultIrsCode,j=Number(f);if(!Number.isInteger(j)||j<2||j>9999)throw new Error(`Invalid IRS code: ${f}`);N=j}a({fields:{...h,defaultIrsCode:N},key:s.key}).then(f=>{f&&(o?.(s.key),n())})}};return e.jsx(K,{...t,children:e.jsxs("form",{onSubmit:d(c),children:[e.jsx("div",{className:"flex flex-col gap-4 my-4",children:e.jsx(U,{isInsert:!1,formManager:t})}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx(x,{type:"submit",disabled:i,children:"Update"})})]})})}const ue="addSortCode",me=()=>{const[{fetching:s},n]=k(Q),o=u.useCallback(async t=>{const d=`Error adding new sort code [${t.name}]`,r=`${ue}-${t.name}`;m.loading("Adding sort code",{id:r});try{const a=await n(t);M(a,d,r)&&m.success("Success",{id:r,description:`"${t.name}" sort code was successfully added`})}catch(a){console.error(`${d}: ${a}`),m.error("Error",{id:r,description:d,duration:1e5,closeButton:!0})}},[n]);return{fetching:s,addSortCode:o}};function xe({onAdd:s}){const[n,o]=u.useState(!1);return e.jsxs(E,{open:n,onOpenChange:o,children:[e.jsx(R,{asChild:!0,children:e.jsx(x,{children:"Add Sort Code"})}),e.jsxs(T,{className:"w-[90vw] max-w-screen-md",children:[e.jsx(A,{children:e.jsx($,{children:"Add New Sort Code"})}),e.jsx(he,{close:()=>o(!1),onAdd:s})]})]})}function he({close:s,onAdd:n}){const o=q({}),{handleSubmit:t}=o,{addSortCode:d,fetching:r}=me(),a=i=>{i.key&&=parseInt(i.key.toString()),i.defaultIrsCode&&=parseInt(i.defaultIrsCode.toString()),d(i).then(()=>{s(),n?.()})};return e.jsx(K,{...o,children:e.jsxs("form",{onSubmit:t(a),children:[e.jsx("div",{className:"flex flex-col gap-4 my-4",children:e.jsx(U,{isInsert:!0,formManager:o})}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx(x,{type:"submit",disabled:r,children:"Add Sort Code"})})]})})}const F=[{id:"key",accessorKey:"key",cell:({row:s})=>e.jsx(g,{children:s.original.key}),header:({column:s})=>e.jsxs(x,{variant:"ghost",onClick:()=>s.toggleSorting(s.getIsSorted()==="asc"),children:["Key",e.jsx(D,{})]})},{id:"name",accessorKey:"name",cell:({row:s})=>e.jsx(g,{children:s.original.name}),header:({column:s})=>e.jsxs(x,{variant:"ghost",onClick:()=>s.toggleSorting(s.getIsSorted()==="asc"),children:["Name",e.jsx(D,{})]})},{id:"defaultIrsCode",accessorKey:"defaultIrsCode",cell:({row:s})=>e.jsx(g,{className:"flex flex-wrap gap-1 p-1",children:s.original.defaultIrsCode&&e.jsx(x,{variant:"outline",disabled:!0,className:"p-1 w-15",children:s.original.defaultIrsCode})}),header:"Default IRS Code"},{id:"edit",cell:({row:s})=>e.jsx(ie,{sortCodeKey:s.original.key,onAdd:s.original.refetchSortCodes})}],pe=()=>{const[{data:s,fetching:n,error:o},t]=O({query:ee}),{setFiltersContext:d}=u.useContext(W),r=u.useMemo(()=>s?.allSortCodes?.map(c=>({...c,refetchSortCodes:t}))??[],[s?.allSortCodes,t]),a=X({data:r,columns:F,getCoreRowModel:oe(),getPaginationRowModel:te(),getSortedRowModel:se(),initialState:{pagination:{pageSize:100}}}),i=a.getPageOptions();return u.useEffect(()=>{d(e.jsx("div",{className:"flex items-center justify-end gap-10 space-x-2 py-4",children:e.jsx(re,{table:a})}))},[d,a,i]),u.useEffect(()=>{o&&(console.error("Error fetching sort codes",o),m.error("Error",{description:"Error fetching sort codes"}))},[o]),e.jsx(ne,{title:`Sort Codes (${r.length})`,description:"All sort codes",headerActions:e.jsx(xe,{onAdd:()=>t()}),children:n?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(P,{className:"h-10 w-10 animate-spin mr-2"})}):e.jsx("div",{className:"flex flex-col gap-4 rounded-md border",children:e.jsxs(Y,{children:[e.jsx(Z,{children:a.getHeaderGroups().map(c=>e.jsx(b,{children:c.headers.map(l=>e.jsx(G,{children:l.isPlaceholder?null:v(l.column.columnDef.header,l.getContext())},l.id))},c.id))}),e.jsx(J,{children:a.getRowModel().rows.length===0?e.jsx(b,{children:e.jsx(g,{colSpan:F.length,className:"text-center py-8",children:"No sort codes found"})}):a.getRowModel().rows.map(c=>e.jsx(b,{children:c.getVisibleCells().map(l=>e.jsx(g,{children:v(l.column.columnDef.cell,l.getContext())},l.id))},c.id))})]})})})};export{pe as SortCodes};
1
+ import{j as e,Y as C,Z as p,_ as S,$ as y,ay as w,a1 as I,I as L,g as k,hL as _,r as u,t as m,i as M,D as R,aR as E,B as x,bW as H,z as T,aS as $,aT as A,u as O,hM as z,L as P,G as q,W as K,a9 as V,hN as W,F as Y,cS as Z,cV as G,cW as Q,cX as b,cY as X,cZ as v,c_ as J,c$ as g,hO as ee,d5 as se,d6 as te,d7 as oe}from"./index-C6OmHOHr.js";import{D as re}from"./data-table-pagination-Dhmbf7BR.js";import{P as ne}from"./page-layout-DpwpZHY3.js";import{A as D}from"./arrow-up-down-DMdWvrmz.js";function U({isInsert:s,formManager:n}){const{control:o}=n;return e.jsxs(e.Fragment,{children:[e.jsx(C,{name:"key",control:o,disabled:!s,rules:{required:"Required",validate:{positive:t=>Number(t)>0||"Key must be a positive number",integer:t=>Number.isInteger(Number(t))||"Key must be an integer"}},render:({field:t})=>e.jsxs(p,{children:[e.jsx(S,{children:"Key"}),e.jsx(y,{children:e.jsx(w,{...t,value:t.value??void 0,hideControls:!0,decimalScale:0,thousandSeparator:"",required:!0})}),e.jsx(I,{})]})}),e.jsx(C,{name:"name",control:o,rules:{required:"Required",minLength:{value:2,message:"Must be at least 2 characters"}},render:({field:t})=>e.jsxs(p,{children:[e.jsx(S,{children:"Name"}),e.jsx(y,{children:e.jsx(L,{...t,value:t.value??void 0,required:!0})}),e.jsx(I,{})]})}),e.jsx(C,{name:"defaultIrsCode",control:o,render:({field:t})=>e.jsxs(p,{children:[e.jsx(S,{children:"Default IRS Code"}),e.jsx(y,{children:e.jsx(w,{...t,value:t.value??void 0,hideControls:!0,decimalScale:0})}),e.jsx(I,{})]})})]})}const ae="updateSortCode",de=()=>{const[{fetching:s},n]=k(_),o=u.useCallback(async t=>{const d=`Error updating sort code ID [${t.key}]`,r=`${ae}-${t.key}`;m.loading("Updating Sort Code...",{id:r});try{const a=await n(t),i=M(a,d,r,"updateSortCode");if(i)return m.success("Success",{id:r,description:"SortCode updated"}),i.updateSortCode}catch(a){console.error(`${d}: ${a}`),m.error("Error",{id:r,description:d,duration:1e5,closeButton:!0})}return!1},[n]);return{fetching:s,updateSortCode:o}};function ie({sortCodeKey:s,onAdd:n}){const[o,t]=u.useState(!1);return e.jsxs(R,{open:o,onOpenChange:t,children:[e.jsx(E,{asChild:!0,children:e.jsx(x,{variant:"outline",size:"icon",children:e.jsx(H,{})})}),e.jsxs(T,{className:"w-[400px] max-w-screen-md",children:[e.jsx($,{children:e.jsx(A,{children:"Edit Sort Code"})}),e.jsx(ce,{sortCodeKey:s,close:()=>t(!1),onAdd:n})]})]})}function ce({sortCodeKey:s,close:n,onAdd:o}){const[{data:t,fetching:d}]=O({query:z,variables:{key:s}}),r=t?.sortCode;return!r&&!d&&m.error("Error",{description:"Couldn't find sort code"}),d?e.jsx(P,{className:"h-10 w-10 animate-spin"}):r?e.jsx(le,{sortCode:r,close:n,onAdd:o}):e.jsx("div",{children:"Sort code not found"})}function le({sortCode:s,close:n,onAdd:o}){const t=q({defaultValues:s}),{handleSubmit:d,formState:{dirtyFields:r}}=t,{updateSortCode:a,fetching:i}=de(),c=({key:l,...B})=>{const h=V(B,r);if(h&&Object.keys(h).length>0){let N;if(h.defaultIrsCode){const f=h.defaultIrsCode,j=Number(f);if(!Number.isInteger(j)||j<2||j>9999)throw new Error(`Invalid IRS code: ${f}`);N=j}a({fields:{...h,defaultIrsCode:N},key:s.key}).then(f=>{f&&(o?.(s.key),n())})}};return e.jsx(K,{...t,children:e.jsxs("form",{onSubmit:d(c),children:[e.jsx("div",{className:"flex flex-col gap-4 my-4",children:e.jsx(U,{isInsert:!1,formManager:t})}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx(x,{type:"submit",disabled:i,children:"Update"})})]})})}const ue="addSortCode",me=()=>{const[{fetching:s},n]=k(W),o=u.useCallback(async t=>{const d=`Error adding new sort code [${t.name}]`,r=`${ue}-${t.name}`;m.loading("Adding sort code",{id:r});try{const a=await n(t);M(a,d,r)&&m.success("Success",{id:r,description:`"${t.name}" sort code was successfully added`})}catch(a){console.error(`${d}: ${a}`),m.error("Error",{id:r,description:d,duration:1e5,closeButton:!0})}},[n]);return{fetching:s,addSortCode:o}};function xe({onAdd:s}){const[n,o]=u.useState(!1);return e.jsxs(R,{open:n,onOpenChange:o,children:[e.jsx(E,{asChild:!0,children:e.jsx(x,{children:"Add Sort Code"})}),e.jsxs(T,{className:"w-[90vw] max-w-screen-md",children:[e.jsx($,{children:e.jsx(A,{children:"Add New Sort Code"})}),e.jsx(he,{close:()=>o(!1),onAdd:s})]})]})}function he({close:s,onAdd:n}){const o=q({}),{handleSubmit:t}=o,{addSortCode:d,fetching:r}=me(),a=i=>{i.key&&=parseInt(i.key.toString()),i.defaultIrsCode&&=parseInt(i.defaultIrsCode.toString()),d(i).then(()=>{s(),n?.()})};return e.jsx(K,{...o,children:e.jsxs("form",{onSubmit:t(a),children:[e.jsx("div",{className:"flex flex-col gap-4 my-4",children:e.jsx(U,{isInsert:!0,formManager:o})}),e.jsx("div",{className:"flex justify-end mt-4",children:e.jsx(x,{type:"submit",disabled:r,children:"Add Sort Code"})})]})})}const F=[{id:"key",accessorKey:"key",cell:({row:s})=>e.jsx(g,{children:s.original.key}),header:({column:s})=>e.jsxs(x,{variant:"ghost",onClick:()=>s.toggleSorting(s.getIsSorted()==="asc"),children:["Key",e.jsx(D,{})]})},{id:"name",accessorKey:"name",cell:({row:s})=>e.jsx(g,{children:s.original.name}),header:({column:s})=>e.jsxs(x,{variant:"ghost",onClick:()=>s.toggleSorting(s.getIsSorted()==="asc"),children:["Name",e.jsx(D,{})]})},{id:"defaultIrsCode",accessorKey:"defaultIrsCode",cell:({row:s})=>e.jsx(g,{className:"flex flex-wrap gap-1 p-1",children:s.original.defaultIrsCode&&e.jsx(x,{variant:"outline",disabled:!0,className:"p-1 w-15",children:s.original.defaultIrsCode})}),header:"Default IRS Code"},{id:"edit",cell:({row:s})=>e.jsx(ie,{sortCodeKey:s.original.key,onAdd:s.original.refetchSortCodes})}],pe=()=>{const[{data:s,fetching:n,error:o},t]=O({query:ee}),{setFiltersContext:d}=u.useContext(Y),r=u.useMemo(()=>s?.allSortCodes?.map(c=>({...c,refetchSortCodes:t}))??[],[s?.allSortCodes,t]),a=Z({data:r,columns:F,getCoreRowModel:oe(),getPaginationRowModel:te(),getSortedRowModel:se(),initialState:{pagination:{pageSize:100}}}),i=a.getPageOptions();return u.useEffect(()=>{d(e.jsx("div",{className:"flex items-center justify-end gap-10 space-x-2 py-4",children:e.jsx(re,{table:a})}))},[d,a,i]),u.useEffect(()=>{o&&(console.error("Error fetching sort codes",o),m.error("Error",{description:"Error fetching sort codes"}))},[o]),e.jsx(ne,{title:`Sort Codes (${r.length})`,description:"All sort codes",headerActions:e.jsx(xe,{onAdd:()=>t()}),children:n?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(P,{className:"h-10 w-10 animate-spin mr-2"})}):e.jsx("div",{className:"flex flex-col gap-4 rounded-md border",children:e.jsxs(G,{children:[e.jsx(Q,{children:a.getHeaderGroups().map(c=>e.jsx(b,{children:c.headers.map(l=>e.jsx(X,{children:l.isPlaceholder?null:v(l.column.columnDef.header,l.getContext())},l.id))},c.id))}),e.jsx(J,{children:a.getRowModel().rows.length===0?e.jsx(b,{children:e.jsx(g,{colSpan:F.length,className:"text-center py-8",children:"No sort codes found"})}):a.getRowModel().rows.map(c=>e.jsx(b,{children:c.getVisibleCells().map(l=>e.jsx(g,{children:v(l.column.columnDef.cell,l.getContext())},l.id))},c.id))})]})})})};export{pe as SortCodes};
@@ -0,0 +1 @@
1
+ import{u as M,d9 as W,t as C,r as s,g as X,i as K,da as Q,db as Y,J as F,dc as E,j as e,D as R,aR as G,B as v,a3 as _,z as q,aS as J,aT as U,as as Z,at as ee,au as se,av as te,ax as ne,dd as ae,de as re,df as z,dg as V,bW as ce,dh as $,di as ie,N as P,X as B,L as A,dj as le,e as oe,O as de,Q as ue,dk as me,bh as he,b3 as xe,dl as je,x as k,dm as H,G as pe,K as fe,w as ge,W as ye,a2 as ve,cK as De,cV as be,cW as Ce,cX as O,cY as g,c_ as Ne,c$ as y,a4 as we,bS as Ie,F as Me,c as Te}from"./index-C6OmHOHr.js";import{s as L}from"./subMonths-Df-03cZk.js";const Se=()=>{const[{data:u,fetching:o,error:c},x]=M({query:W});c&&(console.error(`Error fetching contracts: ${c}`),C.error("Error",{description:"Unable to fetch contracts"}));const a=s.useMemo(()=>u?.allOpenContracts?.slice().sort((t,d)=>t.client.originalBusiness.name>d.client.originalBusiness.name?1:-1)??[],[u]),i=s.useMemo(()=>a.map(t=>({value:t.id,label:t.client.originalBusiness.name})),[a]);return{fetching:o,refresh:()=>x(),openContracts:a,selectableOpenContracts:i}},Fe="IssueMonthlyDocuments",Ee=()=>{const[{fetching:u},o]=X(Q),c=s.useCallback(async x=>{const a="Error issuing monthly documents",i=Fe;C.loading("Issuing documents",{id:i});try{const t=await o(x),d=K(t,a,i);if(d?.issueGreenInvoiceDocuments?.success){C.success("Success",{id:i,description:"Documents issued successfully"});return}d?.issueGreenInvoiceDocuments?.errors&&console.error(d.issueGreenInvoiceDocuments.errors),C.error("Error",{id:i,description:a,duration:1e5,closeButton:!0})}catch(t){console.error(`${a}: ${t}`),C.error("Error",{id:i,description:a,duration:1e5,closeButton:!0})}},[o]);return{fetching:u,issueDocuments:c}};function ke({issueMonth:u,contracts:o,onAdd:c}){const[x,a]=s.useState(!1),[i,t]=s.useState(""),[{data:d},h]=M({query:Y,variables:{issueMonth:u,clientId:i}}),j=s.useCallback(n=>{t(n),h()},[h,t]);return s.useEffect(()=>{i!==""&&d&&(c(F(E,d.clientMonthlyChargeDraft)),a(!1))},[i,d,c]),e.jsxs(R,{open:x,onOpenChange:a,children:[e.jsx(G,{asChild:!0,children:e.jsx(v,{variant:"outline",size:"icon",children:e.jsx(_,{})})}),e.jsxs(q,{className:"w-[400px] max-w-screen-md",children:[e.jsx(J,{children:e.jsx(U,{children:"Select document recipient"})}),e.jsxs(Z,{onValueChange:j,children:[e.jsx(ee,{children:e.jsx(se,{placeholder:"Recipient"})}),e.jsx(te,{children:o.map(n=>e.jsx(ne,{value:n.client.originalBusiness.id,children:n.client.originalBusiness.name},n.client.originalBusiness.id))})]})]})]})}function Pe({onApprove:u,draft:o}){const[c,x]=s.useState(!1),[a,i]=s.useState(!1),[t,d]=s.useState(null),{previewDocument:h,fetching:j}=ae(),[n,N]=s.useState(re(o)),T=s.useCallback((l,p)=>{N(f=>({...f,[l]:p}))},[]);s.useEffect(()=>{i(!1)},[n]);const D=s.useCallback(async()=>{try{const l=await h({input:n});if(!l)throw new Error("No preview data returned");d(l),i(!0)}catch(l){console.error("Failed to generate preview:",l)}},[n,h]);s.useEffect(()=>{c&&!t&&D()},[c,t,D]);const w=n.income?.reduce((l,p)=>{const f=p.price*p.quantity,r=f*((p.vatRate||0)/100);return l+f+r},0)||0,I=()=>{u(n),x(!1)};return e.jsxs(R,{open:c,onOpenChange:x,children:[e.jsx(G,{asChild:!0,type:"button",children:e.jsxs(z,{children:[e.jsx(V,{asChild:!0,type:"button",children:e.jsx(v,{className:"size-7.5",variant:"secondary",onClick:()=>x(l=>!l),type:"button",children:e.jsx(ce,{className:"size-5"})})}),e.jsx($,{children:e.jsx("p",{children:"Edit document"})})]})}),e.jsx(q,{className:"w-7xl sm:max-w-[95%] max-h-[90vh] overflow-y-auto",children:e.jsx("div",{className:"min-h-screen bg-gray-50 p-4",children:e.jsxs("div",{className:"max-w-7xl mx-auto",children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:"Edit Document"}),e.jsx("p",{className:"text-gray-600 mt-2",children:"Modify and preview your accounting document before issuing"})]}),e.jsxs("div",{className:"grid lg:grid-cols-2 gap-6",children:[e.jsxs("div",{className:"space-y-6",children:[e.jsx(ie,{formData:n,updateFormData:T}),e.jsx(P,{children:e.jsxs(B,{className:"pt-6",children:[e.jsxs("div",{className:"flex gap-3",children:[e.jsx(v,{onClick:D,disabled:j||a,variant:"outline",className:"flex-1 bg-transparent",children:j?e.jsxs(e.Fragment,{children:[e.jsx(A,{className:"w-4 h-4 mr-2 animate-spin"}),"Generating..."]}):e.jsxs(e.Fragment,{children:[e.jsx(le,{className:"w-4 h-4 mr-2"}),"Preview"]})}),e.jsxs(v,{onClick:I,className:"flex-1",children:[e.jsx(oe,{className:"w-4 h-4 mr-2"}),"Accept Changes"]})]}),w>0&&e.jsx("div",{className:"mt-4 p-3 bg-blue-50 rounded-lg",children:e.jsxs("div",{className:"flex justify-between items-center font-medium text-blue-900",children:[e.jsx("span",{children:"Total Document Amount:"}),e.jsxs("span",{children:[w.toFixed(2)," ",n.currency]})]})})]})})]}),e.jsxs("div",{className:"space-y-6",children:[e.jsxs(P,{className:"h-fit",children:[e.jsx(de,{children:e.jsx(ue,{children:"Document Preview"})}),e.jsx(B,{children:e.jsx("div",{className:"border-2 border-dashed border-gray-200 rounded-lg min-h-[600px] flex items-center justify-center bg-gray-50",children:j?e.jsxs("div",{className:"text-center",children:[e.jsx(A,{className:"w-8 h-8 animate-spin mx-auto mb-4 text-gray-400"}),e.jsx("p",{className:"text-gray-500",children:"Generating document preview..."})]}):t?e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"bg-white shadow-lg rounded-lg overflow-hidden",children:e.jsx("div",{className:"aspect-[8.5/11] bg-white border",children:e.jsx("div",{className:"h-full flex items-center justify-center",children:e.jsxs("div",{className:"text-center p-6",children:[e.jsx(me,{src:t}),!a&&e.jsx("p",{className:"text-xs text-amber-600 mt-3 bg-amber-50 px-2 py-1 rounded",children:"Preview may be outdated"})]})})})})}):e.jsxs("div",{className:"text-center",children:[e.jsx(he,{className:"w-16 h-16 mx-auto mb-4 text-gray-300"}),e.jsx("p",{className:"text-gray-500 mb-2",children:"No preview available"}),e.jsx("p",{className:"text-sm text-gray-400",children:"Click Preview to generate document"})]})})})]}),n.client?.id&&e.jsx(xe,{businessId:n.client?.id,linkedDocumentIds:n.linkedDocumentIds??[]}),e.jsx(je,{documentType:n.type})]})]})]})})})]})}const Be=({drafts:u})=>{const[o,c]=s.useState(u.map(r=>F(E,r))),x=k(L(new Date,1),"yyyy-MM-dd"),[a,i]=s.useState(x),[{data:t},d]=M({query:H,variables:{issueMonth:a},pause:!0});s.useEffect(()=>{t?.clientMonthlyChargesDrafts&&c(t.clientMonthlyChargesDrafts.map(r=>F(E,r)))},[t,c]),s.useEffect(()=>{d()},[a,d]);const h=pe({values:{generateDocumentsInfo:o}}),{issueDocuments:j}=Ee(),{openContracts:n}=Se(),{fields:N,append:T,remove:D,update:w}=fe({control:h.control,name:"generateDocumentsInfo"}),I=h.watch("generateDocumentsInfo"),l=s.useMemo(()=>N.map((r,m)=>({...r,...I[m],id:r.client?.id})),[N,I]),p=s.useCallback(r=>{j(r)},[j]),f=s.useMemo(()=>n.filter(r=>r.billingCycle===ge.Monthly&&!l.some(m=>m.client?.id===r.client.originalBusiness.id)),[l,n]);return e.jsx("div",{className:"p-2",children:e.jsx(ye,{...h,children:e.jsxs("form",{onSubmit:h.handleSubmit(p),children:[e.jsxs("div",{className:"flex gap-2 items-center mb-4",children:[e.jsx(ve,{children:"Issue Month:"}),e.jsx(De,{value:new Date(a),onChange:r=>{const m=new Date(r.getFullYear(),r.getMonth(),15);i(k(m,"yyyy-MM-dd"))},popoverProps:{withinPortal:!0}})]}),e.jsxs(be,{children:[e.jsx(Ce,{children:e.jsxs(O,{children:[e.jsx(g,{children:"Name"}),e.jsx(g,{children:"Document"}),e.jsx(g,{children:"Amount"}),e.jsx(g,{children:"Remark"}),e.jsx(g,{children:"Recipients"}),e.jsx(g,{})]})}),e.jsx(Ne,{children:l.map(({id:r,...m},S)=>e.jsxs(O,{children:[e.jsx(y,{children:m.client?.name}),e.jsx(y,{children:m.type}),e.jsxs(y,{children:[m.income?.[0]?.price," ",m.income?.[0]?.currency]}),e.jsx(y,{children:e.jsx("span",{className:"text-sm text-gray-500 whitespace-normal max-w-50",children:m.remarks})}),e.jsx(y,{children:e.jsx("div",{className:"flex flex-col",children:m.client?.emails?.map(b=>e.jsx("span",{className:"text-sm text-gray-500",children:b},b))})}),e.jsx(y,{children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs(z,{children:[e.jsx(V,{asChild:!0,type:"button",children:e.jsx(v,{className:"size-7.5",variant:"secondary",onClick:()=>D(S),children:e.jsx(we,{size:16})})}),e.jsx($,{children:e.jsx("p",{children:"Remove document"})})]}),e.jsx(Pe,{draft:m,onApprove:b=>{h.setValue(`generateDocumentsInfo.${S}`,b,{shouldDirty:!0,shouldTouch:!0,shouldValidate:!0}),w(S,{...b})}})]})})]},r))})]}),e.jsxs("div",{className:"flex justify-between items-center mt-4",children:[e.jsx(ke,{contracts:f,onAdd:T,issueMonth:a}),e.jsx(Ie,{onConfirm:h.handleSubmit(p),title:`Are you sure you want to issue ${l.length} documents?`,children:e.jsx(v,{children:"Issue"})})]})]})})})},Re=()=>{const{setFiltersContext:u}=s.useContext(Me),[{data:o,fetching:c}]=M({query:H,variables:{issueMonth:k(L(new Date,1),"yyyy-MM-dd")}});return s.useEffect(()=>{o?.clientMonthlyChargesDrafts||u(null)},[o,u]),c?e.jsx(Te,{}):e.jsx(Be,{drafts:o?.clientMonthlyChargesDrafts??[]})};export{Re as IssueDocuments};
@@ -1 +1 @@
1
- import{g as k,h as M,r as a,t as j,i as A,u as N,k as F,j as e,c as L,l as P,B as S,m as v,n as T,I as z,F as D,o as $,T as O,L as R,p as U,R as b,q,s as _}from"./index-fZcP3X7C.js";import{u as C}from"./use-url-query-DyJg_rMw.js";import{B as Q}from"./business-header-Dx4N1uVn.js";import{C as V,M as H}from"./Checkbox-qIwbw1Vm.js";import{P as K}from"./page-layout-DUgx8eXl.js";import{P as G}from"./Pagination-D9TkQfLt.js";import{P as J,a as W}from"./panel-top-open-CcWXXds7.js";import"./building-2-B6TvGHom.js";import"./create-event-handler-BiA-1lGu.js";const X="mergeBusinesses",Y=()=>{const[{fetching:o},d]=k(M),u=a.useCallback(async l=>{const c=`Error merging into business ID [${l.targetBusinessId}]`,t=`${X}-${l.targetBusinessId}`;j.loading("Merging Businesses",{id:t});try{const i=await d(l),s=A(i,c,t);if(s)return j.success("Success",{id:t,description:"Businesses merged"}),s.mergeBusinesses.id}catch(i){console.error(`${c}: ${i}`),j.error("Error",{id:t,description:c,duration:1e5,closeButton:!0})}},[d]);return{fetching:o,mergeBusinesses:u}};function Z({businessIds:o,onDone:d,resetMerge:u}){const{mergeBusinesses:l,fetching:c}=Y(),t=Array.from(new Set(o)),[{data:i,fetching:s}]=N({query:F,variables:{businessIds:t}}),[m,h]=a.useState(i?.businesses[0]),n=i?.businesses.length!==t.length&&"Some businesses were not Found"||void 0,g=i?.businesses||[],p=a.useCallback(async()=>{if(!m){j.error("Error",{description:"No main business selected"});return}if(t.length<2){j.error("Error",{description:"At least 2 businesses are required to execute a merge"});return}return await l({targetBusinessId:m.id,businessIdsToMerge:t.filter(x=>x!==m.id)}),u(),d()},[m,t,l,d,u]);return e.jsxs(e.Fragment,{children:[s&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx(L,{})}),!s&&n&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx("h3",{className:"sm:text-2xl text-xl font-medium title-font mb-6 text-gray-900",children:n})}),!s&&!n&&e.jsxs(e.Fragment,{children:[e.jsxs("table",{children:[e.jsxs("tr",{children:[e.jsx("th",{children:"Main"}),g.map(x=>e.jsx("td",{children:e.jsx("div",{className:"flex items-center justify-center mx-2 px-2 py-2 border-2 border-b-0 rounded-t-xl",children:e.jsx(V,{checked:x.id===m?.id,size:"xl",onClick:()=>{h(x)}})})},x.id))]}),e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),g.map(x=>e.jsx("td",{children:x.name},x.id))]})]}),e.jsxs("div",{className:"flex justify-center gap-5 mt-5",children:[e.jsx("button",{type:"button",className:" text-white bg-blue-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-blue-600 rounded-sm text-lg",disabled:s||c,onClick:p,children:"Accept"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:d,children:"Cancel"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:()=>{u(),d()},children:"Reset Merge"})]})]})]})}function ee(o){const[d,{close:u,open:l}]=P(!1),{selected:c,resetMerge:t}=o,i=new Set(c.map(({id:g})=>g)),s=i.size>=1,[m,h]=a.useState(s?"default":"outline");a.useEffect(()=>{h(s?"default":"outline")},[s]);const n=a.useCallback(()=>{u(),c.map(({onChange:g})=>g())},[c,u]);return e.jsxs(e.Fragment,{children:[e.jsx(S,{onClick:()=>{s&&l()},disabled:!s,variant:m,className:v("size-7.5",s?" bg-blue-500 hover:bg-blue-500/90":""),size:"icon",children:e.jsx(H,{className:"size-5"})}),e.jsx(T,{opened:d,onClose:u,size:"auto",centered:!0,children:e.jsx(Z,{businessIds:Array.from(i),onDone:n,resetMerge:t})})]})}function se({activePage:o,setPage:d,totalPages:u=1,businessName:l,setBusinessName:c}){const{get:t,set:i}=C(),[s,m]=a.useState(l);a.useEffect(()=>{const n=o>1?o.toFixed(0):void 0,g=t("page");n!==g&&n!=="1"&&i("page",n)},[o,t,i]),a.useEffect(()=>{const n=setTimeout(()=>{c(s)},600);return()=>{clearTimeout(n)}},[s,c]);const h=n=>{m(n)};return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(G,{className:"flex-auto",value:o,onChange:d,total:u}),e.jsx(z,{className:"w-72",placeholder:"Business Name",defaultValue:l??void 0,onChange:n=>h(n.target.value===""?void 0:n.target.value)})]})}const ue=()=>{const{get:o}=C(),[d,u]=a.useState(!1),[l,c]=a.useState(o("page")?Number(o("page")):1),[t,i]=a.useState(o("name")?o("page"):void 0),{setFiltersContext:s}=a.useContext(D),[{data:m,fetching:h},n]=N({query:_,variables:{page:l,limit:100,name:t}}),g=$(),[p,x]=a.useState([]),y=a.useCallback((r,f)=>{p.map(B=>B.id).includes(r)?x(p.filter(B=>B.id!==r)):x([...p,{id:r,onChange:f}])},[p]);function I(){x([])}a.useEffect(()=>{s(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(se,{activePage:l,setPage:c,businessName:t,setBusinessName:i,totalPages:m?.allBusinesses?.pageInfo.totalPages}),e.jsx(O,{label:"Expand all businesses",children:e.jsx(S,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>u(r=>!r),children:d?e.jsx(J,{className:"size-5"}):e.jsx(W,{className:"size-5"})})}),e.jsx(ee,{selected:p,resetMerge:I})]}))},[m,l,t,d,s,c,i,u,p]);const E=m?.allBusinesses?.nodes.filter(r=>r.__typename==="LtdFinancialEntity").sort((r,f)=>r.name.toLowerCase()>f.name.toLowerCase()?1:-1)??[],w=new Set(p.map(r=>r.id));return e.jsx(K,{title:`Businesses (${m?.allBusinesses?.pageInfo.totalRecords??""})`,description:"All businesses",headerActions:e.jsx("div",{className:"flex items-center py-4 gap-4",children:e.jsx(q,{description:"",onAdd:()=>n()})}),children:h?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(R,{className:v("h-10 w-10 animate-spin mr-2")})}):e.jsx("div",{className:"space-y-2",children:E.map(r=>e.jsx("div",{className:"group relative border rounded-lg hover:shadow-md transition-shadow",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"pl-4 flex items-center",children:e.jsx(U,{checked:w.has(r.id),onCheckedChange:()=>{y(r.id,()=>{})},className:"h-4 w-4 rounded border-gray-300 cursor-pointer",onClick:f=>f.stopPropagation()})}),e.jsx("div",{role:"button",tabIndex:0,className:"flex-1 cursor-pointer",onClick:()=>{g(b.BUSINESSES.DETAIL(r.id),{state:{from:b.BUSINESSES.ALL}})},onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),g(b.BUSINESSES.DETAIL(r.id),{state:{from:b.BUSINESSES.ALL}}))},children:e.jsx(Q,{data:r})})]})},r.id))})})};export{ue as Businesses};
1
+ import{g as k,h as M,r as a,t as j,i as A,u as N,k as F,j as e,c as L,l as P,B as S,m as v,n as T,I as z,F as D,o as $,T as O,L as R,p as U,R as b,q,s as _}from"./index-C6OmHOHr.js";import{u as C}from"./use-url-query-BSUiacze.js";import{B as Q}from"./business-header-S5R7Fq8P.js";import{C as V,M as H}from"./Checkbox-Cmx4P-eR.js";import{P as K}from"./page-layout-DpwpZHY3.js";import{P as G}from"./Pagination-p2BVFuhf.js";import{P as J,a as W}from"./panel-top-open-CNX1-h4c.js";import"./building-2-Y3dys8Pf.js";import"./create-event-handler-BiA-1lGu.js";const X="mergeBusinesses",Y=()=>{const[{fetching:o},d]=k(M),u=a.useCallback(async l=>{const c=`Error merging into business ID [${l.targetBusinessId}]`,t=`${X}-${l.targetBusinessId}`;j.loading("Merging Businesses",{id:t});try{const i=await d(l),s=A(i,c,t);if(s)return j.success("Success",{id:t,description:"Businesses merged"}),s.mergeBusinesses.id}catch(i){console.error(`${c}: ${i}`),j.error("Error",{id:t,description:c,duration:1e5,closeButton:!0})}},[d]);return{fetching:o,mergeBusinesses:u}};function Z({businessIds:o,onDone:d,resetMerge:u}){const{mergeBusinesses:l,fetching:c}=Y(),t=Array.from(new Set(o)),[{data:i,fetching:s}]=N({query:F,variables:{businessIds:t}}),[m,h]=a.useState(i?.businesses[0]),n=i?.businesses.length!==t.length&&"Some businesses were not Found"||void 0,g=i?.businesses||[],p=a.useCallback(async()=>{if(!m){j.error("Error",{description:"No main business selected"});return}if(t.length<2){j.error("Error",{description:"At least 2 businesses are required to execute a merge"});return}return await l({targetBusinessId:m.id,businessIdsToMerge:t.filter(x=>x!==m.id)}),u(),d()},[m,t,l,d,u]);return e.jsxs(e.Fragment,{children:[s&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx(L,{})}),!s&&n&&e.jsx("div",{className:"flex flex-col text-center w-full mb-1",children:e.jsx("h3",{className:"sm:text-2xl text-xl font-medium title-font mb-6 text-gray-900",children:n})}),!s&&!n&&e.jsxs(e.Fragment,{children:[e.jsxs("table",{children:[e.jsxs("tr",{children:[e.jsx("th",{children:"Main"}),g.map(x=>e.jsx("td",{children:e.jsx("div",{className:"flex items-center justify-center mx-2 px-2 py-2 border-2 border-b-0 rounded-t-xl",children:e.jsx(V,{checked:x.id===m?.id,size:"xl",onClick:()=>{h(x)}})})},x.id))]}),e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),g.map(x=>e.jsx("td",{children:x.name},x.id))]})]}),e.jsxs("div",{className:"flex justify-center gap-5 mt-5",children:[e.jsx("button",{type:"button",className:" text-white bg-blue-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-blue-600 rounded-sm text-lg",disabled:s||c,onClick:p,children:"Accept"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:d,children:"Cancel"}),e.jsx("button",{type:"button",className:" text-white bg-red-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-red-600 rounded-sm text-lg",onClick:()=>{u(),d()},children:"Reset Merge"})]})]})]})}function ee(o){const[d,{close:u,open:l}]=P(!1),{selected:c,resetMerge:t}=o,i=new Set(c.map(({id:g})=>g)),s=i.size>=1,[m,h]=a.useState(s?"default":"outline");a.useEffect(()=>{h(s?"default":"outline")},[s]);const n=a.useCallback(()=>{u(),c.map(({onChange:g})=>g())},[c,u]);return e.jsxs(e.Fragment,{children:[e.jsx(S,{onClick:()=>{s&&l()},disabled:!s,variant:m,className:v("size-7.5",s?" bg-blue-500 hover:bg-blue-500/90":""),size:"icon",children:e.jsx(H,{className:"size-5"})}),e.jsx(T,{opened:d,onClose:u,size:"auto",centered:!0,children:e.jsx(Z,{businessIds:Array.from(i),onDone:n,resetMerge:t})})]})}function se({activePage:o,setPage:d,totalPages:u=1,businessName:l,setBusinessName:c}){const{get:t,set:i}=C(),[s,m]=a.useState(l);a.useEffect(()=>{const n=o>1?o.toFixed(0):void 0,g=t("page");n!==g&&n!=="1"&&i("page",n)},[o,t,i]),a.useEffect(()=>{const n=setTimeout(()=>{c(s)},600);return()=>{clearTimeout(n)}},[s,c]);const h=n=>{m(n)};return e.jsxs("div",{className:"flex flex-row gap-5 items-center",children:[e.jsx(G,{className:"flex-auto",value:o,onChange:d,total:u}),e.jsx(z,{className:"w-72",placeholder:"Business Name",defaultValue:l??void 0,onChange:n=>h(n.target.value===""?void 0:n.target.value)})]})}const ue=()=>{const{get:o}=C(),[d,u]=a.useState(!1),[l,c]=a.useState(o("page")?Number(o("page")):1),[t,i]=a.useState(o("name")?o("page"):void 0),{setFiltersContext:s}=a.useContext(D),[{data:m,fetching:h},n]=N({query:_,variables:{page:l,limit:100,name:t}}),g=$(),[p,x]=a.useState([]),y=a.useCallback((r,f)=>{p.map(B=>B.id).includes(r)?x(p.filter(B=>B.id!==r)):x([...p,{id:r,onChange:f}])},[p]);function I(){x([])}a.useEffect(()=>{s(e.jsxs("div",{className:"flex flex-row gap-x-5",children:[e.jsx(se,{activePage:l,setPage:c,businessName:t,setBusinessName:i,totalPages:m?.allBusinesses?.pageInfo.totalPages}),e.jsx(O,{label:"Expand all businesses",children:e.jsx(S,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>u(r=>!r),children:d?e.jsx(J,{className:"size-5"}):e.jsx(W,{className:"size-5"})})}),e.jsx(ee,{selected:p,resetMerge:I})]}))},[m,l,t,d,s,c,i,u,p]);const E=m?.allBusinesses?.nodes.filter(r=>r.__typename==="LtdFinancialEntity").sort((r,f)=>r.name.toLowerCase()>f.name.toLowerCase()?1:-1)??[],w=new Set(p.map(r=>r.id));return e.jsx(K,{title:`Businesses (${m?.allBusinesses?.pageInfo.totalRecords??""})`,description:"All businesses",headerActions:e.jsx("div",{className:"flex items-center py-4 gap-4",children:e.jsx(q,{description:"",onAdd:()=>n()})}),children:h?e.jsx("div",{className:"flex flex-row justify-center",children:e.jsx(R,{className:v("h-10 w-10 animate-spin mr-2")})}):e.jsx("div",{className:"space-y-2",children:E.map(r=>e.jsx("div",{className:"group relative border rounded-lg hover:shadow-md transition-shadow",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"pl-4 flex items-center",children:e.jsx(U,{checked:w.has(r.id),onCheckedChange:()=>{y(r.id,()=>{})},className:"h-4 w-4 rounded border-gray-300 cursor-pointer",onClick:f=>f.stopPropagation()})}),e.jsx("div",{role:"button",tabIndex:0,className:"flex-1 cursor-pointer",onClick:()=>{g(b.BUSINESSES.DETAIL(r.id),{state:{from:b.BUSINESSES.ALL}})},onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),g(b.BUSINESSES.DETAIL(r.id),{state:{from:b.BUSINESSES.ALL}}))},children:e.jsx(Q,{data:r})})]})},r.id))})})};export{ue as Businesses};
@@ -1 +1 @@
1
- import{r as c,j as e,B as u,a as y,F as g,u as P,L as D,fW as w}from"./index-fZcP3X7C.js";import{d as R}from"./graphql-document-dedupe-fragments-ByT8-wlV.js";import{P as E}from"./page-layout-DUgx8eXl.js";import{R as d}from"./report-commentary-row-BonuPEAK.js";import{P as v}from"./modal-B_jJz-4Z.js";import{Y as p}from"./YearPickerInput-BdNLRDw_.js";import{F}from"./funnel-DP2XBopJ.js";import{T as C}from"./Table-Cr3nIx5M.js";import"./toggle-expansion-button-pWLCCDmM.js";import"./panel-top-open-CcWXXds7.js";function A({year:l,setYear:h,referenceYears:o,setReferenceYears:j}){const[m,x]=c.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx(v,{opened:m,onClose:()=>x(!1),withCloseButton:!0,content:e.jsxs(e.Fragment,{children:[e.jsx(p,{label:"Change report year",value:new Date(l,0,1),onChange:n=>n&&h(n?.getFullYear()),popoverProps:{withinPortal:!0},minDate:new Date(2010,0,1),maxDate:new Date}),e.jsx(p,{type:"multiple",label:"Pick reference years",value:o?.map(n=>new Date(n,0,1)),onChange:n=>j(n.map(i=>i.getFullYear()).filter(i=>l!==i)),popoverProps:{withinPortal:!0},minDate:new Date(2010,0,1),maxDate:new Date})]})}),e.jsx(u,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>x(!0),children:e.jsx(F,{className:"size-5"})})]})}const I=()=>{const{year:l}=y(),{setFiltersContext:h}=c.useContext(g),[o,j]=c.useState(l?Number(l):new Date().getFullYear()),[m,x]=c.useState([]),[{data:n,fetching:i}]=P({query:R(w),variables:{reportYear:o,referenceYears:m}});c.useEffect(()=>{h(e.jsx("div",{className:"flex flex-row gap-2",children:e.jsx(A,{year:o,setYear:j,referenceYears:m,setReferenceYears:x})}))},[o,i,h,m,x]);const f=n?.profitAndLossReport,r=f?.report,s=f?.reference??[];return e.jsx(E,{title:"Profit and Loss Report",children:i?e.jsx(D,{className:"h-10 w-10 animate-spin mr-2 self-center"}):e.jsx("div",{className:"flex flex-col gap-4",children:r&&e.jsxs(C,{highlightOnHover:!0,fontSize:"md",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{}),e.jsx("th",{children:o},o),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.year},t.year))]})}),e.jsxs("tbody",{children:[e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("th",{children:"Revenue"}),e.jsx("th",{children:r.revenue.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("th",{children:a.revenue.amount.formatted},a.year))]}),commentaryData:r.revenue}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Cost of Sales"}),e.jsx("td",{children:r.costOfSales.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.costOfSales.amount.formatted},a.year))]}),commentaryData:r.costOfSales}),e.jsxs("tr",{children:[e.jsx("th",{children:"Gross Profit"}),e.jsx("th",{children:r.grossProfit.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.grossProfit.formatted},t.year))]}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"R&D Expenses"}),e.jsx("td",{children:r.researchAndDevelopmentExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.researchAndDevelopmentExpenses.amount.formatted},a.year))]}),commentaryData:r.researchAndDevelopmentExpenses}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Marketing Expenses"}),e.jsx("td",{children:r.marketingExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.marketingExpenses.amount.formatted},a.year))]}),commentaryData:r.marketingExpenses}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Management and General Expenses"}),e.jsx("td",{children:r.managementAndGeneralExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.managementAndGeneralExpenses.amount.formatted},a.year))]}),commentaryData:r.managementAndGeneralExpenses}),e.jsxs("tr",{children:[e.jsx("th",{children:"Operating Profit"}),e.jsx("th",{children:r.operatingProfit.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.operatingProfit.formatted},t.year))]}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Financial Expenses"}),e.jsx("td",{children:r.financialExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.financialExpenses.amount.formatted},a.year))]}),commentaryData:r.financialExpenses}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Other Income"}),e.jsx("td",{children:r.otherIncome.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.otherIncome.amount.formatted},a.year))]}),commentaryData:r.otherIncome}),e.jsxs("tr",{children:[e.jsx("th",{children:"Profit Before Tax"}),e.jsx("th",{children:r.profitBeforeTax.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.profitBeforeTax.formatted},t.year))]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Tax"}),e.jsx("td",{children:r.tax.formatted}),e.jsx("td",{}),s.map(t=>e.jsx("td",{children:t.tax.formatted},t.year))]})]}),e.jsx("tfoot",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Net Profit"}),e.jsx("th",{children:r.netProfit.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.netProfit.formatted},t.year))]})})]})})})};export{I as ProfitAndLossReport};
1
+ import{r as c,j as e,B as u,a as y,F as g,u as P,L as D,fW as w}from"./index-C6OmHOHr.js";import{d as R}from"./graphql-document-dedupe-fragments-ByT8-wlV.js";import{P as E}from"./page-layout-DpwpZHY3.js";import{R as d}from"./report-commentary-row-C4I-ATEX.js";import{P as v}from"./modal-CCAYjiOC.js";import{Y as p}from"./YearPickerInput-BPVLgEAY.js";import{F}from"./funnel-B2plvroD.js";import{T as C}from"./Table-Cve82Lq5.js";import"./toggle-expansion-button-Babot8nj.js";import"./panel-top-open-CNX1-h4c.js";function A({year:l,setYear:h,referenceYears:o,setReferenceYears:j}){const[m,x]=c.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsx(v,{opened:m,onClose:()=>x(!1),withCloseButton:!0,content:e.jsxs(e.Fragment,{children:[e.jsx(p,{label:"Change report year",value:new Date(l,0,1),onChange:n=>n&&h(n?.getFullYear()),popoverProps:{withinPortal:!0},minDate:new Date(2010,0,1),maxDate:new Date}),e.jsx(p,{type:"multiple",label:"Pick reference years",value:o?.map(n=>new Date(n,0,1)),onChange:n=>j(n.map(i=>i.getFullYear()).filter(i=>l!==i)),popoverProps:{withinPortal:!0},minDate:new Date(2010,0,1),maxDate:new Date})]})}),e.jsx(u,{variant:"outline",size:"icon",className:"size-7.5",onClick:()=>x(!0),children:e.jsx(F,{className:"size-5"})})]})}const I=()=>{const{year:l}=y(),{setFiltersContext:h}=c.useContext(g),[o,j]=c.useState(l?Number(l):new Date().getFullYear()),[m,x]=c.useState([]),[{data:n,fetching:i}]=P({query:R(w),variables:{reportYear:o,referenceYears:m}});c.useEffect(()=>{h(e.jsx("div",{className:"flex flex-row gap-2",children:e.jsx(A,{year:o,setYear:j,referenceYears:m,setReferenceYears:x})}))},[o,i,h,m,x]);const f=n?.profitAndLossReport,r=f?.report,s=f?.reference??[];return e.jsx(E,{title:"Profit and Loss Report",children:i?e.jsx(D,{className:"h-10 w-10 animate-spin mr-2 self-center"}):e.jsx("div",{className:"flex flex-col gap-4",children:r&&e.jsxs(C,{highlightOnHover:!0,fontSize:"md",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{}),e.jsx("th",{children:o},o),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.year},t.year))]})}),e.jsxs("tbody",{children:[e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("th",{children:"Revenue"}),e.jsx("th",{children:r.revenue.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("th",{children:a.revenue.amount.formatted},a.year))]}),commentaryData:r.revenue}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Cost of Sales"}),e.jsx("td",{children:r.costOfSales.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.costOfSales.amount.formatted},a.year))]}),commentaryData:r.costOfSales}),e.jsxs("tr",{children:[e.jsx("th",{children:"Gross Profit"}),e.jsx("th",{children:r.grossProfit.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.grossProfit.formatted},t.year))]}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"R&D Expenses"}),e.jsx("td",{children:r.researchAndDevelopmentExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.researchAndDevelopmentExpenses.amount.formatted},a.year))]}),commentaryData:r.researchAndDevelopmentExpenses}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Marketing Expenses"}),e.jsx("td",{children:r.marketingExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.marketingExpenses.amount.formatted},a.year))]}),commentaryData:r.marketingExpenses}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Management and General Expenses"}),e.jsx("td",{children:r.managementAndGeneralExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.managementAndGeneralExpenses.amount.formatted},a.year))]}),commentaryData:r.managementAndGeneralExpenses}),e.jsxs("tr",{children:[e.jsx("th",{children:"Operating Profit"}),e.jsx("th",{children:r.operatingProfit.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.operatingProfit.formatted},t.year))]}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Financial Expenses"}),e.jsx("td",{children:r.financialExpenses.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.financialExpenses.amount.formatted},a.year))]}),commentaryData:r.financialExpenses}),e.jsx(d,{dataRow:t=>e.jsxs("tr",{children:[e.jsx("td",{children:"Other Income"}),e.jsx("td",{children:r.otherIncome.amount.formatted}),e.jsx("th",{children:t}),s.map(a=>e.jsx("td",{children:a.otherIncome.amount.formatted},a.year))]}),commentaryData:r.otherIncome}),e.jsxs("tr",{children:[e.jsx("th",{children:"Profit Before Tax"}),e.jsx("th",{children:r.profitBeforeTax.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.profitBeforeTax.formatted},t.year))]}),e.jsxs("tr",{children:[e.jsx("td",{children:"Tax"}),e.jsx("td",{children:r.tax.formatted}),e.jsx("td",{}),s.map(t=>e.jsx("td",{children:t.tax.formatted},t.year))]})]}),e.jsx("tfoot",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Net Profit"}),e.jsx("th",{children:r.netProfit.formatted}),e.jsx("th",{}),s.map(t=>e.jsx("th",{children:t.netProfit.formatted},t.year))]})})]})})})};export{I as ProfitAndLossReport};
@@ -0,0 +1,6 @@
1
+ import{v as bn,gs as ne,fJ as A,fH as pe,gt as qe,gu as Dn,j as i,T as mt,bU as gt,R as yt,B as z,m as N,bS as kn,gv as Mn,e8 as wn,u as pt,gw as Cn,G as xt,r as S,cQ as vt,d as Sn,W as bt,e9 as jn,Y as re,Z as oe,_ as ae,as as Nn,$ as ge,at as On,au as Tn,av as Wn,ax as En,a1 as le,bt as Dt,x as ue,an as _n,a9 as In,g as Fn,gx as Yn,t as Ee,i as Pn,L as Bn,ar as et,bs as tt,bM as Rn,bu as zn,gy as An,I as kt,gz as qn,gA as Hn,fI as $n,gB as Zn,gC as Un,gD as Ln,gE as Kn,gF as Gn,gG as Vn,gH as Jn,gI as Mt,ah as m,gJ as Qn,gK as Xn,dq as se,gL as nt,gM as es,gN as ts,b0 as ns,gO as ss,dx as rs,ee as os,ef as as,gP as is,D as cs,aR as ls,z as ds,aS as us,aT as fs,gQ as hs,gR as ms,gS as gs,cw as ys,br as ps,cr as xs,q as vs,e as bs,dp as ce,fE as Ds,J as ks,fq as Ms,cS as ws,d6 as Cs,d5 as Ss,d7 as js,cV as Ns,cW as Os,cX as _e,cY as Ts,cZ as st,c_ as Ws,c$ as rt}from"./index-C6OmHOHr.js";import{u as Ze,S as Es}from"./similar-transactions-modal-DgD48GZ2.js";import{a as wt}from"./addDays-ClGDfhvI.js";import{L as _s}from"./list-plus-DbuCDPM8.js";import{T as Is}from"./tooltip-DStdzzhK.js";/**
2
+ * @license lucide-react v0.548.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const Fs=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],Ys=bn("external-link",Fs);function Ps(e,t,n){return wt(e,t*7,n)}function Bs(e,t){let n,s=t?.in;return e.forEach(r=>{!s&&typeof r=="object"&&(s=ne.bind(null,r));const a=A(r,s);(!n||n<a||isNaN(+a))&&(n=a)}),ne(s,n||NaN)}function Rs(e,t){let n,s=t?.in;return e.forEach(r=>{!s&&typeof r=="object"&&(s=ne.bind(null,r));const a=A(r,s);(!n||n>a||isNaN(+a))&&(n=a)}),ne(s,n||NaN)}function zs(e,t,n){const[s,r]=pe(n?.in,e,t);return+qe(s)==+qe(r)}function As(e,t,n){const[s,r]=pe(n?.in,e,t),a=s.getFullYear()-r.getFullYear(),c=s.getMonth()-r.getMonth();return a*12+c}function qs(e,t){const n=A(e,t?.in),s=n.getMonth();return n.setFullYear(n.getFullYear(),s+1,0),n.setHours(23,59,59,999),n}function Ct(e,t){const[n,s]=pe(e,t.start,t.end);return{start:n,end:s}}function Hs(e,t){const{start:n,end:s}=Ct(t?.in,e);let r=+n>+s;const a=r?+n:+s,c=r?s:n;c.setHours(0,0,0,0),c.setDate(1);let o=1;const l=[];for(;+c<=a;)l.push(ne(n,c)),c.setMonth(c.getMonth()+o);return r?l.reverse():l}function $s(e,t){const n=A(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function Zs(e,t){const{start:n,end:s}=Ct(t?.in,e);let r=+n>+s;const a=r?+n:+s,c=r?s:n;c.setHours(0,0,0,0),c.setMonth(0,1);let o=1;const l=[];for(;+c<=a;)l.push(ne(n,c)),c.setFullYear(c.getFullYear()+o);return r?l.reverse():l}function St(e,t){const n=Dn(),s=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=A(e,t?.in),a=r.getDay(),c=(a<s?-7:0)+6-(a-s);return r.setDate(r.getDate()+c),r.setHours(23,59,59,999),r}function Us(e,t){return St(e,{...t,weekStartsOn:1})}function Ls(e,t){const n=A(e,t?.in),s=n.getFullYear(),r=n.getMonth(),a=ne(n,0);return a.setFullYear(s,r+1,0),a.setHours(0,0,0,0),a.getDate()}function Ks(e,t){return A(e,t?.in).getMonth()}function Gs(e,t){return A(e,t?.in).getFullYear()}function Vs(e,t){return+A(e)>+A(t)}function Js(e,t){return+A(e)<+A(t)}function Qs(e,t,n){const[s,r]=pe(n?.in,e,t);return s.getFullYear()===r.getFullYear()&&s.getMonth()===r.getMonth()}function Xs(e,t,n){const[s,r]=pe(n?.in,e,t);return s.getFullYear()===r.getFullYear()}function er(e,t,n){const s=A(e,n?.in),r=s.getFullYear(),a=s.getDate(),c=ne(e,0);c.setFullYear(r,t,15),c.setHours(0,0,0,0);const o=Ls(c);return s.setMonth(t,Math.min(a,o)),s}function tr(e,t,n){const s=A(e,n?.in);return isNaN(+s)?ne(e,NaN):(s.setFullYear(t),s)}function nr(e){return i.jsx(mt,{label:"To Charge",children:i.jsx(gt,{to:yt.CHARGES.DETAIL(e.chargeId),target:"_blank",rel:"noreferrer",onClick:t=>t.stopPropagation(),className:"inline-block",children:i.jsx(z,{...e,className:N("size-7.5",e.className),variant:"ghost",children:i.jsx(Ys,{className:"size-5"})})})})}function sr({transactionId:e}){const{updateTransaction:t}=Ze();function n(){t({transactionId:e,fields:{chargeId:wn}})}return i.jsx(kn,{onConfirm:n,title:"Are you sure you want to unlink this transaction from the charge?",children:i.jsx(z,{variant:"ghost",size:"icon",className:"size-7.5",children:i.jsx(Mn,{className:"size-5"})})})}const rr=({transactionID:e,onDone:t,onChange:n})=>{const[{data:s,fetching:r}]=pt({query:Cn,variables:{transactionIDs:[e]}}),a=s?.transactionsByIDs?.[0],c=xt({defaultValues:a??{}});S.useEffect(()=>{a&&c.reset(a)},[a,c]);const{control:o,handleSubmit:l,formState:{dirtyFields:d}}=c,{updateTransaction:f,fetching:u}=Ze(),h=v=>{if(!a)return;const y=In(v,d);t?.(),y&&Object.keys(y).length>0&&f({transactionId:a.id,fields:y}).then(n)},{selectableFinancialEntities:g,fetching:C}=vt();return i.jsxs(i.Fragment,{children:[r&&i.jsx(Sn,{className:"flex self-center my-5",color:"dark",size:"xl",variant:"dots"}),!r&&a&&i.jsx(bt,{...c,children:i.jsxs("form",{onSubmit:l(h),children:[i.jsx("div",{className:"flex-row px-10 h-max justify-start block",children:i.jsxs(jn,{cols:3,children:[i.jsx(re,{name:"counterpartyId",control:o,defaultValue:a.counterparty?.id,rules:{minLength:{value:2,message:"Minimum 2 characters"}},render:({field:v})=>i.jsxs(oe,{children:[i.jsx(ae,{children:"Counterparty"}),i.jsxs(Nn,{onValueChange:v.onChange,value:v.value??void 0,disabled:C,children:[i.jsx(ge,{children:i.jsx(On,{className:"w-full truncate",children:i.jsx(Tn,{placeholder:"Scroll to see all options"})})}),i.jsx(Wn,{onClick:y=>y.stopPropagation(),children:g.map(({value:y,label:k})=>i.jsx(En,{value:y,children:k},y))})]}),i.jsx(le,{})]})}),a?.account.__typename==="CardFinancialAccount"?i.jsx(re,{name:"effectiveDate",control:o,rules:{pattern:{value:Dt,message:"Date must be im format yyyy-mm-dd"}},render:({field:v})=>i.jsxs(oe,{children:[i.jsx(ae,{children:"Effective Date"}),i.jsx(ge,{children:i.jsx(Go,{...v,onChange:y=>{const k=y?ue(y,"yyyy-MM-dd"):void 0;k!==v.value&&v.onChange(k)},value:v.value?new Date(v.value):void 0})}),i.jsx(le,{})]})}):i.jsx(i.Fragment,{}),i.jsx(re,{name:"isFee",control:o,defaultValue:a.isFee,render:({field:v})=>i.jsxs(oe,{className:"flex flex-row items-center justify-between rounded-lg border p-3 shadow-sm",children:[i.jsx("div",{className:"space-y-0.5",children:i.jsx(ae,{children:"Fee Transaction"})}),i.jsx(ge,{children:i.jsx(_n,{checked:v.value===!0,onCheckedChange:v.onChange})})]})})]})}),i.jsxs("div",{className:"mt-10 mb-5 flex justify-center gap-5",children:[i.jsx("button",{type:"submit",onClick:()=>l(h),className:"mt-8 text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",disabled:u||Object.keys(d).length===0,children:"Accept"}),i.jsx("button",{type:"button",className:"mt-8 text-white bg-rose-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-rose-600 rounded-sm text-lg",onClick:t,children:"Cancel"})]})]})})]})},or="insertMiscExpense",ar=()=>{const[{fetching:e},t]=Fn(Yn),n=S.useCallback(async s=>{const r="Error creating misc expense",a=`${or}-${s.chargeId}`;Ee.loading("Creating misc expense",{id:a});try{const c=await t(s),o=Pn(c,r,a);if(o)return Ee.success("Success",{id:a,description:"Misc expense was created"}),o.insertMiscExpense}catch(c){console.error(`${r}: ${c}`),Ee.error("Error",{id:a,description:r,duration:1e5,closeButton:!0})}},[t]);return{fetching:e,insertMiscExpense:n}},ir=({onDone:e,defaultValues:t={},chargeId:n})=>{const{insertMiscExpense:s,fetching:r}=ar(),a=S.useCallback(async c=>{await s({chargeId:n,fields:c}),e()},[s,n,e]);return i.jsx(cr,{defaultValues:t,onInsertDone:a,fetching:r})},cr=({onInsertDone:e,defaultValues:t,fetching:n})=>{const s=o=>{o&&Object.keys(o).length>0&&e(o)},r=xt({defaultValues:{...t}}),{handleSubmit:a,formState:{dirtyFields:c}}=r;return i.jsx(bt,{...r,children:i.jsx("form",{onSubmit:a(s),noValidate:!0,children:i.jsxs("div",{className:"px-5 flex flex-col gap-5 relative",children:[n&&i.jsx("div",{className:"absolute bg-white/60 z-10 h-full w-full flex items-center justify-center",children:i.jsx("div",{className:"flex items-center",children:i.jsx("span",{className:"text-3xl mr-4",children:i.jsx(Bn,{className:"h-10 w-10 animate-spin mr-2 self-center"})})})}),i.jsx(lr,{formManager:r,isInsert:!0}),i.jsx("div",{className:"flex justify-right gap-5 mt-5",children:i.jsx("button",{type:"submit",className:"text-white bg-indigo-500 border-0 py-2 px-8 focus:outline-hidden hover:bg-indigo-600 rounded-sm text-lg",disabled:n||Object.keys(c).length===0,children:"Accept"})})]})})})},lr=({formManager:e,isInsert:t})=>{const{control:n,setValue:s}=e,{selectableFinancialEntities:r,fetching:a}=vt();return i.jsxs(i.Fragment,{children:[i.jsx(re,{name:"creditorId",control:n,rules:{required:t?"Required":void 0},render:({field:c})=>i.jsxs(oe,{children:[i.jsx(ae,{children:"Creditor"}),i.jsx(et,{...c,data:r,value:c.value??void 0,disabled:a,placeholder:"Select creditor",formPart:!0}),i.jsx(le,{})]})}),i.jsx(re,{name:"debtorId",control:n,rules:{required:t?"Required":void 0},render:({field:c})=>i.jsxs(oe,{children:[i.jsx(ae,{children:"Debtor"}),i.jsx(et,{...c,data:r,value:c.value??void 0,disabled:a,placeholder:"Select debtor",formPart:!0}),i.jsx(le,{})]})}),i.jsx(tt,{name:"amount",control:n,rules:{required:t?"Required":void 0},render:({field:c,fieldState:o})=>i.jsx(tt,{name:"currency",control:n,rules:{required:t?"Required":void 0},render:({field:l,fieldState:d})=>i.jsx(Rn,{...c,required:t,value:c.value??void 0,error:o.error?.message||d.error?.message,label:"Amount",currencyCodeProps:{...l,required:t,label:"Currency"}})})}),i.jsx(re,{name:"invoiceDate",control:n,rules:{...t?{required:"Required"}:{},pattern:{value:Dt,message:"Date must be im format yyyy-mm-dd"}},render:({field:c})=>{const o=c.value?new Date(c.value):void 0;return i.jsxs(oe,{children:[i.jsx(ae,{children:"Invoice Date"}),i.jsx(ge,{children:i.jsx(zn,{...c,required:t,onChange:l=>{const d=l?typeof l=="string"?l:ue(l,"yyyy-MM-dd"):void 0;d!==c.value&&(s("invoiceDate",d),c.onChange(d))},value:o,valueFormat:"DD/MM/YYYY"})}),i.jsx(le,{})]})}}),i.jsx(re,{name:"valueDate",control:n,rules:{...t?{required:"Required"}:{},validate:c=>c?!Number.isNaN(c.getTime())||"Invalid date and time format":!0},render:({field:c})=>i.jsxs(oe,{children:[i.jsx(ae,{children:"Value Date"}),i.jsx(ge,{children:i.jsx(An,{...c,onChange:o=>{s("valueDate",o),c.onChange(o)},onPointerEnterCapture:()=>{},onPointerLeaveCapture:()=>{},required:t,placeholder:"Pick date and time",valueFormat:"DD/MM/YYYY HH:mm:ss",withSeconds:!0})}),i.jsx(le,{})]})}),i.jsx(re,{name:"description",control:n,rules:{required:t?"Required":void 0},render:({field:c})=>i.jsxs(oe,{children:[i.jsx(ae,{children:"Description"}),i.jsx(ge,{children:i.jsx(kt,{...c,required:t,value:c.value??void 0})}),i.jsx(le,{})]})})]})};function dr(e,t,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:e,timeZoneName:n}).format(t).split(/\s/g).slice(2).join(" ")}const ur={},ye={};function de(e,t){try{const s=(ur[e]||=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"longOffset"}).format)(t).split("GMT")[1];return s in ye?ye[s]:ot(s,s.split(":"))}catch{if(e in ye)return ye[e];const n=e?.match(fr);return n?ot(e,n.slice(1)):NaN}}const fr=/([+-]\d\d):?(\d\d)?/;function ot(e,t){const n=+(t[0]||0),s=+(t[1]||0),r=+(t[2]||0)/60;return ye[e]=n*60+s>0?n*60+s+r:n*60-s-r}class J extends Date{constructor(...t){super(),t.length>1&&typeof t[t.length-1]=="string"&&(this.timeZone=t.pop()),this.internal=new Date,isNaN(de(this.timeZone,this))?this.setTime(NaN):t.length?typeof t[0]=="number"&&(t.length===1||t.length===2&&typeof t[1]!="number")?this.setTime(t[0]):typeof t[0]=="string"?this.setTime(+new Date(t[0])):t[0]instanceof Date?this.setTime(+t[0]):(this.setTime(+new Date(...t)),jt(this),He(this)):this.setTime(Date.now())}static tz(t,...n){return n.length?new J(...n,t):new J(Date.now(),t)}withTimeZone(t){return new J(+this,t)}getTimezoneOffset(){const t=-de(this.timeZone,this);return t>0?Math.floor(t):Math.ceil(t)}setTime(t){return Date.prototype.setTime.apply(this,arguments),He(this),+this}[Symbol.for("constructDateFrom")](t){return new J(+new Date(t),this.timeZone)}}const at=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(e=>{if(!at.test(e))return;const t=e.replace(at,"$1UTC");J.prototype[t]&&(e.startsWith("get")?J.prototype[e]=function(){return this.internal[t]()}:(J.prototype[e]=function(){return Date.prototype[t].apply(this.internal,arguments),hr(this),+this},J.prototype[t]=function(){return Date.prototype[t].apply(this,arguments),He(this),+this}))});function He(e){e.internal.setTime(+e),e.internal.setUTCSeconds(e.internal.getUTCSeconds()-Math.round(-de(e.timeZone,e)*60))}function hr(e){Date.prototype.setFullYear.call(e,e.internal.getUTCFullYear(),e.internal.getUTCMonth(),e.internal.getUTCDate()),Date.prototype.setHours.call(e,e.internal.getUTCHours(),e.internal.getUTCMinutes(),e.internal.getUTCSeconds(),e.internal.getUTCMilliseconds()),jt(e)}function jt(e){const t=de(e.timeZone,e),n=t>0?Math.floor(t):Math.ceil(t),s=new Date(+e);s.setUTCHours(s.getUTCHours()-1);const r=-new Date(+e).getTimezoneOffset(),a=-new Date(+s).getTimezoneOffset(),c=r-a,o=Date.prototype.getHours.apply(e)!==e.internal.getUTCHours();c&&o&&e.internal.setUTCMinutes(e.internal.getUTCMinutes()+c);const l=r-n;l&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+l);const d=new Date(+e);d.setUTCSeconds(0);const f=r>0?d.getSeconds():(d.getSeconds()-60)%60,u=Math.round(-(de(e.timeZone,e)*60))%60;(u||f)&&(e.internal.setUTCSeconds(e.internal.getUTCSeconds()+u),Date.prototype.setUTCSeconds.call(e,Date.prototype.getUTCSeconds.call(e)+u+f));const h=de(e.timeZone,e),g=h>0?Math.floor(h):Math.ceil(h),v=-new Date(+e).getTimezoneOffset()-g,y=g!==n,k=v-l;if(y&&k){Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+k);const W=de(e.timeZone,e),b=W>0?Math.floor(W):Math.ceil(W),T=g-b;T&&(e.internal.setUTCMinutes(e.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+T))}}class P extends J{static tz(t,...n){return n.length?new P(...n,t):new P(Date.now(),t)}toISOString(){const[t,n,s]=this.tzComponents(),r=`${t}${n}:${s}`;return this.internal.toISOString().slice(0,-1)+r}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[t,n,s,r]=this.internal.toUTCString().split(" ");return`${t?.slice(0,-1)} ${s} ${n} ${r}`}toTimeString(){const t=this.internal.toUTCString().split(" ")[4],[n,s,r]=this.tzComponents();return`${t} GMT${n}${s}${r} (${dr(this.timeZone,this)})`}toLocaleString(t,n){return Date.prototype.toLocaleString.call(this,t,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(t,n){return Date.prototype.toLocaleDateString.call(this,t,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(t,n){return Date.prototype.toLocaleTimeString.call(this,t,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const t=this.getTimezoneOffset(),n=t>0?"-":"+",s=String(Math.floor(Math.abs(t)/60)).padStart(2,"0"),r=String(Math.abs(t)%60).padStart(2,"0");return[n,s,r]}withTimeZone(t){return new P(+this,t)}[Symbol.for("constructDateFrom")](t){return new P(+new Date(t),this.timeZone)}}const it=5,mr=4;function gr(e,t){const n=t.startOfMonth(e),s=n.getDay()>0?n.getDay():7,r=t.addDays(e,-s+1),a=t.addDays(r,it*7-1);return t.getMonth(e)===t.getMonth(a)?it:mr}function Nt(e,t){const n=t.startOfMonth(e),s=n.getDay();return s===1?n:s===0?t.addDays(n,-6):t.addDays(n,-1*(s-1))}function yr(e,t){const n=Nt(e,t),s=gr(e,t);return t.addDays(n,s*7-1)}class ${constructor(t,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?P.tz(this.options.timeZone):new this.Date,this.newDate=(s,r,a)=>this.overrides?.newDate?this.overrides.newDate(s,r,a):this.options.timeZone?new P(s,r,a,this.options.timeZone):new Date(s,r,a),this.addDays=(s,r)=>this.overrides?.addDays?this.overrides.addDays(s,r):wt(s,r),this.addMonths=(s,r)=>this.overrides?.addMonths?this.overrides.addMonths(s,r):qn(s,r),this.addWeeks=(s,r)=>this.overrides?.addWeeks?this.overrides.addWeeks(s,r):Ps(s,r),this.addYears=(s,r)=>this.overrides?.addYears?this.overrides.addYears(s,r):Hn(s,r),this.differenceInCalendarDays=(s,r)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(s,r):$n(s,r),this.differenceInCalendarMonths=(s,r)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(s,r):As(s,r),this.eachMonthOfInterval=s=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(s):Hs(s),this.eachYearOfInterval=s=>{const r=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(s):Zs(s),a=new Set(r.map(o=>this.getYear(o)));if(a.size===r.length)return r;const c=[];return a.forEach(o=>{c.push(new Date(o,0,1))}),c},this.endOfBroadcastWeek=s=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(s):yr(s,this),this.endOfISOWeek=s=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(s):Us(s),this.endOfMonth=s=>this.overrides?.endOfMonth?this.overrides.endOfMonth(s):qs(s),this.endOfWeek=(s,r)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(s,r):St(s,this.options),this.endOfYear=s=>this.overrides?.endOfYear?this.overrides.endOfYear(s):Zn(s),this.format=(s,r,a)=>{const c=this.overrides?.format?this.overrides.format(s,r,this.options):ue(s,r,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(c):c},this.getISOWeek=s=>this.overrides?.getISOWeek?this.overrides.getISOWeek(s):Un(s),this.getMonth=(s,r)=>this.overrides?.getMonth?this.overrides.getMonth(s,this.options):Ks(s,this.options),this.getYear=(s,r)=>this.overrides?.getYear?this.overrides.getYear(s,this.options):Gs(s,this.options),this.getWeek=(s,r)=>this.overrides?.getWeek?this.overrides.getWeek(s,this.options):Ln(s,this.options),this.isAfter=(s,r)=>this.overrides?.isAfter?this.overrides.isAfter(s,r):Vs(s,r),this.isBefore=(s,r)=>this.overrides?.isBefore?this.overrides.isBefore(s,r):Js(s,r),this.isDate=s=>this.overrides?.isDate?this.overrides.isDate(s):Kn(s),this.isSameDay=(s,r)=>this.overrides?.isSameDay?this.overrides.isSameDay(s,r):zs(s,r),this.isSameMonth=(s,r)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(s,r):Qs(s,r),this.isSameYear=(s,r)=>this.overrides?.isSameYear?this.overrides.isSameYear(s,r):Xs(s,r),this.max=s=>this.overrides?.max?this.overrides.max(s):Bs(s),this.min=s=>this.overrides?.min?this.overrides.min(s):Rs(s),this.setMonth=(s,r)=>this.overrides?.setMonth?this.overrides.setMonth(s,r):er(s,r),this.setYear=(s,r)=>this.overrides?.setYear?this.overrides.setYear(s,r):tr(s,r),this.startOfBroadcastWeek=(s,r)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(s,this):Nt(s,this),this.startOfDay=s=>this.overrides?.startOfDay?this.overrides.startOfDay(s):qe(s),this.startOfISOWeek=s=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(s):Gn(s),this.startOfMonth=s=>this.overrides?.startOfMonth?this.overrides.startOfMonth(s):$s(s),this.startOfWeek=(s,r)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(s,this.options):Vn(s,this.options),this.startOfYear=s=>this.overrides?.startOfYear?this.overrides.startOfYear(s):Jn(s),this.options={locale:Mt,...t},this.overrides=n}getDigitMap(){const{numerals:t="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:t}),s={};for(let r=0;r<10;r++)s[r.toString()]=n.format(r);return s}replaceDigits(t){const n=this.getDigitMap();return t.replace(/\d/g,s=>n[s]||s)}formatNumber(t){return this.replaceDigits(t.toString())}getMonthYearOrder(){const t=this.options.locale?.code;return t&&$.yearFirstLocales.has(t)?"year-first":"month-first"}formatMonthYear(t){const{locale:n,timeZone:s,numerals:r}=this.options,a=n?.code;if(a&&$.yearFirstLocales.has(a))try{return new Intl.DateTimeFormat(a,{month:"long",year:"numeric",timeZone:s,numberingSystem:r}).format(t)}catch{}const c=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(t,c)}}$.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Q=new $;class Ot{constructor(t,n,s=Q){this.date=t,this.displayMonth=n,this.outside=!!(n&&!s.isSameMonth(t,n)),this.dateLib=s}isEqualTo(t){return this.dateLib.isSameDay(t.date,this.date)&&this.dateLib.isSameMonth(t.displayMonth,this.displayMonth)}}class pr{constructor(t,n){this.date=t,this.weeks=n}}class xr{constructor(t,n){this.days=n,this.weekNumber=t}}function vr(e){return m.createElement("button",{...e})}function br(e){return m.createElement("span",{...e})}function Dr(e){const{size:t=24,orientation:n="left",className:s}=e;return m.createElement("svg",{className:s,width:t,height:t,viewBox:"0 0 24 24"},n==="up"&&m.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&m.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&m.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&m.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function kr(e){const{day:t,modifiers:n,...s}=e;return m.createElement("td",{...s})}function Mr(e){const{day:t,modifiers:n,...s}=e,r=m.useRef(null);return m.useEffect(()=>{n.focused&&r.current?.focus()},[n.focused]),m.createElement("button",{ref:r,...s})}var p;(function(e){e.Root="root",e.Chevron="chevron",e.Day="day",e.DayButton="day_button",e.CaptionLabel="caption_label",e.Dropdowns="dropdowns",e.Dropdown="dropdown",e.DropdownRoot="dropdown_root",e.Footer="footer",e.MonthGrid="month_grid",e.MonthCaption="month_caption",e.MonthsDropdown="months_dropdown",e.Month="month",e.Months="months",e.Nav="nav",e.NextMonthButton="button_next",e.PreviousMonthButton="button_previous",e.Week="week",e.Weeks="weeks",e.Weekday="weekday",e.Weekdays="weekdays",e.WeekNumber="week_number",e.WeekNumberHeader="week_number_header",e.YearsDropdown="years_dropdown"})(p||(p={}));var F;(function(e){e.disabled="disabled",e.hidden="hidden",e.outside="outside",e.focused="focused",e.today="today"})(F||(F={}));var K;(function(e){e.range_end="range_end",e.range_middle="range_middle",e.range_start="range_start",e.selected="selected"})(K||(K={}));var H;(function(e){e.weeks_before_enter="weeks_before_enter",e.weeks_before_exit="weeks_before_exit",e.weeks_after_enter="weeks_after_enter",e.weeks_after_exit="weeks_after_exit",e.caption_after_enter="caption_after_enter",e.caption_after_exit="caption_after_exit",e.caption_before_enter="caption_before_enter",e.caption_before_exit="caption_before_exit"})(H||(H={}));function wr(e){const{options:t,className:n,components:s,classNames:r,...a}=e,c=[r[p.Dropdown],n].join(" "),o=t?.find(({value:l})=>l===a.value);return m.createElement("span",{"data-disabled":a.disabled,className:r[p.DropdownRoot]},m.createElement(s.Select,{className:c,...a},t?.map(({value:l,label:d,disabled:f})=>m.createElement(s.Option,{key:l,value:l,disabled:f},d))),m.createElement("span",{className:r[p.CaptionLabel],"aria-hidden":!0},o?.label,m.createElement(s.Chevron,{orientation:"down",size:18,className:r[p.Chevron]})))}function Cr(e){return m.createElement("div",{...e})}function Sr(e){return m.createElement("div",{...e})}function jr(e){const{calendarMonth:t,displayIndex:n,...s}=e;return m.createElement("div",{...s},e.children)}function Nr(e){const{calendarMonth:t,displayIndex:n,...s}=e;return m.createElement("div",{...s})}function Or(e){return m.createElement("table",{...e})}function Tr(e){return m.createElement("div",{...e})}const Tt=S.createContext(void 0);function xe(){const e=S.useContext(Tt);if(e===void 0)throw new Error("useDayPicker() must be used within a custom component.");return e}function Wr(e){const{components:t}=xe();return m.createElement(t.Dropdown,{...e})}function Er(e){const{onPreviousClick:t,onNextClick:n,previousMonth:s,nextMonth:r,...a}=e,{components:c,classNames:o,labels:{labelPrevious:l,labelNext:d}}=xe(),f=S.useCallback(h=>{r&&n?.(h)},[r,n]),u=S.useCallback(h=>{s&&t?.(h)},[s,t]);return m.createElement("nav",{...a},m.createElement(c.PreviousMonthButton,{type:"button",className:o[p.PreviousMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":l(s),onClick:u},m.createElement(c.Chevron,{disabled:s?void 0:!0,className:o[p.Chevron],orientation:"left"})),m.createElement(c.NextMonthButton,{type:"button",className:o[p.NextMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":d(r),onClick:f},m.createElement(c.Chevron,{disabled:r?void 0:!0,orientation:"right",className:o[p.Chevron]})))}function _r(e){const{components:t}=xe();return m.createElement(t.Button,{...e})}function Ir(e){return m.createElement("option",{...e})}function Fr(e){const{components:t}=xe();return m.createElement(t.Button,{...e})}function Yr(e){const{rootRef:t,...n}=e;return m.createElement("div",{...n,ref:t})}function Pr(e){return m.createElement("select",{...e})}function Br(e){const{week:t,...n}=e;return m.createElement("tr",{...n})}function Rr(e){return m.createElement("th",{...e})}function zr(e){return m.createElement("thead",{"aria-hidden":!0},m.createElement("tr",{...e}))}function Ar(e){const{week:t,...n}=e;return m.createElement("th",{...n})}function qr(e){return m.createElement("th",{...e})}function Hr(e){return m.createElement("tbody",{...e})}function $r(e){const{components:t}=xe();return m.createElement(t.Dropdown,{...e})}const Zr=Object.freeze(Object.defineProperty({__proto__:null,Button:vr,CaptionLabel:br,Chevron:Dr,Day:kr,DayButton:Mr,Dropdown:wr,DropdownNav:Cr,Footer:Sr,Month:jr,MonthCaption:Nr,MonthGrid:Or,Months:Tr,MonthsDropdown:Wr,Nav:Er,NextMonthButton:_r,Option:Ir,PreviousMonthButton:Fr,Root:Yr,Select:Pr,Week:Br,WeekNumber:Ar,WeekNumberHeader:qr,Weekday:Rr,Weekdays:zr,Weeks:Hr,YearsDropdown:$r},Symbol.toStringTag,{value:"Module"}));function ee(e,t,n=!1,s=Q){let{from:r,to:a}=e;const{differenceInCalendarDays:c,isSameDay:o}=s;return r&&a?(c(a,r)<0&&([r,a]=[a,r]),c(t,r)>=(n?1:0)&&c(a,t)>=(n?1:0)):!n&&a?o(a,t):!n&&r?o(r,t):!1}function Wt(e){return!!(e&&typeof e=="object"&&"before"in e&&"after"in e)}function Ue(e){return!!(e&&typeof e=="object"&&"from"in e)}function Et(e){return!!(e&&typeof e=="object"&&"after"in e)}function _t(e){return!!(e&&typeof e=="object"&&"before"in e)}function It(e){return!!(e&&typeof e=="object"&&"dayOfWeek"in e)}function Ft(e,t){return Array.isArray(e)&&e.every(t.isDate)}function te(e,t,n=Q){const s=Array.isArray(t)?t:[t],{isSameDay:r,differenceInCalendarDays:a,isAfter:c}=n;return s.some(o=>{if(typeof o=="boolean")return o;if(n.isDate(o))return r(e,o);if(Ft(o,n))return o.includes(e);if(Ue(o))return ee(o,e,!1,n);if(It(o))return Array.isArray(o.dayOfWeek)?o.dayOfWeek.includes(e.getDay()):o.dayOfWeek===e.getDay();if(Wt(o)){const l=a(o.before,e),d=a(o.after,e),f=l>0,u=d<0;return c(o.before,o.after)?u&&f:f||u}return Et(o)?a(e,o.after)>0:_t(o)?a(o.before,e)>0:typeof o=="function"?o(e):!1})}function Ur(e,t,n,s,r){const{disabled:a,hidden:c,modifiers:o,showOutsideDays:l,broadcastCalendar:d,today:f}=t,{isSameDay:u,isSameMonth:h,startOfMonth:g,isBefore:C,endOfMonth:v,isAfter:y}=r,k=n&&g(n),W=s&&v(s),b={[F.focused]:[],[F.outside]:[],[F.disabled]:[],[F.hidden]:[],[F.today]:[]},T={};for(const x of e){const{date:D,displayMonth:M}=x,O=!!(M&&!h(D,M)),Y=!!(k&&C(D,k)),B=!!(W&&y(D,W)),R=!!(a&&te(D,a,r)),Z=!!(c&&te(D,c,r))||Y||B||!d&&!l&&O||d&&l===!1&&O,fe=u(D,f??r.today());O&&b.outside.push(x),R&&b.disabled.push(x),Z&&b.hidden.push(x),fe&&b.today.push(x),o&&Object.keys(o).forEach(he=>{const me=o?.[he];me&&te(D,me,r)&&(T[he]?T[he].push(x):T[he]=[x])})}return x=>{const D={[F.focused]:!1,[F.disabled]:!1,[F.hidden]:!1,[F.outside]:!1,[F.today]:!1},M={};for(const O in b){const Y=b[O];D[O]=Y.some(B=>B===x)}for(const O in T)M[O]=T[O].some(Y=>Y===x);return{...D,...M}}}function Lr(e,t,n={}){return Object.entries(e).filter(([,r])=>r===!0).reduce((r,[a])=>(n[a]?r.push(n[a]):t[F[a]]?r.push(t[F[a]]):t[K[a]]&&r.push(t[K[a]]),r),[t[p.Day]])}function Kr(e){return{...Zr,...e}}function Gr(e){const t={"data-mode":e.mode??void 0,"data-required":"required"in e?e.required:void 0,"data-multiple-months":e.numberOfMonths&&e.numberOfMonths>1||void 0,"data-week-numbers":e.showWeekNumber||void 0,"data-broadcast-calendar":e.broadcastCalendar||void 0,"data-nav-layout":e.navLayout||void 0};return Object.entries(e).forEach(([n,s])=>{n.startsWith("data-")&&(t[n]=s)}),t}function Le(){const e={};for(const t in p)e[p[t]]=`rdp-${p[t]}`;for(const t in F)e[F[t]]=`rdp-${F[t]}`;for(const t in K)e[K[t]]=`rdp-${K[t]}`;for(const t in H)e[H[t]]=`rdp-${H[t]}`;return e}function Yt(e,t,n){return(n??new $(t)).formatMonthYear(e)}const Vr=Yt;function Jr(e,t,n){return(n??new $(t)).format(e,"d")}function Qr(e,t=Q){return t.format(e,"LLLL")}function Xr(e,t,n){return(n??new $(t)).format(e,"cccccc")}function eo(e,t=Q){return e<10?t.formatNumber(`0${e.toLocaleString()}`):t.formatNumber(`${e.toLocaleString()}`)}function to(){return""}function Pt(e,t=Q){return t.format(e,"yyyy")}const no=Pt,so=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:Yt,formatDay:Jr,formatMonthCaption:Vr,formatMonthDropdown:Qr,formatWeekNumber:eo,formatWeekNumberHeader:to,formatWeekdayName:Xr,formatYearCaption:no,formatYearDropdown:Pt},Symbol.toStringTag,{value:"Module"}));function ro(e){return e?.formatMonthCaption&&!e.formatCaption&&(e.formatCaption=e.formatMonthCaption),e?.formatYearCaption&&!e.formatYearDropdown&&(e.formatYearDropdown=e.formatYearCaption),{...so,...e}}function oo(e,t,n,s,r){const{startOfMonth:a,startOfYear:c,endOfYear:o,eachMonthOfInterval:l,getMonth:d}=r;return l({start:c(e),end:o(e)}).map(h=>{const g=s.formatMonthDropdown(h,r),C=d(h),v=t&&h<a(t)||n&&h>a(n)||!1;return{value:C,label:g,disabled:v}})}function ao(e,t={},n={}){let s={...t?.[p.Day]};return Object.entries(e).filter(([,r])=>r===!0).forEach(([r])=>{s={...s,...n?.[r]}}),s}function io(e,t,n){const s=e.today(),r=t?e.startOfISOWeek(s):e.startOfWeek(s),a=[];for(let c=0;c<7;c++){const o=e.addDays(r,c);a.push(o)}return a}function co(e,t,n,s,r=!1){if(!e||!t)return;const{startOfYear:a,endOfYear:c,eachYearOfInterval:o,getYear:l}=s,d=a(e),f=c(t),u=o({start:d,end:f});return r&&u.reverse(),u.map(h=>{const g=n.formatYearDropdown(h,s);return{value:l(h),label:g,disabled:!1}})}function Bt(e,t,n,s){let r=(s??new $(n)).format(e,"PPPP");return t.today&&(r=`Today, ${r}`),t.selected&&(r=`${r}, selected`),r}const lo=Bt;function Rt(e,t,n){return(n??new $(t)).formatMonthYear(e)}const uo=Rt;function fo(e,t,n,s){let r=(s??new $(n)).format(e,"PPPP");return t?.today&&(r=`Today, ${r}`),r}function ho(e){return"Choose the Month"}function mo(){return""}function go(e){return"Go to the Next Month"}function yo(e){return"Go to the Previous Month"}function po(e,t,n){return(n??new $(t)).format(e,"cccc")}function xo(e,t){return`Week ${e}`}function vo(e){return"Week Number"}function bo(e){return"Choose the Year"}const Do=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:uo,labelDay:lo,labelDayButton:Bt,labelGrid:Rt,labelGridcell:fo,labelMonthDropdown:ho,labelNav:mo,labelNext:go,labelPrevious:yo,labelWeekNumber:xo,labelWeekNumberHeader:vo,labelWeekday:po,labelYearDropdown:bo},Symbol.toStringTag,{value:"Module"})),ve=e=>e instanceof HTMLElement?e:null,Ie=e=>[...e.querySelectorAll("[data-animated-month]")??[]],ko=e=>ve(e.querySelector("[data-animated-month]")),Fe=e=>ve(e.querySelector("[data-animated-caption]")),Ye=e=>ve(e.querySelector("[data-animated-weeks]")),Mo=e=>ve(e.querySelector("[data-animated-nav]")),wo=e=>ve(e.querySelector("[data-animated-weekdays]"));function Co(e,t,{classNames:n,months:s,focused:r,dateLib:a}){const c=S.useRef(null),o=S.useRef(s),l=S.useRef(!1);S.useLayoutEffect(()=>{const d=o.current;if(o.current=s,!t||!e.current||!(e.current instanceof HTMLElement)||s.length===0||d.length===0||s.length!==d.length)return;const f=a.isSameMonth(s[0].date,d[0].date),u=a.isAfter(s[0].date,d[0].date),h=u?n[H.caption_after_enter]:n[H.caption_before_enter],g=u?n[H.weeks_after_enter]:n[H.weeks_before_enter],C=c.current,v=e.current.cloneNode(!0);if(v instanceof HTMLElement?(Ie(v).forEach(b=>{if(!(b instanceof HTMLElement))return;const T=ko(b);T&&b.contains(T)&&b.removeChild(T);const x=Fe(b);x&&x.classList.remove(h);const D=Ye(b);D&&D.classList.remove(g)}),c.current=v):c.current=null,l.current||f||r)return;const y=C instanceof HTMLElement?Ie(C):[],k=Ie(e.current);if(k?.every(W=>W instanceof HTMLElement)&&y&&y.every(W=>W instanceof HTMLElement)){l.current=!0,e.current.style.isolation="isolate";const W=Mo(e.current);W&&(W.style.zIndex="1"),k.forEach((b,T)=>{const x=y[T];if(!x)return;b.style.position="relative",b.style.overflow="hidden";const D=Fe(b);D&&D.classList.add(h);const M=Ye(b);M&&M.classList.add(g);const O=()=>{l.current=!1,e.current&&(e.current.style.isolation=""),W&&(W.style.zIndex=""),D&&D.classList.remove(h),M&&M.classList.remove(g),b.style.position="",b.style.overflow="",b.contains(x)&&b.removeChild(x)};x.style.pointerEvents="none",x.style.position="absolute",x.style.overflow="hidden",x.setAttribute("aria-hidden","true");const Y=wo(x);Y&&(Y.style.opacity="0");const B=Fe(x);B&&(B.classList.add(u?n[H.caption_before_exit]:n[H.caption_after_exit]),B.addEventListener("animationend",O));const R=Ye(x);R&&R.classList.add(u?n[H.weeks_before_exit]:n[H.weeks_after_exit]),b.insertBefore(x,b.firstChild)})}})}function So(e,t,n,s){const r=e[0],a=e[e.length-1],{ISOWeek:c,fixedWeeks:o,broadcastCalendar:l}=n??{},{addDays:d,differenceInCalendarDays:f,differenceInCalendarMonths:u,endOfBroadcastWeek:h,endOfISOWeek:g,endOfMonth:C,endOfWeek:v,isAfter:y,startOfBroadcastWeek:k,startOfISOWeek:W,startOfWeek:b}=s,T=l?k(r,s):c?W(r):b(r),x=l?h(a):c?g(C(a)):v(C(a)),D=f(x,T),M=u(a,r)+1,O=[];for(let R=0;R<=D;R++){const Z=d(T,R);if(t&&y(Z,t))break;O.push(Z)}const B=(l?35:42)*M;if(o&&O.length<B){const R=B-O.length;for(let Z=0;Z<R;Z++){const fe=d(O[O.length-1],1);O.push(fe)}}return O}function jo(e){const t=[];return e.reduce((n,s)=>{const r=s.weeks.reduce((a,c)=>a.concat(c.days.slice()),t.slice());return n.concat(r.slice())},t.slice())}function No(e,t,n,s){const{numberOfMonths:r=1}=n,a=[];for(let c=0;c<r;c++){const o=s.addMonths(e,c);if(t&&o>t)break;a.push(o)}return a}function ct(e,t,n,s){const{month:r,defaultMonth:a,today:c=s.today(),numberOfMonths:o=1}=e;let l=r||a||c;const{differenceInCalendarMonths:d,addMonths:f,startOfMonth:u}=s;if(n&&d(n,l)<o-1){const h=-1*(o-1);l=f(n,h)}return t&&d(l,t)<0&&(l=t),u(l)}function Oo(e,t,n,s){const{addDays:r,endOfBroadcastWeek:a,endOfISOWeek:c,endOfMonth:o,endOfWeek:l,getISOWeek:d,getWeek:f,startOfBroadcastWeek:u,startOfISOWeek:h,startOfWeek:g}=s,C=e.reduce((v,y)=>{const k=n.broadcastCalendar?u(y,s):n.ISOWeek?h(y):g(y),W=n.broadcastCalendar?a(y):n.ISOWeek?c(o(y)):l(o(y)),b=t.filter(M=>M>=k&&M<=W),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&b.length<T){const M=t.filter(O=>{const Y=T-b.length;return O>W&&O<=r(W,Y)});b.push(...M)}const x=b.reduce((M,O)=>{const Y=n.ISOWeek?d(O):f(O),B=M.find(Z=>Z.weekNumber===Y),R=new Ot(O,y,s);return B?B.days.push(R):M.push(new xr(Y,[R])),M},[]),D=new pr(y,x);return v.push(D),v},[]);return n.reverseMonths?C.reverse():C}function To(e,t){let{startMonth:n,endMonth:s}=e;const{startOfYear:r,startOfDay:a,startOfMonth:c,endOfMonth:o,addYears:l,endOfYear:d,newDate:f,today:u}=t,{fromYear:h,toYear:g,fromMonth:C,toMonth:v}=e;!n&&C&&(n=C),!n&&h&&(n=t.newDate(h,0,1)),!s&&v&&(s=v),!s&&g&&(s=f(g,11,31));const y=e.captionLayout==="dropdown"||e.captionLayout==="dropdown-years";return n?n=c(n):h?n=f(h,0,1):!n&&y&&(n=r(l(e.today??u(),-100))),s?s=o(s):g?s=f(g,11,31):!s&&y&&(s=d(e.today??u())),[n&&a(n),s&&a(s)]}function Wo(e,t,n,s){if(n.disableNavigation)return;const{pagedNavigation:r,numberOfMonths:a=1}=n,{startOfMonth:c,addMonths:o,differenceInCalendarMonths:l}=s,d=r?a:1,f=c(e);if(!t)return o(f,d);if(!(l(t,e)<a))return o(f,d)}function Eo(e,t,n,s){if(n.disableNavigation)return;const{pagedNavigation:r,numberOfMonths:a}=n,{startOfMonth:c,addMonths:o,differenceInCalendarMonths:l}=s,d=r?a??1:1,f=c(e);if(!t)return o(f,-d);if(!(l(f,t)<=0))return o(f,-d)}function _o(e){const t=[];return e.reduce((n,s)=>n.concat(s.weeks.slice()),t.slice())}function Me(e,t){const[n,s]=S.useState(e);return[t===void 0?n:t,s]}function Io(e,t){const[n,s]=To(e,t),{startOfMonth:r,endOfMonth:a}=t,c=ct(e,n,s,t),[o,l]=Me(c,e.month?c:void 0);S.useEffect(()=>{const D=ct(e,n,s,t);l(D)},[e.timeZone]);const d=No(o,s,e,t),f=So(d,e.endMonth?a(e.endMonth):void 0,e,t),u=Oo(d,f,e,t),h=_o(u),g=jo(u),C=Eo(o,n,e,t),v=Wo(o,s,e,t),{disableNavigation:y,onMonthChange:k}=e,W=D=>h.some(M=>M.days.some(O=>O.isEqualTo(D))),b=D=>{if(y)return;let M=r(D);n&&M<r(n)&&(M=r(n)),s&&M>r(s)&&(M=r(s)),l(M),k?.(M)};return{months:u,weeks:h,days:g,navStart:n,navEnd:s,previousMonth:C,nextMonth:v,goToMonth:b,goToDay:D=>{W(D)||b(D.date)}}}var V;(function(e){e[e.Today=0]="Today",e[e.Selected=1]="Selected",e[e.LastFocused=2]="LastFocused",e[e.FocusedModifier=3]="FocusedModifier"})(V||(V={}));function lt(e){return!e[F.disabled]&&!e[F.hidden]&&!e[F.outside]}function Fo(e,t,n,s){let r,a=-1;for(const c of e){const o=t(c);lt(o)&&(o[F.focused]&&a<V.FocusedModifier?(r=c,a=V.FocusedModifier):s?.isEqualTo(c)&&a<V.LastFocused?(r=c,a=V.LastFocused):n(c.date)&&a<V.Selected?(r=c,a=V.Selected):o[F.today]&&a<V.Today&&(r=c,a=V.Today))}return r||(r=e.find(c=>lt(t(c)))),r}function Yo(e,t,n,s,r,a,c){const{ISOWeek:o,broadcastCalendar:l}=a,{addDays:d,addMonths:f,addWeeks:u,addYears:h,endOfBroadcastWeek:g,endOfISOWeek:C,endOfWeek:v,max:y,min:k,startOfBroadcastWeek:W,startOfISOWeek:b,startOfWeek:T}=c;let D={day:d,week:u,month:f,year:h,startOfWeek:M=>l?W(M,c):o?b(M):T(M),endOfWeek:M=>l?g(M):o?C(M):v(M)}[e](n,t==="after"?1:-1);return t==="before"&&s?D=y([s,D]):t==="after"&&r&&(D=k([r,D])),D}function zt(e,t,n,s,r,a,c,o=0){if(o>365)return;const l=Yo(e,t,n.date,s,r,a,c),d=!!(a.disabled&&te(l,a.disabled,c)),f=!!(a.hidden&&te(l,a.hidden,c)),u=l,h=new Ot(l,u,c);return!d&&!f?h:zt(e,t,h,s,r,a,c,o+1)}function Po(e,t,n,s,r){const{autoFocus:a}=e,[c,o]=S.useState(),l=Fo(t.days,n,s||(()=>!1),c),[d,f]=S.useState(a?l:void 0);return{isFocusTarget:v=>!!l?.isEqualTo(v),setFocused:f,focused:d,blur:()=>{o(d),f(void 0)},moveFocus:(v,y)=>{if(!d)return;const k=zt(v,y,d,t.navStart,t.navEnd,e,r);k&&(e.disableNavigation&&!t.days.some(b=>b.isEqualTo(k))||(t.goToDay(k),f(k)))}}}function Bo(e,t){const{selected:n,required:s,onSelect:r}=e,[a,c]=Me(n,r?n:void 0),o=r?n:a,{isSameDay:l}=t,d=g=>o?.some(C=>l(C,g))??!1,{min:f,max:u}=e;return{selected:o,select:(g,C,v)=>{let y=[...o??[]];if(d(g)){if(o?.length===f||s&&o?.length===1)return;y=o?.filter(k=>!l(k,g))}else o?.length===u?y=[g]:y=[...y,g];return r||c(y),r?.(y,g,C,v),y},isSelected:d}}function Ro(e,t,n=0,s=0,r=!1,a=Q){const{from:c,to:o}=t||{},{isSameDay:l,isAfter:d,isBefore:f}=a;let u;if(!c&&!o)u={from:e,to:n>0?void 0:e};else if(c&&!o)l(c,e)?n===0?u={from:c,to:e}:r?u={from:c,to:void 0}:u=void 0:f(e,c)?u={from:e,to:c}:u={from:c,to:e};else if(c&&o)if(l(c,e)&&l(o,e))r?u={from:c,to:o}:u=void 0;else if(l(c,e))u={from:c,to:n>0?void 0:e};else if(l(o,e))u={from:e,to:n>0?void 0:e};else if(f(e,c))u={from:e,to:o};else if(d(e,c))u={from:c,to:e};else if(d(e,o))u={from:c,to:e};else throw new Error("Invalid range");if(u?.from&&u?.to){const h=a.differenceInCalendarDays(u.to,u.from);s>0&&h>s?u={from:e,to:void 0}:n>1&&h<n&&(u={from:e,to:void 0})}return u}function zo(e,t,n=Q){const s=Array.isArray(t)?t:[t];let r=e.from;const a=n.differenceInCalendarDays(e.to,e.from),c=Math.min(a,6);for(let o=0;o<=c;o++){if(s.includes(r.getDay()))return!0;r=n.addDays(r,1)}return!1}function dt(e,t,n=Q){return ee(e,t.from,!1,n)||ee(e,t.to,!1,n)||ee(t,e.from,!1,n)||ee(t,e.to,!1,n)}function Ao(e,t,n=Q){const s=Array.isArray(t)?t:[t];if(s.filter(o=>typeof o!="function").some(o=>typeof o=="boolean"?o:n.isDate(o)?ee(e,o,!1,n):Ft(o,n)?o.some(l=>ee(e,l,!1,n)):Ue(o)?o.from&&o.to?dt(e,{from:o.from,to:o.to},n):!1:It(o)?zo(e,o.dayOfWeek,n):Wt(o)?n.isAfter(o.before,o.after)?dt(e,{from:n.addDays(o.after,1),to:n.addDays(o.before,-1)},n):te(e.from,o,n)||te(e.to,o,n):Et(o)||_t(o)?te(e.from,o,n)||te(e.to,o,n):!1))return!0;const c=s.filter(o=>typeof o=="function");if(c.length){let o=e.from;const l=n.differenceInCalendarDays(e.to,e.from);for(let d=0;d<=l;d++){if(c.some(f=>f(o)))return!0;o=n.addDays(o,1)}}return!1}function qo(e,t){const{disabled:n,excludeDisabled:s,selected:r,required:a,onSelect:c}=e,[o,l]=Me(r,c?r:void 0),d=c?r:o;return{selected:d,select:(h,g,C)=>{const{min:v,max:y}=e,k=h?Ro(h,d,v,y,a,t):void 0;return s&&n&&k?.from&&k.to&&Ao({from:k.from,to:k.to},n,t)&&(k.from=h,k.to=void 0),c||l(k),c?.(k,h,g,C),k},isSelected:h=>d&&ee(d,h,!1,t)}}function Ho(e,t){const{selected:n,required:s,onSelect:r}=e,[a,c]=Me(n,r?n:void 0),o=r?n:a,{isSameDay:l}=t;return{selected:o,select:(u,h,g)=>{let C=u;return!s&&o&&o&&l(u,o)&&(C=void 0),r||c(C),r?.(C,u,h,g),C},isSelected:u=>o?l(o,u):!1}}function $o(e,t){const n=Ho(e,t),s=Bo(e,t),r=qo(e,t);switch(e.mode){case"single":return n;case"multiple":return s;case"range":return r;default:return}}function Zo(e){let t=e;t.timeZone&&(t={...e},t.today&&(t.today=new P(t.today,t.timeZone)),t.month&&(t.month=new P(t.month,t.timeZone)),t.defaultMonth&&(t.defaultMonth=new P(t.defaultMonth,t.timeZone)),t.startMonth&&(t.startMonth=new P(t.startMonth,t.timeZone)),t.endMonth&&(t.endMonth=new P(t.endMonth,t.timeZone)),t.mode==="single"&&t.selected?t.selected=new P(t.selected,t.timeZone):t.mode==="multiple"&&t.selected?t.selected=t.selected?.map(j=>new P(j,t.timeZone)):t.mode==="range"&&t.selected&&(t.selected={from:t.selected.from?new P(t.selected.from,t.timeZone):void 0,to:t.selected.to?new P(t.selected.to,t.timeZone):void 0}));const{components:n,formatters:s,labels:r,dateLib:a,locale:c,classNames:o}=S.useMemo(()=>{const j={...Mt,...t.locale};return{dateLib:new $({locale:j,weekStartsOn:t.broadcastCalendar?1:t.weekStartsOn,firstWeekContainsDate:t.firstWeekContainsDate,useAdditionalWeekYearTokens:t.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:t.useAdditionalDayOfYearTokens,timeZone:t.timeZone,numerals:t.numerals},t.dateLib),components:Kr(t.components),formatters:ro(t.formatters),labels:{...Do,...t.labels},locale:j,classNames:{...Le(),...t.classNames}}},[t.locale,t.broadcastCalendar,t.weekStartsOn,t.firstWeekContainsDate,t.useAdditionalWeekYearTokens,t.useAdditionalDayOfYearTokens,t.timeZone,t.numerals,t.dateLib,t.components,t.formatters,t.labels,t.classNames]),{captionLayout:l,mode:d,navLayout:f,numberOfMonths:u=1,onDayBlur:h,onDayClick:g,onDayFocus:C,onDayKeyDown:v,onDayMouseEnter:y,onDayMouseLeave:k,onNextClick:W,onPrevClick:b,showWeekNumber:T,styles:x}=t,{formatCaption:D,formatDay:M,formatMonthDropdown:O,formatWeekNumber:Y,formatWeekNumberHeader:B,formatWeekdayName:R,formatYearDropdown:Z}=s,fe=Io(t,a),{days:he,months:me,navStart:be,navEnd:we,previousMonth:U,nextMonth:L,goToMonth:X}=fe,Ce=Ur(he,t,be,we,a),{isSelected:Se,select:je,selected:De}=$o(t,a)??{},{blur:Ke,focused:Ge,isFocusTarget:Ut,moveFocus:Ve,setFocused:ke}=Po(t,fe,Ce,Se??(()=>!1),a),{labelDayButton:Lt,labelGridcell:Kt,labelGrid:Gt,labelMonthDropdown:Vt,labelNav:Je,labelPrevious:Jt,labelNext:Qt,labelWeekday:Xt,labelWeekNumber:en,labelWeekNumberHeader:tn,labelYearDropdown:nn}=r,sn=S.useMemo(()=>io(a,t.ISOWeek),[a,t.ISOWeek]),Qe=d!==void 0||g!==void 0,Ne=S.useCallback(()=>{U&&(X(U),b?.(U))},[U,X,b]),Oe=S.useCallback(()=>{L&&(X(L),W?.(L))},[X,L,W]),rn=S.useCallback((j,I)=>w=>{w.preventDefault(),w.stopPropagation(),ke(j),je?.(j.date,I,w),g?.(j.date,I,w)},[je,g,ke]),on=S.useCallback((j,I)=>w=>{ke(j),C?.(j.date,I,w)},[C,ke]),an=S.useCallback((j,I)=>w=>{Ke(),h?.(j.date,I,w)},[Ke,h]),cn=S.useCallback((j,I)=>w=>{const _={ArrowLeft:[w.shiftKey?"month":"day",t.dir==="rtl"?"after":"before"],ArrowRight:[w.shiftKey?"month":"day",t.dir==="rtl"?"before":"after"],ArrowDown:[w.shiftKey?"year":"week","after"],ArrowUp:[w.shiftKey?"year":"week","before"],PageUp:[w.shiftKey?"year":"month","before"],PageDown:[w.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(_[w.key]){w.preventDefault(),w.stopPropagation();const[q,E]=_[w.key];Ve(q,E)}v?.(j.date,I,w)},[Ve,v,t.dir]),ln=S.useCallback((j,I)=>w=>{y?.(j.date,I,w)},[y]),dn=S.useCallback((j,I)=>w=>{k?.(j.date,I,w)},[k]),un=S.useCallback(j=>I=>{const w=Number(I.target.value),_=a.setMonth(a.startOfMonth(j),w);X(_)},[a,X]),fn=S.useCallback(j=>I=>{const w=Number(I.target.value),_=a.setYear(a.startOfMonth(j),w);X(_)},[a,X]),{className:hn,style:mn}=S.useMemo(()=>({className:[o[p.Root],t.className].filter(Boolean).join(" "),style:{...x?.[p.Root],...t.style}}),[o,t.className,t.style,x]),gn=Gr(t),Xe=S.useRef(null);Co(Xe,!!t.animate,{classNames:o,months:me,focused:Ge,dateLib:a});const yn={dayPickerProps:t,selected:De,select:je,isSelected:Se,months:me,nextMonth:L,previousMonth:U,goToMonth:X,getModifiers:Ce,components:n,classNames:o,styles:x,labels:r,formatters:s};return m.createElement(Tt.Provider,{value:yn},m.createElement(n.Root,{rootRef:t.animate?Xe:void 0,className:hn,style:mn,dir:t.dir,id:t.id,lang:t.lang,nonce:t.nonce,title:t.title,role:t.role,"aria-label":t["aria-label"],"aria-labelledby":t["aria-labelledby"],...gn},m.createElement(n.Months,{className:o[p.Months],style:x?.[p.Months]},!t.hideNavigation&&!f&&m.createElement(n.Nav,{"data-animated-nav":t.animate?"true":void 0,className:o[p.Nav],style:x?.[p.Nav],"aria-label":Je(),onPreviousClick:Ne,onNextClick:Oe,previousMonth:U,nextMonth:L}),me.map((j,I)=>m.createElement(n.Month,{"data-animated-month":t.animate?"true":void 0,className:o[p.Month],style:x?.[p.Month],key:I,displayIndex:I,calendarMonth:j},f==="around"&&!t.hideNavigation&&I===0&&m.createElement(n.PreviousMonthButton,{type:"button",className:o[p.PreviousMonthButton],tabIndex:U?void 0:-1,"aria-disabled":U?void 0:!0,"aria-label":Jt(U),onClick:Ne,"data-animated-button":t.animate?"true":void 0},m.createElement(n.Chevron,{disabled:U?void 0:!0,className:o[p.Chevron],orientation:t.dir==="rtl"?"right":"left"})),m.createElement(n.MonthCaption,{"data-animated-caption":t.animate?"true":void 0,className:o[p.MonthCaption],style:x?.[p.MonthCaption],calendarMonth:j,displayIndex:I},l?.startsWith("dropdown")?m.createElement(n.DropdownNav,{className:o[p.Dropdowns],style:x?.[p.Dropdowns]},(()=>{const w=l==="dropdown"||l==="dropdown-months"?m.createElement(n.MonthsDropdown,{key:"month",className:o[p.MonthsDropdown],"aria-label":Vt(),classNames:o,components:n,disabled:!!t.disableNavigation,onChange:un(j.date),options:oo(j.date,be,we,s,a),style:x?.[p.Dropdown],value:a.getMonth(j.date)}):m.createElement("span",{key:"month"},O(j.date,a)),_=l==="dropdown"||l==="dropdown-years"?m.createElement(n.YearsDropdown,{key:"year",className:o[p.YearsDropdown],"aria-label":nn(a.options),classNames:o,components:n,disabled:!!t.disableNavigation,onChange:fn(j.date),options:co(be,we,s,a,!!t.reverseYears),style:x?.[p.Dropdown],value:a.getYear(j.date)}):m.createElement("span",{key:"year"},Z(j.date,a));return a.getMonthYearOrder()==="year-first"?[_,w]:[w,_]})(),m.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},D(j.date,a.options,a))):m.createElement(n.CaptionLabel,{className:o[p.CaptionLabel],role:"status","aria-live":"polite"},D(j.date,a.options,a))),f==="around"&&!t.hideNavigation&&I===u-1&&m.createElement(n.NextMonthButton,{type:"button",className:o[p.NextMonthButton],tabIndex:L?void 0:-1,"aria-disabled":L?void 0:!0,"aria-label":Qt(L),onClick:Oe,"data-animated-button":t.animate?"true":void 0},m.createElement(n.Chevron,{disabled:L?void 0:!0,className:o[p.Chevron],orientation:t.dir==="rtl"?"left":"right"})),I===u-1&&f==="after"&&!t.hideNavigation&&m.createElement(n.Nav,{"data-animated-nav":t.animate?"true":void 0,className:o[p.Nav],style:x?.[p.Nav],"aria-label":Je(),onPreviousClick:Ne,onNextClick:Oe,previousMonth:U,nextMonth:L}),m.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":Gt(j.date,a.options,a)||void 0,className:o[p.MonthGrid],style:x?.[p.MonthGrid]},!t.hideWeekdays&&m.createElement(n.Weekdays,{"data-animated-weekdays":t.animate?"true":void 0,className:o[p.Weekdays],style:x?.[p.Weekdays]},T&&m.createElement(n.WeekNumberHeader,{"aria-label":tn(a.options),className:o[p.WeekNumberHeader],style:x?.[p.WeekNumberHeader],scope:"col"},B()),sn.map(w=>m.createElement(n.Weekday,{"aria-label":Xt(w,a.options,a),className:o[p.Weekday],key:String(w),style:x?.[p.Weekday],scope:"col"},R(w,a.options,a)))),m.createElement(n.Weeks,{"data-animated-weeks":t.animate?"true":void 0,className:o[p.Weeks],style:x?.[p.Weeks]},j.weeks.map(w=>m.createElement(n.Week,{className:o[p.Week],key:w.weekNumber,style:x?.[p.Week],week:w},T&&m.createElement(n.WeekNumber,{week:w,style:x?.[p.WeekNumber],"aria-label":en(w.weekNumber,{locale:c}),className:o[p.WeekNumber],scope:"row",role:"rowheader"},Y(w.weekNumber,a)),w.days.map(_=>{const{date:q}=_,E=Ce(_);if(E[F.focused]=!E.hidden&&!!Ge?.isEqualTo(_),E[K.selected]=Se?.(q)||E.selected,Ue(De)){const{from:Te,to:We}=De;E[K.range_start]=!!(Te&&We&&a.isSameDay(q,Te)),E[K.range_end]=!!(Te&&We&&a.isSameDay(q,We)),E[K.range_middle]=ee(De,q,!0,a)}const pn=ao(E,x,t.modifiersStyles),xn=Lr(E,o,t.modifiersClassNames),vn=!Qe&&!E.hidden?Kt(q,E,a.options,a):void 0;return m.createElement(n.Day,{key:`${a.format(q,"yyyy-MM-dd")}_${a.format(_.displayMonth,"yyyy-MM")}`,day:_,modifiers:E,className:xn.join(" "),style:pn,role:"gridcell","aria-selected":E.selected||void 0,"aria-label":vn,"data-day":a.format(q,"yyyy-MM-dd"),"data-month":_.outside?a.format(q,"yyyy-MM"):void 0,"data-selected":E.selected||void 0,"data-disabled":E.disabled||void 0,"data-hidden":E.hidden||void 0,"data-outside":_.outside||void 0,"data-focused":E.focused||void 0,"data-today":E.today||void 0},!E.hidden&&Qe?m.createElement(n.DayButton,{className:o[p.DayButton],style:x?.[p.DayButton],type:"button",day:_,modifiers:E,disabled:E.disabled||void 0,tabIndex:Ut(_)?0:-1,"aria-label":Lt(q,E,a.options,a),onClick:rn(_,E),onBlur:an(_,E),onFocus:on(_,E),onKeyDown:cn(_,E),onMouseEnter:ln(_,E),onMouseLeave:dn(_,E)},M(q,a.options,a)):!E.hidden&&M(_.date,a.options,a))})))))))),t.footer&&m.createElement(n.Footer,{className:o[p.Footer],style:x?.[p.Footer],role:"status","aria-live":"polite"},t.footer)))}function Uo({className:e,classNames:t,showOutsideDays:n=!0,captionLayout:s="label",buttonVariant:r="ghost",formatters:a,components:c,...o}){const l=Le();return i.jsx(Zo,{showOutsideDays:n,className:N("bg-white group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent dark:bg-gray-950",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,e),captionLayout:s,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...a},classNames:{root:N("w-fit",l.root),months:N("flex gap-4 flex-col md:flex-row relative",l.months),month:N("flex flex-col w-full gap-4",l.month),nav:N("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between",l.nav),button_previous:N(nt({variant:r}),"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",l.button_previous),button_next:N(nt({variant:r}),"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",l.button_next),month_caption:N("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)",l.month_caption),dropdowns:N("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5",l.dropdowns),dropdown_root:N("relative has-focus:border-gray-950 border border-gray-200 shadow-xs has-focus:ring-gray-950/50 has-focus:ring-[3px] rounded-md dark:has-focus:border-gray-300 dark:border-gray-800 dark:has-focus:ring-gray-300/50",l.dropdown_root),dropdown:N("absolute bg-white inset-0 opacity-0 dark:bg-gray-950",l.dropdown),caption_label:N("select-none font-medium",s==="label"?"text-sm":"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-gray-500 [&>svg]:size-3.5 dark:[&>svg]:text-gray-400",l.caption_label),table:"w-full border-collapse",weekdays:N("flex",l.weekdays),weekday:N("text-gray-500 rounded-md flex-1 font-normal text-[0.8rem] select-none dark:text-gray-400",l.weekday),week:N("flex w-full mt-2",l.week),week_number_header:N("select-none w-(--cell-size)",l.week_number_header),week_number:N("text-[0.8rem] select-none text-gray-500 dark:text-gray-400",l.week_number),day:N("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",l.day),range_start:N("rounded-l-md bg-gray-100 dark:bg-gray-800",l.range_start),range_middle:N("rounded-none",l.range_middle),range_end:N("rounded-r-md bg-gray-100 dark:bg-gray-800",l.range_end),today:N("bg-gray-100 text-gray-900 rounded-md data-[selected=true]:rounded-none dark:bg-gray-800 dark:text-gray-50",l.today),outside:N("text-gray-500 aria-selected:text-gray-500 dark:text-gray-400 dark:aria-selected:text-gray-400",l.outside),disabled:N("text-gray-500 opacity-50 dark:text-gray-400",l.disabled),hidden:N("invisible",l.hidden),...t},components:{Root:({className:d,rootRef:f,...u})=>i.jsx("div",{"data-slot":"calendar",ref:f,className:N(d),...u}),Chevron:({className:d,orientation:f,...u})=>f==="left"?i.jsx(Qn,{className:N("size-4",d),...u}):f==="right"?i.jsx(Xn,{className:N("size-4",d),...u}):i.jsx(se,{className:N("size-4",d),...u}),DayButton:Lo,WeekNumber:({children:d,...f})=>i.jsx("td",{...f,children:i.jsx("div",{className:"flex size-(--cell-size) items-center justify-center text-center",children:d})}),...c},...o})}function Lo({className:e,day:t,modifiers:n,...s}){const r=Le(),a=m.useRef(null);return m.useEffect(()=>{n.focused&&a.current?.focus()},[n.focused]),i.jsx(z,{ref:a,variant:"ghost",size:"icon","data-day":t.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:N("data-[selected-single=true]:bg-gray-900 data-[selected-single=true]:text-gray-50 data-[range-middle=true]:bg-gray-100 data-[range-middle=true]:text-gray-900 data-[range-start=true]:bg-gray-900 data-[range-start=true]:text-gray-50 data-[range-end=true]:bg-gray-900 data-[range-end=true]:text-gray-50 group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-gray-900 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70 dark:data-[selected-single=true]:bg-gray-50 dark:data-[selected-single=true]:text-gray-900 dark:data-[range-middle=true]:bg-gray-800 dark:data-[range-middle=true]:text-gray-50 dark:data-[range-start=true]:bg-gray-50 dark:data-[range-start=true]:text-gray-900 dark:data-[range-end=true]:bg-gray-50 dark:data-[range-end=true]:text-gray-900 dark:dark:hover:text-gray-50",r.day,e),...s})}function Pe(e){return e?ue(e,"yyyy-MM-dd"):""}function Ko(e){return e?!Number.isNaN(e.getTime()):!1}function Go({value:e,onChange:t,disabled:n,...s}){const[r,a]=m.useState(!1),[c,o]=m.useState(e),[l,d]=m.useState(Pe(e));return S.useEffect(()=>{e&&d(Pe(e))},[e]),i.jsxs("div",{className:"relative flex gap-2",children:[i.jsx(kt,{...s,disabled:n,value:l,onChange:f=>{d(f.target.value);const u=f.target.value?new Date(f.target.value):void 0;Ko(u)&&(t?.(u),o(u))},onKeyDown:f=>{f.key==="ArrowDown"&&(f.preventDefault(),a(!0))}}),i.jsxs(es,{open:r,onOpenChange:a,children:[i.jsx(ts,{asChild:!0,children:i.jsxs(z,{id:"date-picker",variant:"ghost",className:"absolute top-1/2 right-2 size-6 -translate-y-1/2",disabled:n,children:[i.jsx(ns,{className:"size-3.5"}),i.jsx("span",{className:"sr-only",children:"Select date"})]})}),i.jsx(ss,{className:"w-auto overflow-hidden p-0",align:"end",alignOffset:-8,sideOffset:10,children:i.jsx(Uo,{mode:"single",selected:e,captionLayout:"dropdown",month:c,onMonthChange:o,onSelect:f=>{t?.(f),d(Pe(f??void 0)),a(!1)}})})]})]})}var Be={exports:{}},Re,ut;function Vo(){if(ut)return Re;ut=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return Re=e,Re}var ze,ft;function Jo(){if(ft)return ze;ft=1;var e=Vo();function t(){}function n(){}return n.resetWarningCache=t,ze=function(){function s(c,o,l,d,f,u){if(u!==e){var h=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw h.name="Invariant Violation",h}}s.isRequired=s;function r(){return s}var a={array:s,bigint:s,bool:s,func:s,number:s,object:s,string:s,symbol:s,any:s,arrayOf:r,element:s,elementType:s,instanceOf:r,node:s,objectOf:r,oneOf:r,oneOfType:r,shape:r,exact:r,checkPropTypes:n,resetWarningCache:t};return a.PropTypes=a,a},ze}var ht;function Qo(){return ht||(ht=1,Be.exports=Jo()()),Be.exports}var Xo=Qo();const ga=rs(Xo),ea=({close:e,transactionID:t,onChange:n})=>t?i.jsx(os,{modalSize:"fit-content",position:"bottom",title:i.jsxs("div",{className:"flex flex-row mx-3 pt-3 sm:text-1xl gap-10",children:[i.jsx("h1",{className:"sm:text-2xl font-small text-gray-900",children:"Edit Transaction:"}),i.jsxs("div",{className:"flex flex-row gap-2",children:["ID: ",t,i.jsx(as,{content:t}),i.jsx(sr,{transactionId:t})]})]}),opened:!!t,onClose:e,children:i.jsx(rr,{transactionID:t,onDone:e,onChange:n})}):null,ta=({onDone:e,transactionId:t,chargeId:n})=>{const[s,r]=S.useState(!1),[{data:a,fetching:c}]=pt({query:is,pause:!t,variables:{transactionId:t}}),o=a?.transactionsByIDs[0];function l(){r(!1),e?.()}return i.jsxs(cs,{open:s,onOpenChange:r,children:[i.jsx(ls,{asChild:!0,children:i.jsx(mt,{label:"Insert Related Misc Expense",children:i.jsx(z,{variant:"ghost",size:"icon",className:"size-7.5",disabled:c,children:i.jsx(_s,{className:"size-5"})})})}),i.jsxs(ds,{className:"sm:max-w-[425px]",children:[i.jsx(us,{children:i.jsx(fs,{children:"Insert Misc Expense"})}),o&&i.jsx(ir,{onDone:l,chargeId:n,defaultValues:{amount:o?.amount.raw?Math.abs(o?.amount.raw):void 0,currency:o?.amount.currency,invoiceDate:o?.eventDate,valueDate:o?.exactEffectiveDate||o?.effectiveDate?new Date(o.exactEffectiveDate??o.effectiveDate):void 0,creditorId:(o?.amount.raw??0)>0?o?.counterparty?.id:void 0,debtorId:(o?.amount.raw??0)<0?o?.counterparty?.id:void 0}})]})]})},At=({onChange:e,total:t,value:n,...s})=>{if(t<=1)return null;const r=n+1;return i.jsx(qt,{...s,children:i.jsxs(Ht,{children:[i.jsx(G,{children:i.jsx($t,{disabled:r<=1,onClick:()=>e(n-1)})}),t>3&&r>1&&i.jsx(G,{children:i.jsx(ie,{onClick:()=>e(0),children:"1"})}),t>3&&r>3&&i.jsx(G,{children:i.jsx($e,{})}),r>2&&i.jsx(G,{children:i.jsx(ie,{onClick:()=>e(n-1),children:r-1})}),i.jsx(G,{children:i.jsx(ie,{onClick:()=>{},isActive:!0,children:r})}),r<t-1&&i.jsx(G,{children:i.jsx(ie,{onClick:()=>e(n+1),children:r+1})}),t>3&&r<t-2&&i.jsx(G,{children:i.jsx($e,{})}),t>3&&r<t&&i.jsx(G,{children:i.jsx(ie,{onClick:()=>e(t-1),children:t})}),i.jsx(G,{children:i.jsx(Zt,{disabled:r>=t,onClick:()=>e(n+1)})})]})})};At.displayName="Pagination";const qt=({className:e,...t})=>i.jsx("nav",{role:"navigation","aria-label":"paginationWrapper",className:N("mx-auto flex w-full justify-center",e),...t});qt.displayName="PaginationWrapper";const Ht=m.forwardRef(({className:e,...t},n)=>i.jsx("ul",{ref:n,className:N("flex flex-row items-center gap-1",e),...t}));Ht.displayName="PaginationContent";const G=m.forwardRef(({className:e,...t},n)=>i.jsx("li",{ref:n,className:N("",e),...t}));G.displayName="PaginationItem";const ie=({className:e,isActive:t,size:n="icon",children:s,...r})=>i.jsx(z,{"aria-current":t?"page":void 0,variant:t?"outline":"ghost",size:n,className:e,...r,children:s});ie.displayName="PaginationLink";const $t=({className:e,...t})=>i.jsx(ie,{"aria-label":"Go to previous page",size:"default",className:N("gap-1 pl-2.5",e),...t,children:i.jsx(hs,{className:"h-4 w-4"})});$t.displayName="PaginationPrevious";const Zt=({className:e,...t})=>i.jsx(ie,{"aria-label":"Go to next page",size:"default",className:N("gap-1 pr-2.5",e),...t,children:i.jsx(gs,{className:"h-4 w-4"})});Zt.displayName="PaginationNext";const $e=({className:e,...t})=>i.jsxs("span",{"aria-hidden":!0,className:N("flex h-9 w-9 items-center justify-center",e),...t,children:[i.jsx(ms,{className:"h-4 w-4"}),i.jsx("span",{className:"sr-only",children:"More pages"})]});$e.displayName="PaginationEllipsis";const na=({transaction:e})=>{const t="effectiveDate"in e?e.effectiveDate:void 0;return i.jsxs("div",{className:"flex flex-col justify-center",children:[i.jsx("div",{children:t&&ue(new Date(t),"dd/MM/yy")}),e.sourceEffectiveDate&&i.jsxs("div",{className:"text-xs text-gray-500",children:["(Originally ",ue(new Date(e.sourceEffectiveDate),"dd/MM/yy"),")"]})]})},sa=({transaction:e})=>{const t="eventDate"in e?e.eventDate:void 0;return i.jsx("div",{className:"flex flex-col justify-center",children:t&&ue(new Date(t),"dd/MM/yy")})},ra=({transaction:e})=>{const t="amount"in e?e.amount:void 0;return i.jsxs("div",{style:{color:Number(t?.raw)>0?"green":"red",whiteSpace:"nowrap"},children:[t?.formatted,i.jsx("br",{}),e.cryptoExchangeRate&&i.jsxs("span",{style:{color:"gray",marginLeft:"0.5rem"},children:[`(Rate: ${e.cryptoExchangeRate.rate})`,i.jsx("br",{}),t?.raw?`${ys(t.raw*e.cryptoExchangeRate.rate)}$`:null]})]})},oa=({transaction:e})=>{const{account:t}=e,n=t.type,s=t.name;return i.jsxs("div",{className:"flex flex-col justify-center",children:[i.jsx("p",{children:n}),i.jsx("p",{children:s})]})},aa=({transaction:e})=>{const t="sourceDescription"in e?e.sourceDescription:"Missing";return i.jsx("div",{className:"flex flex-wrap",children:i.jsx("div",{className:"flex flex-col justify-center",children:t})})},ia=({transaction:e})=>i.jsx("div",{className:"flex flex-wrap",children:i.jsx("div",{className:"flex flex-col justify-center",children:e.referenceKey})});function ca({transaction:e,onChange:t}){const{id:n,counterparty:s,missingInfoSuggestions:r,id:a,sourceDescription:c,enableEdit:o}=e,l=!!r?.business&&o,d=l?r?.business?.name:"Missing",f=l?r?.business?.id:null,u=s?.name??d,[h,g]=S.useState(!1),{updateTransaction:C,fetching:v}=Ze(),y=S.useCallback(async O=>{await C({transactionId:a,fields:{counterpartyId:O}}),g(!0)},[a,C]),k=S.useCallback(async O=>{await y(O),t?.()},[y,t]),{selectableBusinesses:W,fetching:b}=ps(),[T,x]=S.useState(f??null),[D,M]=S.useState(c);return i.jsxs(i.Fragment,{children:[i.jsx("div",{className:"flex flex-wrap flex-col justify-center",children:s?.id?i.jsx(gt,{to:yt.BUSINESSES.DETAIL(s.id),target:"_blank",rel:"noreferrer",onClick:O=>O.stopPropagation(),className:"inline-flex items-center font-semibold",children:u}):i.jsxs(i.Fragment,{children:[i.jsx(xs,{options:W,value:T,onChange:x,search:D,onSearchChange:M,placeholder:"Choose or create a business",empty:D?i.jsx(vs,{description:D,onAdd:k}):null}),i.jsx(Is,{content:"Approve",children:i.jsx(z,{variant:"outline",size:"icon",onClick:()=>T&&y(T),disabled:v||b||!T,children:i.jsx(bs,{className:"size-4"})})})]})}),i.jsx(Es,{transactionId:n,counterpartyId:s?.id??T,open:h,onOpenChange:g,onClose:t})]})}const Ae=[{accessorKey:"counterparty.name",header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Counterparty",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(ca,{transaction:e.original})},{accessorKey:"eventDate",sortingFn:e=>"eventDate"in e.original&&e.original.eventDate?new Date(e.original.eventDate).getTime():0,header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Event Date",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(sa,{transaction:e.original})},{accessorKey:"effectiveDate",sortingFn:e=>"effectiveDate"in e.original&&e.original.effectiveDate?new Date(e.original.effectiveDate).getTime():0,header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Debit Date",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(na,{transaction:e.original})},{accessorKey:"amount.raw",header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Amount",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(ra,{transaction:e.original})},{accessorKey:"account.name",header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Account",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(oa,{transaction:e.original})},{accessorKey:"sourceDescription",header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Description",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(aa,{transaction:e.original})},{accessorKey:"referenceKey",header:({column:e})=>i.jsxs(z,{variant:"ghost",onClick:()=>e.toggleSorting(e.getIsSorted()==="asc"),children:["Reference#",e.getIsSorted()&&(e.getIsSorted()==="asc"?i.jsx(ce,{className:"ml-2 h-4 w-4"}):i.jsx(se,{className:"ml-2 h-4 w-4"}))]}),cell:({row:e})=>i.jsx(ia,{transaction:e.original})}],la={accessorKey:"id",header:"Actions",cell:({row:e})=>e.original.enableEdit?i.jsxs(i.Fragment,{children:[i.jsx(Ds,{onClick:()=>e.original.editTransaction(e.original.id)}),i.jsx(ta,{chargeId:e.original.chargeId,transactionId:e.original.id,onDone:e.original.onUpdate})]}):e.original.enableChargeLink?i.jsx(nr,{chargeId:e.original.chargeId}):null},ya=({transactionsProps:e,onChange:t,enableEdit:n,enableChargeLink:s})=>{const[r,a]=S.useState(void 0),[c,o]=S.useState([]),l=S.useMemo(()=>(console.log("rendering Transactions"),e.map(h=>ks(Ms,h))),[e]),d=S.useMemo(()=>l.map(h=>({...h,editTransaction:a,onUpdate:t||(()=>{}),enableEdit:n,enableChargeLink:s})),[l,n,s,t]),f=S.useMemo(()=>n||s?[...Ae,la]:Ae,[n,s]),u=ws({data:d,columns:f,getCoreRowModel:js(),onSortingChange:o,getSortedRowModel:Ss(),getPaginationRowModel:Cs(),state:{sorting:c},initialState:{pagination:{pageIndex:0,pageSize:100},sorting:[{id:"eventDate",desc:!0}]}});return i.jsxs(i.Fragment,{children:[i.jsxs(Ns,{children:[i.jsx(Os,{children:u.getHeaderGroups().map(h=>i.jsx(_e,{children:h.headers.map(g=>i.jsx(Ts,{colSpan:g.colSpan,children:g.isPlaceholder?null:st(g.column.columnDef.header,g.getContext())},g.id))},h.id))}),i.jsx(Ws,{children:u.getRowModel().rows?.length?u.getRowModel().rows.map(h=>i.jsx(_e,{children:h.getVisibleCells().map(g=>i.jsx(rt,{children:st(g.column.columnDef.cell,g.getContext())},g.id))},h.id)):i.jsx(_e,{children:i.jsx(rt,{colSpan:Ae.length,className:"h-24 text-center",children:"No results."})})})]}),u.getPageCount()>1&&i.jsx("div",{className:"flex items-center justify-end space-x-2 py-4",children:i.jsx(At,{value:u.getState().pagination.pageIndex,total:u.getPageCount(),onChange:h=>u.setPageIndex(h)})}),i.jsx(ea,{transactionID:r,close:()=>a(void 0),onChange:t??(()=>{})})]})};export{ra as A,ca as C,na as D,Ys as E,ir as I,lr as M,ga as P,ia as S,ya as T,At as a,sa as b,oa as c,aa as d,nr as e};
@@ -1,4 +1,4 @@
1
- import{v as V,g as E,e5 as q,r,t as k,i as F,u as $,e6 as _,j as s,c as L,l as R,B as H,m as Q,n as X}from"./index-fZcP3X7C.js";import{c as G}from"./charges-table-BIpECr1x.js";import{C as J,M as K}from"./Checkbox-qIwbw1Vm.js";/**
1
+ import{v as V,g as E,e5 as q,r,t as k,i as F,u as $,e6 as _,j as s,c as L,l as R,B as H,m as Q,n as X}from"./index-C6OmHOHr.js";import{c as G}from"./charges-table-D3WwcB50.js";import{C as J,M as K}from"./Checkbox-Cmx4P-eR.js";/**
2
2
  * @license lucide-react v0.548.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.