import{a as e}from"./rolldown-runtime-CNC7AqOf.js";import{t}from"./react-Augu_vA3.js";import{Dt as n,M as r,Vt as i,Wt as a,_t as o,dt as s,ot as c,q as l,vn as u,zt as d}from"./forms-CL2ODv4X.js";import{t as f}from"./useTranslation-B_YCgyrR.js";import{t as p}from"./jsx-runtime-CTknu7_t.js";import{a as m}from"./cards-CR_9H_Xm.js";import{t as h}from"./useHasPermission-CRA8mdHC.js";import{t as g}from"./Plus-sxGnuR_5.js";var _={global:`global`,bankTransaction:`bank_transaction`,client:`client`,credit:`credit`,expense:`expense`,invoice:`invoice`,payment:`payment`,product:`product`,project:`project`,purchaseOrder:`purchase_order`,quote:`quote`,recurringExpense:`recurring_expense`,recurringInvoice:`recurring_invoice`,task:`task`,transaction:`transaction`,vendor:`vendor`},v=[{labelKey:_.global,value:_.global},{labelKey:_.bankTransaction,value:_.bankTransaction},{labelKey:_.client,value:_.client},{labelKey:_.credit,value:_.credit},{labelKey:_.expense,value:_.expense},{labelKey:_.invoice,value:_.invoice},{labelKey:_.payment,value:_.payment},{labelKey:_.product,value:_.product},{labelKey:_.project,value:_.project},{labelKey:_.purchaseOrder,value:_.purchaseOrder},{labelKey:_.quote,value:_.quote},{labelKey:_.recurringExpense,value:_.recurringExpense},{labelKey:_.recurringInvoice,value:_.recurringInvoice},{labelKey:_.task,value:_.task},{labelKey:_.transaction,value:_.transaction},{labelKey:_.vendor,value:_.vendor}],y=v.map(({value:e})=>e);function b(e){let t=(e?.split(`\\`).pop()||``).replace(/([a-z0-9])([A-Z])/g,`$1_$2`).replace(/[^a-zA-Z0-9]+/g,`_`).toLowerCase().replace(/^_+|_+$/g,``);return y.find(e=>e===t)||(t.includes(_.bankTransaction)?_.bankTransaction:_.global)}function x(){return`#${Math.floor(Math.random()*16777215).toString(16).padStart(6,`0`)}`}function S(e,t={}){return n(`/api/v1/tags?${new URLSearchParams({entity_type:e,...t}).toString()}`)}function C(e,t){let{isAdmin:n}=h();return a([`/api/v1/tags`,e,`create`],()=>Promise.resolve({id:``,entity_type:e,name:``,color:null,is_deleted:!1,archived_at:0,created_at:0,updated_at:0}),{...t,staleTime:1/0,enabled:n?t?.enabled??!0:!1})}function w(e){return a([`/api/v1/tags`,e.entityType],()=>d(`GET`,S(e.entityType,{sort:`name|asc`,per_page:`1000`})).then(e=>e.data),{staleTime:1/0,enabled:e.enabled??!0})}function T(e){return a([`/api/v1/tags`,e.id],()=>d(`GET`,n(`/api/v1/tags/:id`,{id:e.id})),{staleTime:1/0,enabled:!!e.id})}function E(){return(e,t)=>{u.processing(),d(`POST`,n(`/api/v1/tags/bulk`),{action:t,ids:[e]}).then(()=>{u.success(`${t}d_tag`),i([`tags`])})}}var D=e(s()),O=e(p());function k(e){return!e.is_deleted&&!e.archived_at}function A(e){return e.color||`#64748b`}function j(e){let t=A(e);return/^#[0-9a-fA-F]{3}$/.test(t)?`#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}1f`:/^#[0-9a-fA-F]{6}$/.test(t)?`${t}1f`:`transparent`}function M(e){let t=o(),n=e.tags||[];return n.length?(0,O.jsx)(`div`,{className:(0,D.default)(`flex max-w-xs flex-wrap gap-1`,e.className),children:n.map(e=>(0,O.jsxs)(`span`,{className:`inline-flex h-6 max-w-full items-center gap-1 rounded-full border px-2 text-xs font-medium`,style:{backgroundColor:j(e),borderColor:A(e),color:t.$3},children:[(0,O.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:A(e)}}),(0,O.jsx)(`span`,{className:`truncate`,children:e.name})]},e.id))}):null}var N=e(t());function P(e){let[t]=f(),a=o(),{isAdmin:s}=h(),[p,_]=(0,N.useState)(``),[v,y]=(0,N.useState)(!1),[b,S]=(0,N.useState)(!1),C=(0,N.useRef)(null),{data:T,isLoading:E,refetch:M}=w({entityType:e.entityType}),P=e.value||[],F=(0,N.useMemo)(()=>P.map(e=>e.id),[P]),I=(0,N.useMemo)(()=>(T?.data||[]).filter(k),[T]),L=p.trim().toLowerCase(),R=p.trim(),z=(0,N.useMemo)(()=>I.some(e=>e.name.trim().toLowerCase()===L),[I,L]),B=s&&!!R&&!z&&!b&&!E,V=(0,N.useMemo)(()=>I.filter(e=>!F.includes(e.id)).filter(e=>e.name.toLowerCase().includes(p.toLowerCase())),[I,p,F]);m(C,()=>y(!1));let H=e=>{_(e.target.value),y(!0)},U=t=>{e.onChange([...P,t]),_(``),y(!1)},W=t=>{e.onChange(P.filter(e=>e.id!==t.id))};return(0,O.jsxs)(`div`,{ref:C,className:(0,D.default)(`w-full`,e.className),children:[e.label&&(0,O.jsx)(c,{className:`mb-1`,children:e.label}),(0,O.jsxs)(`div`,{className:(0,D.default)(`relative min-h-[2.375rem] w-full rounded-md border px-2 py-1.5 text-sm`,{"opacity-75":e.readonly}),style:{backgroundColor:a.$1,borderColor:a.$20},children:[(0,O.jsxs)(`div`,{className:`flex min-h-[1.5rem] flex-wrap items-center gap-1.5`,children:[P.map(n=>(0,O.jsxs)(`span`,{className:`inline-flex h-6 max-w-full items-center gap-1 rounded-full border px-2 text-xs font-medium`,style:{backgroundColor:j(n),borderColor:A(n),color:a.$3},children:[(0,O.jsx)(`span`,{className:`h-2 w-2 shrink-0 rounded-full`,style:{backgroundColor:A(n)}}),(0,O.jsx)(`span`,{className:`truncate`,children:n.name}),!e.readonly&&(0,O.jsx)(`button`,{type:`button`,className:`ml-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full focus:outline-none`,onClick:()=>W(n),"aria-label":String(t(`delete`)),children:(0,O.jsx)(r,{size:`0.55rem`,color:a.$3})})]},n.id)),!e.readonly&&(0,O.jsx)(`input`,{"data-cy":`tagSelectorInput`,className:`min-w-[8rem] flex-1 border-0 bg-transparent p-0 text-sm focus:outline-none focus:ring-0`,style:{color:a.$3},value:p,placeholder:P.length?``:String(t(`search`)),onChange:H,onFocus:()=>y(!0)})]}),v&&!e.readonly&&(0,O.jsxs)(`div`,{className:`absolute left-0 right-0 z-20 mt-2 max-h-56 overflow-y-auto rounded-md border p-1 shadow-2xl`,style:{backgroundColor:a.$1,borderColor:a.$24},children:[V.map(e=>(0,O.jsxs)(`button`,{"data-cy":`tagOption`,type:`button`,className:`flex w-full items-center gap-2 rounded-[0.1875rem] px-3 py-2 text-left text-sm`,style:{color:a.$3},onClick:()=>U(e),children:[(0,O.jsx)(`span`,{className:`h-2.5 w-2.5 shrink-0 rounded-full`,style:{backgroundColor:A(e)}}),(0,O.jsx)(`span`,{className:`truncate`,children:e.name})]},e.id)),B&&(0,O.jsxs)(`button`,{"data-cy":`createTagOption`,type:`button`,className:`flex w-full items-center gap-2 rounded-[0.1875rem] px-3 py-2 text-left text-sm font-medium`,style:{color:a.$3},onClick:()=>{B&&(u.processing(),S(!0),d(`POST`,n(`/api/v1/tags`),{entity_type:e.entityType,name:R,color:x()}).then(t=>{u.success(`created_tag`),e.onChange([...P,t.data.data]),_(``),y(!1),M(),i([`tags`])}).catch(e=>{e.response?.status===422&&u.dismiss()}).finally(()=>S(!1)))},children:[(0,O.jsx)(g,{size:`0.85rem`,color:a.$16}),(0,O.jsxs)(`span`,{children:[t(`create`),` `,(0,O.jsx)(`q`,{children:R})]})]}),!V.length&&!B&&(0,O.jsxs)(`div`,{className:`px-3 py-2 text-sm font-medium`,style:{color:a.$17},children:[t(`no_records_found`),`.`]})]})]}),(0,O.jsx)(l,{className:`mt-2`,children:e.errorMessage})]})}export{E as a,x as c,y as d,b as f,C as i,_ as l,M as n,T as o,k as r,w as s,P as t,v as u};