PageSourceSearch

https://app.erpflow.ai/assets/categories-D2j_u01H.js

js erpflow.ai collected 2026-10-05 15:17:57 UTC 10,375 bytes, 1 lines download raw bytes

1import{n as e,r as t,s as n}from"./shim-DcmmWsrO.js";import{A as r,B as i,D as a,E as o,G as s,Hr as c,R as l,U as u,Ur as d,V as f,W as p,Wr as m,X as h,d as g,ft as _,g as ee,h as v,j as y,k as b,lt as x,si as S,u as C,ut as w,y as T,z as E}from"./primitives-CXQxKPHA.js";import{n as D,r as O,t as k}from"./form-field-mbxViHFw.js";import{t as A}from"./useTranslation-BhbItfHC.js";import{t as j}from"./download-4xCJREOl.js";import{i as M,n as te,r as ne,t as N}from"./csv-ApQs2zfh.js";import{t as P}from"./loader-circle-D8T59P_G.js";import{t as F}from"./pencil-CZrRjImy.js";import{t as I}from"./plus-CL0MOHnu.js";import{t as L}from"./trash-BayB7wi5.js";import{t as R}from"./CreatableSelect-4FtdIlXt.js";var z={name:`power-off`,size:24,node:[[`path`,{d:`M18.36 6.64A9 9 0 0 1 20.77 15`,key:`dxknvb`}],[`path`,{d:`M6.16 6.16a9 9 0 1 0 12.68 12.68`,key:`1x7qb5`}],[`path`,{d:`M12 2v4`,key:`3427ic`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]};z.node;var B=c(z),V={name:`power`,size:24,node:[[`path`,{d:`M12 2v10`,key:`mnfbl`}],[`path`,{d:`M18.4 6.6a9 9 0 1 1-12.77.04`,key:`obofu9`}]]};V.node;var H=c(V),U={expense:`expense-categories`,income:`income-categories`,location:`location-categories`,asset:`asset-categories`},W=(e,t)=>`orgs/${encodeURIComponent(e)}/${U[t]}`,G=async(e,t,n={})=>w.get(W(t,e),{searchParams:{...n.q?{q:n.q}:{},...n.isActive===void 0?{}:{is_active:String(n.isActive)},...n.limit?{limit:n.limit}:{},...n.offset?{offset:n.offset}:{}}}).json(),K=async(e,t,n)=>w.post(W(t,e),{json:n}).json(),re=async(e,t,n,r)=>w.patch(`${W(t,e)}/${encodeURIComponent(n)}`,{json:r}).json(),ie=async(e,t,n)=>{await w.delete(`${W(t,e)}/${encodeURIComponent(n)}`)},q=(e,t,n={})=>m({queryKey:[`categories`,e,t,n],queryFn:()=>G(e,t,n),staleTime:3e4,enabled:!!t}),J=e=>{let t=S();return d({mutationFn:({orgSlug:t,input:n})=>K(e,t,n),onSuccess:(n,{orgSlug:r})=>{t.invalidateQueries({queryKey:[`categories`,e,r]})}})},Y=e=>{let t=S();return d({mutationFn:({orgSlug:t,id:n,input:r})=>re(e,t,n,r),onSuccess:(n,{orgSlug:r})=>{t.invalidateQueries({queryKey:[`categories`,e,r]})}})},ae=e=>{let t=S();return d({mutationFn:({orgSlug:t,id:n})=>ie(e,t,n),onSuccess:(n,{orgSlug:r})=>{t.invalidateQueries({queryKey:[`categories`,e,r]})}})},X={expense:`settings.expenseCategories`,income:`settings.incomeCategories`,location:`settings.locationCategories`,asset:`settings.assetCategories`},Z=n(t(),1),Q=e(),oe=({kind:e,formId:t,row:n,onSubmit:r,onStateChange:a})=>{let{t:o}=A(`translation`),s=X[e],c=!!n,d=D({defaultValues:{name:n?.name??``,is_active:n?.is_active??!0},onSubmit:async({value:e})=>{await r({name:e.name.trim(),is_active:e.is_active})}}),p=O(d.store,e=>e.isSubmitting),m=O(d.store,e=>e.isDefaultValue),h=O(d.store,e=>e.submissionAttempts>0);return(0,Z.useEffect)(()=>{a?.({isSubmitting:p,isDefaultValue:m,isEdit:c})},[p,m,c,a]),(0,Q.jsxs)(`form`,{id:t,onSubmit:e=>{e.preventDefault(),d.handleSubmit()},className:`space-y-4`,children:[(0,Q.jsx)(E,{children:(0,Q.jsx)(d.Field,{name:`name`,validators:{onChange:({value:e})=>e.trim().length===0?o(`common.validation.required`):void 0},children:e=>(0,Q.jsxs)(f,{name:`name`,value:e.state.value,onChange:e.handleChange,isInvalid:k(e.state.meta,h).isInvalid,isRequired:!0,children:[(0,Q.jsx)(i,{isRequired:!0,children:o(`${s}.nameLabel`)}),(0,Q.jsx)(u,{type:`text`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),onBlur:e.handleBlur,autoComplete:`off`,autoFocus:!0}),e.state.meta.errors.length>0&&(0,Q.jsx)(l,{children:String(e.state.meta.errors[0])})]})})}),(0,Q.jsx)(d.Field,{name:`is_active`,children:e=>(0,Q.jsxs)(`div`,{className:`flex items-start justify-between gap-6`,children:[(0,Q.jsx)(`div`,{className:`space-y-0.5 min-w-0`,children:(0,Q.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:o(`${s}.isActiveLabel`)})}),(0,Q.jsx)(g,{isSelected:e.state.value,onChange:t=>e.handleChange(t),"aria-label":o(`${s}.isActiveLabel`)})]})})]})},se={expense:`expense-categories`,income:`income-categories`,location:`location-categories`,asset:`asset-categories`},ce=({kind:e,orgSlug:t})=>{let{t:n}=A(`translation`),i=S(),c=X[e],l=se[e],u=q(e,t),d=u.data?.rows??[],f=d.length,m=J(e),h=Y(e),[g,_]=(0,Z.useState)(null),[y,b]=(0,Z.useState)(null),[x,w]=(0,Z.useState)({isSubmitting:!1,isDefaultValue:!0,isEdit:!1}),[T,E]=(0,Z.useState)(null),[D,O]=(0,Z.useState)(!1),k=()=>{b(null),_(`create`)},F=e=>{b(e),_(`edit`)},L=()=>{_(null),b(null)},R=async e=>{try{g===`edit`&&y?(await h.mutateAsync({orgSlug:t,id:y.id,input
1:e}),C.success(n(`${c}.toastUpdated`))):(await m.mutateAsync({orgSlug:t,input:e}),C.success(n(`${c}.toastCreated`))),L()}catch(e){C.error($(e,n,c))}};return(0,Q.jsxs)(`div`,{className:`space-y-6`,children:[(0,Q.jsx)(a,{title:n(`${c}.title`),description:n(`${c}.description`),actions:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`a`,{...te(t,l,f,s({variant:`outline`,size:`sm`})),children:[(0,Q.jsx)(j,{"data-icon":`inline-start`}),n(`common.export`)]}),(0,Q.jsxs)(p,{variant:`outline`,size:`sm`,onPress:()=>O(!0),children:[(0,Q.jsx)(M,{"data-icon":`inline-start`}),n(`common.import`)]})]}),actionsMenuLabel:n(`common.pageActions`),actionsMenu:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(r,{href:f>0?ne(t,l):void 0,isDisabled:f<=0,icon:(0,Q.jsx)(j,{}),children:n(`common.export`)}),(0,Q.jsx)(r,{icon:(0,Q.jsx)(M,{}),onAction:()=>O(!0),children:n(`common.import`)})]}),primaryAction:(0,Q.jsx)(o,{label:n(`${c}.createCta`),icon:I,onPress:k})}),(0,Q.jsx)(`section`,{className:`rounded-lg border border-border bg-card overflow-hidden`,children:u.isLoading?(0,Q.jsx)(`div`,{className:`flex items-center justify-center py-12 text-muted-foreground`,children:(0,Q.jsx)(P,{className:`size-4 animate-spin`})}):d.length===0?(0,Q.jsx)(de,{kind:e,onCreate:k}):(0,Q.jsxs)(`table`,{className:`w-full text-sm`,children:[(0,Q.jsx)(`thead`,{className:`bg-muted/30 text-xs uppercase tracking-wide text-muted-foreground`,children:(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`th`,{className:`text-left font-medium px-5 py-2`,children:n(`${c}.colName`)}),(0,Q.jsx)(`th`,{className:`text-left font-medium px-3 py-2`,children:n(`${c}.colStatus`)}),(0,Q.jsx)(`th`,{className:`px-3 py-2`})]})}),(0,Q.jsx)(`tbody`,{className:`divide-y divide-border`,children:d.map(n=>(0,Q.jsx)(le,{kind:e,orgSlug:t,row:n,onEdit:()=>F(n),onDelete:()=>E(n)},n.id))})]})}),(0,Q.jsx)(ee,{isOpen:g!==null,onOpenChange:e=>{e||L()},title:n(g===`edit`?`${c}.actionEdit`:`${c}.createHeader`),description:g===`edit`&&y?y.name:void 0,isPending:m.isPending||h.isPending,footer:(0,Q.jsx)(v,{formId:`category-drawer-form`,cancelLabel:n(`common.cancel`),submitLabel:x.isEdit?n(`${c}.saveCta`):n(`${c}.createCta`),submittingLabel:x.isEdit?n(`${c}.savingCta`):n(`${c}.creatingCta`),isSubmitting:x.isSubmitting,isSubmitDisabled:x.isEdit&&x.isDefaultValue,onCancel:L}),children:(0,Q.jsx)(oe,{kind:e,formId:`category-drawer-form`,row:y??void 0,onSubmit:R,onStateChange:w},y?.id??`new`)}),(0,Q.jsx)(ue,{kind:e,orgSlug:t,row:T,onClose:()=>E(null)}),(0,Q.jsx)(N,{isOpen:D,onOpenChange:O,orgSlug:t,entity:l,entityTitle:n(`${c}.title`),onImported:()=>{i.invalidateQueries({queryKey:[`categories`,e,t]})}})]})},le=({kind:e,orgSlug:t,row:n,onEdit:i,onDelete:a})=>{let{t:o}=A(`translation`),s=X[e],c=Y(e),l=async()=>{let e={name:n.name,is_active:!n.is_active};
1try{await c.mutateAsync({orgSlug:t,id:n.id,input:e}),C.success(o(`${s}.toastUpdated`))}catch(e){C.error($(e,o,s))}};return(0,Q.jsxs)(`tr`,{children:[(0,Q.jsx)(`td`,{className:`px-5 py-2`,children:(0,Q.jsx)(`div`,{className:`font-medium`,children:n.name})}),(0,Q.jsx)(`td`,{className:`px-3 py-2`,children:(0,Q.jsx)(fe,{isActive:n.is_active,ns:s})}),(0,Q.jsx)(`td`,{className:`px-3 py-2 text-right whitespace-nowrap`,children:(0,Q.jsx)(`div`,{className:`inline-flex justify-end`,children:(0,Q.jsxs)(b,{ariaLabel:o(`${s}.rowActionsLabel`),children:[(0,Q.jsx)(r,{icon:(0,Q.jsx)(F,{}),onAction:i,children:o(`${s}.actionEdit`)}),(0,Q.jsx)(r,{icon:n.is_active?(0,Q.jsx)(B,{}):(0,Q.jsx)(H,{}),isDisabled:c.isPending,onAction:()=>void l(),children:n.is_active?o(`${s}.actionDeactivate`):o(`${s}.actionActivate`)}),(0,Q.jsx)(y,{}),(0,Q.jsx)(r,{destructive:!0,icon:(0,Q.jsx)(L,{}),onAction:a,children:o(`${s}.actionDelete`)})]})})})]})},ue=({kind:e,orgSlug:t,row:n,onClose:r})=>{let{t:i}=A(`translation`),a=X[e],o=ae(e),s=async()=>{if(n)try{await o.mutateAsync({orgSlug:t,id:n.id}),C.success(i(`${a}.toastDeleted`)),r()}catch(e){C.error($(e,i,a)),r()}},c=i;return(0,Q.jsx)(T,{isOpen:n!==null,onOpenChange:e=>!e&&r(),title:c(`${a}.confirmDeleteTitle`,{name:n?.name??``}),description:c(`${a}.confirmDeleteBody`),confirmLabel:c(`${a}.confirmDelete`),destructive:!0,isPending:o.isPending,onConfirm:s})},de=({kind:e,onCreate:t})=>{let{t:n}=A(`translation`),r=X[e];return(0,Q.jsxs)(`div`,{className:`px-6 py-12 text-center space-y-3`,children:[(0,Q.jsx)(`p`,{className:`text-sm text-muted-foreground max-w-xs mx-auto`,children:n(`${r}.empty`)}),(0,Q.jsxs)(p,{variant:`primary`,size:`sm`,onPress:t,children:[(0,Q.jsx)(I,{"data-icon":`inline-start`}),n(`${r}.createCta`)]})]})},fe=({isActive:e,ns:t})=>{let{t:n}=A(`translation`);return(0,Q.jsx)(`span`,{className:_(`inline-flex items-center px-1.5 h-5 rounded`,`text-[10px] font-semibold uppercase tracking-wider leading-none`,e?`bg-emerald-100 text-emerald-900 dark:bg-emerald-500/15 dark:text-emerald-300`:`bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-400`),children:n(e?`${t}.statusActive`:`${t}.statusInactive`)})},$=(e,t,n)=>{let r=e instanceof x?e.code:null;if(r){let e=t;return e(`${n}.errors.${r}`,{defaultValue:e(`${n}.errors.GENERIC`)})}return t(`${n}.errors.GENERIC`)},pe=({kind:e,orgSlug:t,value:n,...r})=>{let{t:i}=A(`translation`),a=X[e],o=q(e,t,{isActive:!0,limit:500,offset:0}),{isAdmin:s}=h(t),c=J(e),l=(0,Z.useMemo)(()=>(o.data?.rows??[]).map(e=>({id:e.id,name:e.name})),[o.data]);return(0,Q.jsx)(R,{...r,value:n??null,items:l,isLoading:o.isLoading,canCreate:s,onCreate:e=>c.mutateAsync({orgSlug:t,input:{name:e,is_active:!0}}).then(e=>({id:e.id,name:e.name})),createLabel:e=>i(`common.picker.create`,{name:e}),createPlaceholder:i(`common.picker.categoryPickOrCreate`),emptyText:i(`${a}.empty`),emptyCreateText:i(`common.picker.categoryEmptyCreate`),createdToast:i(`${a}.toastCreated`),errorMessages:{FORBIDDEN:i(`${a}.errors.FORBIDDEN`),VALIDATION_FAILED:i(`${a}.errors.VALIDATION_FAILED`),GENERIC:i(`${a}.errors.GENERIC`)}})};export{ce as n,q as r,pe as t};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.