kanbase 0.0.8 → 0.0.9
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.
Potentially problematic release.
This version of kanbase might be problematic. Click here for more details.
- package/dist/kanbase.es.js +544 -1525
- package/dist/kanbase.es.js.map +1 -1
- package/dist/kanbase.umd.js +1 -1
- package/dist/kanbase.umd.js.map +1 -1
- package/package.json +1 -1
package/dist/kanbase.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(h,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("react/jsx-runtime"),require("@dnd-kit/core"),require("@dnd-kit/sortable"),require("@tanstack/react-virtual"),require("lucide-react"),require("react"),require("clsx"),require("tailwind-merge"),require("zustand"),require("zustand/middleware"),require("@dnd-kit/utilities"),require("@radix-ui/react-dialog"),require("@radix-ui/react-slot"),require("class-variance-authority")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@dnd-kit/core","@dnd-kit/sortable","@tanstack/react-virtual","lucide-react","react","clsx","tailwind-merge","zustand","zustand/middleware","@dnd-kit/utilities","@radix-ui/react-dialog","@radix-ui/react-slot","class-variance-authority"],t):(h=typeof globalThis<"u"?globalThis:h||self,t(h.Kanbase={},h.jsxRuntime,h.DndKitCore,h.DndKitSortable,h.TanStackVirtual,h.LucideReact,h.React,h.clsx,h.tailwindMerge,h.Zustand,h.middleware,h.DndKitUtilities,h.RadixUIDialog,h.RadixUISlot,h.ClassVarianceAuthority))})(this,(function(h,t,I,H,te,v,p,re,ae,Se,De,le,Ae,Ee,ne){"use strict";function se(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const a in r)if(a!=="default"){const l=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,l.get?l:{enumerable:!0,get:()=>r[a]})}}return e.default=r,Object.freeze(e)}const j=se(p),w=se(Ae);function E(...r){return ae.twMerge(re.clsx(r))}const U=()=>`${Date.now()}-${Math.random().toString(36).substr(2,9)}`,q=Se.create()(De.devtools(r=>({cards:{},columns:{},columnOrder:[],config:{},activeId:null,viewingCardId:null,editingCardId:null,addingCardInColumnId:null,editingColumnId:null,filters:{searchQuery:"",groups:[],quickFilters:[]},addCard:(e,a)=>{const l=U(),s={id:l,...a};return r(n=>{const i=n.columns[e];return i?{cards:{...n.cards,[l]:s},columns:{...n.columns,[e]:{...i,cardIds:[...i.cardIds,l]}}}:n}),l},updateCard:(e,a)=>r(l=>{const s=l.cards[e];return s?{cards:{...l.cards,[e]:{...s,...a}}}:l}),deleteCard:e=>r(a=>{const{[e]:l,...s}=a.cards,n={...a.columns};return Object.keys(n).forEach(i=>{n[i]={...n[i],cardIds:n[i].cardIds.filter(u=>u!==e)}}),{cards:s,columns:n}}),duplicateCard:e=>{let a="";return r(l=>{const s=l.cards[e];if(!s)return l;const n=Object.keys(l.columns).find(o=>l.columns[o].cardIds.includes(e));if(!n)return l;a=U();const i={...s,id:a,title:`${s.title} (copy)`},u=l.columns[n],c=u.cardIds.indexOf(e),d=[...u.cardIds];return d.splice(c+1,0,a),{cards:{...l.cards,[a]:i},columns:{...l.columns,[n]:{...u,cardIds:d}}}}),a},addColumn:(e,a)=>{const l=U(),s={id:l,...e,cardIds:[]};return r(n=>{const i=[...n.columnOrder],u=a??i.length;return i.splice(u,0,l),{columns:{...n.columns,[l]:s},columnOrder:i}}),l},updateColumn:(e,a)=>r(l=>{const s=l.columns[e];return s?{columns:{...l.columns,[e]:{...s,...a}}}:l}),deleteColumn:(e,a)=>r(l=>{const s=l.columns[e];if(!s)return l;const{[e]:n,...i}=l.columns,u=l.columnOrder.filter(o=>o!==e);let c={...l.cards},d={...i};if(a&&d[a]){const o=d[a];d[a]={...o,cardIds:[...o.cardIds,...s.cardIds]},s.cardIds.forEach(g=>{c[g]&&(c[g]={...c[g],previousColumnId:e})})}else{const o=u.length>0?u[0]:null;s.cardIds.forEach(g=>{const f=c[g];if(!f)return;const b=f.previousColumnId&&d[f.previousColumnId]?f.previousColumnId:o;if(b&&d[b]){const m=d[b];d[b]={...m,cardIds:[...m.cardIds,g]},c[g]={...f}}else delete c[g]})}return{cards:c,columns:d,columnOrder:u}}),moveCard:(e,a,l,s)=>r(n=>{const i=n.columns[a],u=n.columns[l];if(!i||!u)return n;const c=i.cardIds.filter(g=>g!==e);if(a===l)return c.splice(s,0,e),{...n,columns:{...n.columns,[a]:{...i,cardIds:c}}};const d=[...u.cardIds];d.splice(s,0,e);const o={...n.cards[e],previousColumnId:a};return{...n,cards:{...n.cards,[e]:o},columns:{...n.columns,[a]:{...i,cardIds:c},[l]:{...u,cardIds:d}}}}),moveColumn:(e,a)=>r(l=>{const s=l.columnOrder.filter(n=>n!==e);return s.splice(a,0,e),{...l,columnOrder:s}}),addColumnWithCard:(e,a,l)=>r(s=>{const n=s.columns[a],i=s.cards[e];if(!n||!i)return s;const u=U(),c={id:u,...l,cardIds:[e]},d=n.cardIds.filter(f=>f!==e),o=Array.from(s.columnOrder);o.push(u);const g={...i,previousColumnId:a};return{...s,cards:{...s.cards,[e]:g},columns:{...s.columns,[a]:{...n,cardIds:d},[u]:c},columnOrder:o}}),setSearchQuery:e=>r(a=>({filters:{...a.filters,searchQuery:e}})),addFilterGroup:e=>r(a=>({filters:{...a.filters,groups:[...a.filters.groups,e]}})),updateFilterGroup:(e,a)=>r(l=>({filters:{...l.filters,groups:l.filters.groups.map(s=>s.id===e?{...s,...a}:s)}})),removeFilterGroup:e=>r(a=>({filters:{...a.filters,groups:a.filters.groups.filter(l=>l.id!==e)}})),removeFilterRule:(e,a)=>r(l=>({filters:{...l.filters,groups:l.filters.groups.map(s=>s.id!==e?s:{...s,rules:s.rules.filter(n=>!("id"in n)||n.id!==a)})}})),setFilters:e=>r({filters:e}),clearFilters:()=>r(e=>({filters:{...e.filters,groups:[],searchQuery:""}})),setBoardData:e=>r({...e}),setConfig:e=>r(a=>({config:{...a.config,...e}})),setActiveId:e=>r({activeId:e}),setViewingCardId:e=>r({viewingCardId:e}),clearViewingCardId:()=>r({viewingCardId:null}),setEditingCardId:e=>r({editingCardId:e}),clearEditingCardId:()=>r({editingCardId:null}),setAddingCardInColumnId:e=>r({addingCardInColumnId:e}),clearAddingCardInColumnId:()=>r({addingCardInColumnId:null}),setEditingColumnId:e=>r({editingColumnId:e}),clearEditingColumnId:()=>r({editingColumnId:null}),clearBoard:()=>r({cards:{},columns:{},columnOrder:[],filters:{searchQuery:"",groups:[],quickFilters:[]}})})));function oe(r){const e=q(),[a,l]=p.useState(null),[s,n]=p.useState(null),[i,u]=p.useState(null),c=p.useCallback(f=>{l(f)},[]),d=p.useCallback((f,b)=>{n(f),u(b??null)},[]),o=p.useCallback(()=>{l(null),n(null),u(null)},[]),g=p.useCallback((f,b,m,C)=>{e.moveCard(f,b,m,C),r?.onCardMove?.(f,b,m,C)},[e,r]);return{...e,activeId:a,overId:s,overSide:i,viewingCardId:e.viewingCardId,editingCardId:e.editingCardId,addingCardInColumnId:e.addingCardInColumnId,editingColumnId:e.editingColumnId,setViewingCardId:e.setViewingCardId,clearViewingCardId:e.clearViewingCardId,handleDragStart:c,handleDragOver:d,handleDragEnd:o,moveCard:g,addCard:e.addCard,updateCard:e.updateCard,deleteCard:e.deleteCard,duplicateCard:e.duplicateCard,setEditingCardId:e.setEditingCardId,clearEditingCardId:e.clearEditingCardId,setAddingCardInColumnId:e.setAddingCardInColumnId,clearAddingCardInColumnId:e.clearAddingCardInColumnId,addColumn:e.addColumn,addColumnWithCard:e.addColumnWithCard,updateColumn:e.updateColumn,deleteColumn:e.deleteColumn,moveColumn:e.moveColumn,setEditingColumnId:e.setEditingColumnId,clearEditingColumnId:e.clearEditingColumnId,clearBoard:e.clearBoard,config:{dragActivationDistance:r?.dragActivationDistance??10,touchActivationDelay:r?.touchActivationDelay??250,virtualOverscan:r?.virtualOverscan??5,estimatedCardHeight:r?.estimatedCardHeight??90,columnWidth:r?.columnWidth??320,columnMinHeight:r?.columnMinHeight??500,gap:r?.gap??16,allowAdd:r?.allowAdd??!1,allowEdit:r?.allowEdit??!1,allowColumnAdd:r?.allowColumnAdd??!1,allowColumnEdit:r?.allowColumnEdit??!1,allowColumnDelete:r?.allowColumnDelete??!1,allowColumnReorder:r?.allowColumnReorder??!1,allowFilters:r?.allowFilters??!0,showURLSync:r?.showURLSync??!1}}}function ke({dragActivationDistance:r,touchActivationDelay:e,onDragStart:a,onDragOver:l,onDragEnd:s,onCardMove:n,onColumnMove:i,onCreateColumnWithCard:u,columns:c,columnOrder:d,recentlyMovedToNewContainer:o}){const g=p.useRef(c),f=p.useRef(d);p.useEffect(()=>{g.current=c,f.current=d},[c,d]);const b=p.useRef(null);return{sensors:I.useSensors(I.useSensor(I.MouseSensor,{activationConstraint:{distance:r}}),I.useSensor(I.TouchSensor,{activationConstraint:{delay:e,tolerance:5}}),I.useSensor(I.KeyboardSensor)),handleDragStart:x=>{const F=x.active.data.current?.type||"Card";b.current=null,a(x.active.id,F)},handleDragOver:x=>{const{active:D,over:F}=x,V=D.data.current?.type||"Card",O=g.current,ye=f.current;if(!F){l(null),b.current=null;return}const T=D.id,z=F.id,W=F.rect,Q=D.rect.current.translated;let K=null;if(Q&&W)if(V==="Column"){const A=W.left+W.width/2;K=Q.left+Q.width/2<A?"left":"right"}else{const A=W.top+W.height/2;K=Q.top+Q.height/2<A?"top":"bottom"}if(l(z,K),V==="Column"){let A=z;if(!O[z]){const Ie=Object.values(O).find(ht=>ht.cardIds.includes(z));Ie&&(A=Ie.id)}const L=ye.indexOf(A),Ne=ye.indexOf(T);L!==-1&&Ne!==-1&&Ne!==L&&(i(T,L),b.current&&(b.current.targetIndex=L));return}if(z==="new-column-drop-target"){const A=Object.values(O).find(L=>L.cardIds.includes(T));A&&(b.current={type:"NewColumn",activeId:T,sourceColumnId:A.id,targetIndex:0});return}const B=Object.values(O).find(A=>A.cardIds.includes(T));if(!B)return;if(O[z]){B.id!==z?(o&&(o.current=!0),b.current={type:"Card",activeId:T,sourceColumnId:B.id,targetColumnId:z,targetIndex:O[z].cardIds.length,side:"bottom"}):b.current=null;return}const Y=Object.values(O).find(A=>A.cardIds.includes(z));if(!Y)return;const Z=Y.cardIds.indexOf(z),gt=K==="bottom"?Z+1:Z;B.id!==Y.id?(o&&(o.current=!0),b.current={type:"Card",activeId:T,sourceColumnId:B.id,targetColumnId:Y.id,targetIndex:gt,side:K}):B.cardIds.indexOf(T)!==Z&&(b.current={type:"Card",activeId:T,sourceColumnId:B.id,targetColumnId:B.id,targetIndex:Z,side:K})},handleDragEnd:()=>{if(b.current){const x=b.current;x.type==="NewColumn"&&x.sourceColumnId&&u?u(x.activeId,x.sourceColumnId):x.type==="Card"&&x.sourceColumnId&&x.targetColumnId?n(x.activeId,x.sourceColumnId,x.targetColumnId,x.targetIndex):x.type==="Column"&&i(x.activeId,x.targetIndex)}b.current=null,s()}}}function de(r,e){if(e.searchQuery){const a=e.searchQuery.toLowerCase(),l=r.title?.toLowerCase().includes(a),s=r.description?.toLowerCase().includes(a),n=r.metadata&&Object.values(r.metadata).some(i=>String(i).toLowerCase().includes(a));if(!l&&!s&&!n)return!1}return e.groups.length===0?!0:e.groups.every(a=>a.enabled?R(r,a):!0)}function R(r,e){const{conjunction:a,rules:l}=e;return l.length===0?!0:a==="and"?l.every(s=>"conjunction"in s?R(r,s):ie(r,s)):l.some(s=>"conjunction"in s?R(r,s):ie(r,s))}function ie(r,e){if(!e.field||!e.enabled)return!0;const a=Fe(r,e.field),l=e.value;switch(e.operator){case"eq":return a===l;case"neq":return a!==l;case"contains":return String(a||"").toLowerCase().includes(String(l||"").toLowerCase());case"notContains":return!String(a||"").toLowerCase().includes(String(l||"").toLowerCase());case"gt":return Number(a)>Number(l);case"gte":return Number(a)>=Number(l);case"lt":return Number(a)<Number(l);case"lte":return Number(a)<=Number(l);case"isEmpty":return!a||Array.isArray(a)&&a.length===0;case"isNotEmpty":return!!a&&(!Array.isArray(a)||a.length>0);default:return!0}}function Fe(r,e){return e.split(".").reduce((a,l)=>a&&a[l],r)}function k(...r){return ae.twMerge(re.clsx(r))}const ce=p.memo(({card:r,isDragging:e})=>{const{tags:a,members:l,commentsCount:s,attachmentsCount:n,dueDate:i,priority:u}=r.metadata||{},c={high:"bg-red-500",medium:"bg-amber-500",low:"bg-emerald-500"};return t.jsxs("div",{className:k("group relative bg-card-bg rounded-card border border-card-border p-3","shadow-card transition-all duration-200 cursor-pointer select-none","hover:shadow-card-hover hover:-translate-y-0.5 hover:border-slate-300",e&&"opacity-50 grayscale-[0.5] scale-[1.02] shadow-xl border-blue-400 ring-1 ring-blue-400 rotate-2 z-50",u&&"pl-4"),children:[u&&t.jsx("div",{className:k("absolute left-0 top-3 bottom-3 w-1 rounded-r-full",c[u]||"bg-slate-300")}),t.jsxs("div",{className:"flex flex-col gap-2.5",children:[a&&a.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1 mb-0.5",children:a.map((d,o)=>t.jsx("span",{className:k("px-2 py-0.5 rounded-full text-[10px] font-semibold tracking-tight",d.color||"bg-slate-100 text-slate-600"),children:d.name},o))}),t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsx("h4",{className:"text-sm font-semibold text-slate-800 leading-snug group-hover:text-slate-900 transition-colors",children:r.title}),t.jsx("button",{className:"opacity-0 group-hover:opacity-100 transition-opacity p-1 hover:bg-slate-100 rounded text-slate-400 hover:text-slate-600 -mr-1 -mt-1",children:t.jsx(v.MoreHorizontal,{size:14})})]}),r.description&&t.jsx("p",{className:"text-xs text-slate-500 line-clamp-2 leading-relaxed font-medium",children:r.description}),(l||s||n||i)&&t.jsxs("div",{className:"flex items-center justify-between mt-1 pt-2.5 border-t border-slate-100/80",children:[t.jsx("div",{className:"flex items-center",children:l&&l.length>0?t.jsxs("div",{className:"flex -space-x-2 overflow-hidden py-0.5 pl-0.5",children:[l.map((d,o)=>t.jsx("div",{className:"h-6 w-6 rounded-full border-2 border-white bg-slate-200 flex items-center justify-center text-[9px] font-bold text-slate-600 ring-1 ring-slate-100",title:d.name,children:d.avatar?t.jsx("img",{src:d.avatar,alt:d.name,className:"w-full h-full rounded-full object-cover"}):d.initials},o)),l.length>3&&t.jsxs("div",{className:"h-6 w-6 rounded-full border-2 border-white bg-slate-50 flex items-center justify-center text-[9px] font-bold text-slate-400",children:["+",l.length-3]})]}):t.jsx("div",{})}),t.jsxs("div",{className:"flex items-center gap-3 text-slate-400",children:[i&&t.jsxs("div",{className:k("flex items-center gap-1 text-[10px] font-medium",new Date(i)<new Date?"text-red-500":"text-slate-400"),children:[t.jsx(v.Calendar,{size:12}),t.jsx("span",{children:new Date(i).toLocaleDateString(void 0,{month:"short",day:"numeric"})})]}),s>0&&t.jsxs("div",{className:"flex items-center gap-1 text-[10px] font-medium hover:text-slate-600 transition-colors",children:[t.jsx(v.MessageSquare,{size:12}),t.jsx("span",{children:s})]}),n>0&&t.jsxs("div",{className:"flex items-center gap-1 text-[10px] font-medium hover:text-slate-600 transition-colors",children:[t.jsx(v.Paperclip,{size:12}),t.jsx("span",{children:n})]})]})]})]})]})},(r,e)=>r.card.id===e.card.id&&r.card.title===e.card.title&&r.card.description===e.card.description&&r.isDragging===e.isDragging&&JSON.stringify(r.card.metadata)===JSON.stringify(e.card.metadata));ce.displayName="DefaultCard";const ue=p.memo(()=>t.jsx("div",{className:"flex items-center justify-center h-32 text-slate-400 text-sm",children:"Arraste cards aqui"}));ue.displayName="DefaultColumnEmpty";const me=p.memo(({column:r,cardCount:e,isOver:a,dragHandleProps:l,onAddCard:s,onEditColumn:n})=>t.jsxs("div",{className:k("px-3 py-3 flex items-center justify-between transition-colors mb-2 rounded-t-xl select-none group/header",a?"bg-blue-50/80":"bg-transparent"),children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[l&&t.jsx("div",{...l.attributes,...l.listeners,onClick:i=>i.stopPropagation(),className:"cursor-grab active:cursor-grabbing text-slate-400 hover:text-slate-600 p-0.5 rounded hover:bg-slate-200/50 transition-colors",children:t.jsx(v.GripVertical,{size:14})}),t.jsx("h3",{className:"font-semibold text-sm text-slate-700 truncate tracking-tight flex-1",children:r.title}),t.jsx("span",{className:"text-[10px] bg-slate-200/50 border border-slate-200 px-2 py-0.5 rounded-full text-slate-500 font-bold tabular-nums",children:e})]}),t.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover/header:opacity-100 transition-opacity",children:[s&&t.jsx("button",{onClick:s,className:"p-1 hover:bg-slate-200/50 rounded text-slate-400 hover:text-slate-600 transition-colors",title:"Adicionar Card",children:t.jsx(v.Plus,{size:14})}),n&&t.jsx("button",{onClick:n,className:"p-1 hover:bg-slate-200/50 rounded text-slate-400 hover:text-slate-600 transition-colors",title:"Editar Coluna",children:t.jsx(v.MoreHorizontal,{size:14})})]})]}));me.displayName="DefaultColumnHeader";const _=w.Root,Oe=w.Portal,pe=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Overlay,{ref:a,className:E("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...e}));pe.displayName=w.Overlay.displayName;const $=j.forwardRef(({className:r,children:e,...a},l)=>t.jsxs(Oe,{children:[t.jsx(pe,{}),t.jsxs(w.Content,{ref:l,className:E("fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-48% data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-48% sm:rounded-lg",r),...a,children:[e,t.jsxs(w.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[t.jsx(v.X,{className:"h-4 w-4"}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));$.displayName=w.Content.displayName;const P=({className:r,...e})=>t.jsx("div",{className:E("flex flex-col space-y-1.5 text-center sm:text-left",r),...e});P.displayName="DialogHeader";const X=({className:r,...e})=>t.jsx("div",{className:E("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",r),...e});X.displayName="DialogFooter";const G=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Title,{ref:a,className:E("text-lg font-semibold leading-none tracking-tight",r),...e}));G.displayName=w.Title.displayName;const J=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Description,{ref:a,className:E("text-sm text-muted-foreground",r),...e}));J.displayName=w.Description.displayName;const ze=ne.cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),N=j.forwardRef(({className:r,variant:e,size:a,asChild:l=!1,...s},n)=>{const i=l?Ee.Slot:"button";return t.jsx(i,{className:E(ze({variant:e,size:a,className:r})),ref:n,...s})});N.displayName="Button";function je({card:r,onSave:e,onCancel:a,onDelete:l}){const[s,n]=p.useState(r.title||""),[i,u]=p.useState(r.description||""),c=d=>{d.preventDefault(),e({title:s,description:i})};return t.jsx(_,{open:!0,onOpenChange:d=>!d&&a(),children:t.jsxs($,{className:"sm:max-w-[425px]",children:[t.jsxs(P,{children:[t.jsx(G,{children:"Editar Card"}),t.jsx(J,{children:"Faça alterações no card aqui. Clique em salvar quando terminar."})]}),t.jsxs("form",{onSubmit:c,className:"grid gap-4 py-4",children:[t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"title",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Título"}),t.jsx("input",{id:"title",autoFocus:!0,value:s,onChange:d=>n(d.target.value),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",placeholder:"Digite o título..."})]}),t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"desc",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Descrição"}),t.jsx("textarea",{id:"desc",value:i,onChange:d=>u(d.target.value),rows:4,className:"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 resize-none",placeholder:"Adicione uma descrição..."})]}),t.jsxs(X,{className:"flex items-center justify-between w-full sm:justify-between",children:[l&&t.jsxs(N,{type:"button",variant:"destructive",size:"sm",onClick:l,className:"gap-2",children:[t.jsx(v.Trash2,{size:14}),"Excluir"]}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(N,{type:"button",variant:"outline",onClick:a,children:"Cancelar"}),t.jsxs(N,{type:"submit",className:"gap-2",children:[t.jsx(v.Save,{size:14}),"Salvar"]})]})]})]})]})})}const Me=p.memo(({card:r,onClose:e})=>{const{priority:a,tags:l,members:s,dueDate:n,...i}=r.metadata||{},c=a&&{high:{label:"Alta",color:"text-red-700",bg:"bg-red-50 border-red-200"},medium:{label:"Média",color:"text-amber-700",bg:"bg-amber-50 border-amber-200"},low:{label:"Baixa",color:"text-emerald-700",bg:"bg-emerald-50 border-emerald-200"}}[a];return t.jsx(_,{open:!0,onOpenChange:d=>!d&&e(),children:t.jsxs($,{className:"sm:max-w-2xl p-0 gap-0 overflow-hidden bg-white",children:[c&&t.jsx("div",{className:k("h-1.5 w-full",c.bg.split(" ")[0],c.bg.replace("bg-","bg-opacity-100"))}),t.jsxs("div",{className:"flex flex-col h-full max-h-[85vh]",children:[t.jsx(P,{className:"p-6 pb-4",children:t.jsxs("div",{className:"flex items-start gap-4",children:[t.jsx("div",{className:"mt-1 p-2 bg-slate-100 rounded-lg text-slate-500",children:t.jsx(v.AlignLeft,{size:20})}),t.jsxs("div",{className:"space-y-1 flex-1",children:[t.jsx(G,{className:"text-xl font-bold text-slate-900 leading-tight",children:r.title}),t.jsx("p",{className:"text-xs text-slate-400 font-medium uppercase tracking-wider",children:r.id})]}),c&&t.jsx("div",{className:k("px-3 py-1 rounded-full text-xs font-bold border uppercase tracking-wide",c.color,c.bg),children:c.label})]})}),t.jsxs("div",{className:"flex-1 overflow-y-auto p-6 pt-0 grid md:grid-cols-[1fr,240px] gap-8",children:[t.jsxs("div",{className:"space-y-6",children:[t.jsxs("div",{className:"space-y-3",children:[t.jsx("h4",{className:"text-sm font-semibold text-slate-900 flex items-center gap-2",children:"Descrição"}),t.jsx("div",{className:k("text-sm text-slate-600 leading-relaxed p-4 rounded-lg border border-slate-100 bg-slate-50/50 min-h-[100px]",!r.description&&"italic text-slate-400 flex items-center justify-center"),children:r.description||"Nenhuma descrição fornecida."})]}),r.content&&t.jsxs("div",{className:"space-y-3",children:[t.jsx("h4",{className:"text-sm font-semibold text-slate-900",children:"Conteúdo Detalhado"}),t.jsx("pre",{className:"text-xs font-mono bg-slate-900 text-slate-50 p-4 rounded-lg overflow-x-auto shadow-inner",children:typeof r.content=="object"?JSON.stringify(r.content,null,2):r.content})]})]}),t.jsxs("div",{className:"space-y-6",children:[n&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.Calendar,{size:12})," Data de Entrega"]}),t.jsx("div",{className:"text-sm font-medium text-slate-900 bg-slate-50 px-3 py-2 rounded-md border border-slate-200",children:new Date(n).toLocaleDateString()})]}),s&&Array.isArray(s)&&s.length>0&&t.jsxs("div",{className:"space-y-2",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.User,{size:12})," Membros"]}),t.jsx("div",{className:"flex flex-col gap-2",children:s.map((d,o)=>t.jsxs("div",{className:"flex items-center gap-2 text-sm text-slate-700 bg-white p-1.5 rounded-md border border-slate-100 shadow-sm",children:[t.jsx("div",{className:"h-6 w-6 rounded-full bg-slate-200 flex items-center justify-center text-[10px] font-bold overflow-hidden shrink-0",children:d.avatar?t.jsx("img",{src:d.avatar,alt:d.name,className:"w-full h-full object-cover"}):d.initials}),t.jsx("span",{className:"truncate",children:d.name})]},o))})]}),l&&Array.isArray(l)&&l.length>0&&t.jsxs("div",{className:"space-y-2",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.Tag,{size:12})," Tags"]}),t.jsx("div",{className:"flex flex-wrap gap-1.5",children:l.map((d,o)=>t.jsx("span",{className:k("px-2.5 py-1 rounded-md text-xs font-semibold border shadow-sm",d.color?`bg-${d.color}-50 text-${d.color}-700 border-${d.color}-200`:"bg-slate-100 text-slate-700 border-slate-200"),children:d.name},o))})]}),Object.keys(i).length>0&&t.jsxs("div",{className:"space-y-3 pt-4 border-t border-slate-100",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.Info,{size:12})," Outros Detalhes"]}),t.jsx("div",{className:"grid gap-3",children:Object.entries(i).map(([d,o])=>t.jsxs("div",{className:"group",children:[t.jsx("dt",{className:"text-[10px] font-bold text-slate-400 uppercase mb-0.5 group-hover:text-slate-600 transition-colors",children:d.replace(/([A-Z])/g," $1")}),t.jsx("dd",{className:"text-sm font-medium text-slate-800 break-words",children:typeof o=="boolean"?o?t.jsx("span",{className:"inline-flex items-center gap-1 text-emerald-600 bg-emerald-50 px-2 py-0.5 rounded text-xs",children:"Sim"}):t.jsx("span",{className:"text-slate-400",children:"Não"}):String(o)})]},d))})]})]})]}),t.jsx("div",{className:"p-4 border-t border-slate-100 bg-slate-50/50 flex justify-end",children:t.jsx(N,{variant:"outline",onClick:e,className:"hover:bg-white hover:text-slate-900 transition-colors",children:"Fechar Visualização"})})]})]})})});function Te(){const{filters:r,removeFilterRule:e,clearFilters:a}=q(),l=r.groups.flatMap(s=>s.rules.filter(n=>!("conjunction"in n)&&n.enabled).map(n=>({groupId:s.id,rule:n})));return l.length===0&&!r.searchQuery?null:t.jsxs("div",{className:"flex flex-wrap items-center gap-2 px-4 py-2 bg-slate-50/50 border-b min-h-[48px] animate-in fade-in slide-in-from-top-1 duration-300",children:[t.jsxs("div",{className:"flex items-center gap-1.5 mr-2",children:[t.jsx("div",{className:"h-2 w-2 rounded-full bg-primary animate-pulse"}),t.jsx("span",{className:"text-[11px] font-bold text-slate-500 uppercase tracking-tight",children:"Filtros Ativos:"})]}),r.searchQuery&&t.jsxs("div",{className:"flex items-center gap-1 bg-white border border-primary/20 rounded-full px-3 py-1 text-[11px] shadow-sm",children:[t.jsx("span",{className:"text-slate-500",children:"Busca:"}),t.jsx("span",{className:"font-semibold text-primary",children:r.searchQuery}),t.jsx("button",{onClick:()=>q.getState().setSearchQuery(""),className:"ml-1 hover:text-destructive transition-colors",children:t.jsx(v.X,{className:"h-3 w-3"})})]}),l.map(({groupId:s,rule:n})=>t.jsxs("div",{className:"flex items-center gap-1 bg-white border border-slate-200 rounded-full px-3 py-1 text-[11px] shadow-sm hover:border-primary/30 transition-colors group",children:[t.jsxs("span",{className:"text-slate-400 capitalize",children:[n.field.split(".").pop(),":"]}),t.jsx("span",{className:"font-semibold text-slate-700",children:n.value||"(vazio)"}),t.jsx("button",{onClick:()=>e(s,n.id),className:"ml-1 text-slate-300 group-hover:text-destructive transition-colors",children:t.jsx(v.X,{className:"h-3 w-3"})})]},n.id)),t.jsxs(N,{variant:"ghost",size:"sm",className:"h-7 text-[10px] font-bold text-slate-400 hover:text-destructive gap-1 px-2 border-l ml-auto rounded-none",onClick:a,children:[t.jsx(v.RotateCcw,{className:"h-3 w-3"}),"LIMPAR TUDO"]})]})}const ge=new Map;function qe({cardIds:r,estimatedCardHeight:e,overscan:a}){const l=p.useRef(null),[s,n]=p.useState(0);p.useEffect(()=>{const c=l.current;if(!c)return;let d=0,o=Date.now(),g;const f=()=>{const m=Date.now(),C=c.scrollTop,S=m-o,y=Math.abs(C-d);if(S>0){const x=y/S;n(x)}d=C,o=m},b=()=>{g&&cancelAnimationFrame(g),g=requestAnimationFrame(f)};return c.addEventListener("scroll",b,{passive:!0}),()=>{c.removeEventListener("scroll",b),g&&cancelAnimationFrame(g)}},[]);const i=p.useMemo(()=>s>2e3?a*3:s>1e3?a*2:s>500?Math.ceil(a*1.5):a,[s,a]),u=te.useVirtualizer({count:r.length,getScrollElement:()=>l.current,estimateSize:c=>{const d=r[c],o=ge.get(d);return o||e},measureElement:c=>{const d=c.getBoundingClientRect().height,o=c.getAttribute("data-card-id");return o&&ge.set(o,d),d},overscan:i});return{parentRef:l,rowVirtualizer:u}}function Be({onClick:r}){return t.jsxs("button",{onClick:r,className:"w-full flex items-center gap-2 px-3 py-2 text-sm font-medium text-slate-500 hover:text-blue-600 hover:bg-blue-50/50 rounded-lg transition-all duration-200 group",children:[t.jsx("div",{className:"bg-slate-200 group-hover:bg-blue-600 group-hover:text-white p-0.5 rounded transition-colors",children:t.jsx(v.Plus,{size:14})}),t.jsx("span",{children:"Adicionar card"})]})}function Ve({card:r,renderCard:e,onClick:a,onEdit:l,allowEdit:s,index:n,columnId:i,overId:u,overSide:c}){const{attributes:d,listeners:o,setNodeRef:g,transform:f,transition:b,isDragging:m}=H.useSortable({id:r.id,data:{type:"Card",card:r,index:n,columnId:i}}),C=p.useMemo(()=>({transform:le.CSS.Translate.toString(f),transition:b,opacity:m?.4:1}),[f,b,m]),S=p.useMemo(()=>x=>{x.stopPropagation(),a?a(r):s&&l?.(r)},[a,l,s,r]),y=p.useMemo(()=>e({card:r,isDragging:m}),[r,e,m]);return t.jsxs("div",{ref:g,style:C,...d,...o,onClick:S,className:"relative cursor-grab active:cursor-grabbing touch-none group",children:[u===r.id&&c==="top"&&t.jsx("div",{className:"absolute -top-[2px] left-0 right-0 h-[4px] bg-blue-500 rounded-full z-10 pointer-events-none shadow-sm"}),y,u===r.id&&c==="bottom"&&t.jsx("div",{className:"absolute -bottom-[2px] left-0 right-0 h-[4px] bg-blue-500 rounded-full z-10 pointer-events-none shadow-sm"})]})}const He=p.memo(Ve,(r,e)=>r.card===e.card&&r.index===e.index&&r.columnId===e.columnId&&r.overId===e.overId&&r.overSide===e.overSide);function Ke({column:r,allCards:e,activeId:a,overId:l,overSide:s,config:n,dragHandleProps:i,isActiveColumnDragging:u,isDragging:c,isOverlay:d}){const o=r,{setAddingCardInColumnId:g,setEditingColumnId:f}=q(),{parentRef:b,rowVirtualizer:m}=qe({cardIds:o.cardIds,estimatedCardHeight:n.estimatedCardHeight,overscan:n.virtualOverscan}),C=l===o.id,S=y=>{y.stopPropagation(),n.onColumnClick?n.onColumnClick(r):n.allowColumnEdit&&(n.onEditColumn?.(r),f(o.id))};return t.jsxs("div",{onClick:S,style:{width:n.columnWidth,maxHeight:"100%",boxSizing:"border-box"},className:k("flex flex-col group/column bg-column-bg rounded-column transition-all relative select-none h-fit max-h-full","duration-250 ease-[cubic-bezier(0.18,0.67,0.6,1.22)]",C&&"bg-blue-50/50 ring-1 ring-blue-300 shadow-sm",u&&!c&&!d&&"scale-[0.98] border border-slate-200 border-dashed opacity-50",c&&!d&&"opacity-20",d&&"bg-slate-100/80 shadow-[0_20px_50px_rgba(0,0,0,0.15)] scale-[1.02] z-50 cursor-grabbing ring-1 ring-slate-300"),children:[l===o.id&&s==="left"&&t.jsx("div",{className:"absolute top-0 bottom-0 -left-[4px] w-[4px] bg-blue-500 rounded-full z-20 pointer-events-none shadow-sm"}),l===o.id&&s==="right"&&t.jsx("div",{className:"absolute top-0 bottom-0 -right-[4px] w-[4px] bg-blue-500 rounded-full z-20 pointer-events-none shadow-sm"}),t.jsx("div",{onClick:y=>y.stopPropagation(),children:n.renderColumnHeader({column:r,cardCount:o.cardIds.length,isOver:C,dragHandleProps:i,onAddCard:n.allowAdd?()=>g(o.id):void 0,onEditColumn:n.allowColumnEdit?()=>f(o.id):void 0})}),t.jsx("div",{className:k("flex-1 flex flex-col min-h-0 transition-colors duration-200",C&&"bg-blue-50/30"),style:{minHeight:n.columnMinHeight},children:o.cardIds.length===0?t.jsx("div",{ref:b,className:k("flex-1 px-3 pb-2 flex items-center justify-center border-2 border-dashed border-transparent rounded-b-lg transition-colors",C&&"border-blue-300"),children:t.jsx("div",{className:"pointer-events-none select-none opacity-50",children:n.renderColumnEmpty({})})}):t.jsx(H.SortableContext,{items:o.cardIds,strategy:H.verticalListSortingStrategy,children:t.jsx("div",{ref:b,className:"flex-1 overflow-y-auto px-3 pb-2 scrollbar-thin scrollbar-thumb-slate-300 scrollbar-track-transparent",style:{minHeight:n.columnMinHeight},children:t.jsx("div",{style:{height:`${m.getTotalSize()}px`,width:"100%",position:"relative"},children:m.getVirtualItems().map(y=>{const x=o.cardIds[y.index],D=e[x];if(!D)return null;const F=x===a;return t.jsx("div",{"data-index":y.index,"data-card-id":x,style:{position:"absolute",top:0,left:0,width:"100%",height:`${y.size}px`,transform:`translateY(${y.start}px)`},children:t.jsx(He,{card:D,isDragging:F,renderCard:n.renderCard,onClick:n.onCardClick,onEdit:n.onEditCard,allowEdit:n.allowEdit,index:y.index,columnId:o.id,overId:l,overSide:s})},x)})})})})}),n.allowAdd&&t.jsx("div",{className:"p-3 border-t border-slate-200 shrink-0 relative z-20",onClick:y=>y.stopPropagation(),children:n.renderAddButton?n.renderAddButton({columnId:o.id,onClick:()=>g(o.id)}):t.jsx(Be,{onClick:()=>g(o.id)})})]})}const he=p.memo(Ke),Le=w.Root,$e=w.Trigger,Pe=w.Portal,Ge=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Overlay,{className:E("fixed inset-0 z-50 bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...e,ref:a}));Ge.displayName=w.Overlay.displayName;const We=ne.cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),fe=j.forwardRef(({side:r="right",className:e,children:a,...l},s)=>t.jsx(Pe,{children:t.jsxs(w.Content,{ref:s,className:E(We({side:r}),"bg-white shadow-2xl",e),...l,children:[a,t.jsxs(w.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[t.jsx(v.X,{className:"h-4 w-4"}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})}));fe.displayName=w.Content.displayName;const be=({className:r,...e})=>t.jsx("div",{className:E("flex flex-col space-y-2 text-center sm:text-left",r),...e});be.displayName="SheetHeader";const Ce=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Title,{ref:a,className:E("text-lg font-semibold text-foreground",r),...e}));Ce.displayName=w.Title.displayName;const ve=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Description,{ref:a,className:E("text-sm text-muted-foreground",r),...e}));ve.displayName=w.Description.displayName;function Qe({group:r,availableFields:e}){const{updateFilterGroup:a,removeFilterGroup:l}=q(),s=()=>{const c={id:crypto.randomUUID(),field:"",operator:"contains",value:"",enabled:!0};a(r.id,{rules:[...r.rules,c]})},n=c=>{a(r.id,{rules:r.rules.filter(d=>"id"in d&&d.id!==c)})},i=(c,d)=>{a(r.id,{rules:r.rules.map(o=>"id"in o&&o.id===c?{...o,...d}:o)})},u=()=>{a(r.id,{conjunction:r.conjunction==="and"?"or":"and"})};return t.jsxs("div",{className:"p-4 border rounded-lg bg-slate-50/50 space-y-4 relative group",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(N,{variant:"ghost",size:"sm",className:"h-7 text-[10px] uppercase font-bold tracking-wider hover:bg-white",onClick:u,children:r.conjunction}),t.jsx("span",{className:"text-xs text-muted-foreground italic",children:"dos seguintes critérios:"})]}),t.jsx(N,{variant:"ghost",size:"icon",className:"h-8 w-8 text-destructive opacity-0 group-hover:opacity-100 transition-opacity",onClick:()=>l(r.id),children:t.jsx(v.Trash2,{className:"h-4 w-4"})})]}),t.jsxs("div",{className:"space-y-3",children:[r.rules.map(c=>"field"in c?t.jsx(Ue,{rule:c,availableFields:e,onDelete:()=>n(c.id),onUpdate:d=>i(c.id,d)},c.id):null),r.rules.length===0&&t.jsx("div",{className:"text-center py-4 border-2 border-dashed rounded-md bg-white/50 cursor-pointer hover:bg-white transition-colors",onClick:s,children:t.jsx("p",{className:"text-xs text-muted-foreground",children:"Nenhuma regra definida. Clique para adicionar."})})]}),t.jsxs(N,{variant:"ghost",size:"sm",className:"w-full h-8 text-xs border-dashed border hover:border-solid mt-2 bg-white",onClick:s,children:[t.jsx(v.Plus,{className:"mr-2 h-3 w-3"}),"Adicionar Regra"]})]})}function Ue({rule:r,availableFields:e,onDelete:a,onUpdate:l}){const s=[{label:"contém",value:"contains"},{label:"não contém",value:"notContains"},{label:"igual a",value:"eq"},{label:"diferente de",value:"neq"},{label:"maior que",value:"gt"},{label:"menor que",value:"lt"},{label:"está vazio",value:"isEmpty"},{label:"não está vazio",value:"isNotEmpty"}];return t.jsxs("div",{className:`flex items-center gap-2 bg-white p-2 rounded-md border shadow-sm transition-all duration-200 group/row ${r.enabled?"hover:border-primary/30":"opacity-50 grayscale bg-slate-50"}`,children:[t.jsx("input",{type:"checkbox",checked:r.enabled,onChange:n=>l({enabled:n.target.checked}),className:"h-3 w-3 rounded border-slate-300 text-primary focus:ring-primary cursor-pointer",title:r.enabled?"Desabilitar regra":"Habilitar regra"}),t.jsxs("select",{value:r.field,onChange:n=>l({field:n.target.value}),className:"flex-[1.5] min-w-[100px] bg-transparent text-[11px] font-semibold focus:outline-none truncate",disabled:!r.enabled,children:[t.jsx("option",{value:"",disabled:!0,children:"Campo..."}),e.map(n=>t.jsx("option",{value:n.value,children:n.label},n.value))]}),t.jsx("select",{value:r.operator,onChange:n=>l({operator:n.target.value}),className:"flex-1 min-w-[90px] bg-transparent text-[11px] text-muted-foreground focus:outline-none border-x px-2",disabled:!r.enabled,children:s.map(n=>t.jsx("option",{value:n.value,children:n.label},n.value))}),t.jsx("input",{type:(e.find(n=>n.value===r.field)?.type??"text")==="number"?"number":"text",value:r.value||"",onChange:n=>l({value:n.target.value}),placeholder:"Valor...",disabled:!r.enabled||r.operator==="isEmpty"||r.operator==="isNotEmpty",className:"flex-[2] min-w-[100px] bg-transparent text-[11px] focus:outline-none placeholder:italic disabled:opacity-30 font-medium"}),t.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0 hover:bg-destructive/10 hover:text-destructive opacity-0 group-row-hover/row:opacity-100 transition-opacity",onClick:a,children:t.jsx(v.X,{className:"h-3 w-3"})})]})}function xe(r){const e={title:{label:"Título",value:"title",type:"text"},description:{label:"Descrição",value:"description",type:"text"}};return Object.values(r).forEach(a=>{a.metadata&&typeof a.metadata=="object"&&Object.entries(a.metadata).forEach(([l,s])=>{const n=`metadata.${l}`;if(!e[n]){let i="other";typeof s=="string"?i="text":typeof s=="number"?i="number":typeof s=="boolean"&&(i="boolean"),e[n]={label:`${l.charAt(0).toUpperCase()+l.slice(1)} (Meta)`,value:n,type:i}}})}),Object.values(e)}function _e(){const{filters:r,addFilterGroup:e,cards:a}=q(),l=p.useMemo(()=>xe(a),[a]),s=()=>{const n={id:crypto.randomUUID(),conjunction:"and",rules:[],enabled:!0};e(n)};return t.jsxs(Le,{children:[t.jsx($e,{asChild:!0,children:t.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-slate-600 bg-white hover:bg-slate-50 border-slate-200 shadow-sm",children:[t.jsx(v.Filter,{className:"h-4 w-4"}),"Filtros",r.groups.length>0&&t.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-primary text-[10px] text-primary-foreground font-bold shadow-sm",children:r.groups.length})]})}),t.jsxs(fe,{className:"w-full sm:w-[600px] sm:max-w-none overflow-y-auto bg-white/95 backdrop-blur-sm border-l shadow-2xl",children:[t.jsx(be,{className:"pb-6 border-b",children:t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{children:[t.jsx(Ce,{className:"text-xl font-bold text-slate-800",children:"Filtros Avançados"}),t.jsx(ve,{className:"text-sm text-slate-500",children:"Crie combinações de filtros para refinar sua visualização do board."})]}),r.groups.length>0&&t.jsx(N,{variant:"ghost",size:"sm",onClick:q.getState().clearFilters,className:"text-xs font-bold text-slate-400 hover:text-destructive h-8",children:"Limpar Tudo"})]})}),t.jsxs("div",{className:"mt-8 space-y-6",children:[r.groups.length===0?t.jsxs("div",{className:"text-center py-12 px-6 bg-slate-50/50 border-2 border-dashed border-slate-200 rounded-xl space-y-2",children:[t.jsx(v.Filter,{className:"mx-auto h-8 w-8 text-slate-300"}),t.jsx("p",{className:"text-slate-600 font-medium",children:"Nenhum filtro ativo."}),t.jsx("p",{className:"text-xs text-slate-400",children:"Adicione um grupo para começar a filtrar seus itens."})]}):t.jsx("div",{className:"space-y-6",children:r.groups.map(n=>t.jsx(Qe,{group:n,availableFields:l},n.id))}),t.jsxs(N,{onClick:s,className:"w-full",variant:"outline",children:[t.jsx(v.Plus,{className:"mr-2 h-4 w-4"}),"Adicionar Grupo de Filtros"]})]})]})]})}function Xe({columnId:r,onAdd:e,onCancel:a}){const[l,s]=p.useState(""),[n,i]=p.useState(""),[u,c]=p.useState("medium"),d=o=>{o.preventDefault(),e({title:l,description:n,metadata:{priority:u}})};return t.jsx(_,{open:!0,onOpenChange:o=>!o&&a(),children:t.jsxs($,{className:"sm:max-w-[425px]",children:[t.jsxs(P,{children:[t.jsx(G,{children:"Adicionar Novo Card"}),t.jsx(J,{children:"Novo item para a coluna."})]}),t.jsxs("form",{onSubmit:d,className:"grid gap-4 py-4",children:[t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"title",className:"text-sm font-medium leading-none",children:"Título"}),t.jsx("input",{id:"title",autoFocus:!0,value:l,onChange:o=>s(o.target.value),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"O que precisa ser feito?"})]}),t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{className:"text-sm font-medium leading-none",children:"Prioridade"}),t.jsx("div",{className:"flex gap-2",children:["low","medium","high"].map(o=>t.jsx("button",{type:"button",onClick:()=>c(o),className:k("flex-1 px-3 py-2 text-xs font-bold uppercase tracking-wider rounded-md border transition-all",u===o?o==="high"?"bg-red-100 border-red-500 text-red-700":o==="medium"?"bg-amber-100 border-amber-500 text-amber-900":"bg-emerald-100 border-emerald-500 text-emerald-800":"bg-transparent border-slate-200 text-slate-500 hover:bg-slate-50"),children:o==="low"?"Baixa":o==="medium"?"Média":"Alta"},o))})]}),t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"desc",className:"text-sm font-medium leading-none",children:"Descrição"}),t.jsx("textarea",{id:"desc",value:n,onChange:o=>i(o.target.value),rows:3,className:"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm resize-none focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Detalhes adicionais..."})]}),t.jsxs(X,{children:[t.jsx(N,{type:"button",variant:"outline",onClick:a,children:"Cancelar"}),t.jsxs(N,{type:"submit",className:"gap-2 bg-blue-600 hover:bg-blue-700 text-white",children:[t.jsx(v.Plus,{size:16}),"Criar Card"]})]})]})]})})}function Je({column:r,onSave:e,onCancel:a,onDelete:l}){const[s,n]=p.useState(r.title||""),i=u=>{u.preventDefault(),e({title:s})};return t.jsx(_,{open:!0,onOpenChange:u=>!u&&a(),children:t.jsxs($,{className:"sm:max-w-[400px]",children:[t.jsxs(P,{children:[t.jsx(G,{children:"Editar Coluna"}),t.jsx(J,{children:"Gerencie as configurações desta coluna."})]}),t.jsxs("form",{onSubmit:i,className:"grid gap-4 py-4",children:[t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"col-title",className:"text-sm font-medium leading-none",children:"Nome da Coluna"}),t.jsx("input",{id:"col-title",autoFocus:!0,value:s,onChange:u=>n(u.target.value),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Ex: A Fazer"})]}),t.jsxs(X,{className:"flex items-center justify-between w-full sm:justify-between",children:[l?t.jsxs(N,{type:"button",variant:"destructive",size:"sm",onClick:()=>{window.confirm("Tem certeza que deseja excluir esta coluna e mover seus cards para a anterior?")&&l()},className:"gap-2",children:[t.jsx(v.Trash2,{size:14}),"Excluir"]}):t.jsx("div",{}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(N,{type:"button",variant:"outline",onClick:a,children:"Cancelar"}),t.jsxs(N,{type:"submit",className:"gap-2",children:[t.jsx(v.Save,{size:14}),"Salvar"]})]})]})]})]})})}const Ye=p.memo(({children:r})=>{const{setNodeRef:e,isOver:a}=I.useDroppable({id:"new-column-drop-target",data:{type:"NewColumn"}});return t.jsx(t.Fragment,{children:r(a,e)})}),Ze=p.memo(({id:r,start:e,width:a,children:l,allowReorder:s,cardIds:n})=>{const{attributes:i,listeners:u,setNodeRef:c,transform:d,transition:o,isDragging:g}=H.useSortable({id:r,disabled:!s,data:{type:"Column",children:n}}),f={position:"absolute",top:0,left:`${e}px`,width:`${a}px`,transition:o||"transform 250ms cubic-bezier(0.18, 0.67, 0.6, 1.22)",transform:d&&!g?le.CSS.Transform.toString(d):void 0,zIndex:g?50:void 0,pointerEvents:g?"none":void 0,animation:g?"tilt 0.2s ease-in-out forwards":void 0};return t.jsx("div",{ref:c,style:f,children:p.isValidElement(l)?p.cloneElement(l,{dragHandleProps:s?{attributes:i,listeners:u}:void 0,isDragging:g}):l})});function ee({config:r}){const e=oe(r),a=p.useRef(null),l=te.useVirtualizer({horizontal:!0,count:e.columnOrder.length,getScrollElement:()=>a.current,estimateSize:()=>e.config.columnWidth+e.config.gap,overscan:5}),s=p.useMemo(()=>{const m={};Object.values(e.cards).forEach(S=>{de(S,e.filters)&&(m[S.id]=S)});const C={};return Object.values(e.columns).forEach(S=>{C[S.id]={...S,cardIds:S.cardIds.filter(y=>m[y])}}),{cards:m,columns:C}},[e.cards,e.columns,e.filters]),n=p.useRef(null),i=p.useRef(!1);p.useEffect(()=>{requestAnimationFrame(()=>{i.current=!1})},[e.columnOrder,e.columns]);const u=ke({dragActivationDistance:e.config.dragActivationDistance,touchActivationDelay:e.config.touchActivationDelay,onDragStart:(m,C)=>{e.handleDragStart(m)},onDragOver:e.handleDragOver,onDragEnd:e.handleDragEnd,onCardMove:e.moveCard,onColumnMove:e.moveColumn,onCreateColumnWithCard:(m,C)=>{e.addColumnWithCard(m,C,{title:"Nova Coluna"})},columns:e.columns,columnOrder:e.columnOrder,recentlyMovedToNewContainer:i}),c=e.activeId&&e.cards[e.activeId]?e.cards[e.activeId]:null,d=e.activeId&&e.columnOrder.includes(e.activeId)?e.columns[e.activeId]:null,o=e.viewingCardId?e.cards[e.viewingCardId]:null,g=e.editingColumnId?e.columns[e.editingColumnId]:null,f={renderCard:r?.renderCard??(m=>t.jsx(ce,{...m})),renderColumnHeader:r?.renderColumnHeader??(m=>t.jsx(me,{...m})),renderColumnEmpty:r?.renderColumnEmpty??(()=>t.jsx(ue,{})),renderAddButton:r?.renderAddButton,renderAddForm:r?.renderAddForm,renderEditForm:r?.renderEditForm,renderAddColumnButton:r?.renderAddColumnButton,renderAddColumnForm:r?.renderAddColumnForm,renderEditColumnForm:r?.renderEditColumnForm,estimatedCardHeight:e.config.estimatedCardHeight,virtualOverscan:e.config.virtualOverscan,columnWidth:e.config.columnWidth,columnMinHeight:e.config.columnMinHeight,onCardClick:r?.onCardClick??(m=>e.setViewingCardId(m.id)),onColumnClick:r?.onColumnClick,onEdit:e.config.allowEdit?e.setEditingCardId:void 0,onEditColumn:m=>e.setEditingColumnId(m.id),renderCardView:r?.renderCardView,allowAdd:e.config.allowAdd,allowColumnAdd:e.config.allowColumnAdd,allowColumnEdit:e.config.allowColumnEdit,allowColumnDelete:e.config.allowColumnDelete,allowColumnReorder:e.config.allowColumnReorder,allowFilters:e.config.allowFilters},b=m=>{const C=m.active.id;if(!(C&&!e.columnOrder.includes(C)))return I.closestCenter(m);const y=I.pointerWithin(m);if(C&&y.length>0){const M=y.find(V=>V.id==="new-column-drop-target");if(M)return[M]}const x=y.length>0?y:I.rectIntersection(m);let D=I.getFirstCollision(x,"id");if(D!=null){if(e.columnOrder.includes(D)){const M=e.columns[D];if(M&&M.cardIds.length>0){const V=m.droppableContainers.filter(O=>O.id!==D&&M.cardIds.includes(O.id));V.length>0&&(D=I.closestCenter({...m,droppableContainers:V})[0]?.id??D)}}return n.current=D,[{id:D}]}const F=I.closestCenter({...m,droppableContainers:m.droppableContainers.filter(M=>M.id!==C)});return F.length>0?(n.current=F[0].id,F):(i.current&&(n.current=C),n.current?[{id:n.current}]:[])};return t.jsx(I.DndContext,{sensors:u.sensors,collisionDetection:b,measuring:{droppable:{strategy:I.MeasuringStrategy.Always}},onDragStart:u.handleDragStart,onDragOver:u.handleDragOver,onDragEnd:u.handleDragEnd,children:t.jsxs("div",{className:"flex flex-col h-full bg-slate-50 relative group/board overflow-hidden",children:[e.config.allowFilters&&t.jsx("div",{className:"absolute top-4 right-6 z-30 pointer-events-none",children:t.jsx("div",{className:"pointer-events-auto transition-all duration-300 translate-y-[-10px] opacity-0 group-hover/board:translate-y-0 group-hover/board:opacity-100",children:t.jsx(_e,{})})}),e.config.allowFilters&&t.jsx(Te,{}),t.jsx("div",{ref:a,className:"flex-1 overflow-x-auto overflow-y-hidden",children:t.jsxs("div",{style:{width:`${l.getTotalSize()+(e.config.allowColumnAdd?200:0)}px`,height:"100%",position:"relative"},children:[t.jsx(H.SortableContext,{items:e.columnOrder,strategy:H.horizontalListSortingStrategy,children:l.getVirtualItems().map(m=>{const C=e.columnOrder[m.index];return t.jsx(Ze,{id:C,start:m.start,width:e.config.columnWidth,allowReorder:e.config.allowColumnReorder,cardIds:s.columns[C]?.cardIds??[],children:t.jsx(he,{column:s.columns[C],allCards:s.cards,activeId:e.activeId,overId:e.overId,overSide:e.overSide,config:f,isActiveColumnDragging:e.activeId?e.columnOrder.includes(e.activeId):!1})},C)})}),e.config.allowColumnAdd&&t.jsx(Ye,{children:(m,C)=>t.jsx("div",{ref:C,className:"h-full z-10",style:{position:"absolute",top:0,left:`${l.getTotalSize()}px`,width:e.config.columnWidth,height:"100%",boxSizing:"border-box",paddingRight:e.config.gap},children:r?.renderAddColumnButton?r.renderAddColumnButton({onClick:()=>e.addColumn({title:"Nova Coluna"})}):t.jsxs("button",{onClick:()=>e.addColumn({title:"Nova Coluna"}),className:E("flex items-center gap-2 w-full p-4 bg-slate-100/50 hover:bg-slate-200 text-slate-600 rounded-lg border-2 border-dashed transition-all font-semibold h-[200px] justify-center",m?"bg-blue-100 border-blue-400 text-blue-600 scale-[1.02] shadow-lg ring-4 ring-blue-500/20":"border-slate-300"),children:[t.jsx(v.Plus,{size:20}),m?"Soltar para criar":"Nova Coluna"]})})})]})}),e.editingCardId&&e.config.allowEdit&&(()=>{const m=e.cards[e.editingCardId];return m?r?.renderEditForm?r.renderEditForm({card:m,onSave:C=>{e.updateCard(e.editingCardId,C),e.clearEditingCardId()},onCancel:e.clearEditingCardId,onDelete:()=>{e.deleteCard(e.editingCardId),e.clearEditingCardId()}}):t.jsx(je,{card:m,onSave:C=>{e.updateCard(e.editingCardId,C),e.clearEditingCardId()},onCancel:e.clearEditingCardId,onDelete:()=>{e.deleteCard(e.editingCardId),e.clearEditingCardId()}}):null})(),e.addingCardInColumnId&&e.config.allowAdd&&(r?.renderAddForm?r.renderAddForm({columnId:e.addingCardInColumnId,onAdd:m=>{e.addCard(e.addingCardInColumnId,m),e.clearAddingCardInColumnId()},onCancel:e.clearAddingCardInColumnId}):t.jsx(Xe,{columnId:e.addingCardInColumnId,onAdd:m=>{e.addCard(e.addingCardInColumnId,m),e.clearAddingCardInColumnId()},onCancel:e.clearAddingCardInColumnId})),g&&e.config.allowColumnEdit&&(r?.renderEditColumnForm?r.renderEditColumnForm({column:g,onSave:m=>{e.updateColumn(g.id,m),e.clearEditingColumnId()},onCancel:e.clearEditingColumnId,onDelete:e.config.allowColumnDelete?()=>{e.deleteColumn(g.id),e.clearEditingColumnId()}:void 0}):t.jsx(Je,{column:g,onSave:m=>{e.updateColumn(g.id,m),e.clearEditingColumnId()},onCancel:e.clearEditingColumnId,onDelete:e.config.allowColumnDelete?()=>{e.deleteColumn(g.id),e.clearEditingColumnId()}:void 0})),o&&(f.renderCardView?f.renderCardView({card:o,onClose:e.clearViewingCardId}):t.jsx(Me,{card:o,onClose:e.clearViewingCardId})),t.jsxs(I.DragOverlay,{dropAnimation:null,children:[c&&t.jsx("div",{className:"z-50 cursor-grabbing animate-tilt shadow-2xl rounded-card overflow-hidden",children:f.renderCard({card:c,isDragging:!0})}),d?t.jsx(he,{column:d,allCards:e.cards,activeId:null,overId:null,overSide:null,config:f,isDragging:!1,isOverlay:!0,dragHandleProps:{attributes:{},listeners:{}}}):null]})]})})}const Re=r=>e=>e.cards[r],et=r=>r.cards,tt=r=>e=>r.map(a=>e.cards[a]).filter(Boolean),rt=r=>e=>e.columns[r],at=r=>r.columns,lt=r=>r.columnOrder,nt=r=>e=>{const a=e.columns[r];return a?a.cardIds.map(l=>e.cards[l]).filter(Boolean):[]},st=r=>e=>e.columns[r]?.cardIds||[],ot=r=>r.moveCard,dt=r=>r.moveColumn,it=r=>r.setBoardData,ct=r=>({cards:r.cards,columns:r.columns,columnOrder:r.columnOrder}),ut=r=>Object.keys(r.cards).length,mt=r=>r.columnOrder.length,we=()=>{const[r,e]=p.useState(0),a=p.useRef(0),l=p.useRef(performance.now());return p.useEffect(()=>{let s;const n=i=>{a.current++;const u=i-l.current;u>=1e3&&(e(Math.round(a.current*1e3/u)),a.current=0,l.current=i),s=requestAnimationFrame(n)};return s=requestAnimationFrame(n),()=>{cancelAnimationFrame(s)}},[]),r},pt=({cardCount:r,columnCount:e})=>{const a=we(),[l,s]=p.useState(60),[n,i]=p.useState(0),[u,c]=p.useState(!1);return p.useEffect(()=>{a>0&&(a<l&&s(a),a>n&&i(a))},[a]),p.useEffect(()=>{if(!u)return;const d=document.querySelectorAll(".overflow-y-auto");let o=1,g=2,f;const b=()=>{d.forEach(m=>{m.scrollTop+=g*o,m.scrollTop>=m.scrollHeight-m.clientHeight&&(o=-1),m.scrollTop<=0&&(o=1)}),f=requestAnimationFrame(b)};return f=requestAnimationFrame(b),()=>cancelAnimationFrame(f)},[u]),t.jsxs("div",{className:"fixed bottom-4 right-4 bg-slate-900/90 text-white p-4 rounded-lg shadow-lg backdrop-blur-sm z-50 font-mono text-sm",children:[t.jsxs("div",{className:"flex items-center justify-between mb-2 gap-2",children:[t.jsx("h3",{className:"font-bold text-blue-400",children:"⚡ Performance Stats"}),t.jsx("button",{onClick:()=>c(!u),className:`text-xs px-2 py-1 rounded ${u?"bg-red-500 hover:bg-red-600":"bg-blue-600 hover:bg-blue-700"}`,children:u?"Stop Stress Test":"Start Stress Test"})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1",children:[t.jsx("span",{className:"text-slate-400",children:"FPS:"}),t.jsx("span",{className:`font-bold ${a<30?"text-red-400":a<50?"text-yellow-400":"text-green-400"}`,children:a}),t.jsx("span",{className:"text-slate-400",children:"Min FPS:"}),t.jsx("span",{className:"text-slate-200",children:l}),t.jsx("span",{className:"text-slate-400",children:"Cards:"}),t.jsx("span",{className:"text-slate-200",children:r}),t.jsx("span",{className:"text-slate-400",children:"Columns:"}),t.jsx("span",{className:"text-slate-200",children:e})]})]})};h.BenchmarkStats=pt,h.Kanban=ee,h.Kanbase=ee,h.KanboomBoard=ee,h.discoverFields=xe,h.evaluateFilter=de,h.selectAllCards=et,h.selectAllColumns=at,h.selectBoardData=ct,h.selectCard=Re,h.selectCardCount=ut,h.selectCardsByIds=tt,h.selectColumn=rt,h.selectColumnCardIds=st,h.selectColumnCards=nt,h.selectColumnCount=mt,h.selectColumnOrder=lt,h.selectMoveCard=ot,h.selectMoveColumn=dt,h.selectSetBoardData=it,h.useFPS=we,h.useKanban=oe,h.useKanbanStore=q,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
|
|
1
|
+
(function(h,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("react/jsx-runtime"),require("@dnd-kit/core"),require("@dnd-kit/sortable"),require("@tanstack/react-virtual"),require("lucide-react"),require("react"),require("clsx"),require("tailwind-merge"),require("zustand"),require("zustand/middleware"),require("@dnd-kit/utilities"),require("@radix-ui/react-dialog"),require("@radix-ui/react-slot"),require("class-variance-authority")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","@dnd-kit/core","@dnd-kit/sortable","@tanstack/react-virtual","lucide-react","react","clsx","tailwind-merge","zustand","zustand/middleware","@dnd-kit/utilities","@radix-ui/react-dialog","@radix-ui/react-slot","class-variance-authority"],t):(h=typeof globalThis<"u"?globalThis:h||self,t(h.Kanbase={},h.jsxRuntime,h.DndKitCore,h.DndKitSortable,h.TanStackVirtual,h.LucideReact,h.React,h.clsx,h.tailwindMerge,h.Zustand,h.middleware,h.DndKitUtilities,h.RadixUIDialog,h.RadixUISlot,h.ClassVarianceAuthority))})(this,(function(h,t,I,H,te,v,p,re,ae,Se,De,le,Ee,Ae,ne){"use strict";function se(r){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const a in r)if(a!=="default"){const l=Object.getOwnPropertyDescriptor(r,a);Object.defineProperty(e,a,l.get?l:{enumerable:!0,get:()=>r[a]})}}return e.default=r,Object.freeze(e)}const j=se(p),w=se(Ee);function A(...r){return ae.twMerge(re.clsx(r))}const U=()=>`${Date.now()}-${Math.random().toString(36).substr(2,9)}`,q=Se.create()(De.devtools(r=>({cards:{},columns:{},columnOrder:[],config:{},activeId:null,viewingCardId:null,editingCardId:null,addingCardInColumnId:null,editingColumnId:null,filters:{searchQuery:"",groups:[],quickFilters:[]},addCard:(e,a)=>{const l=U(),s={id:l,...a};return r(n=>{const i=n.columns[e];return i?{cards:{...n.cards,[l]:s},columns:{...n.columns,[e]:{...i,cardIds:[...i.cardIds,l]}}}:n}),l},updateCard:(e,a)=>r(l=>{const s=l.cards[e];return s?{cards:{...l.cards,[e]:{...s,...a}}}:l}),deleteCard:e=>r(a=>{const{[e]:l,...s}=a.cards,n={...a.columns};return Object.keys(n).forEach(i=>{n[i]={...n[i],cardIds:n[i].cardIds.filter(u=>u!==e)}}),{cards:s,columns:n}}),duplicateCard:e=>{let a="";return r(l=>{const s=l.cards[e];if(!s)return l;const n=Object.keys(l.columns).find(o=>l.columns[o].cardIds.includes(e));if(!n)return l;a=U();const i={...s,id:a,title:`${s.title} (copy)`},u=l.columns[n],c=u.cardIds.indexOf(e),d=[...u.cardIds];return d.splice(c+1,0,a),{cards:{...l.cards,[a]:i},columns:{...l.columns,[n]:{...u,cardIds:d}}}}),a},addColumn:(e,a)=>{const l=U(),s={id:l,...e,cardIds:[]};return r(n=>{const i=[...n.columnOrder],u=a??i.length;return i.splice(u,0,l),{columns:{...n.columns,[l]:s},columnOrder:i}}),l},updateColumn:(e,a)=>r(l=>{const s=l.columns[e];return s?{columns:{...l.columns,[e]:{...s,...a}}}:l}),deleteColumn:(e,a)=>r(l=>{const s=l.columns[e];if(!s)return l;const{[e]:n,...i}=l.columns,u=l.columnOrder.filter(o=>o!==e);let c={...l.cards},d={...i};if(a&&d[a]){const o=d[a];d[a]={...o,cardIds:[...o.cardIds,...s.cardIds]},s.cardIds.forEach(g=>{c[g]&&(c[g]={...c[g],previousColumnId:e})})}else{const o=u.length>0?u[0]:null;s.cardIds.forEach(g=>{const f=c[g];if(!f)return;const b=f.previousColumnId&&d[f.previousColumnId]?f.previousColumnId:o;if(b&&d[b]){const m=d[b];d[b]={...m,cardIds:[...m.cardIds,g]},c[g]={...f}}else delete c[g]})}return{cards:c,columns:d,columnOrder:u}}),moveCard:(e,a,l,s)=>r(n=>{const i=n.columns[a],u=n.columns[l];if(!i||!u)return n;const c=i.cardIds.filter(g=>g!==e);if(a===l)return c.splice(s,0,e),{...n,columns:{...n.columns,[a]:{...i,cardIds:c}}};const d=[...u.cardIds];d.splice(s,0,e);const o={...n.cards[e],previousColumnId:a};return{...n,cards:{...n.cards,[e]:o},columns:{...n.columns,[a]:{...i,cardIds:c},[l]:{...u,cardIds:d}}}}),moveColumn:(e,a)=>r(l=>{const s=l.columnOrder.filter(n=>n!==e);return s.splice(a,0,e),{...l,columnOrder:s}}),addColumnWithCard:(e,a,l)=>r(s=>{const n=s.columns[a],i=s.cards[e];if(!n||!i)return s;const u=U(),c={id:u,...l,cardIds:[e]},d=n.cardIds.filter(f=>f!==e),o=Array.from(s.columnOrder);o.push(u);const g={...i,previousColumnId:a};return{...s,cards:{...s.cards,[e]:g},columns:{...s.columns,[a]:{...n,cardIds:d},[u]:c},columnOrder:o}}),setSearchQuery:e=>r(a=>({filters:{...a.filters,searchQuery:e}})),addFilterGroup:e=>r(a=>({filters:{...a.filters,groups:[...a.filters.groups,e]}})),updateFilterGroup:(e,a)=>r(l=>({filters:{...l.filters,groups:l.filters.groups.map(s=>s.id===e?{...s,...a}:s)}})),removeFilterGroup:e=>r(a=>({filters:{...a.filters,groups:a.filters.groups.filter(l=>l.id!==e)}})),removeFilterRule:(e,a)=>r(l=>({filters:{...l.filters,groups:l.filters.groups.map(s=>s.id!==e?s:{...s,rules:s.rules.filter(n=>!("id"in n)||n.id!==a)})}})),setFilters:e=>r({filters:e}),clearFilters:()=>r(e=>({filters:{...e.filters,groups:[],searchQuery:""}})),setBoardData:e=>r({...e}),setConfig:e=>r(a=>({config:{...a.config,...e}})),setActiveId:e=>r({activeId:e}),setViewingCardId:e=>r({viewingCardId:e}),clearViewingCardId:()=>r({viewingCardId:null}),setEditingCardId:e=>r({editingCardId:e}),clearEditingCardId:()=>r({editingCardId:null}),setAddingCardInColumnId:e=>r({addingCardInColumnId:e}),clearAddingCardInColumnId:()=>r({addingCardInColumnId:null}),setEditingColumnId:e=>r({editingColumnId:e}),clearEditingColumnId:()=>r({editingColumnId:null}),clearBoard:()=>r({cards:{},columns:{},columnOrder:[],filters:{searchQuery:"",groups:[],quickFilters:[]}})})));function oe(r){const e=q(),[a,l]=p.useState(null),[s,n]=p.useState(null),[i,u]=p.useState(null),c=p.useCallback(f=>{l(f)},[]),d=p.useCallback((f,b)=>{n(f),u(b??null)},[]),o=p.useCallback(()=>{l(null),n(null),u(null)},[]),g=p.useCallback((f,b,m,C)=>{e.moveCard(f,b,m,C),r?.onCardMove?.(f,b,m,C)},[e,r]);return{...e,activeId:a,overId:s,overSide:i,viewingCardId:e.viewingCardId,editingCardId:e.editingCardId,addingCardInColumnId:e.addingCardInColumnId,editingColumnId:e.editingColumnId,setViewingCardId:e.setViewingCardId,clearViewingCardId:e.clearViewingCardId,handleDragStart:c,handleDragOver:d,handleDragEnd:o,moveCard:g,addCard:e.addCard,updateCard:e.updateCard,deleteCard:e.deleteCard,duplicateCard:e.duplicateCard,setEditingCardId:e.setEditingCardId,clearEditingCardId:e.clearEditingCardId,setAddingCardInColumnId:e.setAddingCardInColumnId,clearAddingCardInColumnId:e.clearAddingCardInColumnId,addColumn:e.addColumn,addColumnWithCard:e.addColumnWithCard,updateColumn:e.updateColumn,deleteColumn:e.deleteColumn,moveColumn:e.moveColumn,setEditingColumnId:e.setEditingColumnId,clearEditingColumnId:e.clearEditingColumnId,clearBoard:e.clearBoard,config:{dragActivationDistance:r?.dragActivationDistance??10,touchActivationDelay:r?.touchActivationDelay??250,virtualOverscan:r?.virtualOverscan??5,estimatedCardHeight:r?.estimatedCardHeight??90,columnWidth:r?.columnWidth??320,columnMinHeight:r?.columnMinHeight??500,gap:r?.gap??16,allowAdd:r?.allowAdd??!1,allowEdit:r?.allowEdit??!1,allowColumnAdd:r?.allowColumnAdd??!1,allowColumnEdit:r?.allowColumnEdit??!1,allowColumnDelete:r?.allowColumnDelete??!1,allowColumnReorder:r?.allowColumnReorder??!1,allowFilters:r?.allowFilters??!0,showURLSync:r?.showURLSync??!1}}}function Fe({dragActivationDistance:r,touchActivationDelay:e,onDragStart:a,onDragOver:l,onDragEnd:s,onCardMove:n,onColumnMove:i,onCreateColumnWithCard:u,columns:c,columnOrder:d,recentlyMovedToNewContainer:o}){const g=p.useRef(c),f=p.useRef(d);p.useEffect(()=>{g.current=c,f.current=d},[c,d]);const b=p.useRef(null);return{sensors:I.useSensors(I.useSensor(I.MouseSensor,{activationConstraint:{distance:r}}),I.useSensor(I.TouchSensor,{activationConstraint:{delay:e,tolerance:5}}),I.useSensor(I.KeyboardSensor)),handleDragStart:x=>{const k=x.active.data.current?.type||"Card";b.current=null,a(x.active.id,k)},handleDragOver:x=>{const{active:D,over:k}=x,V=D.data.current?.type||"Card",O=g.current,ye=f.current;if(!k){l(null),b.current=null;return}const T=D.id,z=k.id,W=k.rect,Q=D.rect.current.translated;let K=null;if(Q&&W)if(V==="Column"){const E=W.left+W.width/2;K=Q.left+Q.width/2<E?"left":"right"}else{const E=W.top+W.height/2;K=Q.top+Q.height/2<E?"top":"bottom"}if(l(z,K),V==="Column"){let E=z;if(!O[z]){const Ie=Object.values(O).find(ht=>ht.cardIds.includes(z));Ie&&(E=Ie.id)}const L=ye.indexOf(E),Ne=ye.indexOf(T);L!==-1&&Ne!==-1&&Ne!==L&&(i(T,L),b.current&&(b.current.targetIndex=L));return}if(z==="new-column-drop-target"){const E=Object.values(O).find(L=>L.cardIds.includes(T));E&&(b.current={type:"NewColumn",activeId:T,sourceColumnId:E.id,targetIndex:0});return}const B=Object.values(O).find(E=>E.cardIds.includes(T));if(!B)return;if(O[z]){B.id!==z?(o&&(o.current=!0),b.current={type:"Card",activeId:T,sourceColumnId:B.id,targetColumnId:z,targetIndex:O[z].cardIds.length,side:"bottom"}):b.current=null;return}const Y=Object.values(O).find(E=>E.cardIds.includes(z));if(!Y)return;const Z=Y.cardIds.indexOf(z),gt=K==="bottom"?Z+1:Z;B.id!==Y.id?(o&&(o.current=!0),b.current={type:"Card",activeId:T,sourceColumnId:B.id,targetColumnId:Y.id,targetIndex:gt,side:K}):B.cardIds.indexOf(T)!==Z&&(b.current={type:"Card",activeId:T,sourceColumnId:B.id,targetColumnId:B.id,targetIndex:Z,side:K})},handleDragEnd:()=>{if(b.current){const x=b.current;x.type==="NewColumn"&&x.sourceColumnId&&u?u(x.activeId,x.sourceColumnId):x.type==="Card"&&x.sourceColumnId&&x.targetColumnId?n(x.activeId,x.sourceColumnId,x.targetColumnId,x.targetIndex):x.type==="Column"&&i(x.activeId,x.targetIndex)}b.current=null,s()}}}function de(r,e){if(e.searchQuery){const a=e.searchQuery.toLowerCase(),l=r.title?.toLowerCase().includes(a),s=r.description?.toLowerCase().includes(a),n=r.metadata&&Object.values(r.metadata).some(i=>String(i).toLowerCase().includes(a));if(!l&&!s&&!n)return!1}return e.groups.length===0?!0:e.groups.every(a=>a.enabled?R(r,a):!0)}function R(r,e){const{conjunction:a,rules:l}=e;return l.length===0?!0:a==="and"?l.every(s=>"conjunction"in s?R(r,s):ie(r,s)):l.some(s=>"conjunction"in s?R(r,s):ie(r,s))}function ie(r,e){if(!e.field||!e.enabled)return!0;const a=ke(r,e.field),l=e.value;switch(e.operator){case"eq":return a===l;case"neq":return a!==l;case"contains":return String(a||"").toLowerCase().includes(String(l||"").toLowerCase());case"notContains":return!String(a||"").toLowerCase().includes(String(l||"").toLowerCase());case"gt":return Number(a)>Number(l);case"gte":return Number(a)>=Number(l);case"lt":return Number(a)<Number(l);case"lte":return Number(a)<=Number(l);case"isEmpty":return!a||Array.isArray(a)&&a.length===0;case"isNotEmpty":return!!a&&(!Array.isArray(a)||a.length>0);default:return!0}}function ke(r,e){return e.split(".").reduce((a,l)=>a&&a[l],r)}function F(...r){return ae.twMerge(re.clsx(r))}const ce=p.memo(({card:r,isDragging:e})=>{const{tags:a,members:l,commentsCount:s,attachmentsCount:n,dueDate:i,priority:u}=r.metadata||{},c={high:"bg-red-500",medium:"bg-amber-500",low:"bg-emerald-500"};return t.jsxs("div",{className:F("group relative bg-card-bg rounded-card border border-card-border p-3","shadow-card transition-all duration-200 cursor-pointer select-none","hover:shadow-card-hover hover:-translate-y-0.5 hover:border-slate-300",e&&"opacity-50 grayscale-[0.5] scale-[1.02] shadow-xl border-blue-400 ring-1 ring-blue-400 rotate-2 z-50",u&&"pl-4"),children:[u&&t.jsx("div",{className:F("absolute left-0 top-3 bottom-3 w-1 rounded-r-full",c[u]||"bg-slate-300")}),t.jsxs("div",{className:"flex flex-col gap-2.5",children:[a&&a.length>0&&t.jsx("div",{className:"flex flex-wrap gap-1 mb-0.5",children:a.map((d,o)=>t.jsx("span",{className:F("px-2 py-0.5 rounded-full text-[10px] font-semibold tracking-tight",d.color||"bg-slate-100 text-slate-600"),children:d.name},o))}),t.jsxs("div",{className:"flex items-start justify-between gap-2",children:[t.jsx("h4",{className:"text-sm font-semibold text-slate-800 leading-snug group-hover:text-slate-900 transition-colors",children:r.title}),t.jsx("button",{className:"opacity-0 group-hover:opacity-100 transition-opacity p-1 hover:bg-slate-100 rounded text-slate-400 hover:text-slate-600 -mr-1 -mt-1",children:t.jsx(v.MoreHorizontal,{size:14})})]}),r.description&&t.jsx("p",{className:"text-xs text-slate-500 line-clamp-2 leading-relaxed font-medium",children:r.description}),(l||s||n||i)&&t.jsxs("div",{className:"flex items-center justify-between mt-1 pt-2.5 border-t border-slate-100/80",children:[t.jsx("div",{className:"flex items-center",children:l&&l.length>0?t.jsxs("div",{className:"flex -space-x-2 overflow-hidden py-0.5 pl-0.5",children:[l.map((d,o)=>t.jsx("div",{className:"h-6 w-6 rounded-full border-2 border-white bg-slate-200 flex items-center justify-center text-[9px] font-bold text-slate-600 ring-1 ring-slate-100",title:d.name,children:d.avatar?t.jsx("img",{src:d.avatar,alt:d.name,className:"w-full h-full rounded-full object-cover"}):d.initials},o)),l.length>3&&t.jsxs("div",{className:"h-6 w-6 rounded-full border-2 border-white bg-slate-50 flex items-center justify-center text-[9px] font-bold text-slate-400",children:["+",l.length-3]})]}):t.jsx("div",{})}),t.jsxs("div",{className:"flex items-center gap-3 text-slate-400",children:[i&&t.jsxs("div",{className:F("flex items-center gap-1 text-[10px] font-medium",new Date(i)<new Date?"text-red-500":"text-slate-400"),children:[t.jsx(v.Calendar,{size:12}),t.jsx("span",{children:new Date(i).toLocaleDateString(void 0,{month:"short",day:"numeric"})})]}),s>0&&t.jsxs("div",{className:"flex items-center gap-1 text-[10px] font-medium hover:text-slate-600 transition-colors",children:[t.jsx(v.MessageSquare,{size:12}),t.jsx("span",{children:s})]}),n>0&&t.jsxs("div",{className:"flex items-center gap-1 text-[10px] font-medium hover:text-slate-600 transition-colors",children:[t.jsx(v.Paperclip,{size:12}),t.jsx("span",{children:n})]})]})]})]})]})},(r,e)=>r.card.id===e.card.id&&r.card.title===e.card.title&&r.card.description===e.card.description&&r.isDragging===e.isDragging&&JSON.stringify(r.card.metadata)===JSON.stringify(e.card.metadata));ce.displayName="DefaultCard";const ue=p.memo(()=>t.jsx("div",{className:"flex items-center justify-center h-32 text-slate-400 text-sm",children:"Arraste cards aqui"}));ue.displayName="DefaultColumnEmpty";const me=p.memo(({column:r,cardCount:e,isOver:a,dragHandleProps:l,onAddCard:s,onEditColumn:n})=>t.jsxs("div",{className:F("px-3 py-3 flex items-center justify-between transition-colors mb-2 rounded-t-xl select-none group/header",a?"bg-blue-50/80":"bg-transparent"),children:[t.jsxs("div",{className:"flex items-center gap-2 min-w-0 flex-1",children:[l&&t.jsx("div",{...l.attributes,...l.listeners,onClick:i=>i.stopPropagation(),className:"cursor-grab active:cursor-grabbing text-slate-400 hover:text-slate-600 p-0.5 rounded hover:bg-slate-200/50 transition-colors",children:t.jsx(v.GripVertical,{size:14})}),t.jsx("h3",{className:"font-semibold text-sm text-slate-700 truncate tracking-tight flex-1",children:r.title}),t.jsx("span",{className:"text-[10px] bg-slate-200/50 border border-slate-200 px-2 py-0.5 rounded-full text-slate-500 font-bold tabular-nums",children:e})]}),t.jsxs("div",{className:"flex items-center gap-1 opacity-0 group-hover/header:opacity-100 transition-opacity",children:[s&&t.jsx("button",{onClick:s,className:"p-1 hover:bg-slate-200/50 rounded text-slate-400 hover:text-slate-600 transition-colors",title:"Adicionar Card",children:t.jsx(v.Plus,{size:14})}),n&&t.jsx("button",{onClick:n,className:"p-1 hover:bg-slate-200/50 rounded text-slate-400 hover:text-slate-600 transition-colors",title:"Editar Coluna",children:t.jsx(v.MoreHorizontal,{size:14})})]})]}));me.displayName="DefaultColumnHeader";const _=w.Root,Oe=w.Portal,pe=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Overlay,{ref:a,className:A("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...e}));pe.displayName=w.Overlay.displayName;const $=j.forwardRef(({className:r,children:e,...a},l)=>t.jsxs(Oe,{children:[t.jsx(pe,{}),t.jsxs(w.Content,{ref:l,className:A("fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-48% data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-48% sm:rounded-lg",r),...a,children:[e,t.jsxs(w.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[t.jsx(v.X,{className:"h-4 w-4"}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));$.displayName=w.Content.displayName;const P=({className:r,...e})=>t.jsx("div",{className:A("flex flex-col space-y-1.5 text-center sm:text-left",r),...e});P.displayName="DialogHeader";const X=({className:r,...e})=>t.jsx("div",{className:A("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",r),...e});X.displayName="DialogFooter";const G=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Title,{ref:a,className:A("text-lg font-semibold leading-none tracking-tight",r),...e}));G.displayName=w.Title.displayName;const J=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Description,{ref:a,className:A("text-sm text-muted-foreground",r),...e}));J.displayName=w.Description.displayName;const ze=ne.cva("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3",lg:"h-11 rounded-md px-8",icon:"h-10 w-10"}},defaultVariants:{variant:"default",size:"default"}}),N=j.forwardRef(({className:r,variant:e,size:a,asChild:l=!1,...s},n)=>{const i=l?Ae.Slot:"button";return t.jsx(i,{className:A(ze({variant:e,size:a,className:r})),ref:n,...s})});N.displayName="Button";function je({card:r,onSave:e,onCancel:a,onDelete:l}){const[s,n]=p.useState(r.title||""),[i,u]=p.useState(r.description||""),c=d=>{d.preventDefault(),e({title:s,description:i})};return t.jsx(_,{open:!0,onOpenChange:d=>!d&&a(),children:t.jsxs($,{className:"sm:max-w-[425px]",children:[t.jsxs(P,{children:[t.jsx(G,{children:"Editar Card"}),t.jsx(J,{children:"Faça alterações no card aqui. Clique em salvar quando terminar."})]}),t.jsxs("form",{onSubmit:c,className:"grid gap-4 py-4",children:[t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"title",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Título"}),t.jsx("input",{id:"title",autoFocus:!0,value:s,onChange:d=>n(d.target.value),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",placeholder:"Digite o título..."})]}),t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"desc",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:"Descrição"}),t.jsx("textarea",{id:"desc",value:i,onChange:d=>u(d.target.value),rows:4,className:"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 resize-none",placeholder:"Adicione uma descrição..."})]}),t.jsxs(X,{className:"flex items-center justify-between w-full sm:justify-between",children:[l&&t.jsxs(N,{type:"button",variant:"destructive",size:"sm",onClick:l,className:"gap-2",children:[t.jsx(v.Trash2,{size:14}),"Excluir"]}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(N,{type:"button",variant:"outline",onClick:a,children:"Cancelar"}),t.jsxs(N,{type:"submit",className:"gap-2",children:[t.jsx(v.Save,{size:14}),"Salvar"]})]})]})]})]})})}const Me=p.memo(({card:r,onClose:e})=>{const{priority:a,tags:l,members:s,dueDate:n,...i}=r.metadata||{},c=a&&{high:{label:"Alta",color:"text-red-700",bg:"bg-red-50 border-red-200"},medium:{label:"Média",color:"text-amber-700",bg:"bg-amber-50 border-amber-200"},low:{label:"Baixa",color:"text-emerald-700",bg:"bg-emerald-50 border-emerald-200"}}[a];return t.jsx(_,{open:!0,onOpenChange:d=>!d&&e(),children:t.jsxs($,{className:"sm:max-w-2xl p-0 gap-0 overflow-hidden bg-white",children:[c&&t.jsx("div",{className:F("h-1.5 w-full",c.bg.split(" ")[0],c.bg.replace("bg-","bg-opacity-100"))}),t.jsxs("div",{className:"flex flex-col h-full max-h-[85vh]",children:[t.jsx(P,{className:"p-6 pb-4",children:t.jsxs("div",{className:"flex items-start gap-4",children:[t.jsx("div",{className:"mt-1 p-2 bg-slate-100 rounded-lg text-slate-500",children:t.jsx(v.AlignLeft,{size:20})}),t.jsxs("div",{className:"space-y-1 flex-1",children:[t.jsx(G,{className:"text-xl font-bold text-slate-900 leading-tight",children:r.title}),t.jsx("p",{className:"text-xs text-slate-400 font-medium uppercase tracking-wider",children:r.id})]}),c&&t.jsx("div",{className:F("px-3 py-1 rounded-full text-xs font-bold border uppercase tracking-wide",c.color,c.bg),children:c.label})]})}),t.jsxs("div",{className:"flex-1 overflow-y-auto p-6 pt-0 grid md:grid-cols-[1fr,240px] gap-8",children:[t.jsxs("div",{className:"space-y-6",children:[t.jsxs("div",{className:"space-y-3",children:[t.jsx("h4",{className:"text-sm font-semibold text-slate-900 flex items-center gap-2",children:"Descrição"}),t.jsx("div",{className:F("text-sm text-slate-600 leading-relaxed p-4 rounded-lg border border-slate-100 bg-slate-50/50 min-h-[100px]",!r.description&&"italic text-slate-400 flex items-center justify-center"),children:r.description||"Nenhuma descrição fornecida."})]}),r.content&&t.jsxs("div",{className:"space-y-3",children:[t.jsx("h4",{className:"text-sm font-semibold text-slate-900",children:"Conteúdo Detalhado"}),t.jsx("pre",{className:"text-xs font-mono bg-slate-900 text-slate-50 p-4 rounded-lg overflow-x-auto shadow-inner",children:typeof r.content=="object"?JSON.stringify(r.content,null,2):r.content})]})]}),t.jsxs("div",{className:"space-y-6",children:[n&&t.jsxs("div",{className:"space-y-1.5",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.Calendar,{size:12})," Data de Entrega"]}),t.jsx("div",{className:"text-sm font-medium text-slate-900 bg-slate-50 px-3 py-2 rounded-md border border-slate-200",children:new Date(n).toLocaleDateString()})]}),s&&Array.isArray(s)&&s.length>0&&t.jsxs("div",{className:"space-y-2",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.User,{size:12})," Membros"]}),t.jsx("div",{className:"flex flex-col gap-2",children:s.map((d,o)=>t.jsxs("div",{className:"flex items-center gap-2 text-sm text-slate-700 bg-white p-1.5 rounded-md border border-slate-100 shadow-sm",children:[t.jsx("div",{className:"h-6 w-6 rounded-full bg-slate-200 flex items-center justify-center text-[10px] font-bold overflow-hidden shrink-0",children:d.avatar?t.jsx("img",{src:d.avatar,alt:d.name,className:"w-full h-full object-cover"}):d.initials}),t.jsx("span",{className:"truncate",children:d.name})]},o))})]}),l&&Array.isArray(l)&&l.length>0&&t.jsxs("div",{className:"space-y-2",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.Tag,{size:12})," Tags"]}),t.jsx("div",{className:"flex flex-wrap gap-1.5",children:l.map((d,o)=>t.jsx("span",{className:F("px-2.5 py-1 rounded-md text-xs font-semibold border shadow-sm",d.color?`bg-${d.color}-50 text-${d.color}-700 border-${d.color}-200`:"bg-slate-100 text-slate-700 border-slate-200"),children:d.name},o))})]}),Object.keys(i).length>0&&t.jsxs("div",{className:"space-y-3 pt-4 border-t border-slate-100",children:[t.jsxs("span",{className:"text-xs font-semibold text-slate-500 uppercase tracking-wider flex items-center gap-1.5",children:[t.jsx(v.Info,{size:12})," Outros Detalhes"]}),t.jsx("div",{className:"grid gap-3",children:Object.entries(i).map(([d,o])=>t.jsxs("div",{className:"group",children:[t.jsx("dt",{className:"text-[10px] font-bold text-slate-400 uppercase mb-0.5 group-hover:text-slate-600 transition-colors",children:d.replace(/([A-Z])/g," $1")}),t.jsx("dd",{className:"text-sm font-medium text-slate-800 break-words",children:typeof o=="boolean"?o?t.jsx("span",{className:"inline-flex items-center gap-1 text-emerald-600 bg-emerald-50 px-2 py-0.5 rounded text-xs",children:"Sim"}):t.jsx("span",{className:"text-slate-400",children:"Não"}):String(o)})]},d))})]})]})]}),t.jsx("div",{className:"p-4 border-t border-slate-100 bg-slate-50/50 flex justify-end",children:t.jsx(N,{variant:"outline",onClick:e,className:"hover:bg-white hover:text-slate-900 transition-colors",children:"Fechar Visualização"})})]})]})})});function Te(){const{filters:r,removeFilterRule:e,clearFilters:a}=q(),l=r.groups.flatMap(s=>s.rules.filter(n=>!("conjunction"in n)&&n.enabled).map(n=>({groupId:s.id,rule:n})));return l.length===0&&!r.searchQuery?null:t.jsxs("div",{className:"flex flex-wrap items-center gap-2 px-4 py-2 bg-slate-50/50 border-b min-h-[48px] animate-in fade-in slide-in-from-top-1 duration-300",children:[t.jsxs("div",{className:"flex items-center gap-1.5 mr-2",children:[t.jsx("div",{className:"h-2 w-2 rounded-full bg-primary animate-pulse"}),t.jsx("span",{className:"text-[11px] font-bold text-slate-500 uppercase tracking-tight",children:"Filtros Ativos:"})]}),r.searchQuery&&t.jsxs("div",{className:"flex items-center gap-1 bg-white border border-primary/20 rounded-full px-3 py-1 text-[11px] shadow-sm",children:[t.jsx("span",{className:"text-slate-500",children:"Busca:"}),t.jsx("span",{className:"font-semibold text-primary",children:r.searchQuery}),t.jsx("button",{onClick:()=>q.getState().setSearchQuery(""),className:"ml-1 hover:text-destructive transition-colors",children:t.jsx(v.X,{className:"h-3 w-3"})})]}),l.map(({groupId:s,rule:n})=>t.jsxs("div",{className:"flex items-center gap-1 bg-white border border-slate-200 rounded-full px-3 py-1 text-[11px] shadow-sm hover:border-primary/30 transition-colors group",children:[t.jsxs("span",{className:"text-slate-400 capitalize",children:[n.field.split(".").pop(),":"]}),t.jsx("span",{className:"font-semibold text-slate-700",children:n.value||"(vazio)"}),t.jsx("button",{onClick:()=>e(s,n.id),className:"ml-1 text-slate-300 group-hover:text-destructive transition-colors",children:t.jsx(v.X,{className:"h-3 w-3"})})]},n.id)),t.jsxs(N,{variant:"ghost",size:"sm",className:"h-7 text-[10px] font-bold text-slate-400 hover:text-destructive gap-1 px-2 border-l ml-auto rounded-none",onClick:a,children:[t.jsx(v.RotateCcw,{className:"h-3 w-3"}),"LIMPAR TUDO"]})]})}const ge=new Map;function qe({cardIds:r,estimatedCardHeight:e,overscan:a}){const l=p.useRef(null),[s,n]=p.useState(0);p.useEffect(()=>{const c=l.current;if(!c)return;let d=0,o=Date.now(),g;const f=()=>{const m=Date.now(),C=c.scrollTop,S=m-o,y=Math.abs(C-d);if(S>0){const x=y/S;n(x)}d=C,o=m},b=()=>{g&&cancelAnimationFrame(g),g=requestAnimationFrame(f)};return c.addEventListener("scroll",b,{passive:!0}),()=>{c.removeEventListener("scroll",b),g&&cancelAnimationFrame(g)}},[]);const i=p.useMemo(()=>s>2e3?a*3:s>1e3?a*2:s>500?Math.ceil(a*1.5):a,[s,a]),u=te.useVirtualizer({count:r.length,getScrollElement:()=>l.current,estimateSize:c=>{const d=r[c],o=ge.get(d);return o||e},measureElement:c=>{const d=c.getBoundingClientRect().height,o=c.getAttribute("data-card-id");return o&&ge.set(o,d),d},overscan:i});return{parentRef:l,rowVirtualizer:u}}function Be({onClick:r}){return t.jsxs("button",{onClick:r,className:"w-full flex items-center gap-2 px-3 py-2 text-sm font-medium text-slate-500 hover:text-blue-600 hover:bg-blue-50/50 rounded-lg transition-all duration-200 group",children:[t.jsx("div",{className:"bg-slate-200 group-hover:bg-blue-600 group-hover:text-white p-0.5 rounded transition-colors",children:t.jsx(v.Plus,{size:14})}),t.jsx("span",{children:"Adicionar card"})]})}function Ve({card:r,renderCard:e,onClick:a,onEdit:l,allowEdit:s,index:n,columnId:i,overId:u,overSide:c}){const{attributes:d,listeners:o,setNodeRef:g,transform:f,transition:b,isDragging:m}=H.useSortable({id:r.id,data:{type:"Card",card:r,index:n,columnId:i}}),C=p.useMemo(()=>({transform:le.CSS.Translate.toString(f),transition:b,opacity:m?.4:1}),[f,b,m]),S=p.useMemo(()=>x=>{x.stopPropagation(),a?a(r):s&&l?.(r)},[a,l,s,r]),y=p.useMemo(()=>e({card:r,isDragging:m}),[r,e,m]);return t.jsxs("div",{ref:g,style:C,...d,...o,onClick:S,className:"relative cursor-grab active:cursor-grabbing touch-none group",children:[u===r.id&&c==="top"&&t.jsx("div",{className:"absolute -top-[2px] left-0 right-0 h-[4px] bg-blue-500 rounded-full z-10 pointer-events-none shadow-sm"}),y,u===r.id&&c==="bottom"&&t.jsx("div",{className:"absolute -bottom-[2px] left-0 right-0 h-[4px] bg-blue-500 rounded-full z-10 pointer-events-none shadow-sm"})]})}const He=p.memo(Ve,(r,e)=>r.card===e.card&&r.index===e.index&&r.columnId===e.columnId&&r.overId===e.overId&&r.overSide===e.overSide);function Ke({column:r,allCards:e,activeId:a,overId:l,overSide:s,config:n,dragHandleProps:i,isActiveColumnDragging:u,isDragging:c,isOverlay:d}){const o=r,{setAddingCardInColumnId:g,setEditingColumnId:f}=q(),{parentRef:b,rowVirtualizer:m}=qe({cardIds:o.cardIds,estimatedCardHeight:n.estimatedCardHeight,overscan:n.virtualOverscan}),C=l===o.id,S=y=>{y.stopPropagation(),n.onColumnClick?n.onColumnClick(r):n.allowColumnEdit&&(n.onEditColumn?.(r),f(o.id))};return t.jsxs("div",{onClick:S,style:{width:n.columnWidth,maxHeight:"100%",boxSizing:"border-box"},className:F("flex flex-col group/column bg-column-bg rounded-column transition-all relative select-none h-fit max-h-full","duration-250 ease-[cubic-bezier(0.18,0.67,0.6,1.22)]",C&&"bg-blue-50/50 ring-1 ring-blue-300 shadow-sm",u&&!c&&!d&&"scale-[0.98] border border-slate-200 border-dashed opacity-50",c&&!d&&"opacity-20",d&&"bg-slate-100/80 shadow-[0_20px_50px_rgba(0,0,0,0.15)] scale-[1.02] z-50 cursor-grabbing ring-1 ring-slate-300"),children:[l===o.id&&s==="left"&&t.jsx("div",{className:"absolute top-0 bottom-0 -left-[4px] w-[4px] bg-blue-500 rounded-full z-20 pointer-events-none shadow-sm"}),l===o.id&&s==="right"&&t.jsx("div",{className:"absolute top-0 bottom-0 -right-[4px] w-[4px] bg-blue-500 rounded-full z-20 pointer-events-none shadow-sm"}),t.jsx("div",{onClick:y=>y.stopPropagation(),children:n.renderColumnHeader({column:r,cardCount:o.cardIds.length,isOver:C,dragHandleProps:i,onAddCard:n.allowAdd?()=>g(o.id):void 0,onEditColumn:n.allowColumnEdit?()=>f(o.id):void 0})}),t.jsx("div",{className:F("flex-1 flex flex-col min-h-0 transition-colors duration-200",C&&"bg-blue-50/30"),style:{minHeight:n.columnMinHeight},children:o.cardIds.length===0?t.jsx("div",{ref:b,className:F("flex-1 px-3 pb-2 flex items-center justify-center border-2 border-dashed border-transparent rounded-b-lg transition-colors",C&&"border-blue-300"),children:t.jsx("div",{className:"pointer-events-none select-none opacity-50",children:n.renderColumnEmpty({})})}):t.jsx(H.SortableContext,{items:o.cardIds,strategy:H.verticalListSortingStrategy,children:t.jsx("div",{ref:b,className:"flex-1 overflow-y-auto px-3 pb-2 scrollbar-thin scrollbar-thumb-slate-300 scrollbar-track-transparent",style:{minHeight:n.columnMinHeight},children:t.jsx("div",{style:{height:`${m.getTotalSize()}px`,width:"100%",position:"relative"},children:m.getVirtualItems().map(y=>{const x=o.cardIds[y.index],D=e[x];if(!D)return null;const k=x===a;return t.jsx("div",{"data-index":y.index,"data-card-id":x,style:{position:"absolute",top:0,left:0,width:"100%",height:`${y.size}px`,transform:`translateY(${y.start}px)`},children:t.jsx(He,{card:D,isDragging:k,renderCard:n.renderCard,onClick:n.onCardClick,onEdit:n.onEditCard,allowEdit:n.allowEdit,index:y.index,columnId:o.id,overId:l,overSide:s})},x)})})})})}),n.allowAdd&&t.jsx("div",{className:"p-3 border-t border-slate-200 shrink-0 relative z-20",onClick:y=>y.stopPropagation(),children:n.renderAddButton?n.renderAddButton({columnId:o.id,onClick:()=>g(o.id)}):t.jsx(Be,{onClick:()=>g(o.id)})})]})}const he=p.memo(Ke),Le=w.Root,$e=w.Trigger,Pe=w.Portal,Ge=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Overlay,{className:A("fixed inset-0 z-50 bg-black/40 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",r),...e,ref:a}));Ge.displayName=w.Overlay.displayName;const We=ne.cva("fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500",{variants:{side:{top:"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top",bottom:"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom",left:"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm",right:"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm"}},defaultVariants:{side:"right"}}),fe=j.forwardRef(({side:r="right",className:e,children:a,...l},s)=>t.jsx(Pe,{children:t.jsxs(w.Content,{ref:s,className:A(We({side:r}),"bg-white shadow-2xl",e),...l,children:[a,t.jsxs(w.Close,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary",children:[t.jsx(v.X,{className:"h-4 w-4"}),t.jsx("span",{className:"sr-only",children:"Close"})]})]})}));fe.displayName=w.Content.displayName;const be=({className:r,...e})=>t.jsx("div",{className:A("flex flex-col space-y-2 text-center sm:text-left",r),...e});be.displayName="SheetHeader";const Ce=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Title,{ref:a,className:A("text-lg font-semibold text-foreground",r),...e}));Ce.displayName=w.Title.displayName;const ve=j.forwardRef(({className:r,...e},a)=>t.jsx(w.Description,{ref:a,className:A("text-sm text-muted-foreground",r),...e}));ve.displayName=w.Description.displayName;function Qe({group:r,availableFields:e}){const{updateFilterGroup:a,removeFilterGroup:l}=q(),s=()=>{const c={id:crypto.randomUUID(),field:"",operator:"contains",value:"",enabled:!0};a(r.id,{rules:[...r.rules,c]})},n=c=>{a(r.id,{rules:r.rules.filter(d=>"id"in d&&d.id!==c)})},i=(c,d)=>{a(r.id,{rules:r.rules.map(o=>"id"in o&&o.id===c?{...o,...d}:o)})},u=()=>{a(r.id,{conjunction:r.conjunction==="and"?"or":"and"})};return t.jsxs("div",{className:"p-4 border rounded-lg bg-slate-50/50 space-y-4 relative group",children:[t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx(N,{variant:"ghost",size:"sm",className:"h-7 text-[10px] uppercase font-bold tracking-wider hover:bg-white",onClick:u,children:r.conjunction}),t.jsx("span",{className:"text-xs text-muted-foreground italic",children:"dos seguintes critérios:"})]}),t.jsx(N,{variant:"ghost",size:"icon",className:"h-8 w-8 text-destructive opacity-0 group-hover:opacity-100 transition-opacity",onClick:()=>l(r.id),children:t.jsx(v.Trash2,{className:"h-4 w-4"})})]}),t.jsxs("div",{className:"space-y-3",children:[r.rules.map(c=>"field"in c?t.jsx(Ue,{rule:c,availableFields:e,onDelete:()=>n(c.id),onUpdate:d=>i(c.id,d)},c.id):null),r.rules.length===0&&t.jsx("div",{className:"text-center py-4 border-2 border-dashed rounded-md bg-white/50 cursor-pointer hover:bg-white transition-colors",onClick:s,children:t.jsx("p",{className:"text-xs text-muted-foreground",children:"Nenhuma regra definida. Clique para adicionar."})})]}),t.jsxs(N,{variant:"ghost",size:"sm",className:"w-full h-8 text-xs border-dashed border hover:border-solid mt-2 bg-white",onClick:s,children:[t.jsx(v.Plus,{className:"mr-2 h-3 w-3"}),"Adicionar Regra"]})]})}function Ue({rule:r,availableFields:e,onDelete:a,onUpdate:l}){const s=[{label:"contém",value:"contains"},{label:"não contém",value:"notContains"},{label:"igual a",value:"eq"},{label:"diferente de",value:"neq"},{label:"maior que",value:"gt"},{label:"menor que",value:"lt"},{label:"está vazio",value:"isEmpty"},{label:"não está vazio",value:"isNotEmpty"}];return t.jsxs("div",{className:`flex items-center gap-2 bg-white p-2 rounded-md border shadow-sm transition-all duration-200 group/row ${r.enabled?"hover:border-primary/30":"opacity-50 grayscale bg-slate-50"}`,children:[t.jsx("input",{type:"checkbox",checked:r.enabled,onChange:n=>l({enabled:n.target.checked}),className:"h-3 w-3 rounded border-slate-300 text-primary focus:ring-primary cursor-pointer",title:r.enabled?"Desabilitar regra":"Habilitar regra"}),t.jsxs("select",{value:r.field,onChange:n=>l({field:n.target.value}),className:"flex-[1.5] min-w-[100px] bg-transparent text-[11px] font-semibold focus:outline-none truncate",disabled:!r.enabled,children:[t.jsx("option",{value:"",disabled:!0,children:"Campo..."}),e.map(n=>t.jsx("option",{value:n.value,children:n.label},n.value))]}),t.jsx("select",{value:r.operator,onChange:n=>l({operator:n.target.value}),className:"flex-1 min-w-[90px] bg-transparent text-[11px] text-muted-foreground focus:outline-none border-x px-2",disabled:!r.enabled,children:s.map(n=>t.jsx("option",{value:n.value,children:n.label},n.value))}),t.jsx("input",{type:(e.find(n=>n.value===r.field)?.type??"text")==="number"?"number":"text",value:r.value||"",onChange:n=>l({value:n.target.value}),placeholder:"Valor...",disabled:!r.enabled||r.operator==="isEmpty"||r.operator==="isNotEmpty",className:"flex-[2] min-w-[100px] bg-transparent text-[11px] focus:outline-none placeholder:italic disabled:opacity-30 font-medium"}),t.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 shrink-0 hover:bg-destructive/10 hover:text-destructive opacity-0 group-row-hover/row:opacity-100 transition-opacity",onClick:a,children:t.jsx(v.X,{className:"h-3 w-3"})})]})}function xe(r){const e={title:{label:"Título",value:"title",type:"text"},description:{label:"Descrição",value:"description",type:"text"}};return Object.values(r).forEach(a=>{a.metadata&&typeof a.metadata=="object"&&Object.entries(a.metadata).forEach(([l,s])=>{const n=`metadata.${l}`;if(!e[n]){let i="other";typeof s=="string"?i="text":typeof s=="number"?i="number":typeof s=="boolean"&&(i="boolean"),e[n]={label:`${l.charAt(0).toUpperCase()+l.slice(1)} (Meta)`,value:n,type:i}}})}),Object.values(e)}function _e(){const{filters:r,addFilterGroup:e,cards:a}=q(),l=p.useMemo(()=>xe(a),[a]),s=()=>{const n={id:crypto.randomUUID(),conjunction:"and",rules:[],enabled:!0};e(n)};return t.jsxs(Le,{children:[t.jsx($e,{asChild:!0,children:t.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-slate-600 bg-white hover:bg-slate-50 border-slate-200 shadow-sm",children:[t.jsx(v.Filter,{className:"h-4 w-4"}),"Filtros",r.groups.length>0&&t.jsx("span",{className:"flex h-5 w-5 items-center justify-center rounded-full bg-primary text-[10px] text-primary-foreground font-bold shadow-sm",children:r.groups.length})]})}),t.jsxs(fe,{className:"w-full sm:w-[600px] sm:max-w-none overflow-y-auto bg-white/95 backdrop-blur-sm border-l shadow-2xl",children:[t.jsx(be,{className:"pb-6 border-b",children:t.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxs("div",{children:[t.jsx(Ce,{className:"text-xl font-bold text-slate-800",children:"Filtros Avançados"}),t.jsx(ve,{className:"text-sm text-slate-500",children:"Crie combinações de filtros para refinar sua visualização do board."})]}),r.groups.length>0&&t.jsx(N,{variant:"ghost",size:"sm",onClick:q.getState().clearFilters,className:"text-xs font-bold text-slate-400 hover:text-destructive h-8",children:"Limpar Tudo"})]})}),t.jsxs("div",{className:"mt-8 space-y-6",children:[r.groups.length===0?t.jsxs("div",{className:"text-center py-12 px-6 bg-slate-50/50 border-2 border-dashed border-slate-200 rounded-xl space-y-2",children:[t.jsx(v.Filter,{className:"mx-auto h-8 w-8 text-slate-300"}),t.jsx("p",{className:"text-slate-600 font-medium",children:"Nenhum filtro ativo."}),t.jsx("p",{className:"text-xs text-slate-400",children:"Adicione um grupo para começar a filtrar seus itens."})]}):t.jsx("div",{className:"space-y-6",children:r.groups.map(n=>t.jsx(Qe,{group:n,availableFields:l},n.id))}),t.jsxs(N,{onClick:s,className:"w-full",variant:"outline",children:[t.jsx(v.Plus,{className:"mr-2 h-4 w-4"}),"Adicionar Grupo de Filtros"]})]})]})]})}function Xe({columnId:r,onAdd:e,onCancel:a}){const[l,s]=p.useState(""),[n,i]=p.useState(""),[u,c]=p.useState("medium"),d=o=>{o.preventDefault(),e({title:l,description:n,metadata:{priority:u}})};return t.jsx(_,{open:!0,onOpenChange:o=>!o&&a(),children:t.jsxs($,{className:"sm:max-w-[425px]",children:[t.jsxs(P,{children:[t.jsx(G,{children:"Adicionar Novo Card"}),t.jsx(J,{children:"Novo item para a coluna."})]}),t.jsxs("form",{onSubmit:d,className:"grid gap-4 py-4",children:[t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"title",className:"text-sm font-medium leading-none",children:"Título"}),t.jsx("input",{id:"title",autoFocus:!0,value:l,onChange:o=>s(o.target.value),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"O que precisa ser feito?"})]}),t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{className:"text-sm font-medium leading-none",children:"Prioridade"}),t.jsx("div",{className:"flex gap-2",children:["low","medium","high"].map(o=>t.jsx("button",{type:"button",onClick:()=>c(o),className:F("flex-1 px-3 py-2 text-xs font-bold uppercase tracking-wider rounded-md border transition-all",u===o?o==="high"?"bg-red-100 border-red-500 text-red-700":o==="medium"?"bg-amber-100 border-amber-500 text-amber-900":"bg-emerald-100 border-emerald-500 text-emerald-800":"bg-transparent border-slate-200 text-slate-500 hover:bg-slate-50"),children:o==="low"?"Baixa":o==="medium"?"Média":"Alta"},o))})]}),t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"desc",className:"text-sm font-medium leading-none",children:"Descrição"}),t.jsx("textarea",{id:"desc",value:n,onChange:o=>i(o.target.value),rows:3,className:"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm resize-none focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Detalhes adicionais..."})]}),t.jsxs(X,{children:[t.jsx(N,{type:"button",variant:"outline",onClick:a,children:"Cancelar"}),t.jsxs(N,{type:"submit",className:"gap-2 bg-blue-600 hover:bg-blue-700 text-white",children:[t.jsx(v.Plus,{size:16}),"Criar Card"]})]})]})]})})}function Je({column:r,onSave:e,onCancel:a,onDelete:l}){const[s,n]=p.useState(r.title||""),i=u=>{u.preventDefault(),e({title:s})};return t.jsx(_,{open:!0,onOpenChange:u=>!u&&a(),children:t.jsxs($,{className:"sm:max-w-[400px]",children:[t.jsxs(P,{children:[t.jsx(G,{children:"Editar Coluna"}),t.jsx(J,{children:"Gerencie as configurações desta coluna."})]}),t.jsxs("form",{onSubmit:i,className:"grid gap-4 py-4",children:[t.jsxs("div",{className:"grid gap-2",children:[t.jsx("label",{htmlFor:"col-title",className:"text-sm font-medium leading-none",children:"Nome da Coluna"}),t.jsx("input",{id:"col-title",autoFocus:!0,value:s,onChange:u=>n(u.target.value),className:"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",placeholder:"Ex: A Fazer"})]}),t.jsxs(X,{className:"flex items-center justify-between w-full sm:justify-between",children:[l?t.jsxs(N,{type:"button",variant:"destructive",size:"sm",onClick:()=>{window.confirm("Tem certeza que deseja excluir esta coluna e mover seus cards para a anterior?")&&l()},className:"gap-2",children:[t.jsx(v.Trash2,{size:14}),"Excluir"]}):t.jsx("div",{}),t.jsxs("div",{className:"flex gap-2",children:[t.jsx(N,{type:"button",variant:"outline",onClick:a,children:"Cancelar"}),t.jsxs(N,{type:"submit",className:"gap-2",children:[t.jsx(v.Save,{size:14}),"Salvar"]})]})]})]})]})})}const Ye=p.memo(({children:r})=>{const{setNodeRef:e,isOver:a}=I.useDroppable({id:"new-column-drop-target",data:{type:"NewColumn"}});return t.jsx(t.Fragment,{children:r(a,e)})}),Ze=p.memo(({id:r,start:e,width:a,children:l,allowReorder:s,cardIds:n})=>{const{attributes:i,listeners:u,setNodeRef:c,transform:d,transition:o,isDragging:g}=H.useSortable({id:r,disabled:!s,data:{type:"Column",children:n}}),f={position:"absolute",top:0,left:`${e}px`,width:`${a}px`,transition:o||"transform 250ms cubic-bezier(0.18, 0.67, 0.6, 1.22)",transform:d&&!g?le.CSS.Transform.toString(d):void 0,zIndex:g?50:void 0,pointerEvents:g?"none":void 0,animation:g?"tilt 0.2s ease-in-out forwards":void 0};return t.jsx("div",{ref:c,style:f,children:p.isValidElement(l)?p.cloneElement(l,{dragHandleProps:s?{attributes:i,listeners:u}:void 0,isDragging:g}):l})});function ee({config:r}){const e=oe(r),a=p.useRef(null),l=te.useVirtualizer({horizontal:!0,count:e.columnOrder.length,getScrollElement:()=>a.current,estimateSize:()=>e.config.columnWidth+e.config.gap,overscan:5}),s=p.useMemo(()=>{const m={};Object.values(e.cards).forEach(S=>{de(S,e.filters)&&(m[S.id]=S)});const C={};return Object.values(e.columns).forEach(S=>{C[S.id]={...S,cardIds:S.cardIds.filter(y=>m[y])}}),{cards:m,columns:C}},[e.cards,e.columns,e.filters]),n=p.useRef(null),i=p.useRef(!1);p.useEffect(()=>{requestAnimationFrame(()=>{i.current=!1})},[e.columnOrder,e.columns]);const u=Fe({dragActivationDistance:e.config.dragActivationDistance,touchActivationDelay:e.config.touchActivationDelay,onDragStart:(m,C)=>{e.handleDragStart(m)},onDragOver:e.handleDragOver,onDragEnd:e.handleDragEnd,onCardMove:e.moveCard,onColumnMove:e.moveColumn,onCreateColumnWithCard:(m,C)=>{e.addColumnWithCard(m,C,{title:"Nova Coluna"})},columns:e.columns,columnOrder:e.columnOrder,recentlyMovedToNewContainer:i}),c=e.activeId&&e.cards[e.activeId]?e.cards[e.activeId]:null,d=e.activeId&&e.columnOrder.includes(e.activeId)?e.columns[e.activeId]:null,o=e.viewingCardId?e.cards[e.viewingCardId]:null,g=e.editingColumnId?e.columns[e.editingColumnId]:null,f={renderCard:r?.renderCard??(m=>t.jsx(ce,{...m})),renderColumnHeader:r?.renderColumnHeader??(m=>t.jsx(me,{...m})),renderColumnEmpty:r?.renderColumnEmpty??(()=>t.jsx(ue,{})),renderAddButton:r?.renderAddButton,renderAddForm:r?.renderAddForm,renderEditForm:r?.renderEditForm,renderAddColumnButton:r?.renderAddColumnButton,renderAddColumnForm:r?.renderAddColumnForm,renderEditColumnForm:r?.renderEditColumnForm,estimatedCardHeight:e.config.estimatedCardHeight,virtualOverscan:e.config.virtualOverscan,columnWidth:e.config.columnWidth,columnMinHeight:e.config.columnMinHeight,onCardClick:r?.onCardClick??(m=>e.setViewingCardId(m.id)),onColumnClick:r?.onColumnClick,onEdit:e.config.allowEdit?e.setEditingCardId:void 0,onEditColumn:m=>e.setEditingColumnId(m.id),renderCardView:r?.renderCardView,allowAdd:e.config.allowAdd,allowColumnAdd:e.config.allowColumnAdd,allowColumnEdit:e.config.allowColumnEdit,allowColumnDelete:e.config.allowColumnDelete,allowColumnReorder:e.config.allowColumnReorder,allowFilters:e.config.allowFilters},b=m=>{const C=m.active.id;if(!(C&&!e.columnOrder.includes(C)))return I.closestCenter(m);const y=I.pointerWithin(m);if(C&&y.length>0){const M=y.find(V=>V.id==="new-column-drop-target");if(M)return[M]}const x=y.length>0?y:I.rectIntersection(m);let D=I.getFirstCollision(x,"id");if(D!=null){if(e.columnOrder.includes(D)){const M=e.columns[D];if(M&&M.cardIds.length>0){const V=m.droppableContainers.filter(O=>O.id!==D&&M.cardIds.includes(O.id));V.length>0&&(D=I.closestCenter({...m,droppableContainers:V})[0]?.id??D)}}return n.current=D,[{id:D}]}const k=I.closestCenter({...m,droppableContainers:m.droppableContainers.filter(M=>M.id!==C)});return k.length>0?(n.current=k[0].id,k):(i.current&&(n.current=C),n.current?[{id:n.current}]:[])};return t.jsx(I.DndContext,{sensors:u.sensors,collisionDetection:b,measuring:{droppable:{strategy:I.MeasuringStrategy.Always}},onDragStart:u.handleDragStart,onDragOver:u.handleDragOver,onDragEnd:u.handleDragEnd,children:t.jsxs("div",{className:"flex flex-col h-full bg-slate-50 relative group/board overflow-hidden",children:[e.config.allowFilters&&t.jsx("div",{className:"absolute top-4 right-6 z-30 pointer-events-none",children:t.jsx("div",{className:"pointer-events-auto transition-all duration-300 translate-y-[-10px] opacity-0 group-hover/board:translate-y-0 group-hover/board:opacity-100",children:t.jsx(_e,{})})}),e.config.allowFilters&&t.jsx(Te,{}),t.jsx("div",{ref:a,className:"flex-1 overflow-x-auto overflow-y-hidden",children:t.jsxs("div",{style:{width:`${l.getTotalSize()+(e.config.allowColumnAdd?200:0)}px`,height:"100%",position:"relative"},children:[t.jsx(H.SortableContext,{items:e.columnOrder,strategy:H.horizontalListSortingStrategy,children:l.getVirtualItems().map(m=>{const C=e.columnOrder[m.index];return t.jsx(Ze,{id:C,start:m.start,width:e.config.columnWidth,allowReorder:e.config.allowColumnReorder,cardIds:s.columns[C]?.cardIds??[],children:t.jsx(he,{column:s.columns[C],allCards:s.cards,activeId:e.activeId,overId:e.overId,overSide:e.overSide,config:f,isActiveColumnDragging:e.activeId?e.columnOrder.includes(e.activeId):!1})},C)})}),e.config.allowColumnAdd&&t.jsx(Ye,{children:(m,C)=>t.jsx("div",{ref:C,className:"h-full z-10",style:{position:"absolute",top:0,left:`${l.getTotalSize()}px`,width:e.config.columnWidth,height:"100%",boxSizing:"border-box",paddingRight:e.config.gap},children:r?.renderAddColumnButton?r.renderAddColumnButton({onClick:()=>e.addColumn({title:"Nova Coluna"})}):t.jsxs("button",{onClick:()=>e.addColumn({title:"Nova Coluna"}),className:A("flex items-center gap-2 w-full p-4 bg-slate-100/50 hover:bg-slate-200 text-slate-600 rounded-lg border-2 border-dashed transition-all font-semibold h-[200px] justify-center",m?"bg-blue-100 border-blue-400 text-blue-600 scale-[1.02] shadow-lg ring-4 ring-blue-500/20":"border-slate-300"),children:[t.jsx(v.Plus,{size:20}),m?"Soltar para criar":"Nova Coluna"]})})})]})}),e.editingCardId&&e.config.allowEdit&&(()=>{const m=e.cards[e.editingCardId];return m?r?.renderEditForm?r.renderEditForm({card:m,onSave:C=>{e.updateCard(e.editingCardId,C),e.clearEditingCardId()},onCancel:e.clearEditingCardId,onDelete:()=>{e.deleteCard(e.editingCardId),e.clearEditingCardId()}}):t.jsx(je,{card:m,onSave:C=>{e.updateCard(e.editingCardId,C),e.clearEditingCardId()},onCancel:e.clearEditingCardId,onDelete:()=>{e.deleteCard(e.editingCardId),e.clearEditingCardId()}}):null})(),e.addingCardInColumnId&&e.config.allowAdd&&(r?.renderAddForm?r.renderAddForm({columnId:e.addingCardInColumnId,onAdd:m=>{e.addCard(e.addingCardInColumnId,m),e.clearAddingCardInColumnId()},onCancel:e.clearAddingCardInColumnId}):t.jsx(Xe,{columnId:e.addingCardInColumnId,onAdd:m=>{e.addCard(e.addingCardInColumnId,m),e.clearAddingCardInColumnId()},onCancel:e.clearAddingCardInColumnId})),g&&e.config.allowColumnEdit&&(r?.renderEditColumnForm?r.renderEditColumnForm({column:g,onSave:m=>{e.updateColumn(g.id,m),e.clearEditingColumnId()},onCancel:e.clearEditingColumnId,onDelete:e.config.allowColumnDelete?()=>{e.deleteColumn(g.id),e.clearEditingColumnId()}:void 0}):t.jsx(Je,{column:g,onSave:m=>{e.updateColumn(g.id,m),e.clearEditingColumnId()},onCancel:e.clearEditingColumnId,onDelete:e.config.allowColumnDelete?()=>{e.deleteColumn(g.id),e.clearEditingColumnId()}:void 0})),o&&(f.renderCardView?f.renderCardView({card:o,onClose:e.clearViewingCardId}):t.jsx(Me,{card:o,onClose:e.clearViewingCardId})),t.jsxs(I.DragOverlay,{dropAnimation:null,children:[c&&t.jsx("div",{className:"z-50 cursor-grabbing animate-tilt shadow-2xl rounded-card overflow-hidden",children:f.renderCard({card:c,isDragging:!0})}),d?t.jsx(he,{column:d,allCards:e.cards,activeId:null,overId:null,overSide:null,config:f,isDragging:!1,isOverlay:!0,dragHandleProps:{attributes:{},listeners:{}}}):null]})]})})}const Re=r=>e=>e.cards[r],et=r=>r.cards,tt=r=>e=>r.map(a=>e.cards[a]).filter(Boolean),rt=r=>e=>e.columns[r],at=r=>r.columns,lt=r=>r.columnOrder,nt=r=>e=>{const a=e.columns[r];return a?a.cardIds.map(l=>e.cards[l]).filter(Boolean):[]},st=r=>e=>e.columns[r]?.cardIds||[],ot=r=>r.moveCard,dt=r=>r.moveColumn,it=r=>r.setBoardData,ct=r=>({cards:r.cards,columns:r.columns,columnOrder:r.columnOrder}),ut=r=>Object.keys(r.cards).length,mt=r=>r.columnOrder.length,we=()=>{const[r,e]=p.useState(0),a=p.useRef(0),l=p.useRef(performance.now());return p.useEffect(()=>{let s;const n=i=>{a.current++;const u=i-l.current;u>=1e3&&(e(Math.round(a.current*1e3/u)),a.current=0,l.current=i),s=requestAnimationFrame(n)};return s=requestAnimationFrame(n),()=>{cancelAnimationFrame(s)}},[]),r},pt=({cardCount:r,columnCount:e})=>{const a=we(),[l,s]=p.useState(60),[n,i]=p.useState(0),[u,c]=p.useState(!1);return p.useEffect(()=>{a>0&&(a<l&&s(a),a>n&&i(a))},[a]),p.useEffect(()=>{if(!u)return;const d=document.querySelectorAll(".overflow-y-auto");let o=1,g=2,f;const b=()=>{d.forEach(m=>{m.scrollTop+=g*o,m.scrollTop>=m.scrollHeight-m.clientHeight&&(o=-1),m.scrollTop<=0&&(o=1)}),f=requestAnimationFrame(b)};return f=requestAnimationFrame(b),()=>cancelAnimationFrame(f)},[u]),t.jsxs("div",{className:"fixed bottom-4 right-4 bg-slate-900/90 text-white p-4 rounded-lg shadow-lg backdrop-blur-sm z-50 font-mono text-sm",children:[t.jsxs("div",{className:"flex items-center justify-between mb-2 gap-2",children:[t.jsx("h3",{className:"font-bold text-blue-400",children:"⚡ Performance Stats"}),t.jsx("button",{onClick:()=>c(!u),className:`text-xs px-2 py-1 rounded ${u?"bg-red-500 hover:bg-red-600":"bg-blue-600 hover:bg-blue-700"}`,children:u?"Stop Stress Test":"Start Stress Test"})]}),t.jsxs("div",{className:"grid grid-cols-2 gap-x-4 gap-y-1",children:[t.jsx("span",{className:"text-slate-400",children:"FPS:"}),t.jsx("span",{className:`font-bold ${a<30?"text-red-400":a<50?"text-yellow-400":"text-green-400"}`,children:a}),t.jsx("span",{className:"text-slate-400",children:"Min FPS:"}),t.jsx("span",{className:"text-slate-200",children:l}),t.jsx("span",{className:"text-slate-400",children:"Cards:"}),t.jsx("span",{className:"text-slate-200",children:r}),t.jsx("span",{className:"text-slate-400",children:"Columns:"}),t.jsx("span",{className:"text-slate-200",children:e})]})]})};h.BenchmarkStats=pt,h.Kanban=ee,h.Kanbase=ee,h.KanboomBoard=ee,h.discoverFields=xe,h.evaluateFilter=de,h.selectAllCards=et,h.selectAllColumns=at,h.selectBoardData=ct,h.selectCard=Re,h.selectCardCount=ut,h.selectCardsByIds=tt,h.selectColumn=rt,h.selectColumnCardIds=st,h.selectColumnCards=nt,h.selectColumnCount=mt,h.selectColumnOrder=lt,h.selectMoveCard=ot,h.selectMoveColumn=dt,h.selectSetBoardData=it,h.useFPS=we,h.useKanban=oe,h.useKanbanStore=q,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})}));
|
|
2
2
|
//# sourceMappingURL=kanbase.umd.js.map
|