UNPKG

@accounter/client

Version:
1 lines 23 kB
import{s as e}from"./dist-ypP48_Ax.js";import{i as t,o as n,t as r}from"./utils-CbS-oR5I.js";import{Bn as i,C as a,Kt as o,Xo as s,Yo as c,at as l,it as u,r as d,t as f}from"./error-handling-4e5czINv.js";import{s as p,t as m}from"./routes-BB3QY9SQ.js";import{a as h,c as g,d as _,dt as v,f as y,gt as b,i as x,l as S,mt as C,n as w,o as T,p as E,r as D,s as O,t as ee,u as k}from"./select-CBL38KW3.js";import{A,Ct as j,K as te,St as ne,U as re,Z as ie,bt as ae,ft as oe,i as se,mt as ce,o as le,ot as M,s as N,tt as ue,x as P,xt as de}from"./common-GyBLHXtP.js";import{t as fe}from"./building-2-zRPJeIhu.js";import{t as pe}from"./ellipsis-vertical-BH-MD7qx.js";import{c as me,d as F,f as I,h as L,l as R,m as he,u as ge,y as z}from"./separator-CewkthSK.js";import{t as _e}from"./tags-Bgsfn8H3.js";import{t as B}from"./button-DUNsVBiu.js";import{a as ve,c as ye,i as be,l as xe,n as Se,o as Ce,r as we,s as Te,t as Ee}from"./alert-dialog-DrHd6ikF.js";import{$c as De,Bc as V,Ul as Oe,a as ke,c as Ae,d as H,i as je,n as Me,o as U,r as W,s as Ne,t as Pe}from"./table-HMkVegx0.js";import{n as Fe,r as Ie,t as Le}from"./alert-55QsYEfR.js";import{t as Re}from"./page-layout-Dzb0muId.js";import{a as ze,i as Be,n as Ve,r as He,t as Ue}from"./empty-BJZb5Yi4.js";var We=b(`pencil-line`,[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),G=e(n(),1);function K(e){return e.totalTransactions===0&&e.totalDocuments===0&&e.totalMiscExpenses===0&&e.totalLedgerRecords===0}function q(e){if(!e)return null;let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function Ge(e){return e.filter(e=>e.__typename===`LtdFinancialEntity`).map(e=>({id:e.id,name:e.name,hebrewName:e.hebrewName??null,governmentId:e.governmentId??null,countryCode:e.country?.code??null,city:e.city??null,zipCode:e.zipCode??null,createdAt:q(e.createdAt),updatedAt:q(e.updatedAt),sortCodeKey:e.sortCode?.key??null,sortCodeName:e.sortCode?.name??null,taxCategoryName:e.taxCategory?.name??null,irsCode:e.irsCode??null,pcn874RecordType:e.pcn874RecordType??null,isClient:e.isClient??!1,isAdmin:e.isAdmin??!1,isActive:e.isActive??!0,suggestionDescription:e.suggestions?.description??null,suggestionTags:e.suggestions?.tags?.map(e=>e.name).filter(e=>!!e)??[]})).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`}))}function J(e){return oe(e.countryCode)??``}function Ke(e,t){let n=new Map;for(let e of t)n.set(e.businessId,e);return e.map(e=>{let t=n.get(e.id);return{...e,totalTransactions:t?.totalTransactions??null,totalDocuments:t?.totalDocuments??null,totalMiscExpenses:t?.totalMiscExpenses??null,totalLedgerRecords:t?.totalLedgerRecords??null}})}function qe(e,t){let n=t.name.trim().toLowerCase(),r=t.sortCode.trim().toLowerCase(),i=t.taxCategory.trim().toLowerCase();return e.filter(e=>{if(n&&!`${e.name} ${e.hebrewName??``}`.toLowerCase().includes(n)||t.client&&!e.isClient||t.admin&&!e.isAdmin||t.inactive&&e.isActive||t.unusedOnly&&!K(e))return!1;if(r){let t=String(e.sortCodeKey??``).includes(r),n=(e.sortCodeName??``).toLowerCase().includes(r);if(!t&&!n)return!1}return!(i&&!(e.taxCategoryName??``).toLowerCase().includes(i))})}var Y=t(),Je=[{key:`client`,label:`Client`},{key:`admin`,label:`Admin`},{key:`inactive`,label:`Inactive`},{key:`unusedOnly`,label:`Unused only`}];function Ye({filters:e,setFilters:t,usageLoading:n=!1}){let[r,i]=(0,G.useState)(e.name),[a,o]=(0,G.useState)(e.sortCode),[s,c]=(0,G.useState)(e.taxCategory);return(0,G.useEffect)(()=>{let e=setTimeout(()=>{t(e=>({...e,name:r}))},600);return()=>{clearTimeout(e)}},[r,t]),(0,G.useEffect)(()=>{let e=setTimeout(()=>{t(e=>({...e,sortCode:a}))},600);return()=>{clearTimeout(e)}},[a,t]),(0,G.useEffect)(()=>{let e=setTimeout(()=>{t(e=>({...e,taxCategory:s}))},600);return()=>{clearTimeout(e)}},[s,t]),(0,Y.jsxs)(`div`,{className:`flex flex-row gap-5 items-center`,children:[(0,Y.jsx)(O,{className:`w-72`,placeholder:`Business Name`,value:r,onChange:e=>i(e.target.value)}),Je.map(r=>{let i=r.key===`unusedOnly`&&e.unusedOnly&&n;return(0,Y.jsxs)(B,{size:`sm`,variant:e[r.key]?`default`:`outline`,onClick:()=>t(e=>({...e,[r.key]:!e[r.key]})),children:[i?(0,Y.jsx)(v,{className:`mr-2 h-4 w-4 animate-spin`}):null,r.label]},r.key)}),(0,Y.jsx)(O,{className:`w-24`,placeholder:`Sort code`,value:a,onChange:e=>o(e.target.value)}),(0,Y.jsx)(O,{className:`w-40`,placeholder:`Tax category`,value:s,onChange:e=>c(e.target.value)})]})}var Xe=`deleteBusiness`,Ze=()=>{let[{fetching:e},t]=c(i);return{fetching:e,deleteBusiness:(0,G.useCallback)(async e=>{let n=`Error deleting business ID [${e.businessId}]`,r=`${Xe}-${e.businessId}`;d.loading(`Deleting business`,{id:r});try{let i=await t(e);if(f(i,n,r))return d.success(`Success`,{id:r,description:`Business deleted`}),!0}catch(e){console.error(`${n}: ${e}`),d.error(`Error`,{id:r,description:n,duration:1e5,closeButton:!0})}return!1},[t])}};function Qe({row:e,table:t}){let[n,r]=(0,G.useState)(!1),{fetching:i,deleteBusiness:a}=Ze(),o=t.options.meta,s=K(e),c=async()=>{await a({businessId:e.id})&&(r(!1),o?.refetchBusinesses?.())};if(!s){let t=e.totalTransactions===null?`Only unused businesses can be deleted — enable a usage column to load usage`:`This business is in use and cannot be deleted`;return(0,Y.jsx)(`span`,{title:t,className:`inline-block cursor-not-allowed`,children:(0,Y.jsx)(B,{variant:`ghost`,size:`icon`,className:`text-red-600 hover:text-red-700 pointer-events-none`,disabled:!0,children:(0,Y.jsx)(z,{className:`h-4 w-4`})})})}return(0,Y.jsxs)(Ee,{open:n,onOpenChange:r,children:[(0,Y.jsx)(xe,{asChild:!0,children:(0,Y.jsx)(B,{variant:`ghost`,size:`icon`,className:`text-red-600 hover:text-red-700`,title:`Delete business`,children:(0,Y.jsx)(z,{className:`h-4 w-4`})})}),(0,Y.jsxs)(be,{children:[(0,Y.jsxs)(Te,{children:[(0,Y.jsxs)(ye,{children:[`Delete "`,e.name,`"?`]}),(0,Y.jsx)(ve,{children:`This permanently deletes the business and cannot be undone.`})]}),(0,Y.jsxs)(Ce,{children:[(0,Y.jsx)(we,{children:`Cancel`}),(0,Y.jsx)(Se,{onClick:e=>{e.preventDefault(),c()},disabled:i,className:`bg-red-600 hover:bg-red-700`,children:`Delete`})]})]})]})}var X=`batchUpdateBusinessesTags`,$e=()=>{let[{fetching:e},t]=c(l);return{fetching:e,batchUpdateBusinessesTags:(0,G.useCallback)(async e=>{let n=e.businessIds.length,r=`Error updating tags for ${n} business${n===1?``:`es`}`;d.loading(`Updating tags`,{id:X});try{let i=await t(e);if(f(i,r,X))return d.success(`Success`,{id:X,description:`Tags updated for ${n} business${n===1?``:`es`}`}),!0}catch(e){console.error(`${r}: ${e}`),d.error(`Error`,{id:X,description:r,duration:1e5,closeButton:!0})}return!1},[t])}};function et({businessIds:e,open:t,onOpenChange:n,onDone:r}){let{selectableTags:i,fetching:a}=de(),{fetching:o,batchUpdateBusinessesTags:s}=$e(),[c,l]=(0,G.useState)(`add`),[u,d]=(0,G.useState)([]),[f,p]=(0,G.useState)(0),m=e.length,h=()=>{d([]),p(e=>e+1)},v=e=>{l(e),h()},b=e=>{e||h(),n(e)},x=async()=>{u.length!==0&&m!==0&&await s({businessIds:e,...c===`add`?{addTagIds:u}:{removeTagIds:u}})&&(h(),n(!1),r())};return(0,Y.jsx)(g,{open:t,onOpenChange:b,children:(0,Y.jsxs)(S,{className:`sm:max-w-md`,onClick:e=>e.stopPropagation(),children:[(0,Y.jsxs)(y,{children:[(0,Y.jsxs)(E,{children:[`Change tags for `,m,` business`,m===1?``:`es`]}),(0,Y.jsx)(k,{children:`Add the selected tags to, or remove them from, every selected business. Other tags are left unchanged.`})]}),(0,Y.jsxs)(`div`,{className:`grid gap-3`,children:[(0,Y.jsx)(se,{value:c,onValueChange:v,children:(0,Y.jsxs)(le,{className:`w-full`,children:[(0,Y.jsx)(N,{value:`add`,children:`Add tags`}),(0,Y.jsx)(N,{value:`remove`,children:`Remove tags`})]})}),(0,Y.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Y.jsx)(T,{children:`Tags`}),(0,Y.jsx)(ue,{options:i,onValueChange:d,defaultValue:u,placeholder:c===`add`?`Select tags to add`:`Select tags to remove`,variant:`default`,disabled:a},`${c}-${f}`)]})]}),(0,Y.jsxs)(_,{children:[(0,Y.jsx)(B,{variant:`outline`,onClick:()=>b(!1),children:`Cancel`}),(0,Y.jsxs)(B,{onClick:()=>void x(),disabled:o||u.length===0||m===0,children:[c===`add`?`Add to`:`Remove from`,` `,m,` business`,m===1?``:`es`]})]})]})})}var Z=`batchUpdateBusinesses`,tt=()=>{let[{fetching:e},t]=c(u);return{fetching:e,batchUpdateBusinesses:(0,G.useCallback)(async e=>{let n=`Error updating ${e.businessIds.length} businesses`;d.loading(`Updating businesses`,{id:Z});try{let r=await t(e);if(f(r,n,Z))return d.success(`Success`,{id:Z,description:`Businesses updated`}),!0}catch(e){console.error(`${n}: ${e}`),d.error(`Error`,{id:Z,description:n,duration:1e5,closeButton:!0})}return!1},[t])}},Q={country:``,city:``,zipCode:``,sortCode:``,irsCode:``,taxCategory:``,suggestionDescription:``,isActive:`unset`,isReceiptEnough:`unset`,isDocumentsOptional:`unset`,optionalVAT:`unset`,exemptDealer:`unset`},nt=[{key:`city`,label:`City`},{key:`zipCode`,label:`Zip code`},{key:`irsCode`,label:`IRS code`,numeric:!0},{key:`suggestionDescription`,label:`Suggestion description`,fullWidth:!0}],rt=[{key:`isActive`,label:`Is active`},{key:`isReceiptEnough`,label:`Is receipt enough`},{key:`isDocumentsOptional`,label:`No docs required`},{key:`optionalVAT`,label:`Is VAT optional`},{key:`exemptDealer`,label:`Exempt dealer`}],it=/^\d+$/;function at(e){let t={};e.country.trim()&&(t.country=e.country.trim()),e.city.trim()&&(t.city=e.city.trim()),e.zipCode.trim()&&(t.zipCode=e.zipCode.trim()),e.sortCode.trim()&&(t.sortCode=Number(e.sortCode)),e.irsCode.trim()&&(t.irsCode=Number(e.irsCode)),e.taxCategory.trim()&&(t.taxCategory=e.taxCategory.trim()),e.suggestionDescription.trim()&&(t.suggestionDescription=e.suggestionDescription.trim());for(let{key:n}of rt)e[n]!==`unset`&&(t[n]=e[n]===`true`);return t}function ot({businessIds:e,open:t,onOpenChange:n,onDone:i}){let[a,o]=(0,G.useState)(Q),{userContext:s}=(0,G.useContext)(De),{fetching:c,batchUpdateBusinesses:l}=tt(),{countries:u,fetching:d}=ce(),{selectableTaxCategories:f,fetching:p}=ae(),m=at(a),v=Object.keys(m).length===0,b=a.irsCode.trim()!==``&&!it.test(a.irsCode.trim()),C=e=>{e||o(Q),n(e)},A=async()=>{v||e.length===0||await l({businessIds:e,fields:m})&&(o(Q),n(!1),i())};return(0,Y.jsx)(g,{open:t,onOpenChange:C,children:(0,Y.jsxs)(S,{className:`flex max-h-[90vh] flex-col sm:max-w-2xl`,onClick:e=>e.stopPropagation(),children:[(0,Y.jsxs)(y,{children:[(0,Y.jsxs)(E,{children:[`Batch update `,e.length,` business`,e.length===1?``:`es`]}),(0,Y.jsx)(k,{children:`Only the fields you fill in are applied to every selected business.`})]}),(0,Y.jsxs)(`div`,{className:`-mx-1 grid flex-1 grid-cols-1 gap-3 overflow-y-auto px-1 sm:grid-cols-2`,children:[(0,Y.jsxs)(`div`,{className:`grid gap-1 sm:col-span-2`,children:[(0,Y.jsx)(T,{children:`Country`}),(0,Y.jsx)(M,{data:u.map(e=>({value:e.code,label:e.name})),value:a.country||null,onChange:e=>o(t=>({...t,country:e??``})),disabled:d,placeholder:`Select country`})]}),(0,Y.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Y.jsx)(T,{children:`Sort code`}),(0,Y.jsx)(ie,{ownerId:s?.context.adminBusinessId,value:a.sortCode||null,onChange:e=>o(t=>({...t,sortCode:e==null?``:e.toString()})),placeholder:`Select sort code`})]}),(0,Y.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Y.jsx)(T,{children:`Tax category`}),(0,Y.jsx)(M,{data:f,value:a.taxCategory||null,onChange:e=>o(t=>({...t,taxCategory:e??``})),disabled:p,placeholder:`Select tax category`})]}),nt.map(e=>(0,Y.jsxs)(`div`,{className:r(`grid gap-1`,e.fullWidth&&`sm:col-span-2`),children:[(0,Y.jsx)(T,{htmlFor:`batch-${e.key}`,children:e.label}),(0,Y.jsx)(O,{id:`batch-${e.key}`,type:e.numeric?`number`:`text`,value:a[e.key],onChange:t=>o(n=>({...n,[e.key]:t.target.value}))})]},e.key)),rt.map(e=>(0,Y.jsxs)(`div`,{className:`grid gap-1`,children:[(0,Y.jsx)(T,{htmlFor:`batch-${e.key}`,children:e.label}),(0,Y.jsxs)(ee,{value:a[e.key],onValueChange:t=>o(n=>({...n,[e.key]:t})),children:[(0,Y.jsx)(x,{id:`batch-${e.key}`,children:(0,Y.jsx)(h,{})}),(0,Y.jsxs)(w,{children:[(0,Y.jsx)(D,{value:`unset`,children:`No change`}),(0,Y.jsx)(D,{value:`true`,children:`Yes`}),(0,Y.jsx)(D,{value:`false`,children:`No`})]})]})]},e.key))]}),(0,Y.jsxs)(_,{children:[(0,Y.jsx)(B,{variant:`outline`,onClick:()=>C(!1),children:`Cancel`}),(0,Y.jsx)(B,{onClick:()=>void A(),disabled:c||v||b,children:`Save`})]})]})})}function st({table:e}){let[t,n]=(0,G.useState)(!1),[r,i]=(0,G.useState)(!1),a=e.getSelectedRowModel().rows.map(e=>e.original.id),o=a.length,s=e.options.meta;function c(){s?.refetchBusinesses?.(),e.resetRowSelection()}return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(R,{children:[(0,Y.jsx)(L,{asChild:!0,children:(0,Y.jsx)(B,{variant:`ghost`,size:`icon`,className:`size-6`,"aria-label":`Batch business actions`,onClick:e=>e.stopPropagation(),children:(0,Y.jsx)(pe,{className:`size-4`})})}),(0,Y.jsxs)(F,{align:`start`,children:[(0,Y.jsxs)(I,{disabled:o===0,onSelect:()=>n(!0),children:[(0,Y.jsx)(We,{className:`size-4`}),`Update fields`]}),(0,Y.jsxs)(I,{disabled:o===0,onSelect:()=>i(!0),children:[(0,Y.jsx)(_e,{className:`size-4`}),`Change tags`]})]})]}),(0,Y.jsx)(ot,{businessIds:a,open:t,onOpenChange:n,onDone:c}),(0,Y.jsx)(et,{businessIds:a,open:r,onOpenChange:i,onDone:c})]})}function ct(e){return e&&!Number.isNaN(e.getTime())?Oe(e,`dd/MM/yyyy`):`—`}function lt(e){return(t,n)=>(t.original[e]?.getTime()??0)-(n.original[e]?.getTime()??0)}function $(e,t){return e??(t.options.meta?.usageFetching?(0,Y.jsx)(v,{className:`h-4 w-4 animate-spin`}):`—`)}var ut=[{id:`select`,header:({table:e})=>(0,Y.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,Y.jsx)(P,{checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t),"aria-label":`Select all`}),(0,Y.jsx)(st,{table:e})]}),cell:({row:e})=>(0,Y.jsx)(P,{checked:e.getIsSelected(),onCheckedChange:t=>e.toggleSelected(!!t),"aria-label":`Select row`}),enableSorting:!1,enableHiding:!1},{accessorKey:`name`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Name`}),cell:({row:e})=>{let{id:t,name:n,hebrewName:r}=e.original;return(0,Y.jsxs)(p,{to:m.BUSINESSES.DETAIL(t),state:{from:m.BUSINESSES.ALL},className:`font-medium text-blue-600 hover:underline`,children:[n,r?(0,Y.jsx)(`span`,{className:`block text-xs text-muted-foreground`,children:r}):null]})}},{id:`locality`,accessorFn:e=>J(e),header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Locality`}),cell:({row:e})=>J(e.original)||`—`},{accessorKey:`governmentId`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`VAT number`}),cell:({row:e})=>e.original.governmentId??`—`},{accessorKey:`createdAt`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Created`}),sortFn:lt(`createdAt`),cell:({row:e})=>ct(e.original.createdAt)},{accessorKey:`updatedAt`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Updated`}),sortFn:lt(`updatedAt`),cell:({row:e})=>ct(e.original.updatedAt)},{id:`sortCode`,accessorFn:e=>e.sortCodeKey,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Sort code`}),cell:({row:e})=>{let{sortCodeKey:t,sortCodeName:n}=e.original;return t==null&&!n?`—`:(0,Y.jsxs)(`div`,{className:`flex flex-col leading-tight`,children:[t!=null&&(0,Y.jsx)(`span`,{className:`font-medium`,children:t}),n&&(0,Y.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:n})]})}},{id:`taxCategory`,header:`Tax category`,cell:({row:e})=>e.original.taxCategoryName??`—`},{id:`irsCode`,accessorFn:e=>e.irsCode,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`IRS code`}),cell:({row:e})=>e.original.irsCode??`—`},{id:`pcn874RecordType`,header:`PCN874 type`,cell:({row:e})=>e.original.pcn874RecordType??`—`},{id:`isClient`,header:`Client`,cell:({row:e})=>e.original.isClient?(0,Y.jsx)(V,{variant:`outline`,children:`Client`}):`—`},{id:`isAdmin`,header:`Admin`,cell:({row:e})=>e.original.isAdmin?(0,Y.jsx)(V,{variant:`outline`,children:`Admin`}):`—`},{id:`status`,header:`Status`,cell:({row:e})=>e.original.isActive?(0,Y.jsx)(V,{variant:`secondary`,children:`Active`}):(0,Y.jsx)(V,{variant:`destructive`,children:`Inactive`})},{id:`description`,header:`Description`,cell:({row:e})=>e.original.suggestionDescription??`—`},{id:`tags`,header:`Tags`,cell:({row:e})=>e.original.suggestionTags.length?(0,Y.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.original.suggestionTags.map(e=>(0,Y.jsx)(V,{variant:`outline`,children:e},e))}):`—`},{accessorKey:`totalTransactions`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Transactions`}),cell:({row:e,table:t})=>$(e.original.totalTransactions,t)},{accessorKey:`totalDocuments`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Documents`}),cell:({row:e,table:t})=>$(e.original.totalDocuments,t)},{accessorKey:`totalMiscExpenses`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Misc expenses`}),cell:({row:e,table:t})=>$(e.original.totalMiscExpenses,t)},{accessorKey:`totalLedgerRecords`,header:({column:e})=>(0,Y.jsx)(j,{column:e,title:`Ledger records`}),cell:({row:e,table:t})=>$(e.original.totalLedgerRecords,t)},{id:`actions`,enableHiding:!1,enableSorting:!1,cell:({row:e,table:t})=>(0,Y.jsx)(Qe,{row:e.original,table:t})}],dt=[`totalTransactions`,`totalDocuments`,`totalMiscExpenses`,`totalLedgerRecords`],ft=[{label:`Core`,columns:[{id:`name`,label:`Name`}]},{label:`Main`,columns:[{id:`locality`,label:`Locality`},{id:`governmentId`,label:`VAT number`},{id:`createdAt`,label:`Created`},{id:`updatedAt`,label:`Updated`}]},{label:`Categorization`,columns:[{id:`sortCode`,label:`Sort code`},{id:`taxCategory`,label:`Tax category`},{id:`irsCode`,label:`IRS code`},{id:`pcn874RecordType`,label:`PCN874 type`}]},{label:`Extension tags`,columns:[{id:`isClient`,label:`Client`},{id:`isAdmin`,label:`Admin`},{id:`status`,label:`Status`}]},{label:`Suggestion defaults`,columns:[{id:`description`,label:`Description`},{id:`tags`,label:`Tags`}]},{label:`Usage`,columns:[{id:`totalTransactions`,label:`Transactions`},{id:`totalDocuments`,label:`Documents`},{id:`totalMiscExpenses`,label:`Misc expenses`},{id:`totalLedgerRecords`,label:`Ledger records`}]}],pt={sortCode:!1,taxCategory:!1,irsCode:!1,pcn874RecordType:!1,description:!1,tags:!1,totalTransactions:!1,totalDocuments:!1,totalMiscExpenses:!1,totalLedgerRecords:!1};function mt({children:e,className:t}){let n=(0,G.useRef)(null),[i,a]=(0,G.useState)({left:!1,right:!1});return(0,G.useEffect)(()=>{let e=n.current;if(!e)return;let t=e.querySelector(`[data-slot="table-container"]`);if(!t)return;let r=()=>{let{scrollLeft:e,scrollWidth:n,clientWidth:r}=t;a({left:e>0,right:Math.ceil(e+r)<n})};r(),t.addEventListener(`scroll`,r,{passive:!0});let i=new ResizeObserver(r);return i.observe(t),t.firstElementChild&&i.observe(t.firstElementChild),()=>{t.removeEventListener(`scroll`,r),i.disconnect()}},[]),(0,Y.jsxs)(`div`,{ref:n,className:r(`relative`,t),children:[e,(0,Y.jsx)(`div`,{className:r(`pointer-events-none absolute inset-y-0 left-0 w-6 bg-gradient-to-r from-black/15 to-transparent transition-opacity dark:from-black/40`,i.left?`opacity-100`:`opacity-0`)}),(0,Y.jsx)(`div`,{className:r(`pointer-events-none absolute inset-y-0 right-0 w-6 bg-gradient-to-l from-black/15 to-transparent transition-opacity dark:from-black/40`,i.right?`opacity-100`:`opacity-0`)})]})}var ht=()=>{let{setFiltersContext:e}=(0,G.useContext)(me),[{data:t,fetching:n,error:r},i]=s({query:a}),c=(0,G.useMemo)(()=>Ge(t?.allBusinesses?.nodes??[]),[t?.allBusinesses?.nodes]),[l,u]=(0,G.useState)({}),[d,f]=(0,G.useState)(pt),[p,m]=(0,G.useState)([]),[h,g]=(0,G.useState)({name:``,client:!1,admin:!1,inactive:!1,unusedOnly:!1,sortCode:``,taxCategory:``}),_=(0,G.useMemo)(()=>c.map(e=>e.id),[c]),v=dt.some(e=>d[e])||h.unusedOnly,[{data:y,fetching:b}]=s({query:o,variables:{ids:_},pause:!v||_.length===0}),x=(0,G.useMemo)(()=>Ke(c,y?.businessesUsage??[]),[c,y]),S=(0,G.useMemo)(()=>qe(x,h),[x,h]),w=Ae({features:Ne,data:S,columns:ut,getRowId:e=>e.id,initialState:{pagination:{pageIndex:0,pageSize:100}},enableRowSelection:!0,onRowSelectionChange:u,onColumnVisibilityChange:f,onSortingChange:m,state:{rowSelection:l,columnVisibility:d,sorting:p},meta:{usageFetching:v&&b,refetchBusinesses:()=>i()}}),T=(0,G.useMemo)(()=>S.filter(e=>l[e.id]).map(e=>e.id),[S,l]);return(0,G.useEffect)(()=>{let t=!1,n=()=>{t||(t=!0,i())},r=T.map(e=>({id:e,onChange:n}));e((0,Y.jsxs)(`div`,{className:`flex flex-row gap-x-5`,children:[(0,Y.jsx)(Ye,{filters:h,setFilters:g,usageLoading:v&&b}),(0,Y.jsx)(re,{selected:r,resetMerge:()=>u({})})]}))},[e,T,i,h,g,v,b]),(0,Y.jsx)(Re,{title:`Businesses (${c.length})`,description:`All businesses`,headerActions:(0,Y.jsxs)(`div`,{className:`flex items-center py-4 gap-4`,children:[(0,Y.jsx)(A,{description:``,onAdd:()=>i()}),(0,Y.jsxs)(R,{children:[(0,Y.jsx)(L,{asChild:!0,children:(0,Y.jsxs)(B,{variant:`outline`,children:[`Columns `,(0,Y.jsx)(C,{})]})}),(0,Y.jsx)(F,{align:`end`,children:ft.map(e=>({...e,columns:e.columns.filter(e=>w.getColumn(e.id)?.getCanHide())})).filter(e=>e.columns.length>0).map((e,t)=>{let n=e.columns.every(e=>w.getColumn(e.id)?.getIsVisible()??!1);return(0,Y.jsxs)(G.Fragment,{children:[t>0?(0,Y.jsx)(he,{}):null,(0,Y.jsxs)(I,{className:`flex w-full items-center justify-between gap-4 font-semibold`,onSelect:t=>{t.preventDefault();for(let t of e.columns)w.getColumn(t.id)?.toggleVisibility(!n)},children:[e.label,(0,Y.jsx)(`span`,{className:`text-xs font-normal text-muted-foreground`,children:n?`Hide all`:`Show all`})]}),e.columns.map(e=>{let t=w.getColumn(e.id);return t?(0,Y.jsx)(ge,{checked:t.getIsVisible(),onCheckedChange:e=>t.toggleVisibility(!!e),children:e.label},e.id):null})]},e.label)})})]})]}),children:r?(0,Y.jsxs)(Le,{variant:`destructive`,children:[(0,Y.jsx)(Ie,{children:`Failed to load businesses`}),(0,Y.jsx)(Fe,{children:r.message})]}):n?(0,Y.jsx)(`div`,{className:`rounded-md border p-4`,children:(0,Y.jsx)(te,{columns:8,rows:10})}):c.length===0?(0,Y.jsxs)(Ue,{className:`py-8 sm:py-12`,children:[(0,Y.jsx)(Be,{children:(0,Y.jsx)(fe,{className:`size-8 sm:size-10 text-muted-foreground`})}),(0,Y.jsx)(ze,{children:`No businesses yet`}),(0,Y.jsx)(He,{children:`Add your first business, or generate businesses from your transactions.`}),(0,Y.jsx)(Ve,{children:(0,Y.jsx)(A,{description:``,onAdd:()=>i()})})]}):(0,Y.jsxs)(`div`,{className:`space-y-4`,children:[(0,Y.jsx)(mt,{className:`overflow-hidden rounded-md border`,children:(0,Y.jsxs)(Pe,{children:[(0,Y.jsx)(ke,{children:w.getHeaderGroups().map(e=>(0,Y.jsx)(U,{children:e.headers.map(e=>(0,Y.jsx)(je,{colSpan:e.colSpan,children:e.isPlaceholder?null:H(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,Y.jsx)(Me,{children:w.getRowModel().rows.length?w.getRowModel().rows.map(e=>(0,Y.jsx)(U,{"data-state":e.getIsSelected()&&`selected`,children:e.getVisibleCells().map(e=>(0,Y.jsx)(W,{children:H(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,Y.jsx)(U,{children:(0,Y.jsx)(W,{colSpan:ut.length,className:`h-24 text-center`,children:`No results.`})})})]})}),(0,Y.jsx)(ne,{table:w})]})})};export{ht as Businesses};