@codingfactory/task-engine-client 1.0.3 → 1.0.4

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.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Ta=require("axios"),ot=require("pinia"),e=require("vue"),Ca="/api/task-engine/v1";function he(t,a){return a===void 0?{}:{[t]:a}}function Sa(t){return typeof t=="object"&&t!==null&&"id"in t&&"name"in t}function se(t,a){if(t==null||t==="")return null;if(Sa(t))return t;if(typeof t=="string"||typeof t=="number")return{id:t,name:a??String(t)};if(typeof t=="object"&&t!==null){const l=t,o=l.id??l.user_id,n=l.name??l.email??o,i=typeof l.avatar_url=="string"?l.avatar_url:void 0;if(o!==void 0&&n!==void 0)return{id:o,name:String(n),...he("avatar_url",i)}}return null}function wt(t){return{id:t.id,name:t.name,color:t.color,...he("created_at",t.created_at),...he("updated_at",t.updated_at)}}function Et(t){return t==null?null:{open_tasks:Number(t.open_tasks??0),overdue_tasks:Number(t.overdue_tasks??0),blocked_tasks:Number(t.blocked_tasks??0),urgent_tasks:Number(t.urgent_tasks??0),critical_tasks:Number(t.critical_tasks??0),workload_score:Number(t.workload_score??0),workload_status:t.workload_status??"light",workload_summary:typeof t.workload_summary=="string"&&t.workload_summary.trim()!==""?t.workload_summary:"No active tasks"}}function Da(t){const a=typeof t.position=="string"&&t.position.trim()!==""?t.position.trim():null,l=typeof t.department=="string"&&t.department.trim()!==""?t.department.trim():null,o=typeof t.subtitle=="string"&&t.subtitle.trim()!==""?t.subtitle.trim():a??l??(typeof t.email=="string"&&t.email.trim()!==""?t.email.trim():null),n=typeof t.label=="string"&&t.label.trim()!==""?t.label.trim():o===null?t.name:`${t.name} - ${o}`;return{id:String(t.id),name:t.name,email:typeof t.email=="string"&&t.email.trim()!==""?t.email.trim():null,label:n,subtitle:o,department:l,position:a,role_names:Array.isArray(t.role_names)?t.role_names.filter(i=>typeof i=="string"&&i.trim()!==""):[],workload:Et(t.workload)}}function Ma(t){return{user_id:String(t.user_id),user_name:t.user_name,avg_completion_time_hours:typeof t.avg_completion_time_hours=="number"?t.avg_completion_time_hours:null,team_id:typeof t.team_id=="string"&&t.team_id.trim()!==""?t.team_id:null,...Et(t)}}function Aa(t){return{scope:t.scope??"tenant",total_open:Number(t.total_open??0),total_overdue:Number(t.total_overdue??0),total_blocked:Number(t.total_blocked??0),by_priority:t.by_priority??{},by_status:t.by_status??{},top_overdue_tasks:Array.isArray(t.top_overdue_tasks)?t.top_overdue_tasks.map(a=>({id:a.id,display_number_formatted:a.display_number_formatted,title:a.title,priority:a.priority??"none",status:a.status,due_at:a.due_at??null,current_escalation_tier:a.current_escalation_tier??null})):[],stale_tasks:Array.isArray(t.stale_tasks)?t.stale_tasks.map(a=>({id:a.id,display_number_formatted:a.display_number_formatted,title:a.title,status:a.status,updated_at:a.updated_at??null})):[],workload_per_user:Array.isArray(t.workload_per_user)?t.workload_per_user.map(Ma):[]}}function Re(t){return{id:t.id,...he("task_id",t.task_id),title:t.title,is_completed:t.is_completed,completed_at:t.completed_at,completed_by:se(t.completed_by),position:t.position,template_item_id:t.template_item_id??null}}function za(t){return{id:t.id,tenant_id:t.tenant_id,display_number:Number(t.display_number??0),display_number_formatted:t.display_number_formatted,title:t.title,description:t.description??null,status:t.status,priority:t.priority??"none",taskable_type:t.taskable_type??null,taskable_id:t.taskable_id??null,created_by:t.created_by??null,primary_assignee_id:t.primary_assignee_id??null,due_at:t.due_at??null,completed_at:t.completed_at??null,completed_by:t.completed_by??null,source:t.source,source_id:t.source_id??null,metadata:t.metadata??null,completion_rules:t.completion_rules??null,comment_count:Number(t.comment_count??0),checklist_total:Number(t.checklist_total??0),checklist_completed:Number(t.checklist_completed??0),subtask_count:Number(t.subtask_count??0),snapshot:t.snapshot??null,archived_at:t.archived_at??null,archived_by:t.archived_by??null,created_at:t.created_at??null,updated_at:t.updated_at??null,deleted_at:t.deleted_at??null}}function qe(t){return t===null?null:{id:t.id,display_number_formatted:t.display_number_formatted,title:t.title,status:t.status,priority:t.priority??"none"}}function Xe(t){return{id:t.id,type:t.type_for_task??t.type,related_task:qe(t.related_task),created_at:t.created_at??null}}function et(t){return{id:t.id,...he("task_id",t.task_id),author:se(t.author??t.author_id,"Unknown User")??{id:"unknown",name:"Unknown User"},content:t.content,visibility:t.visibility,metadata:t.metadata??null,created_at:t.created_at,updated_at:t.updated_at??null}}function De(t){return{id:t.id,task_id:t.task_id,user_id:t.user_id,user:se(t.user??t.user_id),started_at:t.started_at,stopped_at:t.stopped_at,duration_minutes:t.duration_minutes,description:t.description,is_manual:t.is_manual,is_running:t.is_running??t.stopped_at===null,created_at:t.created_at,updated_at:t.updated_at}}function Ia(t){return{id:t.id,...he("task_id",t.task_id),user:se(t.user??t.user_id),action:t.action,description:t.description,changes:t.changes,metadata:t.metadata,created_at:t.created_at}}function xa(t){return{id:t.id,tenant_id:t.tenant_id,profile_key:t.profile_key,name:t.name,description:t.description,is_default:t.is_default,tiers:t.tiers.map(a=>({name:a.name,label:a.label,offset_hours:a.offset_hours,visual:a.visual,channels:a.channels,target:a.target,cooldown_hours:a.cooldown_hours,color:a.color})),business_hours_only:t.business_hours_only,quiet_hours_start:t.quiet_hours_start,quiet_hours_end:t.quiet_hours_end,timezone:t.timezone,created_at:t.created_at,updated_at:t.updated_at}}function Vt(t){return{id:t.id,tenant_id:t.tenant_id,task_id:t.task_id,policy_id:t.policy_id,tier_name:t.tier_name,tier_label:t.tier_label,event_type:t.event_type,target_user_id:t.target_user_id,target_role:t.target_role,target_user:se(t.target_user),channels_used:t.channels_used??[],acknowledged_at:t.acknowledged_at,acknowledged_by:t.acknowledged_by,acknowledged_by_user:se(t.acknowledged_by_user),snoozed_until:t.snoozed_until,snooze_reason:t.snooze_reason,blocker_task_id:t.blocker_task_id,blocker_task:qe(t.blocker_task),metadata:t.metadata??null,created_at:t.created_at}}function tt(t){var o,n;const a=((o=t.checklist_items)==null?void 0:o.map(Re))??[],l=a.filter(i=>i.is_completed).length;return{id:t.id,tenant_id:t.tenant_id,display_number:t.display_number,display_number_formatted:t.display_number_formatted,title:t.title,description:t.description??null,status:t.status,priority:t.priority,taskable_type:t.taskable_type,taskable_id:t.taskable_id,created_by:se(t.created_by),primary_assignee:se(t.primary_assignee??t.primary_assignee_id),due_at:t.due_at,completed_at:t.completed_at,completed_by:se(t.completed_by),source:t.source,source_id:t.source_id,template_item_id:t.template_item_id??null,escalation_policy_id:t.escalation_policy_id??null,current_escalation_tier:t.current_escalation_tier??null,current_escalation_label:t.current_escalation_label??null,next_escalation_at:t.next_escalation_at??null,escalation_acknowledged_at:t.escalation_acknowledged_at??null,escalation_snoozed_until:t.escalation_snoozed_until??null,comment_count:t.comment_count??null,checklist_total:t.checklist_total??null,checklist_completed:t.checklist_completed??null,blocker_count:t.blocker_count??null,open_blocker_count:t.open_blocker_count??null,has_unresolved_blockers:t.has_unresolved_blockers??null,subtask_count:t.subtask_count??null,completed_subtask_count:t.completed_subtask_count??null,completion_rules:t.completion_rules??null,time_tracked_minutes:t.time_tracked_minutes??null,tags:((n=t.tags)==null?void 0:n.map(wt))??[],checklist_progress:{completed:a.length===0?Math.round((t.progress_percentage??0)/100):l,total:a.length},is_overdue:t.is_overdue,is_complete:t.is_complete,progress_percentage:t.progress_percentage??(a.length===0?0:Math.round(l/a.length*100)),metadata:t.metadata??null,created_at:t.created_at,updated_at:t.updated_at}}function pe(t){var o,n,i,r,s,k;const a=tt(t),l=((o=t.assignments)==null?void 0:o.filter(d=>d.role==="watcher"))??[];return{...a,comments:((n=t.comments)==null?void 0:n.map(et))??[],checklist_items:((i=t.checklist_items)==null?void 0:i.map(Re))??[],time_entries:((r=t.time_entries)==null?void 0:r.map(De))??[],watchers:l.map(d=>se(d.user_id)).filter(d=>d!==null),relations:[...t.outgoing_relations??[],...t.incoming_relations??[]].map(Xe),activity_logs:((s=t.activity_logs)==null?void 0:s.map(Ia))??[],escalation_policy:t.escalation_policy?xa(t.escalation_policy):null,escalation_events:((k=t.escalation_events)==null?void 0:k.map(Vt))??[]}}function Nt(t){var a;return{id:t.id,...he("template_id",t.template_id),parent_item_id:t.parent_item_id??null,type:t.type,title:t.title,description:t.description,default_priority:t.default_priority??null,due_offset_hours:t.due_offset_hours??null,position:t.position,metadata:t.metadata??null,children:((a=t.children)==null?void 0:a.map(Nt))??[]}}function Fa(t){var a,l;return{id:t.id,name:t.name,description:t.description,default_title:t.default_title,default_description:t.default_description??null,default_priority:t.default_priority,...he("default_status",t.default_status),due_offset_hours:t.due_offset_hours??null,items_count:((a=t.items)==null?void 0:a.length)??0,items:((l=t.items)==null?void 0:l.map(Nt))??[],is_active:t.is_active,default_assignee_role:t.default_assignee_role??null,applicable_types:t.applicable_types??null,tags:t.tags??[],position:t.position??0,metadata:t.metadata??null}}function Qe(t){return{id:t.id,tenant_id:t.tenant_id,user_id:t.user_id,name:t.name,filters:t.filters,is_default:t.is_default,is_shared:t.is_shared,position:t.position,created_at:t.created_at,updated_at:t.updated_at}}function Me(t){return{id:t.id,tenant_id:t.tenant_id,name:t.name,description:t.description,trigger_type:t.trigger_type,trigger_type_label:t.trigger_type_label??null,trigger_config:t.trigger_config??null,conditions:t.conditions??[],actions:t.actions??[],is_enabled:t.is_enabled,position:t.position,stop_processing:t.stop_processing,metadata:t.metadata??null,created_by:t.created_by,execution_count:t.execution_count??0,last_executed_at:t.last_executed_at??null,created_at:t.created_at,updated_at:t.updated_at}}function La(t){return{id:t.id,tenant_id:t.tenant_id,workflow_id:t.workflow_id,task_id:t.task_id,trigger_type:t.trigger_type,trigger_type_label:t.trigger_type_label??null,status:t.status,status_label:t.status_label??null,conditions_met:t.conditions_met,actions_executed:(t.actions_executed??[]).map(a=>{const{result:l,...o}=a,n={...o};return l!==void 0&&(n.result={type:l.type,success:l.success,message:l.message,data:l.data??{},dry_run:l.dry_run??!1}),n}),error:t.error,duration_ms:t.duration_ms,failed_action_index:t.failed_action_index??null,failed_action_type:t.failed_action_type??null,idempotency_key:t.idempotency_key??null,executed_at:t.executed_at,created_at:t.created_at,updated_at:t.updated_at}}function Ua(t){return{workflow:Me(t.workflow),task_id:t.task_id,trigger_matched:t.trigger_matched,conditions_met:t.conditions_met,actions:t.actions.map(a=>({type:a.type,success:a.success,message:a.message,data:a.data??{},dry_run:a.dry_run??!1}))}}function Ra(t){return{success:t.success??[],failed:t.failed??[]}}function st(t){return{id:t.id,display_number_formatted:t.display_number_formatted,title:t.title,description:t.description,status:t.status,priority:t.priority,due_at:t.due_at,is_overdue:t.is_overdue,primary_assignee:se(t.primary_assignee),created_by:se(t.created_by),completed_by:se(t.completed_by),current_escalation_tier:t.current_escalation_tier??null,current_escalation_label:t.current_escalation_label??null,comment_count:t.comment_count??0,checklist_total:t.checklist_total??0,checklist_completed:t.checklist_completed??0,subtask_count:t.subtask_count??0,progress_percentage:t.progress_percentage??0,created_at:t.created_at,updated_at:t.updated_at}}function Wa(t){return{id:t.id,action:t.action,description:t.description,changes:t.changes,metadata:t.metadata,created_at:t.created_at,user:se(t.user),task:qe(t.task)}}function at(t){return{id:t.id,tenant_id:t.tenant_id,user_id:t.user_id,layout:t.layout,preferences:t.preferences??{},created_at:t.created_at,updated_at:t.updated_at}}function We(t){return{items:t.items.map(st),summary:t.summary}}function $t(t){return{days:t.days.map(a=>({date:a.date,label:a.label,weekday:a.weekday,is_today:a.is_today,tasks:a.tasks.map(st)})),summary:t.summary}}function Pa(t){return{task:st(t.task),health_status:t.health_status,health_score:t.health_score,issues:t.issues.map(a=>({type:a.type,label:a.label,message:a.message,suggested_actions:a.suggested_actions}))}}function Bt(t){return{items:t.items.map(Pa),summary:t.summary}}function Tt(t){return{items:t.items.map(Wa),summary:t.summary}}function Ct(t){return{period:t.period,current:t.current,previous:t.previous,trends:t.trends}}function Oa(t){return{scope:t.scope,config:at(t.config),widgets:{my_tasks_today:We(t.widgets.my_tasks_today),upcoming_this_week:$t(t.widgets.upcoming_this_week),overdue:We(t.widgets.overdue),activity:Tt(t.widgets.activity),my_stats:Ct(t.widgets.my_stats),health_alerts:Bt(t.widgets.health_alerts)},meta:t.meta}}function St(t){return{id:t.id,recurring_template_id:t.recurring_template_id,task_id:t.task_id,occurrence_date:t.occurrence_date,generated_at:t.generated_at,created_at:t.created_at,task:qe(t.task)}}function Se(t){var a;return{id:t.id,tenant_id:t.tenant_id,task_template_id:t.task_template_id,task_template:t.task_template,title:t.title,description:t.description,rrule:t.rrule,rrule_human:t.rrule_human,timezone:t.timezone,taskable_type:t.taskable_type,taskable_id:t.taskable_id,primary_assignee_id:t.primary_assignee_id,priority:t.priority,priority_label:t.priority_label??null,due_offset_hours:t.due_offset_hours,tags:t.tags??[],is_active:t.is_active,skip_holidays:t.skip_holidays,business_hours_only:t.business_hours_only,chain_mode:t.chain_mode,last_generated_at:t.last_generated_at,next_occurrence_at:t.next_occurrence_at,metadata:t.metadata??null,created_by:t.created_by,created_at:t.created_at,updated_at:t.updated_at,deleted_at:t.deleted_at,history:((a=t.history)==null?void 0:a.map(St))??[]}}function Ha(t){var a,l,o,n;return{current_page:((a=t.meta)==null?void 0:a.current_page)??t.current_page??1,last_page:((l=t.meta)==null?void 0:l.last_page)??t.last_page??1,per_page:((o=t.meta)==null?void 0:o.per_page)??t.per_page??t.data.length,total:((n=t.meta)==null?void 0:n.total)??t.total??t.data.length}}function fe(t,a){return{data:t.data.map(a),meta:Ha(t)}}function O(t,a){return`${t.replace(/\/$/,"")}${a}`}function Ge(t){const a={...t},l=t.sort;return typeof l=="string"&&l!==""&&(l.startsWith("-")?(a.sort=l.slice(1),a.direction="desc"):(a.sort=l,a.direction="asc")),typeof t.assignee=="string"?a.assignee_id=t.assignee:typeof t.assignee_id=="string"&&(a.assignee_id=t.assignee_id),delete a.assignee,delete a.assignee_name,a}function it(t={}){const a=t.axios??Ta,l=t.baseUrl??Ca;return{async list(o={}){const n=await a.get(O(l,"/tasks"),{params:Ge(o)});return fe(n.data,tt)},async searchUsers(o,n={}){return(await a.get(O(l,"/users/search"),{params:{query:o,...n}})).data.data.map(Da)},async getWorkload(o={}){const n=await a.get(O(l,"/workload"),{params:o});return Aa(n.data.data)},async listArchives(o={}){const n=await a.get(O(l,"/archives"),{params:o});return fe(n.data,za)},async restoreArchive(o){const n=await a.post(O(l,`/archives/${o}/restore`));return pe(n.data.data)},async get(o){const n=await a.get(O(l,`/tasks/${o}`));return pe(n.data.data)},async create(o){const n=await a.post(O(l,"/tasks"),o);return pe(n.data.data)},async update(o,n){const i=await a.patch(O(l,`/tasks/${o}`),n);return pe(i.data.data)},async delete(o){await a.delete(O(l,`/tasks/${o}`))},async complete(o,n){const i=await a.post(O(l,`/tasks/${o}/complete`),{note:n});return pe(i.data.data)},async reopen(o){const n=await a.post(O(l,`/tasks/${o}/reopen`));return pe(n.data.data)},async cancel(o){const n=await a.post(O(l,`/tasks/${o}/cancel`));return pe(n.data.data)},async assign(o,n){return await a.post(O(l,`/tasks/${o}/assign`),{user_id:n}),this.get(o)},async reassign(o,n){return await a.post(O(l,`/tasks/${o}/reassign`),{user_id:n}),this.get(o)},async addWatcher(o,n){return await a.post(O(l,`/tasks/${o}/watchers`),{user_id:n}),this.get(o)},async removeWatcher(o,n){return await a.delete(O(l,`/tasks/${o}/watchers/${n}`)),this.get(o)},async listComments(o){return(await a.get(O(l,`/tasks/${o}/comments`))).data.data.map(et)},async addComment(o,n){const i=await a.post(O(l,`/tasks/${o}/comments`),n);return et(i.data.data)},async getActiveTimer(){const o=await a.get(O(l,"/time/active"));return o.data.data?De(o.data.data):null},async listTimeEntries(o){var i;const n=await a.get(O(l,`/tasks/${o}/time`));return{entries:n.data.data.map(De),total_minutes:Number(((i=n.data.meta)==null?void 0:i.total_minutes)??0)}},async startTimer(o){var i;const n=await a.post(O(l,`/tasks/${o}/time/start`));return{entry:De(n.data.data),total_minutes:Number(((i=n.data.meta)==null?void 0:i.total_minutes)??0)}},async stopTimer(o){var i;const n=await a.post(O(l,`/tasks/${o}/time/stop`));return{entry:De(n.data.data),total_minutes:Number(((i=n.data.meta)==null?void 0:i.total_minutes)??0)}},async addManualTimeEntry(o,n){var r;const i=await a.post(O(l,`/tasks/${o}/time`),n);return{entry:De(i.data.data),total_minutes:Number(((r=i.data.meta)==null?void 0:r.total_minutes)??0)}},async deleteTimeEntry(o,n){var r;const i=await a.delete(O(l,`/tasks/${o}/time/${n}`));return{total_minutes:Number(((r=i.data.meta)==null?void 0:r.total_minutes)??0)}},async exportTasks(o={}){return(await a.get(O(l,"/tasks/export"),{params:Ge(o),responseType:"text"})).data},async importTasks(o){const n=new FormData;return n.append("file",o),(await a.post(O(l,"/tasks/import"),n,{headers:{"Content-Type":"multipart/form-data"}})).data.data},async acknowledgeEscalation(o){const n=await a.post(O(l,`/tasks/${o}/escalation/acknowledge`));return pe(n.data.data)},async snoozeEscalation(o,n){const i=await a.post(O(l,`/tasks/${o}/escalation/snooze`),n);return pe(i.data.data)},async escalationHistory(o,n={}){const i=await a.get(O(l,`/tasks/${o}/escalation/history`),{params:n});return fe(i.data,Vt)},async addChecklistItem(o,n){const i=await a.post(O(l,`/tasks/${o}/checklist`),{title:n});return Re(i.data.data)},async toggleChecklistItem(o,n){const i=await a.post(O(l,`/tasks/${o}/checklist/${n}/toggle`));return Re(i.data.data)},async removeChecklistItem(o,n){await a.delete(O(l,`/tasks/${o}/checklist/${n}`))},async listRelations(o){return(await a.get(O(l,`/tasks/${o}/relations`))).data.data.map(Xe)},async addRelation(o,n){const i=await a.post(O(l,`/tasks/${o}/relations`),n);return Xe(i.data.data)},async listTags(){return(await a.get(O(l,"/tags"))).data.data.map(wt)},async addTagToTask(o,n){return await a.post(O(l,`/tasks/${o}/tags`),{tag_id:n}),this.get(o)},async listSavedFilters(){return(await a.get(O(l,"/filters"))).data.data.map(Qe)},async createSavedFilter(o){const n=await a.post(O(l,"/filters"),o);return Qe(n.data.data)},async updateSavedFilter(o,n){const i=await a.patch(O(l,`/filters/${o}`),n);return Qe(i.data.data)},async deleteSavedFilter(o){await a.delete(O(l,`/filters/${o}`))},async listWorkflows(o={}){const n=await a.get(O(l,"/workflows"),{params:o});return fe(n.data,Me)},async getWorkflow(o){const n=await a.get(O(l,`/workflows/${o}`));return Me(n.data.data)},async createWorkflow(o){const n=await a.post(O(l,"/workflows"),o);return Me(n.data.data)},async updateWorkflow(o,n){const i=await a.patch(O(l,`/workflows/${o}`),n);return Me(i.data.data)},async deleteWorkflow(o){await a.delete(O(l,`/workflows/${o}`))},async toggleWorkflow(o,n){const i=await a.post(O(l,`/workflows/${o}/toggle`),{is_enabled:n});return Me(i.data.data)},async workflowLogs(o,n={}){const i=await a.get(O(l,`/workflows/${o}/logs`),{params:n});return fe(i.data,La)},async testWorkflow(o,n,i={}){const r=await a.post(O(l,`/workflows/${o}/test`),{task_id:n,context:i});return Ua(r.data.data)},async bulkAction(o,n,i={}){const r=await a.post(O(l,"/tasks/bulk"),{task_ids:o,action:n,params:i});return Ra(r.data.data)},async listTemplates(o={}){const n=await a.get(O(l,"/templates"),{params:o});return fe(n.data,Fa)},async instantiateTemplate(o,n){const i=await a.post(O(l,`/templates/${o}/instantiate`),n);return pe(i.data.data)},async listRecurring(o={}){const n=await a.get(O(l,"/recurring"),{params:o});return fe(n.data,Se)},async getRecurring(o){const n=await a.get(O(l,`/recurring/${o}`));return Se(n.data.data)},async createRecurring(o){const n=await a.post(O(l,"/recurring"),o);return Se(n.data.data)},async updateRecurring(o,n){const i=await a.patch(O(l,`/recurring/${o}`),n);return Se(i.data.data)},async deleteRecurring(o){await a.delete(O(l,`/recurring/${o}`))},async pauseRecurring(o){const n=await a.post(O(l,`/recurring/${o}/pause`));return Se(n.data.data)},async resumeRecurring(o){const n=await a.post(O(l,`/recurring/${o}/resume`));return Se(n.data.data)},async recurringHistory(o,n={}){const i=await a.get(O(l,`/recurring/${o}/history`),{params:n});return fe(i.data,St)},async generateRecurring(o){const n=await a.post(O(l,`/recurring/${o}/generate`));return pe(n.data.data)},async entityTasks(o,n,i={}){const r=await a.get(O(l,`/entity/${o}/${n}/tasks`),{params:Ge(i)});return fe(r.data,tt)},async entitySummary(o,n){const r=(await a.get(O(l,`/entity/${o}/${n}/summary`))).data.data;return{...r,recent_tasks:r.recent_tasks.map(s=>({id:s.id,display_number_formatted:s.display_number_formatted,title:s.title,status:s.status,priority:s.priority??"none"}))}},async getDashboard(o="week"){const n=await a.get(O(l,"/dashboard"),{params:{period:o}});return Oa(n.data.data)},async getDashboardConfig(){const o=await a.get(O(l,"/dashboard/config"));return at(o.data.data)},async updateDashboardConfig(o){const n=await a.put(O(l,"/dashboard/config"),o);return at(n.data.data)},async getDashboardMyTasksToday(){const o=await a.get(O(l,"/dashboard/my-tasks-today"));return We(o.data.data)},async getDashboardUpcoming(){const o=await a.get(O(l,"/dashboard/upcoming"));return $t(o.data.data)},async getDashboardOverdue(){const o=await a.get(O(l,"/dashboard/overdue"));return We(o.data.data)},async getDashboardActivity(){const o=await a.get(O(l,"/dashboard/activity"));return Tt(o.data.data)},async getDashboardStats(o="week"){const n=await a.get(O(l,"/dashboard/stats"),{params:{period:o}});return Ct(n.data.data)},async getDashboardHealthAlerts(){const o=await a.get(O(l,"/dashboard/health-alerts"));return Bt(o.data.data)},async getAnalyticsCompletionRate(o={}){return(await a.get(O(l,"/analytics/completion-rate"),{params:o})).data.data},async getAnalyticsCycleTime(o={}){return(await a.get(O(l,"/analytics/cycle-time"),{params:o})).data.data},async getAnalyticsVelocity(o={}){return(await a.get(O(l,"/analytics/velocity"),{params:o})).data.data},async getAnalyticsOverdueRate(o={}){return(await a.get(O(l,"/analytics/overdue-rate"),{params:o})).data.data},async getAnalyticsTemplateUsage(){return(await a.get(O(l,"/analytics/template-usage"))).data.data}}}let rt=it();function M(){return rt}function ja(t){rt=t}function qa(){rt=it()}const Pe={list:t=>M().list(t),searchUsers:(t,a)=>M().searchUsers(t,a),getWorkload:t=>M().getWorkload(t),listArchives:t=>M().listArchives(t),restoreArchive:t=>M().restoreArchive(t),get:t=>M().get(t),create:t=>M().create(t),update:(t,a)=>M().update(t,a),delete:t=>M().delete(t),complete:(t,a)=>M().complete(t,a),reopen:t=>M().reopen(t),cancel:t=>M().cancel(t),assign:(t,a)=>M().assign(t,a),reassign:(t,a)=>M().reassign(t,a),addWatcher:(t,a)=>M().addWatcher(t,a),removeWatcher:(t,a)=>M().removeWatcher(t,a),listComments:t=>M().listComments(t),addComment:(t,a)=>M().addComment(t,a),getActiveTimer:()=>M().getActiveTimer(),listTimeEntries:t=>M().listTimeEntries(t),startTimer:t=>M().startTimer(t),stopTimer:t=>M().stopTimer(t),addManualTimeEntry:(t,a)=>M().addManualTimeEntry(t,a),deleteTimeEntry:(t,a)=>M().deleteTimeEntry(t,a),exportTasks:t=>M().exportTasks(t),importTasks:t=>M().importTasks(t),acknowledgeEscalation:t=>M().acknowledgeEscalation(t),snoozeEscalation:(t,a)=>M().snoozeEscalation(t,a),escalationHistory:(t,a)=>M().escalationHistory(t,a),addChecklistItem:(t,a)=>M().addChecklistItem(t,a),toggleChecklistItem:(t,a)=>M().toggleChecklistItem(t,a),removeChecklistItem:(t,a)=>M().removeChecklistItem(t,a),listRelations:t=>M().listRelations(t),addRelation:(t,a)=>M().addRelation(t,a),listTags:()=>M().listTags(),addTagToTask:(t,a)=>M().addTagToTask(t,a),listSavedFilters:()=>M().listSavedFilters(),createSavedFilter:t=>M().createSavedFilter(t),updateSavedFilter:(t,a)=>M().updateSavedFilter(t,a),deleteSavedFilter:t=>M().deleteSavedFilter(t),listWorkflows:t=>M().listWorkflows(t),getWorkflow:t=>M().getWorkflow(t),createWorkflow:t=>M().createWorkflow(t),updateWorkflow:(t,a)=>M().updateWorkflow(t,a),deleteWorkflow:t=>M().deleteWorkflow(t),toggleWorkflow:(t,a)=>M().toggleWorkflow(t,a),workflowLogs:(t,a)=>M().workflowLogs(t,a),testWorkflow:(t,a,l)=>M().testWorkflow(t,a,l),bulkAction:(t,a,l)=>M().bulkAction(t,a,l),listTemplates:t=>M().listTemplates(t),instantiateTemplate:(t,a)=>M().instantiateTemplate(t,a),listRecurring:t=>M().listRecurring(t),getRecurring:t=>M().getRecurring(t),createRecurring:t=>M().createRecurring(t),updateRecurring:(t,a)=>M().updateRecurring(t,a),deleteRecurring:t=>M().deleteRecurring(t),pauseRecurring:t=>M().pauseRecurring(t),resumeRecurring:t=>M().resumeRecurring(t),recurringHistory:(t,a)=>M().recurringHistory(t,a),generateRecurring:t=>M().generateRecurring(t),entityTasks:(t,a,l)=>M().entityTasks(t,a,l),entitySummary:(t,a)=>M().entitySummary(t,a),getDashboard:t=>M().getDashboard(t),getDashboardConfig:()=>M().getDashboardConfig(),updateDashboardConfig:t=>M().updateDashboardConfig(t),getDashboardMyTasksToday:()=>M().getDashboardMyTasksToday(),getDashboardUpcoming:()=>M().getDashboardUpcoming(),getDashboardOverdue:()=>M().getDashboardOverdue(),getDashboardActivity:()=>M().getDashboardActivity(),getDashboardStats:t=>M().getDashboardStats(t),getDashboardHealthAlerts:()=>M().getDashboardHealthAlerts(),getAnalyticsCompletionRate:t=>M().getAnalyticsCompletionRate(t),getAnalyticsCycleTime:t=>M().getAnalyticsCycleTime(t),getAnalyticsVelocity:t=>M().getAnalyticsVelocity(t),getAnalyticsOverdueRate:t=>M().getAnalyticsOverdueRate(t),getAnalyticsTemplateUsage:()=>M().getAnalyticsTemplateUsage()};function ft(){return{page:1,per_page:15,sort:"-created_at"}}function Ya(){return{current_page:1,last_page:1,per_page:15,total:0}}const dt=ot.defineStore("task-engine/task-list",()=>{const t=e.ref(ft()),a=e.ref(Ya()),l=e.ref("list"),o=e.ref(null);function n(_,B){const u={...t.value};B==null||B===""||Array.isArray(B)&&B.length===0?delete u[_]:u[_]=B,u.page=1,t.value=u}function i(_){t.value={per_page:t.value.per_page??15,sort:t.value.sort??"-created_at",..._,page:_.page??1}}function r(){t.value=ft()}function s(_){t.value={...t.value,sort:_,page:1}}function k(){a.value.current_page>=a.value.last_page||(t.value={...t.value,page:a.value.current_page+1})}function d(){a.value.current_page<=1||(t.value={...t.value,page:a.value.current_page-1})}function E(_){a.value=_,t.value={...t.value,page:_.current_page,per_page:_.per_page}}function m(_){l.value=_}function f(_){o.value=_}const p=e.computed(()=>Object.entries(t.value).reduce((_,[B,u])=>B==="page"||B==="per_page"||B==="sort"||u==null||u===""||Array.isArray(u)&&u.length===0?_:_+1,0));return{filters:t,pagination:a,view:l,activeSavedFilterId:o,activeFilterCount:p,setFilter:n,setFilters:i,clearFilters:r,setSort:s,setView:m,setActiveSavedFilter:f,nextPage:k,previousPage:d,syncPagination:E}});function Ka(){return{current_page:1,last_page:1,per_page:15,total:0}}function Qa(){return{completed:0,total:0}}function Ga(t){var o;if(typeof t=="number")return Number.isFinite(t)?t:0;const a=(o=t.match(/(\d+)(?!.*\d)/))==null?void 0:o[1],l=a===void 0?Number.NaN:Number.parseInt(a,10);return Number.isNaN(l)?0:l}function Ue(t){return t==="complete"}function Je(t){return t.total<=0?0:Math.round(t.completed/t.total*100)}function Ja(t,a){return t===null||Ue(a)||a==="cancelled"?!1:new Date(t).getTime()<Date.now()}function vt(t,a){return a===void 0?!0:Array.isArray(a)?a.includes(t):a===t}const ze=ot.defineStore("task-engine/tasks",()=>{const t=e.ref([]),a=e.ref(null),l=e.ref(null),o=e.ref(!1),n=e.ref(null),i=e.ref(Ka()),r=e.ref({}),s=e.ref([]),k=e.ref(!1),d=e.ref(null),E=e.ref(!1),m=e.ref(null),f=e.ref(!1),p=e.ref(null),_=e.ref(!1),B=e.ref(!1);function u($){n.value=$ instanceof Error?$.message:String($)}function c($){i.value={...i.value,total:Math.max(0,$)}}function g($){c(i.value.total+$)}function h($){const y=t.value.findIndex(U=>U.id===$.id);return y>=0?(t.value.splice(y,1,$),!1):(t.value.unshift($),!0)}function x($){const y=t.value.findIndex(U=>U.id===$);return y<0?!1:(t.value.splice(y,1),!0)}function S($){var X;const y=r.value,U=y.assignee??y.assignee_id;return!(!vt($.status,y.status)||!vt($.priority,y.priority)||typeof y.taskable_type=="string"&&$.taskable_type!==y.taskable_type||typeof y.taskable_id=="string"&&$.taskable_id!==y.taskable_id||typeof U=="string"&&String(((X=$.primary_assignee)==null?void 0:X.id)??"")!==U||y.overdue===!0&&!$.is_overdue)}function V($,y){const U=(y==null?void 0:y.checklist_progress)??Qa(),X=$.status,ie=$.due_at??(y==null?void 0:y.due_at)??null,re=$.display_number_formatted||String($.display_number);return{id:$.id,tenant_id:(y==null?void 0:y.tenant_id)??"",display_number:(y==null?void 0:y.display_number)??Ga($.display_number),display_number_formatted:re,title:$.title,description:(y==null?void 0:y.description)??null,status:X,priority:$.priority,taskable_type:$.taskable_type??(y==null?void 0:y.taskable_type)??null,taskable_id:$.taskable_id??(y==null?void 0:y.taskable_id)??null,created_by:$.created_by??(y==null?void 0:y.created_by)??null,primary_assignee:$.primary_assignee??(y==null?void 0:y.primary_assignee)??null,due_at:ie,completed_at:Ue(X)?(y==null?void 0:y.completed_at)??null:null,completed_by:$.completed_by??(Ue(X)?(y==null?void 0:y.completed_by)??null:null),source:(y==null?void 0:y.source)??"manual",source_id:(y==null?void 0:y.source_id)??null,template_item_id:(y==null?void 0:y.template_item_id)??null,escalation_policy_id:(y==null?void 0:y.escalation_policy_id)??null,current_escalation_tier:$.current_escalation_tier??(y==null?void 0:y.current_escalation_tier)??null,current_escalation_label:(y==null?void 0:y.current_escalation_label)??null,next_escalation_at:$.next_escalation_at??(y==null?void 0:y.next_escalation_at)??null,escalation_acknowledged_at:$.escalation_acknowledged_at??(y==null?void 0:y.escalation_acknowledged_at)??null,escalation_snoozed_until:$.escalation_snoozed_until??(y==null?void 0:y.escalation_snoozed_until)??null,blocker_count:(y==null?void 0:y.blocker_count)??null,open_blocker_count:(y==null?void 0:y.open_blocker_count)??null,has_unresolved_blockers:(y==null?void 0:y.has_unresolved_blockers)??null,subtask_count:(y==null?void 0:y.subtask_count)??null,completed_subtask_count:(y==null?void 0:y.completed_subtask_count)??null,completion_rules:(y==null?void 0:y.completion_rules)??null,time_tracked_minutes:(y==null?void 0:y.time_tracked_minutes)??null,tags:(y==null?void 0:y.tags)??[],checklist_progress:U,is_overdue:Ja(ie,X),is_complete:Ue(X),progress_percentage:Je(U),metadata:(y==null?void 0:y.metadata)??null,created_at:(y==null?void 0:y.created_at)??new Date().toISOString(),updated_at:new Date().toISOString()}}function v($){var U;if(((U=a.value)==null?void 0:U.id)!==$.id)return;const y=V($,a.value);a.value={...a.value,...y}}function N($){const y=t.value.find(re=>re.id===$.id)??a.value,U=V($,y??null),X=t.value.some(re=>re.id===U.id);return S(U)?h(U)&&!X&&g(1):x(U.id)&&g(-1),v($),U}function I($,y,U){var re;const X=t.value.findIndex(Ce=>Ce.id===$);if(X>=0){const Ce=t.value[X];Ce!==void 0&&t.value.splice(X,1,{...Ce,checklist_progress:U,progress_percentage:Je(U),updated_at:new Date().toISOString()})}if(((re=a.value)==null?void 0:re.id)!==$)return;const ie=a.value.checklist_items.findIndex(Ce=>Ce.id===y.id);ie>=0?a.value.checklist_items.splice(ie,1,{...a.value.checklist_items[ie],...y}):a.value.checklist_items.push(y),a.value={...a.value,checklist_progress:U,progress_percentage:Je(U),updated_at:new Date().toISOString()}}function Y($){var y;return((y=a.value)==null?void 0:y.id)===$}function te($){return N($)}function F($){return N($.task)}function K($){return N({...$.task,status:$.new_status})}function G($){return N({...$.task,assignee_id:$.new_assignee_id,primary_assignee:$.task.primary_assignee})}function ee($){return N({...$.task,status:"complete",completed_by:$.completed_by})}function H($){return N($.task)}function A($){const y=N($.task);return I($.task.id,$.item,$.progress),y}async function P($={}){o.value=!0,n.value=null;try{const y=await M().list($);t.value=y.data,i.value=y.meta,r.value={...$}}catch(y){throw u(y),y}finally{o.value=!1}}async function C($){o.value=!0,n.value=null;try{const y=await M().get($);return a.value=y,h(y),y}catch(y){throw u(y),y}finally{o.value=!1}}async function D($){o.value=!0,n.value=null;try{const y=await M().create($);return a.value=y,h(y),g(1),y}catch(y){throw u(y),y}finally{o.value=!1}}async function L($,y){o.value=!0,n.value=null;try{const U=await M().update($,y);return a.value=U,h(U),U}catch(U){throw u(U),U}finally{o.value=!1}}async function b($){var y;o.value=!0,n.value=null;try{await M().delete($),t.value=t.value.filter(U=>U.id!==$),((y=a.value)==null?void 0:y.id)===$&&(a.value=null),g(-1)}catch(U){throw u(U),U}finally{o.value=!1}}async function w($,y){const U=await M().complete($,y);return a.value=U,h(U),U}async function T($){const y=await M().reopen($);return a.value=y,h(y),y}async function W($){const y=await M().cancel($);return a.value=y,h(y),y}async function R($,y){var U;return await M().addComment($,y),((U=a.value)==null?void 0:U.id)===$?C($):null}async function le($){const y=await M().acknowledgeEscalation($);return a.value=y,h(y),y}async function oe($,y){const U=await M().snoozeEscalation($,y);return a.value=U,h(U),U}async function ke($,y){var U;return await M().addChecklistItem($,y),((U=a.value)==null?void 0:U.id)===$?C($):null}async function J($,y){var U;return await M().toggleChecklistItem($,y),((U=a.value)==null?void 0:U.id)===$?C($):null}async function z($,y){var U;return await M().removeChecklistItem($,y),((U=a.value)==null?void 0:U.id)===$?C($):null}async function j($,y,U={}){o.value=!0,n.value=null;try{const X=await M().entityTasks($,y,U);t.value=X.data,i.value=X.meta,r.value={...U,taskable_type:$,taskable_id:y}}catch(X){throw u(X),X}finally{o.value=!1}}async function q($,y){o.value=!0,n.value=null;try{const U=await M().entitySummary($,y);return l.value=U,U}catch(U){throw u(U),U}finally{o.value=!1}}async function Z($,y){o.value=!0,n.value=null;try{const U=await M().instantiateTemplate($,y);return a.value=U,h(U),g(1),U}catch(U){throw u(U),U}finally{o.value=!1}}async function ae(){try{return m.value=await M().getActiveTimer(),m.value}catch($){throw u($),$}}async function ne($){var U;const y=await M().get($);return h(y),((U=a.value)==null?void 0:U.id)===$&&(a.value=y),y}async function me($){f.value=!0,n.value=null;try{return await M().startTimer($),await ae(),ne($)}catch(y){throw u(y),y}finally{f.value=!1}}async function Ee($){f.value=!0,n.value=null;try{return await M().stopTimer($),await ae(),ne($)}catch(y){throw u(y),y}finally{f.value=!1}}async function _e($,y){f.value=!0,n.value=null;try{return await M().addManualTimeEntry($,y),await ae(),ne($)}catch(U){throw u(U),U}finally{f.value=!1}}async function Te($,y){f.value=!0,n.value=null;try{return await M().deleteTimeEntry($,y),await ae(),ne($)}catch(U){throw u(U),U}finally{f.value=!1}}async function Fe($=r.value){B.value=!0,n.value=null;try{return await M().exportTasks($)}catch(y){throw u(y),y}finally{B.value=!1}}async function ga($){_.value=!0,n.value=null;try{const y=await M().importTasks($);return p.value=y,(t.value.length>0||Object.keys(r.value).length>0)&&await P(r.value),y}catch(y){throw u(y),y}finally{_.value=!1}}async function ba(){k.value=!0,n.value=null;try{const $=await M().listSavedFilters();return s.value=[...$].sort((y,U)=>y.position-U.position||y.name.localeCompare(U.name)),s.value}catch($){throw u($),$}finally{k.value=!1}}async function ha($){k.value=!0,n.value=null;try{const y=await M().createSavedFilter($);return s.value=[...s.value,y].sort((U,X)=>U.position-X.position||U.name.localeCompare(X.name)),y}catch(y){throw u(y),y}finally{k.value=!1}}async function wa($,y){k.value=!0,n.value=null;try{const U=await M().updateSavedFilter($,y),X=s.value.findIndex(ie=>ie.id===$);return X>=0&&(s.value.splice(X,1,U),s.value=[...s.value].sort((ie,re)=>ie.position-re.position||ie.name.localeCompare(re.name))),U}catch(U){throw u(U),U}finally{k.value=!1}}async function Ea($){k.value=!0,n.value=null;try{await M().deleteSavedFilter($),s.value=s.value.filter(y=>y.id!==$)}catch(y){throw u(y),y}finally{k.value=!1}}async function Va($,y,U={}){E.value=!0,n.value=null;try{const X=await M().bulkAction($,y,U);return d.value=X,X.success.length>0&&(t.value.length>0||Object.keys(r.value).length>0)&&await P(r.value),a.value!==null&&X.success.includes(a.value.id)&&(y==="delete"?a.value=null:await C(a.value.id)),X}catch(X){throw u(X),X}finally{E.value=!1}}const Na=e.computed(()=>t.value.filter($=>$.is_overdue)),$a=e.computed(()=>({draft:t.value.filter($=>$.status==="draft"),open:t.value.filter($=>$.status==="open"),in_progress:t.value.filter($=>$.status==="in_progress"),blocked:t.value.filter($=>$.status==="blocked"),under_review:t.value.filter($=>$.status==="under_review"),complete:t.value.filter($=>$.status==="complete"),cancelled:t.value.filter($=>$.status==="cancelled")})),Ba=e.computed(()=>({none:t.value.filter($=>$.priority==="none"),low:t.value.filter($=>$.priority==="low"),medium:t.value.filter($=>$.priority==="medium"),high:t.value.filter($=>$.priority==="high"),urgent:t.value.filter($=>$.priority==="urgent"),critical:t.value.filter($=>$.priority==="critical")}));return{tasks:t,currentTask:a,entitySummary:l,loading:o,error:n,pagination:i,lastFilters:r,savedFilters:s,savedFiltersLoading:k,bulkResult:d,bulkLoading:E,activeTimer:m,timeTrackingLoading:f,importResult:p,importLoading:_,exportLoading:B,overdueTasks:Na,tasksByStatus:$a,tasksByPriority:Ba,isViewingTask:Y,handleTaskCreated:te,handleTaskUpdated:F,handleStatusChanged:K,handleTaskAssigned:G,handleTaskCompleted:ee,handleCommentAdded:H,handleChecklistToggled:A,fetchTasks:P,fetchTask:C,createTask:D,updateTask:L,deleteTask:b,completeTask:w,reopenTask:T,cancelTask:W,addComment:R,acknowledgeEscalation:le,snoozeEscalation:oe,addChecklistItem:ke,toggleChecklistItem:J,removeChecklistItem:z,fetchEntityTasks:j,fetchEntitySummary:q,instantiateTemplate:Z,fetchActiveTimer:ae,startTimer:me,stopTimer:Ee,addManualTimeEntry:_e,deleteTimeEntry:Te,exportTasks:Fe,importTasks:ga,fetchSavedFilters:ba,createSavedFilter:ha,updateSavedFilterRecord:wa,deleteSavedFilterRecord:Ea,runBulkAction:Va}});function Za(t){return{name:`${t.name} (Copy)`,description:t.description,trigger_type:t.trigger_type,trigger_config:t.trigger_config===null?null:{...t.trigger_config},conditions:t.conditions.map(a=>({...a})),actions:t.actions.map(a=>{const l={...a};return a.config!==void 0&&(l.config={...a.config}),l}),is_enabled:t.is_enabled,position:t.position+1,stop_processing:t.stop_processing,metadata:t.metadata===null?null:{...t.metadata}}}const Dt=ot.defineStore("task-engine/workflows",()=>{const t=e.ref([]),a=e.ref({current_page:1,last_page:1,per_page:15,total:0}),l=e.ref(null),o=e.ref(null),n=e.ref({}),i=e.ref(!1),r=e.ref(!1),s=e.ref(null),k=e.ref({});function d(v){s.value=v instanceof Error?v.message:String(v)}function E(v){const N=[...t.value],I=N.findIndex(Y=>Y.id===v.id);I>=0?N.splice(I,1,v):N.push(v),t.value=N.sort((Y,te)=>Y.position-te.position)}async function m(v={}){i.value=!0,s.value=null;try{const N=await M().listWorkflows(v);return t.value=[...N.data].sort((I,Y)=>I.position-Y.position),a.value=N.meta,N}catch(N){throw d(N),N}finally{i.value=!1}}async function f(v){i.value=!0,s.value=null;try{const N=await M().getWorkflow(v);return l.value=N,E(N),N}catch(N){throw d(N),N}finally{i.value=!1}}async function p(v){r.value=!0,s.value=null;try{const N=await M().createWorkflow(v);return l.value=N,E(N),N}catch(N){throw d(N),N}finally{r.value=!1}}async function _(v,N){r.value=!0,s.value=null;try{const I=await M().updateWorkflow(v,N);return l.value=I,E(I),I}catch(I){throw d(I),I}finally{r.value=!1}}async function B(v){var N;r.value=!0,s.value=null;try{await M().deleteWorkflow(v),t.value=t.value.filter(I=>I.id!==v),((N=l.value)==null?void 0:N.id)===v&&(l.value=null)}catch(I){throw d(I),I}finally{r.value=!1}}async function u(v,N){var I;r.value=!0,s.value=null;try{const Y=await M().toggleWorkflow(v,N);return l.value=((I=l.value)==null?void 0:I.id)===v?Y:l.value,E(Y),Y}catch(Y){throw d(Y),Y}finally{r.value=!1}}async function c(v){return p(Za(v))}async function g(v,N){const I=[...t.value].sort((G,ee)=>G.position-ee.position),Y=I.findIndex(G=>G.id===v),te=N==="up"?Y-1:Y+1;if(Y<0||te<0||te>=I.length)return;const F=I[Y],K=I[te];F===void 0||K===void 0||await Promise.all([_(F.id,{position:K.position}),_(K.id,{position:F.position})])}async function h(v,N={}){k.value={...k.value,[v]:!0},s.value=null;try{const I=await M().workflowLogs(v,N);return n.value={...n.value,[v]:I},I}catch(I){throw d(I),I}finally{k.value={...k.value,[v]:!1}}}async function x(v,N,I={}){r.value=!0,s.value=null;try{const Y=await M().testWorkflow(v,N,I);return o.value=Y,Y}catch(Y){throw d(Y),Y}finally{r.value=!1}}const S=e.computed(()=>t.value.filter(v=>v.is_enabled)),V=e.computed(()=>t.value.filter(v=>!v.is_enabled));return{workflows:t,pagination:a,currentWorkflow:l,testResult:o,logsByWorkflow:n,loading:i,saving:r,error:s,logLoading:k,enabledWorkflows:S,disabledWorkflows:V,fetchWorkflows:m,fetchWorkflow:f,createWorkflow:p,updateWorkflow:_,deleteWorkflow:B,toggleWorkflow:u,duplicateWorkflow:c,moveWorkflow:g,fetchLogs:h,runTest:x}}),Xa=8e3,el="/admin/tasks",ve=e.ref([]),Oe=new Map;let tl=0;function al(t){return`${el}/${t}`}function ct(t){const a=Oe.get(t);a!==void 0&&(clearTimeout(a),Oe.delete(t))}function Mt(t){ct(t),ve.value=ve.value.filter(a=>a.id!==t)}function ll(t){const a=t.id??`task-toast-${++tl}`,l={id:a,kind:t.kind,title:t.title,body:t.body,taskId:t.taskId,taskNumber:t.taskNumber,tone:t.tone??"info",duration:t.duration??Xa,url:t.url??al(t.taskId),created_at:t.created_at??new Date().toISOString()},o=ve.value.findIndex(n=>n.id===a);return ct(a),o>=0&&ve.value.splice(o,1),ve.value=[l,...ve.value].slice(0,5),Oe.set(a,setTimeout(()=>{Mt(a)},l.duration)),l}function nl(){Array.from(Oe.keys()).forEach(ct),ve.value=[]}function ut(){return{notifications:e.readonly(ve),hasNotifications:e.computed(()=>ve.value.length>0),pushTaskNotificationToast:ll,dismissTaskNotificationToast:Mt,clearTaskNotificationFeed:nl}}const Ve={created:".task.created",updated:".task.updated",statusChanged:".task.status_changed",assigned:".task.assigned",completed:".task.completed",commentAdded:".task.comment_added",checklistToggled:".task.checklist_toggled"},ol=["draft","open","in_progress","blocked","under_review","complete","cancelled"],sl=["none","low","medium","high","urgent","critical"],il=["reminder","warning","due_now","overdue","escalated","critical"];function ue(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function de(t){return t==null||t===""?null:typeof t=="string"||typeof t=="number"?String(t):void 0}function lt(t){return typeof t=="string"&&ol.includes(t)}function rl(t){return typeof t=="string"&&sl.includes(t)}function dl(t){return t==null||t===""?null:typeof t=="string"&&il.includes(t)?t:void 0}function $e(t){if(t==null||t==="")return null;if(!ue(t))return;const a=t.id,l=t.name,o=t.avatar_url;if(!(typeof a!="string"&&typeof a!="number"||typeof l!="string"))return{id:String(a),name:l,...typeof o=="string"?{avatar_url:o}:{}}}function Be(t){if(!ue(t))return null;const a=t.id,l=t.display_number,o=t.display_number_formatted,n=t.title,i=t.status,r=t.priority,s=de(t.assignee_id),k=de(t.taskable_type),d=de(t.taskable_id),E=$e(t.created_by),m=$e(t.primary_assignee),f=$e(t.completed_by),p=de(t.due_at),_=dl(t.current_escalation_tier),B=de(t.next_escalation_at),u=de(t.escalation_acknowledged_at),c=de(t.escalation_snoozed_until);return typeof a!="string"||typeof l!="string"&&typeof l!="number"||typeof o!="string"||typeof n!="string"||!lt(i)||!rl(r)||s===void 0||k===void 0||d===void 0||E===void 0||m===void 0||f===void 0||p===void 0||_===void 0||B===void 0||u===void 0||c===void 0?null:{id:a,display_number:l,display_number_formatted:o,title:n,status:i,priority:r,assignee_id:s,taskable_type:k,taskable_id:d,created_by:E,primary_assignee:m,completed_by:f,due_at:p,current_escalation_tier:_,next_escalation_at:B,escalation_acknowledged_at:u,escalation_snoozed_until:c}}function At(t){if(!ue(t))return null;const a=Be(t.task),l=t.changes;return a===null||!ue(l)?null:{task:a,changes:l}}function zt(t){if(!ue(t))return null;const a=Be(t.task),l=t.old_status,o=t.new_status;return a===null||!lt(l)||!lt(o)?null:{task:a,old_status:l,new_status:o}}function It(t){if(!ue(t))return null;const a=Be(t.task),l=de(t.new_assignee_id),o=de(t.old_assignee_id),n=$e(t.assigned_by);return a===null||l===void 0||o===void 0||n===void 0?null:{task:a,new_assignee_id:l,old_assignee_id:o,assigned_by:n}}function xt(t){if(!ue(t))return null;const a=Be(t.task),l=$e(t.completed_by);return a===null||l===void 0?null:{task:a,completed_by:l}}function cl(t){if(!ue(t))return null;const a=t.id,l=$e(t.author),o=de(t.author_id),n=t.visibility,i=t.preview,r=de(t.created_at);return typeof a!="string"||l===void 0||o===void 0||n!=="team"&&n!=="private"||typeof i!="string"||r===void 0?null:{id:a,author:l,author_id:o,visibility:n,preview:i,created_at:r}}function Ft(t){if(!ue(t))return null;const a=Be(t.task),l=cl(t.comment);return a===null||l===null?null:{task:a,comment:l}}function ul(t){if(!ue(t))return null;const a=t.completed,l=t.total;return typeof a!="number"||typeof l!="number"?null:{completed:a,total:l}}function ml(t){if(!ue(t))return null;const a=t.id,l=t.title,o=t.is_completed,n=de(t.completed_at),i=$e(t.completed_by),r=t.position;return typeof a!="string"||typeof l!="string"||typeof o!="boolean"||n===void 0||i===void 0||typeof r!="number"?null:{id:a,title:l,is_completed:o,completed_at:n,completed_by:i,position:r}}function Lt(t){if(!ue(t))return null;const a=Be(t.task),l=ml(t.item),o=ul(t.progress);return a===null||l===null||o===null?null:{task:a,item:l,progress:o}}function Ut(t){return Be(t)}function pl(){return typeof window>"u"?null:window.Echo??null}function Rt(t){try{return JSON.stringify(t)??"null"}catch{return"unserializable"}}function be(t){return t.display_number_formatted||String(t.display_number)}function Ne(t,a){switch(t){case"task.created":{const l=Ut(a);return l===null?null:`${t}:${l.id}`}case"task.updated":{const l=At(a);return l===null?null:`${t}:${l.task.id}:${Rt(l.changes)}`}case"task.status_changed":{const l=zt(a);return l===null?null:`${t}:${l.task.id}:${l.old_status}:${l.new_status}`}case"task.assigned":{const l=It(a);return l===null?null:`${t}:${l.task.id}:${l.new_assignee_id??""}:${l.old_assignee_id??""}`}case"task.completed":{const l=xt(a);return l===null?null:`${t}:${l.task.id}`}case"task.comment_added":{const l=Ft(a);return l===null?null:`${t}:${l.task.id}:${l.comment.id}`}case"task.checklist_toggled":{const l=Lt(a);return l===null?null:`${t}:${l.task.id}:${l.item.id}:${l.item.is_completed?"1":"0"}`}}}function Wt(t,a={}){const l=ze(),o=ut(),n=e.ref([]),i=e.ref(a.autoConnect??!0),r=e.ref(!1),s=e.computed(()=>r.value),k=new Map;function d(h){var x;r.value!==h&&(r.value=h,(x=a.onConnectionChange)==null||x.call(a,h))}function E(){return(typeof a.echo=="function"?a.echo():a.echo)??pl()}function m(h){return h===null||k.has(h)?!1:(k.set(h,setTimeout(()=>{const x=k.get(h);x!==void 0&&clearTimeout(x),k.delete(h)},1500)),!0)}function f(){Array.from(k.entries()).forEach(([h,x])=>{clearTimeout(x),k.delete(h)})}function p(h){var S;const x=o.pushTaskNotificationToast(h);(S=a.onToast)==null||S.call(a,x)}function _(h,x){const S=E();if(S===null)return;S.private(h.name).listen(Ve.created,v=>{var I;if(!m(Ne("task.created",v)))return;const N=Ut(v);N!==null&&(l.handleTaskCreated(N),(I=a.onEvent)==null||I.call(a,"task.created",N))}).listen(Ve.updated,v=>{var I;if(!m(Ne("task.updated",v)))return;const N=At(v);N!==null&&(l.handleTaskUpdated(N),(I=a.onEvent)==null||I.call(a,"task.updated",N),l.isViewingTask(N.task.id)&&l.fetchTask(N.task.id),h.scope==="personal"&&p({id:`task.updated:${N.task.id}:${Rt(N.changes)}`,kind:"update",title:`${be(N.task)} updated`,body:N.task.title,taskId:N.task.id,taskNumber:be(N.task),tone:"info",url:`/admin/tasks/${N.task.id}`}))}).listen(Ve.statusChanged,v=>{var I;if(!m(Ne("task.status_changed",v)))return;const N=zt(v);N!==null&&(l.handleStatusChanged(N),(I=a.onEvent)==null||I.call(a,"task.status_changed",N))}).listen(Ve.assigned,v=>{var I;if(!m(Ne("task.assigned",v)))return;const N=It(v);N!==null&&(l.handleTaskAssigned(N),(I=a.onEvent)==null||I.call(a,"task.assigned",N),h.scope==="personal"&&N.new_assignee_id===x&&p({id:`task.assigned:${N.task.id}:${N.new_assignee_id??""}`,kind:"assignment",title:`Assigned ${be(N.task)}`,body:N.assigned_by===null?N.task.title:`${N.assigned_by.name} assigned ${N.task.title}`,taskId:N.task.id,taskNumber:be(N.task),tone:"info",url:`/admin/tasks/${N.task.id}`}))}).listen(Ve.completed,v=>{var I;if(!m(Ne("task.completed",v)))return;const N=xt(v);N!==null&&(l.handleTaskCompleted(N),(I=a.onEvent)==null||I.call(a,"task.completed",N),h.scope==="personal"&&p({id:`task.completed:${N.task.id}`,kind:"completion",title:`${be(N.task)} completed`,body:N.completed_by===null?N.task.title:`${N.completed_by.name} completed ${N.task.title}`,taskId:N.task.id,taskNumber:be(N.task),tone:"success",url:`/admin/tasks/${N.task.id}`}))}).listen(Ve.commentAdded,v=>{var I;if(!m(Ne("task.comment_added",v)))return;const N=Ft(v);N!==null&&(l.handleCommentAdded(N),(I=a.onEvent)==null||I.call(a,"task.comment_added",N),l.isViewingTask(N.task.id)&&l.fetchTask(N.task.id),h.scope==="personal"&&p({id:`task.comment_added:${N.task.id}:${N.comment.id}`,kind:"comment",title:`New comment on ${be(N.task)}`,body:N.comment.author===null?N.comment.preview:`${N.comment.author.name}: ${N.comment.preview}`,taskId:N.task.id,taskNumber:be(N.task),tone:"info",url:`/admin/tasks/${N.task.id}`}))}).listen(Ve.checklistToggled,v=>{var I;if(!m(Ne("task.checklist_toggled",v)))return;const N=Lt(v);N!==null&&(l.handleChecklistToggled(N),(I=a.onEvent)==null||I.call(a,"task.checklist_toggled",N))})}function B(){const h=E();n.value.forEach(x=>{h==null||h.leave(x)}),n.value=[],d(!1)}function u(){i.value=!0}function c(){i.value=!1,B(),i.value=!0}const g=e.computed(()=>{const h=[],x=e.toValue(t);x!=null&&x!==""&&h.push({name:`tasks.user.${String(x)}`,scope:"personal"});const S=a.entity===void 0?null:e.toValue(a.entity);return S!=null&&S.type!==""&&S.id!==""&&h.push({name:`tasks.entity.${S.type}.${String(S.id)}`,scope:"entity"}),(a.teamIds===void 0?[]:e.toValue(a.teamIds)??[]).forEach(v=>{v==null||v===""||h.push({name:`tasks.team.${String(v)}`,scope:"team"})}),h});return e.watch(()=>({shouldConnect:i.value,targetNames:g.value.map(h=>h.name).join("|"),userId:String(e.toValue(t)??"")}),({shouldConnect:h,userId:x})=>{B(),f(),!(!h||x==="")&&(g.value.forEach(S=>{_(S,x)}),n.value=g.value.map(S=>S.name),d(n.value.length>0))},{immediate:!0}),e.onUnmounted(()=>{B(),f()}),{isConnected:s,activeChannels:n,connect:u,disconnect:()=>{i.value=!1,B()},reconnect:c}}function kl(t){switch(t){case"my-tasks-today":return"my_tasks_today";case"upcoming-this-week":return"upcoming_this_week";case"overdue-tracker":return"overdue";case"team-activity-feed":return"activity";case"my-stats":return"my_stats";case"task-health-alerts":return"health_alerts"}}function _l(t){switch(t){case"task.created":return["my-tasks-today","upcoming-this-week","team-activity-feed","task-health-alerts"];case"task.completed":return["my-stats","overdue-tracker","team-activity-feed","task-health-alerts"];case"task.assigned":return["my-tasks-today","overdue-tracker","team-activity-feed","task-health-alerts"];case"task.status_changed":return["my-tasks-today","upcoming-this-week","overdue-tracker","team-activity-feed","task-health-alerts"];case"task.updated":return["upcoming-this-week","overdue-tracker","team-activity-feed","task-health-alerts"];default:return["team-activity-feed","task-health-alerts"]}}function Pt(t,a={}){const l=e.ref(null),o=e.ref(!1),n=e.ref(!1),i=e.ref(null),r=e.ref({}),s=e.ref("week");function k(_,B){r.value={...r.value,[_]:B}}async function d(_=s.value){const B=e.toValue(t);if(B==null||B==="")return l.value=null,null;o.value=!0,i.value=null;try{const u=await M().getDashboard(_);return l.value=u,s.value=u.widgets.my_stats.period,u}catch(u){throw i.value=u instanceof Error?u.message:String(u),u}finally{o.value=!1}}async function E(_){l.value===null&&await d(),k(_,!0),i.value=null;try{let B;switch(_){case"my-tasks-today":B=await M().getDashboardMyTasksToday();break;case"upcoming-this-week":B=await M().getDashboardUpcoming();break;case"overdue-tracker":B=await M().getDashboardOverdue();break;case"team-activity-feed":B=await M().getDashboardActivity();break;case"my-stats":B=await M().getDashboardStats(s.value),s.value=B.period;break;case"task-health-alerts":B=await M().getDashboardHealthAlerts();break}return l.value!==null&&(l.value={...l.value,widgets:{...l.value.widgets,[kl(_)]:B}}),B}catch(B){throw i.value=B instanceof Error?B.message:String(B),B}finally{k(_,!1)}}async function m(_,B){var u;n.value=!0,i.value=null;try{const c=await M().updateDashboardConfig({layout:_,preferences:B??((u=l.value)==null?void 0:u.config.preferences)??{}});return l.value!==null&&(l.value={...l.value,config:c}),c}catch(c){throw i.value=c instanceof Error?c.message:String(c),c}finally{n.value=!1}}function f(_){l.value!==null&&(l.value={...l.value,config:{...l.value.config,layout:{widgets:_}}})}async function p(_){s.value=_,await E("my-stats")}return e.watch(()=>e.toValue(t),_=>{if(_==null||_===""){l.value=null;return}(a.autoLoad??!0)&&d()},{immediate:!0}),Wt(t,{echo:a.echo,autoConnect:a.autoConnect??!0,onEvent:_=>{_l(_).forEach(u=>{E(u)})}}),{dashboardData:l,loading:e.computed(()=>o.value),saving:e.computed(()=>n.value),error:e.computed(()=>i.value),widgetLoading:e.computed(()=>r.value),statsPeriod:e.computed(()=>s.value),loadDashboard:d,loadWidget:E,saveLayout:m,updateLayoutWidgets:f,setStatsPeriod:p}}function Ot(t){const a=ze();async function l(_){if(!_)return null;const B=await a.fetchTask(_);return await a.fetchActiveTimer(),B}async function o(_){var B;return(B=a.currentTask)!=null&&B.id?a.addComment(a.currentTask.id,_):null}async function n(){var _;return(_=a.currentTask)!=null&&_.id?a.acknowledgeEscalation(a.currentTask.id):null}async function i(_){var B;return(B=a.currentTask)!=null&&B.id?a.snoozeEscalation(a.currentTask.id,_):null}async function r(_){var B;return(B=a.currentTask)!=null&&B.id?a.addChecklistItem(a.currentTask.id,_):null}async function s(_){var B;return(B=a.currentTask)!=null&&B.id?a.toggleChecklistItem(a.currentTask.id,_):null}async function k(_){var B;return(B=a.currentTask)!=null&&B.id?a.removeChecklistItem(a.currentTask.id,_):null}function d(_){var B;return _??((B=a.currentTask)==null?void 0:B.id)??null}async function E(_){const B=d(_);return B?a.startTimer(B):null}async function m(_){const B=d(_);return B?a.stopTimer(B):null}async function f(_,B){const u=d(B);return u?a.addManualTimeEntry(u,_):null}async function p(_,B){const u=d(B);return u?a.deleteTimeEntry(u,_):null}return t!==void 0&&e.watch(()=>e.toValue(t),async _=>{await l(_)},{immediate:!0}),{task:e.computed(()=>a.currentTask),activeTimer:e.computed(()=>a.activeTimer),loading:e.computed(()=>a.loading),error:e.computed(()=>a.error),loadTask:l,addComment:o,acknowledgeEscalation:n,snoozeEscalation:i,addChecklistItem:r,toggleChecklistItem:s,removeChecklistItem:k,startTimer:E,stopTimer:m,addManualTimeEntry:f,deleteTimeEntry:p,completeTask:a.completeTask,reopenTask:a.reopenTask,cancelTask:a.cancelTask,updateTask:a.updateTask,deleteTask:a.deleteTask}}function Ht(){const t=dt();function a(l){t.setFilters(l)}return{filters:e.computed(()=>t.filters),pagination:e.computed(()=>t.pagination),view:e.computed(()=>t.view),activeSavedFilterId:e.computed(()=>t.activeSavedFilterId),activeFilterCount:e.computed(()=>t.activeFilterCount),setFilter:t.setFilter,setFilters:a,setSort:t.setSort,setView:t.setView,setActiveSavedFilter:t.setActiveSavedFilter,clearFilters:t.clearFilters,nextPage:t.nextPage,previousPage:t.previousPage}}function fl(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ze(t){if(!fl(t))return null;const a=t.id,l=t.name;return typeof a!="string"&&typeof a!="number"||typeof l!="string"?null:{id:String(a),name:l}}function vl(){return typeof window>"u"?null:window.Echo??null}function yl(t,a={}){const l=e.ref([]),o=e.ref(null),n=e.ref(a.autoConnect??!0),i=e.computed(()=>o.value!==null);function r(){const m=(typeof a.echo=="function"?a.echo():a.echo)??vl();if(m===null)throw new Error("Laravel Echo is not available for task presence.");return m}function s(E){l.value=E}function k(){n.value=!0}function d(){n.value=!1,o.value!==null&&(r().leave(o.value),o.value=null),s([])}return e.watch(()=>{const E=e.toValue(t),m=E==null?null:String(E);return n.value&&m!==""?`presence-tasks.viewing.${m}`:null},(E,m)=>{if(typeof m=="string"&&m!==E&&(r().leave(m),o.value=null,s([])),E===null||E===m)return;r().join(E).here(p=>{s(p.map(Ze).filter(_=>_!==null))}).joining(p=>{const _=Ze(p);_===null||l.value.some(B=>B.id===_.id)||s([...l.value,_])}).leaving(p=>{const _=Ze(p);_!==null&&s(l.value.filter(B=>B.id!==_.id))}),o.value=E},{immediate:!0}),e.onUnmounted(()=>{o.value!==null&&r().leave(o.value)}),{viewers:l,isConnected:i,connect:k,disconnect:d}}function jt(){const t=ze(),a=dt();async function l(){const s=await t.fetchSavedFilters();if(a.activeSavedFilterId===null){const k=s.find(d=>d.is_default);k!==void 0&&o(k)}return s}function o(s){const k={...s.filters,page:1,per_page:s.filters.per_page??a.filters.per_page??15};return a.setFilters(k),a.setActiveSavedFilter(s.id),k}async function n(s){const k=await t.createSavedFilter({name:s.name,filters:{...a.filters},is_default:s.is_default??!1,is_shared:s.is_shared??!1,position:s.position??t.savedFilters.length});return a.setActiveSavedFilter(k.id),k}async function i(s,k){const d=await t.updateSavedFilterRecord(s,k);return a.activeSavedFilterId===s&&k.filters!==void 0&&o(d),d}async function r(s){await t.deleteSavedFilterRecord(s),a.activeSavedFilterId===s&&a.setActiveSavedFilter(null)}return{savedFilters:e.computed(()=>t.savedFilters),loading:e.computed(()=>t.savedFiltersLoading),error:e.computed(()=>t.error),activeSavedFilterId:e.computed(()=>a.activeSavedFilterId),loadSavedFilters:l,applySavedFilter:o,saveCurrentFilter:n,updateSavedFilter:i,deleteSavedFilter:r}}function gl(t={}){const a=Dt(),l=e.ref(t.initialFilters??{});async function o(){await a.fetchWorkflows(l.value)}async function n(i){l.value={...i},await o()}return e.onMounted(()=>{(t.autoLoad??!0)&&o()}),{filters:e.computed(()=>l.value),workflows:e.computed(()=>a.workflows),pagination:e.computed(()=>a.pagination),currentWorkflow:e.computed(()=>a.currentWorkflow),testResult:e.computed(()=>a.testResult),logsByWorkflow:e.computed(()=>a.logsByWorkflow),loading:e.computed(()=>a.loading),saving:e.computed(()=>a.saving),error:e.computed(()=>a.error),reload:o,setFilters:n,fetchWorkflow:a.fetchWorkflow,createWorkflow:a.createWorkflow,updateWorkflow:a.updateWorkflow,deleteWorkflow:a.deleteWorkflow,toggleWorkflow:a.toggleWorkflow,duplicateWorkflow:a.duplicateWorkflow,moveWorkflow:a.moveWorkflow,fetchLogs:a.fetchLogs,runTest:a.runTest}}function qt(){const t=M(),a=e.ref([]),l=e.ref(null),o=e.ref(!1),n=e.ref(!1),i=e.ref(null),r=e.ref({current_page:1,last_page:1,per_page:15,total:0});function s(u){i.value=u instanceof Error?u.message:String(u)}async function k(u={}){o.value=!0,i.value=null;try{const c=await t.listRecurring(u);a.value=c.data,r.value=c.meta}catch(c){s(c)}finally{o.value=!1}}async function d(u){o.value=!0,i.value=null;try{const c=await t.getRecurring(u);return l.value=c,c}catch(c){return s(c),null}finally{o.value=!1}}async function E(u){n.value=!0,i.value=null;try{const c=await t.createRecurring(u);return a.value.unshift(c),c}catch(c){return s(c),null}finally{n.value=!1}}async function m(u,c){var g;n.value=!0,i.value=null;try{const h=await t.updateRecurring(u,c),x=a.value.findIndex(S=>S.id===u);return x>=0&&a.value.splice(x,1,h),((g=l.value)==null?void 0:g.id)===u&&(l.value=h),h}catch(h){return s(h),null}finally{n.value=!1}}async function f(u){var c;n.value=!0,i.value=null;try{return await t.deleteRecurring(u),a.value=a.value.filter(g=>g.id!==u),((c=l.value)==null?void 0:c.id)===u&&(l.value=null),!0}catch(g){return s(g),!1}finally{n.value=!1}}async function p(u){n.value=!0,i.value=null;try{const c=await t.pauseRecurring(u),g=a.value.findIndex(h=>h.id===u);return g>=0&&a.value.splice(g,1,c),c}catch(c){return s(c),null}finally{n.value=!1}}async function _(u){n.value=!0,i.value=null;try{const c=await t.resumeRecurring(u),g=a.value.findIndex(h=>h.id===u);return g>=0&&a.value.splice(g,1,c),c}catch(c){return s(c),null}finally{n.value=!1}}async function B(u){n.value=!0,i.value=null;try{return await t.generateRecurring(u)}catch(c){return s(c),null}finally{n.value=!1}}return{templates:e.computed(()=>a.value),currentTemplate:e.computed(()=>l.value),loading:e.computed(()=>o.value),saving:e.computed(()=>n.value),error:e.computed(()=>i.value),pagination:e.computed(()=>r.value),loadTemplates:k,loadTemplate:d,createTemplate:E,updateTemplate:m,deleteTemplate:f,pauseTemplate:p,resumeTemplate:_,generateFromTemplate:B}}const bl={class:"stats-widget","data-testid":"panel-my-stats"},hl={class:"stats-widget__toggle",role:"group","aria-label":"Stats period"},wl=["data-testid","aria-pressed","onClick"],El={class:"stats-widget__cards","data-testid":"list-stats-cards"},Vl=["data-testid","aria-label"],Nl=["data-testid"],$l=["aria-label"],Bl=["aria-label"],Tl=e.defineComponent({__name:"MyStatsWidget",props:{stats:{}},emits:["update:period"],setup(t,{emit:a}){const l=a;function o(i){return i==="up"?"↑":i==="down"?"↓":"→"}const n=[{key:"tasks_completed",label:"Tasks Completed"},{key:"avg_cycle_hours",label:"Avg Cycle Hours"},{key:"on_time_percentage",label:"On-Time %"},{key:"tasks_created",label:"Tasks Created"}];return(i,r)=>(e.openBlock(),e.createElementBlock("section",bl,[e.createElementVNode("header",hl,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["week","month"],s=>e.createElementVNode("button",{key:s,type:"button",class:e.normalizeClass({active:t.stats.period===s}),"data-testid":`btn-stats-period-${s}`,"aria-pressed":t.stats.period===s,onClick:k=>l("update:period",s)},e.toDisplayString(s),11,wl)),64))]),e.createElementVNode("div",El,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,s=>e.createElementVNode("article",{key:s.key,class:"stats-widget__card","data-testid":`card-stat-${s.key}`,"aria-label":`${s.label}: ${t.stats.current[s.key]}`},[e.createElementVNode("small",null,e.toDisplayString(s.label),1),e.createElementVNode("strong",{"data-testid":`badge-stat-value-${s.key}`},e.toDisplayString(t.stats.current[s.key]),9,Nl),e.createElementVNode("span",{"aria-label":`Trend: ${o(t.stats.trends[s.key])} vs previous period`},e.toDisplayString(o(t.stats.trends[s.key]))+" vs previous",9,$l)],8,Vl)),64))]),e.createElementVNode("footer",{class:"stats-widget__footer","data-testid":"badge-streak-days","aria-label":`${t.stats.current.streak_days??0} day streak`},e.toDisplayString(t.stats.current.streak_days??0)+" day streak ",9,Bl)]))}}),Q=(t,a)=>{const l=t.__vccOpts||t;for(const[o,n]of a)l[o]=n;return l},Yt=Q(Tl,[["__scopeId","data-v-242fabf1"]]),Cl={draft:"Draft",open:"Open",in_progress:"In Progress",blocked:"Blocked",under_review:"Under Review",complete:"Complete",cancelled:"Cancelled"},Sl={none:"None",low:"Low",medium:"Medium",high:"High",urgent:"Urgent",critical:"Critical"},Dl={draft:"is-draft",open:"is-open",in_progress:"is-in-progress",blocked:"is-blocked",under_review:"is-under-review",complete:"is-complete",cancelled:"is-cancelled"},Ml={draft:["draft","open","cancelled"],open:["open","in_progress","blocked","complete","cancelled"],in_progress:["in_progress","blocked","under_review","complete","cancelled"],blocked:["blocked","open","in_progress","cancelled"],under_review:["under_review","in_progress","complete","cancelled"],complete:["complete","open"],cancelled:["cancelled","open"]},Al={none:"·",low:"↓",medium:"–",high:"↑",urgent:"⇈",critical:"!"},zl={none:"is-none",low:"is-low",medium:"is-medium",high:"is-high",urgent:"is-urgent",critical:"is-critical"},Il={reminder:"Reminder",warning:"Warning",due_now:"Due Now",overdue:"Overdue",escalated:"Escalated",critical:"Critical"},xl={customer:"Customer",order:"Order",product:"Product","purchase-order":"Purchase Order",purchase_order:"Purchase Order",ticket:"Ticket"},Fl={no_deadline:"No deadline",upcoming:"Scheduled",reminder:"Due soon",warning:"Due within 24h",due_now:"Due now",overdue:"Overdue",escalated:"Escalated",critical:"Critical"};function nt(t){return Cl[t]}function Ll(t,a){return Ml[t].includes(a)}function yt(t,a){return!(!Ll(t.status,a)||a==="in_progress"&&t.has_unresolved_blockers===!0)}function Ul(t){return Dl[t]}function Rl(t){return Sl[t]}function Wl(t){return Al[t]}function Pl(t){return zl[t]}function Ol(t){return{none:"#94a3b8",low:"#0f766e",medium:"#2563eb",high:"#d97706",urgent:"#dc2626",critical:"#7f1d1d"}[t]}function Hl(t){return t?Il[t]:"No escalation"}function gt(t){if(!t)return"Record";const a=t.trim();if(a==="")return"Record";const l=xl[a.toLowerCase()];return l||a.split(/[_-]+/).filter(o=>o.length>0).map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join(" ")}function Kt(t,a){if(!t||!a)return"None";const l=a.trim();return l===""?gt(t):`${gt(t)} #${l}`}function jl(t,a=new Date){if(t.current_escalation_tier)return t.current_escalation_tier;if(!t.due_at)return"no_deadline";const o=(new Date(t.due_at).getTime()-a.getTime())/36e5;return o<=-24?o<=-48?"critical":"escalated":o<=-4?"overdue":o<=0?"due_now":t.is_overdue?"overdue":o<=24?"warning":o<=48?"reminder":"upcoming"}function ql(t){return Fl[t]}function mt(t){return t?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"}).format(new Date(t)):"No due date"}function ce(t){return t?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(t)):"Unknown time"}function we(t,a=new Date){if(!t)return"Not scheduled";const o=new Date(t).getTime()-a.getTime(),n=Math.round(o/6e4);if(Math.abs(n)<1)return"Just now";const i=new Intl.RelativeTimeFormat("en-US",{numeric:"auto"});if(Math.abs(n)<60)return i.format(n,"minute");const r=Math.round(n/60);if(Math.abs(r)<24)return i.format(r,"hour");const s=Math.round(r/24);return i.format(s,"day")}function Qt(t){return t.description?t.description:t.action.replace(/_/g," ")}const He=[{value:"MO",label:"Monday",shortLabel:"Mon"},{value:"TU",label:"Tuesday",shortLabel:"Tue"},{value:"WE",label:"Wednesday",shortLabel:"Wed"},{value:"TH",label:"Thursday",shortLabel:"Thu"},{value:"FR",label:"Friday",shortLabel:"Fri"},{value:"SA",label:"Saturday",shortLabel:"Sat"},{value:"SU",label:"Sunday",shortLabel:"Sun"}],Yl=["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","UTC"],je=new Map(He.map(t=>[t.value,t.label])),bt=He.map(t=>t.value),Kl=new Map([[1,"first"],[2,"second"],[3,"third"],[4,"fourth"],[-1,"last"]]);function Ae(t,a=1){const l=typeof t=="number"?t:Number.parseInt(String(t??""),10);return Number.isFinite(l)&&l>0?l:a}function Ql(t){return new Map(t.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{const[l,o]=a.split("=");return[String(l??"").toUpperCase(),String(o??"").toUpperCase()]}))}function Gt(t){return[...t].sort((a,l)=>bt.indexOf(a)-bt.indexOf(l))}function ht(t){return t.length===0?"":t.length===1?t[0]??"":t.length===2?`${t[0]??""} and ${t[1]??""}`:`${t.slice(0,-1).join(", ")}, and ${t[t.length-1]??""}`}function Gl(t){const a=t%10,l=t%100;return a===1&&l!==11?`${t}st`:a===2&&l!==12?`${t}nd`:a===3&&l!==13?`${t}rd`:`${t}th`}function Le(t){return`FREQ=DAILY;INTERVAL=${Ae(t)}`}function Jl(t,a){const l=Gt(a);return`FREQ=WEEKLY;INTERVAL=${Ae(t)};BYDAY=${l.join(",")}`}function Zl(t,a){const l=Math.min(Math.max(Ae(a),1),31);return`FREQ=MONTHLY;INTERVAL=${Ae(t)};BYMONTHDAY=${l}`}function Xl(t,a,l){const o=[1,2,3,4,-1].includes(l)?l:1;return`FREQ=MONTHLY;INTERVAL=${Ae(t)};BYDAY=${a};BYSETPOS=${o}`}function Jt(t){const a=t.trim().toUpperCase(),l=Ql(a),o=l.get("FREQ"),n=Ae(l.get("INTERVAL"));if(o==="DAILY")return{mode:"daily",interval:n,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:a};if(o==="WEEKLY"){const i=Gt((l.get("BYDAY")??"").split(",").filter(r=>je.has(r)));if(i.length>0)return{mode:"weekly",interval:n,weeklyDays:i,monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:a}}if(o==="MONTHLY"){const i=Number.parseInt(l.get("BYMONTHDAY")??"",10);if(Number.isFinite(i))return{mode:"monthly",interval:n,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:Math.min(Math.max(i,1),31),monthlyWeekday:"MO",monthlySetPosition:1,raw:a};const r=l.get("BYDAY"),s=Number.parseInt(l.get("BYSETPOS")??"",10);if(r!==void 0&&je.has(r)&&Number.isFinite(s))return{mode:"monthly",interval:n,weeklyDays:["MO"],monthlyMode:"weekday",monthlyDay:1,monthlyWeekday:r,monthlySetPosition:s,raw:a}}return{mode:"custom",interval:1,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:t.trim()}}function en(t){const a=Jt(t);if(a.mode==="custom")return a.raw||"Custom recurrence rule";if(a.mode==="daily")return a.interval===1?"Every day":`Every ${a.interval} days`;if(a.mode==="weekly"){const i=a.weeklyDays.map(r=>je.get(r)).filter(r=>typeof r=="string");return a.interval===1?`Every ${ht(i)}`:a.interval===2&&i.length===1?`Every other ${i[0]??"week"}`:`Every ${a.interval} weeks on ${ht(i)}`}if(a.monthlyMode==="day_of_month"){const i=a.interval===1?"month":`${a.interval} months`;return`${Gl(a.monthlyDay)} of every ${i}`}const l=je.get(a.monthlyWeekday)??a.monthlyWeekday,o=Kl.get(a.monthlySetPosition)??`${a.monthlySetPosition}th`,n=a.interval===1?"month":`${a.interval} months`;return`${o} ${l} of every ${n}`}const tn=["data-state","aria-label","title"],an={class:"task-deadline-badge__icon","aria-hidden":"true"},ln={key:0,class:"task-deadline-badge__suffix"},nn=e.defineComponent({__name:"TaskDeadlineBadge",props:{task:{},compact:{type:Boolean,default:!1},showRelative:{type:Boolean,default:!1},showNoDeadline:{type:Boolean,default:!0},now:{default:null}},setup(t){const a=t;function l(m){return m instanceof Date?m:typeof m=="string"?new Date(m):new Date}const o=e.computed(()=>l(a.now)),n=e.computed(()=>jl({due_at:a.task.due_at??null,current_escalation_tier:a.task.current_escalation_tier??null,is_overdue:a.task.is_overdue??!1},o.value)),i=e.computed(()=>ql(n.value)),r=e.computed(()=>a.task.due_at?we(a.task.due_at,o.value):null),s=e.computed(()=>`state-${n.value}`),k=e.computed(()=>n.value==="no_deadline"?a.showNoDeadline:n.value!=="upcoming"),d=e.computed(()=>({no_deadline:"○",upcoming:"•",reminder:"◔",warning:"◕",due_now:"!",overdue:"!!",escalated:"▲",critical:"!!!"})[n.value]),E=e.computed(()=>{if(n.value==="no_deadline")return"No deadline set";if(!a.task.due_at)return i.value;const m=[i.value,`due ${ce(a.task.due_at)}`];return r.value&&m.push(r.value),m.join(" • ")});return(m,f)=>k.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["task-deadline-badge",[s.value,{compact:t.compact}]]),"data-testid":"badge-task-deadline","data-state":n.value,"aria-label":E.value,title:E.value},[e.createElementVNode("span",an,e.toDisplayString(d.value),1),e.createElementVNode("span",null,e.toDisplayString(i.value),1),t.showRelative&&r.value&&!t.compact?(e.openBlock(),e.createElementBlock("span",ln,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)],10,tn)):e.createCommentVNode("",!0)}}),ye=Q(nn,[["__scopeId","data-v-c5644ddc"]]),on=["title","data-testid","aria-label"],sn={class:"task-priority-icon__glyph","aria-hidden":"true"},rn={key:0,class:"task-priority-icon__label","aria-hidden":"true"},dn=e.defineComponent({__name:"TaskPriorityIcon",props:{priority:{},compact:{type:Boolean}},setup(t){const a=t,l=e.computed(()=>Rl(a.priority)),o=e.computed(()=>Wl(a.priority)),n=e.computed(()=>Pl(a.priority));return(i,r)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["task-priority-icon",[n.value,{compact:t.compact}]]),title:l.value,"data-testid":`badge-priority-${t.priority}`,"aria-label":`Priority: ${l.value}`},[e.createElementVNode("span",sn,e.toDisplayString(o.value),1),t.compact?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",rn,e.toDisplayString(l.value),1))],10,on))}}),Ie=Q(dn,[["__scopeId","data-v-5827867c"]]),cn=["data-status"],un=e.defineComponent({__name:"TaskStatusBadge",props:{status:{}},setup(t){const a=t,l=e.computed(()=>nt(a.status)),o=e.computed(()=>Ul(a.status));return(n,i)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["task-status-badge",o.value]),"data-status":t.status,"data-testid":"badge-task-status",role:"status"},e.toDisplayString(l.value),11,cn))}}),xe=Q(un,[["__scopeId","data-v-3be91cb9"]]),mn={class:"dashboard-widget","data-testid":"panel-my-tasks-today"},pn={key:0,class:"dashboard-widget__empty","data-testid":"status-my-tasks-empty"},kn={key:1,class:"dashboard-widget__list","data-testid":"list-my-tasks-today"},_n=["data-testid","aria-label","onClick"],fn={class:"dashboard-widget__task-main"},vn={class:"dashboard-widget__task-meta"},yn={class:"dashboard-widget__footer","data-testid":"status-my-tasks-summary"},gn=e.defineComponent({__name:"MyTasksToday",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const l=a;return(o,n)=>(e.openBlock(),e.createElementBlock("section",mn,[t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",pn,[...n[0]||(n[0]=[e.createElementVNode("strong",null,"All caught up!",-1),e.createElementVNode("p",null,"No tasks are due today.",-1)])])):(e.openBlock(),e.createElementBlock("ul",kn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,i=>(e.openBlock(),e.createElementBlock("li",{key:i.id},[e.createElementVNode("button",{type:"button",class:"dashboard-widget__task","data-testid":`item-task-${i.id}`,"aria-label":`${i.display_number_formatted}: ${i.title}${i.is_overdue?" (overdue)":""}`,onClick:r=>l("select-task",i.id)},[e.createElementVNode("div",fn,[e.createVNode(Ie,{priority:i.priority,compact:""},null,8,["priority"]),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(i.display_number_formatted),1),e.createElementVNode("p",null,e.toDisplayString(i.title),1)])]),e.createElementVNode("div",vn,[e.createVNode(ye,{task:i,compact:""},null,8,["task"]),e.createVNode(xe,{status:i.status},null,8,["status"]),e.createElementVNode("span",{class:e.normalizeClass({"is-overdue":i.is_overdue})},e.toDisplayString(e.unref(we)(i.due_at)),3)])],8,_n)]))),128))])),e.createElementVNode("footer",yn,e.toDisplayString(t.widget.summary.due_today??0)+" due today, "+e.toDisplayString(t.widget.summary.overdue??0)+" overdue ",1)]))}}),Zt=Q(gn,[["__scopeId","data-v-da91bfef"]]),bn={class:"overdue-tracker","data-testid":"panel-overdue-tracker"},hn={key:0,class:"overdue-tracker__empty","data-testid":"status-overdue-empty"},wn={key:1,class:"overdue-tracker__list","data-testid":"list-overdue-tasks"},En=["data-testid","aria-label","onClick"],Vn={class:"overdue-tracker__meta"},Nn=e.defineComponent({__name:"OverdueTracker",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const l=a;function o(n){if(!n.due_at)return"is-low";const i=Math.abs((Date.now()-new Date(n.due_at).getTime())/36e5);return i>=72?"is-critical":i>=24?"is-high":"is-medium"}return(n,i)=>(e.openBlock(),e.createElementBlock("section",bn,[t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",hn,"No overdue tasks.")):(e.openBlock(),e.createElementBlock("ul",wn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,r=>{var s,k;return e.openBlock(),e.createElementBlock("li",{key:r.id},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["overdue-tracker__row",o(r)]),"data-testid":`item-task-${r.id}`,"aria-label":`${r.display_number_formatted}: ${r.title}, assigned to ${((s=r.primary_assignee)==null?void 0:s.name)??"Unassigned"}, due ${e.unref(we)(r.due_at)}`,onClick:d=>l("select-task",r.id)},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(r.display_number_formatted),1),e.createElementVNode("p",null,e.toDisplayString(r.title),1)]),e.createElementVNode("div",Vn,[e.createElementVNode("span",null,e.toDisplayString(e.unref(we)(r.due_at)),1),e.createElementVNode("small",null,e.toDisplayString(((k=r.primary_assignee)==null?void 0:k.name)??"Unassigned"),1)])],10,En)])}),128))]))]))}}),Xt=Q(Nn,[["__scopeId","data-v-97af3342"]]),$n={class:"health-alerts","data-testid":"panel-task-health-alerts"},Bn={key:0,class:"health-alerts__empty","data-testid":"status-health-alerts-empty"},Tn=["data-testid"],Cn=["data-testid"],Sn=["data-testid","aria-label","onClick"],Dn={class:"health-alerts__actions"},Mn=["data-testid","aria-label","onClick"],An=["data-testid","aria-label","onClick"],zn=e.defineComponent({__name:"TaskHealthAlerts",props:{widget:{}},emits:["select-task","action"],setup(t,{emit:a}){const l=t,o=a,n=e.ref({}),i=e.computed(()=>{const s=Date.now();return l.widget.items.filter(k=>(n.value[k.task.id]??0)<s).flatMap(k=>k.issues.map(d=>({issue:d,alert:k}))).reduce((k,d)=>{const E=d.issue.type;return k[E]=[...k[E]??[],d],k},{})});function r(s){n.value={...n.value,[s]:Date.now()+1440*60*1e3}}return(s,k)=>(e.openBlock(),e.createElementBlock("section",$n,[Object.keys(i.value).length===0?(e.openBlock(),e.createElementBlock("div",Bn,"No tasks need attention.")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(d,E)=>{var m;return e.openBlock(),e.createElementBlock("article",{key:E,class:"health-alerts__group","data-testid":`panel-health-group-${E}`},[e.createElementVNode("header",null,e.toDisplayString((m=d[0])==null?void 0:m.issue.label),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d,f=>(e.openBlock(),e.createElementBlock("li",{key:`${E}-${f.alert.task.id}`},[e.createElementVNode("div",{class:"health-alerts__card","data-testid":`card-health-alert-${f.alert.task.id}`},[e.createElementVNode("button",{type:"button",class:"health-alerts__task","data-testid":`btn-health-alert-task-${f.alert.task.id}`,"aria-label":`View task ${f.alert.task.display_number_formatted}: ${f.alert.task.title}`,onClick:p=>o("select-task",f.alert.task.id)},[e.createElementVNode("strong",null,e.toDisplayString(f.alert.task.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(f.alert.task.title),1)],8,Sn),e.createElementVNode("p",null,e.toDisplayString(f.issue.message),1),e.createElementVNode("div",Dn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.issue.suggested_actions,p=>(e.openBlock(),e.createElementBlock("button",{key:p,type:"button","data-testid":`btn-health-action-${p}-${f.alert.task.id}`,"aria-label":`${p.replace(/_/g," ")} for task ${f.alert.task.display_number_formatted}`,onClick:_=>o("action",{taskId:f.alert.task.id,action:p})},e.toDisplayString(p.replace(/_/g," ")),9,Mn))),128)),e.createElementVNode("button",{type:"button",class:"secondary","data-testid":`btn-snooze-alert-${f.alert.task.id}`,"aria-label":`Snooze alerts for task ${f.alert.task.display_number_formatted} for 24 hours`,onClick:p=>r(f.alert.task.id)},"Snooze 24h",8,An)])],8,Cn)]))),128))])],8,Tn)}),128))]))}}),ea=Q(zn,[["__scopeId","data-v-79a1caa4"]]),In={class:"activity-feed","data-testid":"panel-team-activity-feed"},xn={class:"activity-feed__header"},Fn={"data-testid":"badge-activity-count"},Ln={key:0,class:"activity-feed__empty","data-testid":"status-activity-empty"},Un={key:1,class:"activity-feed__list","data-testid":"list-activity-feed"},Rn=["data-testid"],Wn={class:"activity-feed__avatar","aria-hidden":"true"},Pn={class:"activity-feed__content"},On=["data-testid","aria-label","onClick"],Hn=e.defineComponent({__name:"TeamActivityFeed",props:{widget:{},scope:{}},emits:["select-task"],setup(t,{emit:a}){const l=a;return(o,n)=>(e.openBlock(),e.createElementBlock("section",In,[e.createElementVNode("header",xn,[e.createElementVNode("strong",null,e.toDisplayString(t.scope==="team"?"Team feed":"My feed"),1),e.createElementVNode("span",Fn,e.toDisplayString(t.widget.summary.count??t.widget.items.length)+" items",1)]),t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",Ln,"No recent activity.")):(e.openBlock(),e.createElementBlock("ul",Un,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,i=>{var r,s,k;return e.openBlock(),e.createElementBlock("li",{key:i.id},[e.createElementVNode("div",{class:"activity-feed__item","data-testid":`item-activity-${i.id}`},[e.createElementVNode("div",Wn,e.toDisplayString(((s=(r=i.user)==null?void 0:r.name)==null?void 0:s.slice(0,1))??"?"),1),e.createElementVNode("div",Pn,[e.createElementVNode("p",null,[e.createElementVNode("strong",null,e.toDisplayString(((k=i.user)==null?void 0:k.name)??"System"),1),e.createTextVNode(" "+e.toDisplayString(e.unref(Qt)(i))+" ",1),i.task?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"activity-feed__task-link","data-testid":`btn-activity-task-${i.task.id}`,"aria-label":`View task ${i.task.display_number_formatted}`,onClick:d=>l("select-task",i.task.id)},e.toDisplayString(i.task.display_number_formatted),9,On)):e.createCommentVNode("",!0)]),e.createElementVNode("small",null,e.toDisplayString(e.unref(we)(i.created_at)),1)])],8,Rn)])}),128))]))]))}}),ta=Q(Hn,[["__scopeId","data-v-237c3c24"]]),jn={class:"upcoming-grid","data-testid":"panel-upcoming-this-week"},qn=["data-testid","aria-label"],Yn=["data-testid"],Kn=["data-testid"],Qn=["data-testid"],Gn=["data-testid","aria-label","onClick"],Jn=e.defineComponent({__name:"UpcomingThisWeek",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const l=a;return(o,n)=>(e.openBlock(),e.createElementBlock("section",jn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.days,i=>(e.openBlock(),e.createElementBlock("article",{key:i.date,class:e.normalizeClass(["upcoming-grid__column",{"is-today":i.is_today}]),"data-testid":`panel-upcoming-day-${i.date}`,"aria-label":`${i.label}${i.is_today?" (today)":""}: ${i.tasks.length} task${i.tasks.length!==1?"s":""}`},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(i.label),1),e.createElementVNode("span",{"data-testid":`badge-day-task-count-${i.date}`},e.toDisplayString(i.tasks.length),9,Yn)]),i.tasks.length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"upcoming-grid__empty","data-testid":`status-day-empty-${i.date}`},"No tasks",8,Kn)):(e.openBlock(),e.createElementBlock("ul",{key:1,"data-testid":`list-day-tasks-${i.date}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.tasks,r=>(e.openBlock(),e.createElementBlock("li",{key:r.id},[e.createElementVNode("button",{type:"button","data-testid":`item-task-${r.id}`,"aria-label":`${r.display_number_formatted}: ${r.title}, due ${e.unref(we)(r.due_at)}`,onClick:s=>l("select-task",r.id)},[e.createElementVNode("strong",null,e.toDisplayString(r.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(r.title),1),e.createVNode(ye,{task:r,compact:""},null,8,["task"]),e.createElementVNode("small",null,e.toDisplayString(e.unref(we)(r.due_at)),1)],8,Gn)]))),128))],8,Qn))],10,qn))),128))]))}}),aa=Q(Jn,[["__scopeId","data-v-de5be104"]]),Zn={class:"widget-grid","data-testid":"panel-widget-grid"},Xn=["data-testid","aria-label","onDragstart","onDrop"],eo=e.defineComponent({__name:"WidgetGrid",props:{widgets:{}},emits:["update:widgets"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(null),i=e.computed(()=>[...l.widgets].filter(m=>m.visible!==!1).sort((m,f)=>m.y-f.y||m.x-f.x));function r(m){o("update:widgets",m(l.widgets.map(f=>({...f,...f.settings?{settings:{...f.settings}}:{}}))))}function s(m,f){m!==f&&r(p=>{const _=p.find(u=>u.id===m),B=p.find(u=>u.id===f);return _===void 0||B===void 0||([_.x,B.x]=[B.x,_.x],[_.y,B.y]=[B.y,_.y]),p})}function k(m,f){r(p=>p.map(_=>_.id!==m?_:f==="left"?{..._,x:Math.max(0,_.x-1)}:f==="right"?{..._,x:Math.min(11,_.x+1)}:f==="up"?{..._,y:Math.max(0,_.y-1)}:{..._,y:Math.max(0,_.y+1)}))}function d(m,f){r(p=>p.map(_=>_.id===m?{..._,w:Math.min(12,Math.max(2,_.w+f))}:_))}function E(m){return{gridColumn:`${m.x+1} / span ${m.w}`,gridRow:`${m.y+1} / span ${m.h}`}}return(m,f)=>(e.openBlock(),e.createElementBlock("div",Zn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock("article",{key:p.id,class:"widget-grid__item",style:e.normalizeStyle(E(p)),"data-testid":`panel-widget-grid-item-${p.id}`,draggable:"true","aria-label":`${p.id} widget, draggable`,onDragstart:_=>n.value=p.id,onDragend:f[0]||(f[0]=_=>n.value=null),onDragover:f[1]||(f[1]=e.withModifiers(()=>{},["prevent"])),onDrop:_=>n.value?s(n.value,p.id):null},[e.renderSlot(m.$slots,"default",{widget:p,move:_=>k(p.id,_),resize:_=>d(p.id,_)},void 0,!0)],44,Xn))),128))]))}}),la=Q(eo,[["__scopeId","data-v-24cc5047"]]),to={class:"task-dashboard","data-testid":"panel-task-dashboard"},ao={class:"task-dashboard__header"},lo={class:"task-dashboard__eyebrow"},no={key:0,class:"task-dashboard__error","data-testid":"status-dashboard-error",role:"alert"},oo={key:1,class:"task-dashboard__loading","data-testid":"status-dashboard-loading","aria-live":"polite"},so={key:2,class:"task-dashboard__hidden","data-testid":"panel-hidden-widgets"},io=["data-testid","aria-label","onClick"],ro=["data-testid"],co={class:"task-dashboard__panel-header"},uo=["data-testid"],mo={class:"task-dashboard__panel-controls"},po=["data-testid","onClick"],ko=["data-testid","onClick"],_o=["data-testid","onClick"],fo=["data-testid","onClick"],vo=e.defineComponent({__name:"TaskDashboard",props:{userId:{},echo:{type:[Object,Function,null]},autoConnect:{type:Boolean}},emits:["select-task","widget-action"],setup(t,{emit:a}){const l=t,o=a,n=Pt(e.computed(()=>l.userId),{echo:l.echo,autoConnect:l.autoConnect??!0}),i=n.dashboardData,r=n.loading,s=n.error,k=n.widgetLoading,d=e.computed(()=>{var u;return((u=n.dashboardData.value)==null?void 0:u.config.layout.widgets.filter(c=>c.visible===!1))??[]});let E;function m(u){var c;return{"my-tasks-today":"My Tasks Today","upcoming-this-week":"Upcoming This Week","overdue-tracker":"Overdue Tracker","team-activity-feed":((c=n.dashboardData.value)==null?void 0:c.scope)==="team"?"Team Activity":"My Activity","my-stats":"My Stats","task-health-alerts":"Task Health Alerts"}[u]??u}function f(){n.dashboardData.value!==null&&(E!==void 0&&clearTimeout(E),E=setTimeout(()=>{n.dashboardData.value!==null&&n.saveLayout(n.dashboardData.value.config.layout)},300))}function p(u){n.updateLayoutWidgets(u),f()}function _(u){var g;const c=(g=n.dashboardData.value)==null?void 0:g.config.layout.widgets.map(h=>h.id===u?{...h,visible:!0}:h);c!==void 0&&p(c)}function B(u){o("select-task",u)}return e.onBeforeUnmount(()=>{E!==void 0&&clearTimeout(E)}),(u,c)=>{var g;return e.openBlock(),e.createElementBlock("section",to,[e.createElementVNode("header",ao,[e.createElementVNode("div",null,[e.createElementVNode("p",lo,e.toDisplayString(((g=e.unref(i))==null?void 0:g.scope)==="team"?"Operations command center":"Personal command center"),1),c[2]||(c[2]=e.createElementVNode("h2",null,"Task Dashboard",-1))]),e.createElementVNode("button",{type:"button",class:"task-dashboard__refresh","data-testid":"btn-refresh-dashboard",onClick:c[0]||(c[0]=h=>e.unref(n).loadDashboard())}," Refresh ")]),e.unref(s)?(e.openBlock(),e.createElementBlock("p",no,e.toDisplayString(e.unref(s)),1)):e.unref(r)&&e.unref(i)===null?(e.openBlock(),e.createElementBlock("p",oo,"Loading dashboard…")):e.createCommentVNode("",!0),d.value.length>0?(e.openBlock(),e.createElementBlock("div",so,[c[3]||(c[3]=e.createElementVNode("span",null,"Hidden widgets",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,h=>(e.openBlock(),e.createElementBlock("button",{key:h.id,type:"button","data-testid":`btn-restore-widget-${h.id}`,"aria-label":`Show ${m(h.id)} widget`,onClick:x=>_(h.id)}," Show "+e.toDisplayString(m(h.id)),9,io))),128))])):e.createCommentVNode("",!0),e.unref(i)?(e.openBlock(),e.createBlock(la,{key:3,widgets:e.unref(i).config.layout.widgets,"onUpdate:widgets":p},{default:e.withCtx(({widget:h,move:x,resize:S})=>[e.createElementVNode("section",{class:"task-dashboard__panel","data-testid":`panel-widget-${h.id}`},[e.createElementVNode("header",co,[e.createElementVNode("div",null,[e.createElementVNode("h3",null,e.toDisplayString(m(h.id)),1),e.unref(k)[h.id]?(e.openBlock(),e.createElementBlock("small",{key:0,"data-testid":`status-widget-refreshing-${h.id}`,"aria-live":"polite"},"Refreshing…",8,uo)):e.createCommentVNode("",!0)]),e.createElementVNode("div",mo,[e.createElementVNode("button",{type:"button","aria-label":"Move left","data-testid":`btn-widget-move-left-${h.id}`,onClick:V=>x("left")},"←",8,po),e.createElementVNode("button",{type:"button","aria-label":"Move right","data-testid":`btn-widget-move-right-${h.id}`,onClick:V=>x("right")},"→",8,ko),e.createElementVNode("button",{type:"button","aria-label":"Grow widget","data-testid":`btn-widget-grow-${h.id}`,onClick:V=>S(1)},"+",8,_o),e.createElementVNode("button",{type:"button","aria-label":"Shrink widget","data-testid":`btn-widget-shrink-${h.id}`,onClick:V=>S(-1)},"−",8,fo)])]),h.id==="my-tasks-today"?(e.openBlock(),e.createBlock(Zt,{key:0,widget:e.unref(i).widgets.my_tasks_today,onSelectTask:B},null,8,["widget"])):h.id==="upcoming-this-week"?(e.openBlock(),e.createBlock(aa,{key:1,widget:e.unref(i).widgets.upcoming_this_week,onSelectTask:B},null,8,["widget"])):h.id==="overdue-tracker"?(e.openBlock(),e.createBlock(Xt,{key:2,widget:e.unref(i).widgets.overdue,onSelectTask:B},null,8,["widget"])):h.id==="team-activity-feed"?(e.openBlock(),e.createBlock(ta,{key:3,widget:e.unref(i).widgets.activity,scope:e.unref(i).scope,onSelectTask:B},null,8,["widget","scope"])):h.id==="my-stats"?(e.openBlock(),e.createBlock(Yt,{key:4,stats:e.unref(i).widgets.my_stats,"onUpdate:period":e.unref(n).setStatsPeriod},null,8,["stats","onUpdate:period"])):h.id==="task-health-alerts"?(e.openBlock(),e.createBlock(ea,{key:5,widget:e.unref(i).widgets.health_alerts,onSelectTask:B,onAction:c[1]||(c[1]=V=>o("widget-action",V))},null,8,["widget"])):e.createCommentVNode("",!0)],8,ro)]),_:1},8,["widgets"])):e.createCommentVNode("",!0)])}}}),na=Q(vo,[["__scopeId","data-v-82b54361"]]),yo={class:"task-workload-panel","data-testid":"panel-task-workload"},go={class:"task-workload-panel__summary"},bo={key:0,class:"task-workload-panel__empty","data-testid":"status-task-workload-empty"},ho={key:1,class:"task-workload-panel__list","data-testid":"list-task-workload-users"},wo=["data-testid","onClick"],Eo=e.defineComponent({__name:"TaskWorkloadPanel",props:{summary:{},limit:{default:6}},emits:["select-user"],setup(t,{emit:a}){const l=t,o=a,n=e.computed(()=>{var r;return(((r=l.summary)==null?void 0:r.workload_per_user)??[]).slice(0,l.limit)});function i(r){return`task-workload-panel__chip--${r.workload_status}`}return(r,s)=>{var k,d,E;return e.openBlock(),e.createElementBlock("section",yo,[e.createElementVNode("header",go,[e.createElementVNode("article",null,[s[0]||(s[0]=e.createElementVNode("span",null,"Open",-1)),e.createElementVNode("strong",null,e.toDisplayString(((k=t.summary)==null?void 0:k.total_open)??0),1)]),e.createElementVNode("article",null,[s[1]||(s[1]=e.createElementVNode("span",null,"Overdue",-1)),e.createElementVNode("strong",null,e.toDisplayString(((d=t.summary)==null?void 0:d.total_overdue)??0),1)]),e.createElementVNode("article",null,[s[2]||(s[2]=e.createElementVNode("span",null,"Blocked",-1)),e.createElementVNode("strong",null,e.toDisplayString(((E=t.summary)==null?void 0:E.total_blocked)??0),1)])]),n.value.length===0?(e.openBlock(),e.createElementBlock("p",bo," No workload data yet. ")):(e.openBlock(),e.createElementBlock("ul",ho,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m.user_id},[e.createElementVNode("button",{type:"button",class:"task-workload-panel__row","data-testid":`item-task-workload-${m.user_id}`,onClick:f=>o("select-user",m.user_id)},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(m.user_name),1),e.createElementVNode("p",null,e.toDisplayString(m.workload_summary),1)]),e.createElementVNode("span",{class:e.normalizeClass(["task-workload-panel__chip",i(m)])},e.toDisplayString(m.workload_status),3)],8,wo)]))),128))]))])}}}),Vo=Q(Eo,[["__scopeId","data-v-4dc515ad"]]),No=["data-tier"],$o={key:0,class:"escalation-badge__icon","aria-hidden":"true"},Bo={key:1,class:"escalation-badge__suffix"},To=e.defineComponent({__name:"EscalationBadge",props:{tier:{},acknowledgedAt:{},snoozedUntil:{},compact:{type:Boolean}},setup(t){const a=t,l=e.computed(()=>Hl(a.tier)),o=e.computed(()=>a.tier?`tier-${a.tier}`:"tier-none"),n=e.computed(()=>a.snoozedUntil?"Snoozed":a.acknowledgedAt?"Ack":null),i=e.computed(()=>{switch(a.tier){case"reminder":return"•";case"warning":return"◔";case"due_now":return"!";case"overdue":return"!!";case"escalated":return"▲";case"critical":return"!!!";default:return null}});return(r,s)=>t.tier?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["escalation-badge",[o.value,{compact:t.compact,muted:t.acknowledgedAt,snoozed:t.snoozedUntil}]]),"data-testid":"badge-escalation","data-tier":t.tier},[i.value?(e.openBlock(),e.createElementBlock("span",$o,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(l.value),1),n.value?(e.openBlock(),e.createElementBlock("span",Bo,e.toDisplayString(n.value),1)):e.createCommentVNode("",!0)],10,No)):e.createCommentVNode("",!0)}}),Ye=Q(To,[["__scopeId","data-v-e454b2a6"]]),Co=["data-testid","aria-label","onKeydown"],So={class:"task-card__header"},Do={class:"task-card__identity"},Mo={class:"task-card__number"},Ao={class:"task-card__title"},zo={class:"task-card__meta"},Io={key:0,class:"task-card__lock","aria-label":"Blocked task"},xo={key:0,class:"task-card__description"},Fo={class:"task-card__footer"},Lo={class:"task-card__person"},Uo={class:"task-card__person-value"},Ro={class:"task-card__date"},Wo={class:"task-card__person-value"},Po=["aria-label"],Oo={class:"task-card__progress-bar","aria-hidden":"true"},Ho={class:"task-card__progress-label","aria-hidden":"true"},jo={key:2,class:"task-card__tags","aria-label":"Tags"},qo=e.defineComponent({__name:"TaskCard",props:{task:{},compact:{type:Boolean}},emits:["select"],setup(t,{emit:a}){const l=t,o=a,n=e.computed(()=>mt(l.task.due_at??null)),i=e.computed(()=>{var E;return((E=l.task.tags)==null?void 0:E.slice(0,l.compact?2:4))??[]}),r=e.computed(()=>l.task.has_unresolved_blockers===!0||l.task.status==="blocked"),s=e.computed(()=>{const E=l.task.checklist_progress;return!E||E.total===0?0:Math.min(100,Math.round(E.completed/E.total*100))}),k=e.computed(()=>l.task.current_escalation_tier?`escalation-${l.task.current_escalation_tier}`:"");function d(){o("select",l.task.id)}return(E,m)=>{var f;return e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["task-card",[k.value,{compact:t.compact,overdue:t.task.is_overdue}]]),"data-testid":`card-task-${t.task.id}`,"aria-label":`Task ${t.task.display_number_formatted}: ${t.task.title}`,role:"button",tabindex:"0",onClick:d,onKeydown:e.withKeys(e.withModifiers(d,["prevent"]),["enter"])},[e.createElementVNode("header",So,[e.createElementVNode("div",Do,[e.createElementVNode("span",Mo,e.toDisplayString(t.task.display_number_formatted),1),e.createElementVNode("h3",Ao,e.toDisplayString(t.task.title),1)]),e.createElementVNode("div",zo,[r.value?(e.openBlock(),e.createElementBlock("span",Io," Lock ")):e.createCommentVNode("",!0),e.createVNode(ye,{task:t.task,compact:""},null,8,["task"]),e.createVNode(Ye,{tier:t.task.current_escalation_tier??null,"acknowledged-at":t.task.escalation_acknowledged_at??null,"snoozed-until":t.task.escalation_snoozed_until??null,compact:""},null,8,["tier","acknowledged-at","snoozed-until"]),e.createVNode(Ie,{priority:t.task.priority,compact:""},null,8,["priority"]),e.createVNode(xe,{status:t.task.status},null,8,["status"])])]),t.task.description&&!t.compact?(e.openBlock(),e.createElementBlock("p",xo,e.toDisplayString(t.task.description),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Fo,[e.createElementVNode("div",Lo,[m[0]||(m[0]=e.createElementVNode("span",{class:"task-card__person-label"},"Assignee",-1)),e.createElementVNode("span",Uo,e.toDisplayString(((f=t.task.primary_assignee)==null?void 0:f.name)??"Unassigned"),1)]),e.createElementVNode("div",Ro,[m[1]||(m[1]=e.createElementVNode("span",{class:"task-card__person-label"},"Deadline",-1)),e.createElementVNode("span",Wo,e.toDisplayString(n.value),1)])]),t.task.checklist_progress&&t.task.checklist_progress.total>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"task-card__progress","aria-label":`Checklist progress: ${t.task.checklist_progress.completed} of ${t.task.checklist_progress.total} items complete`},[e.createElementVNode("div",Oo,[e.createElementVNode("div",{class:"task-card__progress-fill",style:e.normalizeStyle({width:`${s.value}%`})},null,4)]),e.createElementVNode("span",Ho,e.toDisplayString(t.task.checklist_progress.completed)+"/"+e.toDisplayString(t.task.checklist_progress.total),1)],8,Po)):e.createCommentVNode("",!0),i.value.length>0?(e.openBlock(),e.createElementBlock("ul",jo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock("li",{key:p.id,class:"task-card__tag"},[e.createElementVNode("span",{class:"task-card__tag-dot",style:e.normalizeStyle({backgroundColor:p.color??"#94a3b8"}),"aria-hidden":"true"},null,4),e.createTextVNode(" "+e.toDisplayString(p.name),1)]))),128))])):e.createCommentVNode("",!0)],42,Co)}}}),pt=Q(qo,[["__scopeId","data-v-c2a57a3e"]]),Yo={class:"task-board-view","aria-label":"Task board","data-testid":"panel-task-board"},Ko={class:"task-board-view__header"},Qo={key:0,class:"task-board-view__error",role:"alert","data-testid":"status-board-error"},Go={class:"task-board-view__columns","data-testid":"list-board-columns"},Jo=["data-testid","onDragover","onDrop"],Zo={class:"task-board-view__column-header"},Xo=["data-testid","aria-label"],es=["data-testid"],ts=["data-testid"],as=["data-testid","onDragstart"],ls=e.defineComponent({__name:"TaskBoardView",props:{tasks:{},loading:{type:Boolean},visibleStatuses:{},updateTaskStatus:{type:[Function,null]}},emits:["select-task","status-change"],setup(t,{emit:a}){const l=["draft","open","in_progress","blocked","under_review","complete","cancelled"],o=t,n=a,i=e.ref([]),r=e.ref(null),s=e.ref(null),k=e.ref(null);e.watch(()=>o.tasks,u=>{i.value=u.map(c=>({...c}))},{immediate:!0,deep:!0});const d=e.computed(()=>o.visibleStatuses??l),E=e.computed(()=>({draft:i.value.filter(u=>u.status==="draft"),open:i.value.filter(u=>u.status==="open"),in_progress:i.value.filter(u=>u.status==="in_progress"),blocked:i.value.filter(u=>u.status==="blocked"),under_review:i.value.filter(u=>u.status==="under_review"),complete:i.value.filter(u=>u.status==="complete"),cancelled:i.value.filter(u=>u.status==="cancelled")}));function m(u,c){var g,h,x;r.value=u,k.value=null,(g=c.dataTransfer)==null||g.setData("text/plain",u),(x=(h=c.dataTransfer)==null?void 0:h.setDragImage)==null||x.call(h,c.currentTarget,20,20)}function f(){r.value=null,s.value=null}function p(){return i.value.find(u=>u.id===r.value)}function _(u){const c=p();return c===void 0?!1:yt(c,u)}async function B(u){var h;const c=p();if(c===void 0){f();return}if(!yt(c,u)){k.value=`Task ${c.display_number_formatted} cannot move to ${nt(u)}.`,f();return}const g=c.status;c.status=u,n("status-change",{taskId:c.id,status:u});try{await((h=o.updateTaskStatus)==null?void 0:h.call(o,c.id,u))}catch(x){c.status=g,k.value=x instanceof Error?x.message:"Unable to update the task status."}finally{f()}}return(u,c)=>(e.openBlock(),e.createElementBlock("section",Yo,[e.createElementVNode("header",Ko,[c[2]||(c[2]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Board"),e.createElementVNode("p",null,"Drag tasks between status columns to keep work moving.")],-1)),k.value?(e.openBlock(),e.createElementBlock("p",Qo,e.toDisplayString(k.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Go,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,g=>(e.openBlock(),e.createElementBlock("section",{key:g,class:e.normalizeClass(["task-board-view__column",{"is-hovered":s.value===g,"is-invalid":s.value===g&&r.value!==null&&!_(g)}]),"data-testid":`panel-board-column-${g}`,onDragover:e.withModifiers(h=>s.value=g,["prevent"]),onDragleave:c[1]||(c[1]=h=>s.value=null),onDrop:e.withModifiers(h=>B(g),["prevent"])},[e.createElementVNode("header",Zo,[e.createElementVNode("div",null,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(nt)(g)),1),e.createElementVNode("span",{"data-testid":`badge-column-count-${g}`,"aria-label":`${E.value[g].length} tasks`},e.toDisplayString(E.value[g].length),9,Xo)])]),e.createElementVNode("div",{class:"task-board-view__column-body","data-testid":`list-column-tasks-${g}`},[E.value[g].length===0&&!t.loading?(e.openBlock(),e.createElementBlock("p",{key:0,class:"task-board-view__empty","data-testid":`panel-empty-column-${g}`}," Nothing here. ",8,ts)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E.value[g],h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"task-board-view__card",draggable:"true","data-testid":`card-task-${h.id}`,onDragstart:x=>m(h.id,x),onDragend:f},[e.createVNode(pt,{task:h,compact:"",onSelect:c[0]||(c[0]=x=>n("select-task",x))},null,8,["task"])],40,as))),128))],8,es)],42,Jo))),128))])]))}}),ns=Q(ls,[["__scopeId","data-v-d1d142e1"]]),os={class:"task-assignee-picker__control"},ss=["value","data-testid","aria-label","aria-expanded","aria-activedescendant","disabled","placeholder"],is=["data-testid","data-placement"],rs={key:0,class:"task-assignee-picker__hint","data-testid":"status-assignee-ranking"},ds={key:1,class:"task-assignee-picker__status","data-testid":"status-assignee-loading"},cs={key:2,class:"task-assignee-picker__status task-assignee-picker__status--error","data-testid":"status-assignee-error"},us={key:3,class:"task-assignee-picker__status","data-testid":"status-assignee-empty"},ms=["id","data-testid","aria-selected","onMouseenter","onClick"],ps={class:"task-assignee-picker__heading"},ks={key:0,class:"task-assignee-picker__recommendation","data-testid":"status-assignee-recommended"},_s={key:0,class:"task-assignee-picker__subtitle"},fs={key:1,class:"task-assignee-picker__meta"},vs={key:2,class:"task-assignee-picker__workload"},ys=e.defineComponent({__name:"TaskAssigneePicker",props:{modelValue:{default:null},selectedUser:{default:null},disabled:{type:Boolean,default:!1},placeholder:{default:"Search employees by name or email"},ariaLabel:{default:"Search assignees"},inputTestId:{default:"input-task-assignee"},listTestId:{default:"list-assignee-results"},rankByWorkload:{type:Boolean,default:!1},showWorkload:{type:Boolean,default:!0}},emits:["update:modelValue","select"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(null),i=e.ref(null),r=e.ref(null),s=e.ref(""),k=e.ref(null),d=e.ref([]),E=e.ref(0),m=e.ref(!1),f=e.ref(!1),p=e.ref(null),_=e.ref("bottom"),B=e.ref({position:"fixed",top:"-9999px",left:"0px",width:"0px",maxHeight:"320px",transform:"none",zIndex:"5000",pointerEvents:"auto"});let u=null,c=0,g=!1;const x=`task-assignee-results-${Math.random().toString(36).slice(2,10)}`,S=e.computed(()=>{const z=d.value[E.value];return z===void 0?void 0:`${x}-${z.id}`}),V=e.computed(()=>{var q;const z=((q=k.value)==null?void 0:q.label)??"",j=s.value.trim()!==""&&s.value.trim()!==z.trim();return f.value||p.value!==null||j&&d.value.length===0}),v=e.computed(()=>l.rankByWorkload&&l.showWorkload&&d.value.some(z=>z.workload!==null)),N=e.computed(()=>m.value&&(d.value.length>0||V.value));function I(z){if(z==null)return null;const j="subtitle"in z&&typeof z.subtitle=="string"&&z.subtitle.trim()!==""?z.subtitle.trim():null,q="email"in z&&typeof z.email=="string"&&z.email.trim()!==""?z.email.trim():null,Z=j??q,ae="label"in z&&typeof z.label=="string"&&z.label.trim()!==""?z.label.trim():Z===null?z.name:`${z.name} - ${Z}`;return{id:String(z.id),name:z.name,email:q,label:ae,subtitle:Z,department:"department"in z&&typeof z.department=="string"&&z.department.trim()!==""?z.department.trim():null,position:"position"in z&&typeof z.position=="string"&&z.position.trim()!==""?z.position.trim():null,role_names:"role_names"in z&&Array.isArray(z.role_names)?z.role_names.filter(ne=>typeof ne=="string"&&ne.trim()!==""):[],workload:"workload"in z&&z.workload?z.workload:null,...z.avatar_url?{avatar_url:z.avatar_url}:{}}}function Y(z){return l.rankByWorkload?[...z].sort((j,q)=>{var ne,me;const Z=((ne=j.workload)==null?void 0:ne.workload_score)??0,ae=((me=q.workload)==null?void 0:me.workload_score)??0;return Z!==ae?Z-ae:j.name.localeCompare(q.name)}):z}function te(z){return[z.position,z.department,...(z.role_names??[]).slice(0,1)].filter(j=>typeof j=="string"&&j.trim()!=="")}function F(z){return z.workload?`task-assignee-picker__workload--${z.workload.workload_status}`:null}function K(z,j){return l.rankByWorkload&&j===0&&z.workload!==null&&d.value.length>0}function G(){var z;s.value=((z=k.value)==null?void 0:z.label)??""}function ee(){u!==null&&(clearTimeout(u),u=null)}function H(){d.value=[],E.value=0}function A(){if(i.value===null||!N.value)return;const z=i.value.getBoundingClientRect(),j=window.innerWidth,q=window.innerHeight,Z=8,ae=Math.min(z.width,j-Z*2),ne=Math.min(Math.max(Z,z.left),Math.max(Z,j-ae-Z)),me=q-z.bottom-Z,Ee=z.top-Z,_e=me<240&&Ee>me,Te=Math.max(140,_e?Ee:me);_.value=_e?"top":"bottom",B.value={position:"fixed",top:`${_e?z.top-Z:z.bottom+Z}px`,left:`${ne}px`,width:`${ae}px`,maxHeight:`${Math.min(320,Te)}px`,transform:_e?"translateY(-100%)":"none",zIndex:"5000",pointerEvents:"auto"}}function P(){e.nextTick(()=>{A()})}function C(){g||(window.addEventListener("resize",A),document.addEventListener("scroll",A,!0),g=!0)}function D(){g&&(window.removeEventListener("resize",A),document.removeEventListener("scroll",A,!0),g=!1)}function L(){if(m.value=!1,H(),p.value=null,k.value!==null){G();return}s.value=""}async function b(z){const j=z.trim();if(j===""){k.value=null,s.value="";return}const q=++c;f.value=!0;try{const Z=await Pe.searchUsers(j,{limit:1});if(q!==c)return;const ae=Z.find(ne=>ne.id===j)??Z[0]??null;k.value=ae,G()}catch{if(q!==c)return;k.value=null,s.value=j}finally{q===c&&(f.value=!1)}}async function w(z){const j=z.trim();if(j===""){f.value=!1,p.value=null,H();return}const q=++c;f.value=!0,p.value=null;try{const Z=await Pe.searchUsers(j,{limit:8});if(q!==c)return;d.value=Y(Z),E.value=0}catch{if(q!==c)return;H(),p.value="Unable to search employees right now."}finally{q===c&&(f.value=!1)}}function T(z){ee(),u=setTimeout(()=>{w(z)},200)}function W(z){k.value=z,o("update:modelValue",z.id),o("select",z),G(),m.value=!1,p.value=null,H()}function R(){var z;ee(),c+=1,k.value=null,s.value="",m.value=!1,p.value=null,H(),o("update:modelValue",null),o("select",null),(z=i.value)==null||z.focus()}function le(z){const q=z.target.value;if(s.value=q,m.value=!0,p.value=null,k.value!==null&&(k.value=null,o("update:modelValue",null),o("select",null)),q.trim()===""){ee(),H();return}T(q)}function oe(){l.disabled||(m.value=!0,k.value===null&&s.value.trim()!==""&&d.value.length===0&&T(s.value))}function ke(z){var q,Z;const j=z.relatedTarget;j!==null&&((q=n.value)!=null&&q.contains(j)||(Z=r.value)!=null&&Z.contains(j))||L()}function J(z){if(z.key==="Escape"){z.preventDefault(),L();return}if(d.value.length!==0){if(z.key==="ArrowDown"){z.preventDefault(),m.value=!0,E.value=(E.value+1)%d.value.length;return}if(z.key==="ArrowUp"){z.preventDefault(),m.value=!0,E.value=E.value<=0?d.value.length-1:E.value-1;return}if(z.key==="Enter"&&m.value){const j=d.value[E.value];j!==void 0&&(z.preventDefault(),W(j))}}}return e.watch(N,z=>{if(z){C(),P();return}D()},{immediate:!0}),e.watch(()=>[N.value,d.value.length,f.value,p.value],([z])=>{z&&P()}),e.watch(()=>l.selectedUser,z=>{const j=I(z);j!==null&&(k.value=j,G())},{immediate:!0}),e.watch(()=>l.modelValue,z=>{var Z;const j=z==null||z===""?null:String(z),q=((Z=k.value)==null?void 0:Z.id)??null;if(j===q){j===null&&(k.value=null,s.value="");return}if(j===null){if(k.value===null&&s.value.trim()!=="")return;k.value=null,s.value="",H();return}b(j)},{immediate:!0}),e.onBeforeUnmount(()=>{ee(),D()}),(z,j)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:n,class:e.normalizeClass(["task-assignee-picker",{"is-disabled":t.disabled}]),onFocusout:ke},[e.createElementVNode("div",os,[e.createElementVNode("input",{ref_key:"inputRef",ref:i,value:s.value,type:"text","data-testid":t.inputTestId,class:"task-assignee-picker__input","aria-label":t.ariaLabel,"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":x,"aria-expanded":m.value,"aria-activedescendant":S.value,disabled:t.disabled,placeholder:t.placeholder,role:"combobox",autocomplete:"off",onFocus:oe,onInput:le,onKeydown:J},null,40,ss),!t.disabled&&(k.value!==null||s.value!=="")?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-assignee-picker__clear","data-testid":"btn-clear-assignee","aria-label":"Clear assignee",onClick:R}," × ")):e.createCommentVNode("",!0)]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[N.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuRef",ref:r,id:x,class:"task-assignee-picker__menu","data-testid":t.listTestId,"data-placement":_.value,style:e.normalizeStyle(B.value),role:"listbox"},[v.value&&!f.value&&p.value===null&&d.value.length>0?(e.openBlock(),e.createElementBlock("p",rs," Ranked by current workload. Lowest-load match first. ")):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("p",ds," Searching employees... ")):p.value!==null?(e.openBlock(),e.createElementBlock("p",cs,e.toDisplayString(p.value),1)):d.value.length===0?(e.openBlock(),e.createElementBlock("p",us," No matching employees found. ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:4},e.renderList(d.value,(q,Z)=>(e.openBlock(),e.createElementBlock("button",{id:`${x}-${q.id}`,key:q.id,type:"button",class:e.normalizeClass(["task-assignee-picker__option",{"is-active":Z===E.value}]),"data-testid":`option-assignee-${q.id}`,role:"option","aria-selected":Z===E.value,onMousedown:j[0]||(j[0]=e.withModifiers(()=>{},["prevent"])),onMouseenter:ae=>E.value=Z,onClick:ae=>W(q)},[e.createElementVNode("div",ps,[e.createElementVNode("strong",null,e.toDisplayString(q.name),1),K(q,Z)?(e.openBlock(),e.createElementBlock("span",ks," Best available ")):e.createCommentVNode("",!0)]),q.subtitle?(e.openBlock(),e.createElementBlock("span",_s,e.toDisplayString(q.subtitle),1)):e.createCommentVNode("",!0),te(q).length>0?(e.openBlock(),e.createElementBlock("span",fs,e.toDisplayString(te(q).join(" · ")),1)):e.createCommentVNode("",!0),t.showWorkload&&q.workload?(e.openBlock(),e.createElementBlock("div",vs,[e.createElementVNode("span",{class:e.normalizeClass(["task-assignee-picker__workload-chip",F(q)])},e.toDisplayString(q.workload.workload_summary),3)])):e.createCommentVNode("",!0)],42,ms))),128))],12,is)):e.createCommentVNode("",!0)]))],34))}}),ge=Q(ys,[["__scopeId","data-v-dddd3b7f"]]),gs={class:"task-bulk-action-bar","aria-label":"Bulk actions","data-testid":"panel-bulk-action-bar"},bs={class:"task-bulk-action-bar__summary"},hs={"data-testid":"status-selected-count"},ws={class:"task-bulk-action-bar__controls"},Es=["disabled"],Vs={key:0},Ns=["disabled"],$s={key:1},Bs=["disabled"],Ts={key:2},Cs={key:3},Ss=["disabled"],Ds={key:4},Ms=["disabled"],As=["disabled"],zs={key:0,class:"task-bulk-action-bar__result",role:"status","aria-live":"polite","data-testid":"status-bulk-result"},Is=e.defineComponent({__name:"TaskBulkActionBar",props:{selectedCount:{},busy:{type:Boolean},result:{}},emits:["apply","clear"],setup(t,{emit:a}){const l=t,o=a,n=e.ref("set_status"),i=e.ref("open"),r=e.ref("medium"),s=e.ref(""),k=e.ref(""),d=e.ref(""),E=e.computed(()=>n.value==="set_status"),m=e.computed(()=>n.value==="set_priority"),f=e.computed(()=>n.value==="assign"),p=e.computed(()=>n.value==="add_tag"||n.value==="remove_tag"),_=e.computed(()=>n.value==="complete"),B=e.computed(()=>l.result===null||l.result===void 0?"":`${l.result.success.length} succeeded, ${l.result.failed.length} failed`);function u(){const c={};E.value&&(c.status=i.value),m.value&&(c.priority=r.value),f.value&&(c.user_id=s.value),p.value&&(c.name=k.value),_.value&&d.value.trim()!==""&&(c.note=d.value.trim()),o("apply",{action:n.value,params:c})}return(c,g)=>(e.openBlock(),e.createElementBlock("section",gs,[e.createElementVNode("div",bs,[e.createElementVNode("strong",hs,e.toDisplayString(t.selectedCount)+" selected",1),e.createElementVNode("button",{type:"button","data-testid":"btn-clear-selection",onClick:g[0]||(g[0]=h=>o("clear"))},"Clear selection")]),e.createElementVNode("div",ws,[e.createElementVNode("label",null,[g[8]||(g[8]=e.createElementVNode("span",null,"Action",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[1]||(g[1]=h=>n.value=h),"data-testid":"select-bulk-action","aria-label":"Bulk action to apply",disabled:t.busy},[...g[7]||(g[7]=[e.createStaticVNode('<option value="assign" data-v-ccd06617>Assign</option><option value="set_status" data-v-ccd06617>Set status</option><option value="set_priority" data-v-ccd06617>Set priority</option><option value="add_tag" data-v-ccd06617>Add tag</option><option value="remove_tag" data-v-ccd06617>Remove tag</option><option value="complete" data-v-ccd06617>Complete</option><option value="cancel" data-v-ccd06617>Cancel</option><option value="delete" data-v-ccd06617>Delete</option>',8)])],8,Es),[[e.vModelSelect,n.value]])]),E.value?(e.openBlock(),e.createElementBlock("label",Vs,[g[10]||(g[10]=e.createElementVNode("span",null,"Status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[2]||(g[2]=h=>i.value=h),"data-testid":"select-bulk-status","aria-label":"Status to set",disabled:t.busy},[...g[9]||(g[9]=[e.createStaticVNode('<option value="draft" data-v-ccd06617>Draft</option><option value="open" data-v-ccd06617>Open</option><option value="in_progress" data-v-ccd06617>In Progress</option><option value="blocked" data-v-ccd06617>Blocked</option><option value="under_review" data-v-ccd06617>Under Review</option><option value="complete" data-v-ccd06617>Complete</option><option value="cancelled" data-v-ccd06617>Cancelled</option>',7)])],8,Ns),[[e.vModelSelect,i.value]])])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("label",$s,[g[12]||(g[12]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":g[3]||(g[3]=h=>r.value=h),"data-testid":"select-bulk-priority","aria-label":"Priority to set",disabled:t.busy},[...g[11]||(g[11]=[e.createStaticVNode('<option value="none" data-v-ccd06617>None</option><option value="low" data-v-ccd06617>Low</option><option value="medium" data-v-ccd06617>Medium</option><option value="high" data-v-ccd06617>High</option><option value="urgent" data-v-ccd06617>Urgent</option><option value="critical" data-v-ccd06617>Critical</option>',6)])],8,Bs),[[e.vModelSelect,r.value]])])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("label",Ts,[g[13]||(g[13]=e.createElementVNode("span",null,"Assignee",-1)),e.createVNode(ge,{modelValue:s.value,"onUpdate:modelValue":g[4]||(g[4]=h=>s.value=h),"input-test-id":"input-bulk-assignee","aria-label":"Assignee",disabled:t.busy??!1,placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","disabled"])])):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("label",Cs,[g[14]||(g[14]=e.createElementVNode("span",null,"Tag",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[5]||(g[5]=h=>k.value=h),type:"text","data-testid":"input-bulk-tag","aria-label":"Tag name",disabled:t.busy,placeholder:"warehouse"},null,8,Ss),[[e.vModelText,k.value]])])):e.createCommentVNode("",!0),_.value?(e.openBlock(),e.createElementBlock("label",Ds,[g[15]||(g[15]=e.createElementVNode("span",null,"Note",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[6]||(g[6]=h=>d.value=h),type:"text","data-testid":"input-bulk-completion-note","aria-label":"Completion note",disabled:t.busy,placeholder:"Optional completion note"},null,8,Ms),[[e.vModelText,d.value]])])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"task-bulk-action-bar__apply","data-testid":"btn-apply-bulk-action",disabled:t.busy,onClick:u}," Apply ",8,As)]),B.value?(e.openBlock(),e.createElementBlock("p",zs,e.toDisplayString(B.value),1)):e.createCommentVNode("",!0)]))}}),oa=Q(Is,[["__scopeId","data-v-ccd06617"]]),xs={class:"task-calendar-view","aria-label":"Task calendar","data-testid":"panel-task-calendar"},Fs={class:"task-calendar-view__header"},Ls={class:"task-calendar-view__nav",role:"group","aria-label":"Calendar navigation"},Us={"aria-live":"polite","aria-atomic":"true","data-testid":"status-current-month"},Rs={class:"task-calendar-view__layout"},Ws=["aria-label"],Ps=["data-testid"],Os={class:"task-calendar-view__cell-header"},Hs=["data-testid","aria-label"],js=["data-testid","aria-label","onClick"],qs={class:"task-calendar-view__task-number"},Ys={class:"task-calendar-view__task-title"},Ks={class:"task-calendar-view__sidebar","data-testid":"panel-no-date-sidebar"},Qs={key:0,"data-testid":"status-no-unscheduled"},Gs=["data-testid","aria-label","onClick"],Js=e.defineComponent({__name:"TaskCalendarView",props:{tasks:{},initialMonth:{}},emits:["select-task"],setup(t,{emit:a}){const l=t,o=a,n=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function i(f){if(f instanceof Date)return new Date(f.getFullYear(),f.getMonth(),1);if(typeof f=="string"&&/^\d{4}-\d{2}/.test(f)){const[_,B]=f.slice(0,7).split("-");return new Date(Number(_),Number(B)-1,1)}const p=typeof f=="string"?new Date(f):new Date;return new Date(p.getFullYear(),p.getMonth(),1)}const r=e.ref(i(l.initialMonth)),s=e.computed(()=>new Intl.DateTimeFormat("en-US",{month:"long",year:"numeric"}).format(r.value)),k=e.computed(()=>{const f=new Date(r.value);return f.setDate(1-f.getDay()),Array.from({length:42},(p,_)=>{const B=new Date(f);B.setDate(f.getDate()+_);const u=B.toISOString().slice(0,10),c=l.tasks.filter(g=>{var h;return((h=g.due_at)==null?void 0:h.slice(0,10))===u});return{key:u,date:B,isCurrentMonth:B.getMonth()===r.value.getMonth(),tasks:c}})}),d=e.computed(()=>l.tasks.filter(f=>f.due_at===null));function E(){r.value=new Date(r.value.getFullYear(),r.value.getMonth()-1,1)}function m(){r.value=new Date(r.value.getFullYear(),r.value.getMonth()+1,1)}return(f,p)=>(e.openBlock(),e.createElementBlock("section",xs,[e.createElementVNode("header",Fs,[p[0]||(p[0]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Calendar"),e.createElementVNode("p",null,"Track due dates at a glance and keep unscheduled work visible.")],-1)),e.createElementVNode("div",Ls,[e.createElementVNode("button",{type:"button","data-testid":"btn-prev-month","aria-label":"Previous month",onClick:E},"Previous"),e.createElementVNode("strong",Us,e.toDisplayString(s.value),1),e.createElementVNode("button",{type:"button","data-testid":"btn-next-month","aria-label":"Next month",onClick:m},"Next")])]),e.createElementVNode("div",Rs,[e.createElementVNode("div",{class:"task-calendar-view__grid",role:"grid","aria-label":`Calendar for ${s.value}`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,_=>e.createElementVNode("div",{key:_,class:"task-calendar-view__weekday",role:"columnheader"},e.toDisplayString(_),1)),64)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,_=>(e.openBlock(),e.createElementBlock("article",{key:_.key,class:e.normalizeClass(["task-calendar-view__cell",{"is-muted":!_.isCurrentMonth}]),role:"gridcell","data-testid":`panel-calendar-day-${_.key}`},[e.createElementVNode("header",Os,[e.createElementVNode("span",null,e.toDisplayString(_.date.getDate()),1),_.tasks.length>3?(e.openBlock(),e.createElementBlock("span",{key:0,class:"task-calendar-view__dot-indicator","data-testid":`badge-overflow-${_.key}`,"aria-label":`${_.tasks.length-3} more tasks`},"+"+e.toDisplayString(_.tasks.length-3),9,Hs)):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.tasks.slice(0,3),B=>(e.openBlock(),e.createElementBlock("button",{key:B.id,type:"button",class:e.normalizeClass(["task-calendar-view__task",{"is-overdue":B.is_overdue}]),"data-testid":`btn-calendar-task-${B.id}`,"aria-label":`${B.display_number_formatted}: ${B.title}${B.is_overdue?" (overdue)":""}`,style:e.normalizeStyle({"--task-calendar-priority":e.unref(Ol)(B.priority)}),onClick:u=>o("select-task",B.id)},[e.createElementVNode("span",qs,e.toDisplayString(B.display_number_formatted),1),e.createElementVNode("span",Ys,e.toDisplayString(B.title),1),e.createVNode(ye,{task:B,compact:""},null,8,["task"])],14,js))),128))],10,Ps))),128))],8,Ws),e.createElementVNode("aside",Ks,[p[1]||(p[1]=e.createElementVNode("h3",null,"No Date",-1)),d.value.length===0?(e.openBlock(),e.createElementBlock("p",Qs,"Every task in this set has a due date.")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,_=>(e.openBlock(),e.createElementBlock("button",{key:_.id,type:"button",class:"task-calendar-view__sidebar-task","data-testid":`btn-sidebar-task-${_.id}`,"aria-label":`${_.display_number_formatted}: ${_.title}`,onClick:B=>o("select-task",_.id)},[e.createElementVNode("strong",null,e.toDisplayString(_.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(_.title),1),e.createVNode(ye,{task:_,compact:""},null,8,["task"]),e.createElementVNode("small",null,e.toDisplayString(e.unref(mt)(_.due_at)),1)],8,Gs))),128))])])]))}}),Zs=Q(Js,[["__scopeId","data-v-583da259"]]),Xs={class:"task-filter-bar","data-testid":"panel-filter-bar"},ei={class:"task-filter-bar__topline"},ti={class:"task-filter-bar__search"},ai=["disabled"],li={class:"task-filter-bar__actions"},ni=["aria-label"],oi={class:"task-filter-bar__grid"},si=["disabled"],ii=["selected","value"],ri=["disabled"],di=["selected","value"],ci=["value","disabled"],ui=["value","disabled"],mi=["value","disabled"],pi=e.defineComponent({__name:"TaskFilterBar",props:{modelValue:{},loading:{type:Boolean}},emits:["update:modelValue","clear","save-current"],setup(t,{emit:a}){const l=t,o=a,n=["draft","open","in_progress","blocked","under_review","complete","cancelled"],i=["none","low","medium","high","urgent","critical"],r=e.ref(l.modelValue.search??"");let s=null;e.watch(()=>l.modelValue.search,u=>{r.value=u??""}),e.onBeforeUnmount(()=>{s&&clearTimeout(s)});const k=e.computed(()=>Object.entries(l.modelValue).reduce((u,[c,g])=>c==="page"||c==="per_page"||c==="sort"||c==="assignee_name"||g==null||g===""||Array.isArray(g)&&g.length===0?u:u+1,0));function d(u,c){const g={...l.modelValue,page:1};c==null||c===""?delete g[u]:g[u]=c,o("update:modelValue",g)}function E(u,c){const g=c.target,h=Array.from(g.selectedOptions).map(x=>x.value);d(u,h.length>0?h:void 0)}function m(){s&&clearTimeout(s),s=setTimeout(()=>{d("search",r.value||void 0)},250)}const f=e.ref(null);function p(u){f.value=(u==null?void 0:u.name)??null;const c=l.modelValue.assignee??l.modelValue.assignee_id;u&&c&&String(c)===String(u.id)&&!l.modelValue.assignee_name&&o("update:modelValue",{...l.modelValue,assignee_name:u.name})}function _(u){const c={...l.modelValue,page:1};delete c.assignee_id,delete c.assignee_name,u===null||u===""?delete c.assignee:(c.assignee=u,f.value&&(c.assignee_name=f.value)),f.value=null,o("update:modelValue",c)}function B(){r.value="",o("update:modelValue",{page:1,per_page:l.modelValue.per_page??15,sort:l.modelValue.sort??"-created_at"}),o("clear")}return(u,c)=>(e.openBlock(),e.createElementBlock("section",Xs,[e.createElementVNode("div",ei,[e.createElementVNode("div",ti,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=g=>r.value=g),type:"search","data-testid":"input-search-tasks","aria-label":"Search tasks",disabled:t.loading,placeholder:"Search tasks",onInput:m},null,40,ai),[[e.vModelText,r.value]])]),e.createElementVNode("div",li,[e.createElementVNode("button",{type:"button",class:"task-filter-bar__save","data-testid":"btn-save-filter",onClick:c[1]||(c[1]=g=>o("save-current"))}," Save current filter "),e.createElementVNode("button",{type:"button",class:"task-filter-bar__clear","data-testid":"btn-clear-filters",onClick:B},[c[7]||(c[7]=e.createTextVNode(" Clear all ",-1)),k.value>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"task-filter-bar__badge","data-testid":"badge-active-filter-count","aria-label":`${k.value} active filters`},e.toDisplayString(k.value),9,ni)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",oi,[e.createElementVNode("label",null,[c[8]||(c[8]=e.createElementVNode("span",null,"Status",-1)),e.createElementVNode("select",{multiple:"","data-testid":"select-status-filter","aria-label":"Filter by status",disabled:t.loading,onChange:c[2]||(c[2]=g=>E("status",g))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,g=>e.createElementVNode("option",{key:g,selected:Array.isArray(t.modelValue.status)?t.modelValue.status.includes(g):t.modelValue.status===g,value:g},e.toDisplayString(g),9,ii)),64))],40,si)]),e.createElementVNode("label",null,[c[9]||(c[9]=e.createElementVNode("span",null,"Priority",-1)),e.createElementVNode("select",{multiple:"","data-testid":"select-priority-filter","aria-label":"Filter by priority",disabled:t.loading,onChange:c[3]||(c[3]=g=>E("priority",g))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,g=>e.createElementVNode("option",{key:g,selected:Array.isArray(t.modelValue.priority)?t.modelValue.priority.includes(g):t.modelValue.priority===g,value:g},e.toDisplayString(g),9,di)),64))],40,ri)]),e.createElementVNode("label",null,[c[10]||(c[10]=e.createElementVNode("span",null,"Assignee",-1)),e.createVNode(ge,{"model-value":t.modelValue.assignee??t.modelValue.assignee_id??null,"input-test-id":"input-assignee-filter","aria-label":"Filter by assignee",disabled:t.loading??!1,placeholder:"Filter by employee",onSelect:p,"onUpdate:modelValue":_},null,8,["model-value","disabled"])]),e.createElementVNode("label",null,[c[11]||(c[11]=e.createElementVNode("span",null,"Tag",-1)),e.createElementVNode("input",{value:t.modelValue.tag??"",type:"text","data-testid":"input-tag-filter","aria-label":"Filter by tag",disabled:t.loading,placeholder:"Tag name",onInput:c[4]||(c[4]=g=>d("tag",g.target.value||void 0))},null,40,ci)]),e.createElementVNode("label",null,[c[12]||(c[12]=e.createElementVNode("span",null,"Due after",-1)),e.createElementVNode("input",{value:t.modelValue.due_after??"",type:"date","data-testid":"input-due-after-filter","aria-label":"Filter tasks due after date",disabled:t.loading,onInput:c[5]||(c[5]=g=>d("due_after",g.target.value||void 0))},null,40,ui)]),e.createElementVNode("label",null,[c[13]||(c[13]=e.createElementVNode("span",null,"Due before",-1)),e.createElementVNode("input",{value:t.modelValue.due_before??"",type:"date","data-testid":"input-due-before-filter","aria-label":"Filter tasks due before date",disabled:t.loading,onInput:c[6]||(c[6]=g=>d("due_before",g.target.value||void 0))},null,40,mi)])])]))}}),sa=Q(pi,[["__scopeId","data-v-9918120b"]]),ki={class:"recurring-form__grid"},_i={class:"recurring-form__field"},fi=["value","disabled"],vi=["value"],yi={class:"recurring-form__field recurring-form__field--wide"},gi=["disabled"],bi={class:"recurring-form__field recurring-form__field--wide"},hi=["disabled"],wi={class:"recurring-form__field"},Ei=["disabled"],Vi=["value"],Ni={class:"recurring-form__field"},$i=["disabled"],Bi=["value"],Ti={key:0,class:"recurring-form__panel recurring-form__field--wide","data-testid":"panel-daily-schedule"},Ci={class:"recurring-form__field"},Si=["disabled"],Di={key:1,class:"recurring-form__panel recurring-form__field--wide","data-testid":"panel-weekly-schedule"},Mi={class:"recurring-form__field"},Ai=["disabled"],zi={class:"recurring-form__field"},Ii={class:"recurring-form__day-grid","data-testid":"panel-weekly-days"},xi=["disabled","data-testid","aria-pressed","aria-label","onClick"],Fi={key:2,class:"recurring-form__panel recurring-form__field--wide","data-testid":"panel-monthly-schedule"},Li={class:"recurring-form__field"},Ui=["disabled"],Ri={class:"recurring-form__field"},Wi=["disabled"],Pi={key:0,class:"recurring-form__field"},Oi=["disabled"],Hi={class:"recurring-form__field"},ji=["disabled"],qi=["value"],Yi={class:"recurring-form__field"},Ki=["disabled"],Qi=["value"],Gi={key:3,class:"recurring-form__field recurring-form__field--wide"},Ji=["disabled"],Zi={class:"recurring-form__field recurring-form__field--wide recurring-form__preview","data-testid":"panel-rrule-preview"},Xi={"data-testid":"status-rrule-preview"},er={class:"recurring-form__field"},tr=["disabled"],ar=["value"],lr=["disabled"],nr={class:"recurring-form__field"},or=["disabled"],sr={class:"recurring-form__field"},ir={class:"recurring-form__field"},rr=["disabled"],dr=["value"],cr={class:"recurring-form__field"},ur=["disabled"],mr={class:"recurring-form__field recurring-form__field--wide"},pr=["disabled"],kr={class:"recurring-form__toggles","data-testid":"panel-template-toggles"},_r=["disabled"],fr=["disabled"],vr=["disabled"],yr=["disabled"],gr={class:"recurring-form__actions"},br=["disabled"],hr=e.defineComponent({__name:"RecurringTemplateForm",props:{recurring:{},templates:{},entityTypeOptions:{},submitting:{type:Boolean},mode:{}},emits:["submit","cancel","template-change"],setup(t,{emit:a}){const l=t,o=a,n=["none","low","medium","high","urgent","critical"],i=[{value:1,label:"First"},{value:2,label:"Second"},{value:3,label:"Third"},{value:4,label:"Fourth"},{value:-1,label:"Last"}],r=[{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"monthly",label:"Monthly"},{value:"custom",label:"Custom"}],s=e.reactive({taskTemplateId:"",title:"",description:"",timezone:"America/New_York",taskableType:"",taskableId:"",primaryAssigneeId:"",priority:"none",dueOffsetHours:"",tags:"",isActive:!0,skipHolidays:!1,businessHoursOnly:!1,chainMode:!1,scheduleMode:"daily",dailyInterval:"1",weeklyInterval:"1",weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyInterval:"1",monthlyDay:"1",monthlyWeekday:"MO",monthlySetPosition:"1",rawRrule:Le(1)}),k=e.computed(()=>l.templates??[]),d=e.computed(()=>l.entityTypeOptions??[]),E=e.computed(()=>l.mode??"create"),m=e.computed(()=>E.value==="edit"?"Save recurring template":"Create recurring template");function f(){var v;const S=l.recurring;s.taskTemplateId=(S==null?void 0:S.task_template_id)??"",s.title=(S==null?void 0:S.title)??"",s.description=(S==null?void 0:S.description)??"",s.timezone=(S==null?void 0:S.timezone)??"America/New_York",s.taskableType=(S==null?void 0:S.taskable_type)??"",s.taskableId=(S==null?void 0:S.taskable_id)??"",s.primaryAssigneeId=(S==null?void 0:S.primary_assignee_id)??"",s.priority=(S==null?void 0:S.priority)??"none",s.dueOffsetHours=(S==null?void 0:S.due_offset_hours)===null||(S==null?void 0:S.due_offset_hours)===void 0?"":String(S.due_offset_hours),s.tags=((v=S==null?void 0:S.tags)==null?void 0:v.join(", "))??"",s.isActive=(S==null?void 0:S.is_active)??!0,s.skipHolidays=(S==null?void 0:S.skip_holidays)??!1,s.businessHoursOnly=(S==null?void 0:S.business_hours_only)??!1,s.chainMode=(S==null?void 0:S.chain_mode)??!1;const V=Jt((S==null?void 0:S.rrule)??Le(1));s.scheduleMode=V.mode,s.dailyInterval=String(V.interval),s.weeklyInterval=String(V.interval),s.weeklyDays=V.weeklyDays,s.monthlyMode=V.monthlyMode,s.monthlyInterval=String(V.interval),s.monthlyDay=String(V.monthlyDay),s.monthlyWeekday=V.monthlyWeekday,s.monthlySetPosition=String(V.monthlySetPosition),s.rawRrule=V.raw||Le(1)}e.watch(()=>l.recurring,()=>{f()},{immediate:!0,deep:!0});const p=e.computed(()=>s.scheduleMode==="daily"?Le(Number.parseInt(s.dailyInterval,10)||1):s.scheduleMode==="weekly"?Jl(Number.parseInt(s.weeklyInterval,10)||1,s.weeklyDays.length>0?s.weeklyDays:["MO"]):s.scheduleMode==="monthly"&&s.monthlyMode==="day_of_month"?Zl(Number.parseInt(s.monthlyInterval,10)||1,Number.parseInt(s.monthlyDay,10)||1):s.scheduleMode==="monthly"?Xl(Number.parseInt(s.monthlyInterval,10)||1,s.monthlyWeekday,Number.parseInt(s.monthlySetPosition,10)||1):s.rawRrule.trim());e.watch(p,S=>{s.scheduleMode!=="custom"&&(s.rawRrule=S)},{immediate:!0});const _=e.computed(()=>s.scheduleMode==="custom"?s.rawRrule.trim():p.value),B=e.computed(()=>en(_.value)),u=e.computed(()=>_.value.length>0&&(s.taskTemplateId.length>0||s.title.trim().length>0));function c(S){if(s.taskTemplateId=S,o("template-change",S||null),!S||E.value==="edit")return;const V=k.value.find(v=>v.id===S);V&&(s.title.trim()||(s.title=V.name),!s.description.trim()&&V.description&&(s.description=V.description))}function g(S){var V;c(((V=S.target)==null?void 0:V.value)??"")}function h(S){if(s.weeklyDays.includes(S)){s.weeklyDays=s.weeklyDays.filter(V=>V!==S);return}s.weeklyDays=[...s.weeklyDays,S]}function x(){var V;if(!u.value)return;const S=Number.parseInt(s.dueOffsetHours,10);o("submit",{task_template_id:s.taskTemplateId||null,title:s.title.trim()||null,description:s.description.trim()||null,rrule:_.value,timezone:s.timezone||null,taskable_type:s.taskableType.trim()||null,taskable_id:s.taskableId.trim()||null,primary_assignee_id:s.primaryAssigneeId.trim()||null,priority:s.priority,due_offset_hours:Number.isFinite(S)?S:null,tags:s.tags.split(",").map(v=>v.trim()).filter(Boolean),is_active:s.isActive,skip_holidays:s.skipHolidays,business_hours_only:s.businessHoursOnly,chain_mode:s.chainMode,metadata:((V=l.recurring)==null?void 0:V.metadata)??null})}return(S,V)=>(e.openBlock(),e.createElementBlock("form",{class:"recurring-form","data-testid":"form-recurring-template",onSubmit:e.withModifiers(x,["prevent"])},[e.createElementVNode("div",ki,[e.createElementVNode("label",_i,[V[25]||(V[25]=e.createElementVNode("span",null,"Template",-1)),e.createElementVNode("select",{"data-testid":"select-task-template",value:s.taskTemplateId,disabled:t.submitting,onChange:g},[V[24]||(V[24]=e.createElementVNode("option",{value:""},"Standalone recurring task",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.id,value:v.id},e.toDisplayString(v.name),9,vi))),128))],40,fi)]),e.createElementVNode("label",yi,[V[26]||(V[26]=e.createElementVNode("span",null,"Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[0]||(V[0]=v=>s.title=v),"data-testid":"input-template-name",type:"text",disabled:t.submitting,placeholder:"Required when no template is linked"},null,8,gi),[[e.vModelText,s.title]])]),e.createElementVNode("label",bi,[V[27]||(V[27]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":V[1]||(V[1]=v=>s.description=v),"data-testid":"input-template-description",rows:"4",disabled:t.submitting},null,8,hi),[[e.vModelText,s.description]])]),e.createElementVNode("label",wi,[V[28]||(V[28]=e.createElementVNode("span",null,"Schedule type",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[2]||(V[2]=v=>s.scheduleMode=v),"data-testid":"select-recurrence-pattern",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,v=>e.createElementVNode("option",{key:v.value,value:v.value},e.toDisplayString(v.label),9,Vi)),64))],8,Ei),[[e.vModelSelect,s.scheduleMode]])]),e.createElementVNode("label",Ni,[V[29]||(V[29]=e.createElementVNode("span",null,"Timezone",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[3]||(V[3]=v=>s.timezone=v),"data-testid":"select-timezone",disabled:t.submitting},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Yl),v=>(e.openBlock(),e.createElementBlock("option",{key:v,value:v},e.toDisplayString(v),9,Bi))),128))],8,$i),[[e.vModelSelect,s.timezone]])]),s.scheduleMode==="daily"?(e.openBlock(),e.createElementBlock("section",Ti,[e.createElementVNode("label",Ci,[V[30]||(V[30]=e.createElementVNode("span",null,"Every N days",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[4]||(V[4]=v=>s.dailyInterval=v),"data-testid":"input-daily-interval",type:"number",min:"1",disabled:t.submitting},null,8,Si),[[e.vModelText,s.dailyInterval]])])])):s.scheduleMode==="weekly"?(e.openBlock(),e.createElementBlock("section",Di,[e.createElementVNode("label",Mi,[V[31]||(V[31]=e.createElementVNode("span",null,"Every N weeks",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[5]||(V[5]=v=>s.weeklyInterval=v),"data-testid":"input-weekly-interval",type:"number",min:"1",disabled:t.submitting},null,8,Ai),[[e.vModelText,s.weeklyInterval]])]),e.createElementVNode("div",zi,[V[32]||(V[32]=e.createElementVNode("span",null,"Days",-1)),e.createElementVNode("div",Ii,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(He),v=>(e.openBlock(),e.createElementBlock("button",{key:v.value,class:e.normalizeClass(["recurring-form__day-chip",{"is-active":s.weeklyDays.includes(v.value)}]),disabled:t.submitting,type:"button","data-testid":`btn-weekday-${v.value}`,"aria-pressed":s.weeklyDays.includes(v.value),"aria-label":`Toggle ${v.label}`,onClick:N=>h(v.value)},e.toDisplayString(v.shortLabel),11,xi))),128))])])])):s.scheduleMode==="monthly"?(e.openBlock(),e.createElementBlock("section",Fi,[e.createElementVNode("label",Li,[V[33]||(V[33]=e.createElementVNode("span",null,"Every N months",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[6]||(V[6]=v=>s.monthlyInterval=v),"data-testid":"input-monthly-interval",type:"number",min:"1",disabled:t.submitting},null,8,Ui),[[e.vModelText,s.monthlyInterval]])]),e.createElementVNode("label",Ri,[V[35]||(V[35]=e.createElementVNode("span",null,"Monthly pattern",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[7]||(V[7]=v=>s.monthlyMode=v),"data-testid":"select-monthly-mode",disabled:t.submitting},[...V[34]||(V[34]=[e.createElementVNode("option",{value:"day_of_month"},"Day of month",-1),e.createElementVNode("option",{value:"weekday"},"Nth weekday",-1)])],8,Wi),[[e.vModelSelect,s.monthlyMode]])]),s.monthlyMode==="day_of_month"?(e.openBlock(),e.createElementBlock("label",Pi,[V[36]||(V[36]=e.createElementVNode("span",null,"Day of month",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[8]||(V[8]=v=>s.monthlyDay=v),"data-testid":"input-monthly-day",type:"number",min:"1",max:"31",disabled:t.submitting},null,8,Oi),[[e.vModelText,s.monthlyDay]])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",Hi,[V[37]||(V[37]=e.createElementVNode("span",null,"Position",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[9]||(V[9]=v=>s.monthlySetPosition=v),"data-testid":"select-monthly-position",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,v=>e.createElementVNode("option",{key:v.value,value:String(v.value)},e.toDisplayString(v.label),9,qi)),64))],8,ji),[[e.vModelSelect,s.monthlySetPosition]])]),e.createElementVNode("label",Yi,[V[38]||(V[38]=e.createElementVNode("span",null,"Weekday",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[10]||(V[10]=v=>s.monthlyWeekday=v),"data-testid":"select-monthly-weekday",disabled:t.submitting},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(He),v=>(e.openBlock(),e.createElementBlock("option",{key:v.value,value:v.value},e.toDisplayString(v.label),9,Qi))),128))],8,Ki),[[e.vModelSelect,s.monthlyWeekday]])])],64))])):(e.openBlock(),e.createElementBlock("label",Gi,[V[39]||(V[39]=e.createElementVNode("span",null,"Custom RRULE",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":V[11]||(V[11]=v=>s.rawRrule=v),"data-testid":"input-custom-rrule",rows:"3",disabled:t.submitting,placeholder:"FREQ=WEEKLY;BYDAY=MO,WE,FR"},null,8,Ji),[[e.vModelText,s.rawRrule]])])),e.createElementVNode("div",Zi,[V[40]||(V[40]=e.createElementVNode("span",null,"Preview",-1)),e.createElementVNode("strong",Xi,e.toDisplayString(B.value),1),e.createElementVNode("code",null,e.toDisplayString(_.value),1)]),e.createElementVNode("label",er,[V[42]||(V[42]=e.createElementVNode("span",null,"Linked entity type",-1)),d.value.length>0?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":V[12]||(V[12]=v=>s.taskableType=v),"data-testid":"input-taskable-type",disabled:t.submitting},[V[41]||(V[41]=e.createElementVNode("option",{value:""},"No linked entity",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.value,value:v.value},e.toDisplayString(v.label),9,ar))),128))],8,tr)),[[e.vModelSelect,s.taskableType]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":V[13]||(V[13]=v=>s.taskableType=v),"data-testid":"input-taskable-type",type:"text",disabled:t.submitting,placeholder:"order"},null,8,lr)),[[e.vModelText,s.taskableType]])]),e.createElementVNode("label",nr,[V[43]||(V[43]=e.createElementVNode("span",null,"Linked entity record ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[14]||(V[14]=v=>s.taskableId=v),"data-testid":"input-taskable-id",type:"text",disabled:t.submitting,placeholder:"Optional record ID"},null,8,or),[[e.vModelText,s.taskableId]])]),e.createElementVNode("label",sr,[V[44]||(V[44]=e.createElementVNode("span",null,"Primary assignee",-1)),e.createVNode(ge,{modelValue:s.primaryAssigneeId,"onUpdate:modelValue":V[15]||(V[15]=v=>s.primaryAssigneeId=v),"input-test-id":"input-primary-assignee","aria-label":"Primary assignee",disabled:t.submitting??!1,placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","disabled"])]),e.createElementVNode("label",ir,[V[45]||(V[45]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[16]||(V[16]=v=>s.priority=v),"data-testid":"select-priority",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,v=>e.createElementVNode("option",{key:v,value:v},e.toDisplayString(v),9,dr)),64))],8,rr),[[e.vModelSelect,s.priority]])]),e.createElementVNode("label",cr,[V[46]||(V[46]=e.createElementVNode("span",null,"Due offset hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[17]||(V[17]=v=>s.dueOffsetHours=v),"data-testid":"input-due-offset-hours",type:"number",min:"0",disabled:t.submitting},null,8,ur),[[e.vModelText,s.dueOffsetHours]])]),e.createElementVNode("label",mr,[V[47]||(V[47]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[18]||(V[18]=v=>s.tags=v),"data-testid":"input-tags",type:"text",disabled:t.submitting,placeholder:"ops, warehouse"},null,8,pr),[[e.vModelText,s.tags]])])]),e.createElementVNode("section",kr,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[19]||(V[19]=v=>s.isActive=v),"data-testid":"input-is-active",type:"checkbox",disabled:t.submitting},null,8,_r),[[e.vModelCheckbox,s.isActive]]),V[48]||(V[48]=e.createTextVNode(" Active",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[20]||(V[20]=v=>s.skipHolidays=v),"data-testid":"input-skip-holidays",type:"checkbox",disabled:t.submitting},null,8,fr),[[e.vModelCheckbox,s.skipHolidays]]),V[49]||(V[49]=e.createTextVNode(" Skip holidays",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[21]||(V[21]=v=>s.businessHoursOnly=v),"data-testid":"input-business-hours-only",type:"checkbox",disabled:t.submitting},null,8,vr),[[e.vModelCheckbox,s.businessHoursOnly]]),V[50]||(V[50]=e.createTextVNode(" Business hours only",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[22]||(V[22]=v=>s.chainMode=v),"data-testid":"input-chain-mode",type:"checkbox",disabled:t.submitting},null,8,yr),[[e.vModelCheckbox,s.chainMode]]),V[51]||(V[51]=e.createTextVNode(" Chain mode",-1))])]),e.createElementVNode("footer",gr,[e.createElementVNode("button",{type:"button",class:"secondary","data-testid":"btn-cancel-template",onClick:V[23]||(V[23]=v=>o("cancel"))},"Cancel"),e.createElementVNode("button",{type:"submit","data-testid":"btn-save-template",disabled:t.submitting||!u.value},e.toDisplayString(m.value),9,br)])],32))}}),ia=Q(hr,[["__scopeId","data-v-025addaf"]]),wr={class:"recurring-list","data-testid":"list-recurring-templates"},Er={class:"recurring-list__toolbar"},Vr={class:"recurring-list__search"},Nr=["value"],$r={class:"recurring-list__toggle"},Br=["checked"],Tr={key:0,class:"recurring-list__empty","data-testid":"status-loading-templates"},Cr={key:1,class:"recurring-list__empty","data-testid":"status-empty-templates"},Sr={key:2,class:"recurring-list__table","data-testid":"table-recurring-templates"},Dr=["data-testid"],Mr={key:0,class:"recurring-list__meta"},Ar={key:1,class:"recurring-list__meta"},zr={key:2,class:"recurring-list__meta"},Ir={key:3,class:"recurring-list__flags"},xr={key:0},Fr={key:1},Lr={key:2},Ur={class:"recurring-list__meta"},Rr=["data-testid"],Wr={class:"recurring-list__actions"},Pr=["data-testid","aria-label","onClick"],Or=["data-testid","aria-label","onClick"],Hr=["data-testid","aria-label","onClick"],jr=["data-testid","aria-label","onClick"],qr=["data-testid","aria-label","onClick"],Yr=e.defineComponent({__name:"RecurringTemplateList",props:{templates:{},loading:{type:Boolean},search:{},includeInactive:{type:Boolean}},emits:["update:search","update:includeInactive","edit","pause","resume","remove","generate"],setup(t,{emit:a}){const l=t,o=a,n=e.computed(()=>l.templates??[]);function i(d){return d?ce(d):"Not scheduled"}function r(d){return d===null?null:d===0?"Deadline at generation time":d===1?"1h deadline offset":`${d}h deadline offset`}function s(d){var E;o("update:search",((E=d.target)==null?void 0:E.value)??"")}function k(d){var E;o("update:includeInactive",((E=d.target)==null?void 0:E.checked)??!1)}return(d,E)=>(e.openBlock(),e.createElementBlock("section",wr,[e.createElementVNode("header",Er,[e.createElementVNode("label",Vr,[E[0]||(E[0]=e.createElementVNode("span",null,"Search",-1)),e.createElementVNode("input",{"data-testid":"input-search-templates",value:t.search??"",type:"search",placeholder:"Search recurring templates",onInput:s},null,40,Nr)]),e.createElementVNode("label",$r,[e.createElementVNode("input",{"data-testid":"input-include-inactive",checked:t.includeInactive??!1,type:"checkbox",onChange:k},null,40,Br),E[1]||(E[1]=e.createElementVNode("span",null,"Include paused",-1))])]),t.loading?(e.openBlock(),e.createElementBlock("div",Tr," Loading recurring templates… ")):n.value.length===0?(e.openBlock(),e.createElementBlock("div",Cr," No recurring templates found. ")):(e.openBlock(),e.createElementBlock("table",Sr,[E[2]||(E[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Name"),e.createElementVNode("th",null,"Schedule"),e.createElementVNode("th",null,"Next"),e.createElementVNode("th",null,"Last"),e.createElementVNode("th",null,"Status"),e.createElementVNode("th",null,"Actions")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,m=>{var f;return e.openBlock(),e.createElementBlock("tr",{key:m.id,"data-testid":`item-template-${m.id}`},[e.createElementVNode("td",null,[e.createElementVNode("strong",null,e.toDisplayString(m.title??((f=m.task_template)==null?void 0:f.name)??"Untitled recurrence"),1),m.task_template?(e.openBlock(),e.createElementBlock("p",Mr," Template: "+e.toDisplayString(m.task_template.name),1)):e.createCommentVNode("",!0),m.taskable_type&&m.taskable_id?(e.openBlock(),e.createElementBlock("p",Ar," Scope: "+e.toDisplayString(e.unref(Kt)(m.taskable_type,m.taskable_id)),1)):e.createCommentVNode("",!0),r(m.due_offset_hours)?(e.openBlock(),e.createElementBlock("p",zr,e.toDisplayString(r(m.due_offset_hours)),1)):e.createCommentVNode("",!0),m.chain_mode||m.business_hours_only||m.skip_holidays?(e.openBlock(),e.createElementBlock("p",Ir,[m.chain_mode?(e.openBlock(),e.createElementBlock("span",xr,"Chain mode")):e.createCommentVNode("",!0),m.business_hours_only?(e.openBlock(),e.createElementBlock("span",Fr,"Business hours")):e.createCommentVNode("",!0),m.skip_holidays?(e.openBlock(),e.createElementBlock("span",Lr,"Skip holidays")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,[e.createElementVNode("strong",null,e.toDisplayString(m.rrule_human),1),e.createElementVNode("p",Ur,e.toDisplayString(m.timezone),1)]),e.createElementVNode("td",null,e.toDisplayString(i(m.next_occurrence_at)),1),e.createElementVNode("td",null,e.toDisplayString(i(m.last_generated_at)),1),e.createElementVNode("td",null,[e.createElementVNode("span",{class:e.normalizeClass(["recurring-list__status",m.is_active?"is-active":"is-paused"]),"data-testid":`status-template-${m.id}`},e.toDisplayString(m.is_active?"Active":"Paused"),11,Rr)]),e.createElementVNode("td",null,[e.createElementVNode("div",Wr,[e.createElementVNode("button",{type:"button","data-testid":`btn-edit-template-${m.id}`,"aria-label":`Edit ${m.title??"template"}`,onClick:p=>o("edit",m.id)},"Edit",8,Pr),m.is_active?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":`btn-pause-recurring-${m.id}`,"aria-label":`Pause ${m.title??"template"}`,onClick:p=>o("pause",m.id)}," Pause ",8,Or)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":`btn-resume-recurring-${m.id}`,"aria-label":`Resume ${m.title??"template"}`,onClick:p=>o("resume",m.id)}," Resume ",8,Hr)),e.createElementVNode("button",{type:"button","data-testid":`btn-generate-template-${m.id}`,"aria-label":`Generate tasks for ${m.title??"template"}`,onClick:p=>o("generate",m.id)},"Generate",8,jr),e.createElementVNode("button",{type:"button",class:"danger","data-testid":`btn-delete-template-${m.id}`,"aria-label":`Delete ${m.title??"template"}`,onClick:p=>o("remove",m.id)},"Delete",8,qr)])])],8,Dr)}),128))])]))]))}}),ra=Q(Yr,[["__scopeId","data-v-8d6a1cfd"]]),Kr={key:0,class:"task-saved-filter-tabs","aria-label":"Saved filters","data-testid":"panel-saved-filter-tabs",role:"tablist"},Qr=["data-testid"],Gr=["data-testid","aria-label","aria-selected","onClick"],Jr={key:0,class:"task-saved-filter-tabs__default","aria-label":"Default filter"},Zr=["data-testid","aria-label","onClick"],Xr=e.defineComponent({__name:"TaskSavedFilterTabs",props:{filters:{},activeFilterId:{}},emits:["select","remove"],setup(t,{emit:a}){const l=t,o=a;return(n,i)=>l.filters.length>0?(e.openBlock(),e.createElementBlock("section",Kr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.filters,r=>(e.openBlock(),e.createElementBlock("article",{key:r.id,class:e.normalizeClass(["task-saved-filter-tabs__pill",{"is-active":r.id===t.activeFilterId}]),"data-testid":`item-saved-filter-${r.id}`},[e.createElementVNode("button",{type:"button",class:"task-saved-filter-tabs__select",role:"tab","data-testid":`tab-saved-filter-${r.id}`,"aria-label":`Apply saved filter: ${r.name}`,"aria-selected":r.id===t.activeFilterId,onClick:s=>o("select",r.id)},[e.createElementVNode("span",null,e.toDisplayString(r.name),1),r.is_default?(e.openBlock(),e.createElementBlock("span",Jr,"Default")):e.createCommentVNode("",!0)],8,Gr),r.is_default?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-saved-filter-tabs__remove","data-testid":`btn-remove-saved-filter-${r.id}`,"aria-label":`Remove saved filter: ${r.name}`,onClick:s=>o("remove",r.id)}," Remove ",8,Zr))],10,Qr))),128))])):e.createCommentVNode("",!0)}}),da=Q(Xr,[["__scopeId","data-v-24c87ca8"]]),ed={class:"task-workspace","data-testid":"panel-task-list",role:"region","aria-label":"Task workspace"},td={class:"task-workspace__toolbar","data-testid":"task-workspace-toolbar"},ad={class:"task-workspace__toolbar-left"},ld=["aria-expanded"],nd=["aria-label"],od={class:"task-workspace__toolbar-right"},sd={key:0,class:"task-workspace__loading","data-testid":"status-task-loading","aria-live":"polite"},id=["title"],rd={class:"task-workspace__overflow","data-testid":"task-workspace-overflow"},dd=["aria-expanded"],cd={key:0,class:"task-workspace__overflow-menu",role:"menu","data-testid":"panel-overflow-menu"},ud=["disabled"],md=["disabled"],pd={key:0,class:"task-workspace__filter-chips","data-testid":"panel-active-filter-chips",role:"list","aria-label":"Active filters"},kd=["data-testid"],_d={class:"task-workspace__chip-label"},fd=["data-testid","aria-label","title","onClick"],vd={key:1,id:"task-filter-panel",class:"task-workspace__filter-panel","data-testid":"panel-filter-dropdown"},yd={key:4,class:"task-workspace__inline-create","data-testid":"panel-inline-create"},gd=["disabled"],bd={key:5,class:"task-workspace__empty","data-testid":"panel-empty-state"},hd={class:"task-workspace__empty-actions"},wd={key:6,class:"task-workspace__table-wrap","data-testid":"panel-task-table-wrap"},Ed={class:"task-workspace__table","data-testid":"list-tasks",role:"grid","aria-label":"Task list"},Vd={class:"task-workspace__th--checkbox"},Nd={class:"task-workspace__th--number"},$d=["aria-label"],Bd={class:"task-workspace__th--title"},Td={class:"task-workspace__th--deadline"},Cd=["data-testid","aria-label","onClick"],Sd={class:"task-workspace__td--checkbox"},Dd=["value","data-testid","aria-label"],Md=["data-testid"],Ad={class:"task-workspace__td--title"},zd=["data-testid"],Id=["data-testid"],xd=["data-testid"],Fd=["data-testid"],Ld=["data-testid"],Ud={class:"task-workspace__deadline-cell"},Rd={key:7,class:"task-workspace__pagination","data-testid":"panel-pagination",role:"navigation","aria-label":"Task list pagination"},Wd=["disabled"],Pd={"aria-live":"polite","aria-atomic":"true","data-testid":"status-pagination"},Od=["disabled"],Hd=e.defineComponent({__name:"TaskListView",props:{tasks:{},filters:{},pagination:{},loading:{type:Boolean},savedFilters:{},activeSavedFilterId:{},bulkBusy:{type:Boolean},bulkResult:{},exportLoading:{type:Boolean},importLoading:{type:Boolean}},emits:["update:filters","select-task","quick-create","create-inline","page-change","save-filter","apply-saved-filter","delete-saved-filter","bulk-action","export","import"],setup(t,{emit:a}){const l=t,o=a,n=e.ref([]),i=e.ref(!1),r=e.ref(!1),s=e.ref(!1),k=e.ref(""),d=e.ref(null),E=e.ref(null),m=e.ref(null);e.watch(()=>l.filters.assignee??l.filters.assignee_id,async P=>{if(m.value=null,!(!P||l.filters.assignee_name))try{const D=(await Pe.searchUsers(String(P),{limit:1})).find(L=>String(L.id)===String(P));D&&(m.value=D.name)}catch{}},{immediate:!0});const f=e.computed({get:()=>l.tasks.length>0&&n.value.length===l.tasks.length,set:P=>{n.value=P?l.tasks.map(C=>C.id):[]}}),p=e.computed(()=>Object.entries(l.filters).reduce((P,[C,D])=>C==="page"||C==="per_page"||C==="sort"||C==="assignee_name"||D==null||D===""||Array.isArray(D)&&D.length===0?P:P+1,0)),_=e.computed(()=>{var D;const P=[],C=l.filters;if(C.search&&P.push({key:"search",label:"Search",value:C.search}),C.status){const L=Array.isArray(C.status)?C.status:[C.status];P.push({key:"status",label:"Status",value:L.join(", ")})}if(C.priority){const L=Array.isArray(C.priority)?C.priority:[C.priority];P.push({key:"priority",label:"Priority",value:L.join(", ")})}if(C.assignee||C.assignee_id){const L=C.assignee??C.assignee_id??"";let b=C.assignee_name??m.value??"";if(!b){const w=l.tasks.find(T=>T.primary_assignee&&String(T.primary_assignee.id)===String(L));b=((D=w==null?void 0:w.primary_assignee)==null?void 0:D.name)??L}P.push({key:"assignee",label:"Assignee",value:b})}return C.tag&&P.push({key:"tag",label:"Tag",value:C.tag}),C.due_after&&P.push({key:"due_after",label:"Due after",value:C.due_after}),C.due_before&&P.push({key:"due_before",label:"Due before",value:C.due_before}),C.overdue&&P.push({key:"overdue",label:"Overdue",value:"Yes"}),C.taskable_type&&P.push({key:"taskable_type",label:"Entity type",value:C.taskable_type}),P}),B=e.computed(()=>_.value.length>0),u=e.computed(()=>{const P=l.filters.sort??"-created_at";return P.startsWith("-")?P.slice(1):P}),c=e.computed(()=>(l.filters.sort??"-created_at").startsWith("-")?"desc":"asc");function g(P){return u.value!==P?"":c.value==="asc"?" ↑":" ↓"}function h(P){const C=l.filters.sort??"-created_at",L=(C.startsWith("-")?C.slice(1):C)===P&&!C.startsWith("-")?`-${P}`:P;o("update:filters",{...l.filters,sort:L,page:1})}function x(P){o("page-change",P),o("update:filters",{...l.filters,page:P})}function S(){n.value=[]}function V(){i.value=!i.value}function v(){r.value=!r.value}function N(){r.value=!1}function I(){o("export"),N()}function Y(){var P;(P=E.value)==null||P.click(),N()}function te(P){var L;const C=P.target,D=(L=C.files)==null?void 0:L[0];D&&o("import",D),C.value=""}async function F(){var P;s.value=!0,await e.nextTick(),(P=d.value)==null||P.focus()}function K(){const P=k.value.trim();P.length!==0&&(o("create-inline",P),k.value="")}function G(){s.value=!1,k.value=""}function ee(P){if(P.key==="Enter"){P.preventDefault(),K();return}P.key==="Escape"&&(P.preventDefault(),G())}function H(P){const C={...l.filters,page:1};P==="assignee"?(delete C.assignee,delete C.assignee_id,delete C.assignee_name):delete C[P],o("update:filters",C)}function A(){o("update:filters",{page:1,per_page:l.filters.per_page??15,sort:l.filters.sort??"-created_at"})}return e.watch(()=>l.tasks,P=>{const C=new Set(P.map(D=>D.id));n.value=n.value.filter(D=>C.has(D))},{deep:!0}),(P,C)=>(e.openBlock(),e.createElementBlock("section",ed,[e.createElementVNode("header",td,[e.createElementVNode("div",ad,[e.createElementVNode("button",{type:"button",class:"task-workspace__new-btn","data-testid":"btn-create-task",title:"Create a new task (press N)","aria-label":"Create a new task",onClick:C[0]||(C[0]=D=>s.value?G():F())},[...C[18]||(C[18]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.createElementVNode("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1),e.createTextVNode(" New ",-1)])]),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-workspace__tool-btn",{"is-active":i.value}]),"data-testid":"btn-toggle-filters",title:"Show or hide filters","aria-expanded":i.value,"aria-controls":"task-filter-panel",onClick:V},[C[19]||(C[19]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})],-1)),C[20]||(C[20]=e.createTextVNode(" Filter ",-1)),p.value>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"task-workspace__badge","data-testid":"badge-active-filters","aria-label":`${p.value} active filters`},e.toDisplayString(p.value),9,nd)):e.createCommentVNode("",!0)],10,ld),e.createElementVNode("button",{type:"button",class:"task-workspace__tool-btn","data-testid":"btn-open-full-create",title:"Open full task creation form with all options","aria-label":"Create task with full options",onClick:C[1]||(C[1]=D=>o("quick-create"))},[...C[21]||(C[21]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e.createElementVNode("line",{x1:"12",y1:"8",x2:"12",y2:"16"}),e.createElementVNode("line",{x1:"8",y1:"12",x2:"16",y2:"12"})],-1),e.createTextVNode(" Full form ",-1)])])]),e.createElementVNode("div",od,[t.loading?(e.openBlock(),e.createElementBlock("span",sd," Loading... ")):e.createCommentVNode("",!0),t.pagination.total>0?(e.openBlock(),e.createElementBlock("span",{key:1,class:"task-workspace__count","data-testid":"status-task-count",title:`${t.pagination.total} total tasks across ${t.pagination.last_page} pages`},e.toDisplayString(t.pagination.total)+" tasks ",9,id)):e.createCommentVNode("",!0),e.createElementVNode("div",rd,[e.createElementVNode("button",{type:"button",class:"task-workspace__tool-btn","data-testid":"btn-overflow-menu",title:"More actions (export, import)","aria-label":"More actions","aria-expanded":r.value,onClick:v},[...C[22]||(C[22]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[e.createElementVNode("circle",{cx:"12",cy:"5",r:"1",fill:"currentColor"}),e.createElementVNode("circle",{cx:"12",cy:"12",r:"1",fill:"currentColor"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1",fill:"currentColor"})],-1)])],8,dd),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-workspace__overflow-backdrop","data-testid":"overflow-backdrop",onClick:N})):e.createCommentVNode("",!0)])),r.value?(e.openBlock(),e.createElementBlock("div",cd,[e.createElementVNode("button",{type:"button",role:"menuitem",class:"task-workspace__overflow-item","data-testid":"btn-export-csv",title:"Download tasks as a CSV file",disabled:t.exportLoading,onClick:I},[C[23]||(C[23]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"7 10 12 15 17 10"}),e.createElementVNode("line",{x1:"12",y1:"15",x2:"12",y2:"3"})],-1)),e.createTextVNode(" "+e.toDisplayString(t.exportLoading?"Exporting...":"Export CSV"),1)],8,ud),e.createElementVNode("button",{type:"button",role:"menuitem",class:"task-workspace__overflow-item","data-testid":"btn-import-csv",title:"Import tasks from a CSV file",disabled:t.importLoading,onClick:Y},[C[24]||(C[24]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"17 8 12 3 7 8"}),e.createElementVNode("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)),e.createTextVNode(" "+e.toDisplayString(t.importLoading?"Importing...":"Import CSV"),1)],8,md),C[26]||(C[26]=e.createElementVNode("hr",{class:"task-workspace__overflow-divider"},null,-1)),e.createElementVNode("button",{type:"button",role:"menuitem",class:"task-workspace__overflow-item","data-testid":"btn-save-current-filter",title:"Save the current filter combination for quick access",onClick:C[2]||(C[2]=D=>{o("save-filter"),N()})},[...C[25]||(C[25]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"})],-1),e.createTextVNode(" Save current filter ",-1)])])])):e.createCommentVNode("",!0),e.createElementVNode("input",{ref_key:"importInputRef",ref:E,type:"file",accept:".csv",class:"task-workspace__hidden-input","data-testid":"input-import-file","aria-label":"Select CSV file to import",onChange:te},null,544)])])]),B.value?(e.openBlock(),e.createElementBlock("div",pd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,D=>(e.openBlock(),e.createElementBlock("span",{key:D.key,class:"task-workspace__chip",role:"listitem","data-testid":`chip-filter-${D.key}`},[e.createElementVNode("span",_d,e.toDisplayString(D.label)+":",1),e.createTextVNode(" "+e.toDisplayString(D.value)+" ",1),e.createElementVNode("button",{type:"button",class:"task-workspace__chip-remove","data-testid":`btn-remove-filter-${D.key}`,"aria-label":`Remove ${D.label} filter`,title:`Remove ${D.label} filter`,onClick:L=>H(D.key)}," × ",8,fd)],8,kd))),128)),e.createElementVNode("button",{type:"button",class:"task-workspace__clear-filters","data-testid":"btn-clear-all-filters",title:"Remove all active filters","aria-label":"Clear all filters",onClick:A}," Clear all ")])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("div",vd,[e.createVNode(sa,{"model-value":t.filters,loading:t.loading??!1,"onUpdate:modelValue":C[3]||(C[3]=D=>o("update:filters",D)),onSaveCurrent:C[4]||(C[4]=D=>o("save-filter"))},null,8,["model-value","loading"])])):e.createCommentVNode("",!0),t.savedFilters&&t.savedFilters.length>0?(e.openBlock(),e.createBlock(da,{key:2,filters:t.savedFilters,"active-filter-id":t.activeSavedFilterId??null,onSelect:C[5]||(C[5]=D=>o("apply-saved-filter",D)),onRemove:C[6]||(C[6]=D=>o("delete-saved-filter",D))},null,8,["filters","active-filter-id"])):e.createCommentVNode("",!0),n.value.length>0?(e.openBlock(),e.createBlock(oa,{key:3,"selected-count":n.value.length,busy:t.bulkBusy??!1,result:t.bulkResult??null,onApply:C[7]||(C[7]=D=>o("bulk-action",{taskIds:n.value,action:D.action,params:D.params})),onClear:S},null,8,["selected-count","busy","result"])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("div",yd,[e.withDirectives(e.createElementVNode("input",{ref_key:"inlineInputRef",ref:d,"onUpdate:modelValue":C[8]||(C[8]=D=>k.value=D),type:"text",class:"task-workspace__inline-input","data-testid":"input-inline-create",placeholder:"Task title — press Enter to create, Escape to cancel","aria-label":"New task title",onKeydown:ee},null,544),[[e.vModelText,k.value]]),e.createElementVNode("button",{type:"button",class:"task-workspace__inline-submit","data-testid":"btn-inline-submit",title:"Create this task","aria-label":"Create task",disabled:k.value.trim().length===0,onClick:K}," Create ",8,gd),e.createElementVNode("button",{type:"button",class:"task-workspace__inline-cancel","data-testid":"btn-inline-cancel",title:"Cancel","aria-label":"Cancel inline creation",onClick:G}," × ")])):e.createCommentVNode("",!0),t.tasks.length===0&&!t.loading?(e.openBlock(),e.createElementBlock("div",bd,[C[27]||(C[27]=e.createElementVNode("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",class:"task-workspace__empty-icon"},[e.createElementVNode("path",{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})],-1)),C[28]||(C[28]=e.createElementVNode("h3",null,"No tasks yet",-1)),C[29]||(C[29]=e.createElementVNode("p",null,"Create a task to start tracking work, or use a template for structured follow-ups.",-1)),e.createElementVNode("div",hd,[e.createElementVNode("button",{type:"button",class:"task-workspace__empty-primary","data-testid":"btn-create-first-task",onClick:F}," Create task "),e.createElementVNode("button",{type:"button",class:"task-workspace__empty-secondary","data-testid":"btn-create-first-task-full",onClick:C[9]||(C[9]=D=>o("quick-create"))}," Full form ")])])):(e.openBlock(),e.createElementBlock("div",wd,[e.createElementVNode("table",Ed,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",Vd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":C[10]||(C[10]=D=>f.value=D),type:"checkbox","data-testid":"input-select-all-tasks","aria-label":"Select all tasks",title:"Select all visible tasks"},null,512),[[e.vModelCheckbox,f.value]])]),e.createElementVNode("th",Nd,[e.createElementVNode("button",{type:"button","data-testid":"btn-sort-number","aria-label":`Sort by number${g("display_number")}`,title:"Sort by task number",onClick:C[11]||(C[11]=D=>h("display_number"))}," #"+e.toDisplayString(g("display_number")),9,$d)]),e.createElementVNode("th",Bd,[e.createElementVNode("button",{type:"button","data-testid":"btn-sort-title","aria-label":"Sort by title",title:"Sort by task title",onClick:C[12]||(C[12]=D=>h("title"))}," Title"+e.toDisplayString(g("title")),1)]),C[30]||(C[30]=e.createElementVNode("th",{class:"task-workspace__th--status",title:"Current task status"},"Status",-1)),C[31]||(C[31]=e.createElementVNode("th",{class:"task-workspace__th--priority",title:"Task priority level"},"Pri",-1)),C[32]||(C[32]=e.createElementVNode("th",{class:"task-workspace__th--assignee",title:"Person assigned to this task"},"Assignee",-1)),e.createElementVNode("th",Td,[e.createElementVNode("button",{type:"button","data-testid":"btn-sort-due","aria-label":"Sort by deadline",title:"Sort by deadline date",onClick:C[13]||(C[13]=D=>h("due_at"))}," Due"+e.toDisplayString(g("due_at")),1)])])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tasks,D=>{var L;return e.openBlock(),e.createElementBlock("tr",{key:D.id,class:"task-workspace__row","data-testid":`task-row-${D.id}`,"aria-label":`Task ${D.display_number_formatted}: ${D.title}`,onClick:b=>o("select-task",D.id)},[e.createElementVNode("td",Sd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":C[14]||(C[14]=b=>n.value=b),type:"checkbox",value:D.id,"data-testid":`input-select-task-${D.id}`,"aria-label":`Select task ${D.display_number_formatted}`,onClick:C[15]||(C[15]=e.withModifiers(()=>{},["stop"]))},null,8,Dd),[[e.vModelCheckbox,n.value]])]),e.createElementVNode("td",{class:"task-workspace__td--number","data-testid":`task-number-${D.id}`},e.toDisplayString(D.display_number_formatted),9,Md),e.createElementVNode("td",Ad,[e.createElementVNode("strong",{"data-testid":`task-title-${D.id}`},e.toDisplayString(D.title),9,zd)]),e.createElementVNode("td",{class:"task-workspace__td--status","data-testid":`task-status-${D.id}`},[e.createVNode(xe,{status:D.status},null,8,["status"])],8,Id),e.createElementVNode("td",{class:"task-workspace__td--priority","data-testid":`task-priority-${D.id}`},[e.createVNode(Ie,{priority:D.priority,compact:""},null,8,["priority"])],8,xd),e.createElementVNode("td",{class:"task-workspace__td--assignee","data-testid":`task-assignee-${D.id}`},e.toDisplayString(((L=D.primary_assignee)==null?void 0:L.name)??"—"),9,Fd),e.createElementVNode("td",{class:"task-workspace__td--deadline","data-testid":`task-deadline-${D.id}`},[e.createElementVNode("div",Ud,[e.createVNode(ye,{task:D,compact:""},null,8,["task"]),e.createElementVNode("span",{class:e.normalizeClass({"is-overdue":D.is_overdue})},e.toDisplayString(e.unref(mt)(D.due_at)),3)])],8,Ld)],8,Cd)}),128))])])])),t.pagination.last_page>1?(e.openBlock(),e.createElementBlock("footer",Rd,[e.createElementVNode("button",{type:"button","data-testid":"btn-prev-page","aria-label":"Previous page",title:"Go to previous page",disabled:t.pagination.current_page<=1,onClick:C[16]||(C[16]=D=>x(t.pagination.current_page-1))}," Previous ",8,Wd),e.createElementVNode("span",Pd," Page "+e.toDisplayString(t.pagination.current_page)+" of "+e.toDisplayString(t.pagination.last_page),1),e.createElementVNode("button",{type:"button","data-testid":"btn-next-page","aria-label":"Next page",title:"Go to next page",disabled:t.pagination.current_page>=t.pagination.last_page,onClick:C[17]||(C[17]=D=>x(t.pagination.current_page+1))}," Next ",8,Od)])):e.createCommentVNode("",!0)]))}}),ca=Q(Hd,[["__scopeId","data-v-9d2a4c9d"]]),jd={class:"task-role-picker","data-testid":"picker-task-role"},qd={class:"task-role-picker__input-wrap"},Yd=["data-testid","disabled","placeholder","value","aria-expanded"],Kd={key:0,class:"task-role-picker__menu",role:"listbox","data-testid":"list-task-roles"},Qd=["data-testid","aria-selected","onMousedown"],Gd={class:"task-role-picker__label"},Jd={key:0,class:"task-role-picker__meta"},Zd={key:0,class:"task-role-picker__empty","data-testid":"status-no-roles"},Xd=e.defineComponent({__name:"TaskRolePicker",props:{modelValue:{default:null},options:{default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{default:"Choose a role"},inputTestId:{default:"input-task-role"}},emits:["update:modelValue","select"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(""),i=e.ref(!1),r=e.ref(-1),s=e.computed(()=>l.options.find(g=>g.name===l.modelValue)??null),k=e.computed(()=>{const g=n.value.trim().toLowerCase();return g===""?l.options:l.options.filter(h=>h.label.toLowerCase().includes(g)||h.name.toLowerCase().includes(g))});e.watch(()=>[l.modelValue,l.options],()=>{if(s.value!==null){n.value=s.value.label;return}n.value=l.modelValue??""},{immediate:!0,deep:!0});function d(g){const h=[];return typeof g.level=="number"&&h.push(`Level ${g.level}`),typeof g.user_count=="number"&&h.push(`${g.user_count} ${g.user_count===1?"user":"users"}`),h.join(" • ")}function E(){r.value=k.value.length>0?0:-1}function m(){l.disabled||(i.value=!0,E())}function f(){if(i.value=!1,r.value=-1,s.value!==null){n.value=s.value.label;return}n.value=l.modelValue??""}function p(g){n.value=g.label,i.value=!1,r.value=-1,o("update:modelValue",g.name),o("select",g)}function _(){n.value="",i.value=!1,r.value=-1,o("update:modelValue",null)}function B(g){var x;const h=((x=g.target)==null?void 0:x.value)??"";n.value=h,i.value=!0,E(),h.trim()===""&&o("update:modelValue",null)}function u(){window.setTimeout(()=>{f()},120)}function c(g){if(!l.disabled){if(g.key==="ArrowDown"){g.preventDefault(),m(),r.value=Math.min(k.value.length-1,r.value+1);return}if(g.key==="ArrowUp"){g.preventDefault(),m(),r.value=Math.max(0,r.value-1);return}if(g.key==="Enter"&&i.value&&r.value>=0){g.preventDefault();const h=k.value[r.value];h!==void 0&&p(h);return}g.key==="Escape"&&(g.preventDefault(),f())}}return(g,h)=>(e.openBlock(),e.createElementBlock("div",jd,[e.createElementVNode("div",qd,[e.createElementVNode("input",{"data-testid":t.inputTestId,class:"task-role-picker__input",disabled:t.disabled,placeholder:t.placeholder,value:n.value,type:"text",role:"combobox","aria-autocomplete":"list","aria-expanded":i.value,"aria-haspopup":"listbox",onFocus:m,onInput:B,onKeydown:c,onBlur:u},null,40,Yd),!t.disabled&&(t.modelValue!==null||n.value!=="")?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-role-picker__clear","data-testid":"btn-clear-role","aria-label":"Clear selected role",onClick:_}," Clear ")):e.createCommentVNode("",!0)]),i.value?(e.openBlock(),e.createElementBlock("div",Kd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(x,S)=>(e.openBlock(),e.createElementBlock("button",{key:x.name,type:"button",class:e.normalizeClass(["task-role-picker__option",{"task-role-picker__option--active":S===r.value}]),"data-testid":`option-role-${x.name}`,role:"option","aria-selected":x.name===t.modelValue,onMousedown:e.withModifiers(V=>p(x),["prevent"])},[e.createElementVNode("span",Gd,e.toDisplayString(x.label),1),d(x)!==""?(e.openBlock(),e.createElementBlock("span",Jd,e.toDisplayString(d(x)),1)):e.createCommentVNode("",!0)],42,Qd))),128)),k.value.length===0?(e.openBlock(),e.createElementBlock("div",Zd," No matching roles ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),ua=Q(Xd,[["__scopeId","data-v-944f1542"]]),ec={class:"workflow-form__steps","aria-label":"Workflow steps"},tc=["data-testid","onClick"],ac={key:0,class:"workflow-form__panel","data-testid":"workflow-step-panel-1"},lc={class:"workflow-form__card-grid"},nc=["data-testid","aria-pressed","onClick"],oc={key:1,class:"workflow-form__panel","data-testid":"workflow-step-panel-2"},sc={class:"workflow-form__grid"},ic={class:"workflow-form__field"},rc=["value"],dc={class:"workflow-form__field"},cc=["value"],uc={key:1,class:"workflow-form__field"},mc={key:2,class:"workflow-form__field"},pc={key:3,class:"workflow-form__field"},kc={key:4,class:"workflow-form__muted"},_c={key:2,class:"workflow-form__panel","data-testid":"workflow-step-panel-3"},fc=["data-testid"],vc=["onUpdate:modelValue","data-testid","aria-label"],yc=["value"],gc=["onUpdate:modelValue","data-testid","aria-label"],bc=["value"],hc=["onUpdate:modelValue","data-testid","aria-label","disabled"],wc=["data-testid","aria-label","disabled","onClick"],Ec={key:3,class:"workflow-form__panel","data-testid":"workflow-step-panel-4"},Vc=["data-testid"],Nc={class:"workflow-form__row workflow-form__row--wrap"},$c={class:"workflow-form__field workflow-form__field--compact"},Bc=["onUpdate:modelValue","data-testid"],Tc=["value"],Cc={class:"workflow-form__field workflow-form__field--grow"},Sc=["onUpdate:modelValue","data-testid"],Dc=["value"],Mc=["onUpdate:modelValue","data-testid"],Ac=["onUpdate:modelValue","data-testid","placeholder"],zc={key:0,class:"workflow-form__row workflow-form__row--wrap"},Ic={class:"workflow-form__field workflow-form__field--grow"},xc=["onUpdate:modelValue","data-testid"],Fc={class:"workflow-form__field workflow-form__field--grow"},Lc=["onUpdate:modelValue","data-testid"],Uc={key:1,class:"workflow-form__row workflow-form__row--wrap"},Rc={class:"workflow-form__field"},Wc=["onUpdate:modelValue","data-testid"],Pc={class:"workflow-form__field"},Oc=["onUpdate:modelValue","data-testid"],Hc=["value"],jc={class:"workflow-form__field"},qc=["onUpdate:modelValue","data-testid"],Yc=["value"],Kc={class:"workflow-form__field workflow-form__field--grow"},Qc=["onUpdate:modelValue","data-testid"],Gc={key:2,class:"workflow-form__row workflow-form__row--wrap"},Jc={class:"workflow-form__field"},Zc=["onUpdate:modelValue","data-testid"],Xc={class:"workflow-form__field"},eu=["onUpdate:modelValue","data-testid"],tu={key:3,class:"workflow-form__row workflow-form__row--wrap"},au={class:"workflow-form__field workflow-form__field--grow"},lu=["onUpdate:modelValue","data-testid"],nu={class:"workflow-form__field"},ou=["onUpdate:modelValue","data-testid"],su={class:"workflow-form__action-footer"},iu=["data-testid","aria-label","disabled","onClick"],ru=["data-testid","aria-label","disabled","onClick"],du=["data-testid","aria-label","disabled","onClick"],cu={key:4,class:"workflow-form__panel","data-testid":"workflow-step-panel-5"},uu={class:"workflow-form__grid"},mu={class:"workflow-form__field workflow-form__field--wide"},pu={class:"workflow-form__field workflow-form__field--wide"},ku={class:"workflow-form__field"},_u={class:"workflow-form__toggle"},fu={class:"workflow-form__toggle"},vu={class:"workflow-form__footer"},yu=["disabled"],gu=e.defineComponent({__name:"WorkflowForm",props:{workflow:{},templates:{},roleOptions:{},mode:{},submitting:{type:Boolean}},emits:["submit","cancel"],setup(t,{emit:a}){const l=t,o=a,n=["Trigger","Trigger Config","Conditions","Actions","Settings"],i=["draft","open","in_progress","blocked","under_review","complete","cancelled"],r=["none","low","medium","high","urgent","critical"],s=[{value:"task_created",label:"Task created",description:"Runs as soon as a task is created."},{value:"status_changed",label:"Status changed",description:"Runs after a task moves between statuses."},{value:"tag_added",label:"Tag added",description:"Runs when a tag is attached to a task."},{value:"assigned",label:"Assigned",description:"Runs when a task is assigned or reassigned."},{value:"comment_added",label:"Comment added",description:"Runs when a new comment is added."},{value:"completed",label:"Completed",description:"Runs when a task is completed."},{value:"due_approaching",label:"Due approaching",description:"Runs ahead of a due date based on hours before due."},{value:"overdue",label:"Overdue",description:"Runs once a task crosses an overdue threshold."}],k=["status","priority","taskable_type","tags","assignee","source","due_at","created_by"],d=["equals","not_equals","in","not_in","contains","not_contains","is_null","is_not_null","before","after","greater_than","less_than"],E=[{value:"set_status",label:"Set status"},{value:"set_priority",label:"Set priority"},{value:"assign_to_user",label:"Assign to user"},{value:"assign_to_role",label:"Assign to role"},{value:"add_tag",label:"Add tag"},{value:"remove_tag",label:"Remove tag"},{value:"send_notification",label:"Send notification"},{value:"add_comment",label:"Add comment"},{value:"create_related_task",label:"Create related task"},{value:"set_due_date",label:"Set due date"},{value:"webhook",label:"Webhook"}],m=e.ref(1),f=e.reactive({name:"",description:"",trigger_type:"task_created",is_enabled:!0,stop_processing:!1,position:0}),p=e.reactive({from_status:"",to_status:"",tag:"",hours_before:"24",hours_overdue:"0"}),_=e.ref([]),B=e.ref([]),u=e.computed(()=>l.mode??"create"),c=e.computed(()=>m.value===n.length),g=e.computed(()=>l.templates??[]),h=e.computed(()=>l.roleOptions??[]);function x(b="add_tag"){return{type:b,value:"",config:{recipients:"",message:"",relation_type:"related_to",priority:"none",template_id:"",tags:"",offset_hours:"",url:"",method:"POST"}}}function S(){return{field:"status",operator:"equals",value:""}}function V(){var w,T,W,R,le,oe,ke;const b=l.workflow;f.name=(b==null?void 0:b.name)??"",f.description=(b==null?void 0:b.description)??"",f.trigger_type=(b==null?void 0:b.trigger_type)??"task_created",f.is_enabled=(b==null?void 0:b.is_enabled)??!0,f.stop_processing=(b==null?void 0:b.stop_processing)??!1,f.position=(b==null?void 0:b.position)??0,p.from_status=typeof((w=b==null?void 0:b.trigger_config)==null?void 0:w.from_status)=="string"?b.trigger_config.from_status:"",p.to_status=typeof((T=b==null?void 0:b.trigger_config)==null?void 0:T.to_status)=="string"?b.trigger_config.to_status:"",p.tag=typeof((W=b==null?void 0:b.trigger_config)==null?void 0:W.tag)=="string"?b.trigger_config.tag:"",p.hours_before=((R=b==null?void 0:b.trigger_config)==null?void 0:R.hours_before)===void 0?"24":String(b.trigger_config.hours_before),p.hours_overdue=((le=b==null?void 0:b.trigger_config)==null?void 0:le.hours_overdue)===void 0?"0":String(b.trigger_config.hours_overdue),_.value=(oe=b==null?void 0:b.conditions)!=null&&oe.length?b.conditions.map(J=>({field:J.field,operator:J.operator,value:J.value===void 0||J.value===null?"":Array.isArray(J.value)?J.value.join(", "):String(J.value)})):[S()],B.value=(ke=b==null?void 0:b.actions)!=null&&ke.length?b.actions.map(J=>{var z,j,q,Z,ae,ne,me,Ee,_e,Te,Fe;return{type:J.type,value:J.value===void 0||J.value===null?"":String(J.value),config:{recipients:Array.isArray((z=J.config)==null?void 0:z.recipients)?String(((j=J.config)==null?void 0:j.recipients).join(", ")):"",message:typeof((q=J.config)==null?void 0:q.message)=="string"?J.config.message:"",relation_type:typeof((Z=J.config)==null?void 0:Z.relation_type)=="string"?J.config.relation_type:"related_to",priority:typeof((ae=J.config)==null?void 0:ae.priority)=="string"?J.config.priority:"none",template_id:typeof((ne=J.config)==null?void 0:ne.template_id)=="string"?J.config.template_id:"",tags:Array.isArray((me=J.config)==null?void 0:me.tags)?String(((Ee=J.config)==null?void 0:Ee.tags).join(", ")):"",offset_hours:((_e=J.config)==null?void 0:_e.offset_hours)===void 0?"":String(J.config.offset_hours),url:typeof((Te=J.config)==null?void 0:Te.url)=="string"?J.config.url:"",method:typeof((Fe=J.config)==null?void 0:Fe.method)=="string"?J.config.method:"POST"}}}):[x()]}e.watch(()=>l.workflow,()=>{V()},{immediate:!0});function v(){m.value=Math.min(n.length,m.value+1)}function N(){m.value=Math.max(1,m.value-1)}function I(b){m.value=b}function Y(){_.value.push(S())}function te(b){_.value.splice(b,1)}function F(){B.value.push(x())}function K(b){B.value.splice(b,1)}function G(b,w){const T=w==="up"?b-1:b+1;if(T<0||T>=B.value.length)return;const W=[...B.value],R=W[b],le=W[T];R===void 0||le===void 0||(W[b]=le,W[T]=R,B.value=W)}function ee(b,w){return w==="in"||w==="not_in"?b.split(",").map(T=>T.trim()).filter(Boolean):b.trim()===""?void 0:b.trim()}function H(){switch(f.trigger_type){case"status_changed":return{...p.from_status!==""?{from_status:p.from_status}:{},...p.to_status!==""?{to_status:p.to_status}:{}};case"tag_added":return p.tag===""?{}:{tag:p.tag};case"due_approaching":return{hours_before:Number.parseInt(p.hours_before||"24",10)||24};case"overdue":return{hours_overdue:Number.parseInt(p.hours_overdue||"0",10)||0};default:return null}}function A(){return _.value.filter(b=>b.field&&b.operator).map(b=>({field:b.field,operator:b.operator,value:ee(b.value,b.operator)}))}function P(){return B.value.map(b=>{const w={};return b.type==="send_notification"&&(w.recipients=b.config.recipients.split(",").map(T=>T.trim()).filter(Boolean),b.config.message.trim()!==""&&(w.message=b.config.message.trim())),b.type==="create_related_task"&&(b.config.template_id.trim()!==""&&(w.template_id=b.config.template_id.trim()),w.relation_type=b.config.relation_type,b.config.priority!=="none"&&(w.priority=b.config.priority),b.config.tags.trim()!==""&&(w.tags=b.config.tags.split(",").map(T=>T.trim()).filter(Boolean))),b.type==="set_due_date"&&b.config.offset_hours.trim()!==""&&(w.offset_hours=Number.parseInt(b.config.offset_hours,10)),b.type==="webhook"&&(w.url=b.config.url.trim(),w.method=b.config.method||"POST"),{type:b.type,...b.value.trim()!==""?{value:b.value.trim()}:{},...Object.keys(w).length>0?{config:w}:{}}})}function C(){f.name.trim()===""||B.value.length===0||o("submit",{name:f.name.trim(),description:f.description.trim()===""?null:f.description.trim(),trigger_type:f.trigger_type,trigger_config:H(),conditions:A(),actions:P(),is_enabled:f.is_enabled,position:f.position,stop_processing:f.stop_processing})}function D(b){return b==="set_status"||b==="set_priority"}function L(b){switch(b){case"assign_to_role":return"warehouse-manager";case"assign_to_user":return"Assign to employee";case"add_tag":return"auto-assigned";case"webhook":return"Optional label";default:return"Value"}}return(b,w)=>(e.openBlock(),e.createElementBlock("form",{class:"workflow-form","data-testid":"form-workflow",onSubmit:e.withModifiers(C,["prevent"])},[e.createElementVNode("nav",ec,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,(T,W)=>e.createElementVNode("button",{key:T,type:"button",class:e.normalizeClass(["workflow-form__step",{"workflow-form__step--active":m.value===W+1}]),"data-testid":`workflow-step-${W+1}`,onClick:R=>I(W+1)},[e.createElementVNode("span",null,e.toDisplayString(W+1),1),e.createTextVNode(" "+e.toDisplayString(T),1)],10,tc)),64))]),m.value===1?(e.openBlock(),e.createElementBlock("section",ac,[w[11]||(w[11]=e.createElementVNode("h3",null,"Select trigger",-1)),e.createElementVNode("div",lc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,T=>e.createElementVNode("button",{key:T.value,type:"button",class:e.normalizeClass(["workflow-form__trigger-card",{"workflow-form__trigger-card--selected":f.trigger_type===T.value}]),"data-testid":`btn-trigger-${T.value}`,"aria-pressed":f.trigger_type===T.value,onClick:W=>f.trigger_type=T.value},[e.createElementVNode("strong",null,e.toDisplayString(T.label),1),e.createElementVNode("span",null,e.toDisplayString(T.description),1)],10,nc)),64))])])):m.value===2?(e.openBlock(),e.createElementBlock("section",oc,[w[19]||(w[19]=e.createElementVNode("h3",null,"Trigger configuration",-1)),e.createElementVNode("div",sc,[f.trigger_type==="status_changed"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("label",ic,[w[13]||(w[13]=e.createElementVNode("span",null,"From status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[0]||(w[0]=T=>p.from_status=T),"data-testid":"workflow-trigger-from-status"},[w[12]||(w[12]=e.createElementVNode("option",{value:""},"Any status",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,T=>e.createElementVNode("option",{key:T,value:T},e.toDisplayString(T),9,rc)),64))],512),[[e.vModelSelect,p.from_status]])]),e.createElementVNode("label",dc,[w[15]||(w[15]=e.createElementVNode("span",null,"To status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[1]||(w[1]=T=>p.to_status=T),"data-testid":"workflow-trigger-to-status"},[w[14]||(w[14]=e.createElementVNode("option",{value:""},"Any status",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,T=>e.createElementVNode("option",{key:T,value:T},e.toDisplayString(T),9,cc)),64))],512),[[e.vModelSelect,p.to_status]])])],64)):f.trigger_type==="tag_added"?(e.openBlock(),e.createElementBlock("label",uc,[w[16]||(w[16]=e.createElementVNode("span",null,"Required tag",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[2]||(w[2]=T=>p.tag=T),"data-testid":"workflow-trigger-tag",type:"text",placeholder:"shipping"},null,512),[[e.vModelText,p.tag]])])):f.trigger_type==="due_approaching"?(e.openBlock(),e.createElementBlock("label",mc,[w[17]||(w[17]=e.createElementVNode("span",null,"Hours before due",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[3]||(w[3]=T=>p.hours_before=T),"data-testid":"workflow-trigger-hours-before",type:"number",min:"0"},null,512),[[e.vModelText,p.hours_before]])])):f.trigger_type==="overdue"?(e.openBlock(),e.createElementBlock("label",pc,[w[18]||(w[18]=e.createElementVNode("span",null,"Hours overdue",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[4]||(w[4]=T=>p.hours_overdue=T),"data-testid":"workflow-trigger-hours-overdue",type:"number",min:"0"},null,512),[[e.vModelText,p.hours_overdue]])])):(e.openBlock(),e.createElementBlock("p",kc,"This trigger does not need extra configuration."))])])):m.value===3?(e.openBlock(),e.createElementBlock("section",_c,[e.createElementVNode("div",{class:"workflow-form__panel-header"},[w[20]||(w[20]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Conditions"),e.createElementVNode("p",null,"All conditions are evaluated with AND logic.")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-add-condition",onClick:Y},"Add condition")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,(T,W)=>(e.openBlock(),e.createElementBlock("div",{key:`condition-${W}`,class:"workflow-form__row","data-testid":`item-condition-${W}`},[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.field=R,"data-testid":`workflow-condition-field-${W}`,"aria-label":`Condition ${W+1} field`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(k,R=>e.createElementVNode("option",{key:R,value:R},e.toDisplayString(R),9,yc)),64))],8,vc),[[e.vModelSelect,T.field]]),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.operator=R,"data-testid":`workflow-condition-operator-${W}`,"aria-label":`Condition ${W+1} operator`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(d,R=>e.createElementVNode("option",{key:R,value:R},e.toDisplayString(R),9,bc)),64))],8,gc),[[e.vModelSelect,T.operator]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.value=R,"data-testid":`workflow-condition-value-${W}`,"aria-label":`Condition ${W+1} value`,type:"text",placeholder:"critical, urgent",disabled:T.operator==="is_null"||T.operator==="is_not_null"},null,8,hc),[[e.vModelText,T.value]]),e.createElementVNode("button",{type:"button","data-testid":`btn-remove-condition-${W}`,"aria-label":`Remove condition ${W+1}`,disabled:_.value.length===1,onClick:R=>te(W)},"Remove",8,wc)],8,fc))),128))])):m.value===4?(e.openBlock(),e.createElementBlock("section",Ec,[e.createElementVNode("div",{class:"workflow-form__panel-header"},[w[21]||(w[21]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Action steps"),e.createElementVNode("p",null,"Actions run in the order shown here.")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-add-action",onClick:F},"Add action")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,(T,W)=>(e.openBlock(),e.createElementBlock("article",{key:`action-${W}`,class:"workflow-form__action-card","data-testid":`item-action-${W}`},[e.createElementVNode("div",Nc,[e.createElementVNode("label",$c,[w[22]||(w[22]=e.createElementVNode("span",null,"Action",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.type=R,"data-testid":`workflow-action-type-${W}`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(E,R=>e.createElementVNode("option",{key:R.value,value:R.value},e.toDisplayString(R.label),9,Tc)),64))],8,Bc),[[e.vModelSelect,T.type]])]),e.createElementVNode("label",Cc,[w[24]||(w[24]=e.createElementVNode("span",null,"Value",-1)),D(T.type)?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":R=>T.value=R,"data-testid":`workflow-action-value-${W}`},[w[23]||(w[23]=e.createElementVNode("option",{value:""},"Select value",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.type==="set_status"?i:r,R=>(e.openBlock(),e.createElementBlock("option",{key:R,value:R},e.toDisplayString(R),9,Dc))),128))],8,Sc)),[[e.vModelSelect,T.value]]):T.type==="assign_to_user"?(e.openBlock(),e.createBlock(ge,{key:1,modelValue:T.value,"onUpdate:modelValue":R=>T.value=R,"input-test-id":`workflow-action-value-${W}`,"aria-label":"Workflow assignee",placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","onUpdate:modelValue","input-test-id"])):T.type==="assign_to_role"&&h.value.length>0?(e.openBlock(),e.createBlock(ua,{key:2,modelValue:T.value,"onUpdate:modelValue":R=>T.value=R,options:h.value,"input-test-id":`workflow-action-value-${W}`,placeholder:"Assign to role"},null,8,["modelValue","onUpdate:modelValue","options","input-test-id"])):T.type==="add_comment"?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:3,"onUpdate:modelValue":R=>T.value=R,"data-testid":`workflow-action-value-${W}`,rows:"3",placeholder:"Comment body"},null,8,Mc)),[[e.vModelText,T.value]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:4,"onUpdate:modelValue":R=>T.value=R,"data-testid":`workflow-action-value-${W}`,type:"text",placeholder:L(T.type)},null,8,Ac)),[[e.vModelText,T.value]])])]),T.type==="send_notification"?(e.openBlock(),e.createElementBlock("div",zc,[e.createElementVNode("label",Ic,[w[25]||(w[25]=e.createElementVNode("span",null,"Recipients",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.config.recipients=R,"data-testid":`workflow-action-recipients-${W}`,type:"text",placeholder:"assignee, manager"},null,8,xc),[[e.vModelText,T.config.recipients]])]),e.createElementVNode("label",Fc,[w[26]||(w[26]=e.createElementVNode("span",null,"Message",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.config.message=R,"data-testid":`workflow-action-message-${W}`,type:"text",placeholder:"Workflow updated this task"},null,8,Lc),[[e.vModelText,T.config.message]])])])):e.createCommentVNode("",!0),T.type==="create_related_task"?(e.openBlock(),e.createElementBlock("div",Uc,[e.createElementVNode("label",Rc,[w[28]||(w[28]=e.createElementVNode("span",null,"Relation type",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.config.relation_type=R,"data-testid":`workflow-action-relation-type-${W}`},[...w[27]||(w[27]=[e.createElementVNode("option",{value:"related_to"},"related_to",-1),e.createElementVNode("option",{value:"blocks"},"blocks",-1),e.createElementVNode("option",{value:"parent_of"},"parent_of",-1)])],8,Wc),[[e.vModelSelect,T.config.relation_type]])]),e.createElementVNode("label",Pc,[w[30]||(w[30]=e.createElementVNode("span",null,"Template",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.config.template_id=R,"data-testid":`workflow-action-template-id-${W}`},[w[29]||(w[29]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,R=>(e.openBlock(),e.createElementBlock("option",{key:R.id,value:R.id},e.toDisplayString(R.name),9,Hc))),128))],8,Oc),[[e.vModelSelect,T.config.template_id]])]),e.createElementVNode("label",jc,[w[31]||(w[31]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.config.priority=R,"data-testid":`workflow-action-priority-${W}`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,R=>e.createElementVNode("option",{key:R,value:R},e.toDisplayString(R),9,Yc)),64))],8,qc),[[e.vModelSelect,T.config.priority]])]),e.createElementVNode("label",Kc,[w[32]||(w[32]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.config.tags=R,"data-testid":`workflow-action-tags-${W}`,type:"text",placeholder:"follow-up, warehouse"},null,8,Qc),[[e.vModelText,T.config.tags]])])])):e.createCommentVNode("",!0),T.type==="set_due_date"?(e.openBlock(),e.createElementBlock("div",Gc,[e.createElementVNode("label",Jc,[w[33]||(w[33]=e.createElementVNode("span",null,"Absolute due date",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.value=R,"data-testid":`workflow-action-due-date-${W}`,type:"date"},null,8,Zc),[[e.vModelText,T.value]])]),e.createElementVNode("label",Xc,[w[34]||(w[34]=e.createElementVNode("span",null,"Offset hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.config.offset_hours=R,"data-testid":`workflow-action-offset-hours-${W}`,type:"number",min:"0",placeholder:"4"},null,8,eu),[[e.vModelText,T.config.offset_hours]])])])):e.createCommentVNode("",!0),T.type==="webhook"?(e.openBlock(),e.createElementBlock("div",tu,[e.createElementVNode("label",au,[w[35]||(w[35]=e.createElementVNode("span",null,"Webhook URL",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":R=>T.config.url=R,"data-testid":`workflow-action-url-${W}`,type:"url",placeholder:"https://hooks.example.com/task"},null,8,lu),[[e.vModelText,T.config.url]])]),e.createElementVNode("label",nu,[w[37]||(w[37]=e.createElementVNode("span",null,"Method",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":R=>T.config.method=R,"data-testid":`workflow-action-method-${W}`},[...w[36]||(w[36]=[e.createElementVNode("option",{value:"POST"},"POST",-1),e.createElementVNode("option",{value:"PUT"},"PUT",-1),e.createElementVNode("option",{value:"PATCH"},"PATCH",-1)])],8,ou),[[e.vModelSelect,T.config.method]])])])):e.createCommentVNode("",!0),e.createElementVNode("footer",su,[e.createElementVNode("button",{type:"button","data-testid":`btn-move-action-up-${W}`,"aria-label":`Move action ${W+1} up`,disabled:W===0,onClick:R=>G(W,"up")},"Move up",8,iu),e.createElementVNode("button",{type:"button","data-testid":`btn-move-action-down-${W}`,"aria-label":`Move action ${W+1} down`,disabled:W===B.value.length-1,onClick:R=>G(W,"down")},"Move down",8,ru),e.createElementVNode("button",{type:"button","data-testid":`btn-remove-action-${W}`,"aria-label":`Remove action ${W+1}`,disabled:B.value.length===1,onClick:R=>K(W)},"Remove",8,du)])],8,Vc))),128))])):(e.openBlock(),e.createElementBlock("section",cu,[w[43]||(w[43]=e.createElementVNode("h3",null,"Settings",-1)),e.createElementVNode("div",uu,[e.createElementVNode("label",mu,[w[38]||(w[38]=e.createElementVNode("span",null,"Name",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[5]||(w[5]=T=>f.name=T),"data-testid":"workflow-name",type:"text",required:"",placeholder:"Auto-assign shipping tasks"},null,512),[[e.vModelText,f.name]])]),e.createElementVNode("label",pu,[w[39]||(w[39]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":w[6]||(w[6]=T=>f.description=T),"data-testid":"workflow-description",rows:"4",placeholder:"Explain when and why this workflow exists."},null,512),[[e.vModelText,f.description]])]),e.createElementVNode("label",ku,[w[40]||(w[40]=e.createElementVNode("span",null,"Position",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[7]||(w[7]=T=>f.position=T),"data-testid":"workflow-position",type:"number",min:"0"},null,512),[[e.vModelText,f.position,void 0,{number:!0}]])]),e.createElementVNode("label",_u,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[8]||(w[8]=T=>f.is_enabled=T),"data-testid":"workflow-enabled",type:"checkbox"},null,512),[[e.vModelCheckbox,f.is_enabled]]),w[41]||(w[41]=e.createTextVNode(" Enabled ",-1))]),e.createElementVNode("label",fu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[9]||(w[9]=T=>f.stop_processing=T),"data-testid":"workflow-stop-processing",type:"checkbox"},null,512),[[e.vModelCheckbox,f.stop_processing]]),w[42]||(w[42]=e.createTextVNode(" Stop processing later workflows ",-1))])])])),e.createElementVNode("footer",vu,[e.createElementVNode("button",{type:"button",class:"workflow-form__ghost","data-testid":"workflow-cancel",onClick:w[10]||(w[10]=T=>o("cancel"))},"Cancel"),m.value>1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"workflow-form__ghost","data-testid":"workflow-back",onClick:N},"Back")):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"submit","data-testid":"workflow-submit",disabled:t.submitting||f.name.trim()===""},e.toDisplayString(u.value==="edit"?"Save workflow":"Create workflow"),9,yu)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"workflow-next",onClick:v},"Next"))])],32))}}),bu=Q(gu,[["__scopeId","data-v-9e014510"]]),hu={class:"workflow-list","data-testid":"list-workflows"},wu={class:"workflow-list__header"},Eu={class:"workflow-list__count","data-testid":"badge-workflow-count"},Vu={key:0,class:"workflow-list__error","data-testid":"status-workflow-error"},Nu={key:1,class:"workflow-list__loading","data-testid":"status-loading-workflows"},$u={key:2,class:"workflow-list__table-wrap"},Bu={class:"workflow-list__table","data-testid":"workflow-list-table"},Tu=["data-testid"],Cu={class:"workflow-list__name"},Su={key:0},Du=["data-testid","onClick"],Mu={class:"workflow-list__actions"},Au=["data-testid","aria-label","disabled","onClick"],zu=["data-testid","aria-label","disabled","onClick"],Iu=["data-testid","aria-label","onClick"],xu=["data-testid","aria-label","onClick"],Fu=["data-testid","aria-label","onClick"],Lu=["data-testid","aria-label","onClick"],Uu={key:0},Ru=e.defineComponent({__name:"WorkflowList",props:{workflows:{},loading:{type:Boolean},error:{}},emits:["edit","duplicate","remove","toggle","move","logs"],setup(t,{emit:a}){const l=t,o=a,n=e.computed(()=>[...l.workflows].sort((r,s)=>r.position-s.position));function i(r){return r===null||r===""?"Never":new Date(r).toLocaleString()}return(r,s)=>(e.openBlock(),e.createElementBlock("section",hu,[e.createElementVNode("header",wu,[s[0]||(s[0]=e.createElementVNode("div",null,[e.createElementVNode("p",{class:"workflow-list__eyebrow"},"Workflow Automation"),e.createElementVNode("h2",null,"Workflow Builder")],-1)),e.createElementVNode("span",Eu,e.toDisplayString(n.value.length)+" workflows",1)]),t.error?(e.openBlock(),e.createElementBlock("p",Vu,e.toDisplayString(t.error),1)):t.loading&&n.value.length===0?(e.openBlock(),e.createElementBlock("p",Nu,"Loading workflows…")):(e.openBlock(),e.createElementBlock("div",$u,[e.createElementVNode("table",Bu,[s[2]||(s[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Name"),e.createElementVNode("th",null,"Trigger"),e.createElementVNode("th",null,"Status"),e.createElementVNode("th",null,"Last Run"),e.createElementVNode("th",null,"Runs"),e.createElementVNode("th",{class:"workflow-list__actions-header"},"Actions")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(k,d)=>(e.openBlock(),e.createElementBlock("tr",{key:k.id,"data-testid":`workflow-row-${k.id}`},[e.createElementVNode("td",null,[e.createElementVNode("div",Cu,[e.createElementVNode("strong",null,e.toDisplayString(k.name),1),k.description?(e.openBlock(),e.createElementBlock("span",Su,e.toDisplayString(k.description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",null,e.toDisplayString(k.trigger_type_label??k.trigger_type),1),e.createElementVNode("td",null,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["workflow-list__status",{"workflow-list__status--enabled":k.is_enabled}]),"data-testid":`workflow-toggle-${k.id}`,onClick:E=>o("toggle",{workflow:k,isEnabled:!k.is_enabled})},e.toDisplayString(k.is_enabled?"Enabled":"Disabled"),11,Du)]),e.createElementVNode("td",null,e.toDisplayString(i(k.last_executed_at)),1),e.createElementVNode("td",null,e.toDisplayString(k.execution_count),1),e.createElementVNode("td",Mu,[e.createElementVNode("button",{type:"button","data-testid":`btn-move-workflow-up-${k.id}`,"aria-label":`Move ${k.name} up`,disabled:d===0,onClick:E=>o("move",{workflow:k,direction:"up"})},"Up",8,Au),e.createElementVNode("button",{type:"button","data-testid":`btn-move-workflow-down-${k.id}`,"aria-label":`Move ${k.name} down`,disabled:d===n.value.length-1,onClick:E=>o("move",{workflow:k,direction:"down"})},"Down",8,zu),e.createElementVNode("button",{type:"button","data-testid":`btn-edit-workflow-${k.id}`,"aria-label":`Edit ${k.name}`,onClick:E=>o("edit",k)},"Edit",8,Iu),e.createElementVNode("button",{type:"button","data-testid":`btn-duplicate-workflow-${k.id}`,"aria-label":`Duplicate ${k.name}`,onClick:E=>o("duplicate",k)},"Duplicate",8,xu),e.createElementVNode("button",{type:"button","data-testid":`btn-logs-workflow-${k.id}`,"aria-label":`View logs for ${k.name}`,onClick:E=>o("logs",k)},"Logs",8,Fu),e.createElementVNode("button",{type:"button",class:"workflow-list__danger","data-testid":`btn-delete-workflow-${k.id}`,"aria-label":`Delete ${k.name}`,onClick:E=>o("remove",k)},"Delete",8,Lu)])],8,Tu))),128)),n.value.length===0?(e.openBlock(),e.createElementBlock("tr",Uu,[...s[1]||(s[1]=[e.createElementVNode("td",{colspan:"6",class:"workflow-list__empty","data-testid":"status-empty-workflows"},"No workflows yet.",-1)])])):e.createCommentVNode("",!0)])])]))]))}}),Wu=Q(Ru,[["__scopeId","data-v-9cefa856"]]),Pu={class:"workflow-logs","data-testid":"panel-workflow-logs"},Ou={class:"workflow-logs__filters"},Hu={key:0,class:"workflow-logs__loading","data-testid":"status-loading-logs"},ju=["data-testid"],qu={class:"workflow-logs__row"},Yu=["data-testid"],Ku={class:"workflow-logs__meta"},Qu=["data-testid","onClick"],Gu={key:1},Ju=["data-testid","aria-expanded","aria-label","onClick"],Zu=["data-testid"],Xu={key:0},em={key:1,class:"workflow-logs__empty","data-testid":"status-empty-logs"},tm=e.defineComponent({__name:"WorkflowLogs",props:{logs:{},loading:{type:Boolean}},emits:["refresh","select-task"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(""),i=e.ref(""),r=e.ref(""),s=e.ref(null),k=e.computed(()=>l.logs.filter(f=>!(n.value!==""&&f.status!==n.value||i.value!==""&&(f.executed_at===null||f.executed_at<i.value)||r.value!==""&&(f.executed_at===null||f.executed_at>r.value))));function d(f){s.value=s.value===f?null:f}function E(){o("refresh",{...n.value!==""?{status:n.value}:{},...i.value!==""?{date_from:i.value}:{},...r.value!==""?{date_to:r.value}:{}})}function m(f){o("select-task",f)}return(f,p)=>(e.openBlock(),e.createElementBlock("section",Pu,[e.createElementVNode("header",{class:"workflow-logs__header"},[p[3]||(p[3]=e.createElementVNode("div",null,[e.createElementVNode("p",{class:"workflow-logs__eyebrow"},"Execution Audit"),e.createElementVNode("h2",null,"Workflow Logs")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-refresh-logs","aria-label":"Refresh workflow logs",onClick:E},"Refresh")]),e.createElementVNode("div",Ou,[e.createElementVNode("label",null,[p[5]||(p[5]=e.createElementVNode("span",null,"Status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[0]||(p[0]=_=>n.value=_),"data-testid":"workflow-log-status-filter"},[...p[4]||(p[4]=[e.createElementVNode("option",{value:""},"All",-1),e.createElementVNode("option",{value:"success"},"success",-1),e.createElementVNode("option",{value:"skipped"},"skipped",-1),e.createElementVNode("option",{value:"error"},"error",-1)])],512),[[e.vModelSelect,n.value]])]),e.createElementVNode("label",null,[p[6]||(p[6]=e.createElementVNode("span",null,"From",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[1]||(p[1]=_=>i.value=_),"data-testid":"workflow-log-date-from",type:"date"},null,512),[[e.vModelText,i.value]])]),e.createElementVNode("label",null,[p[7]||(p[7]=e.createElementVNode("span",null,"To",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[2]||(p[2]=_=>r.value=_),"data-testid":"workflow-log-date-to",type:"date"},null,512),[[e.vModelText,r.value]])])]),t.loading?(e.openBlock(),e.createElementBlock("p",Hu,"Loading logs…")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,_=>(e.openBlock(),e.createElementBlock("div",{key:_.id,class:"workflow-logs__card","data-testid":`card-log-${_.id}`},[e.createElementVNode("div",qu,[e.createElementVNode("div",null,[e.createElementVNode("strong",{"data-testid":`status-log-${_.id}`},e.toDisplayString(_.status_label??_.status),9,Yu),e.createElementVNode("p",null,e.toDisplayString(e.unref(ce)(_.executed_at)),1)]),e.createElementVNode("div",Ku,[_.task?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"workflow-logs__task-link","data-testid":`btn-open-log-task-${_.id}`,onClick:B=>m(_.task.id)},e.toDisplayString(_.task.display_number_formatted)+" · "+e.toDisplayString(_.task.title),9,Qu)):(e.openBlock(),e.createElementBlock("span",Gu,"Task "+e.toDisplayString(_.task_id),1)),e.createElementVNode("span",null,e.toDisplayString(_.duration_ms)+"ms",1),e.createElementVNode("button",{type:"button","data-testid":`btn-toggle-log-${_.id}`,"aria-expanded":s.value===_.id,"aria-label":s.value===_.id?"Hide log details":"Show log details",onClick:B=>d(_.id)},e.toDisplayString(s.value===_.id?"Hide":"Details"),9,Ju)])]),s.value===_.id?(e.openBlock(),e.createElementBlock("div",{key:0,class:"workflow-logs__details","data-testid":`panel-log-details-${_.id}`},[e.createElementVNode("p",null,[p[8]||(p[8]=e.createElementVNode("strong",null,"Conditions met:",-1)),e.createTextVNode(" "+e.toDisplayString(_.conditions_met?"Yes":"No"),1)]),_.error?(e.openBlock(),e.createElementBlock("p",Xu,[p[9]||(p[9]=e.createElementVNode("strong",null,"Error:",-1)),e.createTextVNode(" "+e.toDisplayString(_.error),1)])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.actions_executed,(B,u)=>{var c;return e.openBlock(),e.createElementBlock("li",{key:`${_.id}-${u}`},e.toDisplayString(B.type)+": "+e.toDisplayString(((c=B.result)==null?void 0:c.message)??"No result message"),1)}),128))])],8,Zu)):e.createCommentVNode("",!0)],8,ju))),128)),!t.loading&&k.value.length===0?(e.openBlock(),e.createElementBlock("p",em,"No log entries match the current filters.")):e.createCommentVNode("",!0)]))}}),am=Q(tm,[["__scopeId","data-v-e72cf4ed"]]),lm={key:0,class:"task-composer__context","data-testid":"task-composer-context"},nm={key:1,class:"task-composer__mode",role:"tablist","aria-label":"Task creation mode","data-testid":"task-composer-mode"},om=["aria-selected"],sm=["aria-selected"],im={key:2,class:"task-composer__templates","data-testid":"task-composer-templates"},rm={class:"task-composer__template-grid"},dm=["data-testid","onClick"],cm={key:0,class:"task-composer__field","data-testid":"task-composer-template-override"},um=["disabled","placeholder"],mm={key:3,class:"task-composer__field task-composer__field--hero"},pm=["disabled"],km={class:"task-composer__field"},_m={class:"task-composer__deadline","data-testid":"task-composer-deadline"},fm={class:"task-composer__deadline-chips",role:"group","aria-label":"Deadline presets"},vm=["disabled"],ym=["disabled"],gm=["disabled"],bm=["disabled"],hm=["disabled"],wm=["disabled"],Em={key:0,class:"task-composer__deadline-inputs","data-testid":"task-composer-deadline-inputs"},Vm=["disabled"],Nm={key:1,class:"task-composer__deadline-meta","data-testid":"task-composer-deadline-meta"},$m={class:"task-composer__deadline-resolved","data-testid":"task-composer-deadline-resolved"},Bm={class:"task-composer__deadline-time-row"},Tm=["disabled"],Cm=["disabled"],Sm=["disabled"],Dm=["disabled"],Mm={key:0,class:"task-composer__details-hint"},Am={key:5,class:"task-composer__details","data-testid":"task-composer-details"},zm={class:"task-composer__field"},Im=["disabled"],xm={class:"task-composer__field"},Fm={class:"task-composer__priority-row",role:"radiogroup","aria-label":"Task priority"},Lm=["aria-checked","data-testid","disabled","onClick"],Um={class:"task-composer__field"},Rm=["disabled"],Wm={class:"task-composer__field","data-testid":"composer-checklist"},Pm={class:"task-composer__checklist-header"},Om=["disabled"],Hm=["onUpdate:modelValue","data-testid","disabled","placeholder"],jm=["data-testid","disabled","onClick"],qm={key:6,class:"task-composer__summary","data-testid":"task-composer-summary"},Ym={key:0},Km={key:1},Qm={class:"task-composer__footer"},Gm=["disabled"],Jm=["disabled"],Zm={key:0,class:"task-composer__spinner",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","aria-hidden":"true"},Xm=e.defineComponent({__name:"TaskComposer",props:{templates:{default:()=>[]},busy:{type:Boolean,default:!1},entityContext:{default:null},entityLabel:{default:null},initialTask:{default:null}},emits:["submit","instantiate-template","cancel"],setup(t,{emit:a}){const l=t,o=a,n=[{value:"none",label:"None"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"urgent",label:"Urgent"},{value:"critical",label:"Critical"}],i=e.ref("scratch"),r=e.ref(null),s=e.ref("none"),k=e.ref(""),d=e.ref(""),E=e.ref(!1),m=e.ref(!1),f=e.ref(""),p=e.reactive({title:"",description:"",priority:"medium",primary_assignee_id:"",tags:"",checklist:[],title_override:""});function _(L){return L.toString().padStart(2,"0")}function B(L){return`${L.getFullYear()}-${_(L.getMonth()+1)}-${_(L.getDate())}`}function u(L){const b=new Date;switch(L){case"today":return B(b);case"tomorrow":{const w=new Date(b);return w.setDate(w.getDate()+1),B(w)}case"this_week":{const w=new Date(b),T=w.getDay(),W=T<=5?5-T:0;return w.setDate(w.getDate()+W),B(w)}case"next_week":{const w=new Date(b),T=w.getDay(),W=T<=5?5-T+7:7;return w.setDate(w.getDate()+W),B(w)}default:return""}}function c(){var L,b,w,T,W,R,le,oe,ke,J,z;if(p.title=((L=l.initialTask)==null?void 0:L.title)??"",p.description=((b=l.initialTask)==null?void 0:b.description)??"",p.priority=((w=l.initialTask)==null?void 0:w.priority)??"medium",p.primary_assignee_id=((W=(T=l.initialTask)==null?void 0:T.primary_assignee)==null?void 0:W.id)===void 0?"":String(l.initialTask.primary_assignee.id),p.tags=((le=(R=l.initialTask)==null?void 0:R.tags)==null?void 0:le.map(j=>j.name).join(", "))??"",p.checklist=((ke=(oe=l.initialTask)==null?void 0:oe.checklist_items)==null?void 0:ke.map(j=>j.title))??[],p.title_override="",r.value=((J=l.initialTask)==null?void 0:J.primary_assignee)??null,i.value="scratch",f.value="",(z=l.initialTask)!=null&&z.due_at){s.value="custom";const j=l.initialTask.due_at;if(/^\d{4}-\d{2}-\d{2}$/.test(j))k.value=j,d.value="",E.value=!1;else{const q=new Date(j);Number.isNaN(q.getTime())||(k.value=B(q),d.value=`${_(q.getHours())}:${_(q.getMinutes())}`,E.value=!0)}}else s.value="none",k.value="",d.value="",E.value=!1;(p.description||p.tags||p.checklist.length>0||p.priority!=="medium")&&(m.value=!0)}e.watch(()=>l.initialTask,()=>{c()},{immediate:!0});const g=e.computed(()=>l.templates.length>0),h=e.computed(()=>l.templates.find(L=>L.id===f.value)??null),x=e.computed(()=>l.entityLabel?l.entityLabel:l.entityContext===null?null:`${l.entityContext.type.split(/[_-]+/).filter(Boolean).map(b=>b.charAt(0).toUpperCase()+b.slice(1)).join(" ")} #${l.entityContext.id}`),S=e.computed(()=>{if(s.value==="none")return null;const L=s.value==="custom"?k.value:u(s.value);return L?E.value&&d.value?new Date(`${L}T${d.value}`).toISOString():L:null}),V=e.computed(()=>{if(s.value==="none"||S.value===null)return null;const L=s.value==="custom"?k.value:u(s.value);if(!L)return null;const w=new Date(`${L}T00:00:00`).toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric"});if(E.value&&d.value){const T=d.value.split(":"),W=parseInt(T[0]??"0",10),R=T[1]??"00",le=W>=12?"PM":"AM",oe=W===0?12:W>12?W-12:W;return`${w} at ${oe}:${R} ${le}`}return w}),v=e.computed(()=>r.value!==null?r.value.name:null),N=e.computed(()=>i.value==="template"&&h.value?"Create from template":"Create task"),I=e.computed(()=>l.busy?!1:i.value==="template"?h.value!==null:p.title.trim().length>0),Y=e.computed(()=>p.checklist.map(L=>L.trim()).filter(L=>L.length>0)),te=e.computed(()=>p.tags.split(",").map(L=>L.trim()).filter(L=>L.length>0));function F(L){if(s.value=L,L==="none"){k.value="",d.value="",E.value=!1;return}if(L==="custom"){k.value||(k.value=B(new Date));return}k.value=u(L)}function K(L){f.value=L.id,p.title_override=""}function G(){f.value="",p.title_override=""}function ee(L){i.value=L,L==="scratch"&&G()}function H(){p.checklist.push("")}function A(L){p.checklist.splice(L,1)}function P(){const L=p.checklist.map((b,w)=>({title:b.trim(),position:w})).filter(b=>b.title.length>0);return L.length>0?L:void 0}function C(){const L=te.value;return L.length>0?L:void 0}function D(){var w,T,W,R;if(!I.value)return;if(i.value==="template"&&h.value){o("instantiate-template",{templateId:h.value.id,payload:{taskable_type:((w=l.entityContext)==null?void 0:w.type)??null,taskable_id:((T=l.entityContext)==null?void 0:T.id)??null,primary_assignee_id:p.primary_assignee_id||null,due_at:S.value,title_override:p.title_override.trim()||null}});return}const L=P(),b=C();o("submit",{title:p.title.trim(),description:p.description.trim()||null,priority:p.priority,primary_assignee_id:p.primary_assignee_id||null,due_at:S.value,taskable_type:((W=l.entityContext)==null?void 0:W.type)??null,taskable_id:((R=l.entityContext)==null?void 0:R.id)??null,...b?{tags:b}:{},...L?{checklist_items:L}:{}})}return(L,b)=>(e.openBlock(),e.createElementBlock("form",{class:"task-composer","data-testid":"task-composer",onSubmit:e.withModifiers(D,["prevent"])},[x.value?(e.openBlock(),e.createElementBlock("div",lm,[b[20]||(b[20]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),e.createElementVNode("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})],-1)),e.createElementVNode("span",null,e.toDisplayString(x.value),1)])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("div",nm,[e.createElementVNode("button",{type:"button",role:"tab",class:e.normalizeClass(["task-composer__mode-tab",{"is-active":i.value==="scratch"}]),"aria-selected":i.value==="scratch","data-testid":"composer-mode-scratch",onClick:b[0]||(b[0]=w=>ee("scratch"))}," New task ",10,om),e.createElementVNode("button",{type:"button",role:"tab",class:e.normalizeClass(["task-composer__mode-tab",{"is-active":i.value==="template"}]),"aria-selected":i.value==="template","data-testid":"composer-mode-template",onClick:b[1]||(b[1]=w=>ee("template"))}," From template ",10,sm)])):e.createCommentVNode("",!0),i.value==="template"?(e.openBlock(),e.createElementBlock("div",im,[e.createElementVNode("div",rm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.templates,w=>(e.openBlock(),e.createElementBlock("button",{key:w.id,type:"button",class:e.normalizeClass(["task-composer__template-card",{"is-selected":f.value===w.id}]),"data-testid":`composer-template-${w.id}`,onClick:T=>K(w)},[e.createElementVNode("strong",null,e.toDisplayString(w.name),1),e.createElementVNode("span",null,e.toDisplayString(w.description||w.default_title),1),e.createElementVNode("small",null,e.toDisplayString(w.items_count??0)+" steps",1)],10,dm))),128))]),h.value?(e.openBlock(),e.createElementBlock("label",cm,[b[21]||(b[21]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Rename task "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[2]||(b[2]=w=>p.title_override=w),type:"text",class:"task-composer__input","data-testid":"composer-title-override",disabled:t.busy,placeholder:h.value.default_title||"Keep template title"},null,8,um),[[e.vModelText,p.title_override]])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),i.value==="scratch"?(e.openBlock(),e.createElementBlock("label",mm,[b[22]||(b[22]=e.createElementVNode("span",{class:"task-composer__label"},"What needs to be done?",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[3]||(b[3]=w=>p.title=w),type:"text",class:"task-composer__input task-composer__input--hero","data-testid":"composer-title",disabled:t.busy,placeholder:"e.g. Call customer about replacement shipment","data-autofocus":""},null,8,pm),[[e.vModelText,p.title]])])):e.createCommentVNode("",!0),e.createElementVNode("div",km,[b[23]||(b[23]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Assign to "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.createVNode(ge,{modelValue:p.primary_assignee_id,"onUpdate:modelValue":b[4]||(b[4]=w=>p.primary_assignee_id=w),"selected-user":r.value,"input-test-id":"composer-assignee","aria-label":"Task assignee",placeholder:"Search by name or role",disabled:t.busy??!1,"rank-by-workload":"",onSelect:b[5]||(b[5]=w=>r.value=w)},null,8,["modelValue","selected-user","disabled"])]),e.createElementVNode("fieldset",_m,[b[24]||(b[24]=e.createElementVNode("legend",{class:"task-composer__label"},[e.createTextVNode("Due "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.createElementVNode("div",fm,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="today"}]),"data-testid":"composer-deadline-today",disabled:t.busy,onClick:b[6]||(b[6]=w=>F("today"))}," Today ",10,vm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="tomorrow"}]),"data-testid":"composer-deadline-tomorrow",disabled:t.busy,onClick:b[7]||(b[7]=w=>F("tomorrow"))}," Tomorrow ",10,ym),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="this_week"}]),"data-testid":"composer-deadline-this-week",disabled:t.busy,onClick:b[8]||(b[8]=w=>F("this_week"))}," This week ",10,gm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="next_week"}]),"data-testid":"composer-deadline-next-week",disabled:t.busy,onClick:b[9]||(b[9]=w=>F("next_week"))}," Next week ",10,bm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="custom"}]),"data-testid":"composer-deadline-custom",disabled:t.busy,onClick:b[10]||(b[10]=w=>F("custom"))}," Pick date ",10,hm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip task-composer__chip--muted",{"is-active":s.value==="none"}]),"data-testid":"composer-deadline-none",disabled:t.busy,onClick:b[11]||(b[11]=w=>F("none"))}," No deadline ",10,wm)]),s.value==="custom"?(e.openBlock(),e.createElementBlock("div",Em,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[12]||(b[12]=w=>k.value=w),type:"date",class:"task-composer__input","data-testid":"composer-due-date","aria-label":"Deadline date",disabled:t.busy},null,8,Vm),[[e.vModelText,k.value]])])):e.createCommentVNode("",!0),s.value!=="none"&&S.value!==null?(e.openBlock(),e.createElementBlock("div",Nm,[e.createElementVNode("p",$m," Due "+e.toDisplayString(V.value),1),e.createElementVNode("div",Bm,[E.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[14]||(b[14]=w=>d.value=w),type:"time",class:"task-composer__input task-composer__input--time","data-testid":"composer-due-time","aria-label":"Deadline time",disabled:t.busy},null,8,Cm),[[e.vModelText,d.value]]),e.createElementVNode("button",{type:"button",class:"task-composer__text-button task-composer__text-button--muted","data-testid":"composer-remove-time",disabled:t.busy,onClick:b[15]||(b[15]=w=>{E.value=!1,d.value=""})}," Remove time ",8,Sm)],64)):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-composer__text-button","data-testid":"composer-add-time",disabled:t.busy,onClick:b[13]||(b[13]=w=>E.value=!0)}," + Add specific time ",8,Tm))])])):e.createCommentVNode("",!0)]),i.value==="scratch"?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",class:e.normalizeClass(["task-composer__details-toggle",{"is-open":m.value}]),"data-testid":"composer-toggle-details",disabled:t.busy,onClick:b[16]||(b[16]=w=>m.value=!m.value)},[b[25]||(b[25]=e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",class:"task-composer__chevron"},[e.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)),e.createTextVNode(" "+e.toDisplayString(m.value?"Fewer details":"Add details")+" ",1),!m.value&&(p.description||te.value.length>0||Y.value.length>0)?(e.openBlock(),e.createElementBlock("span",Mm," (has content) ")):e.createCommentVNode("",!0)],10,Dm)):e.createCommentVNode("",!0),m.value&&i.value==="scratch"?(e.openBlock(),e.createElementBlock("div",Am,[e.createElementVNode("label",zm,[b[26]||(b[26]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Description "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":b[17]||(b[17]=w=>p.description=w),class:"task-composer__textarea",rows:"3","data-testid":"composer-description",disabled:t.busy,placeholder:"Add context or background for the assignee"},null,8,Im),[[e.vModelText,p.description]])]),e.createElementVNode("div",xm,[b[27]||(b[27]=e.createElementVNode("span",{class:"task-composer__label"},"Priority",-1)),e.createElementVNode("div",Fm,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,w=>e.createElementVNode("button",{key:w.value,type:"button",role:"radio",class:e.normalizeClass(["task-composer__priority-chip",[{"is-active":p.priority===w.value},`task-composer__priority-chip--${w.value}`]]),"aria-checked":p.priority===w.value,"data-testid":`composer-priority-${w.value}`,disabled:t.busy,onClick:T=>p.priority=w.value},e.toDisplayString(w.label),11,Lm)),64))])]),e.createElementVNode("label",Um,[b[28]||(b[28]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Tags "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[18]||(b[18]=w=>p.tags=w),type:"text",class:"task-composer__input","data-testid":"composer-tags",disabled:t.busy,placeholder:"ops, shipping, customer-follow-up"},null,8,Rm),[[e.vModelText,p.tags]])]),e.createElementVNode("div",Wm,[e.createElementVNode("div",Pm,[b[29]||(b[29]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Checklist "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.createElementVNode("button",{type:"button",class:"task-composer__text-button","data-testid":"composer-add-checklist",disabled:t.busy,onClick:H}," + Add item ",8,Om)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.checklist,(w,T)=>(e.openBlock(),e.createElementBlock("div",{key:`checklist-${T}`,class:"task-composer__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":W=>p.checklist[T]=W,type:"text",class:"task-composer__input","data-testid":`composer-checklist-item-${T}`,disabled:t.busy,placeholder:`Step ${T+1}`},null,8,Hm),[[e.vModelText,p.checklist[T]]]),e.createElementVNode("button",{type:"button",class:"task-composer__remove","data-testid":`composer-remove-checklist-${T}`,disabled:t.busy,"aria-label":"Remove checklist item",onClick:W=>A(T)}," × ",8,jm)]))),128))])])):e.createCommentVNode("",!0),(v.value||V.value)&&I.value?(e.openBlock(),e.createElementBlock("div",qm,[v.value?(e.openBlock(),e.createElementBlock("span",Ym,[b[30]||(b[30]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),e.createElementVNode("circle",{cx:"12",cy:"7",r:"4"})],-1)),e.createTextVNode(" "+e.toDisplayString(v.value),1)])):e.createCommentVNode("",!0),V.value?(e.openBlock(),e.createElementBlock("span",Km,[b[31]||(b[31]=e.createStaticVNode('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-83c77e2c><rect x="3" y="4" width="18" height="18" rx="2" ry="2" data-v-83c77e2c></rect><line x1="16" y1="2" x2="16" y2="6" data-v-83c77e2c></line><line x1="8" y1="2" x2="8" y2="6" data-v-83c77e2c></line><line x1="3" y1="10" x2="21" y2="10" data-v-83c77e2c></line></svg>',1)),e.createTextVNode(" "+e.toDisplayString(V.value),1)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("footer",Qm,[e.createElementVNode("button",{type:"button",class:"task-composer__btn task-composer__btn--ghost","data-testid":"composer-cancel",disabled:t.busy,onClick:b[19]||(b[19]=w=>o("cancel"))}," Cancel ",8,Gm),e.createElementVNode("button",{type:"submit",class:"task-composer__btn task-composer__btn--primary","data-testid":"composer-submit",disabled:!I.value},[t.busy?(e.openBlock(),e.createElementBlock("svg",Zm,[...b[32]||(b[32]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10",opacity:"0.25"},null,-1),e.createElementVNode("path",{d:"M12 2a10 10 0 0 1 10 10"},null,-1)])])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString(N.value),1)],8,Jm)])],32))}}),kt=Q(Xm,[["__scopeId","data-v-83c77e2c"]]),ep={class:"task-entity-widget","data-testid":"panel-entity-tasks"},tp={class:"task-entity-widget__header"},ap={class:"task-entity-widget__header-actions"},lp={class:"task-entity-widget__summary","data-testid":"panel-task-summary"},np={"data-testid":"status-task-total"},op={"data-testid":"status-task-open"},sp={"data-testid":"status-task-overdue"},ip={"data-testid":"status-task-completed"},rp={class:"task-entity-widget__recent","data-testid":"panel-recent-tasks"},dp={key:0,class:"task-entity-widget__cards","data-testid":"list-recent-tasks"},cp={key:1,"data-testid":"status-no-recent-tasks"},up=e.defineComponent({__name:"TaskEntityWidget",props:{entityType:{},entityId:{},entityName:{},summary:{},templates:{},loading:{type:Boolean}},emits:["create-task","view-all","instantiate-template","select-task"],setup(t,{emit:a}){const l=a,o=e.ref(!1);return(n,i)=>{var r,s,k,d,E,m;return e.openBlock(),e.createElementBlock("section",ep,[e.createElementVNode("header",tp,[e.createElementVNode("div",null,[i[6]||(i[6]=e.createElementVNode("h3",null,"Tasks",-1)),e.createElementVNode("p",null,"Operational work linked to this "+e.toDisplayString(t.entityType)+".",1)]),e.createElementVNode("div",ap,[e.createElementVNode("button",{type:"button",class:"task-entity-widget__header-button task-entity-widget__header-button--primary","data-testid":"btn-open-entity-task-create",onClick:i[0]||(i[0]=f=>o.value=!0)}," Create task "),e.createElementVNode("button",{type:"button",class:"task-entity-widget__header-button","data-testid":"btn-view-all-tasks",onClick:i[1]||(i[1]=f=>l("view-all"))}," View all ")])]),e.createElementVNode("div",lp,[e.createElementVNode("article",np,[i[7]||(i[7]=e.createElementVNode("span",null,"Total",-1)),e.createElementVNode("strong",null,e.toDisplayString(((r=t.summary)==null?void 0:r.total)??0),1)]),e.createElementVNode("article",op,[i[8]||(i[8]=e.createElementVNode("span",null,"Open",-1)),e.createElementVNode("strong",null,e.toDisplayString(((s=t.summary)==null?void 0:s.open)??0),1)]),e.createElementVNode("article",sp,[i[9]||(i[9]=e.createElementVNode("span",null,"Overdue",-1)),e.createElementVNode("strong",null,e.toDisplayString(((k=t.summary)==null?void 0:k.overdue)??0),1)]),e.createElementVNode("article",ip,[i[10]||(i[10]=e.createElementVNode("span",null,"Completed",-1)),e.createElementVNode("strong",null,e.toDisplayString(((d=t.summary)==null?void 0:d.completed)??0),1)])]),o.value?(e.openBlock(),e.createBlock(kt,{key:0,busy:t.loading??!1,templates:t.templates??[],"entity-context":{type:t.entityType,id:t.entityId},"entity-label":t.entityName??`${t.entityType} ${t.entityId}`,"data-testid":"panel-entity-task-composer",onSubmit:i[2]||(i[2]=f=>l("create-task",f)),onInstantiateTemplate:i[3]||(i[3]=f=>l("instantiate-template",f)),onCancel:i[4]||(i[4]=f=>o.value=!1)},null,8,["busy","templates","entity-context","entity-label"])):e.createCommentVNode("",!0),e.createElementVNode("div",rp,[i[11]||(i[11]=e.createElementVNode("h4",null,"Recent tasks",-1)),(m=(E=t.summary)==null?void 0:E.recent_tasks)!=null&&m.length?(e.openBlock(),e.createElementBlock("div",dp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.summary.recent_tasks,f=>(e.openBlock(),e.createBlock(pt,{key:f.id,"data-testid":`entity-task-${f.id}`,task:f,compact:"",onSelect:i[5]||(i[5]=p=>l("select-task",p))},null,8,["data-testid","task"]))),128))])):(e.openBlock(),e.createElementBlock("p",cp,"No recent tasks for this entity."))])])}}}),mp=Q(up,[["__scopeId","data-v-b4657f03"]]),pp={class:"task-deadline-field__inputs"},kp={class:"task-deadline-field__input-group"},_p=["value","data-testid","disabled"],fp={class:"task-deadline-field__input-group"},vp=["value","data-testid","disabled"],yp={class:"task-deadline-field__presets"},gp=["disabled"],bp=["disabled"],hp=["disabled"],wp=["disabled"],Ep={key:0,class:"task-deadline-field__helper"},Vp=e.defineComponent({__name:"TaskDeadlineField",props:{modelValue:{default:null},disabled:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},label:{default:"Deadline (optional)"},dateTestId:{default:"input-task-due-date"},timeTestId:{default:"input-task-due-time"}},emits:["update:modelValue"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(""),i=e.ref("");function r(u){return u.toString().padStart(2,"0")}function s(u){return`${u.getFullYear()}-${r(u.getMonth()+1)}-${r(u.getDate())}`}function k(u){return`${r(u.getHours())}:${r(u.getMinutes())}`}function d(u){if(!u){n.value="",i.value="";return}if(/^\d{4}-\d{2}-\d{2}$/.test(u)){n.value=u,i.value="";return}const c=new Date(u);if(Number.isNaN(c.getTime())){n.value=u.slice(0,10),i.value=u.length>=16?u.slice(11,16):"";return}n.value=s(c),i.value=k(c)}function E(){if(!n.value){o("update:modelValue",null);return}if(!i.value){o("update:modelValue",n.value);return}o("update:modelValue",new Date(`${n.value}T${i.value}`).toISOString())}function m(u){n.value=u,E()}function f(u){i.value=u,E()}function p(u){const c=new Date;c.setDate(c.getDate()+u),n.value=s(c),i.value||(i.value="17:00"),E()}function _(){n.value="",i.value="",o("update:modelValue",null)}const B=e.computed(()=>i.value?"Escalation timing will use this exact time.":"Add a time for more precise reminder and escalation windows.");return e.watch(()=>l.modelValue,u=>{d(u)},{immediate:!0}),(u,c)=>(e.openBlock(),e.createElementBlock("fieldset",{class:e.normalizeClass(["task-deadline-field",{compact:t.compact}]),"data-testid":"field-task-deadline"},[e.createElementVNode("legend",null,e.toDisplayString(t.label),1),e.createElementVNode("div",pp,[e.createElementVNode("label",kp,[c[5]||(c[5]=e.createElementVNode("span",null,"Date",-1)),e.createElementVNode("input",{value:n.value,type:"date","data-testid":t.dateTestId,"aria-label":"Deadline date",disabled:t.disabled,onInput:c[0]||(c[0]=g=>m(g.target.value))},null,40,_p)]),e.createElementVNode("label",fp,[c[6]||(c[6]=e.createElementVNode("span",null,"Time",-1)),e.createElementVNode("input",{value:i.value,type:"time","data-testid":t.timeTestId,"aria-label":"Deadline time",disabled:t.disabled,onInput:c[1]||(c[1]=g=>f(g.target.value))},null,40,vp)])]),e.createElementVNode("div",yp,[e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-today",disabled:t.disabled,onClick:c[2]||(c[2]=g=>p(0))},"Today",8,gp),e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-tomorrow",disabled:t.disabled,onClick:c[3]||(c[3]=g=>p(1))},"Tomorrow",8,bp),e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-three-days",disabled:t.disabled,onClick:c[4]||(c[4]=g=>p(3))},"+3 days",8,hp),e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-clear",class:"secondary",disabled:t.disabled,onClick:_},"Clear",8,wp)]),t.compact?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Ep,e.toDisplayString(B.value),1))],2))}}),Ke=Q(Vp,[["__scopeId","data-v-fa277772"]]),Np={class:"task-create-wizard__header"},$p={class:"task-create-wizard__context","data-testid":"task-create-context"},Bp={class:"task-create-wizard__steps","aria-label":"Task creation steps"},Tp=["aria-current","data-testid","onClick"],Cp={class:"task-create-wizard__step-number"},Sp={key:0,class:"task-create-wizard__panel","data-testid":"task-create-panel-purpose"},Dp={class:"task-create-wizard__mode-toggle",role:"group","aria-label":"Task creation mode"},Mp=["disabled"],Ap={key:0},zp={key:1},Ip={key:0,class:"task-create-wizard__grid"},xp={class:"task-create-wizard__field task-create-wizard__field--wide"},Fp=["disabled"],Lp={class:"task-create-wizard__field"},Up=["disabled"],Rp=["value"],Wp={class:"task-create-wizard__field task-create-wizard__field--wide"},Pp=["disabled"],Op={key:1,class:"task-create-wizard__template-grid"},Hp=["data-testid","onClick"],jp={key:0,class:"task-create-wizard__template-preview","data-testid":"wizard-template-preview"},qp={key:1,class:"task-create-wizard__panel","data-testid":"task-create-panel-owner"},Yp={class:"task-create-wizard__field task-create-wizard__field--wide"},Kp={key:2,class:"task-create-wizard__panel","data-testid":"task-create-panel-deadline"},Qp={key:3,class:"task-create-wizard__panel","data-testid":"task-create-panel-review"},Gp={class:"task-create-wizard__review-grid"},Jp={class:"task-create-wizard__review-card","data-testid":"wizard-review-summary"},Zp={key:0},Xp={key:1},ek={class:"task-create-wizard__review-card"},tk={class:"task-create-wizard__review-card"},ak={class:"task-create-wizard__review-card"},lk={key:0,class:"task-create-wizard__field task-create-wizard__field--wide"},nk=["disabled","placeholder"],ok={key:1,class:"task-create-wizard__manual-review"},sk={class:"task-create-wizard__field task-create-wizard__field--wide"},ik=["disabled"],rk={class:"task-create-wizard__checklist","data-testid":"wizard-checklist-panel"},dk={class:"task-create-wizard__checklist-header"},ck=["disabled"],uk={key:0,class:"task-create-wizard__checklist-empty"},mk=["onUpdate:modelValue","data-testid","disabled","placeholder"],pk=["disabled","data-testid","onClick"],kk={key:1,class:"task-create-wizard__review-meta"},_k={key:0},fk={key:1},vk={key:2},yk={class:"task-create-wizard__footer"},gk=["disabled"],bk=["disabled"],hk=["disabled"],wk=["disabled"],Ek=e.defineComponent({__name:"TaskCreateWizard",props:{templates:{default:()=>[]},busy:{type:Boolean,default:!1},entityContext:{default:null},entityLabel:{default:null},initialTask:{default:null}},emits:["submit","instantiate-template","cancel"],setup(t,{emit:a}){const l=t,o=a,n=[{id:"purpose",label:"Purpose",description:"Define the work or choose a template."},{id:"owner",label:"Owner",description:"Choose who should drive it forward."},{id:"deadline",label:"Deadline",description:"Decide whether this needs a finish date."},{id:"review",label:"Review",description:"Confirm the task before creating it."}],i=[{value:"none",label:"No priority",help:"Use for work that just needs to be tracked."},{value:"low",label:"Low",help:"Useful, but not time-sensitive."},{value:"medium",label:"Medium",help:"Normal operational work."},{value:"high",label:"High",help:"Needs attention soon."},{value:"urgent",label:"Urgent",help:"Act today."},{value:"critical",label:"Critical",help:"Treat as operationally risky or customer-impacting."}],r=e.ref(1),s=e.ref("manual"),k=e.ref(null),d=e.reactive({title:"",description:"",priority:"medium",primary_assignee_id:"",due_at:"",tags:"",checklist:[],template_id:"",title_override:""});function E(){var H,A,P,C,D,L,b,w,T,W,R,le;d.title=((H=l.initialTask)==null?void 0:H.title)??"",d.description=((A=l.initialTask)==null?void 0:A.description)??"",d.priority=((P=l.initialTask)==null?void 0:P.priority)??"medium",d.primary_assignee_id=((D=(C=l.initialTask)==null?void 0:C.primary_assignee)==null?void 0:D.id)===void 0?"":String(l.initialTask.primary_assignee.id),d.due_at=((L=l.initialTask)==null?void 0:L.due_at)??"",d.tags=((w=(b=l.initialTask)==null?void 0:b.tags)==null?void 0:w.map(oe=>oe.name).join(", "))??"",d.checklist=((W=(T=l.initialTask)==null?void 0:T.checklist_items)==null?void 0:W.map(oe=>oe.title))??[],d.title_override=((R=l.initialTask)==null?void 0:R.title)??"",r.value=1,s.value=d.template_id!==""?"template":"manual",k.value=((le=l.initialTask)==null?void 0:le.primary_assignee)??null}e.watch(()=>l.initialTask,()=>{E()},{immediate:!0});const m=e.computed(()=>l.templates??[]),f=e.computed(()=>m.value.length>0),p=e.computed(()=>m.value.find(H=>H.id===d.template_id)??null),_=e.computed(()=>l.entityLabel?l.entityLabel:l.entityContext===null?"General task workspace":`${l.entityContext.type.split(/[_-]+/).filter(Boolean).map(A=>A.charAt(0).toUpperCase()+A.slice(1)).join(" ")} #${l.entityContext.id}`),B=e.computed(()=>k.value!==null?k.value.name:d.primary_assignee_id.trim()===""?"Unassigned for triage":`Assigned to employee ${d.primary_assignee_id}`),u=e.computed(()=>{var H;return((H=i.find(A=>A.value===d.priority))==null?void 0:H.label)??"Medium"}),c=e.computed(()=>s.value==="template"?"Create from template":"Create task"),g=e.computed(()=>r.value!==1?!0:s.value==="template"?d.template_id!=="":d.title.trim().length>0),h=e.computed(()=>d.checklist.map(H=>H.trim()).filter(H=>H.length>0)),x=e.computed(()=>d.tags.split(",").map(H=>H.trim()).filter(H=>H.length>0)),S=e.computed(()=>{var H;return((H=p.value)==null?void 0:H.items_count)??0});function V(H){s.value=H}function v(H){H<1||H>n.length||H>r.value||(r.value=H)}function N(){g.value&&(r.value=Math.min(n.length,r.value+1))}function I(){r.value=Math.max(1,r.value-1)}function Y(){d.checklist.push("")}function te(H){d.checklist.splice(H,1)}function F(){const H=d.checklist.map((A,P)=>({title:A.trim(),position:P})).filter(A=>A.title.length>0);return H.length>0?H:void 0}function K(){const H=x.value;return H.length>0?H:void 0}function G(H){if(H.trim()==="")return"No deadline";if(/^\d{4}-\d{2}-\d{2}$/.test(H))return new Date(`${H}T00:00:00`).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"});const A=new Date(H);return Number.isNaN(A.getTime())?H:A.toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"})}function ee(){var P,C,D,L;if(s.value==="template"){if(p.value===null)return;o("instantiate-template",{templateId:p.value.id,payload:{taskable_type:((P=l.entityContext)==null?void 0:P.type)??null,taskable_id:((C=l.entityContext)==null?void 0:C.id)??null,primary_assignee_id:d.primary_assignee_id||null,due_at:d.due_at||null,title_override:d.title_override.trim()||null}});return}if(d.title.trim().length===0)return;const H=F(),A=K();o("submit",{title:d.title.trim(),description:d.description.trim()||null,priority:d.priority,primary_assignee_id:d.primary_assignee_id||null,due_at:d.due_at||null,taskable_type:((D=l.entityContext)==null?void 0:D.type)??null,taskable_id:((L=l.entityContext)==null?void 0:L.id)??null,...A?{tags:A}:{},...H?{checklist_items:H}:{}})}return(H,A)=>{var P,C;return e.openBlock(),e.createElementBlock("form",{class:"task-create-wizard","data-testid":"task-create-wizard",onSubmit:e.withModifiers(ee,["prevent"])},[e.createElementVNode("header",Np,[A[12]||(A[12]=e.createElementVNode("div",null,[e.createElementVNode("p",{class:"task-create-wizard__eyebrow"},"Guided creation"),e.createElementVNode("h2",null,"Create a task without guessing what the fields mean"),e.createElementVNode("p",{class:"task-create-wizard__lead"}," Start with the reason for the task, then choose the owner, decide whether it needs a deadline, and review the task before it is created. ")],-1)),e.createElementVNode("div",$p,[A[11]||(A[11]=e.createElementVNode("span",null,"Creating in",-1)),e.createElementVNode("strong",null,e.toDisplayString(_.value),1)])]),e.createElementVNode("nav",Bp,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(n,(D,L)=>e.createElementVNode("button",{key:D.id,type:"button",class:e.normalizeClass(["task-create-wizard__step",{"is-active":r.value===L+1,"is-complete":r.value>L+1}]),"aria-current":r.value===L+1?"step":void 0,"data-testid":`task-create-step-${D.id}`,onClick:b=>v(L+1)},[e.createElementVNode("span",Cp,e.toDisplayString(L+1),1),e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(D.label),1),e.createElementVNode("small",null,e.toDisplayString(D.description),1)])],10,Tp)),64))]),r.value===1?(e.openBlock(),e.createElementBlock("section",Sp,[A[21]||(A[21]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"What work needs to happen?"),e.createElementVNode("p",null," Pick the simplest way to start. Use a template when the work follows a playbook. Start from scratch when you need a one-off task. ")],-1)),e.createElementVNode("div",Dp,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-create-wizard__mode",{"is-selected":s.value==="manual"}]),"data-testid":"wizard-mode-manual",onClick:A[0]||(A[0]=D=>V("manual"))},[...A[13]||(A[13]=[e.createElementVNode("strong",null,"Start from scratch",-1),e.createElementVNode("span",null,"Create a custom task with your own title and details.",-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-create-wizard__mode",{"is-selected":s.value==="template"}]),disabled:!f.value,"data-testid":"wizard-mode-template",onClick:A[1]||(A[1]=D=>V("template"))},[A[14]||(A[14]=e.createElementVNode("strong",null,"Use a template",-1)),f.value?(e.openBlock(),e.createElementBlock("span",Ap,"Create structured work from an existing playbook.")):(e.openBlock(),e.createElementBlock("span",zp,"No templates are available for this workspace yet."))],10,Mp)]),s.value==="manual"?(e.openBlock(),e.createElementBlock("div",Ip,[e.createElementVNode("label",xp,[A[15]||(A[15]=e.createElementVNode("span",null,"Task title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[2]||(A[2]=D=>d.title=D),type:"text","data-testid":"wizard-title-input",disabled:t.busy,placeholder:"Example: Call customer about replacement shipment"},null,8,Fp),[[e.vModelText,d.title]]),A[16]||(A[16]=e.createElementVNode("small",null,"Use a plain-language sentence that tells someone exactly what needs to be done.",-1))]),e.createElementVNode("label",Lp,[A[17]||(A[17]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":A[3]||(A[3]=D=>d.priority=D),"data-testid":"wizard-priority-select",disabled:t.busy},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,D=>e.createElementVNode("option",{key:D.value,value:D.value},e.toDisplayString(D.label),9,Rp)),64))],8,Up),[[e.vModelSelect,d.priority]]),e.createElementVNode("small",null,e.toDisplayString((P=i.find(D=>D.value===d.priority))==null?void 0:P.help),1)]),e.createElementVNode("div",Wp,[A[18]||(A[18]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":A[4]||(A[4]=D=>d.description=D),rows:"5","data-testid":"wizard-description-input",disabled:t.busy,placeholder:"Add the context, promise, or business reason behind this task."},null,8,Pp),[[e.vModelText,d.description]]),A[19]||(A[19]=e.createElementVNode("small",null," Optional, but useful when someone else could pick this up later and still understand why it exists. ",-1))])])):(e.openBlock(),e.createElementBlock("div",Op,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,D=>(e.openBlock(),e.createElementBlock("button",{key:D.id,type:"button",class:e.normalizeClass(["task-create-wizard__template",{"is-selected":d.template_id===D.id}]),"data-testid":`wizard-template-${D.id}`,onClick:L=>d.template_id=D.id},[e.createElementVNode("strong",null,e.toDisplayString(D.name),1),e.createElementVNode("p",null,e.toDisplayString(D.description||"Structured work with defaults and checklist items."),1),e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(D.items_count??0)+" steps ",1),D.default_priority&&D.default_priority!=="none"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(D.default_priority)+" priority ",1)],64)):e.createCommentVNode("",!0)])],10,Hp))),128)),p.value?(e.openBlock(),e.createElementBlock("div",jp,[A[20]||(A[20]=e.createElementVNode("p",{class:"task-create-wizard__template-preview-label"},"Selected template",-1)),e.createElementVNode("h4",null,e.toDisplayString(p.value.name),1),e.createElementVNode("p",null,e.toDisplayString(p.value.default_description||p.value.description||"This template creates structured work with the template defaults."),1),e.createElementVNode("ul",null,[e.createElementVNode("li",null,"Default title: "+e.toDisplayString(p.value.default_title),1),e.createElementVNode("li",null,"Checklist items: "+e.toDisplayString(S.value),1),e.createElementVNode("li",null,"Default priority: "+e.toDisplayString(p.value.default_priority||"None"),1)])])):e.createCommentVNode("",!0)]))])):r.value===2?(e.openBlock(),e.createElementBlock("section",qp,[A[24]||(A[24]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"Who owns the next move?"),e.createElementVNode("p",null," Assign the task to the person responsible for driving it forward. Leave it unassigned if the team needs to triage it first. ")],-1)),e.createElementVNode("label",Yp,[A[22]||(A[22]=e.createElementVNode("span",null,"Owner",-1)),e.createVNode(ge,{modelValue:d.primary_assignee_id,"onUpdate:modelValue":A[5]||(A[5]=D=>d.primary_assignee_id=D),"selected-user":k.value,"input-test-id":"wizard-assignee-input","aria-label":"Task owner",placeholder:"Search employees by name, role, or department",disabled:t.busy??!1,"rank-by-workload":"",onSelect:A[6]||(A[6]=D=>k.value=D)},null,8,["modelValue","selected-user","disabled"]),A[23]||(A[23]=e.createElementVNode("small",null,"Pick the person who should move this work. This is the assignee shown in the task queue.",-1))])])):r.value===3?(e.openBlock(),e.createElementBlock("section",Kp,[A[25]||(A[25]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"Does this need a real deadline?"),e.createElementVNode("p",null," Deadline means the moment the task should be finished. Leave it blank when the task is important but not committed to a specific date. ")],-1)),A[26]||(A[26]=e.createElementVNode("div",{class:"task-create-wizard__deadline-note","data-testid":"task-create-deadline-note"},[e.createElementVNode("strong",null,"How to use this:"),e.createElementVNode("span",null,"If you only know the day, set the date and leave time blank. Add a time only when the work truly has to be done by a specific hour.")],-1)),e.createVNode(Ke,{modelValue:d.due_at,"onUpdate:modelValue":A[7]||(A[7]=D=>d.due_at=D),"date-test-id":"wizard-due-date","time-test-id":"wizard-due-time",disabled:t.busy??!1,label:"Finish by (optional)"},null,8,["modelValue","disabled"])])):(e.openBlock(),e.createElementBlock("section",Qp,[A[41]||(A[41]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"Review before creating"),e.createElementVNode("p",null," Make sure the task is understandable for the assignee and anyone else who might see it later. ")],-1)),e.createElementVNode("div",Gp,[e.createElementVNode("article",Jp,[A[27]||(A[27]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Task type",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.value==="template"?"Template-based task":"Custom task"),1),s.value==="template"&&p.value?(e.openBlock(),e.createElementBlock("p",Zp,e.toDisplayString(p.value.name),1)):(e.openBlock(),e.createElementBlock("p",Xp,e.toDisplayString(d.title||"Untitled task"),1))]),e.createElementVNode("article",ek,[A[28]||(A[28]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Owner",-1)),e.createElementVNode("strong",null,e.toDisplayString(B.value),1),A[29]||(A[29]=e.createElementVNode("p",null,"Reassign later if the work shifts.",-1))]),e.createElementVNode("article",tk,[A[30]||(A[30]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Deadline",-1)),e.createElementVNode("strong",null,e.toDisplayString(G(d.due_at)),1),A[31]||(A[31]=e.createElementVNode("p",null,"Leave blank when visibility matters more than a hard promise.",-1))]),e.createElementVNode("article",ak,[A[32]||(A[32]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Workspace",-1)),e.createElementVNode("strong",null,e.toDisplayString(_.value),1),A[33]||(A[33]=e.createElementVNode("p",null,"This is where the task will be linked and filtered.",-1))])]),s.value==="template"?(e.openBlock(),e.createElementBlock("label",lk,[A[34]||(A[34]=e.createElementVNode("span",null,"Rename the task heading (optional)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[8]||(A[8]=D=>d.title_override=D),type:"text","data-testid":"wizard-title-override-input",disabled:t.busy,placeholder:((C=p.value)==null?void 0:C.default_title)||"Keep the template title"},null,8,nk),[[e.vModelText,d.title_override]]),A[35]||(A[35]=e.createElementVNode("small",null,"Use this when the playbook is right, but the visible task title should be more specific.",-1))])):(e.openBlock(),e.createElementBlock("div",ok,[e.createElementVNode("label",sk,[A[36]||(A[36]=e.createElementVNode("span",null,"Tags (optional)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[9]||(A[9]=D=>d.tags=D),type:"text","data-testid":"wizard-tags-input",disabled:t.busy,placeholder:"ops, shipping, customer-follow-up"},null,8,ik),[[e.vModelText,d.tags]]),A[37]||(A[37]=e.createElementVNode("small",null,"Use short comma-separated labels to make the task easier to filter later.",-1))]),e.createElementVNode("section",rk,[e.createElementVNode("div",dk,[A[38]||(A[38]=e.createElementVNode("div",null,[e.createElementVNode("h4",null,"Checklist (optional)"),e.createElementVNode("p",null,"Break the task into concrete completion points when the work has repeatable steps.")],-1)),e.createElementVNode("button",{type:"button",class:"task-create-wizard__ghost","data-testid":"wizard-add-checklist-item",disabled:t.busy,onClick:Y}," Add checklist item ",8,ck)]),d.checklist.length===0?(e.openBlock(),e.createElementBlock("div",uk," No checklist yet. Add one if the assignee needs a step-by-step definition of done. ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.checklist,(D,L)=>(e.openBlock(),e.createElementBlock("div",{key:`wizard-checklist-${L}`,class:"task-create-wizard__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b=>d.checklist[L]=b,type:"text","data-testid":`wizard-checklist-item-${L}`,disabled:t.busy,placeholder:`Checklist item ${L+1}`},null,8,mk),[[e.vModelText,d.checklist[L]]]),e.createElementVNode("button",{type:"button",class:"task-create-wizard__ghost",disabled:t.busy,"data-testid":`wizard-remove-checklist-item-${L}`,onClick:b=>te(L)}," Remove ",8,pk)]))),128)),h.value.length>0||x.value.length>0?(e.openBlock(),e.createElementBlock("div",kk,[h.value.length>0?(e.openBlock(),e.createElementBlock("p",_k,[e.createElementVNode("strong",null,e.toDisplayString(h.value.length),1),A[39]||(A[39]=e.createTextVNode(" checklist items ready",-1))])):e.createCommentVNode("",!0),x.value.length>0?(e.openBlock(),e.createElementBlock("p",fk,[e.createElementVNode("strong",null,e.toDisplayString(x.value.join(", ")),1)])):(e.openBlock(),e.createElementBlock("p",vk,[A[40]||(A[40]=e.createTextVNode("Priority: ",-1)),e.createElementVNode("strong",null,e.toDisplayString(u.value),1)]))])):e.createCommentVNode("",!0)])]))])),e.createElementVNode("footer",yk,[r.value>1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-create-wizard__ghost","data-testid":"wizard-back",disabled:t.busy,onClick:I}," Back ",8,gk)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"task-create-wizard__ghost","data-testid":"wizard-cancel",disabled:t.busy,onClick:A[10]||(A[10]=D=>o("cancel"))}," Cancel ",8,bk),r.value<n.length?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"task-create-wizard__primary","data-testid":"wizard-next",disabled:t.busy||!g.value,onClick:N}," Continue ",8,hk)):(e.openBlock(),e.createElementBlock("button",{key:2,type:"submit",class:"task-create-wizard__primary","data-testid":"wizard-submit",disabled:t.busy||(s.value==="manual"?d.title.trim()==="":p.value===null)},e.toDisplayString(c.value),9,wk))])],32)}}}),Vk=Q(Ek,[["__scopeId","data-v-f99df958"]]),Nk={class:"task-import-export-panel","data-testid":"task-import-export-panel"},$k={class:"task-import-export-panel__block"},Bk=["disabled"],Tk={class:"task-import-export-panel__block"},Ck={class:"task-import-export-panel__upload"},Sk=["disabled"],Dk={key:0,class:"task-import-export-panel__result","data-testid":"task-import-result"},Mk={key:0,"data-testid":"task-import-errors"},Ak=e.defineComponent({__name:"TaskImportExportPanel",props:{busy:{type:Boolean},importing:{type:Boolean},exporting:{type:Boolean},result:{}},emits:["export","import"],setup(t,{emit:a}){const l=a,o=e.ref(null);function n(){l("export")}function i(r){var d;const s=r.target,k=((d=s==null?void 0:s.files)==null?void 0:d[0])??null;k&&(l("import",k),o.value&&(o.value.value=""))}return(r,s)=>(e.openBlock(),e.createElementBlock("section",Nk,[e.createElementVNode("div",$k,[s[0]||(s[0]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Export Tasks"),e.createElementVNode("p",null,"Download the current filtered task view as CSV.")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-export-tasks",disabled:(t.busy??!1)||(t.exporting??!1),onClick:n},e.toDisplayString(t.exporting?"Exporting…":"Export CSV"),9,Bk)]),e.createElementVNode("div",Tk,[s[1]||(s[1]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Import Tasks"),e.createElementVNode("p",null,"Upload a CSV with title, description, priority, assignee email, due date, and tags.")],-1)),e.createElementVNode("label",Ck,[e.createElementVNode("span",null,e.toDisplayString(t.importing?"Importing…":"Choose CSV"),1),e.createElementVNode("input",{ref_key:"fileInput",ref:o,type:"file",accept:".csv,text/csv","data-testid":"input-import-tasks",disabled:(t.busy??!1)||(t.importing??!1),onChange:i},null,40,Sk)])]),t.result?(e.openBlock(),e.createElementBlock("div",Dk,[e.createElementVNode("p",null,[s[2]||(s[2]=e.createTextVNode(" Imported ",-1)),e.createElementVNode("strong",null,e.toDisplayString(t.result.imported),1),e.createTextVNode(" task"+e.toDisplayString(t.result.imported===1?"":"s")+". ",1)]),t.result.errors.length>0?(e.openBlock(),e.createElementBlock("ul",Mk,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.errors,k=>(e.openBlock(),e.createElementBlock("li",{key:`${k.row}-${k.message}`}," Row "+e.toDisplayString(k.row)+": "+e.toDisplayString(k.message),1))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),ma=Q(Ak,[["__scopeId","data-v-54e06020"]]),zk=["aria-label"],Ik=["data-testid"],xk=["data-testid","aria-label","onClick"],Fk={class:"task-notification-toast__eyebrow"},Lk=["aria-label","onClick"],Uk=e.defineComponent({__name:"TaskNotificationToast",props:{navigate:{type:[Function,null],default:null},ariaLabel:{default:"Task notifications"}},emits:["dismiss","select"],setup(t,{emit:a}){const l=t,o=a,n=ut(),i=n.notifications,r=n.hasNotifications;function s(d){n.dismissTaskNotificationToast(d),o("dismiss",d)}function k(d){if(o("select",d),l.navigate!==null){l.navigate(d);return}typeof window<"u"&&d.url!==null&&window.location.assign(d.url)}return(d,E)=>e.unref(r)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-notification-toast","data-testid":"toast-task-notification",role:"region","aria-label":t.ariaLabel,"aria-live":"polite","aria-atomic":"false"},[e.createVNode(e.TransitionGroup,{name:"task-toast"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),m=>(e.openBlock(),e.createElementBlock("article",{key:m.id,class:e.normalizeClass(["task-notification-toast__item",`task-notification-toast__item--${m.tone}`]),"data-testid":`toast-item-${m.id}`},[e.createElementVNode("button",{type:"button",class:"task-notification-toast__content","data-testid":`btn-open-toast-${m.id}`,"aria-label":`Open: ${m.title}`,onClick:f=>k(m)},[e.createElementVNode("span",Fk,e.toDisplayString(m.kind),1),e.createElementVNode("strong",null,e.toDisplayString(m.title),1),e.createElementVNode("p",null,e.toDisplayString(m.body),1)],8,xk),e.createElementVNode("button",{type:"button",class:"task-notification-toast__dismiss","data-testid":"btn-dismiss-toast","aria-label":`Dismiss ${m.title}`,onClick:f=>s(m.id)}," × ",8,Lk)],10,Ik))),128))]),_:1})],8,zk)):e.createCommentVNode("",!0)}}),Rk=Q(Uk,[["__scopeId","data-v-c2c06d87"]]),Wk=["disabled"],Pk={key:0,class:"task-quick-create__extras"},Ok=["disabled"],Hk=["value"],jk=["disabled"],qk=e.defineComponent({__name:"TaskQuickCreate",props:{templates:{},busy:{type:Boolean},startExpanded:{type:Boolean},entityContext:{}},emits:["submit","instantiate-template"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(l.startExpanded??!1),i=e.reactive({title:"",primary_assignee_id:"",due_at:"",template_id:""}),r=e.computed(()=>l.templates??[]);function s(){n.value=!0}function k(){i.title||i.primary_assignee_id||i.due_at||i.template_id||(n.value=!1)}function d(){var E,m;if(i.template_id){o("instantiate-template",i.template_id),i.template_id="",k();return}i.title.trim()&&(o("submit",{title:i.title.trim(),primary_assignee_id:i.primary_assignee_id||null,due_at:i.due_at||null,taskable_type:((E=l.entityContext)==null?void 0:E.type)??null,taskable_id:((m=l.entityContext)==null?void 0:m.id)??null}),i.title="",i.primary_assignee_id="",i.due_at="",k())}return(E,m)=>(e.openBlock(),e.createElementBlock("form",{class:e.normalizeClass(["task-quick-create",{expanded:n.value}]),"data-testid":"form-quick-create",onSubmit:e.withModifiers(d,["prevent"])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[0]||(m[0]=f=>i.title=f),type:"text","data-testid":"input-task-title","aria-label":"Task title",disabled:t.busy,placeholder:"Quick create a task",onFocus:s},null,40,Wk),[[e.vModelText,i.title]]),n.value?(e.openBlock(),e.createElementBlock("div",Pk,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[1]||(m[1]=f=>i.template_id=f),"data-testid":"select-task-template","aria-label":"Task template",disabled:t.busy},[m[4]||(m[4]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,f=>(e.openBlock(),e.createElementBlock("option",{key:f.id,value:f.id},e.toDisplayString(f.name),9,Hk))),128))],8,Ok),[[e.vModelSelect,i.template_id]]),e.createVNode(ge,{modelValue:i.primary_assignee_id,"onUpdate:modelValue":m[2]||(m[2]=f=>i.primary_assignee_id=f),"input-test-id":"input-task-assignee",disabled:t.busy??!1,"aria-label":"Assignee",placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","disabled"]),e.createVNode(Ke,{modelValue:i.due_at,"onUpdate:modelValue":m[3]||(m[3]=f=>i.due_at=f),class:"task-quick-create__deadline",compact:"",disabled:t.busy??!1},null,8,["modelValue","disabled"]),e.createElementVNode("button",{type:"submit","data-testid":"btn-submit-task",disabled:t.busy||!i.title.trim()&&!i.template_id}," Create ",8,jk)])):e.createCommentVNode("",!0)],34))}}),Yk=Q(qk,[["__scopeId","data-v-713c12cf"]]),Kk={key:0,class:"escalation-actions","data-testid":"panel-escalation"},Qk={class:"escalation-actions__header"},Gk={class:"escalation-actions__status"},Jk={class:"escalation-actions__label"},Zk={class:"escalation-actions__buttons"},Xk=["disabled"],e_=["aria-expanded","disabled"],t_={class:"escalation-actions__facts"},a_={key:0},l_={key:1},n_={key:2},o_={class:"escalation-actions__field"},s_={class:"escalation-actions__field"},i_={key:0,class:"escalation-actions__error",role:"alert"},r_={class:"escalation-actions__buttons"},d_=["disabled"],c_={key:1,class:"escalation-actions__timeline","data-testid":"list-escalation-events"},u_=["data-testid"],m_={key:0},p_=e.defineComponent({__name:"EscalationActions",props:{task:{},busy:{type:Boolean}},emits:["acknowledge","snooze"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(!1),i=e.ref(4),r=e.ref(""),s=e.ref(null),k=e.computed(()=>l.task.escalation_events.slice(0,6)),d=e.computed(()=>l.task.current_escalation_tier!==null||k.value.length>0),E=e.computed(()=>l.task.current_escalation_tier!==null&&!l.task.escalation_acknowledged_at),m=e.computed(()=>l.task.current_escalation_tier!==null),f=e.computed(()=>l.task.current_escalation_label??"Escalation");function p(){if(r.value.trim().length<5){s.value="Add a reason with at least 5 characters.";return}s.value=null,o("snooze",{taskId:l.task.id,hours:Math.max(1,Math.round(i.value)),reason:r.value.trim()}),n.value=!1,r.value=""}function _(B){switch(B.event_type){case"tier_fired":return B.tier_label??"Tier fired";case"acknowledged":return"Acknowledged";case"snoozed":return"Snoozed";case"suppressed":return"Queued for business hours";case"resolved":return"Resolved";case"rerouted":return"Rerouted";default:return B.event_type}}return(B,u)=>d.value?(e.openBlock(),e.createElementBlock("section",Kk,[e.createElementVNode("header",Qk,[e.createElementVNode("div",null,[u[5]||(u[5]=e.createElementVNode("p",{class:"escalation-actions__eyebrow"},"Escalation",-1)),e.createElementVNode("div",Gk,[e.createVNode(Ye,{tier:t.task.current_escalation_tier,"acknowledged-at":t.task.escalation_acknowledged_at,"snoozed-until":t.task.escalation_snoozed_until},null,8,["tier","acknowledged-at","snoozed-until"]),e.createElementVNode("span",Jk,e.toDisplayString(f.value),1)])]),e.createElementVNode("div",Zk,[e.createElementVNode("button",{type:"button","data-testid":"btn-acknowledge-escalation",disabled:(t.busy??!1)||!E.value,onClick:u[0]||(u[0]=c=>o("acknowledge",t.task.id))}," Acknowledge ",8,Xk),e.createElementVNode("button",{type:"button","data-testid":"btn-snooze-escalation","aria-expanded":n.value,disabled:(t.busy??!1)||!m.value,onClick:u[1]||(u[1]=c=>n.value=!n.value)}," Snooze ",8,e_)])]),e.createElementVNode("dl",t_,[t.task.next_escalation_at?(e.openBlock(),e.createElementBlock("div",a_,[u[6]||(u[6]=e.createElementVNode("dt",null,"Next check",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ce)(t.task.next_escalation_at))+" · "+e.toDisplayString(e.unref(we)(t.task.next_escalation_at)),1)])):e.createCommentVNode("",!0),t.task.escalation_snoozed_until?(e.openBlock(),e.createElementBlock("div",l_,[u[7]||(u[7]=e.createElementVNode("dt",null,"Snoozed until",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ce)(t.task.escalation_snoozed_until)),1)])):e.createCommentVNode("",!0),t.task.escalation_acknowledged_at?(e.openBlock(),e.createElementBlock("div",n_,[u[8]||(u[8]=e.createElementVNode("dt",null,"Acknowledged",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ce)(t.task.escalation_acknowledged_at)),1)])):e.createCommentVNode("",!0)]),n.value?(e.openBlock(),e.createElementBlock("form",{key:0,class:"escalation-actions__snooze","data-testid":"form-snooze",onSubmit:e.withModifiers(p,["prevent"])},[e.createElementVNode("label",o_,[u[9]||(u[9]=e.createElementVNode("span",null,"Hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[2]||(u[2]=c=>i.value=c),type:"number","data-testid":"input-snooze-hours",min:"1",max:"168","aria-label":"Snooze duration in hours"},null,512),[[e.vModelText,i.value,void 0,{number:!0}]])]),e.createElementVNode("label",s_,[u[10]||(u[10]=e.createElementVNode("span",null,"Reason",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":u[3]||(u[3]=c=>r.value=c),rows:"3","data-testid":"input-snooze-reason",placeholder:"Explain why this alert can wait.","aria-label":"Snooze reason"},null,512),[[e.vModelText,r.value]])]),s.value?(e.openBlock(),e.createElementBlock("p",i_,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",r_,[e.createElementVNode("button",{type:"submit","data-testid":"btn-save-snooze",disabled:t.busy??!1},"Save snooze",8,d_),e.createElementVNode("button",{type:"button","data-testid":"btn-cancel-snooze",class:"ghost",onClick:u[4]||(u[4]=c=>n.value=!1)},"Cancel")])],32)):e.createCommentVNode("",!0),k.value.length>0?(e.openBlock(),e.createElementBlock("ol",c_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c.id,"data-testid":`item-escalation-event-${c.id}`},[e.createElementVNode("strong",null,e.toDisplayString(_(c)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ce)(c.created_at)),1),c.snooze_reason?(e.openBlock(),e.createElementBlock("small",m_,e.toDisplayString(c.snooze_reason),1)):e.createCommentVNode("",!0)],8,u_))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),pa=Q(p_,[["__scopeId","data-v-f16622bf"]]),k_={class:"task-checklist","data-testid":"panel-checklist"},__={class:"task-checklist__header"},f_={class:"task-checklist__meter","aria-hidden":"true"},v_={class:"task-checklist__items","data-testid":"list-checklist-items"},y_=["data-testid"],g_={class:"task-checklist__toggle"},b_=["checked","disabled","aria-label","onChange"],h_={class:"task-checklist__actions"},w_=["aria-label","disabled","onClick"],E_=["aria-label","disabled","onClick"],V_=["aria-label","disabled","onClick"],N_=["disabled"],$_=["disabled"],B_=e.defineComponent({__name:"TaskChecklist",props:{items:{},disabled:{type:Boolean}},emits:["toggle-item","add-item","remove-item","reorder-items"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(""),i=e.computed(()=>l.items.filter(d=>d.is_completed).length),r=e.computed(()=>l.items.length===0?0:Math.round(i.value/l.items.length*100));function s(){n.value.trim()&&(o("add-item",n.value.trim()),n.value="")}function k(d,E){const m=d+E;if(m<0||m>=l.items.length)return;const f=[...l.items],[p]=f.splice(d,1);p&&(f.splice(m,0,p),o("reorder-items",f.map(_=>_.id)))}return(d,E)=>(e.openBlock(),e.createElementBlock("section",k_,[e.createElementVNode("header",__,[e.createElementVNode("div",null,[E[1]||(E[1]=e.createElementVNode("h3",null,"Checklist",-1)),e.createElementVNode("p",null,e.toDisplayString(i.value)+" of "+e.toDisplayString(t.items.length)+" complete",1)]),e.createElementVNode("div",f_,[e.createElementVNode("div",{class:"task-checklist__meter-fill",style:e.normalizeStyle({width:`${r.value}%`})},null,4)])]),e.createElementVNode("ul",v_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(m,f)=>(e.openBlock(),e.createElementBlock("li",{key:m.id,"data-testid":`checklist-item-${m.id}`,class:"task-checklist__item"},[e.createElementVNode("label",g_,[e.createElementVNode("input",{type:"checkbox",checked:m.is_completed,disabled:t.disabled,"aria-label":m.title,onChange:p=>o("toggle-item",m.id)},null,40,b_),e.createElementVNode("span",{class:e.normalizeClass({done:m.is_completed})},e.toDisplayString(m.title),3)]),e.createElementVNode("div",h_,[e.createElementVNode("button",{type:"button","aria-label":`Move '${m.title}' up`,disabled:t.disabled||f===0,onClick:p=>k(f,-1)},"↑",8,w_),e.createElementVNode("button",{type:"button","aria-label":`Move '${m.title}' down`,disabled:t.disabled||f===t.items.length-1,onClick:p=>k(f,1)},"↓",8,E_),e.createElementVNode("button",{type:"button","aria-label":`Remove '${m.title}'`,disabled:t.disabled,onClick:p=>o("remove-item",m.id)},"Remove",8,V_)])],8,y_))),128))]),e.createElementVNode("form",{class:"task-checklist__composer","data-testid":"form-add-checklist-item",onSubmit:e.withModifiers(s,["prevent"])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[0]||(E[0]=m=>n.value=m),type:"text","data-testid":"input-checklist-item",disabled:t.disabled,placeholder:"Add a checklist item"},null,8,N_),[[e.vModelText,n.value]]),e.createElementVNode("button",{type:"submit","data-testid":"btn-add-checklist-item",disabled:t.disabled||!n.value.trim()},"Add",8,$_)],32)]))}}),ka=Q(B_,[["__scopeId","data-v-6732197b"]]),T_={class:"task-comments","data-testid":"panel-comments"},C_={class:"task-comments__list","data-testid":"list-comments"},S_=["data-testid"],D_={class:"task-comments__meta"},M_={class:"task-comments__visibility"},A_=["disabled"],z_={class:"task-comments__controls"},I_=["disabled"],x_=["disabled"],F_=e.defineComponent({__name:"TaskComments",props:{comments:{},disabled:{type:Boolean}},emits:["submit"],setup(t,{emit:a}){const l=t,o=a,n=e.ref(""),i=e.ref("team"),r=e.computed(()=>[...l.comments].sort((k,d)=>k.created_at.localeCompare(d.created_at)));function s(){n.value.trim()&&(o("submit",{content:n.value.trim(),visibility:i.value}),n.value="",i.value="team")}return(k,d)=>(e.openBlock(),e.createElementBlock("section",T_,[e.createElementVNode("ul",C_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,E=>(e.openBlock(),e.createElementBlock("li",{key:E.id,"data-testid":`item-comment-${E.id}`,class:"task-comments__item"},[e.createElementVNode("div",D_,[e.createElementVNode("strong",null,e.toDisplayString(E.author.name),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ce)(E.created_at)),1),e.createElementVNode("span",M_,e.toDisplayString(E.visibility),1)]),e.createElementVNode("p",null,e.toDisplayString(E.content),1)],8,S_))),128))]),e.createElementVNode("form",{class:"task-comments__composer","data-testid":"form-comment",onSubmit:e.withModifiers(s,["prevent"])},[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":d[0]||(d[0]=E=>n.value=E),rows:"4","data-testid":"input-comment",disabled:t.disabled,placeholder:"Add a comment (basic markdown supported)","aria-label":"Comment text"},null,8,A_),[[e.vModelText,n.value]]),e.createElementVNode("div",z_,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":d[1]||(d[1]=E=>i.value=E),"data-testid":"select-comment-visibility",disabled:t.disabled,"aria-label":"Comment visibility"},[...d[2]||(d[2]=[e.createElementVNode("option",{value:"team"},"Team",-1),e.createElementVNode("option",{value:"private"},"Private",-1)])],8,I_),[[e.vModelSelect,i.value]]),e.createElementVNode("button",{type:"submit","data-testid":"btn-post-comment",disabled:t.disabled||!n.value.trim()},"Post comment",8,x_)])],32)]))}}),_a=Q(F_,[["__scopeId","data-v-c0a9f671"]]),L_={class:"task-time-tracker","data-testid":"task-time-tracker"},U_={class:"task-time-tracker__header"},R_={"data-testid":"time-total"},W_={class:"task-time-tracker__actions"},P_=["disabled"],O_=["disabled"],H_=["disabled"],j_={key:0,class:"task-time-tracker__running","data-testid":"time-running-state"},q_={key:1,class:"task-time-tracker__notice","data-testid":"time-switch-notice"},Y_=["disabled"],K_=["disabled"],Q_={class:"task-time-tracker__manual-description"},G_=["disabled"],J_=["disabled"],Z_={class:"task-time-tracker__entries","data-testid":"list-time-entries"},X_=["data-testid"],ef={class:"task-time-tracker__entry-main"},tf={key:0},af={key:1,class:"task-time-tracker__entry-live"},lf=["disabled","data-testid","onClick"],nf={key:0,class:"task-time-tracker__empty"},of=e.defineComponent({__name:"TaskTimeTracker",props:{task:{},activeTimer:{},busy:{type:Boolean}},emits:["start-timer","stop-timer","add-manual-entry","delete-entry"],setup(t,{emit:a}){const l=t,o=a,n=e.ref("0"),i=e.ref("30"),r=e.ref(""),s=e.ref(!1),k=e.ref(Date.now());let d=null;const E=e.computed(()=>{var v;return l.task.time_entries.find(N=>N.is_running)??(((v=l.activeTimer)==null?void 0:v.task_id)===l.task.id&&l.activeTimer.is_running?l.activeTimer:null)}),m=e.computed(()=>l.activeTimer!==null&&l.activeTimer!==void 0&&l.activeTimer.task_id!==l.task.id&&l.activeTimer.is_running),f=e.computed(()=>l.task.time_entries.length===0?l.task.time_tracked_minutes??0:l.task.time_entries.reduce((v,N)=>{if(N.duration_minutes!==null)return v+N.duration_minutes;if(!N.started_at)return v;const I=new Date(N.started_at).getTime();return Number.isNaN(I)?v:v+Math.max(1,Math.floor((k.value-I)/6e4))},0)),p=e.computed(()=>{var N;if(!((N=E.value)!=null&&N.started_at))return 0;const v=new Date(E.value.started_at).getTime();return Number.isNaN(v)?0:Math.max(0,Math.floor((k.value-v)/1e3))}),_=e.computed(()=>[...l.task.time_entries].sort((v,N)=>{const I=N.started_at??N.created_at??"",Y=v.started_at??v.created_at??"";return I.localeCompare(Y)}));function B(v){var N;return(N=v.user)!=null&&N.name?v.user.name:v.user_id.trim()!==""?"Archived teammate":"Unknown teammate"}function u(){o("start-timer",l.task.id)}function c(){o("stop-timer",l.task.id)}function g(){const v=Number.parseInt(n.value,10),N=Number.parseInt(i.value,10),I=(Number.isNaN(v)?0:Math.max(0,v))*60+(Number.isNaN(N)?0:Math.max(0,N));I<=0||(o("add-manual-entry",{taskId:l.task.id,duration_minutes:I,description:r.value.trim()||null}),n.value="0",i.value="30",r.value="",s.value=!1)}function h(v){o("delete-entry",{taskId:l.task.id,entryId:v})}function x(v){if(v&&d===null){d=globalThis.setInterval(()=>{k.value=Date.now()},1e3);return}!v&&d!==null&&(globalThis.clearInterval(d),d=null)}function S(v){if(v<=0)return"0m";const N=Math.floor(v/60),I=v%60;return N===0?`${I}m`:I===0?`${N}h`:`${N}h ${I}m`}function V(v){const N=Math.floor(v/3600),I=Math.floor(v%3600/60),Y=v%60;return[N,I,Y].map(te=>String(te).padStart(2,"0")).join(":")}return e.watch(E,v=>{x(v!==null)},{immediate:!0}),e.onBeforeUnmount(()=>{x(!1)}),(v,N)=>(e.openBlock(),e.createElementBlock("section",L_,[e.createElementVNode("header",U_,[e.createElementVNode("div",null,[N[5]||(N[5]=e.createElementVNode("h3",null,"Time Tracking",-1)),e.createElementVNode("p",null,[N[4]||(N[4]=e.createTextVNode("Total logged: ",-1)),e.createElementVNode("strong",R_,e.toDisplayString(S(f.value)),1)])]),e.createElementVNode("div",W_,[E.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-stop-timer",disabled:t.busy??!1,onClick:c}," Stop timer ",8,P_)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"btn-start-timer",disabled:t.busy??!1,onClick:u},e.toDisplayString(m.value?"Switch timer here":"Start timer"),9,O_)),e.createElementVNode("button",{type:"button","data-testid":"btn-toggle-manual-entry",disabled:t.busy??!1,onClick:N[0]||(N[0]=I=>s.value=!s.value)},e.toDisplayString(s.value?"Close manual entry":"Add manual entry"),9,H_)])]),E.value?(e.openBlock(),e.createElementBlock("p",j_," Running now: "+e.toDisplayString(V(p.value)),1)):m.value?(e.openBlock(),e.createElementBlock("p",q_," Starting a timer here will stop your other active timer automatically. ")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("form",{key:2,class:"task-time-tracker__manual","data-testid":"form-manual-time-entry",onSubmit:e.withModifiers(g,["prevent"])},[e.createElementVNode("label",null,[N[6]||(N[6]=e.createElementVNode("span",null,"Hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N[1]||(N[1]=I=>n.value=I),type:"number",min:"0",step:"1",inputmode:"numeric","data-testid":"input-manual-hours",disabled:t.busy??!1},null,8,Y_),[[e.vModelText,n.value]])]),e.createElementVNode("label",null,[N[7]||(N[7]=e.createElementVNode("span",null,"Minutes",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N[2]||(N[2]=I=>i.value=I),type:"number",min:"0",max:"59",step:"1",inputmode:"numeric","data-testid":"input-manual-minutes",disabled:t.busy??!1},null,8,K_),[[e.vModelText,i.value]])]),e.createElementVNode("label",Q_,[N[8]||(N[8]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":N[3]||(N[3]=I=>r.value=I),type:"text",maxlength:"500","data-testid":"input-manual-description",placeholder:"Optional note",disabled:t.busy??!1},null,8,G_),[[e.vModelText,r.value]])]),e.createElementVNode("button",{type:"submit","data-testid":"btn-submit-manual-entry",disabled:t.busy??!1}," Save time entry ",8,J_)],32)):e.createCommentVNode("",!0),e.createElementVNode("ul",Z_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,I=>(e.openBlock(),e.createElementBlock("li",{key:I.id,class:"task-time-tracker__entry","data-testid":`time-entry-${I.id}`},[e.createElementVNode("div",ef,[e.createElementVNode("strong",null,e.toDisplayString(I.is_manual?"Manual entry":"Timer session"),1),e.createElementVNode("span",null,e.toDisplayString(B(I)),1),e.createElementVNode("span",null,e.toDisplayString(S(I.duration_minutes??0)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ce)(I.started_at)),1),I.description?(e.openBlock(),e.createElementBlock("span",tf,e.toDisplayString(I.description),1)):e.createCommentVNode("",!0),I.is_running?(e.openBlock(),e.createElementBlock("span",af,"Running")):e.createCommentVNode("",!0)]),I.is_running?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-time-tracker__delete",disabled:t.busy??!1,"data-testid":`btn-delete-time-entry-${I.id}`,onClick:Y=>h(I.id)}," Delete ",8,lf))],8,X_))),128)),_.value.length===0?(e.openBlock(),e.createElementBlock("li",nf," No time entries yet. ")):e.createCommentVNode("",!0)])]))}}),fa=Q(of,[["__scopeId","data-v-0fa2f9a3"]]),sf={class:"task-timeline","data-testid":"panel-activity"},rf={class:"task-timeline__list","data-testid":"list-activity"},df=["data-testid"],cf=e.defineComponent({__name:"TaskTimeline",props:{logs:{},canLoadMore:{type:Boolean}},emits:["load-more"],setup(t,{emit:a}){const l=a;return(o,n)=>(e.openBlock(),e.createElementBlock("section",sf,[e.createElementVNode("ol",rf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.logs,i=>{var r;return e.openBlock(),e.createElementBlock("li",{key:i.id,"data-testid":`item-activity-${i.id}`,class:"task-timeline__item"},[n[1]||(n[1]=e.createElementVNode("span",{class:"task-timeline__icon","aria-hidden":"true"},"•",-1)),e.createElementVNode("div",null,[e.createElementVNode("p",null,[e.createElementVNode("strong",null,e.toDisplayString(((r=i.user)==null?void 0:r.name)??"System"),1),e.createTextVNode(" "+e.toDisplayString(e.unref(Qt)(i)),1)]),e.createElementVNode("small",null,e.toDisplayString(e.unref(ce)(i.created_at)),1)])],8,df)}),128))]),t.canLoadMore?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-load-more-activity",class:"task-timeline__more",onClick:n[0]||(n[0]=i=>l("load-more"))}," Load more ")):e.createCommentVNode("",!0)]))}}),va=Q(cf,[["__scopeId","data-v-e1a451f2"]]),uf=["data-task-id"],mf={class:"task-detail__header","data-testid":"task-detail-header"},pf={class:"task-detail__identity"},kf={class:"task-detail__number"},_f={class:"task-detail__badges"},ff={class:"task-detail__actions"},vf=["disabled"],yf=["disabled"],gf=["disabled"],bf=["disabled"],hf=["disabled"],wf={class:"task-detail__layout"},Ef={class:"task-detail__main"},Vf={class:"task-detail__description","data-testid":"task-description"},Nf={class:"task-detail__tabs","aria-label":"Task detail sections"},$f=["aria-pressed"],Bf=["aria-pressed"],Tf=["aria-pressed"],Cf=["aria-pressed"],Sf={key:2,class:"task-detail__relations","data-testid":"panel-relations"},Df={"data-testid":"list-relations"},Mf=["data-testid"],Af={key:0},zf={class:"task-detail__sidebar","data-testid":"task-sidebar"},If={class:"task-detail__deadline-status"},xf={key:0},Ff=e.defineComponent({__name:"TaskDetail",props:{task:{},activeTimer:{},busy:{type:Boolean}},emits:["complete","reopen","cancel","edit","delete","acknowledge-escalation","snooze-escalation","submit-comment","add-checklist-item","toggle-checklist-item","remove-checklist-item","reorder-checklist-items","start-timer","stop-timer","add-manual-time-entry","delete-time-entry"],setup(t,{emit:a}){const l=t,o=a,n=e.ref("comments"),i=e.computed(()=>{var r;return((r=l.task)==null?void 0:r.relations)??[]});return(r,s)=>{var k;return t.task?(e.openBlock(),e.createElementBlock("section",{key:0,class:"task-detail","data-task-id":t.task.id},[e.createElementVNode("header",mf,[e.createElementVNode("div",pf,[e.createElementVNode("span",kf,e.toDisplayString(t.task.display_number_formatted),1),e.createElementVNode("h2",null,e.toDisplayString(t.task.title),1),e.createElementVNode("div",_f,[e.createVNode(ye,{task:t.task},null,8,["task"]),e.createVNode(Ye,{tier:t.task.current_escalation_tier??null,"acknowledged-at":t.task.escalation_acknowledged_at??null,"snoozed-until":t.task.escalation_snoozed_until??null},null,8,["tier","acknowledged-at","snoozed-until"]),e.createVNode(xe,{status:t.task.status,"data-testid":"status-badge"},null,8,["status"]),e.createVNode(Ie,{priority:t.task.priority,"data-testid":"priority-badge"},null,8,["priority"])])]),e.createElementVNode("div",ff,[e.createElementVNode("button",{type:"button","data-testid":"btn-complete-task",disabled:t.busy??!1,onClick:s[0]||(s[0]=d=>o("complete",t.task.id))},"Complete",8,vf),e.createElementVNode("button",{type:"button","data-testid":"btn-reopen-task",disabled:t.busy??!1,onClick:s[1]||(s[1]=d=>o("reopen",t.task.id))},"Reopen",8,yf),e.createElementVNode("button",{type:"button","data-testid":"btn-cancel-task",disabled:t.busy??!1,onClick:s[2]||(s[2]=d=>o("cancel",t.task.id))},"Cancel",8,gf),e.createElementVNode("button",{type:"button","data-testid":"btn-edit-task",disabled:t.busy??!1,onClick:s[3]||(s[3]=d=>o("edit",t.task.id))},"Edit",8,bf),e.createElementVNode("button",{type:"button","data-testid":"btn-delete-task",class:"danger",disabled:t.busy??!1,onClick:s[4]||(s[4]=d=>o("delete",t.task.id))},"Delete",8,hf)])]),e.createElementVNode("div",wf,[e.createElementVNode("article",Ef,[e.createVNode(pa,{task:t.task,busy:t.busy??!1,onAcknowledge:s[5]||(s[5]=d=>o("acknowledge-escalation",d)),onSnooze:s[6]||(s[6]=d=>o("snooze-escalation",d))},null,8,["task","busy"]),e.createElementVNode("section",Vf,[s[20]||(s[20]=e.createElementVNode("h3",null,"Description",-1)),e.createElementVNode("p",null,e.toDisplayString(t.task.description||"No description yet."),1)]),e.createVNode(fa,{task:t.task,"active-timer":t.activeTimer??null,busy:t.busy??!1,onStartTimer:s[7]||(s[7]=d=>o("start-timer",d)),onStopTimer:s[8]||(s[8]=d=>o("stop-timer",d)),onAddManualEntry:s[9]||(s[9]=d=>o("add-manual-time-entry",d)),onDeleteEntry:s[10]||(s[10]=d=>o("delete-time-entry",d))},null,8,["task","active-timer","busy"]),e.createElementVNode("nav",Nf,[e.createElementVNode("button",{type:"button","data-testid":"tab-comments",class:e.normalizeClass({active:n.value==="comments"}),"aria-pressed":n.value==="comments",onClick:s[11]||(s[11]=d=>n.value="comments")},"Comments",10,$f),e.createElementVNode("button",{type:"button","data-testid":"tab-checklist",class:e.normalizeClass({active:n.value==="checklist"}),"aria-pressed":n.value==="checklist",onClick:s[12]||(s[12]=d=>n.value="checklist")},"Checklist",10,Bf),e.createElementVNode("button",{type:"button","data-testid":"tab-relations",class:e.normalizeClass({active:n.value==="relations"}),"aria-pressed":n.value==="relations",onClick:s[13]||(s[13]=d=>n.value="relations")},"Relations",10,Tf),e.createElementVNode("button",{type:"button","data-testid":"tab-activity",class:e.normalizeClass({active:n.value==="activity"}),"aria-pressed":n.value==="activity",onClick:s[14]||(s[14]=d=>n.value="activity")},"Activity",10,Cf)]),n.value==="comments"?(e.openBlock(),e.createBlock(_a,{key:0,comments:t.task.comments,disabled:t.busy??!1,onSubmit:s[15]||(s[15]=d=>o("submit-comment",d))},null,8,["comments","disabled"])):n.value==="checklist"?(e.openBlock(),e.createBlock(ka,{key:1,items:t.task.checklist_items,disabled:t.busy??!1,onToggleItem:s[16]||(s[16]=d=>o("toggle-checklist-item",d)),onAddItem:s[17]||(s[17]=d=>o("add-checklist-item",d)),onRemoveItem:s[18]||(s[18]=d=>o("remove-checklist-item",d)),onReorderItems:s[19]||(s[19]=d=>o("reorder-checklist-items",d))},null,8,["items","disabled"])):n.value==="relations"?(e.openBlock(),e.createElementBlock("section",Sf,[e.createElementVNode("ul",Df,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("li",{key:d.id,"data-testid":`item-relation-${d.id}`},[e.createElementVNode("strong",null,e.toDisplayString(d.type),1),d.related_task?(e.openBlock(),e.createElementBlock("span",Af,e.toDisplayString(d.related_task.display_number_formatted)+" · "+e.toDisplayString(d.related_task.title),1)):e.createCommentVNode("",!0)],8,Mf))),128))])])):(e.openBlock(),e.createBlock(va,{key:3,logs:t.task.activity_logs},null,8,["logs"]))]),e.createElementVNode("aside",zf,[e.createElementVNode("dl",null,[e.createElementVNode("div",null,[s[21]||(s[21]=e.createElementVNode("dt",null,"Assignee",-1)),e.createElementVNode("dd",null,e.toDisplayString(((k=t.task.primary_assignee)==null?void 0:k.name)??"Unassigned"),1)]),e.createElementVNode("div",null,[s[22]||(s[22]=e.createElementVNode("dt",null,"Deadline",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.due_at?e.unref(ce)(t.task.due_at):"No deadline set"),1)]),e.createElementVNode("div",null,[s[23]||(s[23]=e.createElementVNode("dt",null,"Deadline status",-1)),e.createElementVNode("dd",If,[e.createVNode(ye,{task:t.task,"show-relative":""},null,8,["task"])])]),t.task.next_escalation_at?(e.openBlock(),e.createElementBlock("div",xf,[s[24]||(s[24]=e.createElementVNode("dt",null,"Next visibility step",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ce)(t.task.next_escalation_at)),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[s[25]||(s[25]=e.createElementVNode("dt",null,"Source",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.source),1)]),e.createElementVNode("div",null,[s[26]||(s[26]=e.createElementVNode("dt",null,"Linked entity",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(Kt)(t.task.taskable_type,t.task.taskable_id)),1)]),e.createElementVNode("div",null,[s[27]||(s[27]=e.createElementVNode("dt",null,"Tags",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.tags.map(d=>d.name).join(", ")||"No tags"),1)])])])])],8,uf)):e.createCommentVNode("",!0)}}}),ya=Q(Ff,[["__scopeId","data-v-d3593bbf"]]),Lf={class:"task-form__grid"},Uf={class:"task-form__field task-form__field--wide"},Rf=["disabled"],Wf={key:0,class:"task-form__field"},Pf=["disabled"],Of=["value"],Hf={class:"task-form__field"},jf=["disabled"],qf={class:"task-form__field"},Yf={class:"task-form__field task-form__field--wide"},Kf=["disabled"],Qf={class:"task-form__field task-form__field--wide"},Gf=["disabled"],Jf={class:"task-form__checklist","data-testid":"panel-form-checklist"},Zf=["data-testid"],Xf=["onUpdate:modelValue","data-testid","disabled","placeholder"],ev=["data-testid","aria-label","onClick"],tv={class:"task-form__actions"},av=["disabled"],lv=e.defineComponent({__name:"TaskForm",props:{task:{},templates:{},entityContext:{},submitting:{type:Boolean},mode:{}},emits:["submit","cancel","template-change"],setup(t,{emit:a}){const l=t,o=a,n=e.reactive({title:"",description:"",templateId:"",priority:"none",primary_assignee_id:"",due_at:"",tags:"",checklist:[]}),i=e.computed(()=>l.templates??[]),r=e.computed(()=>l.mode??"create"),s=e.computed(()=>r.value==="edit"?"Save task":"Create task");function k(u){return u.flatMap(c=>{const g=k(c.children);return c.type==="checklist"?[c.title,...g]:g})}function d(){var u,c,g,h,x,S,V,v,N,I;n.title=((u=l.task)==null?void 0:u.title)??"",n.description=((c=l.task)==null?void 0:c.description)??"",n.priority=((g=l.task)==null?void 0:g.priority)??"none",n.primary_assignee_id=String(((x=(h=l.task)==null?void 0:h.primary_assignee)==null?void 0:x.id)??""),n.due_at=((S=l.task)==null?void 0:S.due_at)??"",n.tags=((v=(V=l.task)==null?void 0:V.tags)==null?void 0:v.map(Y=>Y.name).join(", "))??"",n.checklist=((I=(N=l.task)==null?void 0:N.checklist_items)==null?void 0:I.map(Y=>Y.title))??[]}e.watch(()=>l.task,()=>{d()},{immediate:!0});function E(u){if(n.templateId=u,o("template-change",u||null),!u||r.value==="edit")return;const c=i.value.find(g=>g.id===u);c&&(n.title=c.default_title,n.description=c.default_description??"",n.priority=c.default_priority,n.tags=(c.tags??[]).join(", "),n.checklist=c.items?k(c.items):[])}function m(){n.checklist.push("")}function f(u){n.checklist.splice(u,1)}function p(u){const c=u.split(",").map(g=>g.trim()).filter(Boolean);return c.length>0?c:void 0}function _(){const u=n.checklist.map((c,g)=>({title:c.trim(),position:g})).filter(c=>c.title.length>0);return u.length>0?u:void 0}function B(){var g,h;if(!n.title.trim())return;const u=p(n.tags),c=_();o("submit",{title:n.title.trim(),description:n.description.trim()||null,priority:n.priority,primary_assignee_id:n.primary_assignee_id||null,due_at:n.due_at||null,taskable_type:((g=l.entityContext)==null?void 0:g.type)??null,taskable_id:((h=l.entityContext)==null?void 0:h.id)??null,...u?{tags:u}:{},...c?{checklist_items:c}:{}})}return(u,c)=>{var g;return e.openBlock(),e.createElementBlock("form",{class:"task-form","data-testid":"form-task",onSubmit:e.withModifiers(B,["prevent"])},[e.createElementVNode("div",Lf,[e.createElementVNode("label",Uf,[c[9]||(c[9]=e.createElementVNode("span",null,"Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=h=>n.title=h),type:"text","data-testid":"input-task-title",disabled:t.submitting,required:""},null,8,Rf),[[e.vModelText,n.title]])]),r.value==="create"?(e.openBlock(),e.createElementBlock("label",Wf,[c[11]||(c[11]=e.createElementVNode("span",null,"Template",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[1]||(c[1]=h=>n.templateId=h),"data-testid":"select-task-template",disabled:t.submitting,onChange:c[2]||(c[2]=h=>E(n.templateId))},[c[10]||(c[10]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,h=>(e.openBlock(),e.createElementBlock("option",{key:h.id,value:h.id},e.toDisplayString(h.name),9,Of))),128))],40,Pf),[[e.vModelSelect,n.templateId]])])):e.createCommentVNode("",!0),e.createElementVNode("label",Hf,[c[13]||(c[13]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[3]||(c[3]=h=>n.priority=h),"data-testid":"select-task-priority",disabled:t.submitting},[...c[12]||(c[12]=[e.createStaticVNode('<option value="none" data-v-b2880e56>None</option><option value="low" data-v-b2880e56>Low</option><option value="medium" data-v-b2880e56>Medium</option><option value="high" data-v-b2880e56>High</option><option value="urgent" data-v-b2880e56>Urgent</option><option value="critical" data-v-b2880e56>Critical</option>',6)])],8,jf),[[e.vModelSelect,n.priority]])]),e.createElementVNode("label",qf,[c[14]||(c[14]=e.createElementVNode("span",null,"Assignee",-1)),e.createVNode(ge,{modelValue:n.primary_assignee_id,"onUpdate:modelValue":c[4]||(c[4]=h=>n.primary_assignee_id=h),"selected-user":((g=t.task)==null?void 0:g.primary_assignee)??null,"input-test-id":"input-task-assignee","aria-label":"Assignee",disabled:t.submitting??!1,placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","selected-user","disabled"])]),e.createVNode(Ke,{modelValue:n.due_at,"onUpdate:modelValue":c[5]||(c[5]=h=>n.due_at=h),class:"task-form__field task-form__field--wide",disabled:t.submitting??!1},null,8,["modelValue","disabled"]),e.createElementVNode("label",Yf,[c[15]||(c[15]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[6]||(c[6]=h=>n.tags=h),type:"text","data-testid":"input-task-tags",disabled:t.submitting,placeholder:"ops, warehouse"},null,8,Kf),[[e.vModelText,n.tags]])]),e.createElementVNode("label",Qf,[c[16]||(c[16]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[7]||(c[7]=h=>n.description=h),rows:"5","data-testid":"input-task-description",disabled:t.submitting},null,8,Gf),[[e.vModelText,n.description]])])]),e.createElementVNode("section",Jf,[e.createElementVNode("div",{class:"task-form__checklist-header"},[c[17]||(c[17]=e.createElementVNode("h3",null,"Checklist items",-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-add-checklist-row",onClick:m},"Add item")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.checklist,(h,x)=>(e.openBlock(),e.createElementBlock("div",{key:`${x}-${h}`,"data-testid":`checklist-row-${x}`,class:"task-form__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S=>n.checklist[x]=S,type:"text","data-testid":`input-checklist-row-${x}`,disabled:t.submitting,placeholder:`Checklist item ${x+1}`},null,8,Xf),[[e.vModelText,n.checklist[x]]]),e.createElementVNode("button",{type:"button","data-testid":`btn-remove-checklist-row-${x}`,"aria-label":`Remove checklist item ${x+1}`,onClick:S=>f(x)},"Remove",8,ev)],8,Zf))),128))]),e.createElementVNode("footer",tv,[e.createElementVNode("button",{type:"button","data-testid":"btn-cancel-task-form",class:"secondary",onClick:c[8]||(c[8]=h=>o("cancel"))},"Cancel"),e.createElementVNode("button",{type:"submit","data-testid":"btn-submit-task-form",disabled:t.submitting||!n.title.trim()},e.toDisplayString(s.value),9,av)])],32)}}}),nv=Q(lv,[["__scopeId","data-v-b2880e56"]]),ov=["aria-label"],sv={class:"task-confirm-dialog__panel"},iv={class:"task-confirm-dialog__header"},rv={class:"task-confirm-dialog__actions"},dv=["disabled"],cv=["disabled"],uv=e.defineComponent({__name:"TaskConfirmDialog",props:{show:{type:Boolean},title:{},message:{},confirmText:{default:"Confirm"},cancelText:{default:"Cancel"},busy:{type:Boolean,default:!1}},emits:["confirm","cancel","update:show"],setup(t,{emit:a}){const l=t,o=a;function n(){l.busy||(o("update:show",!1),o("cancel"))}function i(){o("confirm")}return(r,s)=>t.show?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-confirm-dialog","data-testid":"task-confirm-dialog",role:"dialog","aria-modal":"true","aria-label":t.title},[e.createElementVNode("div",{class:"task-confirm-dialog__backdrop",onClick:n}),e.createElementVNode("section",sv,[e.createElementVNode("header",iv,[e.createElementVNode("h2",null,e.toDisplayString(t.title),1),e.createElementVNode("p",null,e.toDisplayString(t.message),1)]),e.createElementVNode("footer",rv,[e.createElementVNode("button",{type:"button",class:"task-confirm-dialog__button","data-testid":"btn-task-confirm-cancel",disabled:t.busy,onClick:n},e.toDisplayString(t.cancelText),9,dv),e.createElementVNode("button",{type:"button",class:"task-confirm-dialog__button task-confirm-dialog__button--danger","data-testid":"btn-task-confirm-accept",disabled:t.busy,onClick:i},e.toDisplayString(t.confirmText),9,cv)])])],8,ov)):e.createCommentVNode("",!0)}}),_t=Q(uv,[["__scopeId","data-v-6a8cc864"]]),mv={class:"task-detail-page","data-testid":"page-task-detail"},pv={class:"task-detail-page__header"},kv={key:0,class:"task-detail-page__loading","data-testid":"status-task-loading"},_v={key:1,class:"task-detail-page__error",role:"alert","data-testid":"status-task-error"},fv=e.defineComponent({__name:"TaskDetailPage",props:{taskId:{}},emits:["navigate-back","task-deleted","edit-task"],setup(t,{emit:a}){const l=t,o=a,n=Ot(e.toRef(l,"taskId")),i=e.ref(!1),r=e.ref(null);async function s(F){i.value=!0;try{await F()}finally{i.value=!1}}function k(F){s(()=>n.completeTask(F))}function d(F){s(()=>n.reopenTask(F))}function E(F){s(()=>n.cancelTask(F))}function m(F,K,G){r.value={title:F,message:K,action:G}}async function f(){if(r.value!==null){i.value=!0;try{await r.value.action()}finally{i.value=!1,r.value=null}}}function p(){r.value=null}function _(F){var G;const K=((G=n.task.value)==null?void 0:G.title)??"this task";m("Delete task?",`Delete "${K}"? This cannot be undone.`,async()=>{await n.deleteTask(F),o("task-deleted",F)})}function B(F){o("edit-task",F)}function u(F){s(()=>n.addComment(F))}function c(F){s(()=>n.addChecklistItem(F))}function g(F){n.toggleChecklistItem(F)}function h(F){var ee;const K=(ee=n.task.value)==null?void 0:ee.checklist_items.find(H=>H.id===F),G=(K==null?void 0:K.title)??"this checklist item";m("Remove checklist item?",`Remove "${G}" from this task?`,async()=>{await n.removeChecklistItem(F)})}function x(){s(()=>n.acknowledgeEscalation())}function S(F){s(()=>n.snoozeEscalation(F))}function V(F){}function v(F){s(()=>n.startTimer(F))}function N(F){s(()=>n.stopTimer(F))}function I(F){s(()=>n.addManualTimeEntry(F,F.taskId))}function Y(F){m("Delete time entry?","Delete this logged time entry? The recorded time will be removed from the task.",async()=>{await n.deleteTimeEntry(F.entryId,F.taskId)})}function te(){n.loadTask(l.taskId)}return(F,K)=>{var G,ee;return e.openBlock(),e.createElementBlock("div",mv,[e.createElementVNode("div",pv,[e.createElementVNode("button",{type:"button",class:"task-detail-page__back","data-testid":"btn-back-to-tasks",onClick:K[0]||(K[0]=H=>o("navigate-back"))}," ← Back to Tasks ")]),e.unref(n).loading.value?(e.openBlock(),e.createElementBlock("div",kv," Loading task... ")):e.unref(n).error.value?(e.openBlock(),e.createElementBlock("div",_v,[e.createElementVNode("p",null,e.toDisplayString(e.unref(n).error.value),1),e.createElementVNode("button",{type:"button","data-testid":"btn-retry-load",onClick:te},"Retry")])):e.unref(n).task.value?(e.openBlock(),e.createBlock(ya,{key:2,task:e.unref(n).task.value,"active-timer":e.unref(n).activeTimer.value,busy:i.value,onComplete:k,onReopen:d,onCancel:E,onDelete:_,onEdit:B,onSubmitComment:u,onAddChecklistItem:c,onToggleChecklistItem:g,onRemoveChecklistItem:h,onReorderChecklistItems:V,onStartTimer:v,onStopTimer:N,onAddManualTimeEntry:I,onDeleteTimeEntry:Y,onAcknowledgeEscalation:x,onSnoozeEscalation:S},null,8,["task","active-timer","busy"])):e.createCommentVNode("",!0),e.createVNode(_t,{show:r.value!==null,title:((G=r.value)==null?void 0:G.title)??"Confirm action",message:((ee=r.value)==null?void 0:ee.message)??"","confirm-text":"Delete",busy:i.value,"onUpdate:show":K[1]||(K[1]=H=>{H||p()}),onCancel:p,onConfirm:f},null,8,["show","title","message","busy"])])}}}),vv=Q(fv,[["__scopeId","data-v-0e38bf7f"]]),yv={class:"task-list-page","data-testid":"page-task-list"},gv=e.defineComponent({__name:"TaskListPage",props:{entityContext:{}},emits:["navigate-to-task"],setup(t,{emit:a}){const l=a,o=ze(),{filters:n,setFilters:i}=Ht(),r=jt(),s=e.ref(!1),k=e.ref(!1),d=e.ref(null),E=e.computed(()=>{var F;return((F=d.value)==null?void 0:F.kind)==="saved-filter"?"Delete saved filter?":"Delete selected tasks?"}),m=e.computed(()=>{var K,G,ee;if(((K=d.value)==null?void 0:K.kind)==="saved-filter")return`Delete "${d.value.filterName??"this saved filter"}"? This saved view will be removed.`;const F=((ee=(G=d.value)==null?void 0:G.payload)==null?void 0:ee.taskIds.length)??0;return`Delete ${F} selected task${F===1?"":"s"}? This action cannot be undone.`});function f(F,K="task-engine-export.csv"){if(typeof window>"u")return;const G=new Blob([F],{type:"text/csv;charset=utf-8"}),ee=window.URL.createObjectURL(G),H=document.createElement("a");H.href=ee,H.download=K,H.click(),window.URL.revokeObjectURL(ee)}async function p(){await o.fetchTasks(n.value)}function _(F){i(F),p()}function B(F){i({...n.value,page:F}),p()}function u(F){l("navigate-to-task",F)}function c(){s.value=!0}async function g(F){k.value=!0;try{await o.createTask(F),s.value=!1,await p()}finally{k.value=!1}}async function h(F){k.value=!0;try{await o.instantiateTemplate(F.templateId,F.payload),s.value=!1,await p()}finally{k.value=!1}}async function x(){const F=prompt("Filter name:");F&&await r.saveCurrentFilter({name:F})}async function S(F){const K=r.savedFilters.value.find(G=>G.id===F);K&&(r.applySavedFilter(K),await p())}async function V(F){const K=r.savedFilters.value.find(G=>G.id===F);d.value={kind:"saved-filter",filterId:F,filterName:K==null?void 0:K.name}}async function v(F){if(F.action==="delete"){d.value={kind:"bulk-delete",payload:F};return}await o.runBulkAction(F.taskIds,F.action,F.params),await p()}function N(){d.value=null}async function I(){if(d.value!==null){if(d.value.kind==="saved-filter"&&d.value.filterId){await r.deleteSavedFilter(d.value.filterId),d.value=null;return}d.value.kind==="bulk-delete"&&d.value.payload&&(await o.runBulkAction(d.value.payload.taskIds,d.value.payload.action,d.value.payload.params),d.value=null,await p())}}async function Y(){const F=await o.exportTasks(n.value);f(F)}async function te(F){await o.importTasks(F),await p()}return e.onMounted(async()=>{await Promise.all([p(),r.loadSavedFilters()])}),(F,K)=>(e.openBlock(),e.createElementBlock("div",yv,[e.createVNode(ma,{busy:e.unref(o).loading,importing:e.unref(o).importLoading,exporting:e.unref(o).exportLoading,result:e.unref(o).importResult,onExport:Y,onImport:te},null,8,["busy","importing","exporting","result"]),s.value?(e.openBlock(),e.createBlock(kt,{key:0,busy:k.value,"entity-context":t.entityContext??null,"data-testid":"panel-task-composer",onSubmit:g,onInstantiateTemplate:h,onCancel:K[0]||(K[0]=G=>s.value=!1)},null,8,["busy","entity-context"])):e.createCommentVNode("",!0),e.createVNode(ca,{tasks:e.unref(o).tasks,filters:e.unref(n),pagination:e.unref(o).pagination,loading:e.unref(o).loading,"saved-filters":e.unref(r).savedFilters.value,"active-saved-filter-id":e.unref(r).activeSavedFilterId.value,"bulk-busy":e.unref(o).bulkLoading,"bulk-result":e.unref(o).bulkResult,onSelectTask:u,"onUpdate:filters":_,onPageChange:B,onQuickCreate:c,onSaveFilter:x,onApplySavedFilter:S,onDeleteSavedFilter:V,onBulkAction:v},null,8,["tasks","filters","pagination","loading","saved-filters","active-saved-filter-id","bulk-busy","bulk-result"]),e.createVNode(_t,{show:d.value!==null,title:E.value,message:m.value,"confirm-text":"Delete",busy:e.unref(o).bulkLoading||e.unref(o).savedFiltersLoading,"onUpdate:show":K[1]||(K[1]=G=>{G||N()}),onCancel:N,onConfirm:I},null,8,["show","title","message","busy"])]))}}),bv=Q(gv,[["__scopeId","data-v-49883e84"]]),hv={class:"task-dashboard-page","data-testid":"page-task-dashboard"},wv=e.defineComponent({__name:"TaskDashboardPage",props:{userId:{},echo:{},autoConnect:{type:Boolean}},emits:["navigate-to-task"],setup(t,{emit:a}){const l=a;function o(n){l("navigate-to-task",n)}return(n,i)=>(e.openBlock(),e.createElementBlock("div",hv,[e.createVNode(na,{"user-id":t.userId,echo:t.echo,"auto-connect":t.autoConnect??!0,onSelectTask:o},null,8,["user-id","echo","auto-connect"])]))}}),Ev=Q(wv,[["__scopeId","data-v-3d67a330"]]),Vv={class:"task-recurring-page","data-testid":"page-task-recurring"},Nv=e.defineComponent({__name:"TaskRecurringPage",props:{entityTypeOptions:{}},emits:["navigate-to-task"],setup(t,{emit:a}){const l=t,o=a,n=qt(),i=e.ref(!1),r=e.ref(null),s=e.ref(""),k=e.ref(!1),d=e.ref(null),E=e.computed(()=>{var V;return d.value===null?"":`Delete "${d.value.title??((V=d.value.task_template)==null?void 0:V.name)??"this recurring template"}"? Future scheduled tasks will stop generating.`});function m(){r.value=null,i.value=!0}function f(S){const V=n.templates.value.find(v=>v.id===S);r.value=V??null,i.value=!0}function p(){i.value=!1,r.value=null}async function _(S){r.value?await n.updateTemplate(r.value.id,S):await n.createTemplate(S),n.error.value||p()}async function B(S){await n.pauseTemplate(S)}async function u(S){await n.resumeTemplate(S)}function c(S){d.value=n.templates.value.find(V=>V.id===S)??null}async function g(){d.value!==null&&(await n.deleteTemplate(d.value.id),d.value=null)}function h(){d.value=null}async function x(S){const V=await n.generateFromTemplate(S);V&&o("navigate-to-task",V.id)}return e.onMounted(()=>{n.loadTemplates()}),(S,V)=>(e.openBlock(),e.createElementBlock("div",Vv,[e.createElementVNode("header",{class:"task-recurring-page__header"},[V[3]||(V[3]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Recurring Tasks"),e.createElementVNode("p",null,"Manage recurring task schedules")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-create-recurring",onClick:m}," Create recurring task ")]),i.value?(e.openBlock(),e.createBlock(ia,e.mergeProps({key:0},l.entityTypeOptions?{entityTypeOptions:l.entityTypeOptions}:{},{recurring:r.value,submitting:e.unref(n).saving.value,mode:r.value?"edit":"create",onSubmit:_,onCancel:p}),null,16,["recurring","submitting","mode"])):e.createCommentVNode("",!0),e.createVNode(ra,{templates:e.unref(n).templates.value,loading:e.unref(n).loading.value,search:s.value,"include-inactive":k.value,onEdit:f,onPause:B,onResume:u,onRemove:c,onGenerate:x,"onUpdate:search":V[0]||(V[0]=v=>s.value=v),"onUpdate:includeInactive":V[1]||(V[1]=v=>k.value=v)},null,8,["templates","loading","search","include-inactive"]),e.createVNode(_t,{show:d.value!==null,title:"Delete recurring template?",message:E.value,"confirm-text":"Delete",busy:e.unref(n).saving.value,"onUpdate:show":V[2]||(V[2]=v=>{v||h()}),onCancel:h,onConfirm:g},null,8,["show","message","busy"])]))}}),$v=Q(Nv,[["__scopeId","data-v-7e8383a0"]]);exports.EscalationActions=pa;exports.EscalationBadge=Ye;exports.MyStatsWidget=Yt;exports.MyTasksToday=Zt;exports.OverdueTracker=Xt;exports.RecurringTemplateForm=ia;exports.RecurringTemplateList=ra;exports.TaskAssigneePicker=ge;exports.TaskBoardView=ns;exports.TaskBulkActionBar=oa;exports.TaskCalendarView=Zs;exports.TaskCard=pt;exports.TaskChecklist=ka;exports.TaskComments=_a;exports.TaskComposer=kt;exports.TaskCreateWizard=Vk;exports.TaskDashboard=na;exports.TaskDashboardPage=Ev;exports.TaskDeadlineBadge=ye;exports.TaskDeadlineField=Ke;exports.TaskDetailPage=vv;exports.TaskDetailView=ya;exports.TaskEntityWidget=mp;exports.TaskFilterBar=sa;exports.TaskForm=nv;exports.TaskHealthAlerts=ea;exports.TaskImportExportPanel=ma;exports.TaskListPage=bv;exports.TaskListView=ca;exports.TaskNotificationToast=Rk;exports.TaskPriorityIcon=Ie;exports.TaskQuickCreate=Yk;exports.TaskRecurringPage=$v;exports.TaskRolePicker=ua;exports.TaskSavedFilterTabs=da;exports.TaskStatusBadge=xe;exports.TaskTimeTracker=fa;exports.TaskTimeline=va;exports.TaskWorkloadPanel=Vo;exports.TeamActivityFeed=ta;exports.UpcomingThisWeek=aa;exports.WidgetGrid=la;exports.WorkflowForm=bu;exports.WorkflowList=Wu;exports.WorkflowLogs=am;exports.createTaskApi=it;exports.getTaskApi=M;exports.resetTaskApi=qa;exports.setTaskApi=ja;exports.taskApi=Pe;exports.useRecurringTemplates=qt;exports.useTaskDashboard=Pt;exports.useTaskDetail=Ot;exports.useTaskFilters=Ht;exports.useTaskListStore=dt;exports.useTaskNotificationFeed=ut;exports.useTaskPresence=yl;exports.useTaskSavedFilters=jt;exports.useTaskStore=ze;exports.useTaskWebSocket=Wt;exports.useTaskWorkflowStore=Dt;exports.useTaskWorkflows=gl;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Sa=require("axios"),st=require("pinia"),e=require("vue"),Da="/api/task-engine/v1";function we(t,a){return a===void 0?{}:{[t]:a}}function Ma(t){return typeof t=="object"&&t!==null&&"id"in t&&"name"in t}function se(t,a){if(t==null||t==="")return null;if(Ma(t))return t;if(typeof t=="string"||typeof t=="number")return{id:t,name:a??String(t)};if(typeof t=="object"&&t!==null){const n=t,o=n.id??n.user_id,l=n.name??n.email??o,i=typeof n.avatar_url=="string"?n.avatar_url:void 0;if(o!==void 0&&l!==void 0)return{id:o,name:String(l),...we("avatar_url",i)}}return null}function Et(t){return{id:t.id,name:t.name,color:t.color,...we("created_at",t.created_at),...we("updated_at",t.updated_at)}}function Vt(t){return t==null?null:{open_tasks:Number(t.open_tasks??0),overdue_tasks:Number(t.overdue_tasks??0),blocked_tasks:Number(t.blocked_tasks??0),urgent_tasks:Number(t.urgent_tasks??0),critical_tasks:Number(t.critical_tasks??0),workload_score:Number(t.workload_score??0),workload_status:t.workload_status??"light",workload_summary:typeof t.workload_summary=="string"&&t.workload_summary.trim()!==""?t.workload_summary:"No active tasks"}}function Aa(t){const a=typeof t.position=="string"&&t.position.trim()!==""?t.position.trim():null,n=typeof t.department=="string"&&t.department.trim()!==""?t.department.trim():null,o=typeof t.subtitle=="string"&&t.subtitle.trim()!==""?t.subtitle.trim():a??n??(typeof t.email=="string"&&t.email.trim()!==""?t.email.trim():null),l=typeof t.label=="string"&&t.label.trim()!==""?t.label.trim():o===null?t.name:`${t.name} - ${o}`;return{id:String(t.id),name:t.name,email:typeof t.email=="string"&&t.email.trim()!==""?t.email.trim():null,label:l,subtitle:o,department:n,position:a,role_names:Array.isArray(t.role_names)?t.role_names.filter(i=>typeof i=="string"&&i.trim()!==""):[],workload:Vt(t.workload)}}function za(t){return{user_id:String(t.user_id),user_name:t.user_name,avg_completion_time_hours:typeof t.avg_completion_time_hours=="number"?t.avg_completion_time_hours:null,team_id:typeof t.team_id=="string"&&t.team_id.trim()!==""?t.team_id:null,...Vt(t)}}function Ia(t){return{scope:t.scope??"tenant",total_open:Number(t.total_open??0),total_overdue:Number(t.total_overdue??0),total_blocked:Number(t.total_blocked??0),by_priority:t.by_priority??{},by_status:t.by_status??{},top_overdue_tasks:Array.isArray(t.top_overdue_tasks)?t.top_overdue_tasks.map(a=>({id:a.id,display_number_formatted:a.display_number_formatted,title:a.title,priority:a.priority??"none",status:a.status,due_at:a.due_at??null,current_escalation_tier:a.current_escalation_tier??null})):[],stale_tasks:Array.isArray(t.stale_tasks)?t.stale_tasks.map(a=>({id:a.id,display_number_formatted:a.display_number_formatted,title:a.title,status:a.status,updated_at:a.updated_at??null})):[],workload_per_user:Array.isArray(t.workload_per_user)?t.workload_per_user.map(za):[]}}function Re(t){return{id:t.id,...we("task_id",t.task_id),title:t.title,is_completed:t.is_completed,completed_at:t.completed_at,completed_by:se(t.completed_by),position:t.position,template_item_id:t.template_item_id??null}}function xa(t){return{id:t.id,tenant_id:t.tenant_id,display_number:Number(t.display_number??0),display_number_formatted:t.display_number_formatted,title:t.title,description:t.description??null,status:t.status,priority:t.priority??"none",taskable_type:t.taskable_type??null,taskable_id:t.taskable_id??null,created_by:t.created_by??null,primary_assignee_id:t.primary_assignee_id??null,due_at:t.due_at??null,completed_at:t.completed_at??null,completed_by:t.completed_by??null,source:t.source,source_id:t.source_id??null,metadata:t.metadata??null,completion_rules:t.completion_rules??null,comment_count:Number(t.comment_count??0),checklist_total:Number(t.checklist_total??0),checklist_completed:Number(t.checklist_completed??0),subtask_count:Number(t.subtask_count??0),snapshot:t.snapshot??null,archived_at:t.archived_at??null,archived_by:t.archived_by??null,created_at:t.created_at??null,updated_at:t.updated_at??null,deleted_at:t.deleted_at??null}}function qe(t){return t===null?null:{id:t.id,display_number_formatted:t.display_number_formatted,title:t.title,status:t.status,priority:t.priority??"none"}}function Xe(t){return{id:t.id,type:t.type_for_task??t.type,related_task:qe(t.related_task),created_at:t.created_at??null}}function et(t){return{id:t.id,...we("task_id",t.task_id),author:se(t.author??t.author_id,"Unknown User")??{id:"unknown",name:"Unknown User"},content:t.content,visibility:t.visibility,metadata:t.metadata??null,created_at:t.created_at,updated_at:t.updated_at??null}}function De(t){return{id:t.id,task_id:t.task_id,user_id:t.user_id,user:se(t.user??t.user_id),started_at:t.started_at,stopped_at:t.stopped_at,duration_minutes:t.duration_minutes,description:t.description,is_manual:t.is_manual,is_running:t.is_running??t.stopped_at===null,created_at:t.created_at,updated_at:t.updated_at}}function Fa(t){return{id:t.id,...we("task_id",t.task_id),user:se(t.user??t.user_id),action:t.action,description:t.description,changes:t.changes,metadata:t.metadata,created_at:t.created_at}}function La(t){return{id:t.id,tenant_id:t.tenant_id,profile_key:t.profile_key,name:t.name,description:t.description,is_default:t.is_default,tiers:t.tiers.map(a=>({name:a.name,label:a.label,offset_hours:a.offset_hours,visual:a.visual,channels:a.channels,target:a.target,cooldown_hours:a.cooldown_hours,color:a.color})),business_hours_only:t.business_hours_only,quiet_hours_start:t.quiet_hours_start,quiet_hours_end:t.quiet_hours_end,timezone:t.timezone,created_at:t.created_at,updated_at:t.updated_at}}function Nt(t){return{id:t.id,tenant_id:t.tenant_id,task_id:t.task_id,policy_id:t.policy_id,tier_name:t.tier_name,tier_label:t.tier_label,event_type:t.event_type,target_user_id:t.target_user_id,target_role:t.target_role,target_user:se(t.target_user),channels_used:t.channels_used??[],acknowledged_at:t.acknowledged_at,acknowledged_by:t.acknowledged_by,acknowledged_by_user:se(t.acknowledged_by_user),snoozed_until:t.snoozed_until,snooze_reason:t.snooze_reason,blocker_task_id:t.blocker_task_id,blocker_task:qe(t.blocker_task),metadata:t.metadata??null,created_at:t.created_at}}function tt(t){var o,l;const a=((o=t.checklist_items)==null?void 0:o.map(Re))??[],n=a.filter(i=>i.is_completed).length;return{id:t.id,tenant_id:t.tenant_id,display_number:t.display_number,display_number_formatted:t.display_number_formatted,title:t.title,description:t.description??null,status:t.status,priority:t.priority,taskable_type:t.taskable_type,taskable_id:t.taskable_id,created_by:se(t.created_by),primary_assignee:se(t.primary_assignee??t.primary_assignee_id),due_at:t.due_at,completed_at:t.completed_at,completed_by:se(t.completed_by),source:t.source,source_id:t.source_id,template_item_id:t.template_item_id??null,escalation_policy_id:t.escalation_policy_id??null,current_escalation_tier:t.current_escalation_tier??null,current_escalation_label:t.current_escalation_label??null,next_escalation_at:t.next_escalation_at??null,escalation_acknowledged_at:t.escalation_acknowledged_at??null,escalation_snoozed_until:t.escalation_snoozed_until??null,comment_count:t.comment_count??null,checklist_total:t.checklist_total??null,checklist_completed:t.checklist_completed??null,blocker_count:t.blocker_count??null,open_blocker_count:t.open_blocker_count??null,has_unresolved_blockers:t.has_unresolved_blockers??null,subtask_count:t.subtask_count??null,completed_subtask_count:t.completed_subtask_count??null,completion_rules:t.completion_rules??null,time_tracked_minutes:t.time_tracked_minutes??null,tags:((l=t.tags)==null?void 0:l.map(Et))??[],checklist_progress:{completed:a.length===0?Math.round((t.progress_percentage??0)/100):n,total:a.length},is_overdue:t.is_overdue,is_complete:t.is_complete,progress_percentage:t.progress_percentage??(a.length===0?0:Math.round(n/a.length*100)),metadata:t.metadata??null,created_at:t.created_at,updated_at:t.updated_at}}function ke(t){var o,l,i,r,s,_;const a=tt(t),n=((o=t.assignments)==null?void 0:o.filter(d=>d.role==="watcher"))??[];return{...a,comments:((l=t.comments)==null?void 0:l.map(et))??[],checklist_items:((i=t.checklist_items)==null?void 0:i.map(Re))??[],time_entries:((r=t.time_entries)==null?void 0:r.map(De))??[],watchers:n.map(d=>se(d.user_id)).filter(d=>d!==null),relations:[...t.outgoing_relations??[],...t.incoming_relations??[]].map(Xe),activity_logs:((s=t.activity_logs)==null?void 0:s.map(Fa))??[],escalation_policy:t.escalation_policy?La(t.escalation_policy):null,escalation_events:((_=t.escalation_events)==null?void 0:_.map(Nt))??[]}}function $t(t){var a;return{id:t.id,...we("template_id",t.template_id),parent_item_id:t.parent_item_id??null,type:t.type,title:t.title,description:t.description,default_priority:t.default_priority??null,due_offset_hours:t.due_offset_hours??null,position:t.position,metadata:t.metadata??null,children:((a=t.children)==null?void 0:a.map($t))??[]}}function Ua(t){var a,n;return{id:t.id,name:t.name,description:t.description,default_title:t.default_title,default_description:t.default_description??null,default_priority:t.default_priority,...we("default_status",t.default_status),due_offset_hours:t.due_offset_hours??null,items_count:((a=t.items)==null?void 0:a.length)??0,items:((n=t.items)==null?void 0:n.map($t))??[],is_active:t.is_active,default_assignee_role:t.default_assignee_role??null,applicable_types:t.applicable_types??null,tags:t.tags??[],position:t.position??0,metadata:t.metadata??null}}function Qe(t){return{id:t.id,tenant_id:t.tenant_id,user_id:t.user_id,name:t.name,filters:t.filters,is_default:t.is_default,is_shared:t.is_shared,position:t.position,created_at:t.created_at,updated_at:t.updated_at}}function Me(t){return{id:t.id,tenant_id:t.tenant_id,name:t.name,description:t.description,trigger_type:t.trigger_type,trigger_type_label:t.trigger_type_label??null,trigger_config:t.trigger_config??null,conditions:t.conditions??[],actions:t.actions??[],is_enabled:t.is_enabled,position:t.position,stop_processing:t.stop_processing,metadata:t.metadata??null,created_by:t.created_by,execution_count:t.execution_count??0,last_executed_at:t.last_executed_at??null,created_at:t.created_at,updated_at:t.updated_at}}function Ra(t){return{id:t.id,tenant_id:t.tenant_id,workflow_id:t.workflow_id,task_id:t.task_id,trigger_type:t.trigger_type,trigger_type_label:t.trigger_type_label??null,status:t.status,status_label:t.status_label??null,conditions_met:t.conditions_met,actions_executed:(t.actions_executed??[]).map(a=>{const{result:n,...o}=a,l={...o};return n!==void 0&&(l.result={type:n.type,success:n.success,message:n.message,data:n.data??{},dry_run:n.dry_run??!1}),l}),error:t.error,duration_ms:t.duration_ms,failed_action_index:t.failed_action_index??null,failed_action_type:t.failed_action_type??null,idempotency_key:t.idempotency_key??null,executed_at:t.executed_at,created_at:t.created_at,updated_at:t.updated_at}}function Wa(t){return{workflow:Me(t.workflow),task_id:t.task_id,trigger_matched:t.trigger_matched,conditions_met:t.conditions_met,actions:t.actions.map(a=>({type:a.type,success:a.success,message:a.message,data:a.data??{},dry_run:a.dry_run??!1}))}}function Pa(t){return{success:t.success??[],failed:t.failed??[]}}function it(t){return{id:t.id,display_number_formatted:t.display_number_formatted,title:t.title,description:t.description,status:t.status,priority:t.priority,due_at:t.due_at,is_overdue:t.is_overdue,primary_assignee:se(t.primary_assignee),created_by:se(t.created_by),completed_by:se(t.completed_by),current_escalation_tier:t.current_escalation_tier??null,current_escalation_label:t.current_escalation_label??null,comment_count:t.comment_count??0,checklist_total:t.checklist_total??0,checklist_completed:t.checklist_completed??0,subtask_count:t.subtask_count??0,progress_percentage:t.progress_percentage??0,created_at:t.created_at,updated_at:t.updated_at}}function Oa(t){return{id:t.id,action:t.action,description:t.description,changes:t.changes,metadata:t.metadata,created_at:t.created_at,user:se(t.user),task:qe(t.task)}}function at(t){return{id:t.id,tenant_id:t.tenant_id,user_id:t.user_id,layout:t.layout,preferences:t.preferences??{},created_at:t.created_at,updated_at:t.updated_at}}function We(t){return{items:t.items.map(it),summary:t.summary}}function Bt(t){return{days:t.days.map(a=>({date:a.date,label:a.label,weekday:a.weekday,is_today:a.is_today,tasks:a.tasks.map(it)})),summary:t.summary}}function Ha(t){return{task:it(t.task),health_status:t.health_status,health_score:t.health_score,issues:t.issues.map(a=>({type:a.type,label:a.label,message:a.message,suggested_actions:a.suggested_actions}))}}function Tt(t){return{items:t.items.map(Ha),summary:t.summary}}function Ct(t){return{items:t.items.map(Oa),summary:t.summary}}function St(t){return{period:t.period,current:t.current,previous:t.previous,trends:t.trends}}function ja(t){return{scope:t.scope,config:at(t.config),widgets:{my_tasks_today:We(t.widgets.my_tasks_today),upcoming_this_week:Bt(t.widgets.upcoming_this_week),overdue:We(t.widgets.overdue),activity:Ct(t.widgets.activity),my_stats:St(t.widgets.my_stats),health_alerts:Tt(t.widgets.health_alerts)},meta:t.meta}}function Dt(t){return{id:t.id,recurring_template_id:t.recurring_template_id,task_id:t.task_id,occurrence_date:t.occurrence_date,generated_at:t.generated_at,created_at:t.created_at,task:qe(t.task)}}function Se(t){var a;return{id:t.id,tenant_id:t.tenant_id,task_template_id:t.task_template_id,task_template:t.task_template,title:t.title,description:t.description,rrule:t.rrule,rrule_human:t.rrule_human,timezone:t.timezone,taskable_type:t.taskable_type,taskable_id:t.taskable_id,primary_assignee_id:t.primary_assignee_id,priority:t.priority,priority_label:t.priority_label??null,due_offset_hours:t.due_offset_hours,tags:t.tags??[],is_active:t.is_active,skip_holidays:t.skip_holidays,business_hours_only:t.business_hours_only,chain_mode:t.chain_mode,last_generated_at:t.last_generated_at,next_occurrence_at:t.next_occurrence_at,metadata:t.metadata??null,created_by:t.created_by,created_at:t.created_at,updated_at:t.updated_at,deleted_at:t.deleted_at,history:((a=t.history)==null?void 0:a.map(Dt))??[]}}function qa(t){var a,n,o,l;return{current_page:((a=t.meta)==null?void 0:a.current_page)??t.current_page??1,last_page:((n=t.meta)==null?void 0:n.last_page)??t.last_page??1,per_page:((o=t.meta)==null?void 0:o.per_page)??t.per_page??t.data.length,total:((l=t.meta)==null?void 0:l.total)??t.total??t.data.length}}function fe(t,a){return{data:t.data.map(a),meta:qa(t)}}function P(t,a){return`${t.replace(/\/$/,"")}${a}`}function Ge(t){const a={...t},n=t.sort;return typeof n=="string"&&n!==""&&(n.startsWith("-")?(a.sort=n.slice(1),a.direction="desc"):(a.sort=n,a.direction="asc")),typeof t.assignee=="string"?a.assignee_id=t.assignee:typeof t.assignee_id=="string"&&(a.assignee_id=t.assignee_id),delete a.assignee,delete a.assignee_name,a}function rt(t={}){const a=t.axios??Sa,n=t.baseUrl??Da;return{async list(o={}){const l=await a.get(P(n,"/tasks"),{params:Ge(o)});return fe(l.data,tt)},async searchUsers(o,l={}){return(await a.get(P(n,"/users/search"),{params:{query:o,...l}})).data.data.map(Aa)},async getWorkload(o={}){const l=await a.get(P(n,"/workload"),{params:o});return Ia(l.data.data)},async listArchives(o={}){const l=await a.get(P(n,"/archives"),{params:o});return fe(l.data,xa)},async restoreArchive(o){const l=await a.post(P(n,`/archives/${o}/restore`));return ke(l.data.data)},async get(o){const l=await a.get(P(n,`/tasks/${o}`));return ke(l.data.data)},async create(o){const l=await a.post(P(n,"/tasks"),o);return ke(l.data.data)},async update(o,l){const i=await a.patch(P(n,`/tasks/${o}`),l);return ke(i.data.data)},async delete(o){await a.delete(P(n,`/tasks/${o}`))},async complete(o,l){const i=await a.post(P(n,`/tasks/${o}/complete`),{note:l});return ke(i.data.data)},async reopen(o){const l=await a.post(P(n,`/tasks/${o}/reopen`));return ke(l.data.data)},async cancel(o){const l=await a.post(P(n,`/tasks/${o}/cancel`));return ke(l.data.data)},async assign(o,l){return await a.post(P(n,`/tasks/${o}/assign`),{user_id:l}),this.get(o)},async reassign(o,l){return await a.post(P(n,`/tasks/${o}/reassign`),{user_id:l}),this.get(o)},async addWatcher(o,l){return await a.post(P(n,`/tasks/${o}/watchers`),{user_id:l}),this.get(o)},async removeWatcher(o,l){return await a.delete(P(n,`/tasks/${o}/watchers/${l}`)),this.get(o)},async listComments(o){return(await a.get(P(n,`/tasks/${o}/comments`))).data.data.map(et)},async addComment(o,l){const i=await a.post(P(n,`/tasks/${o}/comments`),l);return et(i.data.data)},async getActiveTimer(){const o=await a.get(P(n,"/time/active"));return o.data.data?De(o.data.data):null},async listTimeEntries(o){var i;const l=await a.get(P(n,`/tasks/${o}/time`));return{entries:l.data.data.map(De),total_minutes:Number(((i=l.data.meta)==null?void 0:i.total_minutes)??0)}},async startTimer(o){var i;const l=await a.post(P(n,`/tasks/${o}/time/start`));return{entry:De(l.data.data),total_minutes:Number(((i=l.data.meta)==null?void 0:i.total_minutes)??0)}},async stopTimer(o){var i;const l=await a.post(P(n,`/tasks/${o}/time/stop`));return{entry:De(l.data.data),total_minutes:Number(((i=l.data.meta)==null?void 0:i.total_minutes)??0)}},async addManualTimeEntry(o,l){var r;const i=await a.post(P(n,`/tasks/${o}/time`),l);return{entry:De(i.data.data),total_minutes:Number(((r=i.data.meta)==null?void 0:r.total_minutes)??0)}},async deleteTimeEntry(o,l){var r;const i=await a.delete(P(n,`/tasks/${o}/time/${l}`));return{total_minutes:Number(((r=i.data.meta)==null?void 0:r.total_minutes)??0)}},async exportTasks(o={}){return(await a.get(P(n,"/tasks/export"),{params:Ge(o),responseType:"text"})).data},async importTasks(o){const l=new FormData;return l.append("file",o),(await a.post(P(n,"/tasks/import"),l,{headers:{"Content-Type":"multipart/form-data"}})).data.data},async acknowledgeEscalation(o){const l=await a.post(P(n,`/tasks/${o}/escalation/acknowledge`));return ke(l.data.data)},async snoozeEscalation(o,l){const i=await a.post(P(n,`/tasks/${o}/escalation/snooze`),l);return ke(i.data.data)},async escalationHistory(o,l={}){const i=await a.get(P(n,`/tasks/${o}/escalation/history`),{params:l});return fe(i.data,Nt)},async addChecklistItem(o,l){const i=await a.post(P(n,`/tasks/${o}/checklist`),{title:l});return Re(i.data.data)},async toggleChecklistItem(o,l){const i=await a.post(P(n,`/tasks/${o}/checklist/${l}/toggle`));return Re(i.data.data)},async removeChecklistItem(o,l){await a.delete(P(n,`/tasks/${o}/checklist/${l}`))},async listRelations(o){return(await a.get(P(n,`/tasks/${o}/relations`))).data.data.map(Xe)},async addRelation(o,l){const i=await a.post(P(n,`/tasks/${o}/relations`),l);return Xe(i.data.data)},async listTags(){return(await a.get(P(n,"/tags"))).data.data.map(Et)},async addTagToTask(o,l){return await a.post(P(n,`/tasks/${o}/tags`),{tag_id:l}),this.get(o)},async listSavedFilters(){return(await a.get(P(n,"/filters"))).data.data.map(Qe)},async createSavedFilter(o){const l=await a.post(P(n,"/filters"),o);return Qe(l.data.data)},async updateSavedFilter(o,l){const i=await a.patch(P(n,`/filters/${o}`),l);return Qe(i.data.data)},async deleteSavedFilter(o){await a.delete(P(n,`/filters/${o}`))},async listWorkflows(o={}){const l=await a.get(P(n,"/workflows"),{params:o});return fe(l.data,Me)},async getWorkflow(o){const l=await a.get(P(n,`/workflows/${o}`));return Me(l.data.data)},async createWorkflow(o){const l=await a.post(P(n,"/workflows"),o);return Me(l.data.data)},async updateWorkflow(o,l){const i=await a.patch(P(n,`/workflows/${o}`),l);return Me(i.data.data)},async deleteWorkflow(o){await a.delete(P(n,`/workflows/${o}`))},async toggleWorkflow(o,l){const i=await a.post(P(n,`/workflows/${o}/toggle`),{is_enabled:l});return Me(i.data.data)},async workflowLogs(o,l={}){const i=await a.get(P(n,`/workflows/${o}/logs`),{params:l});return fe(i.data,Ra)},async testWorkflow(o,l,i={}){const r=await a.post(P(n,`/workflows/${o}/test`),{task_id:l,context:i});return Wa(r.data.data)},async bulkAction(o,l,i={}){const r=await a.post(P(n,"/tasks/bulk"),{task_ids:o,action:l,params:i});return Pa(r.data.data)},async listTemplates(o={}){const l=await a.get(P(n,"/templates"),{params:o});return fe(l.data,Ua)},async instantiateTemplate(o,l){const i=await a.post(P(n,`/templates/${o}/instantiate`),l);return ke(i.data.data)},async listRecurring(o={}){const l=await a.get(P(n,"/recurring"),{params:o});return fe(l.data,Se)},async getRecurring(o){const l=await a.get(P(n,`/recurring/${o}`));return Se(l.data.data)},async createRecurring(o){const l=await a.post(P(n,"/recurring"),o);return Se(l.data.data)},async updateRecurring(o,l){const i=await a.patch(P(n,`/recurring/${o}`),l);return Se(i.data.data)},async deleteRecurring(o){await a.delete(P(n,`/recurring/${o}`))},async pauseRecurring(o){const l=await a.post(P(n,`/recurring/${o}/pause`));return Se(l.data.data)},async resumeRecurring(o){const l=await a.post(P(n,`/recurring/${o}/resume`));return Se(l.data.data)},async recurringHistory(o,l={}){const i=await a.get(P(n,`/recurring/${o}/history`),{params:l});return fe(i.data,Dt)},async generateRecurring(o){const l=await a.post(P(n,`/recurring/${o}/generate`));return ke(l.data.data)},async entityTasks(o,l,i={}){const r=await a.get(P(n,`/entity/${o}/${l}/tasks`),{params:Ge(i)});return fe(r.data,tt)},async entitySummary(o,l){const r=(await a.get(P(n,`/entity/${o}/${l}/summary`))).data.data;return{...r,recent_tasks:r.recent_tasks.map(s=>({id:s.id,display_number_formatted:s.display_number_formatted,title:s.title,status:s.status,priority:s.priority??"none"}))}},async getDashboard(o="week"){const l=await a.get(P(n,"/dashboard"),{params:{period:o}});return ja(l.data.data)},async getDashboardConfig(){const o=await a.get(P(n,"/dashboard/config"));return at(o.data.data)},async updateDashboardConfig(o){const l=await a.put(P(n,"/dashboard/config"),o);return at(l.data.data)},async getDashboardMyTasksToday(){const o=await a.get(P(n,"/dashboard/my-tasks-today"));return We(o.data.data)},async getDashboardUpcoming(){const o=await a.get(P(n,"/dashboard/upcoming"));return Bt(o.data.data)},async getDashboardOverdue(){const o=await a.get(P(n,"/dashboard/overdue"));return We(o.data.data)},async getDashboardActivity(){const o=await a.get(P(n,"/dashboard/activity"));return Ct(o.data.data)},async getDashboardStats(o="week"){const l=await a.get(P(n,"/dashboard/stats"),{params:{period:o}});return St(l.data.data)},async getDashboardHealthAlerts(){const o=await a.get(P(n,"/dashboard/health-alerts"));return Tt(o.data.data)},async getAnalyticsCompletionRate(o={}){return(await a.get(P(n,"/analytics/completion-rate"),{params:o})).data.data},async getAnalyticsCycleTime(o={}){return(await a.get(P(n,"/analytics/cycle-time"),{params:o})).data.data},async getAnalyticsVelocity(o={}){return(await a.get(P(n,"/analytics/velocity"),{params:o})).data.data},async getAnalyticsOverdueRate(o={}){return(await a.get(P(n,"/analytics/overdue-rate"),{params:o})).data.data},async getAnalyticsTemplateUsage(){return(await a.get(P(n,"/analytics/template-usage"))).data.data}}}let dt=rt();function M(){return dt}function Ya(t){dt=t}function Ka(){dt=rt()}const Pe={list:t=>M().list(t),searchUsers:(t,a)=>M().searchUsers(t,a),getWorkload:t=>M().getWorkload(t),listArchives:t=>M().listArchives(t),restoreArchive:t=>M().restoreArchive(t),get:t=>M().get(t),create:t=>M().create(t),update:(t,a)=>M().update(t,a),delete:t=>M().delete(t),complete:(t,a)=>M().complete(t,a),reopen:t=>M().reopen(t),cancel:t=>M().cancel(t),assign:(t,a)=>M().assign(t,a),reassign:(t,a)=>M().reassign(t,a),addWatcher:(t,a)=>M().addWatcher(t,a),removeWatcher:(t,a)=>M().removeWatcher(t,a),listComments:t=>M().listComments(t),addComment:(t,a)=>M().addComment(t,a),getActiveTimer:()=>M().getActiveTimer(),listTimeEntries:t=>M().listTimeEntries(t),startTimer:t=>M().startTimer(t),stopTimer:t=>M().stopTimer(t),addManualTimeEntry:(t,a)=>M().addManualTimeEntry(t,a),deleteTimeEntry:(t,a)=>M().deleteTimeEntry(t,a),exportTasks:t=>M().exportTasks(t),importTasks:t=>M().importTasks(t),acknowledgeEscalation:t=>M().acknowledgeEscalation(t),snoozeEscalation:(t,a)=>M().snoozeEscalation(t,a),escalationHistory:(t,a)=>M().escalationHistory(t,a),addChecklistItem:(t,a)=>M().addChecklistItem(t,a),toggleChecklistItem:(t,a)=>M().toggleChecklistItem(t,a),removeChecklistItem:(t,a)=>M().removeChecklistItem(t,a),listRelations:t=>M().listRelations(t),addRelation:(t,a)=>M().addRelation(t,a),listTags:()=>M().listTags(),addTagToTask:(t,a)=>M().addTagToTask(t,a),listSavedFilters:()=>M().listSavedFilters(),createSavedFilter:t=>M().createSavedFilter(t),updateSavedFilter:(t,a)=>M().updateSavedFilter(t,a),deleteSavedFilter:t=>M().deleteSavedFilter(t),listWorkflows:t=>M().listWorkflows(t),getWorkflow:t=>M().getWorkflow(t),createWorkflow:t=>M().createWorkflow(t),updateWorkflow:(t,a)=>M().updateWorkflow(t,a),deleteWorkflow:t=>M().deleteWorkflow(t),toggleWorkflow:(t,a)=>M().toggleWorkflow(t,a),workflowLogs:(t,a)=>M().workflowLogs(t,a),testWorkflow:(t,a,n)=>M().testWorkflow(t,a,n),bulkAction:(t,a,n)=>M().bulkAction(t,a,n),listTemplates:t=>M().listTemplates(t),instantiateTemplate:(t,a)=>M().instantiateTemplate(t,a),listRecurring:t=>M().listRecurring(t),getRecurring:t=>M().getRecurring(t),createRecurring:t=>M().createRecurring(t),updateRecurring:(t,a)=>M().updateRecurring(t,a),deleteRecurring:t=>M().deleteRecurring(t),pauseRecurring:t=>M().pauseRecurring(t),resumeRecurring:t=>M().resumeRecurring(t),recurringHistory:(t,a)=>M().recurringHistory(t,a),generateRecurring:t=>M().generateRecurring(t),entityTasks:(t,a,n)=>M().entityTasks(t,a,n),entitySummary:(t,a)=>M().entitySummary(t,a),getDashboard:t=>M().getDashboard(t),getDashboardConfig:()=>M().getDashboardConfig(),updateDashboardConfig:t=>M().updateDashboardConfig(t),getDashboardMyTasksToday:()=>M().getDashboardMyTasksToday(),getDashboardUpcoming:()=>M().getDashboardUpcoming(),getDashboardOverdue:()=>M().getDashboardOverdue(),getDashboardActivity:()=>M().getDashboardActivity(),getDashboardStats:t=>M().getDashboardStats(t),getDashboardHealthAlerts:()=>M().getDashboardHealthAlerts(),getAnalyticsCompletionRate:t=>M().getAnalyticsCompletionRate(t),getAnalyticsCycleTime:t=>M().getAnalyticsCycleTime(t),getAnalyticsVelocity:t=>M().getAnalyticsVelocity(t),getAnalyticsOverdueRate:t=>M().getAnalyticsOverdueRate(t),getAnalyticsTemplateUsage:()=>M().getAnalyticsTemplateUsage()};function yt(){return{page:1,per_page:15,sort:"-created_at"}}function Qa(){return{current_page:1,last_page:1,per_page:15,total:0}}const ct=st.defineStore("task-engine/task-list",()=>{const t=e.ref(yt()),a=e.ref(Qa()),n=e.ref("list"),o=e.ref(null);function l(k,B){const u={...t.value};B==null||B===""||Array.isArray(B)&&B.length===0?delete u[k]:u[k]=B,u.page=1,t.value=u}function i(k){t.value={per_page:t.value.per_page??15,sort:t.value.sort??"-created_at",...k,page:k.page??1}}function r(){t.value=yt()}function s(k){t.value={...t.value,sort:k,page:1}}function _(){a.value.current_page>=a.value.last_page||(t.value={...t.value,page:a.value.current_page+1})}function d(){a.value.current_page<=1||(t.value={...t.value,page:a.value.current_page-1})}function V(k){a.value=k,t.value={...t.value,page:k.current_page,per_page:k.per_page}}function m(k){n.value=k}function v(k){o.value=k}const p=e.computed(()=>Object.entries(t.value).reduce((k,[B,u])=>B==="page"||B==="per_page"||B==="sort"||u==null||u===""||Array.isArray(u)&&u.length===0?k:k+1,0));return{filters:t,pagination:a,view:n,activeSavedFilterId:o,activeFilterCount:p,setFilter:l,setFilters:i,clearFilters:r,setSort:s,setView:m,setActiveSavedFilter:v,nextPage:_,previousPage:d,syncPagination:V}});function Ga(){return{current_page:1,last_page:1,per_page:15,total:0}}function Ja(){return{completed:0,total:0}}function Za(t){var o;if(typeof t=="number")return Number.isFinite(t)?t:0;const a=(o=t.match(/(\d+)(?!.*\d)/))==null?void 0:o[1],n=a===void 0?Number.NaN:Number.parseInt(a,10);return Number.isNaN(n)?0:n}function Ue(t){return t==="complete"}function Je(t){return t.total<=0?0:Math.round(t.completed/t.total*100)}function Xa(t,a){return t===null||Ue(a)||a==="cancelled"?!1:new Date(t).getTime()<Date.now()}function gt(t,a){return a===void 0?!0:Array.isArray(a)?a.includes(t):a===t}const ze=st.defineStore("task-engine/tasks",()=>{const t=e.ref([]),a=e.ref(null),n=e.ref(null),o=e.ref(!1),l=e.ref(null),i=e.ref(Ga()),r=e.ref({}),s=e.ref([]),_=e.ref(!1),d=e.ref(null),V=e.ref(!1),m=e.ref(null),v=e.ref(!1),p=e.ref(null),k=e.ref(!1),B=e.ref(!1);function u(N){l.value=N instanceof Error?N.message:String(N)}function c(N){i.value={...i.value,total:Math.max(0,N)}}function b(N){c(i.value.total+N)}function h(N){const y=t.value.findIndex(R=>R.id===N.id);return y>=0?(t.value.splice(y,1,N),!1):(t.value.unshift(N),!0)}function L(N){const y=t.value.findIndex(R=>R.id===N);return y<0?!1:(t.value.splice(y,1),!0)}function S(N){var X;const y=r.value,R=y.assignee??y.assignee_id;return!(!gt(N.status,y.status)||!gt(N.priority,y.priority)||typeof y.taskable_type=="string"&&N.taskable_type!==y.taskable_type||typeof y.taskable_id=="string"&&N.taskable_id!==y.taskable_id||typeof R=="string"&&String(((X=N.primary_assignee)==null?void 0:X.id)??"")!==R||y.overdue===!0&&!N.is_overdue)}function w(N,y){const R=(y==null?void 0:y.checklist_progress)??Ja(),X=N.status,re=N.due_at??(y==null?void 0:y.due_at)??null,de=N.display_number_formatted||String(N.display_number);return{id:N.id,tenant_id:(y==null?void 0:y.tenant_id)??"",display_number:(y==null?void 0:y.display_number)??Za(N.display_number),display_number_formatted:de,title:N.title,description:(y==null?void 0:y.description)??null,status:X,priority:N.priority,taskable_type:N.taskable_type??(y==null?void 0:y.taskable_type)??null,taskable_id:N.taskable_id??(y==null?void 0:y.taskable_id)??null,created_by:N.created_by??(y==null?void 0:y.created_by)??null,primary_assignee:N.primary_assignee??(y==null?void 0:y.primary_assignee)??null,due_at:re,completed_at:Ue(X)?(y==null?void 0:y.completed_at)??null:null,completed_by:N.completed_by??(Ue(X)?(y==null?void 0:y.completed_by)??null:null),source:(y==null?void 0:y.source)??"manual",source_id:(y==null?void 0:y.source_id)??null,template_item_id:(y==null?void 0:y.template_item_id)??null,escalation_policy_id:(y==null?void 0:y.escalation_policy_id)??null,current_escalation_tier:N.current_escalation_tier??(y==null?void 0:y.current_escalation_tier)??null,current_escalation_label:(y==null?void 0:y.current_escalation_label)??null,next_escalation_at:N.next_escalation_at??(y==null?void 0:y.next_escalation_at)??null,escalation_acknowledged_at:N.escalation_acknowledged_at??(y==null?void 0:y.escalation_acknowledged_at)??null,escalation_snoozed_until:N.escalation_snoozed_until??(y==null?void 0:y.escalation_snoozed_until)??null,blocker_count:(y==null?void 0:y.blocker_count)??null,open_blocker_count:(y==null?void 0:y.open_blocker_count)??null,has_unresolved_blockers:(y==null?void 0:y.has_unresolved_blockers)??null,subtask_count:(y==null?void 0:y.subtask_count)??null,completed_subtask_count:(y==null?void 0:y.completed_subtask_count)??null,completion_rules:(y==null?void 0:y.completion_rules)??null,time_tracked_minutes:(y==null?void 0:y.time_tracked_minutes)??null,tags:(y==null?void 0:y.tags)??[],checklist_progress:R,is_overdue:Xa(re,X),is_complete:Ue(X),progress_percentage:Je(R),metadata:(y==null?void 0:y.metadata)??null,created_at:(y==null?void 0:y.created_at)??new Date().toISOString(),updated_at:new Date().toISOString()}}function f(N){var R;if(((R=a.value)==null?void 0:R.id)!==N.id)return;const y=w(N,a.value);a.value={...a.value,...y}}function $(N){const y=t.value.find(de=>de.id===N.id)??a.value,R=w(N,y??null),X=t.value.some(de=>de.id===R.id);return S(R)?h(R)&&!X&&b(1):L(R.id)&&b(-1),f(N),R}function z(N,y,R){var de;const X=t.value.findIndex(Ce=>Ce.id===N);if(X>=0){const Ce=t.value[X];Ce!==void 0&&t.value.splice(X,1,{...Ce,checklist_progress:R,progress_percentage:Je(R),updated_at:new Date().toISOString()})}if(((de=a.value)==null?void 0:de.id)!==N)return;const re=a.value.checklist_items.findIndex(Ce=>Ce.id===y.id);re>=0?a.value.checklist_items.splice(re,1,{...a.value.checklist_items[re],...y}):a.value.checklist_items.push(y),a.value={...a.value,checklist_progress:R,progress_percentage:Je(R),updated_at:new Date().toISOString()}}function q(N){var y;return((y=a.value)==null?void 0:y.id)===N}function te(N){return $(N)}function U(N){return $(N.task)}function Y(N){return $({...N.task,status:N.new_status})}function G(N){return $({...N.task,assignee_id:N.new_assignee_id,primary_assignee:N.task.primary_assignee})}function ee(N){return $({...N.task,status:"complete",completed_by:N.completed_by})}function O(N){return $(N.task)}function A(N){const y=$(N.task);return z(N.task.id,N.item,N.progress),y}async function ne(N={}){o.value=!0,l.value=null;try{const y=await M().list(N);t.value=y.data,i.value=y.meta,r.value={...N}}catch(y){throw u(y),y}finally{o.value=!1}}async function W(N){o.value=!0,l.value=null;try{const y=await M().get(N);return a.value=y,h(y),y}catch(y){throw u(y),y}finally{o.value=!1}}async function T(N){o.value=!0,l.value=null;try{const y=await M().create(N);return a.value=y,h(y),b(1),y}catch(y){throw u(y),y}finally{o.value=!1}}async function F(N,y){o.value=!0,l.value=null;try{const R=await M().update(N,y);return a.value=R,h(R),R}catch(R){throw u(R),R}finally{o.value=!1}}async function D(N){var y;o.value=!0,l.value=null;try{await M().delete(N),t.value=t.value.filter(R=>R.id!==N),((y=a.value)==null?void 0:y.id)===N&&(a.value=null),b(-1)}catch(R){throw u(R),R}finally{o.value=!1}}async function E(N,y){const R=await M().complete(N,y);return a.value=R,h(R),R}async function g(N){const y=await M().reopen(N);return a.value=y,h(y),y}async function C(N){const y=await M().cancel(N);return a.value=y,h(y),y}async function I(N,y){var R;return await M().addComment(N,y),((R=a.value)==null?void 0:R.id)===N?W(N):null}async function J(N){const y=await M().acknowledgeEscalation(N);return a.value=y,h(y),y}async function le(N,y){const R=await M().snoozeEscalation(N,y);return a.value=R,h(R),R}async function me(N,y){var R;return await M().addChecklistItem(N,y),((R=a.value)==null?void 0:R.id)===N?W(N):null}async function Z(N,y){var R;return await M().toggleChecklistItem(N,y),((R=a.value)==null?void 0:R.id)===N?W(N):null}async function x(N,y){var R;return await M().removeChecklistItem(N,y),((R=a.value)==null?void 0:R.id)===N?W(N):null}async function H(N,y,R={}){o.value=!0,l.value=null;try{const X=await M().entityTasks(N,y,R);t.value=X.data,i.value=X.meta,r.value={...R,taskable_type:N,taskable_id:y}}catch(X){throw u(X),X}finally{o.value=!1}}async function j(N,y){o.value=!0,l.value=null;try{const R=await M().entitySummary(N,y);return n.value=R,R}catch(R){throw u(R),R}finally{o.value=!1}}async function Q(N,y){o.value=!0,l.value=null;try{const R=await M().instantiateTemplate(N,y);return a.value=R,h(R),b(1),R}catch(R){throw u(R),R}finally{o.value=!1}}async function ae(){try{return m.value=await M().getActiveTimer(),m.value}catch(N){throw u(N),N}}async function oe(N){var R;const y=await M().get(N);return h(y),((R=a.value)==null?void 0:R.id)===N&&(a.value=y),y}async function pe(N){v.value=!0,l.value=null;try{return await M().startTimer(N),await ae(),oe(N)}catch(y){throw u(y),y}finally{v.value=!1}}async function Ee(N){v.value=!0,l.value=null;try{return await M().stopTimer(N),await ae(),oe(N)}catch(y){throw u(y),y}finally{v.value=!1}}async function _e(N,y){v.value=!0,l.value=null;try{return await M().addManualTimeEntry(N,y),await ae(),oe(N)}catch(R){throw u(R),R}finally{v.value=!1}}async function Te(N,y){v.value=!0,l.value=null;try{return await M().deleteTimeEntry(N,y),await ae(),oe(N)}catch(R){throw u(R),R}finally{v.value=!1}}async function Fe(N=r.value){B.value=!0,l.value=null;try{return await M().exportTasks(N)}catch(y){throw u(y),y}finally{B.value=!1}}async function ba(N){k.value=!0,l.value=null;try{const y=await M().importTasks(N);return p.value=y,(t.value.length>0||Object.keys(r.value).length>0)&&await ne(r.value),y}catch(y){throw u(y),y}finally{k.value=!1}}async function ha(){_.value=!0,l.value=null;try{const N=await M().listSavedFilters();return s.value=[...N].sort((y,R)=>y.position-R.position||y.name.localeCompare(R.name)),s.value}catch(N){throw u(N),N}finally{_.value=!1}}async function wa(N){_.value=!0,l.value=null;try{const y=await M().createSavedFilter(N);return s.value=[...s.value,y].sort((R,X)=>R.position-X.position||R.name.localeCompare(X.name)),y}catch(y){throw u(y),y}finally{_.value=!1}}async function Ea(N,y){_.value=!0,l.value=null;try{const R=await M().updateSavedFilter(N,y),X=s.value.findIndex(re=>re.id===N);return X>=0&&(s.value.splice(X,1,R),s.value=[...s.value].sort((re,de)=>re.position-de.position||re.name.localeCompare(de.name))),R}catch(R){throw u(R),R}finally{_.value=!1}}async function Va(N){_.value=!0,l.value=null;try{await M().deleteSavedFilter(N),s.value=s.value.filter(y=>y.id!==N)}catch(y){throw u(y),y}finally{_.value=!1}}function Na(){d.value=null}async function $a(N,y,R={}){V.value=!0,l.value=null;try{const X=await M().bulkAction(N,y,R);return d.value=X,X.success.length>0&&(t.value.length>0||Object.keys(r.value).length>0)&&await ne(r.value),a.value!==null&&X.success.includes(a.value.id)&&(y==="delete"?a.value=null:await W(a.value.id)),X}catch(X){throw u(X),X}finally{V.value=!1}}const Ba=e.computed(()=>t.value.filter(N=>N.is_overdue)),Ta=e.computed(()=>({draft:t.value.filter(N=>N.status==="draft"),open:t.value.filter(N=>N.status==="open"),in_progress:t.value.filter(N=>N.status==="in_progress"),blocked:t.value.filter(N=>N.status==="blocked"),under_review:t.value.filter(N=>N.status==="under_review"),complete:t.value.filter(N=>N.status==="complete"),cancelled:t.value.filter(N=>N.status==="cancelled")})),Ca=e.computed(()=>({none:t.value.filter(N=>N.priority==="none"),low:t.value.filter(N=>N.priority==="low"),medium:t.value.filter(N=>N.priority==="medium"),high:t.value.filter(N=>N.priority==="high"),urgent:t.value.filter(N=>N.priority==="urgent"),critical:t.value.filter(N=>N.priority==="critical")}));return{tasks:t,currentTask:a,entitySummary:n,loading:o,error:l,pagination:i,lastFilters:r,savedFilters:s,savedFiltersLoading:_,bulkResult:d,bulkLoading:V,activeTimer:m,timeTrackingLoading:v,importResult:p,importLoading:k,exportLoading:B,overdueTasks:Ba,tasksByStatus:Ta,tasksByPriority:Ca,isViewingTask:q,handleTaskCreated:te,handleTaskUpdated:U,handleStatusChanged:Y,handleTaskAssigned:G,handleTaskCompleted:ee,handleCommentAdded:O,handleChecklistToggled:A,fetchTasks:ne,fetchTask:W,createTask:T,updateTask:F,deleteTask:D,completeTask:E,reopenTask:g,cancelTask:C,addComment:I,acknowledgeEscalation:J,snoozeEscalation:le,addChecklistItem:me,toggleChecklistItem:Z,removeChecklistItem:x,fetchEntityTasks:H,fetchEntitySummary:j,instantiateTemplate:Q,fetchActiveTimer:ae,startTimer:pe,stopTimer:Ee,addManualTimeEntry:_e,deleteTimeEntry:Te,exportTasks:Fe,importTasks:ba,fetchSavedFilters:ha,createSavedFilter:wa,updateSavedFilterRecord:Ea,deleteSavedFilterRecord:Va,runBulkAction:$a,clearBulkResult:Na}});function en(t){return{name:`${t.name} (Copy)`,description:t.description,trigger_type:t.trigger_type,trigger_config:t.trigger_config===null?null:{...t.trigger_config},conditions:t.conditions.map(a=>({...a})),actions:t.actions.map(a=>{const n={...a};return a.config!==void 0&&(n.config={...a.config}),n}),is_enabled:t.is_enabled,position:t.position+1,stop_processing:t.stop_processing,metadata:t.metadata===null?null:{...t.metadata}}}const Mt=st.defineStore("task-engine/workflows",()=>{const t=e.ref([]),a=e.ref({current_page:1,last_page:1,per_page:15,total:0}),n=e.ref(null),o=e.ref(null),l=e.ref({}),i=e.ref(!1),r=e.ref(!1),s=e.ref(null),_=e.ref({});function d(f){s.value=f instanceof Error?f.message:String(f)}function V(f){const $=[...t.value],z=$.findIndex(q=>q.id===f.id);z>=0?$.splice(z,1,f):$.push(f),t.value=$.sort((q,te)=>q.position-te.position)}async function m(f={}){i.value=!0,s.value=null;try{const $=await M().listWorkflows(f);return t.value=[...$.data].sort((z,q)=>z.position-q.position),a.value=$.meta,$}catch($){throw d($),$}finally{i.value=!1}}async function v(f){i.value=!0,s.value=null;try{const $=await M().getWorkflow(f);return n.value=$,V($),$}catch($){throw d($),$}finally{i.value=!1}}async function p(f){r.value=!0,s.value=null;try{const $=await M().createWorkflow(f);return n.value=$,V($),$}catch($){throw d($),$}finally{r.value=!1}}async function k(f,$){r.value=!0,s.value=null;try{const z=await M().updateWorkflow(f,$);return n.value=z,V(z),z}catch(z){throw d(z),z}finally{r.value=!1}}async function B(f){var $;r.value=!0,s.value=null;try{await M().deleteWorkflow(f),t.value=t.value.filter(z=>z.id!==f),(($=n.value)==null?void 0:$.id)===f&&(n.value=null)}catch(z){throw d(z),z}finally{r.value=!1}}async function u(f,$){var z;r.value=!0,s.value=null;try{const q=await M().toggleWorkflow(f,$);return n.value=((z=n.value)==null?void 0:z.id)===f?q:n.value,V(q),q}catch(q){throw d(q),q}finally{r.value=!1}}async function c(f){return p(en(f))}async function b(f,$){const z=[...t.value].sort((G,ee)=>G.position-ee.position),q=z.findIndex(G=>G.id===f),te=$==="up"?q-1:q+1;if(q<0||te<0||te>=z.length)return;const U=z[q],Y=z[te];U===void 0||Y===void 0||await Promise.all([k(U.id,{position:Y.position}),k(Y.id,{position:U.position})])}async function h(f,$={}){_.value={..._.value,[f]:!0},s.value=null;try{const z=await M().workflowLogs(f,$);return l.value={...l.value,[f]:z},z}catch(z){throw d(z),z}finally{_.value={..._.value,[f]:!1}}}async function L(f,$,z={}){r.value=!0,s.value=null;try{const q=await M().testWorkflow(f,$,z);return o.value=q,q}catch(q){throw d(q),q}finally{r.value=!1}}const S=e.computed(()=>t.value.filter(f=>f.is_enabled)),w=e.computed(()=>t.value.filter(f=>!f.is_enabled));return{workflows:t,pagination:a,currentWorkflow:n,testResult:o,logsByWorkflow:l,loading:i,saving:r,error:s,logLoading:_,enabledWorkflows:S,disabledWorkflows:w,fetchWorkflows:m,fetchWorkflow:v,createWorkflow:p,updateWorkflow:k,deleteWorkflow:B,toggleWorkflow:u,duplicateWorkflow:c,moveWorkflow:b,fetchLogs:h,runTest:L}}),tn=8e3,an="/admin/tasks",ve=e.ref([]),Oe=new Map;let nn=0;function ln(t){return`${an}/${t}`}function ut(t){const a=Oe.get(t);a!==void 0&&(clearTimeout(a),Oe.delete(t))}function At(t){ut(t),ve.value=ve.value.filter(a=>a.id!==t)}function on(t){const a=t.id??`task-toast-${++nn}`,n={id:a,kind:t.kind,title:t.title,body:t.body,taskId:t.taskId,taskNumber:t.taskNumber,tone:t.tone??"info",duration:t.duration??tn,url:t.url??ln(t.taskId),created_at:t.created_at??new Date().toISOString()},o=ve.value.findIndex(l=>l.id===a);return ut(a),o>=0&&ve.value.splice(o,1),ve.value=[n,...ve.value].slice(0,5),Oe.set(a,setTimeout(()=>{At(a)},n.duration)),n}function sn(){Array.from(Oe.keys()).forEach(ut),ve.value=[]}function mt(){return{notifications:e.readonly(ve),hasNotifications:e.computed(()=>ve.value.length>0),pushTaskNotificationToast:on,dismissTaskNotificationToast:At,clearTaskNotificationFeed:sn}}const Ve={created:".task.created",updated:".task.updated",statusChanged:".task.status_changed",assigned:".task.assigned",completed:".task.completed",commentAdded:".task.comment_added",checklistToggled:".task.checklist_toggled"},rn=["draft","open","in_progress","blocked","under_review","complete","cancelled"],dn=["none","low","medium","high","urgent","critical"],cn=["reminder","warning","due_now","overdue","escalated","critical"];function ue(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ce(t){return t==null||t===""?null:typeof t=="string"||typeof t=="number"?String(t):void 0}function nt(t){return typeof t=="string"&&rn.includes(t)}function un(t){return typeof t=="string"&&dn.includes(t)}function mn(t){return t==null||t===""?null:typeof t=="string"&&cn.includes(t)?t:void 0}function $e(t){if(t==null||t==="")return null;if(!ue(t))return;const a=t.id,n=t.name,o=t.avatar_url;if(!(typeof a!="string"&&typeof a!="number"||typeof n!="string"))return{id:String(a),name:n,...typeof o=="string"?{avatar_url:o}:{}}}function Be(t){if(!ue(t))return null;const a=t.id,n=t.display_number,o=t.display_number_formatted,l=t.title,i=t.status,r=t.priority,s=ce(t.assignee_id),_=ce(t.taskable_type),d=ce(t.taskable_id),V=$e(t.created_by),m=$e(t.primary_assignee),v=$e(t.completed_by),p=ce(t.due_at),k=mn(t.current_escalation_tier),B=ce(t.next_escalation_at),u=ce(t.escalation_acknowledged_at),c=ce(t.escalation_snoozed_until);return typeof a!="string"||typeof n!="string"&&typeof n!="number"||typeof o!="string"||typeof l!="string"||!nt(i)||!un(r)||s===void 0||_===void 0||d===void 0||V===void 0||m===void 0||v===void 0||p===void 0||k===void 0||B===void 0||u===void 0||c===void 0?null:{id:a,display_number:n,display_number_formatted:o,title:l,status:i,priority:r,assignee_id:s,taskable_type:_,taskable_id:d,created_by:V,primary_assignee:m,completed_by:v,due_at:p,current_escalation_tier:k,next_escalation_at:B,escalation_acknowledged_at:u,escalation_snoozed_until:c}}function zt(t){if(!ue(t))return null;const a=Be(t.task),n=t.changes;return a===null||!ue(n)?null:{task:a,changes:n}}function It(t){if(!ue(t))return null;const a=Be(t.task),n=t.old_status,o=t.new_status;return a===null||!nt(n)||!nt(o)?null:{task:a,old_status:n,new_status:o}}function xt(t){if(!ue(t))return null;const a=Be(t.task),n=ce(t.new_assignee_id),o=ce(t.old_assignee_id),l=$e(t.assigned_by);return a===null||n===void 0||o===void 0||l===void 0?null:{task:a,new_assignee_id:n,old_assignee_id:o,assigned_by:l}}function Ft(t){if(!ue(t))return null;const a=Be(t.task),n=$e(t.completed_by);return a===null||n===void 0?null:{task:a,completed_by:n}}function pn(t){if(!ue(t))return null;const a=t.id,n=$e(t.author),o=ce(t.author_id),l=t.visibility,i=t.preview,r=ce(t.created_at);return typeof a!="string"||n===void 0||o===void 0||l!=="team"&&l!=="private"||typeof i!="string"||r===void 0?null:{id:a,author:n,author_id:o,visibility:l,preview:i,created_at:r}}function Lt(t){if(!ue(t))return null;const a=Be(t.task),n=pn(t.comment);return a===null||n===null?null:{task:a,comment:n}}function kn(t){if(!ue(t))return null;const a=t.completed,n=t.total;return typeof a!="number"||typeof n!="number"?null:{completed:a,total:n}}function _n(t){if(!ue(t))return null;const a=t.id,n=t.title,o=t.is_completed,l=ce(t.completed_at),i=$e(t.completed_by),r=t.position;return typeof a!="string"||typeof n!="string"||typeof o!="boolean"||l===void 0||i===void 0||typeof r!="number"?null:{id:a,title:n,is_completed:o,completed_at:l,completed_by:i,position:r}}function Ut(t){if(!ue(t))return null;const a=Be(t.task),n=_n(t.item),o=kn(t.progress);return a===null||n===null||o===null?null:{task:a,item:n,progress:o}}function Rt(t){return Be(t)}function fn(){return typeof window>"u"?null:window.Echo??null}function Wt(t){try{return JSON.stringify(t)??"null"}catch{return"unserializable"}}function he(t){return t.display_number_formatted||String(t.display_number)}function Ne(t,a){switch(t){case"task.created":{const n=Rt(a);return n===null?null:`${t}:${n.id}`}case"task.updated":{const n=zt(a);return n===null?null:`${t}:${n.task.id}:${Wt(n.changes)}`}case"task.status_changed":{const n=It(a);return n===null?null:`${t}:${n.task.id}:${n.old_status}:${n.new_status}`}case"task.assigned":{const n=xt(a);return n===null?null:`${t}:${n.task.id}:${n.new_assignee_id??""}:${n.old_assignee_id??""}`}case"task.completed":{const n=Ft(a);return n===null?null:`${t}:${n.task.id}`}case"task.comment_added":{const n=Lt(a);return n===null?null:`${t}:${n.task.id}:${n.comment.id}`}case"task.checklist_toggled":{const n=Ut(a);return n===null?null:`${t}:${n.task.id}:${n.item.id}:${n.item.is_completed?"1":"0"}`}}}function Pt(t,a={}){const n=ze(),o=mt(),l=e.ref([]),i=e.ref(a.autoConnect??!0),r=e.ref(!1),s=e.computed(()=>r.value),_=new Map;function d(h){var L;r.value!==h&&(r.value=h,(L=a.onConnectionChange)==null||L.call(a,h))}function V(){return(typeof a.echo=="function"?a.echo():a.echo)??fn()}function m(h){return h===null||_.has(h)?!1:(_.set(h,setTimeout(()=>{const L=_.get(h);L!==void 0&&clearTimeout(L),_.delete(h)},1500)),!0)}function v(){Array.from(_.entries()).forEach(([h,L])=>{clearTimeout(L),_.delete(h)})}function p(h){var S;const L=o.pushTaskNotificationToast(h);(S=a.onToast)==null||S.call(a,L)}function k(h,L){const S=V();if(S===null)return;S.private(h.name).listen(Ve.created,f=>{var z;if(!m(Ne("task.created",f)))return;const $=Rt(f);$!==null&&(n.handleTaskCreated($),(z=a.onEvent)==null||z.call(a,"task.created",$))}).listen(Ve.updated,f=>{var z;if(!m(Ne("task.updated",f)))return;const $=zt(f);$!==null&&(n.handleTaskUpdated($),(z=a.onEvent)==null||z.call(a,"task.updated",$),n.isViewingTask($.task.id)&&n.fetchTask($.task.id),h.scope==="personal"&&p({id:`task.updated:${$.task.id}:${Wt($.changes)}`,kind:"update",title:`${he($.task)} updated`,body:$.task.title,taskId:$.task.id,taskNumber:he($.task),tone:"info",url:`/admin/tasks/${$.task.id}`}))}).listen(Ve.statusChanged,f=>{var z;if(!m(Ne("task.status_changed",f)))return;const $=It(f);$!==null&&(n.handleStatusChanged($),(z=a.onEvent)==null||z.call(a,"task.status_changed",$))}).listen(Ve.assigned,f=>{var z;if(!m(Ne("task.assigned",f)))return;const $=xt(f);$!==null&&(n.handleTaskAssigned($),(z=a.onEvent)==null||z.call(a,"task.assigned",$),h.scope==="personal"&&$.new_assignee_id===L&&p({id:`task.assigned:${$.task.id}:${$.new_assignee_id??""}`,kind:"assignment",title:`Assigned ${he($.task)}`,body:$.assigned_by===null?$.task.title:`${$.assigned_by.name} assigned ${$.task.title}`,taskId:$.task.id,taskNumber:he($.task),tone:"info",url:`/admin/tasks/${$.task.id}`}))}).listen(Ve.completed,f=>{var z;if(!m(Ne("task.completed",f)))return;const $=Ft(f);$!==null&&(n.handleTaskCompleted($),(z=a.onEvent)==null||z.call(a,"task.completed",$),h.scope==="personal"&&p({id:`task.completed:${$.task.id}`,kind:"completion",title:`${he($.task)} completed`,body:$.completed_by===null?$.task.title:`${$.completed_by.name} completed ${$.task.title}`,taskId:$.task.id,taskNumber:he($.task),tone:"success",url:`/admin/tasks/${$.task.id}`}))}).listen(Ve.commentAdded,f=>{var z;if(!m(Ne("task.comment_added",f)))return;const $=Lt(f);$!==null&&(n.handleCommentAdded($),(z=a.onEvent)==null||z.call(a,"task.comment_added",$),n.isViewingTask($.task.id)&&n.fetchTask($.task.id),h.scope==="personal"&&p({id:`task.comment_added:${$.task.id}:${$.comment.id}`,kind:"comment",title:`New comment on ${he($.task)}`,body:$.comment.author===null?$.comment.preview:`${$.comment.author.name}: ${$.comment.preview}`,taskId:$.task.id,taskNumber:he($.task),tone:"info",url:`/admin/tasks/${$.task.id}`}))}).listen(Ve.checklistToggled,f=>{var z;if(!m(Ne("task.checklist_toggled",f)))return;const $=Ut(f);$!==null&&(n.handleChecklistToggled($),(z=a.onEvent)==null||z.call(a,"task.checklist_toggled",$))})}function B(){const h=V();l.value.forEach(L=>{h==null||h.leave(L)}),l.value=[],d(!1)}function u(){i.value=!0}function c(){i.value=!1,B(),i.value=!0}const b=e.computed(()=>{const h=[],L=e.toValue(t);L!=null&&L!==""&&h.push({name:`tasks.user.${String(L)}`,scope:"personal"});const S=a.entity===void 0?null:e.toValue(a.entity);return S!=null&&S.type!==""&&S.id!==""&&h.push({name:`tasks.entity.${S.type}.${String(S.id)}`,scope:"entity"}),(a.teamIds===void 0?[]:e.toValue(a.teamIds)??[]).forEach(f=>{f==null||f===""||h.push({name:`tasks.team.${String(f)}`,scope:"team"})}),h});return e.watch(()=>({shouldConnect:i.value,targetNames:b.value.map(h=>h.name).join("|"),userId:String(e.toValue(t)??"")}),({shouldConnect:h,userId:L})=>{B(),v(),!(!h||L==="")&&(b.value.forEach(S=>{k(S,L)}),l.value=b.value.map(S=>S.name),d(l.value.length>0))},{immediate:!0}),e.onUnmounted(()=>{B(),v()}),{isConnected:s,activeChannels:l,connect:u,disconnect:()=>{i.value=!1,B()},reconnect:c}}function vn(t){switch(t){case"my-tasks-today":return"my_tasks_today";case"upcoming-this-week":return"upcoming_this_week";case"overdue-tracker":return"overdue";case"team-activity-feed":return"activity";case"my-stats":return"my_stats";case"task-health-alerts":return"health_alerts"}}function yn(t){switch(t){case"task.created":return["my-tasks-today","upcoming-this-week","team-activity-feed","task-health-alerts"];case"task.completed":return["my-stats","overdue-tracker","team-activity-feed","task-health-alerts"];case"task.assigned":return["my-tasks-today","overdue-tracker","team-activity-feed","task-health-alerts"];case"task.status_changed":return["my-tasks-today","upcoming-this-week","overdue-tracker","team-activity-feed","task-health-alerts"];case"task.updated":return["upcoming-this-week","overdue-tracker","team-activity-feed","task-health-alerts"];default:return["team-activity-feed","task-health-alerts"]}}function Ot(t,a={}){const n=e.ref(null),o=e.ref(!1),l=e.ref(!1),i=e.ref(null),r=e.ref({}),s=e.ref("week");function _(k,B){r.value={...r.value,[k]:B}}async function d(k=s.value){const B=e.toValue(t);if(B==null||B==="")return n.value=null,null;o.value=!0,i.value=null;try{const u=await M().getDashboard(k);return n.value=u,s.value=u.widgets.my_stats.period,u}catch(u){throw i.value=u instanceof Error?u.message:String(u),u}finally{o.value=!1}}async function V(k){n.value===null&&await d(),_(k,!0),i.value=null;try{let B;switch(k){case"my-tasks-today":B=await M().getDashboardMyTasksToday();break;case"upcoming-this-week":B=await M().getDashboardUpcoming();break;case"overdue-tracker":B=await M().getDashboardOverdue();break;case"team-activity-feed":B=await M().getDashboardActivity();break;case"my-stats":B=await M().getDashboardStats(s.value),s.value=B.period;break;case"task-health-alerts":B=await M().getDashboardHealthAlerts();break}return n.value!==null&&(n.value={...n.value,widgets:{...n.value.widgets,[vn(k)]:B}}),B}catch(B){throw i.value=B instanceof Error?B.message:String(B),B}finally{_(k,!1)}}async function m(k,B){var u;l.value=!0,i.value=null;try{const c=await M().updateDashboardConfig({layout:k,preferences:B??((u=n.value)==null?void 0:u.config.preferences)??{}});return n.value!==null&&(n.value={...n.value,config:c}),c}catch(c){throw i.value=c instanceof Error?c.message:String(c),c}finally{l.value=!1}}function v(k){n.value!==null&&(n.value={...n.value,config:{...n.value.config,layout:{widgets:k}}})}async function p(k){s.value=k,await V("my-stats")}return e.watch(()=>e.toValue(t),k=>{if(k==null||k===""){n.value=null;return}(a.autoLoad??!0)&&d()},{immediate:!0}),Pt(t,{echo:a.echo,autoConnect:a.autoConnect??!0,onEvent:k=>{yn(k).forEach(u=>{V(u)})}}),{dashboardData:n,loading:e.computed(()=>o.value),saving:e.computed(()=>l.value),error:e.computed(()=>i.value),widgetLoading:e.computed(()=>r.value),statsPeriod:e.computed(()=>s.value),loadDashboard:d,loadWidget:V,saveLayout:m,updateLayoutWidgets:v,setStatsPeriod:p}}function Ht(t){const a=ze();async function n(k){if(!k)return null;const B=await a.fetchTask(k);return await a.fetchActiveTimer(),B}async function o(k){var B;return(B=a.currentTask)!=null&&B.id?a.addComment(a.currentTask.id,k):null}async function l(){var k;return(k=a.currentTask)!=null&&k.id?a.acknowledgeEscalation(a.currentTask.id):null}async function i(k){var B;return(B=a.currentTask)!=null&&B.id?a.snoozeEscalation(a.currentTask.id,k):null}async function r(k){var B;return(B=a.currentTask)!=null&&B.id?a.addChecklistItem(a.currentTask.id,k):null}async function s(k){var B;return(B=a.currentTask)!=null&&B.id?a.toggleChecklistItem(a.currentTask.id,k):null}async function _(k){var B;return(B=a.currentTask)!=null&&B.id?a.removeChecklistItem(a.currentTask.id,k):null}function d(k){var B;return k??((B=a.currentTask)==null?void 0:B.id)??null}async function V(k){const B=d(k);return B?a.startTimer(B):null}async function m(k){const B=d(k);return B?a.stopTimer(B):null}async function v(k,B){const u=d(B);return u?a.addManualTimeEntry(u,k):null}async function p(k,B){const u=d(B);return u?a.deleteTimeEntry(u,k):null}return t!==void 0&&e.watch(()=>e.toValue(t),async k=>{await n(k)},{immediate:!0}),{task:e.computed(()=>a.currentTask),activeTimer:e.computed(()=>a.activeTimer),loading:e.computed(()=>a.loading),error:e.computed(()=>a.error),loadTask:n,addComment:o,acknowledgeEscalation:l,snoozeEscalation:i,addChecklistItem:r,toggleChecklistItem:s,removeChecklistItem:_,startTimer:V,stopTimer:m,addManualTimeEntry:v,deleteTimeEntry:p,completeTask:a.completeTask,reopenTask:a.reopenTask,cancelTask:a.cancelTask,updateTask:a.updateTask,deleteTask:a.deleteTask}}function jt(){const t=ct();function a(n){t.setFilters(n)}return{filters:e.computed(()=>t.filters),pagination:e.computed(()=>t.pagination),view:e.computed(()=>t.view),activeSavedFilterId:e.computed(()=>t.activeSavedFilterId),activeFilterCount:e.computed(()=>t.activeFilterCount),setFilter:t.setFilter,setFilters:a,setSort:t.setSort,setView:t.setView,setActiveSavedFilter:t.setActiveSavedFilter,clearFilters:t.clearFilters,nextPage:t.nextPage,previousPage:t.previousPage}}function gn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ze(t){if(!gn(t))return null;const a=t.id,n=t.name;return typeof a!="string"&&typeof a!="number"||typeof n!="string"?null:{id:String(a),name:n}}function bn(){return typeof window>"u"?null:window.Echo??null}function hn(t,a={}){const n=e.ref([]),o=e.ref(null),l=e.ref(a.autoConnect??!0),i=e.computed(()=>o.value!==null);function r(){const m=(typeof a.echo=="function"?a.echo():a.echo)??bn();if(m===null)throw new Error("Laravel Echo is not available for task presence.");return m}function s(V){n.value=V}function _(){l.value=!0}function d(){l.value=!1,o.value!==null&&(r().leave(o.value),o.value=null),s([])}return e.watch(()=>{const V=e.toValue(t),m=V==null?null:String(V);return l.value&&m!==""?`presence-tasks.viewing.${m}`:null},(V,m)=>{if(typeof m=="string"&&m!==V&&(r().leave(m),o.value=null,s([])),V===null||V===m)return;r().join(V).here(p=>{s(p.map(Ze).filter(k=>k!==null))}).joining(p=>{const k=Ze(p);k===null||n.value.some(B=>B.id===k.id)||s([...n.value,k])}).leaving(p=>{const k=Ze(p);k!==null&&s(n.value.filter(B=>B.id!==k.id))}),o.value=V},{immediate:!0}),e.onUnmounted(()=>{o.value!==null&&r().leave(o.value)}),{viewers:n,isConnected:i,connect:_,disconnect:d}}function qt(){const t=ze(),a=ct();async function n(){const s=await t.fetchSavedFilters();if(a.activeSavedFilterId===null){const _=s.find(d=>d.is_default);_!==void 0&&o(_)}return s}function o(s){const _={...s.filters,page:1,per_page:s.filters.per_page??a.filters.per_page??15};return a.setFilters(_),a.setActiveSavedFilter(s.id),_}async function l(s){const _=await t.createSavedFilter({name:s.name,filters:{...a.filters},is_default:s.is_default??!1,is_shared:s.is_shared??!1,position:s.position??t.savedFilters.length});return a.setActiveSavedFilter(_.id),_}async function i(s,_){const d=await t.updateSavedFilterRecord(s,_);return a.activeSavedFilterId===s&&_.filters!==void 0&&o(d),d}async function r(s){await t.deleteSavedFilterRecord(s),a.activeSavedFilterId===s&&a.setActiveSavedFilter(null)}return{savedFilters:e.computed(()=>t.savedFilters),loading:e.computed(()=>t.savedFiltersLoading),error:e.computed(()=>t.error),activeSavedFilterId:e.computed(()=>a.activeSavedFilterId),loadSavedFilters:n,applySavedFilter:o,saveCurrentFilter:l,updateSavedFilter:i,deleteSavedFilter:r}}function wn(t={}){const a=Mt(),n=e.ref(t.initialFilters??{});async function o(){await a.fetchWorkflows(n.value)}async function l(i){n.value={...i},await o()}return e.onMounted(()=>{(t.autoLoad??!0)&&o()}),{filters:e.computed(()=>n.value),workflows:e.computed(()=>a.workflows),pagination:e.computed(()=>a.pagination),currentWorkflow:e.computed(()=>a.currentWorkflow),testResult:e.computed(()=>a.testResult),logsByWorkflow:e.computed(()=>a.logsByWorkflow),loading:e.computed(()=>a.loading),saving:e.computed(()=>a.saving),error:e.computed(()=>a.error),reload:o,setFilters:l,fetchWorkflow:a.fetchWorkflow,createWorkflow:a.createWorkflow,updateWorkflow:a.updateWorkflow,deleteWorkflow:a.deleteWorkflow,toggleWorkflow:a.toggleWorkflow,duplicateWorkflow:a.duplicateWorkflow,moveWorkflow:a.moveWorkflow,fetchLogs:a.fetchLogs,runTest:a.runTest}}function Yt(){const t=M(),a=e.ref([]),n=e.ref(null),o=e.ref(!1),l=e.ref(!1),i=e.ref(null),r=e.ref({current_page:1,last_page:1,per_page:15,total:0});function s(u){i.value=u instanceof Error?u.message:String(u)}async function _(u={}){o.value=!0,i.value=null;try{const c=await t.listRecurring(u);a.value=c.data,r.value=c.meta}catch(c){s(c)}finally{o.value=!1}}async function d(u){o.value=!0,i.value=null;try{const c=await t.getRecurring(u);return n.value=c,c}catch(c){return s(c),null}finally{o.value=!1}}async function V(u){l.value=!0,i.value=null;try{const c=await t.createRecurring(u);return a.value.unshift(c),c}catch(c){return s(c),null}finally{l.value=!1}}async function m(u,c){var b;l.value=!0,i.value=null;try{const h=await t.updateRecurring(u,c),L=a.value.findIndex(S=>S.id===u);return L>=0&&a.value.splice(L,1,h),((b=n.value)==null?void 0:b.id)===u&&(n.value=h),h}catch(h){return s(h),null}finally{l.value=!1}}async function v(u){var c;l.value=!0,i.value=null;try{return await t.deleteRecurring(u),a.value=a.value.filter(b=>b.id!==u),((c=n.value)==null?void 0:c.id)===u&&(n.value=null),!0}catch(b){return s(b),!1}finally{l.value=!1}}async function p(u){l.value=!0,i.value=null;try{const c=await t.pauseRecurring(u),b=a.value.findIndex(h=>h.id===u);return b>=0&&a.value.splice(b,1,c),c}catch(c){return s(c),null}finally{l.value=!1}}async function k(u){l.value=!0,i.value=null;try{const c=await t.resumeRecurring(u),b=a.value.findIndex(h=>h.id===u);return b>=0&&a.value.splice(b,1,c),c}catch(c){return s(c),null}finally{l.value=!1}}async function B(u){l.value=!0,i.value=null;try{return await t.generateRecurring(u)}catch(c){return s(c),null}finally{l.value=!1}}return{templates:e.computed(()=>a.value),currentTemplate:e.computed(()=>n.value),loading:e.computed(()=>o.value),saving:e.computed(()=>l.value),error:e.computed(()=>i.value),pagination:e.computed(()=>r.value),loadTemplates:_,loadTemplate:d,createTemplate:V,updateTemplate:m,deleteTemplate:v,pauseTemplate:p,resumeTemplate:k,generateFromTemplate:B}}const En={draft:"Draft",open:"Open",in_progress:"In Progress",blocked:"Blocked",under_review:"Under Review",complete:"Complete",cancelled:"Cancelled"},Vn={none:"None",low:"Low",medium:"Medium",high:"High",urgent:"Urgent",critical:"Critical"},Nn={draft:"is-draft",open:"is-open",in_progress:"is-in-progress",blocked:"is-blocked",under_review:"is-under-review",complete:"is-complete",cancelled:"is-cancelled"},$n={draft:["draft","open","cancelled"],open:["open","in_progress","blocked","complete","cancelled"],in_progress:["in_progress","blocked","under_review","complete","cancelled"],blocked:["blocked","open","in_progress","cancelled"],under_review:["under_review","in_progress","complete","cancelled"],complete:["complete","open"],cancelled:["cancelled","open"]},Bn={none:"·",low:"↓",medium:"–",high:"↑",urgent:"⇈",critical:"!"},Tn={none:"is-none",low:"is-low",medium:"is-medium",high:"is-high",urgent:"is-urgent",critical:"is-critical"},Cn={reminder:"Reminder",warning:"Warning",due_now:"Due Now",overdue:"Overdue",escalated:"Escalated",critical:"Critical"},Sn={customer:"Customer",order:"Order",product:"Product","purchase-order":"Purchase Order",purchase_order:"Purchase Order",ticket:"Ticket"},Dn={no_deadline:"No deadline",upcoming:"Scheduled",reminder:"Due soon",warning:"Due within 24h",due_now:"Due now",overdue:"Overdue",escalated:"Escalated",critical:"Critical"};function lt(t){return En[t]}function Mn(t,a){return $n[t].includes(a)}function bt(t,a){return!(!Mn(t.status,a)||a==="in_progress"&&t.has_unresolved_blockers===!0)}function An(t){return Nn[t]}function zn(t){return Vn[t]}function In(t){return Bn[t]}function xn(t){return Tn[t]}function Fn(t){return{none:"#94a3b8",low:"#0f766e",medium:"#2563eb",high:"#d97706",urgent:"#dc2626",critical:"#7f1d1d"}[t]}function Ln(t){return t?Cn[t]:"No escalation"}function Kt(t){const a=t.trim();return a.includes("\\")?(a.split("\\").pop()??a).replace(/([a-z])([A-Z])/g,"$1_$2").toLowerCase().replace(/_+/g,"-"):a.toLowerCase()}function ot(t){if(!t)return"Record";const a=Kt(t);if(a==="")return"Record";const n=Sn[a];return n||a.split(/[_-]+/).filter(o=>o.length>0).map(o=>o.charAt(0).toUpperCase()+o.slice(1)).join(" ")}function pt(t,a){if(!t||!a)return"None";const n=a.trim();return n===""?ot(t):`${ot(t)} #${n}`}function Un(t,a=new Date){if(t.current_escalation_tier)return t.current_escalation_tier;if(!t.due_at)return"no_deadline";const o=(new Date(t.due_at).getTime()-a.getTime())/36e5;return o<=-24?o<=-48?"critical":"escalated":o<=-4?"overdue":o<=0?"due_now":t.is_overdue?"overdue":o<=24?"warning":o<=48?"reminder":"upcoming"}function Rn(t){return Dn[t]}function kt(t){return t?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"}).format(new Date(t)):"No due date"}function ie(t){return t?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}).format(new Date(t)):"Unknown time"}function ye(t,a=new Date){if(!t)return"Not scheduled";const o=new Date(t).getTime()-a.getTime(),l=Math.round(o/6e4);if(Math.abs(l)<1)return"Just now";const i=new Intl.RelativeTimeFormat("en-US",{numeric:"auto"});if(Math.abs(l)<60)return i.format(l,"minute");const r=Math.round(l/60);if(Math.abs(r)<24)return i.format(r,"hour");const s=Math.round(r/24);return i.format(s,"day")}function Qt(t){var a,n,o;if(t.changes&&t.action==="status_changed"){const l=t.changes;if((a=l.status)!=null&&a.old&&((n=l.status)!=null&&n.new))return`changed status from ${l.status.old.replace(/_/g," ")} to ${l.status.new.replace(/_/g," ")}.`;if((o=l.status)!=null&&o.new)return`set status to ${l.status.new.replace(/_/g," ")}.`}if(t.changes&&t.action==="updated"){const l=t.changes,i=Object.keys(l),r=i[0];if(i.length===1&&r!==void 0){const s=l[r];if((s==null?void 0:s.old)!==void 0)return`changed ${r.replace(/_/g," ")} from ${s.old??"none"} to ${s.new??"none"}.`}}return t.description?t.description:t.action.replace(/_/g," ")}const He=[{value:"MO",label:"Monday",shortLabel:"Mon"},{value:"TU",label:"Tuesday",shortLabel:"Tue"},{value:"WE",label:"Wednesday",shortLabel:"Wed"},{value:"TH",label:"Thursday",shortLabel:"Thu"},{value:"FR",label:"Friday",shortLabel:"Fri"},{value:"SA",label:"Saturday",shortLabel:"Sat"},{value:"SU",label:"Sunday",shortLabel:"Sun"}],Wn=["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","UTC"],je=new Map(He.map(t=>[t.value,t.label])),ht=He.map(t=>t.value),Pn=new Map([[1,"first"],[2,"second"],[3,"third"],[4,"fourth"],[-1,"last"]]);function Ae(t,a=1){const n=typeof t=="number"?t:Number.parseInt(String(t??""),10);return Number.isFinite(n)&&n>0?n:a}function On(t){return new Map(t.split(";").map(a=>a.trim()).filter(Boolean).map(a=>{const[n,o]=a.split("=");return[String(n??"").toUpperCase(),String(o??"").toUpperCase()]}))}function Gt(t){return[...t].sort((a,n)=>ht.indexOf(a)-ht.indexOf(n))}function wt(t){return t.length===0?"":t.length===1?t[0]??"":t.length===2?`${t[0]??""} and ${t[1]??""}`:`${t.slice(0,-1).join(", ")}, and ${t[t.length-1]??""}`}function Hn(t){const a=t%10,n=t%100;return a===1&&n!==11?`${t}st`:a===2&&n!==12?`${t}nd`:a===3&&n!==13?`${t}rd`:`${t}th`}function Le(t){return`FREQ=DAILY;INTERVAL=${Ae(t)}`}function jn(t,a){const n=Gt(a);return`FREQ=WEEKLY;INTERVAL=${Ae(t)};BYDAY=${n.join(",")}`}function qn(t,a){const n=Math.min(Math.max(Ae(a),1),31);return`FREQ=MONTHLY;INTERVAL=${Ae(t)};BYMONTHDAY=${n}`}function Yn(t,a,n){const o=[1,2,3,4,-1].includes(n)?n:1;return`FREQ=MONTHLY;INTERVAL=${Ae(t)};BYDAY=${a};BYSETPOS=${o}`}function Jt(t){const a=t.trim().toUpperCase(),n=On(a),o=n.get("FREQ"),l=Ae(n.get("INTERVAL"));if(o==="DAILY")return{mode:"daily",interval:l,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:a};if(o==="WEEKLY"){const i=Gt((n.get("BYDAY")??"").split(",").filter(r=>je.has(r)));if(i.length>0)return{mode:"weekly",interval:l,weeklyDays:i,monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:a}}if(o==="MONTHLY"){const i=Number.parseInt(n.get("BYMONTHDAY")??"",10);if(Number.isFinite(i))return{mode:"monthly",interval:l,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:Math.min(Math.max(i,1),31),monthlyWeekday:"MO",monthlySetPosition:1,raw:a};const r=n.get("BYDAY"),s=Number.parseInt(n.get("BYSETPOS")??"",10);if(r!==void 0&&je.has(r)&&Number.isFinite(s))return{mode:"monthly",interval:l,weeklyDays:["MO"],monthlyMode:"weekday",monthlyDay:1,monthlyWeekday:r,monthlySetPosition:s,raw:a}}return{mode:"custom",interval:1,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:t.trim()}}function Kn(t){const a=Jt(t);if(a.mode==="custom")return a.raw||"Custom recurrence rule";if(a.mode==="daily")return a.interval===1?"Every day":`Every ${a.interval} days`;if(a.mode==="weekly"){const i=a.weeklyDays.map(r=>je.get(r)).filter(r=>typeof r=="string");return a.interval===1?`Every ${wt(i)}`:a.interval===2&&i.length===1?`Every other ${i[0]??"week"}`:`Every ${a.interval} weeks on ${wt(i)}`}if(a.monthlyMode==="day_of_month"){const i=a.interval===1?"month":`${a.interval} months`;return`${Hn(a.monthlyDay)} of every ${i}`}const n=je.get(a.monthlyWeekday)??a.monthlyWeekday,o=Pn.get(a.monthlySetPosition)??`${a.monthlySetPosition}th`,l=a.interval===1?"month":`${a.interval} months`;return`${o} ${n} of every ${l}`}const Qn={class:"stats-widget","data-testid":"panel-my-stats"},Gn={class:"stats-widget__toggle",role:"group","aria-label":"Stats period"},Jn=["data-testid","aria-pressed","onClick"],Zn={class:"stats-widget__cards","data-testid":"list-stats-cards"},Xn=["data-testid","aria-label"],el=["data-testid"],tl=["aria-label"],al=["aria-label"],nl=e.defineComponent({__name:"MyStatsWidget",props:{stats:{}},emits:["update:period"],setup(t,{emit:a}){const n=a;function o(i){return i==="up"?"↑":i==="down"?"↓":"→"}const l=[{key:"tasks_completed",label:"Tasks Completed"},{key:"avg_cycle_hours",label:"Avg Cycle Hours"},{key:"on_time_percentage",label:"On-Time %"},{key:"tasks_created",label:"Tasks Created"}];return(i,r)=>(e.openBlock(),e.createElementBlock("section",Qn,[e.createElementVNode("header",Gn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["week","month"],s=>e.createElementVNode("button",{key:s,type:"button",class:e.normalizeClass({active:t.stats.period===s}),"data-testid":`btn-stats-period-${s}`,"aria-pressed":t.stats.period===s,onClick:_=>n("update:period",s)},e.toDisplayString(s),11,Jn)),64))]),e.createElementVNode("div",Zn,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,s=>e.createElementVNode("article",{key:s.key,class:"stats-widget__card","data-testid":`card-stat-${s.key}`,"aria-label":`${s.label}: ${t.stats.current[s.key]}`},[e.createElementVNode("small",null,e.toDisplayString(s.label),1),e.createElementVNode("strong",{"data-testid":`badge-stat-value-${s.key}`},e.toDisplayString(t.stats.current[s.key]),9,el),e.createElementVNode("span",{"aria-label":`Trend: ${o(t.stats.trends[s.key])} vs previous period`},e.toDisplayString(o(t.stats.trends[s.key]))+" vs previous",9,tl)],8,Xn)),64))]),e.createElementVNode("footer",{class:"stats-widget__footer","data-testid":"badge-streak-days","aria-label":`${t.stats.current.streak_days??0} day streak`},e.toDisplayString(t.stats.current.streak_days??0)+" day streak ",9,al)]))}}),K=(t,a)=>{const n=t.__vccOpts||t;for(const[o,l]of a)n[o]=l;return n},Zt=K(nl,[["__scopeId","data-v-242fabf1"]]),ll=["data-state","aria-label","title"],ol={class:"task-deadline-badge__icon","aria-hidden":"true"},sl={key:0,class:"task-deadline-badge__suffix"},il=e.defineComponent({__name:"TaskDeadlineBadge",props:{task:{},compact:{type:Boolean,default:!1},showRelative:{type:Boolean,default:!1},showNoDeadline:{type:Boolean,default:!0},now:{default:null}},setup(t){const a=t;function n(m){return m instanceof Date?m:typeof m=="string"?new Date(m):new Date}const o=e.computed(()=>n(a.now)),l=e.computed(()=>Un({due_at:a.task.due_at??null,current_escalation_tier:a.task.current_escalation_tier??null,is_overdue:a.task.is_overdue??!1},o.value)),i=e.computed(()=>Rn(l.value)),r=e.computed(()=>a.task.due_at?ye(a.task.due_at,o.value):null),s=e.computed(()=>`state-${l.value}`),_=e.computed(()=>l.value==="no_deadline"?a.showNoDeadline:l.value!=="upcoming"),d=e.computed(()=>({no_deadline:"○",upcoming:"•",reminder:"◔",warning:"◕",due_now:"!",overdue:"!!",escalated:"▲",critical:"!!!"})[l.value]),V=e.computed(()=>{if(l.value==="no_deadline")return"No deadline set";if(!a.task.due_at)return i.value;const m=[i.value,`due ${ie(a.task.due_at)}`];return r.value&&m.push(r.value),m.join(" • ")});return(m,v)=>_.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["task-deadline-badge",[s.value,{compact:t.compact}]]),"data-testid":"badge-task-deadline","data-state":l.value,"aria-label":V.value,title:V.value},[e.createElementVNode("span",ol,e.toDisplayString(d.value),1),e.createElementVNode("span",null,e.toDisplayString(i.value),1),t.showRelative&&r.value&&!t.compact?(e.openBlock(),e.createElementBlock("span",sl,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)],10,ll)):e.createCommentVNode("",!0)}}),ge=K(il,[["__scopeId","data-v-c5644ddc"]]),rl=["title","data-testid","aria-label"],dl={class:"task-priority-icon__glyph","aria-hidden":"true"},cl={key:0,class:"task-priority-icon__label","aria-hidden":"true"},ul=e.defineComponent({__name:"TaskPriorityIcon",props:{priority:{},compact:{type:Boolean}},setup(t){const a=t,n=e.computed(()=>zn(a.priority)),o=e.computed(()=>In(a.priority)),l=e.computed(()=>xn(a.priority));return(i,r)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["task-priority-icon",[l.value,{compact:t.compact}]]),title:n.value,"data-testid":`badge-priority-${t.priority}`,"aria-label":`Priority: ${n.value}`},[e.createElementVNode("span",dl,e.toDisplayString(o.value),1),t.compact?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",cl,e.toDisplayString(n.value),1))],10,rl))}}),Ie=K(ul,[["__scopeId","data-v-5827867c"]]),ml=["data-status"],pl=e.defineComponent({__name:"TaskStatusBadge",props:{status:{}},setup(t){const a=t,n=e.computed(()=>lt(a.status)),o=e.computed(()=>An(a.status));return(l,i)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["task-status-badge",o.value]),"data-status":t.status,"data-testid":"badge-task-status",role:"status"},e.toDisplayString(n.value),11,ml))}}),xe=K(pl,[["__scopeId","data-v-3be91cb9"]]),kl={class:"dashboard-widget","data-testid":"panel-my-tasks-today"},_l={key:0,class:"dashboard-widget__empty","data-testid":"status-my-tasks-empty"},fl={key:1,class:"dashboard-widget__list","data-testid":"list-my-tasks-today"},vl=["data-testid","aria-label","onClick"],yl={class:"dashboard-widget__task-main"},gl={class:"dashboard-widget__task-meta"},bl={class:"dashboard-widget__footer","data-testid":"status-my-tasks-summary"},hl=e.defineComponent({__name:"MyTasksToday",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const n=a;return(o,l)=>(e.openBlock(),e.createElementBlock("section",kl,[t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",_l,[...l[0]||(l[0]=[e.createElementVNode("strong",null,"All caught up!",-1),e.createElementVNode("p",null,"No tasks are due today.",-1)])])):(e.openBlock(),e.createElementBlock("ul",fl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,i=>(e.openBlock(),e.createElementBlock("li",{key:i.id},[e.createElementVNode("button",{type:"button",class:"dashboard-widget__task","data-testid":`item-task-${i.id}`,"aria-label":`${i.display_number_formatted}: ${i.title}${i.is_overdue?" (overdue)":""}`,onClick:r=>n("select-task",i.id)},[e.createElementVNode("div",yl,[e.createVNode(Ie,{priority:i.priority,compact:""},null,8,["priority"]),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(i.display_number_formatted),1),e.createElementVNode("p",null,e.toDisplayString(i.title),1)])]),e.createElementVNode("div",gl,[e.createVNode(ge,{task:i,compact:""},null,8,["task"]),e.createVNode(xe,{status:i.status},null,8,["status"]),e.createElementVNode("span",{class:e.normalizeClass({"is-overdue":i.is_overdue})},e.toDisplayString(e.unref(ye)(i.due_at)),3)])],8,vl)]))),128))])),e.createElementVNode("footer",bl,e.toDisplayString(t.widget.summary.due_today??0)+" due today, "+e.toDisplayString(t.widget.summary.overdue??0)+" overdue ",1)]))}}),Xt=K(hl,[["__scopeId","data-v-da91bfef"]]),wl={class:"overdue-tracker","data-testid":"panel-overdue-tracker"},El={key:0,class:"overdue-tracker__empty","data-testid":"status-overdue-empty"},Vl={key:1,class:"overdue-tracker__list","data-testid":"list-overdue-tasks"},Nl=["data-testid","aria-label","onClick"],$l={class:"overdue-tracker__meta"},Bl=e.defineComponent({__name:"OverdueTracker",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const n=a;function o(l){if(!l.due_at)return"is-low";const i=Math.abs((Date.now()-new Date(l.due_at).getTime())/36e5);return i>=72?"is-critical":i>=24?"is-high":"is-medium"}return(l,i)=>(e.openBlock(),e.createElementBlock("section",wl,[t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",El,"No overdue tasks.")):(e.openBlock(),e.createElementBlock("ul",Vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,r=>{var s,_;return e.openBlock(),e.createElementBlock("li",{key:r.id},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["overdue-tracker__row",o(r)]),"data-testid":`item-task-${r.id}`,"aria-label":`${r.display_number_formatted}: ${r.title}, assigned to ${((s=r.primary_assignee)==null?void 0:s.name)??"Unassigned"}, due ${e.unref(ye)(r.due_at)}`,onClick:d=>n("select-task",r.id)},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(r.display_number_formatted),1),e.createElementVNode("p",null,e.toDisplayString(r.title),1)]),e.createElementVNode("div",$l,[e.createElementVNode("span",null,e.toDisplayString(e.unref(ye)(r.due_at)),1),e.createElementVNode("small",null,e.toDisplayString(((_=r.primary_assignee)==null?void 0:_.name)??"Unassigned"),1)])],10,Nl)])}),128))]))]))}}),ea=K(Bl,[["__scopeId","data-v-97af3342"]]),Tl={class:"health-alerts","data-testid":"panel-task-health-alerts"},Cl={key:0,class:"health-alerts__empty","data-testid":"status-health-alerts-empty"},Sl=["data-testid"],Dl=["data-testid"],Ml=["data-testid","aria-label","onClick"],Al={class:"health-alerts__actions"},zl=["data-testid","aria-label","onClick"],Il=["data-testid","aria-label","onClick"],xl=e.defineComponent({__name:"TaskHealthAlerts",props:{widget:{}},emits:["select-task","action"],setup(t,{emit:a}){const n=t,o=a,l=e.ref({}),i=e.computed(()=>{const s=Date.now();return n.widget.items.filter(_=>(l.value[_.task.id]??0)<s).flatMap(_=>_.issues.map(d=>({issue:d,alert:_}))).reduce((_,d)=>{const V=d.issue.type;return _[V]=[..._[V]??[],d],_},{})});function r(s){l.value={...l.value,[s]:Date.now()+1440*60*1e3}}return(s,_)=>(e.openBlock(),e.createElementBlock("section",Tl,[Object.keys(i.value).length===0?(e.openBlock(),e.createElementBlock("div",Cl,"No tasks need attention.")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(d,V)=>{var m;return e.openBlock(),e.createElementBlock("article",{key:V,class:"health-alerts__group","data-testid":`panel-health-group-${V}`},[e.createElementVNode("header",null,e.toDisplayString((m=d[0])==null?void 0:m.issue.label),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d,v=>(e.openBlock(),e.createElementBlock("li",{key:`${V}-${v.alert.task.id}`},[e.createElementVNode("div",{class:"health-alerts__card","data-testid":`card-health-alert-${v.alert.task.id}`},[e.createElementVNode("button",{type:"button",class:"health-alerts__task","data-testid":`btn-health-alert-task-${v.alert.task.id}`,"aria-label":`View task ${v.alert.task.display_number_formatted}: ${v.alert.task.title}`,onClick:p=>o("select-task",v.alert.task.id)},[e.createElementVNode("strong",null,e.toDisplayString(v.alert.task.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(v.alert.task.title),1)],8,Ml),e.createElementVNode("p",null,e.toDisplayString(v.issue.message),1),e.createElementVNode("div",Al,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.issue.suggested_actions,p=>(e.openBlock(),e.createElementBlock("button",{key:p,type:"button","data-testid":`btn-health-action-${p}-${v.alert.task.id}`,"aria-label":`${p.replace(/_/g," ")} for task ${v.alert.task.display_number_formatted}`,onClick:k=>o("action",{taskId:v.alert.task.id,action:p})},e.toDisplayString(p.replace(/_/g," ")),9,zl))),128)),e.createElementVNode("button",{type:"button",class:"secondary","data-testid":`btn-snooze-alert-${v.alert.task.id}`,"aria-label":`Snooze alerts for task ${v.alert.task.display_number_formatted} for 24 hours`,onClick:p=>r(v.alert.task.id)},"Snooze 24h",8,Il)])],8,Dl)]))),128))])],8,Sl)}),128))]))}}),ta=K(xl,[["__scopeId","data-v-79a1caa4"]]),Fl={class:"activity-feed","data-testid":"panel-team-activity-feed"},Ll={class:"activity-feed__header"},Ul={"data-testid":"badge-activity-count"},Rl={key:0,class:"activity-feed__empty","data-testid":"status-activity-empty"},Wl={key:1,class:"activity-feed__list","data-testid":"list-activity-feed"},Pl=["data-testid"],Ol={class:"activity-feed__avatar","aria-hidden":"true"},Hl={class:"activity-feed__content"},jl=["data-testid","aria-label","onClick"],ql=e.defineComponent({__name:"TeamActivityFeed",props:{widget:{},scope:{}},emits:["select-task"],setup(t,{emit:a}){const n=a;return(o,l)=>(e.openBlock(),e.createElementBlock("section",Fl,[e.createElementVNode("header",Ll,[e.createElementVNode("strong",null,e.toDisplayString(t.scope==="team"?"Team feed":"My feed"),1),e.createElementVNode("span",Ul,e.toDisplayString(t.widget.summary.count??t.widget.items.length)+" items",1)]),t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",Rl,"No recent activity.")):(e.openBlock(),e.createElementBlock("ul",Wl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,i=>{var r,s,_;return e.openBlock(),e.createElementBlock("li",{key:i.id},[e.createElementVNode("div",{class:"activity-feed__item","data-testid":`item-activity-${i.id}`},[e.createElementVNode("div",Ol,e.toDisplayString(((s=(r=i.user)==null?void 0:r.name)==null?void 0:s.slice(0,1))??"?"),1),e.createElementVNode("div",Hl,[e.createElementVNode("p",null,[e.createElementVNode("strong",null,e.toDisplayString(((_=i.user)==null?void 0:_.name)??"System"),1),e.createTextVNode(" "+e.toDisplayString(e.unref(Qt)(i))+" ",1),i.task?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"activity-feed__task-link","data-testid":`btn-activity-task-${i.task.id}`,"aria-label":`View task ${i.task.display_number_formatted}`,onClick:d=>n("select-task",i.task.id)},e.toDisplayString(i.task.display_number_formatted),9,jl)):e.createCommentVNode("",!0)]),e.createElementVNode("small",null,e.toDisplayString(e.unref(ye)(i.created_at)),1)])],8,Pl)])}),128))]))]))}}),aa=K(ql,[["__scopeId","data-v-237c3c24"]]),Yl={class:"upcoming-grid","data-testid":"panel-upcoming-this-week"},Kl=["data-testid","aria-label"],Ql=["data-testid"],Gl=["data-testid"],Jl=["data-testid"],Zl=["data-testid","aria-label","onClick"],Xl=e.defineComponent({__name:"UpcomingThisWeek",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const n=a;return(o,l)=>(e.openBlock(),e.createElementBlock("section",Yl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.days,i=>(e.openBlock(),e.createElementBlock("article",{key:i.date,class:e.normalizeClass(["upcoming-grid__column",{"is-today":i.is_today}]),"data-testid":`panel-upcoming-day-${i.date}`,"aria-label":`${i.label}${i.is_today?" (today)":""}: ${i.tasks.length} task${i.tasks.length!==1?"s":""}`},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(i.label),1),e.createElementVNode("span",{"data-testid":`badge-day-task-count-${i.date}`},e.toDisplayString(i.tasks.length),9,Ql)]),i.tasks.length===0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"upcoming-grid__empty","data-testid":`status-day-empty-${i.date}`},"No tasks",8,Gl)):(e.openBlock(),e.createElementBlock("ul",{key:1,"data-testid":`list-day-tasks-${i.date}`},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.tasks,r=>(e.openBlock(),e.createElementBlock("li",{key:r.id},[e.createElementVNode("button",{type:"button","data-testid":`item-task-${r.id}`,"aria-label":`${r.display_number_formatted}: ${r.title}, due ${e.unref(ye)(r.due_at)}`,onClick:s=>n("select-task",r.id)},[e.createElementVNode("strong",null,e.toDisplayString(r.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(r.title),1),e.createVNode(ge,{task:r,compact:""},null,8,["task"]),e.createElementVNode("small",null,e.toDisplayString(e.unref(ye)(r.due_at)),1)],8,Zl)]))),128))],8,Jl))],10,Kl))),128))]))}}),na=K(Xl,[["__scopeId","data-v-de5be104"]]),eo={class:"widget-grid","data-testid":"panel-widget-grid"},to=["data-testid","aria-label","onDragstart","onDrop"],ao=e.defineComponent({__name:"WidgetGrid",props:{widgets:{}},emits:["update:widgets"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(null),i=e.computed(()=>[...n.widgets].filter(m=>m.visible!==!1).sort((m,v)=>m.y-v.y||m.x-v.x));function r(m){o("update:widgets",m(n.widgets.map(v=>({...v,...v.settings?{settings:{...v.settings}}:{}}))))}function s(m,v){m!==v&&r(p=>{const k=p.find(u=>u.id===m),B=p.find(u=>u.id===v);return k===void 0||B===void 0||([k.x,B.x]=[B.x,k.x],[k.y,B.y]=[B.y,k.y]),p})}function _(m,v){r(p=>p.map(k=>k.id!==m?k:v==="left"?{...k,x:Math.max(0,k.x-1)}:v==="right"?{...k,x:Math.min(11,k.x+1)}:v==="up"?{...k,y:Math.max(0,k.y-1)}:{...k,y:Math.max(0,k.y+1)}))}function d(m,v){r(p=>p.map(k=>k.id===m?{...k,w:Math.min(12,Math.max(2,k.w+v))}:k))}function V(m){return{gridColumn:`${m.x+1} / span ${m.w}`,gridRow:`${m.y+1} / span ${m.h}`}}return(m,v)=>(e.openBlock(),e.createElementBlock("div",eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock("article",{key:p.id,class:"widget-grid__item",style:e.normalizeStyle(V(p)),"data-testid":`panel-widget-grid-item-${p.id}`,draggable:"true","aria-label":`${p.id} widget, draggable`,onDragstart:k=>l.value=p.id,onDragend:v[0]||(v[0]=k=>l.value=null),onDragover:v[1]||(v[1]=e.withModifiers(()=>{},["prevent"])),onDrop:k=>l.value?s(l.value,p.id):null},[e.renderSlot(m.$slots,"default",{widget:p,move:k=>_(p.id,k),resize:k=>d(p.id,k)},void 0,!0)],44,to))),128))]))}}),la=K(ao,[["__scopeId","data-v-24cc5047"]]),no={class:"task-dashboard","data-testid":"panel-task-dashboard"},lo={class:"task-dashboard__header"},oo={class:"task-dashboard__eyebrow"},so={key:0,class:"task-dashboard__error","data-testid":"status-dashboard-error",role:"alert"},io={key:1,class:"task-dashboard__loading","data-testid":"status-dashboard-loading","aria-live":"polite"},ro={key:2,class:"task-dashboard__hidden","data-testid":"panel-hidden-widgets"},co=["data-testid","aria-label","onClick"],uo=["data-testid"],mo={class:"task-dashboard__panel-header"},po=["data-testid"],ko={class:"task-dashboard__panel-controls"},_o=["data-testid","onClick"],fo=["data-testid","onClick"],vo=["data-testid","onClick"],yo=["data-testid","onClick"],go=e.defineComponent({__name:"TaskDashboard",props:{userId:{},echo:{type:[Object,Function,null]},autoConnect:{type:Boolean}},emits:["select-task","widget-action"],setup(t,{emit:a}){const n=t,o=a,l=Ot(e.computed(()=>n.userId),{echo:n.echo,autoConnect:n.autoConnect??!0}),i=l.dashboardData,r=l.loading,s=l.error,_=l.widgetLoading,d=e.computed(()=>{var u;return((u=l.dashboardData.value)==null?void 0:u.config.layout.widgets.filter(c=>c.visible===!1))??[]});let V;function m(u){var c;return{"my-tasks-today":"My Tasks Today","upcoming-this-week":"Upcoming This Week","overdue-tracker":"Overdue Tracker","team-activity-feed":((c=l.dashboardData.value)==null?void 0:c.scope)==="team"?"Team Activity":"My Activity","my-stats":"My Stats","task-health-alerts":"Task Health Alerts"}[u]??u}function v(){l.dashboardData.value!==null&&(V!==void 0&&clearTimeout(V),V=setTimeout(()=>{l.dashboardData.value!==null&&l.saveLayout(l.dashboardData.value.config.layout)},300))}function p(u){l.updateLayoutWidgets(u),v()}function k(u){var b;const c=(b=l.dashboardData.value)==null?void 0:b.config.layout.widgets.map(h=>h.id===u?{...h,visible:!0}:h);c!==void 0&&p(c)}function B(u){o("select-task",u)}return e.onBeforeUnmount(()=>{V!==void 0&&clearTimeout(V)}),(u,c)=>{var b;return e.openBlock(),e.createElementBlock("section",no,[e.createElementVNode("header",lo,[e.createElementVNode("div",null,[e.createElementVNode("p",oo,e.toDisplayString(((b=e.unref(i))==null?void 0:b.scope)==="team"?"Operations command center":"Personal command center"),1),c[2]||(c[2]=e.createElementVNode("h2",null,"Task Dashboard",-1))]),e.createElementVNode("button",{type:"button",class:"task-dashboard__refresh","data-testid":"btn-refresh-dashboard",onClick:c[0]||(c[0]=h=>e.unref(l).loadDashboard())}," Refresh ")]),e.unref(s)?(e.openBlock(),e.createElementBlock("p",so,e.toDisplayString(e.unref(s)),1)):e.unref(r)&&e.unref(i)===null?(e.openBlock(),e.createElementBlock("p",io,"Loading dashboard…")):e.createCommentVNode("",!0),d.value.length>0?(e.openBlock(),e.createElementBlock("div",ro,[c[3]||(c[3]=e.createElementVNode("span",null,"Hidden widgets",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,h=>(e.openBlock(),e.createElementBlock("button",{key:h.id,type:"button","data-testid":`btn-restore-widget-${h.id}`,"aria-label":`Show ${m(h.id)} widget`,onClick:L=>k(h.id)}," Show "+e.toDisplayString(m(h.id)),9,co))),128))])):e.createCommentVNode("",!0),e.unref(i)?(e.openBlock(),e.createBlock(la,{key:3,widgets:e.unref(i).config.layout.widgets,"onUpdate:widgets":p},{default:e.withCtx(({widget:h,move:L,resize:S})=>[e.createElementVNode("section",{class:"task-dashboard__panel","data-testid":`panel-widget-${h.id}`},[e.createElementVNode("header",mo,[e.createElementVNode("div",null,[e.createElementVNode("h3",null,e.toDisplayString(m(h.id)),1),e.unref(_)[h.id]?(e.openBlock(),e.createElementBlock("small",{key:0,"data-testid":`status-widget-refreshing-${h.id}`,"aria-live":"polite"},"Refreshing…",8,po)):e.createCommentVNode("",!0)]),e.createElementVNode("div",ko,[e.createElementVNode("button",{type:"button","aria-label":"Move left","data-testid":`btn-widget-move-left-${h.id}`,onClick:w=>L("left")},"←",8,_o),e.createElementVNode("button",{type:"button","aria-label":"Move right","data-testid":`btn-widget-move-right-${h.id}`,onClick:w=>L("right")},"→",8,fo),e.createElementVNode("button",{type:"button","aria-label":"Grow widget","data-testid":`btn-widget-grow-${h.id}`,onClick:w=>S(1)},"+",8,vo),e.createElementVNode("button",{type:"button","aria-label":"Shrink widget","data-testid":`btn-widget-shrink-${h.id}`,onClick:w=>S(-1)},"−",8,yo)])]),h.id==="my-tasks-today"?(e.openBlock(),e.createBlock(Xt,{key:0,widget:e.unref(i).widgets.my_tasks_today,onSelectTask:B},null,8,["widget"])):h.id==="upcoming-this-week"?(e.openBlock(),e.createBlock(na,{key:1,widget:e.unref(i).widgets.upcoming_this_week,onSelectTask:B},null,8,["widget"])):h.id==="overdue-tracker"?(e.openBlock(),e.createBlock(ea,{key:2,widget:e.unref(i).widgets.overdue,onSelectTask:B},null,8,["widget"])):h.id==="team-activity-feed"?(e.openBlock(),e.createBlock(aa,{key:3,widget:e.unref(i).widgets.activity,scope:e.unref(i).scope,onSelectTask:B},null,8,["widget","scope"])):h.id==="my-stats"?(e.openBlock(),e.createBlock(Zt,{key:4,stats:e.unref(i).widgets.my_stats,"onUpdate:period":e.unref(l).setStatsPeriod},null,8,["stats","onUpdate:period"])):h.id==="task-health-alerts"?(e.openBlock(),e.createBlock(ta,{key:5,widget:e.unref(i).widgets.health_alerts,onSelectTask:B,onAction:c[1]||(c[1]=w=>o("widget-action",w))},null,8,["widget"])):e.createCommentVNode("",!0)],8,uo)]),_:1},8,["widgets"])):e.createCommentVNode("",!0)])}}}),oa=K(go,[["__scopeId","data-v-82b54361"]]),bo={class:"task-workload-panel","data-testid":"panel-task-workload"},ho={class:"task-workload-panel__summary"},wo={key:0,class:"task-workload-panel__empty","data-testid":"status-task-workload-empty"},Eo={key:1,class:"task-workload-panel__list","data-testid":"list-task-workload-users"},Vo=["data-testid","onClick"],No=e.defineComponent({__name:"TaskWorkloadPanel",props:{summary:{},limit:{default:6}},emits:["select-user"],setup(t,{emit:a}){const n=t,o=a,l=e.computed(()=>{var r;return(((r=n.summary)==null?void 0:r.workload_per_user)??[]).slice(0,n.limit)});function i(r){return`task-workload-panel__chip--${r.workload_status}`}return(r,s)=>{var _,d,V;return e.openBlock(),e.createElementBlock("section",bo,[e.createElementVNode("header",ho,[e.createElementVNode("article",null,[s[0]||(s[0]=e.createElementVNode("span",null,"Open",-1)),e.createElementVNode("strong",null,e.toDisplayString(((_=t.summary)==null?void 0:_.total_open)??0),1)]),e.createElementVNode("article",null,[s[1]||(s[1]=e.createElementVNode("span",null,"Overdue",-1)),e.createElementVNode("strong",null,e.toDisplayString(((d=t.summary)==null?void 0:d.total_overdue)??0),1)]),e.createElementVNode("article",null,[s[2]||(s[2]=e.createElementVNode("span",null,"Blocked",-1)),e.createElementVNode("strong",null,e.toDisplayString(((V=t.summary)==null?void 0:V.total_blocked)??0),1)])]),l.value.length===0?(e.openBlock(),e.createElementBlock("p",wo," No workload data yet. ")):(e.openBlock(),e.createElementBlock("ul",Eo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m.user_id},[e.createElementVNode("button",{type:"button",class:"task-workload-panel__row","data-testid":`item-task-workload-${m.user_id}`,onClick:v=>o("select-user",m.user_id)},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(m.user_name),1),e.createElementVNode("p",null,e.toDisplayString(m.workload_summary),1)]),e.createElementVNode("span",{class:e.normalizeClass(["task-workload-panel__chip",i(m)])},e.toDisplayString(m.workload_status),3)],8,Vo)]))),128))]))])}}}),$o=K(No,[["__scopeId","data-v-4dc515ad"]]),Bo=["data-tier"],To={key:0,class:"escalation-badge__icon","aria-hidden":"true"},Co={key:1,class:"escalation-badge__suffix"},So=e.defineComponent({__name:"EscalationBadge",props:{tier:{},acknowledgedAt:{},snoozedUntil:{},compact:{type:Boolean}},setup(t){const a=t,n=e.computed(()=>Ln(a.tier)),o=e.computed(()=>a.tier?`tier-${a.tier}`:"tier-none"),l=e.computed(()=>a.snoozedUntil?"Snoozed":a.acknowledgedAt?"Ack":null),i=e.computed(()=>{switch(a.tier){case"reminder":return"•";case"warning":return"◔";case"due_now":return"!";case"overdue":return"!!";case"escalated":return"▲";case"critical":return"!!!";default:return null}});return(r,s)=>t.tier?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["escalation-badge",[o.value,{compact:t.compact,muted:t.acknowledgedAt,snoozed:t.snoozedUntil}]]),"data-testid":"badge-escalation","data-tier":t.tier},[i.value?(e.openBlock(),e.createElementBlock("span",To,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(n.value),1),l.value?(e.openBlock(),e.createElementBlock("span",Co,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)],10,Bo)):e.createCommentVNode("",!0)}}),Ye=K(So,[["__scopeId","data-v-e454b2a6"]]),Do=["data-testid","aria-label","onKeydown"],Mo={class:"task-card__header"},Ao={class:"task-card__identity"},zo={class:"task-card__number"},Io={class:"task-card__title"},xo={class:"task-card__meta"},Fo={key:0,class:"task-card__lock","aria-label":"Blocked task"},Lo={key:0,class:"task-card__description"},Uo={class:"task-card__footer"},Ro={class:"task-card__person"},Wo={class:"task-card__person-value"},Po={class:"task-card__date"},Oo={class:"task-card__person-value"},Ho=["aria-label"],jo={class:"task-card__progress-bar","aria-hidden":"true"},qo={class:"task-card__progress-label","aria-hidden":"true"},Yo={key:2,class:"task-card__tags","aria-label":"Tags"},Ko=e.defineComponent({__name:"TaskCard",props:{task:{},compact:{type:Boolean}},emits:["select"],setup(t,{emit:a}){const n=t,o=a,l=e.computed(()=>kt(n.task.due_at??null)),i=e.computed(()=>{var V;return((V=n.task.tags)==null?void 0:V.slice(0,n.compact?2:4))??[]}),r=e.computed(()=>n.task.has_unresolved_blockers===!0||n.task.status==="blocked"),s=e.computed(()=>{const V=n.task.checklist_progress;return!V||V.total===0?0:Math.min(100,Math.round(V.completed/V.total*100))}),_=e.computed(()=>n.task.current_escalation_tier?`escalation-${n.task.current_escalation_tier}`:"");function d(){o("select",n.task.id)}return(V,m)=>{var v;return e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["task-card",[_.value,{compact:t.compact,overdue:t.task.is_overdue}]]),"data-testid":`card-task-${t.task.id}`,"aria-label":`Task ${t.task.display_number_formatted}: ${t.task.title}`,role:"button",tabindex:"0",onClick:d,onKeydown:e.withKeys(e.withModifiers(d,["prevent"]),["enter"])},[e.createElementVNode("header",Mo,[e.createElementVNode("div",Ao,[e.createElementVNode("span",zo,e.toDisplayString(t.task.display_number_formatted),1),e.createElementVNode("h3",Io,e.toDisplayString(t.task.title),1)]),e.createElementVNode("div",xo,[r.value?(e.openBlock(),e.createElementBlock("span",Fo," Lock ")):e.createCommentVNode("",!0),e.createVNode(ge,{task:t.task,compact:""},null,8,["task"]),e.createVNode(Ye,{tier:t.task.current_escalation_tier??null,"acknowledged-at":t.task.escalation_acknowledged_at??null,"snoozed-until":t.task.escalation_snoozed_until??null,compact:""},null,8,["tier","acknowledged-at","snoozed-until"]),e.createVNode(Ie,{priority:t.task.priority,compact:""},null,8,["priority"]),e.createVNode(xe,{status:t.task.status},null,8,["status"])])]),t.task.description&&!t.compact?(e.openBlock(),e.createElementBlock("p",Lo,e.toDisplayString(t.task.description),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Uo,[e.createElementVNode("div",Ro,[m[0]||(m[0]=e.createElementVNode("span",{class:"task-card__person-label"},"Assignee",-1)),e.createElementVNode("span",Wo,e.toDisplayString(((v=t.task.primary_assignee)==null?void 0:v.name)??"Unassigned"),1)]),e.createElementVNode("div",Po,[m[1]||(m[1]=e.createElementVNode("span",{class:"task-card__person-label"},"Deadline",-1)),e.createElementVNode("span",Oo,e.toDisplayString(l.value),1)])]),t.task.checklist_progress&&t.task.checklist_progress.total>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"task-card__progress","aria-label":`Checklist progress: ${t.task.checklist_progress.completed} of ${t.task.checklist_progress.total} items complete`},[e.createElementVNode("div",jo,[e.createElementVNode("div",{class:"task-card__progress-fill",style:e.normalizeStyle({width:`${s.value}%`})},null,4)]),e.createElementVNode("span",qo,e.toDisplayString(t.task.checklist_progress.completed)+"/"+e.toDisplayString(t.task.checklist_progress.total),1)],8,Ho)):e.createCommentVNode("",!0),i.value.length>0?(e.openBlock(),e.createElementBlock("ul",Yo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,p=>(e.openBlock(),e.createElementBlock("li",{key:p.id,class:"task-card__tag"},[e.createElementVNode("span",{class:"task-card__tag-dot",style:e.normalizeStyle({backgroundColor:p.color??"#94a3b8"}),"aria-hidden":"true"},null,4),e.createTextVNode(" "+e.toDisplayString(p.name),1)]))),128))])):e.createCommentVNode("",!0)],42,Do)}}}),_t=K(Ko,[["__scopeId","data-v-c2a57a3e"]]),Qo={class:"task-board-view","aria-label":"Task board","data-testid":"panel-task-board"},Go={class:"task-board-view__header"},Jo={key:0,class:"task-board-view__error",role:"alert","data-testid":"status-board-error"},Zo={class:"task-board-view__columns","data-testid":"list-board-columns"},Xo=["data-testid","onDragover","onDrop"],es={class:"task-board-view__column-header"},ts=["data-testid","aria-label"],as=["data-testid"],ns=["data-testid"],ls=["data-testid","onDragstart"],os=e.defineComponent({__name:"TaskBoardView",props:{tasks:{},loading:{type:Boolean},visibleStatuses:{},updateTaskStatus:{type:[Function,null]}},emits:["select-task","status-change"],setup(t,{emit:a}){const n=["draft","open","in_progress","blocked","under_review","complete","cancelled"],o=t,l=a,i=e.ref([]),r=e.ref(null),s=e.ref(null),_=e.ref(null);e.watch(()=>o.tasks,u=>{i.value=u.map(c=>({...c}))},{immediate:!0,deep:!0});const d=e.computed(()=>o.visibleStatuses??n),V=e.computed(()=>({draft:i.value.filter(u=>u.status==="draft"),open:i.value.filter(u=>u.status==="open"),in_progress:i.value.filter(u=>u.status==="in_progress"),blocked:i.value.filter(u=>u.status==="blocked"),under_review:i.value.filter(u=>u.status==="under_review"),complete:i.value.filter(u=>u.status==="complete"),cancelled:i.value.filter(u=>u.status==="cancelled")}));function m(u,c){var b,h,L;r.value=u,_.value=null,(b=c.dataTransfer)==null||b.setData("text/plain",u),(L=(h=c.dataTransfer)==null?void 0:h.setDragImage)==null||L.call(h,c.currentTarget,20,20)}function v(){r.value=null,s.value=null}function p(){return i.value.find(u=>u.id===r.value)}function k(u){const c=p();return c===void 0?!1:bt(c,u)}async function B(u){var h;const c=p();if(c===void 0){v();return}if(!bt(c,u)){_.value=`Task ${c.display_number_formatted} cannot move to ${lt(u)}.`,v();return}const b=c.status;c.status=u,l("status-change",{taskId:c.id,status:u});try{await((h=o.updateTaskStatus)==null?void 0:h.call(o,c.id,u))}catch(L){c.status=b,_.value=L instanceof Error?L.message:"Unable to update the task status."}finally{v()}}return(u,c)=>(e.openBlock(),e.createElementBlock("section",Qo,[e.createElementVNode("header",Go,[c[2]||(c[2]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Board"),e.createElementVNode("p",null,"Drag tasks between status columns to keep work moving.")],-1)),_.value?(e.openBlock(),e.createElementBlock("p",Jo,e.toDisplayString(_.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Zo,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,b=>(e.openBlock(),e.createElementBlock("section",{key:b,class:e.normalizeClass(["task-board-view__column",{"is-hovered":s.value===b,"is-invalid":s.value===b&&r.value!==null&&!k(b)}]),"data-testid":`panel-board-column-${b}`,onDragover:e.withModifiers(h=>s.value=b,["prevent"]),onDragleave:c[1]||(c[1]=h=>s.value=null),onDrop:e.withModifiers(h=>B(b),["prevent"])},[e.createElementVNode("header",es,[e.createElementVNode("div",null,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(lt)(b)),1),e.createElementVNode("span",{"data-testid":`badge-column-count-${b}`,"aria-label":`${V.value[b].length} tasks`},e.toDisplayString(V.value[b].length),9,ts)])]),e.createElementVNode("div",{class:"task-board-view__column-body","data-testid":`list-column-tasks-${b}`},[V.value[b].length===0&&!t.loading?(e.openBlock(),e.createElementBlock("p",{key:0,class:"task-board-view__empty","data-testid":`panel-empty-column-${b}`}," Nothing here. ",8,ns)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(V.value[b],h=>(e.openBlock(),e.createElementBlock("div",{key:h.id,class:"task-board-view__card",draggable:"true","data-testid":`card-task-${h.id}`,onDragstart:L=>m(h.id,L),onDragend:v},[e.createVNode(_t,{task:h,compact:"",onSelect:c[0]||(c[0]=L=>l("select-task",L))},null,8,["task"])],40,ls))),128))],8,as)],42,Xo))),128))])]))}}),ss=K(os,[["__scopeId","data-v-d1d142e1"]]),is={class:"task-assignee-picker__control"},rs=["value","data-testid","aria-label","aria-expanded","aria-activedescendant","disabled","placeholder"],ds=["data-testid","data-placement"],cs={key:0,class:"task-assignee-picker__hint","data-testid":"status-assignee-ranking"},us={key:1,class:"task-assignee-picker__status","data-testid":"status-assignee-loading"},ms={key:2,class:"task-assignee-picker__status task-assignee-picker__status--error","data-testid":"status-assignee-error"},ps={key:3,class:"task-assignee-picker__status","data-testid":"status-assignee-empty"},ks=["id","data-testid","aria-selected","onMouseenter","onClick"],_s={class:"task-assignee-picker__heading"},fs={key:0,class:"task-assignee-picker__recommendation","data-testid":"status-assignee-recommended"},vs={key:0,class:"task-assignee-picker__subtitle"},ys={key:1,class:"task-assignee-picker__meta"},gs={key:2,class:"task-assignee-picker__workload"},bs=e.defineComponent({__name:"TaskAssigneePicker",props:{modelValue:{default:null},selectedUser:{default:null},disabled:{type:Boolean,default:!1},placeholder:{default:"Search employees by name or email"},ariaLabel:{default:"Search assignees"},inputTestId:{default:"input-task-assignee"},listTestId:{default:"list-assignee-results"},rankByWorkload:{type:Boolean,default:!1},showWorkload:{type:Boolean,default:!0}},emits:["update:modelValue","select"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(null),i=e.ref(null),r=e.ref(null),s=e.ref(""),_=e.ref(null),d=e.ref([]),V=e.ref(0),m=e.ref(!1),v=e.ref(!1),p=e.ref(null),k=e.ref("bottom"),B=e.ref({position:"fixed",top:"-9999px",left:"0px",width:"0px",maxHeight:"320px",transform:"none",zIndex:"5000",pointerEvents:"auto"});let u=null,c=0,b=!1;const L=`task-assignee-results-${Math.random().toString(36).slice(2,10)}`,S=e.computed(()=>{const x=d.value[V.value];return x===void 0?void 0:`${L}-${x.id}`}),w=e.computed(()=>{var j;const x=((j=_.value)==null?void 0:j.label)??"",H=s.value.trim()!==""&&s.value.trim()!==x.trim();return v.value||p.value!==null||H&&d.value.length===0}),f=e.computed(()=>n.rankByWorkload&&n.showWorkload&&d.value.some(x=>x.workload!==null)),$=e.computed(()=>m.value&&(d.value.length>0||w.value));function z(x){if(x==null)return null;const H="subtitle"in x&&typeof x.subtitle=="string"&&x.subtitle.trim()!==""?x.subtitle.trim():null,j="email"in x&&typeof x.email=="string"&&x.email.trim()!==""?x.email.trim():null,Q=H??j,ae="label"in x&&typeof x.label=="string"&&x.label.trim()!==""?x.label.trim():Q===null?x.name:`${x.name} - ${Q}`;return{id:String(x.id),name:x.name,email:j,label:ae,subtitle:Q,department:"department"in x&&typeof x.department=="string"&&x.department.trim()!==""?x.department.trim():null,position:"position"in x&&typeof x.position=="string"&&x.position.trim()!==""?x.position.trim():null,role_names:"role_names"in x&&Array.isArray(x.role_names)?x.role_names.filter(oe=>typeof oe=="string"&&oe.trim()!==""):[],workload:"workload"in x&&x.workload?x.workload:null,...x.avatar_url?{avatar_url:x.avatar_url}:{}}}function q(x){return n.rankByWorkload?[...x].sort((H,j)=>{var oe,pe;const Q=((oe=H.workload)==null?void 0:oe.workload_score)??0,ae=((pe=j.workload)==null?void 0:pe.workload_score)??0;return Q!==ae?Q-ae:H.name.localeCompare(j.name)}):x}function te(x){return[x.position,x.department,...(x.role_names??[]).slice(0,1)].filter(H=>typeof H=="string"&&H.trim()!=="")}function U(x){return x.workload?`task-assignee-picker__workload--${x.workload.workload_status}`:null}function Y(x,H){return n.rankByWorkload&&H===0&&x.workload!==null&&d.value.length>0}function G(){var x;s.value=((x=_.value)==null?void 0:x.label)??""}function ee(){u!==null&&(clearTimeout(u),u=null)}function O(){d.value=[],V.value=0}function A(){if(i.value===null||!$.value)return;const x=i.value.getBoundingClientRect(),H=window.innerWidth,j=window.innerHeight,Q=8,ae=Math.min(x.width,H-Q*2),oe=Math.min(Math.max(Q,x.left),Math.max(Q,H-ae-Q)),pe=j-x.bottom-Q,Ee=x.top-Q,_e=pe<240&&Ee>pe,Te=Math.max(140,_e?Ee:pe);k.value=_e?"top":"bottom",B.value={position:"fixed",top:`${_e?x.top-Q:x.bottom+Q}px`,left:`${oe}px`,width:`${ae}px`,maxHeight:`${Math.min(320,Te)}px`,transform:_e?"translateY(-100%)":"none",zIndex:"5000",pointerEvents:"auto"}}function ne(){e.nextTick(()=>{A()})}function W(){b||(window.addEventListener("resize",A),document.addEventListener("scroll",A,!0),b=!0)}function T(){b&&(window.removeEventListener("resize",A),document.removeEventListener("scroll",A,!0),b=!1)}function F(){if(m.value=!1,O(),p.value=null,_.value!==null){G();return}s.value=""}async function D(x){const H=x.trim();if(H===""){_.value=null,s.value="";return}const j=++c;v.value=!0;try{const Q=await Pe.searchUsers(H,{limit:1});if(j!==c)return;const ae=Q.find(oe=>oe.id===H)??Q[0]??null;_.value=ae,G()}catch{if(j!==c)return;_.value=null,s.value=H}finally{j===c&&(v.value=!1)}}async function E(x){const H=x.trim();if(H===""){v.value=!1,p.value=null,O();return}const j=++c;v.value=!0,p.value=null;try{const Q=await Pe.searchUsers(H,{limit:8});if(j!==c)return;d.value=q(Q),V.value=0}catch{if(j!==c)return;O(),p.value="Unable to search employees right now."}finally{j===c&&(v.value=!1)}}function g(x){ee(),u=setTimeout(()=>{E(x)},200)}function C(x){_.value=x,o("update:modelValue",x.id),o("select",x),G(),m.value=!1,p.value=null,O()}function I(){var x;ee(),c+=1,_.value=null,s.value="",m.value=!1,p.value=null,O(),o("update:modelValue",null),o("select",null),(x=i.value)==null||x.focus()}function J(x){const j=x.target.value;if(s.value=j,m.value=!0,p.value=null,_.value!==null&&(_.value=null,o("update:modelValue",null),o("select",null)),j.trim()===""){ee(),O();return}g(j)}function le(){n.disabled||(m.value=!0,_.value===null&&s.value.trim()!==""&&d.value.length===0&&g(s.value))}function me(x){var j,Q;const H=x.relatedTarget;H!==null&&((j=l.value)!=null&&j.contains(H)||(Q=r.value)!=null&&Q.contains(H))||F()}function Z(x){if(x.key==="Escape"){x.preventDefault(),F();return}if(d.value.length!==0){if(x.key==="ArrowDown"){x.preventDefault(),m.value=!0,V.value=(V.value+1)%d.value.length;return}if(x.key==="ArrowUp"){x.preventDefault(),m.value=!0,V.value=V.value<=0?d.value.length-1:V.value-1;return}if(x.key==="Enter"&&m.value){const H=d.value[V.value];H!==void 0&&(x.preventDefault(),C(H))}}}return e.watch($,x=>{if(x){W(),ne();return}T()},{immediate:!0}),e.watch(()=>[$.value,d.value.length,v.value,p.value],([x])=>{x&&ne()}),e.watch(()=>n.selectedUser,x=>{const H=z(x);H!==null&&(_.value=H,G())},{immediate:!0}),e.watch(()=>n.modelValue,x=>{var Q;const H=x==null||x===""?null:String(x),j=((Q=_.value)==null?void 0:Q.id)??null;if(H===j){H===null&&(_.value=null,s.value="");return}if(H===null){if(_.value===null&&s.value.trim()!=="")return;_.value=null,s.value="",O();return}D(H)},{immediate:!0}),e.onBeforeUnmount(()=>{ee(),T()}),(x,H)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"rootRef",ref:l,class:e.normalizeClass(["task-assignee-picker",{"is-disabled":t.disabled}]),onFocusout:me},[e.createElementVNode("div",is,[e.createElementVNode("input",{ref_key:"inputRef",ref:i,value:s.value,type:"text","data-testid":t.inputTestId,class:"task-assignee-picker__input","aria-label":t.ariaLabel,"aria-autocomplete":"list","aria-haspopup":"listbox","aria-controls":L,"aria-expanded":m.value,"aria-activedescendant":S.value,disabled:t.disabled,placeholder:t.placeholder,role:"combobox",autocomplete:"off",onFocus:le,onInput:J,onKeydown:Z},null,40,rs),!t.disabled&&(_.value!==null||s.value!=="")?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-assignee-picker__clear","data-testid":"btn-clear-assignee","aria-label":"Clear assignee",onClick:I}," × ")):e.createCommentVNode("",!0)]),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[$.value?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"menuRef",ref:r,id:L,class:"task-assignee-picker__menu","data-testid":t.listTestId,"data-placement":k.value,style:e.normalizeStyle(B.value),role:"listbox"},[f.value&&!v.value&&p.value===null&&d.value.length>0?(e.openBlock(),e.createElementBlock("p",cs," Ranked by current workload. Lowest-load match first. ")):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("p",us," Searching employees... ")):p.value!==null?(e.openBlock(),e.createElementBlock("p",ms,e.toDisplayString(p.value),1)):d.value.length===0?(e.openBlock(),e.createElementBlock("p",ps," No matching employees found. ")):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:4},e.renderList(d.value,(j,Q)=>(e.openBlock(),e.createElementBlock("button",{id:`${L}-${j.id}`,key:j.id,type:"button",class:e.normalizeClass(["task-assignee-picker__option",{"is-active":Q===V.value}]),"data-testid":`option-assignee-${j.id}`,role:"option","aria-selected":Q===V.value,onMousedown:H[0]||(H[0]=e.withModifiers(()=>{},["prevent"])),onMouseenter:ae=>V.value=Q,onClick:ae=>C(j)},[e.createElementVNode("div",_s,[e.createElementVNode("strong",null,e.toDisplayString(j.name),1),Y(j,Q)?(e.openBlock(),e.createElementBlock("span",fs," Best available ")):e.createCommentVNode("",!0)]),j.subtitle?(e.openBlock(),e.createElementBlock("span",vs,e.toDisplayString(j.subtitle),1)):e.createCommentVNode("",!0),te(j).length>0?(e.openBlock(),e.createElementBlock("span",ys,e.toDisplayString(te(j).join(" · ")),1)):e.createCommentVNode("",!0),t.showWorkload&&j.workload?(e.openBlock(),e.createElementBlock("div",gs,[e.createElementVNode("span",{class:e.normalizeClass(["task-assignee-picker__workload-chip",U(j)])},e.toDisplayString(j.workload.workload_summary),3)])):e.createCommentVNode("",!0)],42,ks))),128))],12,ds)):e.createCommentVNode("",!0)]))],34))}}),be=K(bs,[["__scopeId","data-v-dddd3b7f"]]),hs={class:"task-bulk-action-bar","aria-label":"Bulk actions","data-testid":"panel-bulk-action-bar"},ws={class:"task-bulk-action-bar__summary"},Es={"data-testid":"status-selected-count"},Vs={class:"task-bulk-action-bar__controls"},Ns=["disabled"],$s={key:0},Bs=["disabled"],Ts={key:1},Cs=["disabled"],Ss={key:2},Ds={key:3},Ms=["disabled"],As={key:4},zs=["disabled"],Is=["disabled"],xs={key:0,class:"task-bulk-action-bar__result",role:"status","aria-live":"polite","data-testid":"status-bulk-result"},Fs=e.defineComponent({__name:"TaskBulkActionBar",props:{selectedCount:{},busy:{type:Boolean},result:{}},emits:["apply","clear"],setup(t,{emit:a}){const n=t,o=a,l=e.ref("set_status"),i=e.ref("open"),r=e.ref("medium"),s=e.ref(""),_=e.ref(""),d=e.ref(""),V=e.computed(()=>l.value==="set_status"),m=e.computed(()=>l.value==="set_priority"),v=e.computed(()=>l.value==="assign"),p=e.computed(()=>l.value==="add_tag"||l.value==="remove_tag"),k=e.computed(()=>l.value==="complete"),B=e.computed(()=>n.result===null||n.result===void 0?"":`${n.result.success.length} succeeded, ${n.result.failed.length} failed`);function u(){const c={};V.value&&(c.status=i.value),m.value&&(c.priority=r.value),v.value&&(c.user_id=s.value),p.value&&(c.name=_.value),k.value&&d.value.trim()!==""&&(c.note=d.value.trim()),o("apply",{action:l.value,params:c})}return(c,b)=>(e.openBlock(),e.createElementBlock("section",hs,[e.createElementVNode("div",ws,[e.createElementVNode("strong",Es,e.toDisplayString(t.selectedCount)+" selected",1),e.createElementVNode("button",{type:"button","data-testid":"btn-clear-selection",onClick:b[0]||(b[0]=h=>o("clear"))},"Clear selection")]),e.createElementVNode("div",Vs,[e.createElementVNode("label",null,[b[8]||(b[8]=e.createElementVNode("span",null,"Action",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b[1]||(b[1]=h=>l.value=h),"data-testid":"select-bulk-action","aria-label":"Bulk action to apply",disabled:t.busy},[...b[7]||(b[7]=[e.createStaticVNode('<option value="assign" data-v-174a8d1f>Assign</option><option value="set_status" data-v-174a8d1f>Set status</option><option value="set_priority" data-v-174a8d1f>Set priority</option><option value="add_tag" data-v-174a8d1f>Add tag</option><option value="remove_tag" data-v-174a8d1f>Remove tag</option><option value="complete" data-v-174a8d1f>Complete</option><option value="cancel" data-v-174a8d1f>Cancel</option><option value="delete" data-v-174a8d1f>Delete</option>',8)])],8,Ns),[[e.vModelSelect,l.value]])]),V.value?(e.openBlock(),e.createElementBlock("label",$s,[b[10]||(b[10]=e.createElementVNode("span",null,"Status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b[2]||(b[2]=h=>i.value=h),"data-testid":"select-bulk-status","aria-label":"Status to set",disabled:t.busy},[...b[9]||(b[9]=[e.createStaticVNode('<option value="draft" data-v-174a8d1f>Draft</option><option value="open" data-v-174a8d1f>Open</option><option value="in_progress" data-v-174a8d1f>In Progress</option><option value="blocked" data-v-174a8d1f>Blocked</option><option value="under_review" data-v-174a8d1f>Under Review</option><option value="complete" data-v-174a8d1f>Complete</option><option value="cancelled" data-v-174a8d1f>Cancelled</option>',7)])],8,Bs),[[e.vModelSelect,i.value]])])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("label",Ts,[b[12]||(b[12]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b[3]||(b[3]=h=>r.value=h),"data-testid":"select-bulk-priority","aria-label":"Priority to set",disabled:t.busy},[...b[11]||(b[11]=[e.createStaticVNode('<option value="none" data-v-174a8d1f>None</option><option value="low" data-v-174a8d1f>Low</option><option value="medium" data-v-174a8d1f>Medium</option><option value="high" data-v-174a8d1f>High</option><option value="urgent" data-v-174a8d1f>Urgent</option><option value="critical" data-v-174a8d1f>Critical</option>',6)])],8,Cs),[[e.vModelSelect,r.value]])])):e.createCommentVNode("",!0),v.value?(e.openBlock(),e.createElementBlock("label",Ss,[b[13]||(b[13]=e.createElementVNode("span",null,"Assignee",-1)),e.createVNode(be,{modelValue:s.value,"onUpdate:modelValue":b[4]||(b[4]=h=>s.value=h),"input-test-id":"input-bulk-assignee","aria-label":"Assignee",disabled:t.busy??!1,placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","disabled"])])):e.createCommentVNode("",!0),p.value?(e.openBlock(),e.createElementBlock("label",Ds,[b[14]||(b[14]=e.createElementVNode("span",null,"Tag",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[5]||(b[5]=h=>_.value=h),type:"text","data-testid":"input-bulk-tag","aria-label":"Tag name",disabled:t.busy,placeholder:"warehouse"},null,8,Ms),[[e.vModelText,_.value]])])):e.createCommentVNode("",!0),k.value?(e.openBlock(),e.createElementBlock("label",As,[b[15]||(b[15]=e.createElementVNode("span",null,"Note",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":b[6]||(b[6]=h=>d.value=h),type:"text","data-testid":"input-bulk-completion-note","aria-label":"Completion note",disabled:t.busy,placeholder:"Optional completion note"},null,8,zs),[[e.vModelText,d.value]])])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"task-bulk-action-bar__apply","data-testid":"btn-apply-bulk-action",disabled:t.busy,onClick:u}," Apply ",8,Is)]),B.value?(e.openBlock(),e.createElementBlock("p",xs,e.toDisplayString(B.value),1)):e.createCommentVNode("",!0)]))}}),sa=K(Fs,[["__scopeId","data-v-174a8d1f"]]),Ls={class:"task-calendar-view","aria-label":"Task calendar","data-testid":"panel-task-calendar"},Us={class:"task-calendar-view__header"},Rs={class:"task-calendar-view__nav",role:"group","aria-label":"Calendar navigation"},Ws={"aria-live":"polite","aria-atomic":"true","data-testid":"status-current-month"},Ps={class:"task-calendar-view__layout"},Os=["aria-label"],Hs=["data-testid"],js={class:"task-calendar-view__cell-header"},qs=["data-testid","aria-label"],Ys=["data-testid","aria-label","onClick"],Ks={class:"task-calendar-view__task-number"},Qs={class:"task-calendar-view__task-title"},Gs={class:"task-calendar-view__sidebar","data-testid":"panel-no-date-sidebar"},Js={key:0,"data-testid":"status-no-unscheduled"},Zs=["data-testid","aria-label","onClick"],Xs=e.defineComponent({__name:"TaskCalendarView",props:{tasks:{},initialMonth:{}},emits:["select-task"],setup(t,{emit:a}){const n=t,o=a,l=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];function i(v){if(v instanceof Date)return new Date(v.getFullYear(),v.getMonth(),1);if(typeof v=="string"&&/^\d{4}-\d{2}/.test(v)){const[k,B]=v.slice(0,7).split("-");return new Date(Number(k),Number(B)-1,1)}const p=typeof v=="string"?new Date(v):new Date;return new Date(p.getFullYear(),p.getMonth(),1)}const r=e.ref(i(n.initialMonth)),s=e.computed(()=>new Intl.DateTimeFormat("en-US",{month:"long",year:"numeric"}).format(r.value)),_=e.computed(()=>{const v=new Date(r.value);return v.setDate(1-v.getDay()),Array.from({length:42},(p,k)=>{const B=new Date(v);B.setDate(v.getDate()+k);const u=B.toISOString().slice(0,10),c=n.tasks.filter(b=>{var h;return((h=b.due_at)==null?void 0:h.slice(0,10))===u});return{key:u,date:B,isCurrentMonth:B.getMonth()===r.value.getMonth(),tasks:c}})}),d=e.computed(()=>n.tasks.filter(v=>v.due_at===null));function V(){r.value=new Date(r.value.getFullYear(),r.value.getMonth()-1,1)}function m(){r.value=new Date(r.value.getFullYear(),r.value.getMonth()+1,1)}return(v,p)=>(e.openBlock(),e.createElementBlock("section",Ls,[e.createElementVNode("header",Us,[p[0]||(p[0]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Calendar"),e.createElementVNode("p",null,"Track due dates at a glance and keep unscheduled work visible.")],-1)),e.createElementVNode("div",Rs,[e.createElementVNode("button",{type:"button","data-testid":"btn-prev-month","aria-label":"Previous month",onClick:V},"Previous"),e.createElementVNode("strong",Ws,e.toDisplayString(s.value),1),e.createElementVNode("button",{type:"button","data-testid":"btn-next-month","aria-label":"Next month",onClick:m},"Next")])]),e.createElementVNode("div",Ps,[e.createElementVNode("div",{class:"task-calendar-view__grid",role:"grid","aria-label":`Calendar for ${s.value}`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,k=>e.createElementVNode("div",{key:k,class:"task-calendar-view__weekday",role:"columnheader"},e.toDisplayString(k),1)),64)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,k=>(e.openBlock(),e.createElementBlock("article",{key:k.key,class:e.normalizeClass(["task-calendar-view__cell",{"is-muted":!k.isCurrentMonth}]),role:"gridcell","data-testid":`panel-calendar-day-${k.key}`},[e.createElementVNode("header",js,[e.createElementVNode("span",null,e.toDisplayString(k.date.getDate()),1),k.tasks.length>3?(e.openBlock(),e.createElementBlock("span",{key:0,class:"task-calendar-view__dot-indicator","data-testid":`badge-overflow-${k.key}`,"aria-label":`${k.tasks.length-3} more tasks`},"+"+e.toDisplayString(k.tasks.length-3),9,qs)):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.tasks.slice(0,3),B=>(e.openBlock(),e.createElementBlock("button",{key:B.id,type:"button",class:e.normalizeClass(["task-calendar-view__task",{"is-overdue":B.is_overdue}]),"data-testid":`btn-calendar-task-${B.id}`,"aria-label":`${B.display_number_formatted}: ${B.title}${B.is_overdue?" (overdue)":""}`,style:e.normalizeStyle({"--task-calendar-priority":e.unref(Fn)(B.priority)}),onClick:u=>o("select-task",B.id)},[e.createElementVNode("span",Ks,e.toDisplayString(B.display_number_formatted),1),e.createElementVNode("span",Qs,e.toDisplayString(B.title),1),e.createVNode(ge,{task:B,compact:""},null,8,["task"])],14,Ys))),128))],10,Hs))),128))],8,Os),e.createElementVNode("aside",Gs,[p[1]||(p[1]=e.createElementVNode("h3",null,"No Date",-1)),d.value.length===0?(e.openBlock(),e.createElementBlock("p",Js,"Every task in this set has a due date.")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,k=>(e.openBlock(),e.createElementBlock("button",{key:k.id,type:"button",class:"task-calendar-view__sidebar-task","data-testid":`btn-sidebar-task-${k.id}`,"aria-label":`${k.display_number_formatted}: ${k.title}`,onClick:B=>o("select-task",k.id)},[e.createElementVNode("strong",null,e.toDisplayString(k.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(k.title),1),e.createVNode(ge,{task:k,compact:""},null,8,["task"]),e.createElementVNode("small",null,e.toDisplayString(e.unref(kt)(k.due_at)),1)],8,Zs))),128))])])]))}}),ei=K(Xs,[["__scopeId","data-v-583da259"]]),ti={class:"task-filter-bar","data-testid":"panel-filter-bar"},ai={class:"task-filter-bar__topline"},ni={class:"task-filter-bar__search"},li=["disabled"],oi={class:"task-filter-bar__actions"},si=["aria-label"],ii={class:"task-filter-bar__grid"},ri=["disabled"],di=["selected","value"],ci=["disabled"],ui=["selected","value"],mi=["value","disabled"],pi=["value","disabled"],ki=["value","disabled"],_i=e.defineComponent({__name:"TaskFilterBar",props:{modelValue:{},loading:{type:Boolean}},emits:["update:modelValue","clear","save-current"],setup(t,{emit:a}){const n=t,o=a,l=["draft","open","in_progress","blocked","under_review","complete","cancelled"],i=["none","low","medium","high","urgent","critical"],r=e.ref(n.modelValue.search??"");let s=null;e.watch(()=>n.modelValue.search,u=>{r.value=u??""}),e.onBeforeUnmount(()=>{s&&clearTimeout(s)});const _=e.computed(()=>Object.entries(n.modelValue).reduce((u,[c,b])=>c==="page"||c==="per_page"||c==="sort"||c==="assignee_name"||b==null||b===""||Array.isArray(b)&&b.length===0?u:u+1,0));function d(u,c){const b={...n.modelValue,page:1};c==null||c===""?delete b[u]:b[u]=c,o("update:modelValue",b)}function V(u,c){const b=c.target,h=Array.from(b.selectedOptions).map(L=>L.value);d(u,h.length>0?h:void 0)}function m(){s&&clearTimeout(s),s=setTimeout(()=>{d("search",r.value||void 0)},250)}const v=e.ref(null);function p(u){v.value=(u==null?void 0:u.name)??null;const c=n.modelValue.assignee??n.modelValue.assignee_id;u&&c&&String(c)===String(u.id)&&!n.modelValue.assignee_name&&o("update:modelValue",{...n.modelValue,assignee_name:u.name})}function k(u){const c={...n.modelValue,page:1};delete c.assignee_id,delete c.assignee_name,u===null||u===""?delete c.assignee:(c.assignee=u,v.value&&(c.assignee_name=v.value)),v.value=null,o("update:modelValue",c)}function B(){r.value="",o("update:modelValue",{page:1,per_page:n.modelValue.per_page??15,sort:n.modelValue.sort??"-created_at"}),o("clear")}return(u,c)=>(e.openBlock(),e.createElementBlock("section",ti,[e.createElementVNode("div",ai,[e.createElementVNode("div",ni,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=b=>r.value=b),type:"search","data-testid":"input-search-tasks","aria-label":"Search tasks",disabled:t.loading,placeholder:"Search tasks",onInput:m},null,40,li),[[e.vModelText,r.value]])]),e.createElementVNode("div",oi,[e.createElementVNode("button",{type:"button",class:"task-filter-bar__save","data-testid":"btn-save-filter",onClick:c[1]||(c[1]=b=>o("save-current"))}," Save current filter "),e.createElementVNode("button",{type:"button",class:"task-filter-bar__clear","data-testid":"btn-clear-filters",onClick:B},[c[7]||(c[7]=e.createTextVNode(" Clear all ",-1)),_.value>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"task-filter-bar__badge","data-testid":"badge-active-filter-count","aria-label":`${_.value} active filters`},e.toDisplayString(_.value),9,si)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",ii,[e.createElementVNode("label",null,[c[8]||(c[8]=e.createElementVNode("span",null,"Status",-1)),e.createElementVNode("select",{multiple:"","data-testid":"select-status-filter","aria-label":"Filter by status",disabled:t.loading,onChange:c[2]||(c[2]=b=>V("status",b))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,b=>e.createElementVNode("option",{key:b,selected:Array.isArray(t.modelValue.status)?t.modelValue.status.includes(b):t.modelValue.status===b,value:b},e.toDisplayString(b),9,di)),64))],40,ri)]),e.createElementVNode("label",null,[c[9]||(c[9]=e.createElementVNode("span",null,"Priority",-1)),e.createElementVNode("select",{multiple:"","data-testid":"select-priority-filter","aria-label":"Filter by priority",disabled:t.loading,onChange:c[3]||(c[3]=b=>V("priority",b))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,b=>e.createElementVNode("option",{key:b,selected:Array.isArray(t.modelValue.priority)?t.modelValue.priority.includes(b):t.modelValue.priority===b,value:b},e.toDisplayString(b),9,ui)),64))],40,ci)]),e.createElementVNode("label",null,[c[10]||(c[10]=e.createElementVNode("span",null,"Assignee",-1)),e.createVNode(be,{"model-value":t.modelValue.assignee??t.modelValue.assignee_id??null,"input-test-id":"input-assignee-filter","aria-label":"Filter by assignee",disabled:t.loading??!1,placeholder:"Filter by employee",onSelect:p,"onUpdate:modelValue":k},null,8,["model-value","disabled"])]),e.createElementVNode("label",null,[c[11]||(c[11]=e.createElementVNode("span",null,"Tag",-1)),e.createElementVNode("input",{value:t.modelValue.tag??"",type:"text","data-testid":"input-tag-filter","aria-label":"Filter by tag",disabled:t.loading,placeholder:"Tag name",onInput:c[4]||(c[4]=b=>d("tag",b.target.value||void 0))},null,40,mi)]),e.createElementVNode("label",null,[c[12]||(c[12]=e.createElementVNode("span",null,"Due after",-1)),e.createElementVNode("input",{value:t.modelValue.due_after??"",type:"date","data-testid":"input-due-after-filter","aria-label":"Filter tasks due after date",disabled:t.loading,onInput:c[5]||(c[5]=b=>d("due_after",b.target.value||void 0))},null,40,pi)]),e.createElementVNode("label",null,[c[13]||(c[13]=e.createElementVNode("span",null,"Due before",-1)),e.createElementVNode("input",{value:t.modelValue.due_before??"",type:"date","data-testid":"input-due-before-filter","aria-label":"Filter tasks due before date",disabled:t.loading,onInput:c[6]||(c[6]=b=>d("due_before",b.target.value||void 0))},null,40,ki)])])]))}}),ia=K(_i,[["__scopeId","data-v-9918120b"]]),fi={class:"recurring-form__grid"},vi={class:"recurring-form__field"},yi=["value","disabled"],gi=["value"],bi={class:"recurring-form__field recurring-form__field--wide"},hi=["disabled"],wi={class:"recurring-form__field recurring-form__field--wide"},Ei=["disabled"],Vi={class:"recurring-form__field"},Ni=["disabled"],$i=["value"],Bi={class:"recurring-form__field"},Ti=["disabled"],Ci=["value"],Si={key:0,class:"recurring-form__panel recurring-form__field--wide","data-testid":"panel-daily-schedule"},Di={class:"recurring-form__field"},Mi=["disabled"],Ai={key:1,class:"recurring-form__panel recurring-form__field--wide","data-testid":"panel-weekly-schedule"},zi={class:"recurring-form__field"},Ii=["disabled"],xi={class:"recurring-form__field"},Fi={class:"recurring-form__day-grid","data-testid":"panel-weekly-days"},Li=["disabled","data-testid","aria-pressed","aria-label","onClick"],Ui={key:2,class:"recurring-form__panel recurring-form__field--wide","data-testid":"panel-monthly-schedule"},Ri={class:"recurring-form__field"},Wi=["disabled"],Pi={class:"recurring-form__field"},Oi=["disabled"],Hi={key:0,class:"recurring-form__field"},ji=["disabled"],qi={class:"recurring-form__field"},Yi=["disabled"],Ki=["value"],Qi={class:"recurring-form__field"},Gi=["disabled"],Ji=["value"],Zi={key:3,class:"recurring-form__field recurring-form__field--wide"},Xi=["disabled"],er={class:"recurring-form__field recurring-form__field--wide recurring-form__preview","data-testid":"panel-rrule-preview"},tr={"data-testid":"status-rrule-preview"},ar={class:"recurring-form__field"},nr=["disabled"],lr=["value"],or=["disabled"],sr={class:"recurring-form__field"},ir=["disabled"],rr={class:"recurring-form__field"},dr={class:"recurring-form__field"},cr=["disabled"],ur=["value"],mr={class:"recurring-form__field"},pr=["disabled"],kr={class:"recurring-form__field recurring-form__field--wide"},_r=["disabled"],fr={class:"recurring-form__toggles","data-testid":"panel-template-toggles"},vr=["disabled"],yr=["disabled"],gr=["disabled"],br=["disabled"],hr={class:"recurring-form__actions"},wr=["disabled"],Er=e.defineComponent({__name:"RecurringTemplateForm",props:{recurring:{},templates:{},entityTypeOptions:{},submitting:{type:Boolean},mode:{}},emits:["submit","cancel","template-change"],setup(t,{emit:a}){const n=t,o=a,l=["none","low","medium","high","urgent","critical"],i=[{value:1,label:"First"},{value:2,label:"Second"},{value:3,label:"Third"},{value:4,label:"Fourth"},{value:-1,label:"Last"}],r=[{value:"daily",label:"Daily"},{value:"weekly",label:"Weekly"},{value:"monthly",label:"Monthly"},{value:"custom",label:"Custom"}],s=e.reactive({taskTemplateId:"",title:"",description:"",timezone:"America/New_York",taskableType:"",taskableId:"",primaryAssigneeId:"",priority:"none",dueOffsetHours:"",tags:"",isActive:!0,skipHolidays:!1,businessHoursOnly:!1,chainMode:!1,scheduleMode:"daily",dailyInterval:"1",weeklyInterval:"1",weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyInterval:"1",monthlyDay:"1",monthlyWeekday:"MO",monthlySetPosition:"1",rawRrule:Le(1)}),_=e.computed(()=>n.templates??[]),d=e.computed(()=>n.entityTypeOptions??[]),V=e.computed(()=>n.mode??"create"),m=e.computed(()=>V.value==="edit"?"Save recurring template":"Create recurring template");function v(){var f;const S=n.recurring;s.taskTemplateId=(S==null?void 0:S.task_template_id)??"",s.title=(S==null?void 0:S.title)??"",s.description=(S==null?void 0:S.description)??"",s.timezone=(S==null?void 0:S.timezone)??"America/New_York",s.taskableType=(S==null?void 0:S.taskable_type)??"",s.taskableId=(S==null?void 0:S.taskable_id)??"",s.primaryAssigneeId=(S==null?void 0:S.primary_assignee_id)??"",s.priority=(S==null?void 0:S.priority)??"none",s.dueOffsetHours=(S==null?void 0:S.due_offset_hours)===null||(S==null?void 0:S.due_offset_hours)===void 0?"":String(S.due_offset_hours),s.tags=((f=S==null?void 0:S.tags)==null?void 0:f.join(", "))??"",s.isActive=(S==null?void 0:S.is_active)??!0,s.skipHolidays=(S==null?void 0:S.skip_holidays)??!1,s.businessHoursOnly=(S==null?void 0:S.business_hours_only)??!1,s.chainMode=(S==null?void 0:S.chain_mode)??!1;const w=Jt((S==null?void 0:S.rrule)??Le(1));s.scheduleMode=w.mode,s.dailyInterval=String(w.interval),s.weeklyInterval=String(w.interval),s.weeklyDays=w.weeklyDays,s.monthlyMode=w.monthlyMode,s.monthlyInterval=String(w.interval),s.monthlyDay=String(w.monthlyDay),s.monthlyWeekday=w.monthlyWeekday,s.monthlySetPosition=String(w.monthlySetPosition),s.rawRrule=w.raw||Le(1)}e.watch(()=>n.recurring,()=>{v()},{immediate:!0,deep:!0});const p=e.computed(()=>s.scheduleMode==="daily"?Le(Number.parseInt(s.dailyInterval,10)||1):s.scheduleMode==="weekly"?jn(Number.parseInt(s.weeklyInterval,10)||1,s.weeklyDays.length>0?s.weeklyDays:["MO"]):s.scheduleMode==="monthly"&&s.monthlyMode==="day_of_month"?qn(Number.parseInt(s.monthlyInterval,10)||1,Number.parseInt(s.monthlyDay,10)||1):s.scheduleMode==="monthly"?Yn(Number.parseInt(s.monthlyInterval,10)||1,s.monthlyWeekday,Number.parseInt(s.monthlySetPosition,10)||1):s.rawRrule.trim());e.watch(p,S=>{s.scheduleMode!=="custom"&&(s.rawRrule=S)},{immediate:!0});const k=e.computed(()=>s.scheduleMode==="custom"?s.rawRrule.trim():p.value),B=e.computed(()=>Kn(k.value)),u=e.computed(()=>k.value.length>0&&(s.taskTemplateId.length>0||s.title.trim().length>0));function c(S){if(s.taskTemplateId=S,o("template-change",S||null),!S||V.value==="edit")return;const w=_.value.find(f=>f.id===S);w&&(s.title.trim()||(s.title=w.name),!s.description.trim()&&w.description&&(s.description=w.description))}function b(S){var w;c(((w=S.target)==null?void 0:w.value)??"")}function h(S){if(s.weeklyDays.includes(S)){s.weeklyDays=s.weeklyDays.filter(w=>w!==S);return}s.weeklyDays=[...s.weeklyDays,S]}function L(){var w;if(!u.value)return;const S=Number.parseInt(s.dueOffsetHours,10);o("submit",{task_template_id:s.taskTemplateId||null,title:s.title.trim()||null,description:s.description.trim()||null,rrule:k.value,timezone:s.timezone||null,taskable_type:s.taskableType.trim()||null,taskable_id:s.taskableId.trim()||null,primary_assignee_id:s.primaryAssigneeId.trim()||null,priority:s.priority,due_offset_hours:Number.isFinite(S)?S:null,tags:s.tags.split(",").map(f=>f.trim()).filter(Boolean),is_active:s.isActive,skip_holidays:s.skipHolidays,business_hours_only:s.businessHoursOnly,chain_mode:s.chainMode,metadata:((w=n.recurring)==null?void 0:w.metadata)??null})}return(S,w)=>(e.openBlock(),e.createElementBlock("form",{class:"recurring-form","data-testid":"form-recurring-template",onSubmit:e.withModifiers(L,["prevent"])},[e.createElementVNode("div",fi,[e.createElementVNode("label",vi,[w[25]||(w[25]=e.createElementVNode("span",null,"Template",-1)),e.createElementVNode("select",{"data-testid":"select-task-template",value:s.taskTemplateId,disabled:t.submitting,onChange:b},[w[24]||(w[24]=e.createElementVNode("option",{value:""},"Standalone recurring task",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,f=>(e.openBlock(),e.createElementBlock("option",{key:f.id,value:f.id},e.toDisplayString(f.name),9,gi))),128))],40,yi)]),e.createElementVNode("label",bi,[w[26]||(w[26]=e.createElementVNode("span",null,"Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[0]||(w[0]=f=>s.title=f),"data-testid":"input-template-name",type:"text",disabled:t.submitting,placeholder:"Required when no template is linked"},null,8,hi),[[e.vModelText,s.title]])]),e.createElementVNode("label",wi,[w[27]||(w[27]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":w[1]||(w[1]=f=>s.description=f),"data-testid":"input-template-description",rows:"4",disabled:t.submitting},null,8,Ei),[[e.vModelText,s.description]])]),e.createElementVNode("label",Vi,[w[28]||(w[28]=e.createElementVNode("span",null,"Schedule type",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[2]||(w[2]=f=>s.scheduleMode=f),"data-testid":"select-recurrence-pattern",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,f=>e.createElementVNode("option",{key:f.value,value:f.value},e.toDisplayString(f.label),9,$i)),64))],8,Ni),[[e.vModelSelect,s.scheduleMode]])]),e.createElementVNode("label",Bi,[w[29]||(w[29]=e.createElementVNode("span",null,"Timezone",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[3]||(w[3]=f=>s.timezone=f),"data-testid":"select-timezone",disabled:t.submitting},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Wn),f=>(e.openBlock(),e.createElementBlock("option",{key:f,value:f},e.toDisplayString(f),9,Ci))),128))],8,Ti),[[e.vModelSelect,s.timezone]])]),s.scheduleMode==="daily"?(e.openBlock(),e.createElementBlock("section",Si,[e.createElementVNode("label",Di,[w[30]||(w[30]=e.createElementVNode("span",null,"Every N days",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[4]||(w[4]=f=>s.dailyInterval=f),"data-testid":"input-daily-interval",type:"number",min:"1",disabled:t.submitting},null,8,Mi),[[e.vModelText,s.dailyInterval]])])])):s.scheduleMode==="weekly"?(e.openBlock(),e.createElementBlock("section",Ai,[e.createElementVNode("label",zi,[w[31]||(w[31]=e.createElementVNode("span",null,"Every N weeks",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[5]||(w[5]=f=>s.weeklyInterval=f),"data-testid":"input-weekly-interval",type:"number",min:"1",disabled:t.submitting},null,8,Ii),[[e.vModelText,s.weeklyInterval]])]),e.createElementVNode("div",xi,[w[32]||(w[32]=e.createElementVNode("span",null,"Days",-1)),e.createElementVNode("div",Fi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(He),f=>(e.openBlock(),e.createElementBlock("button",{key:f.value,class:e.normalizeClass(["recurring-form__day-chip",{"is-active":s.weeklyDays.includes(f.value)}]),disabled:t.submitting,type:"button","data-testid":`btn-weekday-${f.value}`,"aria-pressed":s.weeklyDays.includes(f.value),"aria-label":`Toggle ${f.label}`,onClick:$=>h(f.value)},e.toDisplayString(f.shortLabel),11,Li))),128))])])])):s.scheduleMode==="monthly"?(e.openBlock(),e.createElementBlock("section",Ui,[e.createElementVNode("label",Ri,[w[33]||(w[33]=e.createElementVNode("span",null,"Every N months",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[6]||(w[6]=f=>s.monthlyInterval=f),"data-testid":"input-monthly-interval",type:"number",min:"1",disabled:t.submitting},null,8,Wi),[[e.vModelText,s.monthlyInterval]])]),e.createElementVNode("label",Pi,[w[35]||(w[35]=e.createElementVNode("span",null,"Monthly pattern",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[7]||(w[7]=f=>s.monthlyMode=f),"data-testid":"select-monthly-mode",disabled:t.submitting},[...w[34]||(w[34]=[e.createElementVNode("option",{value:"day_of_month"},"Day of month",-1),e.createElementVNode("option",{value:"weekday"},"Nth weekday",-1)])],8,Oi),[[e.vModelSelect,s.monthlyMode]])]),s.monthlyMode==="day_of_month"?(e.openBlock(),e.createElementBlock("label",Hi,[w[36]||(w[36]=e.createElementVNode("span",null,"Day of month",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[8]||(w[8]=f=>s.monthlyDay=f),"data-testid":"input-monthly-day",type:"number",min:"1",max:"31",disabled:t.submitting},null,8,ji),[[e.vModelText,s.monthlyDay]])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",qi,[w[37]||(w[37]=e.createElementVNode("span",null,"Position",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[9]||(w[9]=f=>s.monthlySetPosition=f),"data-testid":"select-monthly-position",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,f=>e.createElementVNode("option",{key:f.value,value:String(f.value)},e.toDisplayString(f.label),9,Ki)),64))],8,Yi),[[e.vModelSelect,s.monthlySetPosition]])]),e.createElementVNode("label",Qi,[w[38]||(w[38]=e.createElementVNode("span",null,"Weekday",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[10]||(w[10]=f=>s.monthlyWeekday=f),"data-testid":"select-monthly-weekday",disabled:t.submitting},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(He),f=>(e.openBlock(),e.createElementBlock("option",{key:f.value,value:f.value},e.toDisplayString(f.label),9,Ji))),128))],8,Gi),[[e.vModelSelect,s.monthlyWeekday]])])],64))])):(e.openBlock(),e.createElementBlock("label",Zi,[w[39]||(w[39]=e.createElementVNode("span",null,"Custom RRULE",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":w[11]||(w[11]=f=>s.rawRrule=f),"data-testid":"input-custom-rrule",rows:"3",disabled:t.submitting,placeholder:"FREQ=WEEKLY;BYDAY=MO,WE,FR"},null,8,Xi),[[e.vModelText,s.rawRrule]])])),e.createElementVNode("div",er,[w[40]||(w[40]=e.createElementVNode("span",null,"Preview",-1)),e.createElementVNode("strong",tr,e.toDisplayString(B.value),1),e.createElementVNode("code",null,e.toDisplayString(k.value),1)]),e.createElementVNode("label",ar,[w[42]||(w[42]=e.createElementVNode("span",null,"Linked entity type",-1)),d.value.length>0?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":w[12]||(w[12]=f=>s.taskableType=f),"data-testid":"input-taskable-type",disabled:t.submitting},[w[41]||(w[41]=e.createElementVNode("option",{value:""},"No linked entity",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,f=>(e.openBlock(),e.createElementBlock("option",{key:f.value,value:f.value},e.toDisplayString(f.label),9,lr))),128))],8,nr)),[[e.vModelSelect,s.taskableType]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":w[13]||(w[13]=f=>s.taskableType=f),"data-testid":"input-taskable-type",type:"text",disabled:t.submitting,placeholder:"order"},null,8,or)),[[e.vModelText,s.taskableType]])]),e.createElementVNode("label",sr,[w[43]||(w[43]=e.createElementVNode("span",null,"Linked entity record ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[14]||(w[14]=f=>s.taskableId=f),"data-testid":"input-taskable-id",type:"text",disabled:t.submitting,placeholder:"Optional record ID"},null,8,ir),[[e.vModelText,s.taskableId]])]),e.createElementVNode("label",rr,[w[44]||(w[44]=e.createElementVNode("span",null,"Primary assignee",-1)),e.createVNode(be,{modelValue:s.primaryAssigneeId,"onUpdate:modelValue":w[15]||(w[15]=f=>s.primaryAssigneeId=f),"input-test-id":"input-primary-assignee","aria-label":"Primary assignee",disabled:t.submitting??!1,placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","disabled"])]),e.createElementVNode("label",dr,[w[45]||(w[45]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":w[16]||(w[16]=f=>s.priority=f),"data-testid":"select-priority",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,f=>e.createElementVNode("option",{key:f,value:f},e.toDisplayString(f),9,ur)),64))],8,cr),[[e.vModelSelect,s.priority]])]),e.createElementVNode("label",mr,[w[46]||(w[46]=e.createElementVNode("span",null,"Due offset hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[17]||(w[17]=f=>s.dueOffsetHours=f),"data-testid":"input-due-offset-hours",type:"number",min:"0",disabled:t.submitting},null,8,pr),[[e.vModelText,s.dueOffsetHours]])]),e.createElementVNode("label",kr,[w[47]||(w[47]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[18]||(w[18]=f=>s.tags=f),"data-testid":"input-tags",type:"text",disabled:t.submitting,placeholder:"ops, warehouse"},null,8,_r),[[e.vModelText,s.tags]])])]),e.createElementVNode("section",fr,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[19]||(w[19]=f=>s.isActive=f),"data-testid":"input-is-active",type:"checkbox",disabled:t.submitting},null,8,vr),[[e.vModelCheckbox,s.isActive]]),w[48]||(w[48]=e.createTextVNode(" Active",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[20]||(w[20]=f=>s.skipHolidays=f),"data-testid":"input-skip-holidays",type:"checkbox",disabled:t.submitting},null,8,yr),[[e.vModelCheckbox,s.skipHolidays]]),w[49]||(w[49]=e.createTextVNode(" Skip holidays",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[21]||(w[21]=f=>s.businessHoursOnly=f),"data-testid":"input-business-hours-only",type:"checkbox",disabled:t.submitting},null,8,gr),[[e.vModelCheckbox,s.businessHoursOnly]]),w[50]||(w[50]=e.createTextVNode(" Business hours only",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":w[22]||(w[22]=f=>s.chainMode=f),"data-testid":"input-chain-mode",type:"checkbox",disabled:t.submitting},null,8,br),[[e.vModelCheckbox,s.chainMode]]),w[51]||(w[51]=e.createTextVNode(" Chain mode",-1))])]),e.createElementVNode("footer",hr,[e.createElementVNode("button",{type:"button",class:"secondary","data-testid":"btn-cancel-template",onClick:w[23]||(w[23]=f=>o("cancel"))},"Cancel"),e.createElementVNode("button",{type:"submit","data-testid":"btn-save-template",disabled:t.submitting||!u.value},e.toDisplayString(m.value),9,wr)])],32))}}),ra=K(Er,[["__scopeId","data-v-025addaf"]]),Vr={class:"recurring-list","data-testid":"list-recurring-templates"},Nr={class:"recurring-list__toolbar"},$r={class:"recurring-list__search"},Br=["value"],Tr={class:"recurring-list__toggle"},Cr=["checked"],Sr={key:0,class:"recurring-list__empty","data-testid":"status-loading-templates"},Dr={key:1,class:"recurring-list__empty","data-testid":"status-empty-templates"},Mr={key:2,class:"recurring-list__table","data-testid":"table-recurring-templates"},Ar=["data-testid"],zr={key:0,class:"recurring-list__meta"},Ir={key:1,class:"recurring-list__meta"},xr={key:2,class:"recurring-list__meta"},Fr={key:3,class:"recurring-list__flags"},Lr={key:0},Ur={key:1},Rr={key:2},Wr={class:"recurring-list__meta"},Pr=["data-testid"],Or={class:"recurring-list__actions"},Hr=["data-testid","aria-label","onClick"],jr=["data-testid","aria-label","onClick"],qr=["data-testid","aria-label","onClick"],Yr=["data-testid","aria-label","onClick"],Kr=["data-testid","aria-label","onClick"],Qr=e.defineComponent({__name:"RecurringTemplateList",props:{templates:{},loading:{type:Boolean},search:{},includeInactive:{type:Boolean}},emits:["update:search","update:includeInactive","edit","pause","resume","remove","generate"],setup(t,{emit:a}){const n=t,o=a,l=e.computed(()=>n.templates??[]);function i(d){return d?ie(d):"Not scheduled"}function r(d){return d===null?null:d===0?"Deadline at generation time":d===1?"1h deadline offset":`${d}h deadline offset`}function s(d){var V;o("update:search",((V=d.target)==null?void 0:V.value)??"")}function _(d){var V;o("update:includeInactive",((V=d.target)==null?void 0:V.checked)??!1)}return(d,V)=>(e.openBlock(),e.createElementBlock("section",Vr,[e.createElementVNode("header",Nr,[e.createElementVNode("label",$r,[V[0]||(V[0]=e.createElementVNode("span",null,"Search",-1)),e.createElementVNode("input",{"data-testid":"input-search-templates",value:t.search??"",type:"search",placeholder:"Search recurring templates",onInput:s},null,40,Br)]),e.createElementVNode("label",Tr,[e.createElementVNode("input",{"data-testid":"input-include-inactive",checked:t.includeInactive??!1,type:"checkbox",onChange:_},null,40,Cr),V[1]||(V[1]=e.createElementVNode("span",null,"Include paused",-1))])]),t.loading?(e.openBlock(),e.createElementBlock("div",Sr," Loading recurring templates… ")):l.value.length===0?(e.openBlock(),e.createElementBlock("div",Dr," No recurring templates found. ")):(e.openBlock(),e.createElementBlock("table",Mr,[V[2]||(V[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Name"),e.createElementVNode("th",null,"Schedule"),e.createElementVNode("th",null,"Next"),e.createElementVNode("th",null,"Last"),e.createElementVNode("th",null,"Status"),e.createElementVNode("th",null,"Actions")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,m=>{var v;return e.openBlock(),e.createElementBlock("tr",{key:m.id,"data-testid":`item-template-${m.id}`},[e.createElementVNode("td",null,[e.createElementVNode("strong",null,e.toDisplayString(m.title??((v=m.task_template)==null?void 0:v.name)??"Untitled recurrence"),1),m.task_template?(e.openBlock(),e.createElementBlock("p",zr," Template: "+e.toDisplayString(m.task_template.name),1)):e.createCommentVNode("",!0),m.taskable_type&&m.taskable_id?(e.openBlock(),e.createElementBlock("p",Ir," Scope: "+e.toDisplayString(e.unref(pt)(m.taskable_type,m.taskable_id)),1)):e.createCommentVNode("",!0),r(m.due_offset_hours)?(e.openBlock(),e.createElementBlock("p",xr,e.toDisplayString(r(m.due_offset_hours)),1)):e.createCommentVNode("",!0),m.chain_mode||m.business_hours_only||m.skip_holidays?(e.openBlock(),e.createElementBlock("p",Fr,[m.chain_mode?(e.openBlock(),e.createElementBlock("span",Lr,"Chain mode")):e.createCommentVNode("",!0),m.business_hours_only?(e.openBlock(),e.createElementBlock("span",Ur,"Business hours")):e.createCommentVNode("",!0),m.skip_holidays?(e.openBlock(),e.createElementBlock("span",Rr,"Skip holidays")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,[e.createElementVNode("strong",null,e.toDisplayString(m.rrule_human),1),e.createElementVNode("p",Wr,e.toDisplayString(m.timezone),1)]),e.createElementVNode("td",null,e.toDisplayString(i(m.next_occurrence_at)),1),e.createElementVNode("td",null,e.toDisplayString(i(m.last_generated_at)),1),e.createElementVNode("td",null,[e.createElementVNode("span",{class:e.normalizeClass(["recurring-list__status",m.is_active?"is-active":"is-paused"]),"data-testid":`status-template-${m.id}`},e.toDisplayString(m.is_active?"Active":"Paused"),11,Pr)]),e.createElementVNode("td",null,[e.createElementVNode("div",Or,[e.createElementVNode("button",{type:"button","data-testid":`btn-edit-template-${m.id}`,"aria-label":`Edit ${m.title??"template"}`,onClick:p=>o("edit",m.id)},"Edit",8,Hr),m.is_active?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":`btn-pause-recurring-${m.id}`,"aria-label":`Pause ${m.title??"template"}`,onClick:p=>o("pause",m.id)}," Pause ",8,jr)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":`btn-resume-recurring-${m.id}`,"aria-label":`Resume ${m.title??"template"}`,onClick:p=>o("resume",m.id)}," Resume ",8,qr)),e.createElementVNode("button",{type:"button","data-testid":`btn-generate-template-${m.id}`,"aria-label":`Generate tasks for ${m.title??"template"}`,onClick:p=>o("generate",m.id)},"Generate",8,Yr),e.createElementVNode("button",{type:"button",class:"danger","data-testid":`btn-delete-template-${m.id}`,"aria-label":`Delete ${m.title??"template"}`,onClick:p=>o("remove",m.id)},"Delete",8,Kr)])])],8,Ar)}),128))])]))]))}}),da=K(Qr,[["__scopeId","data-v-8d6a1cfd"]]),Gr={key:0,class:"task-saved-filter-tabs","aria-label":"Saved filters","data-testid":"panel-saved-filter-tabs",role:"tablist"},Jr=["data-testid"],Zr=["data-testid","aria-label","aria-selected","onClick"],Xr={key:0,class:"task-saved-filter-tabs__default","aria-label":"Default filter"},ed=["data-testid","aria-label","onClick"],td=e.defineComponent({__name:"TaskSavedFilterTabs",props:{filters:{},activeFilterId:{}},emits:["select","remove"],setup(t,{emit:a}){const n=t,o=a;return(l,i)=>n.filters.length>0?(e.openBlock(),e.createElementBlock("section",Gr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.filters,r=>(e.openBlock(),e.createElementBlock("article",{key:r.id,class:e.normalizeClass(["task-saved-filter-tabs__pill",{"is-active":r.id===t.activeFilterId}]),"data-testid":`item-saved-filter-${r.id}`},[e.createElementVNode("button",{type:"button",class:"task-saved-filter-tabs__select",role:"tab","data-testid":`tab-saved-filter-${r.id}`,"aria-label":`Apply saved filter: ${r.name}`,"aria-selected":r.id===t.activeFilterId,onClick:s=>o("select",r.id)},[e.createElementVNode("span",null,e.toDisplayString(r.name),1),r.is_default?(e.openBlock(),e.createElementBlock("span",Xr,"Default")):e.createCommentVNode("",!0)],8,Zr),r.is_default?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-saved-filter-tabs__remove","data-testid":`btn-remove-saved-filter-${r.id}`,"aria-label":`Remove saved filter: ${r.name}`,onClick:s=>o("remove",r.id)}," Remove ",8,ed))],10,Jr))),128))])):e.createCommentVNode("",!0)}}),ca=K(td,[["__scopeId","data-v-48cd3d9f"]]),ad={class:"task-workspace","data-testid":"panel-task-list",role:"region","aria-label":"Task workspace"},nd={class:"task-workspace__toolbar","data-testid":"task-workspace-toolbar"},ld={class:"task-workspace__toolbar-left"},od=["aria-expanded"],sd=["aria-label"],id={class:"task-workspace__toolbar-right"},rd={key:0,class:"task-workspace__loading","data-testid":"status-task-loading","aria-live":"polite"},dd=["title"],cd={class:"task-workspace__overflow","data-testid":"task-workspace-overflow"},ud=["aria-expanded"],md={key:0,class:"task-workspace__overflow-menu",role:"menu","aria-label":"Task actions menu","data-testid":"panel-overflow-menu"},pd=["disabled"],kd=["disabled"],_d={key:0,class:"task-workspace__filter-chips","data-testid":"panel-active-filter-chips",role:"list","aria-label":"Active filters"},fd=["data-testid"],vd={class:"task-workspace__chip-label"},yd=["data-testid","aria-label","title","onClick"],gd={key:1,id:"task-filter-panel",role:"search","aria-label":"Task filters",class:"task-workspace__filter-panel","data-testid":"panel-filter-dropdown"},bd={key:4,class:"task-workspace__inline-create","data-testid":"panel-inline-create"},hd=["disabled"],wd={key:5,class:"task-workspace__empty","data-testid":"panel-empty-state"},Ed={class:"task-workspace__empty-actions"},Vd={key:6,class:"task-workspace__table-wrap","data-testid":"panel-task-table-wrap"},Nd={class:"task-workspace__table","data-testid":"list-tasks",role:"grid","aria-label":"Task list"},$d={scope:"col",class:"task-workspace__th--checkbox"},Bd=["aria-sort"],Td=["aria-label"],Cd=["aria-sort"],Sd=["aria-label"],Dd=["aria-sort"],Md=["aria-label"],Ad=["data-testid","aria-label","onClick"],zd={class:"task-workspace__td--checkbox"},Id=["value","data-testid","aria-label"],xd=["data-testid"],Fd={class:"task-workspace__td--title"},Ld=["data-testid"],Ud=["data-testid"],Rd=["data-testid"],Wd=["data-testid"],Pd=["data-testid"],Od={key:0,class:"task-workspace__deadline-cell"},Hd={key:1,class:"task-workspace__no-deadline"},jd={key:7,class:"task-workspace__pagination","data-testid":"panel-pagination",role:"navigation","aria-label":"Task list pagination"},qd=["disabled"],Yd={"aria-live":"polite","aria-atomic":"true","data-testid":"status-pagination"},Kd=["disabled"],Qd=e.defineComponent({__name:"TaskListView",props:{tasks:{},filters:{},pagination:{},loading:{type:Boolean},savedFilters:{},activeSavedFilterId:{},bulkBusy:{type:Boolean},bulkResult:{},exportLoading:{type:Boolean},importLoading:{type:Boolean}},emits:["update:filters","select-task","quick-create","create-inline","page-change","save-filter","apply-saved-filter","delete-saved-filter","bulk-action","clear-bulk-result","export","import"],setup(t,{emit:a}){const n=t,o=a,l=e.ref([]),i=e.ref(!1),r=e.ref(!1),s=e.ref(!1),_=e.ref(""),d=e.ref(null),V=e.ref(null),m=e.ref(null);e.watch(()=>n.filters.assignee??n.filters.assignee_id,async W=>{if(m.value=null,!(!W||n.filters.assignee_name))try{const F=(await Pe.searchUsers(String(W),{limit:1})).find(D=>String(D.id)===String(W));F&&(m.value=F.name)}catch{}},{immediate:!0});const v=e.computed({get:()=>n.tasks.length>0&&l.value.length===n.tasks.length,set:W=>{l.value=W?n.tasks.map(T=>T.id):[]}}),p=e.computed(()=>Object.entries(n.filters).reduce((W,[T,F])=>T==="page"||T==="per_page"||T==="sort"||T==="assignee_name"||F==null||F===""||Array.isArray(F)&&F.length===0?W:W+1,0)),k=e.computed(()=>{var F;const W=[],T=n.filters;if(T.search&&W.push({key:"search",label:"Search",value:T.search}),T.status){const D=Array.isArray(T.status)?T.status:[T.status];W.push({key:"status",label:"Status",value:D.join(", ")})}if(T.priority){const D=Array.isArray(T.priority)?T.priority:[T.priority];W.push({key:"priority",label:"Priority",value:D.join(", ")})}if(T.assignee||T.assignee_id){const D=T.assignee??T.assignee_id??"";let E=T.assignee_name??m.value??"";if(!E){const g=n.tasks.find(C=>C.primary_assignee&&String(C.primary_assignee.id)===String(D));E=((F=g==null?void 0:g.primary_assignee)==null?void 0:F.name)??D}W.push({key:"assignee",label:"Assignee",value:E})}return T.tag&&W.push({key:"tag",label:"Tag",value:T.tag}),T.due_after&&W.push({key:"due_after",label:"Due after",value:T.due_after}),T.due_before&&W.push({key:"due_before",label:"Due before",value:T.due_before}),T.overdue&&W.push({key:"overdue",label:"Overdue",value:"Yes"}),T.taskable_type&&W.push({key:"taskable_type",label:"Entity type",value:T.taskable_type}),W}),B=e.computed(()=>k.value.length>0),u=e.computed(()=>{const W=n.filters.sort??"-created_at";return W.startsWith("-")?W.slice(1):W}),c=e.computed(()=>(n.filters.sort??"-created_at").startsWith("-")?"desc":"asc");function b(W){return u.value!==W?"":c.value==="asc"?" ↑":" ↓"}function h(W){return u.value!==W?"none":c.value==="asc"?"ascending":"descending"}function L(W){const T=n.filters.sort??"-created_at",D=(T.startsWith("-")?T.slice(1):T)===W&&!T.startsWith("-")?`-${W}`:W;o("update:filters",{...n.filters,sort:D,page:1})}function S(W){o("page-change",W),o("update:filters",{...n.filters,page:W})}function w(){l.value=[],o("clear-bulk-result")}function f(){i.value=!i.value}function $(){r.value=!r.value}function z(){r.value=!1}function q(){o("export"),z()}function te(){var W;(W=V.value)==null||W.click(),z()}function U(W){var D;const T=W.target,F=(D=T.files)==null?void 0:D[0];F&&o("import",F),T.value=""}async function Y(){var W;s.value=!0,await e.nextTick(),(W=d.value)==null||W.focus()}function G(){const W=_.value.trim();W.length!==0&&(o("create-inline",W),_.value="")}function ee(){s.value=!1,_.value=""}function O(W){if(W.key==="Enter"){W.preventDefault(),G();return}W.key==="Escape"&&(W.preventDefault(),ee())}function A(W){const T={...n.filters,page:1};W==="assignee"?(delete T.assignee,delete T.assignee_id,delete T.assignee_name):delete T[W],o("update:filters",T)}function ne(){o("update:filters",{page:1,per_page:n.filters.per_page??15,sort:n.filters.sort??"-created_at"})}return e.watch(()=>n.tasks,W=>{const T=new Set(W.map(F=>F.id));l.value=l.value.filter(F=>T.has(F))},{deep:!0}),(W,T)=>(e.openBlock(),e.createElementBlock("section",ad,[e.createElementVNode("header",nd,[e.createElementVNode("div",ld,[e.createElementVNode("button",{type:"button",class:"task-workspace__new-btn","data-testid":"btn-create-task",title:"Create a new task (press N)","aria-label":"Create a new task",onClick:T[0]||(T[0]=F=>s.value?ee():Y())},[...T[18]||(T[18]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.createElementVNode("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1),e.createTextVNode(" New ",-1)])]),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-workspace__tool-btn",{"is-active":i.value}]),"data-testid":"btn-toggle-filters",title:"Show or hide filters","aria-expanded":i.value,"aria-controls":"task-filter-panel",onClick:f},[T[19]||(T[19]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("polygon",{points:"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3"})],-1)),T[20]||(T[20]=e.createTextVNode(" Filter ",-1)),p.value>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"task-workspace__badge","data-testid":"badge-active-filters","aria-label":`${p.value} active filters`},e.toDisplayString(p.value),9,sd)):e.createCommentVNode("",!0)],10,od),e.createElementVNode("button",{type:"button",class:"task-workspace__tool-btn","data-testid":"btn-open-full-create",title:"Open full task creation form with all options","aria-label":"Create task with full options",onClick:T[1]||(T[1]=F=>o("quick-create"))},[...T[21]||(T[21]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",ry:"2"}),e.createElementVNode("line",{x1:"12",y1:"8",x2:"12",y2:"16"}),e.createElementVNode("line",{x1:"8",y1:"12",x2:"16",y2:"12"})],-1),e.createTextVNode(" Full form ",-1)])])]),e.createElementVNode("div",id,[t.loading?(e.openBlock(),e.createElementBlock("span",rd," Loading... ")):e.createCommentVNode("",!0),t.pagination.total>0?(e.openBlock(),e.createElementBlock("span",{key:1,class:"task-workspace__count","data-testid":"status-task-count",title:`${t.pagination.total} total tasks across ${t.pagination.last_page} pages`},e.toDisplayString(t.pagination.total)+" tasks ",9,dd)):e.createCommentVNode("",!0),e.createElementVNode("div",cd,[e.createElementVNode("button",{type:"button",class:"task-workspace__tool-btn task-workspace__overflow-btn","data-testid":"btn-overflow-menu",title:"More actions (export, import)","aria-label":"More actions","aria-expanded":r.value,onClick:$},[...T[22]||(T[22]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","aria-hidden":"true"},[e.createElementVNode("circle",{cx:"12",cy:"5",r:"1",fill:"currentColor"}),e.createElementVNode("circle",{cx:"12",cy:"12",r:"1",fill:"currentColor"}),e.createElementVNode("circle",{cx:"12",cy:"19",r:"1",fill:"currentColor"})],-1)])],8,ud),(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[r.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-workspace__overflow-backdrop","data-testid":"overflow-backdrop",onClick:z})):e.createCommentVNode("",!0)])),r.value?(e.openBlock(),e.createElementBlock("div",md,[e.createElementVNode("button",{type:"button",role:"menuitem",class:"task-workspace__overflow-item","data-testid":"btn-export-csv",title:"Download tasks as a CSV file",disabled:t.exportLoading,onClick:q},[T[23]||(T[23]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"7 10 12 15 17 10"}),e.createElementVNode("line",{x1:"12",y1:"15",x2:"12",y2:"3"})],-1)),e.createTextVNode(" "+e.toDisplayString(t.exportLoading?"Exporting...":"Export CSV"),1)],8,pd),e.createElementVNode("button",{type:"button",role:"menuitem",class:"task-workspace__overflow-item","data-testid":"btn-import-csv",title:"Import tasks from a CSV file",disabled:t.importLoading,onClick:te},[T[24]||(T[24]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),e.createElementVNode("polyline",{points:"17 8 12 3 7 8"}),e.createElementVNode("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)),e.createTextVNode(" "+e.toDisplayString(t.importLoading?"Importing...":"Import CSV"),1)],8,kd),T[26]||(T[26]=e.createElementVNode("hr",{class:"task-workspace__overflow-divider"},null,-1)),e.createElementVNode("button",{type:"button",role:"menuitem",class:"task-workspace__overflow-item","data-testid":"btn-save-current-filter",title:"Save the current filter combination for quick access",onClick:T[2]||(T[2]=F=>{o("save-filter"),z()})},[...T[25]||(T[25]=[e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"})],-1),e.createTextVNode(" Save current filter ",-1)])])])):e.createCommentVNode("",!0),e.createElementVNode("input",{ref_key:"importInputRef",ref:V,type:"file",accept:".csv",class:"task-workspace__hidden-input","data-testid":"input-import-file","aria-label":"Select CSV file to import",onChange:U},null,544)])])]),B.value?(e.openBlock(),e.createElementBlock("div",_d,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,F=>(e.openBlock(),e.createElementBlock("span",{key:F.key,class:"task-workspace__chip",role:"listitem","data-testid":`chip-filter-${F.key}`},[e.createElementVNode("span",vd,e.toDisplayString(F.label)+":",1),e.createTextVNode(" "+e.toDisplayString(F.value)+" ",1),e.createElementVNode("button",{type:"button",class:"task-workspace__chip-remove","data-testid":`btn-remove-filter-${F.key}`,"aria-label":`Remove ${F.label} filter`,title:`Remove ${F.label} filter`,onClick:D=>A(F.key)}," × ",8,yd)],8,fd))),128)),e.createElementVNode("button",{type:"button",class:"task-workspace__clear-filters","data-testid":"btn-clear-all-filters",title:"Remove all active filters","aria-label":"Clear all filters",onClick:ne}," Clear all ")])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("div",gd,[e.createVNode(ia,{"model-value":t.filters,loading:t.loading??!1,"onUpdate:modelValue":T[3]||(T[3]=F=>o("update:filters",F)),onSaveCurrent:T[4]||(T[4]=F=>o("save-filter"))},null,8,["model-value","loading"])])):e.createCommentVNode("",!0),t.savedFilters&&t.savedFilters.length>0?(e.openBlock(),e.createBlock(ca,{key:2,filters:t.savedFilters,"active-filter-id":t.activeSavedFilterId??null,onSelect:T[5]||(T[5]=F=>o("apply-saved-filter",F)),onRemove:T[6]||(T[6]=F=>o("delete-saved-filter",F))},null,8,["filters","active-filter-id"])):e.createCommentVNode("",!0),l.value.length>0||t.bulkResult&&(t.bulkResult.success.length>0||t.bulkResult.failed.length>0)?(e.openBlock(),e.createBlock(sa,{key:3,"selected-count":l.value.length,busy:t.bulkBusy??!1,result:t.bulkResult??null,onApply:T[7]||(T[7]=F=>o("bulk-action",{taskIds:l.value,action:F.action,params:F.params})),onClear:w},null,8,["selected-count","busy","result"])):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("div",bd,[e.withDirectives(e.createElementVNode("input",{ref_key:"inlineInputRef",ref:d,"onUpdate:modelValue":T[8]||(T[8]=F=>_.value=F),type:"text",class:"task-workspace__inline-input","data-testid":"input-inline-create",placeholder:"Task title — press Enter to create, Escape to cancel","aria-label":"New task title",onKeydown:O},null,544),[[e.vModelText,_.value]]),e.createElementVNode("button",{type:"button",class:"task-workspace__inline-submit","data-testid":"btn-inline-submit",title:"Create this task","aria-label":"Create task",disabled:_.value.trim().length===0,onClick:G}," Create ",8,hd),e.createElementVNode("button",{type:"button",class:"task-workspace__inline-cancel","data-testid":"btn-inline-cancel",title:"Cancel","aria-label":"Cancel inline creation",onClick:ee}," × ")])):e.createCommentVNode("",!0),t.tasks.length===0&&!t.loading?(e.openBlock(),e.createElementBlock("div",wd,[T[27]||(T[27]=e.createElementVNode("svg",{width:"40",height:"40",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",class:"task-workspace__empty-icon"},[e.createElementVNode("path",{d:"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"})],-1)),T[28]||(T[28]=e.createElementVNode("h3",null,"No tasks yet",-1)),T[29]||(T[29]=e.createElementVNode("p",null,"Create a task to start tracking work, or use a template for structured follow-ups.",-1)),e.createElementVNode("div",Ed,[e.createElementVNode("button",{type:"button",class:"task-workspace__empty-primary","data-testid":"btn-create-first-task",onClick:Y}," Create task "),e.createElementVNode("button",{type:"button",class:"task-workspace__empty-secondary","data-testid":"btn-create-first-task-full",onClick:T[9]||(T[9]=F=>o("quick-create"))}," Full form ")])])):(e.openBlock(),e.createElementBlock("div",Vd,[e.createElementVNode("table",Nd,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",$d,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":T[10]||(T[10]=F=>v.value=F),type:"checkbox",class:"task-workspace__checkbox","data-testid":"input-select-all-tasks","aria-label":"Select all tasks",title:"Select all visible tasks"},null,512),[[e.vModelCheckbox,v.value]])]),e.createElementVNode("th",{scope:"col",class:"task-workspace__th--number","aria-sort":h("display_number")},[e.createElementVNode("button",{type:"button","data-testid":"btn-sort-number",class:e.normalizeClass({"is-active-sort":u.value==="display_number"}),"aria-label":`Sort by number${b("display_number")}`,title:"Sort by task number",onClick:T[11]||(T[11]=F=>L("display_number"))}," #"+e.toDisplayString(b("display_number")),11,Td)],8,Bd),e.createElementVNode("th",{scope:"col",class:"task-workspace__th--title","aria-sort":h("title")},[e.createElementVNode("button",{type:"button","data-testid":"btn-sort-title",class:e.normalizeClass({"is-active-sort":u.value==="title"}),"aria-label":`Sort by title${b("title")}`,title:"Sort by task title",onClick:T[12]||(T[12]=F=>L("title"))}," Title"+e.toDisplayString(b("title")),11,Sd)],8,Cd),T[30]||(T[30]=e.createElementVNode("th",{scope:"col",class:"task-workspace__th--status",title:"Current task status"},"Status",-1)),T[31]||(T[31]=e.createElementVNode("th",{scope:"col",class:"task-workspace__th--priority",title:"Task priority level"},"Pri",-1)),T[32]||(T[32]=e.createElementVNode("th",{scope:"col",class:"task-workspace__th--assignee",title:"Person assigned to this task"},"Assignee",-1)),e.createElementVNode("th",{scope:"col",class:"task-workspace__th--deadline","aria-sort":h("due_at")},[e.createElementVNode("button",{type:"button","data-testid":"btn-sort-due",class:e.normalizeClass({"is-active-sort":u.value==="due_at"}),"aria-label":`Sort by deadline${b("due_at")}`,title:"Sort by deadline date",onClick:T[13]||(T[13]=F=>L("due_at"))}," Due"+e.toDisplayString(b("due_at")),11,Md)],8,Dd)])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tasks,F=>{var D;return e.openBlock(),e.createElementBlock("tr",{key:F.id,class:e.normalizeClass(["task-workspace__row",{"is-selected":l.value.includes(F.id)}]),"data-testid":`task-row-${F.id}`,"aria-label":`Task ${F.display_number_formatted}: ${F.title}`,onClick:E=>o("select-task",F.id)},[e.createElementVNode("td",zd,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":T[14]||(T[14]=E=>l.value=E),type:"checkbox",class:"task-workspace__checkbox",value:F.id,"data-testid":`input-select-task-${F.id}`,"aria-label":`Select task ${F.display_number_formatted}`,onClick:T[15]||(T[15]=e.withModifiers(()=>{},["stop"]))},null,8,Id),[[e.vModelCheckbox,l.value]])]),e.createElementVNode("td",{class:"task-workspace__td--number","data-testid":`task-number-${F.id}`},e.toDisplayString(F.display_number_formatted),9,xd),e.createElementVNode("td",Fd,[e.createElementVNode("strong",{"data-testid":`task-title-${F.id}`},e.toDisplayString(F.title),9,Ld)]),e.createElementVNode("td",{class:"task-workspace__td--status","data-testid":`task-status-${F.id}`},[e.createVNode(xe,{status:F.status},null,8,["status"])],8,Ud),e.createElementVNode("td",{class:"task-workspace__td--priority","data-testid":`task-priority-${F.id}`},[e.createVNode(Ie,{priority:F.priority,compact:""},null,8,["priority"])],8,Rd),e.createElementVNode("td",{class:"task-workspace__td--assignee","data-testid":`task-assignee-${F.id}`},e.toDisplayString(((D=F.primary_assignee)==null?void 0:D.name)??"—"),9,Wd),e.createElementVNode("td",{class:"task-workspace__td--deadline","data-testid":`task-deadline-${F.id}`},[F.due_at?(e.openBlock(),e.createElementBlock("div",Od,[e.createVNode(ge,{task:F,compact:""},null,8,["task"]),e.createElementVNode("span",{class:e.normalizeClass({"is-overdue":F.is_overdue})},e.toDisplayString(e.unref(kt)(F.due_at)),3)])):(e.openBlock(),e.createElementBlock("span",Hd,"—"))],8,Pd)],10,Ad)}),128))])])])),t.pagination.last_page>1?(e.openBlock(),e.createElementBlock("footer",jd,[e.createElementVNode("button",{type:"button","data-testid":"btn-prev-page","aria-label":"Previous page",title:"Go to previous page",disabled:t.pagination.current_page<=1,onClick:T[16]||(T[16]=F=>S(t.pagination.current_page-1))}," Previous ",8,qd),e.createElementVNode("span",Yd," Page "+e.toDisplayString(t.pagination.current_page)+" of "+e.toDisplayString(t.pagination.last_page),1),e.createElementVNode("button",{type:"button","data-testid":"btn-next-page","aria-label":"Next page",title:"Go to next page",disabled:t.pagination.current_page>=t.pagination.last_page,onClick:T[17]||(T[17]=F=>S(t.pagination.current_page+1))}," Next ",8,Kd)])):e.createCommentVNode("",!0)]))}}),ua=K(Qd,[["__scopeId","data-v-0e36b152"]]),Gd={class:"task-role-picker","data-testid":"picker-task-role"},Jd={class:"task-role-picker__input-wrap"},Zd=["data-testid","disabled","placeholder","value","aria-expanded"],Xd={key:0,class:"task-role-picker__menu",role:"listbox","data-testid":"list-task-roles"},ec=["data-testid","aria-selected","onMousedown"],tc={class:"task-role-picker__label"},ac={key:0,class:"task-role-picker__meta"},nc={key:0,class:"task-role-picker__empty","data-testid":"status-no-roles"},lc=e.defineComponent({__name:"TaskRolePicker",props:{modelValue:{default:null},options:{default:()=>[]},disabled:{type:Boolean,default:!1},placeholder:{default:"Choose a role"},inputTestId:{default:"input-task-role"}},emits:["update:modelValue","select"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),i=e.ref(!1),r=e.ref(-1),s=e.computed(()=>n.options.find(b=>b.name===n.modelValue)??null),_=e.computed(()=>{const b=l.value.trim().toLowerCase();return b===""?n.options:n.options.filter(h=>h.label.toLowerCase().includes(b)||h.name.toLowerCase().includes(b))});e.watch(()=>[n.modelValue,n.options],()=>{if(s.value!==null){l.value=s.value.label;return}l.value=n.modelValue??""},{immediate:!0,deep:!0});function d(b){const h=[];return typeof b.level=="number"&&h.push(`Level ${b.level}`),typeof b.user_count=="number"&&h.push(`${b.user_count} ${b.user_count===1?"user":"users"}`),h.join(" • ")}function V(){r.value=_.value.length>0?0:-1}function m(){n.disabled||(i.value=!0,V())}function v(){if(i.value=!1,r.value=-1,s.value!==null){l.value=s.value.label;return}l.value=n.modelValue??""}function p(b){l.value=b.label,i.value=!1,r.value=-1,o("update:modelValue",b.name),o("select",b)}function k(){l.value="",i.value=!1,r.value=-1,o("update:modelValue",null)}function B(b){var L;const h=((L=b.target)==null?void 0:L.value)??"";l.value=h,i.value=!0,V(),h.trim()===""&&o("update:modelValue",null)}function u(){window.setTimeout(()=>{v()},120)}function c(b){if(!n.disabled){if(b.key==="ArrowDown"){b.preventDefault(),m(),r.value=Math.min(_.value.length-1,r.value+1);return}if(b.key==="ArrowUp"){b.preventDefault(),m(),r.value=Math.max(0,r.value-1);return}if(b.key==="Enter"&&i.value&&r.value>=0){b.preventDefault();const h=_.value[r.value];h!==void 0&&p(h);return}b.key==="Escape"&&(b.preventDefault(),v())}}return(b,h)=>(e.openBlock(),e.createElementBlock("div",Gd,[e.createElementVNode("div",Jd,[e.createElementVNode("input",{"data-testid":t.inputTestId,class:"task-role-picker__input",disabled:t.disabled,placeholder:t.placeholder,value:l.value,type:"text",role:"combobox","aria-autocomplete":"list","aria-expanded":i.value,"aria-haspopup":"listbox",onFocus:m,onInput:B,onKeydown:c,onBlur:u},null,40,Zd),!t.disabled&&(t.modelValue!==null||l.value!=="")?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-role-picker__clear","data-testid":"btn-clear-role","aria-label":"Clear selected role",onClick:k}," Clear ")):e.createCommentVNode("",!0)]),i.value?(e.openBlock(),e.createElementBlock("div",Xd,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,(L,S)=>(e.openBlock(),e.createElementBlock("button",{key:L.name,type:"button",class:e.normalizeClass(["task-role-picker__option",{"task-role-picker__option--active":S===r.value}]),"data-testid":`option-role-${L.name}`,role:"option","aria-selected":L.name===t.modelValue,onMousedown:e.withModifiers(w=>p(L),["prevent"])},[e.createElementVNode("span",tc,e.toDisplayString(L.label),1),d(L)!==""?(e.openBlock(),e.createElementBlock("span",ac,e.toDisplayString(d(L)),1)):e.createCommentVNode("",!0)],42,ec))),128)),_.value.length===0?(e.openBlock(),e.createElementBlock("div",nc," No matching roles ")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),ma=K(lc,[["__scopeId","data-v-944f1542"]]),oc={class:"workflow-form__steps","aria-label":"Workflow steps"},sc=["data-testid","onClick"],ic={key:0,class:"workflow-form__panel","data-testid":"workflow-step-panel-1"},rc={class:"workflow-form__card-grid"},dc=["data-testid","aria-pressed","onClick"],cc={key:1,class:"workflow-form__panel","data-testid":"workflow-step-panel-2"},uc={class:"workflow-form__grid"},mc={class:"workflow-form__field"},pc=["value"],kc={class:"workflow-form__field"},_c=["value"],fc={key:1,class:"workflow-form__field"},vc={key:2,class:"workflow-form__field"},yc={key:3,class:"workflow-form__field"},gc={key:4,class:"workflow-form__muted"},bc={key:2,class:"workflow-form__panel","data-testid":"workflow-step-panel-3"},hc=["data-testid"],wc=["onUpdate:modelValue","data-testid","aria-label"],Ec=["value"],Vc=["onUpdate:modelValue","data-testid","aria-label"],Nc=["value"],$c=["onUpdate:modelValue","data-testid","aria-label","disabled"],Bc=["data-testid","aria-label","disabled","onClick"],Tc={key:3,class:"workflow-form__panel","data-testid":"workflow-step-panel-4"},Cc=["data-testid"],Sc={class:"workflow-form__row workflow-form__row--wrap"},Dc={class:"workflow-form__field workflow-form__field--compact"},Mc=["onUpdate:modelValue","data-testid"],Ac=["value"],zc={class:"workflow-form__field workflow-form__field--grow"},Ic=["onUpdate:modelValue","data-testid"],xc=["value"],Fc=["onUpdate:modelValue","data-testid"],Lc=["onUpdate:modelValue","data-testid","placeholder"],Uc={key:0,class:"workflow-form__row workflow-form__row--wrap"},Rc={class:"workflow-form__field workflow-form__field--grow"},Wc=["onUpdate:modelValue","data-testid"],Pc={class:"workflow-form__field workflow-form__field--grow"},Oc=["onUpdate:modelValue","data-testid"],Hc={key:1,class:"workflow-form__row workflow-form__row--wrap"},jc={class:"workflow-form__field"},qc=["onUpdate:modelValue","data-testid"],Yc={class:"workflow-form__field"},Kc=["onUpdate:modelValue","data-testid"],Qc=["value"],Gc={class:"workflow-form__field"},Jc=["onUpdate:modelValue","data-testid"],Zc=["value"],Xc={class:"workflow-form__field workflow-form__field--grow"},eu=["onUpdate:modelValue","data-testid"],tu={key:2,class:"workflow-form__row workflow-form__row--wrap"},au={class:"workflow-form__field"},nu=["onUpdate:modelValue","data-testid"],lu={class:"workflow-form__field"},ou=["onUpdate:modelValue","data-testid"],su={key:3,class:"workflow-form__row workflow-form__row--wrap"},iu={class:"workflow-form__field workflow-form__field--grow"},ru=["onUpdate:modelValue","data-testid"],du={class:"workflow-form__field"},cu=["onUpdate:modelValue","data-testid"],uu={class:"workflow-form__action-footer"},mu=["data-testid","aria-label","disabled","onClick"],pu=["data-testid","aria-label","disabled","onClick"],ku=["data-testid","aria-label","disabled","onClick"],_u={key:4,class:"workflow-form__panel","data-testid":"workflow-step-panel-5"},fu={class:"workflow-form__grid"},vu={class:"workflow-form__field workflow-form__field--wide"},yu={class:"workflow-form__field workflow-form__field--wide"},gu={class:"workflow-form__field"},bu={class:"workflow-form__toggle"},hu={class:"workflow-form__toggle"},wu={class:"workflow-form__footer"},Eu=["disabled"],Vu=e.defineComponent({__name:"WorkflowForm",props:{workflow:{},templates:{},roleOptions:{},mode:{},submitting:{type:Boolean}},emits:["submit","cancel"],setup(t,{emit:a}){const n=t,o=a,l=["Trigger","Trigger Config","Conditions","Actions","Settings"],i=["draft","open","in_progress","blocked","under_review","complete","cancelled"],r=["none","low","medium","high","urgent","critical"],s=[{value:"task_created",label:"Task created",description:"Runs as soon as a task is created."},{value:"status_changed",label:"Status changed",description:"Runs after a task moves between statuses."},{value:"tag_added",label:"Tag added",description:"Runs when a tag is attached to a task."},{value:"assigned",label:"Assigned",description:"Runs when a task is assigned or reassigned."},{value:"comment_added",label:"Comment added",description:"Runs when a new comment is added."},{value:"completed",label:"Completed",description:"Runs when a task is completed."},{value:"due_approaching",label:"Due approaching",description:"Runs ahead of a due date based on hours before due."},{value:"overdue",label:"Overdue",description:"Runs once a task crosses an overdue threshold."}],_=["status","priority","taskable_type","tags","assignee","source","due_at","created_by"],d=["equals","not_equals","in","not_in","contains","not_contains","is_null","is_not_null","before","after","greater_than","less_than"],V=[{value:"set_status",label:"Set status"},{value:"set_priority",label:"Set priority"},{value:"assign_to_user",label:"Assign to user"},{value:"assign_to_role",label:"Assign to role"},{value:"add_tag",label:"Add tag"},{value:"remove_tag",label:"Remove tag"},{value:"send_notification",label:"Send notification"},{value:"add_comment",label:"Add comment"},{value:"create_related_task",label:"Create related task"},{value:"set_due_date",label:"Set due date"},{value:"webhook",label:"Webhook"}],m=e.ref(1),v=e.reactive({name:"",description:"",trigger_type:"task_created",is_enabled:!0,stop_processing:!1,position:0}),p=e.reactive({from_status:"",to_status:"",tag:"",hours_before:"24",hours_overdue:"0"}),k=e.ref([]),B=e.ref([]),u=e.computed(()=>n.mode??"create"),c=e.computed(()=>m.value===l.length),b=e.computed(()=>n.templates??[]),h=e.computed(()=>n.roleOptions??[]);function L(D="add_tag"){return{type:D,value:"",config:{recipients:"",message:"",relation_type:"related_to",priority:"none",template_id:"",tags:"",offset_hours:"",url:"",method:"POST"}}}function S(){return{field:"status",operator:"equals",value:""}}function w(){var E,g,C,I,J,le,me;const D=n.workflow;v.name=(D==null?void 0:D.name)??"",v.description=(D==null?void 0:D.description)??"",v.trigger_type=(D==null?void 0:D.trigger_type)??"task_created",v.is_enabled=(D==null?void 0:D.is_enabled)??!0,v.stop_processing=(D==null?void 0:D.stop_processing)??!1,v.position=(D==null?void 0:D.position)??0,p.from_status=typeof((E=D==null?void 0:D.trigger_config)==null?void 0:E.from_status)=="string"?D.trigger_config.from_status:"",p.to_status=typeof((g=D==null?void 0:D.trigger_config)==null?void 0:g.to_status)=="string"?D.trigger_config.to_status:"",p.tag=typeof((C=D==null?void 0:D.trigger_config)==null?void 0:C.tag)=="string"?D.trigger_config.tag:"",p.hours_before=((I=D==null?void 0:D.trigger_config)==null?void 0:I.hours_before)===void 0?"24":String(D.trigger_config.hours_before),p.hours_overdue=((J=D==null?void 0:D.trigger_config)==null?void 0:J.hours_overdue)===void 0?"0":String(D.trigger_config.hours_overdue),k.value=(le=D==null?void 0:D.conditions)!=null&&le.length?D.conditions.map(Z=>({field:Z.field,operator:Z.operator,value:Z.value===void 0||Z.value===null?"":Array.isArray(Z.value)?Z.value.join(", "):String(Z.value)})):[S()],B.value=(me=D==null?void 0:D.actions)!=null&&me.length?D.actions.map(Z=>{var x,H,j,Q,ae,oe,pe,Ee,_e,Te,Fe;return{type:Z.type,value:Z.value===void 0||Z.value===null?"":String(Z.value),config:{recipients:Array.isArray((x=Z.config)==null?void 0:x.recipients)?String(((H=Z.config)==null?void 0:H.recipients).join(", ")):"",message:typeof((j=Z.config)==null?void 0:j.message)=="string"?Z.config.message:"",relation_type:typeof((Q=Z.config)==null?void 0:Q.relation_type)=="string"?Z.config.relation_type:"related_to",priority:typeof((ae=Z.config)==null?void 0:ae.priority)=="string"?Z.config.priority:"none",template_id:typeof((oe=Z.config)==null?void 0:oe.template_id)=="string"?Z.config.template_id:"",tags:Array.isArray((pe=Z.config)==null?void 0:pe.tags)?String(((Ee=Z.config)==null?void 0:Ee.tags).join(", ")):"",offset_hours:((_e=Z.config)==null?void 0:_e.offset_hours)===void 0?"":String(Z.config.offset_hours),url:typeof((Te=Z.config)==null?void 0:Te.url)=="string"?Z.config.url:"",method:typeof((Fe=Z.config)==null?void 0:Fe.method)=="string"?Z.config.method:"POST"}}}):[L()]}e.watch(()=>n.workflow,()=>{w()},{immediate:!0});function f(){m.value=Math.min(l.length,m.value+1)}function $(){m.value=Math.max(1,m.value-1)}function z(D){m.value=D}function q(){k.value.push(S())}function te(D){k.value.splice(D,1)}function U(){B.value.push(L())}function Y(D){B.value.splice(D,1)}function G(D,E){const g=E==="up"?D-1:D+1;if(g<0||g>=B.value.length)return;const C=[...B.value],I=C[D],J=C[g];I===void 0||J===void 0||(C[D]=J,C[g]=I,B.value=C)}function ee(D,E){return E==="in"||E==="not_in"?D.split(",").map(g=>g.trim()).filter(Boolean):D.trim()===""?void 0:D.trim()}function O(){switch(v.trigger_type){case"status_changed":return{...p.from_status!==""?{from_status:p.from_status}:{},...p.to_status!==""?{to_status:p.to_status}:{}};case"tag_added":return p.tag===""?{}:{tag:p.tag};case"due_approaching":return{hours_before:Number.parseInt(p.hours_before||"24",10)||24};case"overdue":return{hours_overdue:Number.parseInt(p.hours_overdue||"0",10)||0};default:return null}}function A(){return k.value.filter(D=>D.field&&D.operator).map(D=>({field:D.field,operator:D.operator,value:ee(D.value,D.operator)}))}function ne(){return B.value.map(D=>{const E={};return D.type==="send_notification"&&(E.recipients=D.config.recipients.split(",").map(g=>g.trim()).filter(Boolean),D.config.message.trim()!==""&&(E.message=D.config.message.trim())),D.type==="create_related_task"&&(D.config.template_id.trim()!==""&&(E.template_id=D.config.template_id.trim()),E.relation_type=D.config.relation_type,D.config.priority!=="none"&&(E.priority=D.config.priority),D.config.tags.trim()!==""&&(E.tags=D.config.tags.split(",").map(g=>g.trim()).filter(Boolean))),D.type==="set_due_date"&&D.config.offset_hours.trim()!==""&&(E.offset_hours=Number.parseInt(D.config.offset_hours,10)),D.type==="webhook"&&(E.url=D.config.url.trim(),E.method=D.config.method||"POST"),{type:D.type,...D.value.trim()!==""?{value:D.value.trim()}:{},...Object.keys(E).length>0?{config:E}:{}}})}function W(){v.name.trim()===""||B.value.length===0||o("submit",{name:v.name.trim(),description:v.description.trim()===""?null:v.description.trim(),trigger_type:v.trigger_type,trigger_config:O(),conditions:A(),actions:ne(),is_enabled:v.is_enabled,position:v.position,stop_processing:v.stop_processing})}function T(D){return D==="set_status"||D==="set_priority"}function F(D){switch(D){case"assign_to_role":return"warehouse-manager";case"assign_to_user":return"Assign to employee";case"add_tag":return"auto-assigned";case"webhook":return"Optional label";default:return"Value"}}return(D,E)=>(e.openBlock(),e.createElementBlock("form",{class:"workflow-form","data-testid":"form-workflow",onSubmit:e.withModifiers(W,["prevent"])},[e.createElementVNode("nav",oc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,(g,C)=>e.createElementVNode("button",{key:g,type:"button",class:e.normalizeClass(["workflow-form__step",{"workflow-form__step--active":m.value===C+1}]),"data-testid":`workflow-step-${C+1}`,onClick:I=>z(C+1)},[e.createElementVNode("span",null,e.toDisplayString(C+1),1),e.createTextVNode(" "+e.toDisplayString(g),1)],10,sc)),64))]),m.value===1?(e.openBlock(),e.createElementBlock("section",ic,[E[11]||(E[11]=e.createElementVNode("h3",null,"Select trigger",-1)),e.createElementVNode("div",rc,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(s,g=>e.createElementVNode("button",{key:g.value,type:"button",class:e.normalizeClass(["workflow-form__trigger-card",{"workflow-form__trigger-card--selected":v.trigger_type===g.value}]),"data-testid":`btn-trigger-${g.value}`,"aria-pressed":v.trigger_type===g.value,onClick:C=>v.trigger_type=g.value},[e.createElementVNode("strong",null,e.toDisplayString(g.label),1),e.createElementVNode("span",null,e.toDisplayString(g.description),1)],10,dc)),64))])])):m.value===2?(e.openBlock(),e.createElementBlock("section",cc,[E[19]||(E[19]=e.createElementVNode("h3",null,"Trigger configuration",-1)),e.createElementVNode("div",uc,[v.trigger_type==="status_changed"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("label",mc,[E[13]||(E[13]=e.createElementVNode("span",null,"From status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":E[0]||(E[0]=g=>p.from_status=g),"data-testid":"workflow-trigger-from-status"},[E[12]||(E[12]=e.createElementVNode("option",{value:""},"Any status",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,g=>e.createElementVNode("option",{key:g,value:g},e.toDisplayString(g),9,pc)),64))],512),[[e.vModelSelect,p.from_status]])]),e.createElementVNode("label",kc,[E[15]||(E[15]=e.createElementVNode("span",null,"To status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":E[1]||(E[1]=g=>p.to_status=g),"data-testid":"workflow-trigger-to-status"},[E[14]||(E[14]=e.createElementVNode("option",{value:""},"Any status",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,g=>e.createElementVNode("option",{key:g,value:g},e.toDisplayString(g),9,_c)),64))],512),[[e.vModelSelect,p.to_status]])])],64)):v.trigger_type==="tag_added"?(e.openBlock(),e.createElementBlock("label",fc,[E[16]||(E[16]=e.createElementVNode("span",null,"Required tag",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[2]||(E[2]=g=>p.tag=g),"data-testid":"workflow-trigger-tag",type:"text",placeholder:"shipping"},null,512),[[e.vModelText,p.tag]])])):v.trigger_type==="due_approaching"?(e.openBlock(),e.createElementBlock("label",vc,[E[17]||(E[17]=e.createElementVNode("span",null,"Hours before due",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[3]||(E[3]=g=>p.hours_before=g),"data-testid":"workflow-trigger-hours-before",type:"number",min:"0"},null,512),[[e.vModelText,p.hours_before]])])):v.trigger_type==="overdue"?(e.openBlock(),e.createElementBlock("label",yc,[E[18]||(E[18]=e.createElementVNode("span",null,"Hours overdue",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[4]||(E[4]=g=>p.hours_overdue=g),"data-testid":"workflow-trigger-hours-overdue",type:"number",min:"0"},null,512),[[e.vModelText,p.hours_overdue]])])):(e.openBlock(),e.createElementBlock("p",gc,"This trigger does not need extra configuration."))])])):m.value===3?(e.openBlock(),e.createElementBlock("section",bc,[e.createElementVNode("div",{class:"workflow-form__panel-header"},[E[20]||(E[20]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Conditions"),e.createElementVNode("p",null,"All conditions are evaluated with AND logic.")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-add-condition",onClick:q},"Add condition")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(g,C)=>(e.openBlock(),e.createElementBlock("div",{key:`condition-${C}`,class:"workflow-form__row","data-testid":`item-condition-${C}`},[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.field=I,"data-testid":`workflow-condition-field-${C}`,"aria-label":`Condition ${C+1} field`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(_,I=>e.createElementVNode("option",{key:I,value:I},e.toDisplayString(I),9,Ec)),64))],8,wc),[[e.vModelSelect,g.field]]),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.operator=I,"data-testid":`workflow-condition-operator-${C}`,"aria-label":`Condition ${C+1} operator`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(d,I=>e.createElementVNode("option",{key:I,value:I},e.toDisplayString(I),9,Nc)),64))],8,Vc),[[e.vModelSelect,g.operator]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.value=I,"data-testid":`workflow-condition-value-${C}`,"aria-label":`Condition ${C+1} value`,type:"text",placeholder:"critical, urgent",disabled:g.operator==="is_null"||g.operator==="is_not_null"},null,8,$c),[[e.vModelText,g.value]]),e.createElementVNode("button",{type:"button","data-testid":`btn-remove-condition-${C}`,"aria-label":`Remove condition ${C+1}`,disabled:k.value.length===1,onClick:I=>te(C)},"Remove",8,Bc)],8,hc))),128))])):m.value===4?(e.openBlock(),e.createElementBlock("section",Tc,[e.createElementVNode("div",{class:"workflow-form__panel-header"},[E[21]||(E[21]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Action steps"),e.createElementVNode("p",null,"Actions run in the order shown here.")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-add-action",onClick:U},"Add action")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,(g,C)=>(e.openBlock(),e.createElementBlock("article",{key:`action-${C}`,class:"workflow-form__action-card","data-testid":`item-action-${C}`},[e.createElementVNode("div",Sc,[e.createElementVNode("label",Dc,[E[22]||(E[22]=e.createElementVNode("span",null,"Action",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.type=I,"data-testid":`workflow-action-type-${C}`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(V,I=>e.createElementVNode("option",{key:I.value,value:I.value},e.toDisplayString(I.label),9,Ac)),64))],8,Mc),[[e.vModelSelect,g.type]])]),e.createElementVNode("label",zc,[E[24]||(E[24]=e.createElementVNode("span",null,"Value",-1)),T(g.type)?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":I=>g.value=I,"data-testid":`workflow-action-value-${C}`},[E[23]||(E[23]=e.createElementVNode("option",{value:""},"Select value",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.type==="set_status"?i:r,I=>(e.openBlock(),e.createElementBlock("option",{key:I,value:I},e.toDisplayString(I),9,xc))),128))],8,Ic)),[[e.vModelSelect,g.value]]):g.type==="assign_to_user"?(e.openBlock(),e.createBlock(be,{key:1,modelValue:g.value,"onUpdate:modelValue":I=>g.value=I,"input-test-id":`workflow-action-value-${C}`,"aria-label":"Workflow assignee",placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","onUpdate:modelValue","input-test-id"])):g.type==="assign_to_role"&&h.value.length>0?(e.openBlock(),e.createBlock(ma,{key:2,modelValue:g.value,"onUpdate:modelValue":I=>g.value=I,options:h.value,"input-test-id":`workflow-action-value-${C}`,placeholder:"Assign to role"},null,8,["modelValue","onUpdate:modelValue","options","input-test-id"])):g.type==="add_comment"?e.withDirectives((e.openBlock(),e.createElementBlock("textarea",{key:3,"onUpdate:modelValue":I=>g.value=I,"data-testid":`workflow-action-value-${C}`,rows:"3",placeholder:"Comment body"},null,8,Fc)),[[e.vModelText,g.value]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:4,"onUpdate:modelValue":I=>g.value=I,"data-testid":`workflow-action-value-${C}`,type:"text",placeholder:F(g.type)},null,8,Lc)),[[e.vModelText,g.value]])])]),g.type==="send_notification"?(e.openBlock(),e.createElementBlock("div",Uc,[e.createElementVNode("label",Rc,[E[25]||(E[25]=e.createElementVNode("span",null,"Recipients",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.config.recipients=I,"data-testid":`workflow-action-recipients-${C}`,type:"text",placeholder:"assignee, manager"},null,8,Wc),[[e.vModelText,g.config.recipients]])]),e.createElementVNode("label",Pc,[E[26]||(E[26]=e.createElementVNode("span",null,"Message",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.config.message=I,"data-testid":`workflow-action-message-${C}`,type:"text",placeholder:"Workflow updated this task"},null,8,Oc),[[e.vModelText,g.config.message]])])])):e.createCommentVNode("",!0),g.type==="create_related_task"?(e.openBlock(),e.createElementBlock("div",Hc,[e.createElementVNode("label",jc,[E[28]||(E[28]=e.createElementVNode("span",null,"Relation type",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.config.relation_type=I,"data-testid":`workflow-action-relation-type-${C}`},[...E[27]||(E[27]=[e.createElementVNode("option",{value:"related_to"},"related_to",-1),e.createElementVNode("option",{value:"blocks"},"blocks",-1),e.createElementVNode("option",{value:"parent_of"},"parent_of",-1)])],8,qc),[[e.vModelSelect,g.config.relation_type]])]),e.createElementVNode("label",Yc,[E[30]||(E[30]=e.createElementVNode("span",null,"Template",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.config.template_id=I,"data-testid":`workflow-action-template-id-${C}`},[E[29]||(E[29]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(b.value,I=>(e.openBlock(),e.createElementBlock("option",{key:I.id,value:I.id},e.toDisplayString(I.name),9,Qc))),128))],8,Kc),[[e.vModelSelect,g.config.template_id]])]),e.createElementVNode("label",Gc,[E[31]||(E[31]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.config.priority=I,"data-testid":`workflow-action-priority-${C}`},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,I=>e.createElementVNode("option",{key:I,value:I},e.toDisplayString(I),9,Zc)),64))],8,Jc),[[e.vModelSelect,g.config.priority]])]),e.createElementVNode("label",Xc,[E[32]||(E[32]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.config.tags=I,"data-testid":`workflow-action-tags-${C}`,type:"text",placeholder:"follow-up, warehouse"},null,8,eu),[[e.vModelText,g.config.tags]])])])):e.createCommentVNode("",!0),g.type==="set_due_date"?(e.openBlock(),e.createElementBlock("div",tu,[e.createElementVNode("label",au,[E[33]||(E[33]=e.createElementVNode("span",null,"Absolute due date",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.value=I,"data-testid":`workflow-action-due-date-${C}`,type:"date"},null,8,nu),[[e.vModelText,g.value]])]),e.createElementVNode("label",lu,[E[34]||(E[34]=e.createElementVNode("span",null,"Offset hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.config.offset_hours=I,"data-testid":`workflow-action-offset-hours-${C}`,type:"number",min:"0",placeholder:"4"},null,8,ou),[[e.vModelText,g.config.offset_hours]])])])):e.createCommentVNode("",!0),g.type==="webhook"?(e.openBlock(),e.createElementBlock("div",su,[e.createElementVNode("label",iu,[E[35]||(E[35]=e.createElementVNode("span",null,"Webhook URL",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I=>g.config.url=I,"data-testid":`workflow-action-url-${C}`,type:"url",placeholder:"https://hooks.example.com/task"},null,8,ru),[[e.vModelText,g.config.url]])]),e.createElementVNode("label",du,[E[37]||(E[37]=e.createElementVNode("span",null,"Method",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":I=>g.config.method=I,"data-testid":`workflow-action-method-${C}`},[...E[36]||(E[36]=[e.createElementVNode("option",{value:"POST"},"POST",-1),e.createElementVNode("option",{value:"PUT"},"PUT",-1),e.createElementVNode("option",{value:"PATCH"},"PATCH",-1)])],8,cu),[[e.vModelSelect,g.config.method]])])])):e.createCommentVNode("",!0),e.createElementVNode("footer",uu,[e.createElementVNode("button",{type:"button","data-testid":`btn-move-action-up-${C}`,"aria-label":`Move action ${C+1} up`,disabled:C===0,onClick:I=>G(C,"up")},"Move up",8,mu),e.createElementVNode("button",{type:"button","data-testid":`btn-move-action-down-${C}`,"aria-label":`Move action ${C+1} down`,disabled:C===B.value.length-1,onClick:I=>G(C,"down")},"Move down",8,pu),e.createElementVNode("button",{type:"button","data-testid":`btn-remove-action-${C}`,"aria-label":`Remove action ${C+1}`,disabled:B.value.length===1,onClick:I=>Y(C)},"Remove",8,ku)])],8,Cc))),128))])):(e.openBlock(),e.createElementBlock("section",_u,[E[43]||(E[43]=e.createElementVNode("h3",null,"Settings",-1)),e.createElementVNode("div",fu,[e.createElementVNode("label",vu,[E[38]||(E[38]=e.createElementVNode("span",null,"Name",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[5]||(E[5]=g=>v.name=g),"data-testid":"workflow-name",type:"text",required:"",placeholder:"Auto-assign shipping tasks"},null,512),[[e.vModelText,v.name]])]),e.createElementVNode("label",yu,[E[39]||(E[39]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":E[6]||(E[6]=g=>v.description=g),"data-testid":"workflow-description",rows:"4",placeholder:"Explain when and why this workflow exists."},null,512),[[e.vModelText,v.description]])]),e.createElementVNode("label",gu,[E[40]||(E[40]=e.createElementVNode("span",null,"Position",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[7]||(E[7]=g=>v.position=g),"data-testid":"workflow-position",type:"number",min:"0"},null,512),[[e.vModelText,v.position,void 0,{number:!0}]])]),e.createElementVNode("label",bu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[8]||(E[8]=g=>v.is_enabled=g),"data-testid":"workflow-enabled",type:"checkbox"},null,512),[[e.vModelCheckbox,v.is_enabled]]),E[41]||(E[41]=e.createTextVNode(" Enabled ",-1))]),e.createElementVNode("label",hu,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":E[9]||(E[9]=g=>v.stop_processing=g),"data-testid":"workflow-stop-processing",type:"checkbox"},null,512),[[e.vModelCheckbox,v.stop_processing]]),E[42]||(E[42]=e.createTextVNode(" Stop processing later workflows ",-1))])])])),e.createElementVNode("footer",wu,[e.createElementVNode("button",{type:"button",class:"workflow-form__ghost","data-testid":"workflow-cancel",onClick:E[10]||(E[10]=g=>o("cancel"))},"Cancel"),m.value>1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"workflow-form__ghost","data-testid":"workflow-back",onClick:$},"Back")):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("button",{key:2,type:"submit","data-testid":"workflow-submit",disabled:t.submitting||v.name.trim()===""},e.toDisplayString(u.value==="edit"?"Save workflow":"Create workflow"),9,Eu)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"workflow-next",onClick:f},"Next"))])],32))}}),Nu=K(Vu,[["__scopeId","data-v-9e014510"]]),$u={class:"workflow-list","data-testid":"list-workflows"},Bu={class:"workflow-list__header"},Tu={class:"workflow-list__count","data-testid":"badge-workflow-count"},Cu={key:0,class:"workflow-list__error","data-testid":"status-workflow-error"},Su={key:1,class:"workflow-list__loading","data-testid":"status-loading-workflows"},Du={key:2,class:"workflow-list__table-wrap"},Mu={class:"workflow-list__table","data-testid":"workflow-list-table"},Au=["data-testid"],zu={class:"workflow-list__name"},Iu={key:0},xu=["data-testid","onClick"],Fu={class:"workflow-list__actions"},Lu=["data-testid","aria-label","disabled","onClick"],Uu=["data-testid","aria-label","disabled","onClick"],Ru=["data-testid","aria-label","onClick"],Wu=["data-testid","aria-label","onClick"],Pu=["data-testid","aria-label","onClick"],Ou=["data-testid","aria-label","onClick"],Hu={key:0},ju=e.defineComponent({__name:"WorkflowList",props:{workflows:{},loading:{type:Boolean},error:{}},emits:["edit","duplicate","remove","toggle","move","logs"],setup(t,{emit:a}){const n=t,o=a,l=e.computed(()=>[...n.workflows].sort((r,s)=>r.position-s.position));function i(r){return r===null||r===""?"Never":new Date(r).toLocaleString()}return(r,s)=>(e.openBlock(),e.createElementBlock("section",$u,[e.createElementVNode("header",Bu,[s[0]||(s[0]=e.createElementVNode("div",null,[e.createElementVNode("p",{class:"workflow-list__eyebrow"},"Workflow Automation"),e.createElementVNode("h2",null,"Workflow Builder")],-1)),e.createElementVNode("span",Tu,e.toDisplayString(l.value.length)+" "+e.toDisplayString(l.value.length===1?"workflow":"workflows"),1)]),t.error?(e.openBlock(),e.createElementBlock("p",Cu,e.toDisplayString(t.error),1)):t.loading&&l.value.length===0?(e.openBlock(),e.createElementBlock("p",Su,"Loading workflows…")):(e.openBlock(),e.createElementBlock("div",Du,[e.createElementVNode("table",Mu,[s[2]||(s[2]=e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,"Name"),e.createElementVNode("th",null,"Trigger"),e.createElementVNode("th",null,"Status"),e.createElementVNode("th",null,"Last Run"),e.createElementVNode("th",null,"Runs"),e.createElementVNode("th",{class:"workflow-list__actions-header"},"Actions")])],-1)),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.value,(_,d)=>(e.openBlock(),e.createElementBlock("tr",{key:_.id,"data-testid":`workflow-row-${_.id}`},[e.createElementVNode("td",null,[e.createElementVNode("div",zu,[e.createElementVNode("strong",null,e.toDisplayString(_.name),1),_.description?(e.openBlock(),e.createElementBlock("span",Iu,e.toDisplayString(_.description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",null,e.toDisplayString(_.trigger_type_label??_.trigger_type),1),e.createElementVNode("td",null,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["workflow-list__status",{"workflow-list__status--enabled":_.is_enabled}]),"data-testid":`workflow-toggle-${_.id}`,onClick:V=>o("toggle",{workflow:_,isEnabled:!_.is_enabled})},e.toDisplayString(_.is_enabled?"Enabled":"Disabled"),11,xu)]),e.createElementVNode("td",null,e.toDisplayString(i(_.last_executed_at)),1),e.createElementVNode("td",null,e.toDisplayString(_.execution_count),1),e.createElementVNode("td",Fu,[e.createElementVNode("button",{type:"button","data-testid":`btn-move-workflow-up-${_.id}`,"aria-label":`Move ${_.name} up`,disabled:d===0,onClick:V=>o("move",{workflow:_,direction:"up"})},"Up",8,Lu),e.createElementVNode("button",{type:"button","data-testid":`btn-move-workflow-down-${_.id}`,"aria-label":`Move ${_.name} down`,disabled:d===l.value.length-1,onClick:V=>o("move",{workflow:_,direction:"down"})},"Down",8,Uu),e.createElementVNode("button",{type:"button","data-testid":`btn-edit-workflow-${_.id}`,"aria-label":`Edit ${_.name}`,onClick:V=>o("edit",_)},"Edit",8,Ru),e.createElementVNode("button",{type:"button","data-testid":`btn-duplicate-workflow-${_.id}`,"aria-label":`Duplicate ${_.name}`,onClick:V=>o("duplicate",_)},"Duplicate",8,Wu),e.createElementVNode("button",{type:"button","data-testid":`btn-logs-workflow-${_.id}`,"aria-label":`View logs for ${_.name}`,onClick:V=>o("logs",_)},"Logs",8,Pu),e.createElementVNode("button",{type:"button",class:"workflow-list__danger","data-testid":`btn-delete-workflow-${_.id}`,"aria-label":`Delete ${_.name}`,onClick:V=>o("remove",_)},"Delete",8,Ou)])],8,Au))),128)),l.value.length===0?(e.openBlock(),e.createElementBlock("tr",Hu,[...s[1]||(s[1]=[e.createElementVNode("td",{colspan:"6",class:"workflow-list__empty","data-testid":"status-empty-workflows"},"No workflows yet.",-1)])])):e.createCommentVNode("",!0)])])]))]))}}),qu=K(ju,[["__scopeId","data-v-09601872"]]),Yu={class:"workflow-logs","data-testid":"panel-workflow-logs"},Ku={class:"workflow-logs__filters"},Qu={key:0,class:"workflow-logs__loading","data-testid":"status-loading-logs"},Gu=["data-testid"],Ju={class:"workflow-logs__row"},Zu=["data-testid"],Xu={class:"workflow-logs__meta"},em=["data-testid","onClick"],tm={key:1},am=["data-testid","aria-expanded","aria-label","onClick"],nm=["data-testid"],lm={key:0},om={key:1,class:"workflow-logs__empty","data-testid":"status-empty-logs"},sm=e.defineComponent({__name:"WorkflowLogs",props:{logs:{},loading:{type:Boolean}},emits:["refresh","select-task"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),i=e.ref(""),r=e.ref(""),s=e.ref(null),_=e.computed(()=>n.logs.filter(v=>!(l.value!==""&&v.status!==l.value||i.value!==""&&(v.executed_at===null||v.executed_at<i.value)||r.value!==""&&(v.executed_at===null||v.executed_at>r.value))));function d(v){s.value=s.value===v?null:v}function V(){o("refresh",{...l.value!==""?{status:l.value}:{},...i.value!==""?{date_from:i.value}:{},...r.value!==""?{date_to:r.value}:{}})}function m(v){o("select-task",v)}return(v,p)=>(e.openBlock(),e.createElementBlock("section",Yu,[e.createElementVNode("header",{class:"workflow-logs__header"},[p[3]||(p[3]=e.createElementVNode("div",null,[e.createElementVNode("p",{class:"workflow-logs__eyebrow"},"Execution Audit"),e.createElementVNode("h2",null,"Workflow Logs")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-refresh-logs","aria-label":"Refresh workflow logs",onClick:V},"Refresh")]),e.createElementVNode("div",Ku,[e.createElementVNode("label",null,[p[5]||(p[5]=e.createElementVNode("span",null,"Status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":p[0]||(p[0]=k=>l.value=k),"data-testid":"workflow-log-status-filter"},[...p[4]||(p[4]=[e.createElementVNode("option",{value:""},"All",-1),e.createElementVNode("option",{value:"success"},"success",-1),e.createElementVNode("option",{value:"skipped"},"skipped",-1),e.createElementVNode("option",{value:"error"},"error",-1)])],512),[[e.vModelSelect,l.value]])]),e.createElementVNode("label",null,[p[6]||(p[6]=e.createElementVNode("span",null,"From",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[1]||(p[1]=k=>i.value=k),"data-testid":"workflow-log-date-from",type:"date"},null,512),[[e.vModelText,i.value]])]),e.createElementVNode("label",null,[p[7]||(p[7]=e.createElementVNode("span",null,"To",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":p[2]||(p[2]=k=>r.value=k),"data-testid":"workflow-log-date-to",type:"date"},null,512),[[e.vModelText,r.value]])])]),t.loading?(e.openBlock(),e.createElementBlock("p",Qu,"Loading logs…")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,k=>(e.openBlock(),e.createElementBlock("div",{key:k.id,class:"workflow-logs__card","data-testid":`card-log-${k.id}`},[e.createElementVNode("div",Ju,[e.createElementVNode("div",null,[e.createElementVNode("strong",{"data-testid":`status-log-${k.id}`},e.toDisplayString(k.status_label??k.status),9,Zu),e.createElementVNode("p",null,e.toDisplayString(e.unref(ie)(k.executed_at)),1)]),e.createElementVNode("div",Xu,[k.task?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"workflow-logs__task-link","data-testid":`btn-open-log-task-${k.id}`,onClick:B=>m(k.task.id)},e.toDisplayString(k.task.display_number_formatted)+" · "+e.toDisplayString(k.task.title),9,em)):(e.openBlock(),e.createElementBlock("span",tm,"Task "+e.toDisplayString(k.task_id),1)),e.createElementVNode("span",null,e.toDisplayString(k.duration_ms)+"ms",1),e.createElementVNode("button",{type:"button","data-testid":`btn-toggle-log-${k.id}`,"aria-expanded":s.value===k.id,"aria-label":s.value===k.id?"Hide log details":"Show log details",onClick:B=>d(k.id)},e.toDisplayString(s.value===k.id?"Hide":"Details"),9,am)])]),s.value===k.id?(e.openBlock(),e.createElementBlock("div",{key:0,class:"workflow-logs__details","data-testid":`panel-log-details-${k.id}`},[e.createElementVNode("p",null,[p[8]||(p[8]=e.createElementVNode("strong",null,"Conditions met:",-1)),e.createTextVNode(" "+e.toDisplayString(k.conditions_met?"Yes":"No"),1)]),k.error?(e.openBlock(),e.createElementBlock("p",lm,[p[9]||(p[9]=e.createElementVNode("strong",null,"Error:",-1)),e.createTextVNode(" "+e.toDisplayString(k.error),1)])):e.createCommentVNode("",!0),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.actions_executed,(B,u)=>{var c;return e.openBlock(),e.createElementBlock("li",{key:`${k.id}-${u}`},e.toDisplayString(B.type)+": "+e.toDisplayString(((c=B.result)==null?void 0:c.message)??"No result message"),1)}),128))])],8,nm)):e.createCommentVNode("",!0)],8,Gu))),128)),!t.loading&&_.value.length===0?(e.openBlock(),e.createElementBlock("p",om,"No log entries match the current filters.")):e.createCommentVNode("",!0)]))}}),im=K(sm,[["__scopeId","data-v-e72cf4ed"]]),rm={key:0,class:"task-composer__context","data-testid":"task-composer-context"},dm={key:1,class:"task-composer__mode",role:"tablist","aria-label":"Task creation mode","data-testid":"task-composer-mode"},cm=["aria-selected"],um=["aria-selected"],mm={key:2,class:"task-composer__templates","data-testid":"task-composer-templates"},pm={class:"task-composer__template-grid"},km=["data-testid","onClick"],_m={key:0,class:"task-composer__field","data-testid":"task-composer-template-override"},fm=["disabled","placeholder"],vm={key:3,class:"task-composer__field task-composer__field--hero"},ym=["disabled"],gm={class:"task-composer__field"},bm={class:"task-composer__deadline","data-testid":"task-composer-deadline"},hm={class:"task-composer__deadline-chips",role:"group","aria-label":"Deadline presets"},wm=["disabled"],Em=["disabled"],Vm=["disabled"],Nm=["disabled"],$m=["disabled"],Bm=["disabled"],Tm={key:0,class:"task-composer__deadline-inputs","data-testid":"task-composer-deadline-inputs"},Cm=["disabled"],Sm={key:1,class:"task-composer__deadline-meta","data-testid":"task-composer-deadline-meta"},Dm={class:"task-composer__deadline-resolved","data-testid":"task-composer-deadline-resolved"},Mm={class:"task-composer__deadline-time-row"},Am=["disabled"],zm=["disabled"],Im=["disabled"],xm=["disabled"],Fm={key:0,class:"task-composer__details-hint"},Lm={key:5,class:"task-composer__details","data-testid":"task-composer-details"},Um={class:"task-composer__field"},Rm=["disabled"],Wm={class:"task-composer__field"},Pm=["aria-checked","tabindex","data-testid","disabled","onClick"],Om={class:"task-composer__field"},Hm=["disabled"],jm={class:"task-composer__field","data-testid":"composer-checklist"},qm={class:"task-composer__checklist-header"},Ym=["disabled"],Km=["onUpdate:modelValue","data-testid","disabled","placeholder","onKeydown"],Qm=["data-testid","disabled","onClick"],Gm={key:6,class:"task-composer__summary","data-testid":"task-composer-summary"},Jm={key:0},Zm={key:1},Xm={class:"task-composer__footer"},ep=["disabled"],tp=["disabled"],ap={key:0,class:"task-composer__spinner",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.5","aria-hidden":"true"},np=e.defineComponent({__name:"TaskComposer",props:{templates:{default:()=>[]},busy:{type:Boolean,default:!1},entityContext:{default:null},entityLabel:{default:null},initialTask:{default:null}},emits:["submit","instantiate-template","cancel"],setup(t,{emit:a}){const n=t,o=a,l=[{value:"none",label:"None"},{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"urgent",label:"Urgent"},{value:"critical",label:"Critical"}],i=e.ref("scratch"),r=e.ref(null),s=e.ref("none"),_=e.ref(""),d=e.ref(""),V=e.ref(!1),m=e.ref(!1),v=e.ref(""),p=e.reactive({title:"",description:"",priority:"medium",primary_assignee_id:"",tags:"",checklist:[],title_override:""});function k(E){return E.toString().padStart(2,"0")}function B(E){return`${E.getFullYear()}-${k(E.getMonth()+1)}-${k(E.getDate())}`}function u(E){const g=new Date;switch(E){case"today":return B(g);case"tomorrow":{const C=new Date(g);return C.setDate(C.getDate()+1),B(C)}case"this_week":{const C=new Date(g),I=C.getDay(),J=I<=5?5-I:0;return C.setDate(C.getDate()+J),B(C)}case"next_week":{const C=new Date(g),I=C.getDay(),J=I<=5?5-I+7:7;return C.setDate(C.getDate()+J),B(C)}default:return""}}function c(){var E,g,C,I,J,le,me,Z,x,H,j;if(p.title=((E=n.initialTask)==null?void 0:E.title)??"",p.description=((g=n.initialTask)==null?void 0:g.description)??"",p.priority=((C=n.initialTask)==null?void 0:C.priority)??"medium",p.primary_assignee_id=((J=(I=n.initialTask)==null?void 0:I.primary_assignee)==null?void 0:J.id)===void 0?"":String(n.initialTask.primary_assignee.id),p.tags=((me=(le=n.initialTask)==null?void 0:le.tags)==null?void 0:me.map(Q=>Q.name).join(", "))??"",p.checklist=((x=(Z=n.initialTask)==null?void 0:Z.checklist_items)==null?void 0:x.map(Q=>Q.title))??[],p.title_override="",r.value=((H=n.initialTask)==null?void 0:H.primary_assignee)??null,i.value="scratch",v.value="",(j=n.initialTask)!=null&&j.due_at){s.value="custom";const Q=n.initialTask.due_at;if(/^\d{4}-\d{2}-\d{2}$/.test(Q))_.value=Q,d.value="",V.value=!1;else{const ae=new Date(Q);Number.isNaN(ae.getTime())||(_.value=B(ae),d.value=`${k(ae.getHours())}:${k(ae.getMinutes())}`,V.value=!0)}}else s.value="none",_.value="",d.value="",V.value=!1;(p.description||p.tags||p.checklist.length>0||p.priority!=="medium")&&(m.value=!0)}e.watch(()=>n.initialTask,()=>{c()},{immediate:!0});const b=e.computed(()=>n.templates.length>0),h=e.computed(()=>n.templates.find(E=>E.id===v.value)??null),L=e.computed(()=>n.entityLabel?n.entityLabel:n.entityContext===null?null:`${n.entityContext.type.split(/[_-]+/).filter(Boolean).map(g=>g.charAt(0).toUpperCase()+g.slice(1)).join(" ")} #${n.entityContext.id}`),S=e.computed(()=>{if(s.value==="none")return null;const E=s.value==="custom"?_.value:u(s.value);return E?V.value&&d.value?new Date(`${E}T${d.value}`).toISOString():E:null}),w=e.computed(()=>{if(s.value==="none"||S.value===null)return null;const E=s.value==="custom"?_.value:u(s.value);if(!E)return null;const C=new Date(`${E}T00:00:00`).toLocaleDateString("en-US",{weekday:"short",month:"short",day:"numeric"});if(V.value&&d.value){const I=d.value.split(":"),J=parseInt(I[0]??"0",10),le=I[1]??"00",me=J>=12?"PM":"AM",Z=J===0?12:J>12?J-12:J;return`${C} at ${Z}:${le} ${me}`}return C}),f=e.computed(()=>r.value!==null?r.value.name:null),$=e.computed(()=>i.value==="template"&&h.value?"Create from template":"Create task"),z=e.computed(()=>n.busy?!1:i.value==="template"?h.value!==null:p.title.trim().length>0),q=e.computed(()=>p.checklist.map(E=>E.trim()).filter(E=>E.length>0)),te=e.computed(()=>p.tags.split(",").map(E=>E.trim()).filter(E=>E.length>0));function U(E){if(s.value=E,E==="none"){_.value="",d.value="",V.value=!1;return}if(E==="custom"){_.value||(_.value=B(new Date));return}_.value=u(E)}function Y(E){v.value=E.id,p.title_override=""}function G(){v.value="",p.title_override=""}function ee(E){i.value=E,E==="scratch"&&G()}function O(){p.checklist.push(""),e.nextTick(()=>{const E=p.checklist.length-1,g=document.querySelector(`[data-testid="composer-checklist-item-${E}"]`);g==null||g.focus()})}function A(E){p.checklist.splice(E,1)}function ne(E,g){E.key==="Enter"&&(E.preventDefault(),O())}function W(){const E=p.checklist.map((g,C)=>({title:g.trim(),position:C})).filter(g=>g.title.length>0);return E.length>0?E:void 0}function T(){const E=te.value;return E.length>0?E:void 0}function F(){var C,I,J,le;if(!z.value)return;if(i.value==="template"&&h.value){o("instantiate-template",{templateId:h.value.id,payload:{taskable_type:((C=n.entityContext)==null?void 0:C.type)??null,taskable_id:((I=n.entityContext)==null?void 0:I.id)??null,primary_assignee_id:p.primary_assignee_id||null,due_at:S.value,title_override:p.title_override.trim()||null}});return}const E=W(),g=T();o("submit",{title:p.title.trim(),description:p.description.trim()||null,priority:p.priority,primary_assignee_id:p.primary_assignee_id||null,due_at:S.value,taskable_type:((J=n.entityContext)==null?void 0:J.type)??null,taskable_id:((le=n.entityContext)==null?void 0:le.id)??null,...g?{tags:g}:{},...E?{checklist_items:E}:{}})}function D(E){if(!["ArrowRight","ArrowDown","ArrowLeft","ArrowUp"].includes(E.key))return;E.preventDefault();const C=l.findIndex(J=>J.value===p.priority);let I;E.key==="ArrowRight"||E.key==="ArrowDown"?I=(C+1)%l.length:I=(C-1+l.length)%l.length,p.priority=l[I].value,e.nextTick(()=>{const J=E.currentTarget,le=J==null?void 0:J.querySelector(`[data-testid="composer-priority-${l[I].value}"]`);le==null||le.focus()})}return(E,g)=>(e.openBlock(),e.createElementBlock("form",{class:"task-composer","data-testid":"task-composer",onSubmit:e.withModifiers(F,["prevent"])},[L.value?(e.openBlock(),e.createElementBlock("div",rm,[g[20]||(g[20]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}),e.createElementVNode("path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"})],-1)),e.createElementVNode("span",null,e.toDisplayString(L.value),1)])):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",dm,[e.createElementVNode("button",{type:"button",role:"tab",class:e.normalizeClass(["task-composer__mode-tab",{"is-active":i.value==="scratch"}]),"aria-selected":i.value==="scratch","data-testid":"composer-mode-scratch",onClick:g[0]||(g[0]=C=>ee("scratch"))}," New task ",10,cm),e.createElementVNode("button",{type:"button",role:"tab",class:e.normalizeClass(["task-composer__mode-tab",{"is-active":i.value==="template"}]),"aria-selected":i.value==="template","data-testid":"composer-mode-template",onClick:g[1]||(g[1]=C=>ee("template"))}," From template ",10,um)])):e.createCommentVNode("",!0),i.value==="template"?(e.openBlock(),e.createElementBlock("div",mm,[e.createElementVNode("div",pm,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.templates,C=>(e.openBlock(),e.createElementBlock("button",{key:C.id,type:"button",class:e.normalizeClass(["task-composer__template-card",{"is-selected":v.value===C.id}]),"data-testid":`composer-template-${C.id}`,onClick:I=>Y(C)},[e.createElementVNode("strong",null,e.toDisplayString(C.name),1),e.createElementVNode("span",null,e.toDisplayString(C.description||C.default_title),1),e.createElementVNode("small",null,e.toDisplayString(C.items_count??0)+" steps",1)],10,km))),128))]),h.value?(e.openBlock(),e.createElementBlock("label",_m,[g[21]||(g[21]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Rename task "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[2]||(g[2]=C=>p.title_override=C),type:"text",class:"task-composer__input","data-testid":"composer-title-override",disabled:t.busy,placeholder:h.value.default_title||"Keep template title"},null,8,fm),[[e.vModelText,p.title_override]])])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),i.value==="scratch"?(e.openBlock(),e.createElementBlock("label",vm,[g[22]||(g[22]=e.createElementVNode("span",{class:"task-composer__label"},"What needs to be done?",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[3]||(g[3]=C=>p.title=C),type:"text",class:"task-composer__input task-composer__input--hero","data-testid":"composer-title",disabled:t.busy,placeholder:"e.g. Call customer about replacement shipment","data-autofocus":""},null,8,ym),[[e.vModelText,p.title]])])):e.createCommentVNode("",!0),e.createElementVNode("div",gm,[g[23]||(g[23]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Assign to "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.createVNode(be,{modelValue:p.primary_assignee_id,"onUpdate:modelValue":g[4]||(g[4]=C=>p.primary_assignee_id=C),"selected-user":r.value,"input-test-id":"composer-assignee","aria-label":"Task assignee",placeholder:"Search by name or role",disabled:t.busy??!1,"rank-by-workload":"",onSelect:g[5]||(g[5]=C=>r.value=C)},null,8,["modelValue","selected-user","disabled"])]),e.createElementVNode("fieldset",bm,[g[24]||(g[24]=e.createElementVNode("legend",{class:"task-composer__label"},[e.createTextVNode("Due "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.createElementVNode("div",hm,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="today"}]),"data-testid":"composer-deadline-today",disabled:t.busy,onClick:g[6]||(g[6]=C=>U("today"))}," Today ",10,wm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="tomorrow"}]),"data-testid":"composer-deadline-tomorrow",disabled:t.busy,onClick:g[7]||(g[7]=C=>U("tomorrow"))}," Tomorrow ",10,Em),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="this_week"}]),"data-testid":"composer-deadline-this-week",disabled:t.busy,onClick:g[8]||(g[8]=C=>U("this_week"))}," This week ",10,Vm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="next_week"}]),"data-testid":"composer-deadline-next-week",disabled:t.busy,onClick:g[9]||(g[9]=C=>U("next_week"))}," Next week ",10,Nm),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip",{"is-active":s.value==="custom"}]),"data-testid":"composer-deadline-custom",disabled:t.busy,onClick:g[10]||(g[10]=C=>U("custom"))}," Pick date ",10,$m),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-composer__chip task-composer__chip--muted",{"is-active":s.value==="none"}]),"data-testid":"composer-deadline-none",disabled:t.busy,onClick:g[11]||(g[11]=C=>U("none"))}," No deadline ",10,Bm)]),s.value==="custom"?(e.openBlock(),e.createElementBlock("div",Tm,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[12]||(g[12]=C=>_.value=C),type:"date",class:"task-composer__input","data-testid":"composer-due-date","aria-label":"Deadline date",disabled:t.busy},null,8,Cm),[[e.vModelText,_.value]])])):e.createCommentVNode("",!0),s.value!=="none"&&S.value!==null?(e.openBlock(),e.createElementBlock("div",Sm,[e.createElementVNode("p",Dm," Due "+e.toDisplayString(w.value),1),e.createElementVNode("div",Mm,[V.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[14]||(g[14]=C=>d.value=C),type:"time",class:"task-composer__input task-composer__input--time","data-testid":"composer-due-time","aria-label":"Deadline time",disabled:t.busy},null,8,zm),[[e.vModelText,d.value]]),e.createElementVNode("button",{type:"button",class:"task-composer__text-button task-composer__text-button--muted","data-testid":"composer-remove-time",disabled:t.busy,onClick:g[15]||(g[15]=C=>{V.value=!1,d.value=""})}," Remove time ",8,Im)],64)):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-composer__text-button","data-testid":"composer-add-time",disabled:t.busy,onClick:g[13]||(g[13]=C=>V.value=!0)}," + Add specific time ",8,Am))])])):e.createCommentVNode("",!0)]),i.value==="scratch"?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",class:e.normalizeClass(["task-composer__details-toggle",{"is-open":m.value}]),"data-testid":"composer-toggle-details",disabled:t.busy,onClick:g[16]||(g[16]=C=>m.value=!m.value)},[g[25]||(g[25]=e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true",class:"task-composer__chevron"},[e.createElementVNode("polyline",{points:"6 9 12 15 18 9"})],-1)),e.createTextVNode(" "+e.toDisplayString(m.value?"Fewer details":"Add details")+" ",1),!m.value&&(p.description||te.value.length>0||q.value.length>0)?(e.openBlock(),e.createElementBlock("span",Fm," (has content) ")):e.createCommentVNode("",!0)],10,xm)):e.createCommentVNode("",!0),m.value&&i.value==="scratch"?(e.openBlock(),e.createElementBlock("div",Lm,[e.createElementVNode("label",Um,[g[26]||(g[26]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Description "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":g[17]||(g[17]=C=>p.description=C),class:"task-composer__textarea",rows:"3","data-testid":"composer-description",disabled:t.busy,placeholder:"Add context or background for the assignee"},null,8,Rm),[[e.vModelText,p.description]])]),e.createElementVNode("div",Wm,[g[27]||(g[27]=e.createElementVNode("span",{class:"task-composer__label"},"Priority",-1)),e.createElementVNode("div",{class:"task-composer__priority-row",role:"radiogroup","aria-label":"Task priority",onKeydown:D},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,C=>e.createElementVNode("button",{key:C.value,type:"button",role:"radio",class:e.normalizeClass(["task-composer__priority-chip",[{"is-active":p.priority===C.value},`task-composer__priority-chip--${C.value}`]]),"aria-checked":p.priority===C.value,tabindex:p.priority===C.value?0:-1,"data-testid":`composer-priority-${C.value}`,disabled:t.busy,onClick:I=>p.priority=C.value},e.toDisplayString(C.label),11,Pm)),64))],32)]),e.createElementVNode("label",Om,[g[28]||(g[28]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Tags "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":g[18]||(g[18]=C=>p.tags=C),type:"text",class:"task-composer__input","data-testid":"composer-tags",disabled:t.busy,placeholder:"ops, shipping, customer-follow-up"},null,8,Hm),[[e.vModelText,p.tags]])]),e.createElementVNode("div",jm,[e.createElementVNode("div",qm,[g[29]||(g[29]=e.createElementVNode("span",{class:"task-composer__label"},[e.createTextVNode("Checklist "),e.createElementVNode("span",{class:"task-composer__optional"},"optional")],-1)),e.createElementVNode("button",{type:"button",class:"task-composer__text-button","data-testid":"composer-add-checklist",disabled:t.busy,onClick:O}," + Add item ",8,Ym)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.checklist,(C,I)=>(e.openBlock(),e.createElementBlock("div",{key:`checklist-${I}`,class:"task-composer__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":J=>p.checklist[I]=J,type:"text",class:"task-composer__input","data-testid":`composer-checklist-item-${I}`,disabled:t.busy,placeholder:`Step ${I+1}`,onKeydown:J=>ne(J)},null,40,Km),[[e.vModelText,p.checklist[I]]]),e.createElementVNode("button",{type:"button",class:"task-composer__remove","data-testid":`composer-remove-checklist-${I}`,disabled:t.busy,"aria-label":"Remove checklist item",onClick:J=>A(I)}," × ",8,Qm)]))),128))])])):e.createCommentVNode("",!0),(f.value||w.value)&&z.value?(e.openBlock(),e.createElementBlock("div",Gm,[f.value?(e.openBlock(),e.createElementBlock("span",Jm,[g[30]||(g[30]=e.createElementVNode("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),e.createElementVNode("circle",{cx:"12",cy:"7",r:"4"})],-1)),e.createTextVNode(" "+e.toDisplayString(f.value),1)])):e.createCommentVNode("",!0),w.value?(e.openBlock(),e.createElementBlock("span",Zm,[g[31]||(g[31]=e.createStaticVNode('<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-v-b443fea2><rect x="3" y="4" width="18" height="18" rx="2" ry="2" data-v-b443fea2></rect><line x1="16" y1="2" x2="16" y2="6" data-v-b443fea2></line><line x1="8" y1="2" x2="8" y2="6" data-v-b443fea2></line><line x1="3" y1="10" x2="21" y2="10" data-v-b443fea2></line></svg>',1)),e.createTextVNode(" "+e.toDisplayString(w.value),1)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("footer",Xm,[e.createElementVNode("button",{type:"button",class:"task-composer__btn task-composer__btn--ghost","data-testid":"composer-cancel",disabled:t.busy,onClick:g[19]||(g[19]=C=>o("cancel"))}," Cancel ",8,ep),e.createElementVNode("button",{type:"submit",class:"task-composer__btn task-composer__btn--primary","data-testid":"composer-submit",disabled:!z.value},[t.busy?(e.openBlock(),e.createElementBlock("svg",ap,[...g[32]||(g[32]=[e.createElementVNode("circle",{cx:"12",cy:"12",r:"10",opacity:"0.25"},null,-1),e.createElementVNode("path",{d:"M12 2a10 10 0 0 1 10 10"},null,-1)])])):e.createCommentVNode("",!0),e.createTextVNode(" "+e.toDisplayString($.value),1)],8,tp)])],32))}}),ft=K(np,[["__scopeId","data-v-b443fea2"]]),lp={class:"task-entity-widget","data-testid":"panel-entity-tasks"},op={class:"task-entity-widget__header"},sp={class:"task-entity-widget__header-actions"},ip={class:"task-entity-widget__summary","data-testid":"panel-task-summary"},rp={"data-testid":"status-task-total"},dp={"data-testid":"status-task-open"},cp={"data-testid":"status-task-completed"},up={class:"task-entity-widget__recent","data-testid":"panel-recent-tasks"},mp={key:0,class:"task-entity-widget__cards","data-testid":"list-recent-tasks"},pp={key:1,"data-testid":"status-no-recent-tasks"},kp=e.defineComponent({__name:"TaskEntityWidget",props:{entityType:{},entityId:{},entityName:{},summary:{},templates:{},loading:{type:Boolean}},emits:["create-task","view-all","instantiate-template","select-task"],setup(t,{emit:a}){const n=a,o=e.ref(!1);return(l,i)=>{var r,s,_,d,V,m,v;return e.openBlock(),e.createElementBlock("section",lp,[e.createElementVNode("header",op,[e.createElementVNode("div",null,[i[6]||(i[6]=e.createElementVNode("h3",null,"Tasks",-1)),e.createElementVNode("p",null,"Operational work linked to this "+e.toDisplayString(t.entityType)+".",1)]),e.createElementVNode("div",sp,[e.createElementVNode("button",{type:"button",class:"task-entity-widget__header-button task-entity-widget__header-button--primary","data-testid":"btn-open-entity-task-create",onClick:i[0]||(i[0]=p=>o.value=!0)}," Create task "),e.createElementVNode("button",{type:"button",class:"task-entity-widget__header-button","data-testid":"btn-view-all-tasks",onClick:i[1]||(i[1]=p=>n("view-all"))}," View all ")])]),e.createElementVNode("div",ip,[e.createElementVNode("article",rp,[i[7]||(i[7]=e.createElementVNode("span",null,"Total",-1)),e.createElementVNode("strong",null,e.toDisplayString(((r=t.summary)==null?void 0:r.total)??0),1)]),e.createElementVNode("article",dp,[i[8]||(i[8]=e.createElementVNode("span",null,"Open",-1)),e.createElementVNode("strong",null,e.toDisplayString(((s=t.summary)==null?void 0:s.open)??0),1)]),e.createElementVNode("article",{"data-testid":"status-task-overdue",class:e.normalizeClass({"task-entity-widget__summary--warn":(((_=t.summary)==null?void 0:_.overdue)??0)>0})},[i[9]||(i[9]=e.createElementVNode("span",null,"Overdue",-1)),e.createElementVNode("strong",null,e.toDisplayString(((d=t.summary)==null?void 0:d.overdue)??0),1)],2),e.createElementVNode("article",cp,[i[10]||(i[10]=e.createElementVNode("span",null,"Completed",-1)),e.createElementVNode("strong",null,e.toDisplayString(((V=t.summary)==null?void 0:V.completed)??0),1)])]),o.value?(e.openBlock(),e.createBlock(ft,{key:0,busy:t.loading??!1,templates:t.templates??[],"entity-context":{type:t.entityType,id:t.entityId},"entity-label":t.entityName??`${t.entityType} ${t.entityId}`,"data-testid":"panel-entity-task-composer",onSubmit:i[2]||(i[2]=p=>n("create-task",p)),onInstantiateTemplate:i[3]||(i[3]=p=>n("instantiate-template",p)),onCancel:i[4]||(i[4]=p=>o.value=!1)},null,8,["busy","templates","entity-context","entity-label"])):e.createCommentVNode("",!0),e.createElementVNode("div",up,[i[11]||(i[11]=e.createElementVNode("h4",null,"Recent tasks",-1)),(v=(m=t.summary)==null?void 0:m.recent_tasks)!=null&&v.length?(e.openBlock(),e.createElementBlock("div",mp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.summary.recent_tasks,p=>(e.openBlock(),e.createBlock(_t,{key:p.id,"data-testid":`entity-task-${p.id}`,task:p,compact:"",onSelect:i[5]||(i[5]=k=>n("select-task",k))},null,8,["data-testid","task"]))),128))])):(e.openBlock(),e.createElementBlock("p",pp,"No recent tasks for this entity."))])])}}}),_p=K(kp,[["__scopeId","data-v-03e80de4"]]),fp={class:"task-deadline-field__inputs"},vp={class:"task-deadline-field__input-group"},yp=["value","data-testid","disabled"],gp={class:"task-deadline-field__input-group"},bp=["value","data-testid","disabled"],hp={class:"task-deadline-field__presets"},wp=["disabled"],Ep=["disabled"],Vp=["disabled"],Np=["disabled"],$p={key:0,class:"task-deadline-field__helper"},Bp=e.defineComponent({__name:"TaskDeadlineField",props:{modelValue:{default:null},disabled:{type:Boolean,default:!1},compact:{type:Boolean,default:!1},label:{default:"Deadline (optional)"},dateTestId:{default:"input-task-due-date"},timeTestId:{default:"input-task-due-time"}},emits:["update:modelValue"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),i=e.ref("");function r(u){return u.toString().padStart(2,"0")}function s(u){return`${u.getFullYear()}-${r(u.getMonth()+1)}-${r(u.getDate())}`}function _(u){return`${r(u.getHours())}:${r(u.getMinutes())}`}function d(u){if(!u){l.value="",i.value="";return}if(/^\d{4}-\d{2}-\d{2}$/.test(u)){l.value=u,i.value="";return}const c=new Date(u);if(Number.isNaN(c.getTime())){l.value=u.slice(0,10),i.value=u.length>=16?u.slice(11,16):"";return}l.value=s(c),i.value=_(c)}function V(){if(!l.value){o("update:modelValue",null);return}if(!i.value){o("update:modelValue",l.value);return}o("update:modelValue",new Date(`${l.value}T${i.value}`).toISOString())}function m(u){l.value=u,V()}function v(u){i.value=u,V()}function p(u){const c=new Date;c.setDate(c.getDate()+u),l.value=s(c),i.value||(i.value="17:00"),V()}function k(){l.value="",i.value="",o("update:modelValue",null)}const B=e.computed(()=>i.value?"Escalation timing will use this exact time.":"Add a time for more precise reminder and escalation windows.");return e.watch(()=>n.modelValue,u=>{d(u)},{immediate:!0}),(u,c)=>(e.openBlock(),e.createElementBlock("fieldset",{class:e.normalizeClass(["task-deadline-field",{compact:t.compact}]),"data-testid":"field-task-deadline"},[e.createElementVNode("legend",null,e.toDisplayString(t.label),1),e.createElementVNode("div",fp,[e.createElementVNode("label",vp,[c[5]||(c[5]=e.createElementVNode("span",null,"Date",-1)),e.createElementVNode("input",{value:l.value,type:"date","data-testid":t.dateTestId,"aria-label":"Deadline date",disabled:t.disabled,onInput:c[0]||(c[0]=b=>m(b.target.value))},null,40,yp)]),e.createElementVNode("label",gp,[c[6]||(c[6]=e.createElementVNode("span",null,"Time",-1)),e.createElementVNode("input",{value:i.value,type:"time","data-testid":t.timeTestId,"aria-label":"Deadline time",disabled:t.disabled,onInput:c[1]||(c[1]=b=>v(b.target.value))},null,40,bp)])]),e.createElementVNode("div",hp,[e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-today",disabled:t.disabled,onClick:c[2]||(c[2]=b=>p(0))},"Today",8,wp),e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-tomorrow",disabled:t.disabled,onClick:c[3]||(c[3]=b=>p(1))},"Tomorrow",8,Ep),e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-three-days",disabled:t.disabled,onClick:c[4]||(c[4]=b=>p(3))},"+3 days",8,Vp),e.createElementVNode("button",{type:"button","data-testid":"btn-deadline-clear",class:"secondary",disabled:t.disabled,onClick:k},"Clear",8,Np)]),t.compact?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",$p,e.toDisplayString(B.value),1))],2))}}),Ke=K(Bp,[["__scopeId","data-v-fa277772"]]),Tp={class:"task-create-wizard__header"},Cp={class:"task-create-wizard__context","data-testid":"task-create-context"},Sp={class:"task-create-wizard__steps","aria-label":"Task creation steps"},Dp=["aria-current","data-testid","onClick"],Mp={class:"task-create-wizard__step-number"},Ap={key:0,class:"task-create-wizard__panel","data-testid":"task-create-panel-purpose"},zp={class:"task-create-wizard__mode-toggle",role:"group","aria-label":"Task creation mode"},Ip=["disabled"],xp={key:0},Fp={key:1},Lp={key:0,class:"task-create-wizard__grid"},Up={class:"task-create-wizard__field task-create-wizard__field--wide"},Rp=["disabled"],Wp={class:"task-create-wizard__field"},Pp=["disabled"],Op=["value"],Hp={class:"task-create-wizard__field task-create-wizard__field--wide"},jp=["disabled"],qp={key:1,class:"task-create-wizard__template-grid"},Yp=["data-testid","onClick"],Kp={key:0,class:"task-create-wizard__template-preview","data-testid":"wizard-template-preview"},Qp={key:1,class:"task-create-wizard__panel","data-testid":"task-create-panel-owner"},Gp={class:"task-create-wizard__field task-create-wizard__field--wide"},Jp={key:2,class:"task-create-wizard__panel","data-testid":"task-create-panel-deadline"},Zp={key:3,class:"task-create-wizard__panel","data-testid":"task-create-panel-review"},Xp={class:"task-create-wizard__review-grid"},ek={class:"task-create-wizard__review-card","data-testid":"wizard-review-summary"},tk={key:0},ak={key:1},nk={class:"task-create-wizard__review-card"},lk={class:"task-create-wizard__review-card"},ok={class:"task-create-wizard__review-card"},sk={key:0,class:"task-create-wizard__field task-create-wizard__field--wide"},ik=["disabled","placeholder"],rk={key:1,class:"task-create-wizard__manual-review"},dk={class:"task-create-wizard__field task-create-wizard__field--wide"},ck=["disabled"],uk={class:"task-create-wizard__checklist","data-testid":"wizard-checklist-panel"},mk={class:"task-create-wizard__checklist-header"},pk=["disabled"],kk={key:0,class:"task-create-wizard__checklist-empty"},_k=["onUpdate:modelValue","data-testid","disabled","placeholder"],fk=["disabled","data-testid","onClick"],vk={key:1,class:"task-create-wizard__review-meta"},yk={key:0},gk={key:1},bk={key:2},hk={class:"task-create-wizard__footer"},wk=["disabled"],Ek=["disabled"],Vk=["disabled"],Nk=["disabled"],$k=e.defineComponent({__name:"TaskCreateWizard",props:{templates:{default:()=>[]},busy:{type:Boolean,default:!1},entityContext:{default:null},entityLabel:{default:null},initialTask:{default:null}},emits:["submit","instantiate-template","cancel"],setup(t,{emit:a}){const n=t,o=a,l=[{id:"purpose",label:"Purpose",description:"Define the work or choose a template."},{id:"owner",label:"Owner",description:"Choose who should drive it forward."},{id:"deadline",label:"Deadline",description:"Decide whether this needs a finish date."},{id:"review",label:"Review",description:"Confirm the task before creating it."}],i=[{value:"none",label:"No priority",help:"Use for work that just needs to be tracked."},{value:"low",label:"Low",help:"Useful, but not time-sensitive."},{value:"medium",label:"Medium",help:"Normal operational work."},{value:"high",label:"High",help:"Needs attention soon."},{value:"urgent",label:"Urgent",help:"Act today."},{value:"critical",label:"Critical",help:"Treat as operationally risky or customer-impacting."}],r=e.ref(1),s=e.ref("manual"),_=e.ref(null),d=e.reactive({title:"",description:"",priority:"medium",primary_assignee_id:"",due_at:"",tags:"",checklist:[],template_id:"",title_override:""});function V(){var O,A,ne,W,T,F,D,E,g,C,I,J;d.title=((O=n.initialTask)==null?void 0:O.title)??"",d.description=((A=n.initialTask)==null?void 0:A.description)??"",d.priority=((ne=n.initialTask)==null?void 0:ne.priority)??"medium",d.primary_assignee_id=((T=(W=n.initialTask)==null?void 0:W.primary_assignee)==null?void 0:T.id)===void 0?"":String(n.initialTask.primary_assignee.id),d.due_at=((F=n.initialTask)==null?void 0:F.due_at)??"",d.tags=((E=(D=n.initialTask)==null?void 0:D.tags)==null?void 0:E.map(le=>le.name).join(", "))??"",d.checklist=((C=(g=n.initialTask)==null?void 0:g.checklist_items)==null?void 0:C.map(le=>le.title))??[],d.title_override=((I=n.initialTask)==null?void 0:I.title)??"",r.value=1,s.value=d.template_id!==""?"template":"manual",_.value=((J=n.initialTask)==null?void 0:J.primary_assignee)??null}e.watch(()=>n.initialTask,()=>{V()},{immediate:!0});const m=e.computed(()=>n.templates??[]),v=e.computed(()=>m.value.length>0),p=e.computed(()=>m.value.find(O=>O.id===d.template_id)??null),k=e.computed(()=>n.entityLabel?n.entityLabel:n.entityContext===null?"General task workspace":`${n.entityContext.type.split(/[_-]+/).filter(Boolean).map(A=>A.charAt(0).toUpperCase()+A.slice(1)).join(" ")} #${n.entityContext.id}`),B=e.computed(()=>_.value!==null?_.value.name:d.primary_assignee_id.trim()===""?"Unassigned for triage":`Assigned to employee ${d.primary_assignee_id}`),u=e.computed(()=>{var O;return((O=i.find(A=>A.value===d.priority))==null?void 0:O.label)??"Medium"}),c=e.computed(()=>s.value==="template"?"Create from template":"Create task"),b=e.computed(()=>r.value!==1?!0:s.value==="template"?d.template_id!=="":d.title.trim().length>0),h=e.computed(()=>d.checklist.map(O=>O.trim()).filter(O=>O.length>0)),L=e.computed(()=>d.tags.split(",").map(O=>O.trim()).filter(O=>O.length>0)),S=e.computed(()=>{var O;return((O=p.value)==null?void 0:O.items_count)??0});function w(O){s.value=O}function f(O){O<1||O>l.length||O>r.value||(r.value=O)}function $(){b.value&&(r.value=Math.min(l.length,r.value+1))}function z(){r.value=Math.max(1,r.value-1)}function q(){d.checklist.push("")}function te(O){d.checklist.splice(O,1)}function U(){const O=d.checklist.map((A,ne)=>({title:A.trim(),position:ne})).filter(A=>A.title.length>0);return O.length>0?O:void 0}function Y(){const O=L.value;return O.length>0?O:void 0}function G(O){if(O.trim()==="")return"No deadline";if(/^\d{4}-\d{2}-\d{2}$/.test(O))return new Date(`${O}T00:00:00`).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"});const A=new Date(O);return Number.isNaN(A.getTime())?O:A.toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"})}function ee(){var ne,W,T,F;if(s.value==="template"){if(p.value===null)return;o("instantiate-template",{templateId:p.value.id,payload:{taskable_type:((ne=n.entityContext)==null?void 0:ne.type)??null,taskable_id:((W=n.entityContext)==null?void 0:W.id)??null,primary_assignee_id:d.primary_assignee_id||null,due_at:d.due_at||null,title_override:d.title_override.trim()||null}});return}if(d.title.trim().length===0)return;const O=U(),A=Y();o("submit",{title:d.title.trim(),description:d.description.trim()||null,priority:d.priority,primary_assignee_id:d.primary_assignee_id||null,due_at:d.due_at||null,taskable_type:((T=n.entityContext)==null?void 0:T.type)??null,taskable_id:((F=n.entityContext)==null?void 0:F.id)??null,...A?{tags:A}:{},...O?{checklist_items:O}:{}})}return(O,A)=>{var ne,W;return e.openBlock(),e.createElementBlock("form",{class:"task-create-wizard","data-testid":"task-create-wizard",onSubmit:e.withModifiers(ee,["prevent"])},[e.createElementVNode("header",Tp,[A[12]||(A[12]=e.createElementVNode("div",null,[e.createElementVNode("p",{class:"task-create-wizard__eyebrow"},"Guided creation"),e.createElementVNode("h2",null,"Create a task without guessing what the fields mean"),e.createElementVNode("p",{class:"task-create-wizard__lead"}," Start with the reason for the task, then choose the owner, decide whether it needs a deadline, and review the task before it is created. ")],-1)),e.createElementVNode("div",Cp,[A[11]||(A[11]=e.createElementVNode("span",null,"Creating in",-1)),e.createElementVNode("strong",null,e.toDisplayString(k.value),1)])]),e.createElementVNode("nav",Sp,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,(T,F)=>e.createElementVNode("button",{key:T.id,type:"button",class:e.normalizeClass(["task-create-wizard__step",{"is-active":r.value===F+1,"is-complete":r.value>F+1}]),"aria-current":r.value===F+1?"step":void 0,"data-testid":`task-create-step-${T.id}`,onClick:D=>f(F+1)},[e.createElementVNode("span",Mp,e.toDisplayString(F+1),1),e.createElementVNode("span",null,[e.createElementVNode("strong",null,e.toDisplayString(T.label),1),e.createElementVNode("small",null,e.toDisplayString(T.description),1)])],10,Dp)),64))]),r.value===1?(e.openBlock(),e.createElementBlock("section",Ap,[A[21]||(A[21]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"What work needs to happen?"),e.createElementVNode("p",null," Pick the simplest way to start. Use a template when the work follows a playbook. Start from scratch when you need a one-off task. ")],-1)),e.createElementVNode("div",zp,[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-create-wizard__mode",{"is-selected":s.value==="manual"}]),"data-testid":"wizard-mode-manual",onClick:A[0]||(A[0]=T=>w("manual"))},[...A[13]||(A[13]=[e.createElementVNode("strong",null,"Start from scratch",-1),e.createElementVNode("span",null,"Create a custom task with your own title and details.",-1)])],2),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["task-create-wizard__mode",{"is-selected":s.value==="template"}]),disabled:!v.value,"data-testid":"wizard-mode-template",onClick:A[1]||(A[1]=T=>w("template"))},[A[14]||(A[14]=e.createElementVNode("strong",null,"Use a template",-1)),v.value?(e.openBlock(),e.createElementBlock("span",xp,"Create structured work from an existing playbook.")):(e.openBlock(),e.createElementBlock("span",Fp,"No templates are available for this workspace yet."))],10,Ip)]),s.value==="manual"?(e.openBlock(),e.createElementBlock("div",Lp,[e.createElementVNode("label",Up,[A[15]||(A[15]=e.createElementVNode("span",null,"Task title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[2]||(A[2]=T=>d.title=T),type:"text","data-testid":"wizard-title-input",disabled:t.busy,placeholder:"Example: Call customer about replacement shipment"},null,8,Rp),[[e.vModelText,d.title]]),A[16]||(A[16]=e.createElementVNode("small",null,"Use a plain-language sentence that tells someone exactly what needs to be done.",-1))]),e.createElementVNode("label",Wp,[A[17]||(A[17]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":A[3]||(A[3]=T=>d.priority=T),"data-testid":"wizard-priority-select",disabled:t.busy},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(i,T=>e.createElementVNode("option",{key:T.value,value:T.value},e.toDisplayString(T.label),9,Op)),64))],8,Pp),[[e.vModelSelect,d.priority]]),e.createElementVNode("small",null,e.toDisplayString((ne=i.find(T=>T.value===d.priority))==null?void 0:ne.help),1)]),e.createElementVNode("div",Hp,[A[18]||(A[18]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":A[4]||(A[4]=T=>d.description=T),rows:"5","data-testid":"wizard-description-input",disabled:t.busy,placeholder:"Add the context, promise, or business reason behind this task."},null,8,jp),[[e.vModelText,d.description]]),A[19]||(A[19]=e.createElementVNode("small",null," Optional, but useful when someone else could pick this up later and still understand why it exists. ",-1))])])):(e.openBlock(),e.createElementBlock("div",qp,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.value,T=>(e.openBlock(),e.createElementBlock("button",{key:T.id,type:"button",class:e.normalizeClass(["task-create-wizard__template",{"is-selected":d.template_id===T.id}]),"data-testid":`wizard-template-${T.id}`,onClick:F=>d.template_id=T.id},[e.createElementVNode("strong",null,e.toDisplayString(T.name),1),e.createElementVNode("p",null,e.toDisplayString(T.description||"Structured work with defaults and checklist items."),1),e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(T.items_count??0)+" steps ",1),T.default_priority&&T.default_priority!=="none"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(T.default_priority)+" priority ",1)],64)):e.createCommentVNode("",!0)])],10,Yp))),128)),p.value?(e.openBlock(),e.createElementBlock("div",Kp,[A[20]||(A[20]=e.createElementVNode("p",{class:"task-create-wizard__template-preview-label"},"Selected template",-1)),e.createElementVNode("h4",null,e.toDisplayString(p.value.name),1),e.createElementVNode("p",null,e.toDisplayString(p.value.default_description||p.value.description||"This template creates structured work with the template defaults."),1),e.createElementVNode("ul",null,[e.createElementVNode("li",null,"Default title: "+e.toDisplayString(p.value.default_title),1),e.createElementVNode("li",null,"Checklist items: "+e.toDisplayString(S.value),1),e.createElementVNode("li",null,"Default priority: "+e.toDisplayString(p.value.default_priority||"None"),1)])])):e.createCommentVNode("",!0)]))])):r.value===2?(e.openBlock(),e.createElementBlock("section",Qp,[A[24]||(A[24]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"Who owns the next move?"),e.createElementVNode("p",null," Assign the task to the person responsible for driving it forward. Leave it unassigned if the team needs to triage it first. ")],-1)),e.createElementVNode("label",Gp,[A[22]||(A[22]=e.createElementVNode("span",null,"Owner",-1)),e.createVNode(be,{modelValue:d.primary_assignee_id,"onUpdate:modelValue":A[5]||(A[5]=T=>d.primary_assignee_id=T),"selected-user":_.value,"input-test-id":"wizard-assignee-input","aria-label":"Task owner",placeholder:"Search employees by name, role, or department",disabled:t.busy??!1,"rank-by-workload":"",onSelect:A[6]||(A[6]=T=>_.value=T)},null,8,["modelValue","selected-user","disabled"]),A[23]||(A[23]=e.createElementVNode("small",null,"Pick the person who should move this work. This is the assignee shown in the task queue.",-1))])])):r.value===3?(e.openBlock(),e.createElementBlock("section",Jp,[A[25]||(A[25]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"Does this need a real deadline?"),e.createElementVNode("p",null," Deadline means the moment the task should be finished. Leave it blank when the task is important but not committed to a specific date. ")],-1)),A[26]||(A[26]=e.createElementVNode("div",{class:"task-create-wizard__deadline-note","data-testid":"task-create-deadline-note"},[e.createElementVNode("strong",null,"How to use this:"),e.createElementVNode("span",null,"If you only know the day, set the date and leave time blank. Add a time only when the work truly has to be done by a specific hour.")],-1)),e.createVNode(Ke,{modelValue:d.due_at,"onUpdate:modelValue":A[7]||(A[7]=T=>d.due_at=T),"date-test-id":"wizard-due-date","time-test-id":"wizard-due-time",disabled:t.busy??!1,label:"Finish by (optional)"},null,8,["modelValue","disabled"])])):(e.openBlock(),e.createElementBlock("section",Zp,[A[41]||(A[41]=e.createElementVNode("div",{class:"task-create-wizard__panel-copy"},[e.createElementVNode("h3",null,"Review before creating"),e.createElementVNode("p",null," Make sure the task is understandable for the assignee and anyone else who might see it later. ")],-1)),e.createElementVNode("div",Xp,[e.createElementVNode("article",ek,[A[27]||(A[27]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Task type",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.value==="template"?"Template-based task":"Custom task"),1),s.value==="template"&&p.value?(e.openBlock(),e.createElementBlock("p",tk,e.toDisplayString(p.value.name),1)):(e.openBlock(),e.createElementBlock("p",ak,e.toDisplayString(d.title||"Untitled task"),1))]),e.createElementVNode("article",nk,[A[28]||(A[28]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Owner",-1)),e.createElementVNode("strong",null,e.toDisplayString(B.value),1),A[29]||(A[29]=e.createElementVNode("p",null,"Reassign later if the work shifts.",-1))]),e.createElementVNode("article",lk,[A[30]||(A[30]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Deadline",-1)),e.createElementVNode("strong",null,e.toDisplayString(G(d.due_at)),1),A[31]||(A[31]=e.createElementVNode("p",null,"Leave blank when visibility matters more than a hard promise.",-1))]),e.createElementVNode("article",ok,[A[32]||(A[32]=e.createElementVNode("span",{class:"task-create-wizard__review-label"},"Workspace",-1)),e.createElementVNode("strong",null,e.toDisplayString(k.value),1),A[33]||(A[33]=e.createElementVNode("p",null,"This is where the task will be linked and filtered.",-1))])]),s.value==="template"?(e.openBlock(),e.createElementBlock("label",sk,[A[34]||(A[34]=e.createElementVNode("span",null,"Rename the task heading (optional)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[8]||(A[8]=T=>d.title_override=T),type:"text","data-testid":"wizard-title-override-input",disabled:t.busy,placeholder:((W=p.value)==null?void 0:W.default_title)||"Keep the template title"},null,8,ik),[[e.vModelText,d.title_override]]),A[35]||(A[35]=e.createElementVNode("small",null,"Use this when the playbook is right, but the visible task title should be more specific.",-1))])):(e.openBlock(),e.createElementBlock("div",rk,[e.createElementVNode("label",dk,[A[36]||(A[36]=e.createElementVNode("span",null,"Tags (optional)",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":A[9]||(A[9]=T=>d.tags=T),type:"text","data-testid":"wizard-tags-input",disabled:t.busy,placeholder:"ops, shipping, customer-follow-up"},null,8,ck),[[e.vModelText,d.tags]]),A[37]||(A[37]=e.createElementVNode("small",null,"Use short comma-separated labels to make the task easier to filter later.",-1))]),e.createElementVNode("section",uk,[e.createElementVNode("div",mk,[A[38]||(A[38]=e.createElementVNode("div",null,[e.createElementVNode("h4",null,"Checklist (optional)"),e.createElementVNode("p",null,"Break the task into concrete completion points when the work has repeatable steps.")],-1)),e.createElementVNode("button",{type:"button",class:"task-create-wizard__ghost","data-testid":"wizard-add-checklist-item",disabled:t.busy,onClick:q}," Add checklist item ",8,pk)]),d.checklist.length===0?(e.openBlock(),e.createElementBlock("div",kk," No checklist yet. Add one if the assignee needs a step-by-step definition of done. ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.checklist,(T,F)=>(e.openBlock(),e.createElementBlock("div",{key:`wizard-checklist-${F}`,class:"task-create-wizard__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":D=>d.checklist[F]=D,type:"text","data-testid":`wizard-checklist-item-${F}`,disabled:t.busy,placeholder:`Checklist item ${F+1}`},null,8,_k),[[e.vModelText,d.checklist[F]]]),e.createElementVNode("button",{type:"button",class:"task-create-wizard__ghost",disabled:t.busy,"data-testid":`wizard-remove-checklist-item-${F}`,onClick:D=>te(F)}," Remove ",8,fk)]))),128)),h.value.length>0||L.value.length>0?(e.openBlock(),e.createElementBlock("div",vk,[h.value.length>0?(e.openBlock(),e.createElementBlock("p",yk,[e.createElementVNode("strong",null,e.toDisplayString(h.value.length),1),A[39]||(A[39]=e.createTextVNode(" checklist items ready",-1))])):e.createCommentVNode("",!0),L.value.length>0?(e.openBlock(),e.createElementBlock("p",gk,[e.createElementVNode("strong",null,e.toDisplayString(L.value.join(", ")),1)])):(e.openBlock(),e.createElementBlock("p",bk,[A[40]||(A[40]=e.createTextVNode("Priority: ",-1)),e.createElementVNode("strong",null,e.toDisplayString(u.value),1)]))])):e.createCommentVNode("",!0)])]))])),e.createElementVNode("footer",hk,[r.value>1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-create-wizard__ghost","data-testid":"wizard-back",disabled:t.busy,onClick:z}," Back ",8,wk)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"task-create-wizard__ghost","data-testid":"wizard-cancel",disabled:t.busy,onClick:A[10]||(A[10]=T=>o("cancel"))}," Cancel ",8,Ek),r.value<l.length?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"task-create-wizard__primary","data-testid":"wizard-next",disabled:t.busy||!b.value,onClick:$}," Continue ",8,Vk)):(e.openBlock(),e.createElementBlock("button",{key:2,type:"submit",class:"task-create-wizard__primary","data-testid":"wizard-submit",disabled:t.busy||(s.value==="manual"?d.title.trim()==="":p.value===null)},e.toDisplayString(c.value),9,Nk))])],32)}}}),Bk=K($k,[["__scopeId","data-v-f99df958"]]),Tk={class:"task-import-export-panel","data-testid":"task-import-export-panel"},Ck={class:"task-import-export-panel__block"},Sk=["disabled"],Dk={class:"task-import-export-panel__block"},Mk={class:"task-import-export-panel__upload"},Ak=["disabled"],zk={key:0,class:"task-import-export-panel__result","data-testid":"task-import-result"},Ik={key:0,"data-testid":"task-import-errors"},xk=e.defineComponent({__name:"TaskImportExportPanel",props:{busy:{type:Boolean},importing:{type:Boolean},exporting:{type:Boolean},result:{}},emits:["export","import"],setup(t,{emit:a}){const n=a,o=e.ref(null);function l(){n("export")}function i(r){var d;const s=r.target,_=((d=s==null?void 0:s.files)==null?void 0:d[0])??null;_&&(n("import",_),o.value&&(o.value.value=""))}return(r,s)=>(e.openBlock(),e.createElementBlock("section",Tk,[e.createElementVNode("div",Ck,[s[0]||(s[0]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Export Tasks"),e.createElementVNode("p",null,"Download the current filtered task view as CSV.")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-export-tasks",disabled:(t.busy??!1)||(t.exporting??!1),onClick:l},e.toDisplayString(t.exporting?"Exporting…":"Export CSV"),9,Sk)]),e.createElementVNode("div",Dk,[s[1]||(s[1]=e.createElementVNode("div",null,[e.createElementVNode("h3",null,"Import Tasks"),e.createElementVNode("p",null,"Upload a CSV with title, description, priority, assignee email, due date, and tags.")],-1)),e.createElementVNode("label",Mk,[e.createElementVNode("span",null,e.toDisplayString(t.importing?"Importing…":"Choose CSV"),1),e.createElementVNode("input",{ref_key:"fileInput",ref:o,type:"file",accept:".csv,text/csv","data-testid":"input-import-tasks",disabled:(t.busy??!1)||(t.importing??!1),onChange:i},null,40,Ak)])]),t.result?(e.openBlock(),e.createElementBlock("div",zk,[e.createElementVNode("p",null,[s[2]||(s[2]=e.createTextVNode(" Imported ",-1)),e.createElementVNode("strong",null,e.toDisplayString(t.result.imported),1),e.createTextVNode(" task"+e.toDisplayString(t.result.imported===1?"":"s")+". ",1)]),t.result.errors.length>0?(e.openBlock(),e.createElementBlock("ul",Ik,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.errors,_=>(e.openBlock(),e.createElementBlock("li",{key:`${_.row}-${_.message}`}," Row "+e.toDisplayString(_.row)+": "+e.toDisplayString(_.message),1))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]))}}),pa=K(xk,[["__scopeId","data-v-54e06020"]]),Fk=["aria-label"],Lk=["data-testid"],Uk=["data-testid","aria-label","onClick"],Rk={class:"task-notification-toast__eyebrow"},Wk=["aria-label","onClick"],Pk=e.defineComponent({__name:"TaskNotificationToast",props:{navigate:{type:[Function,null],default:null},ariaLabel:{default:"Task notifications"}},emits:["dismiss","select"],setup(t,{emit:a}){const n=t,o=a,l=mt(),i=l.notifications,r=l.hasNotifications;function s(d){l.dismissTaskNotificationToast(d),o("dismiss",d)}function _(d){if(o("select",d),n.navigate!==null){n.navigate(d);return}typeof window<"u"&&d.url!==null&&window.location.assign(d.url)}return(d,V)=>e.unref(r)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-notification-toast","data-testid":"toast-task-notification",role:"region","aria-label":t.ariaLabel,"aria-live":"polite","aria-atomic":"false"},[e.createVNode(e.TransitionGroup,{name:"task-toast"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(i),m=>(e.openBlock(),e.createElementBlock("article",{key:m.id,class:e.normalizeClass(["task-notification-toast__item",`task-notification-toast__item--${m.tone}`]),"data-testid":`toast-item-${m.id}`},[e.createElementVNode("button",{type:"button",class:"task-notification-toast__content","data-testid":`btn-open-toast-${m.id}`,"aria-label":`Open: ${m.title}`,onClick:v=>_(m)},[e.createElementVNode("span",Rk,e.toDisplayString(m.kind),1),e.createElementVNode("strong",null,e.toDisplayString(m.title),1),e.createElementVNode("p",null,e.toDisplayString(m.body),1)],8,Uk),e.createElementVNode("button",{type:"button",class:"task-notification-toast__dismiss","data-testid":"btn-dismiss-toast","aria-label":`Dismiss ${m.title}`,onClick:v=>s(m.id)}," × ",8,Wk)],10,Lk))),128))]),_:1})],8,Fk)):e.createCommentVNode("",!0)}}),Ok=K(Pk,[["__scopeId","data-v-c2c06d87"]]),Hk=["disabled"],jk={key:0,class:"task-quick-create__extras"},qk=["disabled"],Yk=["value"],Kk=["disabled"],Qk=e.defineComponent({__name:"TaskQuickCreate",props:{templates:{},busy:{type:Boolean},startExpanded:{type:Boolean},entityContext:{}},emits:["submit","instantiate-template"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(n.startExpanded??!1),i=e.reactive({title:"",primary_assignee_id:"",due_at:"",template_id:""}),r=e.computed(()=>n.templates??[]);function s(){l.value=!0}function _(){i.title||i.primary_assignee_id||i.due_at||i.template_id||(l.value=!1)}function d(){var V,m;if(i.template_id){o("instantiate-template",i.template_id),i.template_id="",_();return}i.title.trim()&&(o("submit",{title:i.title.trim(),primary_assignee_id:i.primary_assignee_id||null,due_at:i.due_at||null,taskable_type:((V=n.entityContext)==null?void 0:V.type)??null,taskable_id:((m=n.entityContext)==null?void 0:m.id)??null}),i.title="",i.primary_assignee_id="",i.due_at="",_())}return(V,m)=>(e.openBlock(),e.createElementBlock("form",{class:e.normalizeClass(["task-quick-create",{expanded:l.value}]),"data-testid":"form-quick-create",onSubmit:e.withModifiers(d,["prevent"])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[0]||(m[0]=v=>i.title=v),type:"text","data-testid":"input-task-title","aria-label":"Task title",disabled:t.busy,placeholder:"Quick create a task",onFocus:s},null,40,Hk),[[e.vModelText,i.title]]),l.value?(e.openBlock(),e.createElementBlock("div",jk,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[1]||(m[1]=v=>i.template_id=v),"data-testid":"select-task-template","aria-label":"Task template",disabled:t.busy},[m[4]||(m[4]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,v=>(e.openBlock(),e.createElementBlock("option",{key:v.id,value:v.id},e.toDisplayString(v.name),9,Yk))),128))],8,qk),[[e.vModelSelect,i.template_id]]),e.createVNode(be,{modelValue:i.primary_assignee_id,"onUpdate:modelValue":m[2]||(m[2]=v=>i.primary_assignee_id=v),"input-test-id":"input-task-assignee",disabled:t.busy??!1,"aria-label":"Assignee",placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","disabled"]),e.createVNode(Ke,{modelValue:i.due_at,"onUpdate:modelValue":m[3]||(m[3]=v=>i.due_at=v),class:"task-quick-create__deadline",compact:"",disabled:t.busy??!1},null,8,["modelValue","disabled"]),e.createElementVNode("button",{type:"submit","data-testid":"btn-submit-task",disabled:t.busy||!i.title.trim()&&!i.template_id}," Create ",8,Kk)])):e.createCommentVNode("",!0)],34))}}),Gk=K(Qk,[["__scopeId","data-v-713c12cf"]]),Jk={key:0,class:"escalation-actions","data-testid":"panel-escalation"},Zk={class:"escalation-actions__header"},Xk={class:"escalation-actions__status"},e_={class:"escalation-actions__label"},t_={class:"escalation-actions__buttons"},a_=["disabled"],n_=["aria-expanded","disabled"],l_={class:"escalation-actions__facts"},o_={key:0},s_={key:1},i_={key:2},r_={class:"escalation-actions__field"},d_={class:"escalation-actions__field"},c_={key:0,class:"escalation-actions__error",role:"alert"},u_={class:"escalation-actions__buttons"},m_=["disabled"],p_={key:1,class:"escalation-actions__timeline","data-testid":"list-escalation-events"},k_=["data-testid"],__={key:0},f_=e.defineComponent({__name:"EscalationActions",props:{task:{},busy:{type:Boolean}},emits:["acknowledge","snooze"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(!1),i=e.ref(4),r=e.ref(""),s=e.ref(null),_=e.computed(()=>n.task.escalation_events.slice(0,6)),d=e.computed(()=>n.task.current_escalation_tier!==null||_.value.length>0),V=e.computed(()=>n.task.current_escalation_tier!==null&&!n.task.escalation_acknowledged_at),m=e.computed(()=>n.task.current_escalation_tier!==null),v=e.computed(()=>n.task.current_escalation_label??"Escalation");function p(){if(r.value.trim().length<5){s.value="Add a reason with at least 5 characters.";return}s.value=null,o("snooze",{taskId:n.task.id,hours:Math.max(1,Math.round(i.value)),reason:r.value.trim()}),l.value=!1,r.value=""}function k(B){switch(B.event_type){case"tier_fired":return B.tier_label??"Tier fired";case"acknowledged":return"Acknowledged";case"snoozed":return"Snoozed";case"suppressed":return"Queued for business hours";case"resolved":return"Resolved";case"rerouted":return"Rerouted";default:return B.event_type}}return(B,u)=>d.value?(e.openBlock(),e.createElementBlock("section",Jk,[e.createElementVNode("header",Zk,[e.createElementVNode("div",null,[u[5]||(u[5]=e.createElementVNode("p",{class:"escalation-actions__eyebrow"},"Escalation",-1)),e.createElementVNode("div",Xk,[e.createVNode(Ye,{tier:t.task.current_escalation_tier,"acknowledged-at":t.task.escalation_acknowledged_at,"snoozed-until":t.task.escalation_snoozed_until},null,8,["tier","acknowledged-at","snoozed-until"]),e.createElementVNode("span",e_,e.toDisplayString(v.value),1)])]),e.createElementVNode("div",t_,[e.createElementVNode("button",{type:"button","data-testid":"btn-acknowledge-escalation",disabled:(t.busy??!1)||!V.value,onClick:u[0]||(u[0]=c=>o("acknowledge",t.task.id))}," Acknowledge ",8,a_),e.createElementVNode("button",{type:"button","data-testid":"btn-snooze-escalation","aria-expanded":l.value,disabled:(t.busy??!1)||!m.value,onClick:u[1]||(u[1]=c=>l.value=!l.value)}," Snooze ",8,n_)])]),e.createElementVNode("dl",l_,[t.task.next_escalation_at?(e.openBlock(),e.createElementBlock("div",o_,[u[6]||(u[6]=e.createElementVNode("dt",null,"Next check",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ie)(t.task.next_escalation_at))+" · "+e.toDisplayString(e.unref(ye)(t.task.next_escalation_at)),1)])):e.createCommentVNode("",!0),t.task.escalation_snoozed_until?(e.openBlock(),e.createElementBlock("div",s_,[u[7]||(u[7]=e.createElementVNode("dt",null,"Snoozed until",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ie)(t.task.escalation_snoozed_until)),1)])):e.createCommentVNode("",!0),t.task.escalation_acknowledged_at?(e.openBlock(),e.createElementBlock("div",i_,[u[8]||(u[8]=e.createElementVNode("dt",null,"Acknowledged",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ie)(t.task.escalation_acknowledged_at)),1)])):e.createCommentVNode("",!0)]),l.value?(e.openBlock(),e.createElementBlock("form",{key:0,class:"escalation-actions__snooze","data-testid":"form-snooze",onSubmit:e.withModifiers(p,["prevent"])},[e.createElementVNode("label",r_,[u[9]||(u[9]=e.createElementVNode("span",null,"Hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[2]||(u[2]=c=>i.value=c),type:"number","data-testid":"input-snooze-hours",min:"1",max:"168","aria-label":"Snooze duration in hours"},null,512),[[e.vModelText,i.value,void 0,{number:!0}]])]),e.createElementVNode("label",d_,[u[10]||(u[10]=e.createElementVNode("span",null,"Reason",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":u[3]||(u[3]=c=>r.value=c),rows:"3","data-testid":"input-snooze-reason",placeholder:"Explain why this alert can wait.","aria-label":"Snooze reason"},null,512),[[e.vModelText,r.value]])]),s.value?(e.openBlock(),e.createElementBlock("p",c_,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",u_,[e.createElementVNode("button",{type:"submit","data-testid":"btn-save-snooze",disabled:t.busy??!1},"Save snooze",8,m_),e.createElementVNode("button",{type:"button","data-testid":"btn-cancel-snooze",class:"ghost",onClick:u[4]||(u[4]=c=>l.value=!1)},"Cancel")])],32)):e.createCommentVNode("",!0),_.value.length>0?(e.openBlock(),e.createElementBlock("ol",p_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,c=>(e.openBlock(),e.createElementBlock("li",{key:c.id,"data-testid":`item-escalation-event-${c.id}`},[e.createElementVNode("strong",null,e.toDisplayString(k(c)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ie)(c.created_at)),1),c.snooze_reason?(e.openBlock(),e.createElementBlock("small",__,e.toDisplayString(c.snooze_reason),1)):e.createCommentVNode("",!0)],8,k_))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),ka=K(f_,[["__scopeId","data-v-f16622bf"]]),v_={class:"task-checklist","data-testid":"panel-checklist"},y_={class:"task-checklist__header"},g_={class:"task-checklist__meter","aria-hidden":"true"},b_={class:"task-checklist__items","data-testid":"list-checklist-items"},h_=["data-testid"],w_={class:"task-checklist__toggle"},E_=["checked","disabled","aria-label","onChange"],V_={class:"task-checklist__actions"},N_=["aria-label","disabled","onClick"],$_=["aria-label","disabled","onClick"],B_=["aria-label","disabled","onClick"],T_=["disabled"],C_=["disabled"],S_=e.defineComponent({__name:"TaskChecklist",props:{items:{},disabled:{type:Boolean}},emits:["toggle-item","add-item","remove-item","reorder-items"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),i=e.computed(()=>n.items.filter(d=>d.is_completed).length),r=e.computed(()=>n.items.length===0?0:Math.round(i.value/n.items.length*100));function s(){l.value.trim()&&(o("add-item",l.value.trim()),l.value="")}function _(d,V){const m=d+V;if(m<0||m>=n.items.length)return;const v=[...n.items],[p]=v.splice(d,1);p&&(v.splice(m,0,p),o("reorder-items",v.map(k=>k.id)))}return(d,V)=>(e.openBlock(),e.createElementBlock("section",v_,[e.createElementVNode("header",y_,[e.createElementVNode("div",null,[V[1]||(V[1]=e.createElementVNode("h3",null,"Checklist",-1)),e.createElementVNode("p",null,e.toDisplayString(i.value)+" of "+e.toDisplayString(t.items.length)+" complete",1)]),e.createElementVNode("div",g_,[e.createElementVNode("div",{class:"task-checklist__meter-fill",style:e.normalizeStyle({width:`${r.value}%`})},null,4)])]),e.createElementVNode("ul",b_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(m,v)=>(e.openBlock(),e.createElementBlock("li",{key:m.id,"data-testid":`checklist-item-${m.id}`,class:"task-checklist__item"},[e.createElementVNode("label",w_,[e.createElementVNode("input",{type:"checkbox",checked:m.is_completed,disabled:t.disabled,"aria-label":m.title,onChange:p=>o("toggle-item",m.id)},null,40,E_),e.createElementVNode("span",{class:e.normalizeClass({done:m.is_completed})},e.toDisplayString(m.title),3)]),e.createElementVNode("div",V_,[e.createElementVNode("button",{type:"button","aria-label":`Move '${m.title}' up`,disabled:t.disabled||v===0,onClick:p=>_(v,-1)},"↑",8,N_),e.createElementVNode("button",{type:"button","aria-label":`Move '${m.title}' down`,disabled:t.disabled||v===t.items.length-1,onClick:p=>_(v,1)},"↓",8,$_),e.createElementVNode("button",{type:"button","aria-label":`Remove '${m.title}'`,disabled:t.disabled,onClick:p=>o("remove-item",m.id)},"Remove",8,B_)])],8,h_))),128))]),e.createElementVNode("form",{class:"task-checklist__composer","data-testid":"form-add-checklist-item",onSubmit:e.withModifiers(s,["prevent"])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":V[0]||(V[0]=m=>l.value=m),type:"text","data-testid":"input-checklist-item",disabled:t.disabled,placeholder:"Add a checklist item"},null,8,T_),[[e.vModelText,l.value]]),e.createElementVNode("button",{type:"submit","data-testid":"btn-add-checklist-item",disabled:t.disabled||!l.value.trim()},"Add",8,C_)],32)]))}}),_a=K(S_,[["__scopeId","data-v-6732197b"]]),D_={class:"task-comments","data-testid":"panel-comments"},M_={key:0,class:"task-comments__list","data-testid":"list-comments"},A_=["data-testid"],z_={class:"task-comments__meta"},I_={class:"task-comments__visibility"},x_={key:1,class:"task-comments__empty","data-testid":"empty-comments"},F_=["disabled"],L_={class:"task-comments__controls"},U_=["disabled"],R_=["disabled"],W_={key:0,class:"task-comments__hint"},P_=e.defineComponent({__name:"TaskComments",props:{comments:{},disabled:{type:Boolean}},emits:["submit"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),i=e.ref("team"),r=e.computed(()=>[...n.comments].sort((d,V)=>d.created_at.localeCompare(V.created_at)));function s(){l.value.trim()&&(o("submit",{content:l.value.trim(),visibility:i.value}),l.value="",i.value="team")}function _(d){(d.metaKey||d.ctrlKey)&&d.key==="Enter"&&(d.preventDefault(),s())}return(d,V)=>(e.openBlock(),e.createElementBlock("section",D_,[r.value.length?(e.openBlock(),e.createElementBlock("ul",M_,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,m=>(e.openBlock(),e.createElementBlock("li",{key:m.id,"data-testid":`item-comment-${m.id}`,class:"task-comments__item"},[e.createElementVNode("div",z_,[e.createElementVNode("strong",null,e.toDisplayString(m.author.name),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ie)(m.created_at)),1),e.createElementVNode("span",I_,e.toDisplayString(m.visibility),1)]),e.createElementVNode("p",null,e.toDisplayString(m.content),1)],8,A_))),128))])):(e.openBlock(),e.createElementBlock("p",x_,"No comments yet. Be the first to add one.")),e.createElementVNode("form",{class:"task-comments__composer","data-testid":"form-comment",onSubmit:e.withModifiers(s,["prevent"])},[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":V[0]||(V[0]=m=>l.value=m),rows:"4","data-testid":"input-comment",disabled:t.disabled,placeholder:"Add a comment (basic markdown supported)","aria-label":"Comment text",onKeydown:_},null,40,F_),[[e.vModelText,l.value]]),e.createElementVNode("div",L_,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":V[1]||(V[1]=m=>i.value=m),"data-testid":"select-comment-visibility",disabled:t.disabled,"aria-label":"Comment visibility"},[...V[2]||(V[2]=[e.createElementVNode("option",{value:"team"},"Team",-1),e.createElementVNode("option",{value:"private"},"Private",-1)])],8,U_),[[e.vModelSelect,i.value]]),e.createElementVNode("button",{type:"submit","data-testid":"btn-post-comment",disabled:t.disabled||!l.value.trim()},"Post comment",8,R_),l.value.trim()?(e.openBlock(),e.createElementBlock("span",W_,"Ctrl+Enter to submit")):e.createCommentVNode("",!0)])],32)]))}}),fa=K(P_,[["__scopeId","data-v-f3a039bc"]]),O_={class:"task-time-tracker","data-testid":"task-time-tracker"},H_={class:"task-time-tracker__header"},j_={"data-testid":"time-total"},q_={class:"task-time-tracker__actions"},Y_=["disabled"],K_=["disabled"],Q_=["disabled"],G_={key:0,class:"task-time-tracker__running","data-testid":"time-running-state"},J_={key:1,class:"task-time-tracker__notice","data-testid":"time-switch-notice"},Z_=["disabled"],X_=["disabled"],ef={class:"task-time-tracker__manual-description"},tf=["disabled"],af=["disabled"],nf={class:"task-time-tracker__entries","data-testid":"list-time-entries"},lf=["data-testid"],of={class:"task-time-tracker__entry-main"},sf={key:0},rf={key:1,class:"task-time-tracker__entry-live"},df=["disabled","data-testid","onClick"],cf={key:0,class:"task-time-tracker__empty"},uf=e.defineComponent({__name:"TaskTimeTracker",props:{task:{},activeTimer:{},busy:{type:Boolean}},emits:["start-timer","stop-timer","add-manual-entry","delete-entry"],setup(t,{emit:a}){const n=t,o=a,l=e.ref("0"),i=e.ref("30"),r=e.ref(""),s=e.ref(!1),_=e.ref(Date.now());let d=null;const V=e.computed(()=>{var f;return n.task.time_entries.find($=>$.is_running)??(((f=n.activeTimer)==null?void 0:f.task_id)===n.task.id&&n.activeTimer.is_running?n.activeTimer:null)}),m=e.computed(()=>n.activeTimer!==null&&n.activeTimer!==void 0&&n.activeTimer.task_id!==n.task.id&&n.activeTimer.is_running),v=e.computed(()=>n.task.time_entries.length===0?n.task.time_tracked_minutes??0:n.task.time_entries.reduce((f,$)=>{if($.duration_minutes!==null)return f+$.duration_minutes;if(!$.started_at)return f;const z=new Date($.started_at).getTime();return Number.isNaN(z)?f:f+Math.max(1,Math.floor((_.value-z)/6e4))},0)),p=e.computed(()=>{var $;if(!(($=V.value)!=null&&$.started_at))return 0;const f=new Date(V.value.started_at).getTime();return Number.isNaN(f)?0:Math.max(0,Math.floor((_.value-f)/1e3))}),k=e.computed(()=>[...n.task.time_entries].sort((f,$)=>{const z=$.started_at??$.created_at??"",q=f.started_at??f.created_at??"";return z.localeCompare(q)}));function B(f){var $;return($=f.user)!=null&&$.name?f.user.name:f.user_id.trim()!==""?"Archived teammate":"Unknown teammate"}function u(){o("start-timer",n.task.id)}function c(){o("stop-timer",n.task.id)}function b(){const f=Number.parseInt(l.value,10),$=Number.parseInt(i.value,10),z=(Number.isNaN(f)?0:Math.max(0,f))*60+(Number.isNaN($)?0:Math.max(0,$));z<=0||(o("add-manual-entry",{taskId:n.task.id,duration_minutes:z,description:r.value.trim()||null}),l.value="0",i.value="30",r.value="",s.value=!1)}function h(f){o("delete-entry",{taskId:n.task.id,entryId:f})}function L(f){if(f&&d===null){d=globalThis.setInterval(()=>{_.value=Date.now()},1e3);return}!f&&d!==null&&(globalThis.clearInterval(d),d=null)}function S(f){if(f<=0)return"0m";const $=Math.floor(f/60),z=f%60;return $===0?`${z}m`:z===0?`${$}h`:`${$}h ${z}m`}function w(f){const $=Math.floor(f/3600),z=Math.floor(f%3600/60),q=f%60;return[$,z,q].map(te=>String(te).padStart(2,"0")).join(":")}return e.watch(V,f=>{L(f!==null)},{immediate:!0}),e.onBeforeUnmount(()=>{L(!1)}),(f,$)=>(e.openBlock(),e.createElementBlock("section",O_,[e.createElementVNode("header",H_,[e.createElementVNode("div",null,[$[5]||($[5]=e.createElementVNode("h3",null,"Time Tracking",-1)),e.createElementVNode("p",null,[$[4]||($[4]=e.createTextVNode("Total logged: ",-1)),e.createElementVNode("strong",j_,e.toDisplayString(S(v.value)),1)])]),e.createElementVNode("div",q_,[V.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-stop-timer",disabled:t.busy??!1,onClick:c}," Stop timer ",8,Y_)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button","data-testid":"btn-start-timer",disabled:t.busy??!1,onClick:u},e.toDisplayString(m.value?"Switch timer here":"Start timer"),9,K_)),e.createElementVNode("button",{type:"button","data-testid":"btn-toggle-manual-entry",disabled:t.busy??!1,onClick:$[0]||($[0]=z=>s.value=!s.value)},e.toDisplayString(s.value?"Close manual entry":"Add manual entry"),9,Q_)])]),V.value?(e.openBlock(),e.createElementBlock("p",G_," Running now: "+e.toDisplayString(w(p.value)),1)):m.value?(e.openBlock(),e.createElementBlock("p",J_," Starting a timer here will stop your other active timer automatically. ")):e.createCommentVNode("",!0),s.value?(e.openBlock(),e.createElementBlock("form",{key:2,class:"task-time-tracker__manual","data-testid":"form-manual-time-entry",onSubmit:e.withModifiers(b,["prevent"])},[e.createElementVNode("label",null,[$[6]||($[6]=e.createElementVNode("span",null,"Hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[1]||($[1]=z=>l.value=z),type:"number",min:"0",step:"1",inputmode:"numeric","data-testid":"input-manual-hours",disabled:t.busy??!1},null,8,Z_),[[e.vModelText,l.value]])]),e.createElementVNode("label",null,[$[7]||($[7]=e.createElementVNode("span",null,"Minutes",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[2]||($[2]=z=>i.value=z),type:"number",min:"0",max:"59",step:"1",inputmode:"numeric","data-testid":"input-manual-minutes",disabled:t.busy??!1},null,8,X_),[[e.vModelText,i.value]])]),e.createElementVNode("label",ef,[$[8]||($[8]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":$[3]||($[3]=z=>r.value=z),type:"text",maxlength:"500","data-testid":"input-manual-description",placeholder:"Optional note",disabled:t.busy??!1},null,8,tf),[[e.vModelText,r.value]])]),e.createElementVNode("button",{type:"submit","data-testid":"btn-submit-manual-entry",disabled:t.busy??!1}," Save time entry ",8,af)],32)):e.createCommentVNode("",!0),e.createElementVNode("ul",nf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,z=>(e.openBlock(),e.createElementBlock("li",{key:z.id,class:"task-time-tracker__entry","data-testid":`time-entry-${z.id}`},[e.createElementVNode("div",of,[e.createElementVNode("strong",null,e.toDisplayString(z.is_manual?"Manual entry":"Timer session"),1),e.createElementVNode("span",null,e.toDisplayString(B(z)),1),e.createElementVNode("span",null,e.toDisplayString(S(z.duration_minutes??0)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(ie)(z.started_at)),1),z.description?(e.openBlock(),e.createElementBlock("span",sf,e.toDisplayString(z.description),1)):e.createCommentVNode("",!0),z.is_running?(e.openBlock(),e.createElementBlock("span",rf,"Running")):e.createCommentVNode("",!0)]),z.is_running?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-time-tracker__delete",disabled:t.busy??!1,"data-testid":`btn-delete-time-entry-${z.id}`,onClick:q=>h(z.id)}," Delete ",8,df))],8,lf))),128)),k.value.length===0?(e.openBlock(),e.createElementBlock("li",cf," No time entries yet. ")):e.createCommentVNode("",!0)])]))}}),va=K(uf,[["__scopeId","data-v-0fa2f9a3"]]),mf={class:"task-timeline","data-testid":"panel-activity"},pf={class:"task-timeline__list","data-testid":"list-activity"},kf=["data-testid"],_f=["title"],ff=e.defineComponent({__name:"TaskTimeline",props:{logs:{},canLoadMore:{type:Boolean}},emits:["load-more"],setup(t,{emit:a}){const n=a;function o(l){switch(l){case"created":return"+";case"status_changed":return"⟳";case"updated":return"✎";case"comment_added":return"💬";case"checklist_item_added":return"☑";case"checklist_item_completed":return"✓";case"checklist_item_uncompleted":return"○";case"assigned":return"→";case"unassigned":return"←";case"completed":return"✓";case"reopened":return"⟳";default:return"•"}}return(l,i)=>(e.openBlock(),e.createElementBlock("section",mf,[e.createElementVNode("ol",pf,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.logs,r=>{var s;return e.openBlock(),e.createElementBlock("li",{key:r.id,"data-testid":`item-activity-${r.id}`,class:"task-timeline__item"},[e.createElementVNode("span",{class:e.normalizeClass(["task-timeline__icon",`task-timeline__icon--${r.action}`]),"aria-hidden":"true"},e.toDisplayString(o(r.action)),3),e.createElementVNode("div",null,[e.createElementVNode("p",null,[e.createElementVNode("strong",null,e.toDisplayString(((s=r.user)==null?void 0:s.name)??"System"),1),e.createTextVNode(" "+e.toDisplayString(e.unref(Qt)(r)),1)]),e.createElementVNode("small",{title:e.unref(ie)(r.created_at)},e.toDisplayString(r.created_at?e.unref(ye)(r.created_at):""),9,_f)])],8,kf)}),128))]),t.canLoadMore?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","data-testid":"btn-load-more-activity",class:"task-timeline__more",onClick:i[0]||(i[0]=r=>n("load-more"))}," Load more ")):e.createCommentVNode("",!0)]))}}),ya=K(ff,[["__scopeId","data-v-6240a41e"]]),vf=["data-task-id"],yf={class:"task-detail__header","data-testid":"task-detail-header"},gf={class:"task-detail__identity"},bf={class:"task-detail__number"},hf={class:"task-detail__badges"},wf={class:"task-detail__actions"},Ef=["disabled"],Vf=["disabled"],Nf=["disabled"],$f=["disabled"],Bf=["disabled"],Tf={class:"task-detail__layout"},Cf={class:"task-detail__main"},Sf={class:"task-detail__description","data-testid":"task-description"},Df={class:"task-detail__tabs","aria-label":"Task detail sections"},Mf=["aria-pressed"],Af=["aria-pressed"],zf=["aria-pressed"],If=["aria-pressed"],xf={key:2,class:"task-detail__relations","data-testid":"panel-relations"},Ff={"data-testid":"list-relations"},Lf=["data-testid"],Uf={key:0},Rf={class:"task-detail__sidebar","data-testid":"task-sidebar"},Wf={class:"task-detail__deadline-status"},Pf={key:0},Of={key:1},Hf=e.defineComponent({__name:"TaskDetail",props:{task:{},activeTimer:{},busy:{type:Boolean}},emits:["complete","reopen","cancel","edit","delete","acknowledge-escalation","snooze-escalation","submit-comment","add-checklist-item","toggle-checklist-item","remove-checklist-item","reorder-checklist-items","start-timer","stop-timer","add-manual-time-entry","delete-time-entry"],setup(t,{emit:a}){const n=t,o=a,l=e.ref("comments"),i=e.computed(()=>{var r;return((r=n.task)==null?void 0:r.relations)??[]});return(r,s)=>{var _;return t.task?(e.openBlock(),e.createElementBlock("section",{key:0,class:"task-detail","data-task-id":t.task.id},[e.createElementVNode("header",yf,[e.createElementVNode("div",gf,[e.createElementVNode("span",bf,e.toDisplayString(t.task.display_number_formatted),1),e.createElementVNode("h2",null,e.toDisplayString(t.task.title),1),e.createElementVNode("div",hf,[e.createVNode(ge,{task:t.task},null,8,["task"]),e.createVNode(Ye,{tier:t.task.current_escalation_tier??null,"acknowledged-at":t.task.escalation_acknowledged_at??null,"snoozed-until":t.task.escalation_snoozed_until??null},null,8,["tier","acknowledged-at","snoozed-until"]),e.createVNode(xe,{status:t.task.status,"data-testid":"status-badge"},null,8,["status"]),e.createVNode(Ie,{priority:t.task.priority,"data-testid":"priority-badge"},null,8,["priority"])])]),e.createElementVNode("div",wf,[e.createElementVNode("button",{type:"button","data-testid":"btn-complete-task",disabled:t.busy??!1,onClick:s[0]||(s[0]=d=>o("complete",t.task.id))},"Complete",8,Ef),e.createElementVNode("button",{type:"button","data-testid":"btn-reopen-task",disabled:t.busy??!1,onClick:s[1]||(s[1]=d=>o("reopen",t.task.id))},"Reopen",8,Vf),e.createElementVNode("button",{type:"button","data-testid":"btn-cancel-task",disabled:t.busy??!1,onClick:s[2]||(s[2]=d=>o("cancel",t.task.id))},"Cancel",8,Nf),e.createElementVNode("button",{type:"button","data-testid":"btn-edit-task",disabled:t.busy??!1,onClick:s[3]||(s[3]=d=>o("edit",t.task.id))},"Edit",8,$f),e.createElementVNode("button",{type:"button","data-testid":"btn-delete-task",class:"danger",disabled:t.busy??!1,onClick:s[4]||(s[4]=d=>o("delete",t.task.id))},"Delete",8,Bf)])]),e.createElementVNode("div",Tf,[e.createElementVNode("article",Cf,[e.createVNode(ka,{task:t.task,busy:t.busy??!1,onAcknowledge:s[5]||(s[5]=d=>o("acknowledge-escalation",d)),onSnooze:s[6]||(s[6]=d=>o("snooze-escalation",d))},null,8,["task","busy"]),e.createElementVNode("section",Sf,[s[20]||(s[20]=e.createElementVNode("h3",null,"Description",-1)),e.createElementVNode("p",null,e.toDisplayString(t.task.description||"No description yet."),1)]),e.createVNode(va,{task:t.task,"active-timer":t.activeTimer??null,busy:t.busy??!1,onStartTimer:s[7]||(s[7]=d=>o("start-timer",d)),onStopTimer:s[8]||(s[8]=d=>o("stop-timer",d)),onAddManualEntry:s[9]||(s[9]=d=>o("add-manual-time-entry",d)),onDeleteEntry:s[10]||(s[10]=d=>o("delete-time-entry",d))},null,8,["task","active-timer","busy"]),e.createElementVNode("nav",Df,[e.createElementVNode("button",{type:"button","data-testid":"tab-comments",class:e.normalizeClass({active:l.value==="comments"}),"aria-pressed":l.value==="comments",onClick:s[11]||(s[11]=d=>l.value="comments")},"Comments",10,Mf),e.createElementVNode("button",{type:"button","data-testid":"tab-checklist",class:e.normalizeClass({active:l.value==="checklist"}),"aria-pressed":l.value==="checklist",onClick:s[12]||(s[12]=d=>l.value="checklist")},"Checklist",10,Af),e.createElementVNode("button",{type:"button","data-testid":"tab-relations",class:e.normalizeClass({active:l.value==="relations"}),"aria-pressed":l.value==="relations",onClick:s[13]||(s[13]=d=>l.value="relations")},"Relations",10,zf),e.createElementVNode("button",{type:"button","data-testid":"tab-activity",class:e.normalizeClass({active:l.value==="activity"}),"aria-pressed":l.value==="activity",onClick:s[14]||(s[14]=d=>l.value="activity")},"Activity",10,If)]),l.value==="comments"?(e.openBlock(),e.createBlock(fa,{key:0,comments:t.task.comments,disabled:t.busy??!1,onSubmit:s[15]||(s[15]=d=>o("submit-comment",d))},null,8,["comments","disabled"])):l.value==="checklist"?(e.openBlock(),e.createBlock(_a,{key:1,items:t.task.checklist_items,disabled:t.busy??!1,onToggleItem:s[16]||(s[16]=d=>o("toggle-checklist-item",d)),onAddItem:s[17]||(s[17]=d=>o("add-checklist-item",d)),onRemoveItem:s[18]||(s[18]=d=>o("remove-checklist-item",d)),onReorderItems:s[19]||(s[19]=d=>o("reorder-checklist-items",d))},null,8,["items","disabled"])):l.value==="relations"?(e.openBlock(),e.createElementBlock("section",xf,[e.createElementVNode("ul",Ff,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,d=>(e.openBlock(),e.createElementBlock("li",{key:d.id,"data-testid":`item-relation-${d.id}`},[e.createElementVNode("strong",null,e.toDisplayString(d.type),1),d.related_task?(e.openBlock(),e.createElementBlock("span",Uf,e.toDisplayString(d.related_task.display_number_formatted)+" · "+e.toDisplayString(d.related_task.title),1)):e.createCommentVNode("",!0)],8,Lf))),128))])])):(e.openBlock(),e.createBlock(ya,{key:3,logs:t.task.activity_logs},null,8,["logs"]))]),e.createElementVNode("aside",Rf,[e.createElementVNode("dl",null,[e.createElementVNode("div",null,[s[21]||(s[21]=e.createElementVNode("dt",null,"Assignee",-1)),e.createElementVNode("dd",null,e.toDisplayString(((_=t.task.primary_assignee)==null?void 0:_.name)??"Unassigned"),1)]),e.createElementVNode("div",null,[s[22]||(s[22]=e.createElementVNode("dt",null,"Deadline",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.due_at?e.unref(ie)(t.task.due_at):"No deadline set"),1)]),e.createElementVNode("div",null,[s[23]||(s[23]=e.createElementVNode("dt",null,"Deadline status",-1)),e.createElementVNode("dd",Wf,[e.createVNode(ge,{task:t.task,"show-relative":""},null,8,["task"])])]),t.task.next_escalation_at?(e.openBlock(),e.createElementBlock("div",Pf,[s[24]||(s[24]=e.createElementVNode("dt",null,"Next visibility step",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ie)(t.task.next_escalation_at)),1)])):e.createCommentVNode("",!0),t.task.created_at?(e.openBlock(),e.createElementBlock("div",Of,[s[25]||(s[25]=e.createElementVNode("dt",null,"Created",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(ie)(t.task.created_at)),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",null,[s[26]||(s[26]=e.createElementVNode("dt",null,"Source",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.source),1)]),e.createElementVNode("div",null,[s[27]||(s[27]=e.createElementVNode("dt",null,"Linked entity",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(pt)(t.task.taskable_type,t.task.taskable_id)),1)]),e.createElementVNode("div",null,[s[28]||(s[28]=e.createElementVNode("dt",null,"Tags",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.tags.map(d=>d.name).join(", ")||"No tags"),1)])])])])],8,vf)):e.createCommentVNode("",!0)}}}),ga=K(Hf,[["__scopeId","data-v-b742e1f7"]]),jf={class:"task-form__grid"},qf={class:"task-form__field task-form__field--wide"},Yf=["disabled"],Kf={key:0,class:"task-form__field"},Qf=["disabled"],Gf=["value"],Jf={class:"task-form__field"},Zf=["disabled"],Xf={class:"task-form__field"},ev={class:"task-form__field task-form__field--wide"},tv=["disabled"],av={class:"task-form__field task-form__field--wide"},nv=["disabled"],lv={class:"task-form__checklist","data-testid":"panel-form-checklist"},ov=["data-testid"],sv=["onUpdate:modelValue","data-testid","disabled","placeholder"],iv=["data-testid","aria-label","onClick"],rv={class:"task-form__actions"},dv=["disabled"],cv=e.defineComponent({__name:"TaskForm",props:{task:{},templates:{},entityContext:{},submitting:{type:Boolean},mode:{}},emits:["submit","cancel","template-change"],setup(t,{emit:a}){const n=t,o=a,l=e.reactive({title:"",description:"",templateId:"",priority:"none",primary_assignee_id:"",due_at:"",tags:"",checklist:[]}),i=e.computed(()=>n.templates??[]),r=e.computed(()=>n.mode??"create"),s=e.computed(()=>r.value==="edit"?"Save task":"Create task");function _(u){return u.flatMap(c=>{const b=_(c.children);return c.type==="checklist"?[c.title,...b]:b})}function d(){var u,c,b,h,L,S,w,f,$,z;l.title=((u=n.task)==null?void 0:u.title)??"",l.description=((c=n.task)==null?void 0:c.description)??"",l.priority=((b=n.task)==null?void 0:b.priority)??"none",l.primary_assignee_id=String(((L=(h=n.task)==null?void 0:h.primary_assignee)==null?void 0:L.id)??""),l.due_at=((S=n.task)==null?void 0:S.due_at)??"",l.tags=((f=(w=n.task)==null?void 0:w.tags)==null?void 0:f.map(q=>q.name).join(", "))??"",l.checklist=((z=($=n.task)==null?void 0:$.checklist_items)==null?void 0:z.map(q=>q.title))??[]}e.watch(()=>n.task,()=>{d()},{immediate:!0});function V(u){if(l.templateId=u,o("template-change",u||null),!u||r.value==="edit")return;const c=i.value.find(b=>b.id===u);c&&(l.title=c.default_title,l.description=c.default_description??"",l.priority=c.default_priority,l.tags=(c.tags??[]).join(", "),l.checklist=c.items?_(c.items):[])}function m(){l.checklist.push("")}function v(u){l.checklist.splice(u,1)}function p(u){const c=u.split(",").map(b=>b.trim()).filter(Boolean);return c.length>0?c:void 0}function k(){const u=l.checklist.map((c,b)=>({title:c.trim(),position:b})).filter(c=>c.title.length>0);return u.length>0?u:void 0}function B(){var b,h;if(!l.title.trim())return;const u=p(l.tags),c=k();o("submit",{title:l.title.trim(),description:l.description.trim()||null,priority:l.priority,primary_assignee_id:l.primary_assignee_id||null,due_at:l.due_at||null,taskable_type:((b=n.entityContext)==null?void 0:b.type)??null,taskable_id:((h=n.entityContext)==null?void 0:h.id)??null,...u?{tags:u}:{},...c?{checklist_items:c}:{}})}return(u,c)=>{var b;return e.openBlock(),e.createElementBlock("form",{class:"task-form","data-testid":"form-task",onSubmit:e.withModifiers(B,["prevent"])},[e.createElementVNode("div",jf,[e.createElementVNode("label",qf,[c[9]||(c[9]=e.createElementVNode("span",null,"Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=h=>l.title=h),type:"text","data-testid":"input-task-title",disabled:t.submitting,required:""},null,8,Yf),[[e.vModelText,l.title]])]),r.value==="create"?(e.openBlock(),e.createElementBlock("label",Kf,[c[11]||(c[11]=e.createElementVNode("span",null,"Template",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[1]||(c[1]=h=>l.templateId=h),"data-testid":"select-task-template",disabled:t.submitting,onChange:c[2]||(c[2]=h=>V(l.templateId))},[c[10]||(c[10]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,h=>(e.openBlock(),e.createElementBlock("option",{key:h.id,value:h.id},e.toDisplayString(h.name),9,Gf))),128))],40,Qf),[[e.vModelSelect,l.templateId]])])):e.createCommentVNode("",!0),e.createElementVNode("label",Jf,[c[13]||(c[13]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":c[3]||(c[3]=h=>l.priority=h),"data-testid":"select-task-priority",disabled:t.submitting},[...c[12]||(c[12]=[e.createStaticVNode('<option value="none" data-v-b2880e56>None</option><option value="low" data-v-b2880e56>Low</option><option value="medium" data-v-b2880e56>Medium</option><option value="high" data-v-b2880e56>High</option><option value="urgent" data-v-b2880e56>Urgent</option><option value="critical" data-v-b2880e56>Critical</option>',6)])],8,Zf),[[e.vModelSelect,l.priority]])]),e.createElementVNode("label",Xf,[c[14]||(c[14]=e.createElementVNode("span",null,"Assignee",-1)),e.createVNode(be,{modelValue:l.primary_assignee_id,"onUpdate:modelValue":c[4]||(c[4]=h=>l.primary_assignee_id=h),"selected-user":((b=t.task)==null?void 0:b.primary_assignee)??null,"input-test-id":"input-task-assignee","aria-label":"Assignee",disabled:t.submitting??!1,placeholder:"Assign to employee","rank-by-workload":""},null,8,["modelValue","selected-user","disabled"])]),e.createVNode(Ke,{modelValue:l.due_at,"onUpdate:modelValue":c[5]||(c[5]=h=>l.due_at=h),class:"task-form__field task-form__field--wide",disabled:t.submitting??!1},null,8,["modelValue","disabled"]),e.createElementVNode("label",ev,[c[15]||(c[15]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[6]||(c[6]=h=>l.tags=h),type:"text","data-testid":"input-task-tags",disabled:t.submitting,placeholder:"ops, warehouse"},null,8,tv),[[e.vModelText,l.tags]])]),e.createElementVNode("label",av,[c[16]||(c[16]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":c[7]||(c[7]=h=>l.description=h),rows:"5","data-testid":"input-task-description",disabled:t.submitting},null,8,nv),[[e.vModelText,l.description]])])]),e.createElementVNode("section",lv,[e.createElementVNode("div",{class:"task-form__checklist-header"},[c[17]||(c[17]=e.createElementVNode("h3",null,"Checklist items",-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-add-checklist-row",onClick:m},"Add item")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.checklist,(h,L)=>(e.openBlock(),e.createElementBlock("div",{key:`${L}-${h}`,"data-testid":`checklist-row-${L}`,class:"task-form__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":S=>l.checklist[L]=S,type:"text","data-testid":`input-checklist-row-${L}`,disabled:t.submitting,placeholder:`Checklist item ${L+1}`},null,8,sv),[[e.vModelText,l.checklist[L]]]),e.createElementVNode("button",{type:"button","data-testid":`btn-remove-checklist-row-${L}`,"aria-label":`Remove checklist item ${L+1}`,onClick:S=>v(L)},"Remove",8,iv)],8,ov))),128))]),e.createElementVNode("footer",rv,[e.createElementVNode("button",{type:"button","data-testid":"btn-cancel-task-form",class:"secondary",onClick:c[8]||(c[8]=h=>o("cancel"))},"Cancel"),e.createElementVNode("button",{type:"submit","data-testid":"btn-submit-task-form",disabled:t.submitting||!l.title.trim()},e.toDisplayString(s.value),9,dv)])],32)}}}),uv=K(cv,[["__scopeId","data-v-b2880e56"]]),mv=["aria-label"],pv={class:"task-confirm-dialog__panel"},kv={class:"task-confirm-dialog__header"},_v={class:"task-confirm-dialog__actions"},fv=["disabled"],vv=["disabled"],yv=e.defineComponent({__name:"TaskConfirmDialog",props:{show:{type:Boolean},title:{},message:{},confirmText:{default:"Confirm"},cancelText:{default:"Cancel"},busy:{type:Boolean,default:!1}},emits:["confirm","cancel","update:show"],setup(t,{emit:a}){const n=t,o=a;function l(){n.busy||(o("update:show",!1),o("cancel"))}function i(){o("confirm")}return(r,s)=>t.show?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-confirm-dialog","data-testid":"task-confirm-dialog",role:"dialog","aria-modal":"true","aria-label":t.title},[e.createElementVNode("div",{class:"task-confirm-dialog__backdrop",onClick:l}),e.createElementVNode("section",pv,[e.createElementVNode("header",kv,[e.createElementVNode("h2",null,e.toDisplayString(t.title),1),e.createElementVNode("p",null,e.toDisplayString(t.message),1)]),e.createElementVNode("footer",_v,[e.createElementVNode("button",{type:"button",class:"task-confirm-dialog__button","data-testid":"btn-task-confirm-cancel",disabled:t.busy,onClick:l},e.toDisplayString(t.cancelText),9,fv),e.createElementVNode("button",{type:"button",class:"task-confirm-dialog__button task-confirm-dialog__button--danger","data-testid":"btn-task-confirm-accept",disabled:t.busy,onClick:i},e.toDisplayString(t.confirmText),9,vv)])])],8,mv)):e.createCommentVNode("",!0)}}),vt=K(yv,[["__scopeId","data-v-6a8cc864"]]),gv={class:"task-detail-page","data-testid":"page-task-detail"},bv={class:"task-detail-page__header"},hv={key:0,class:"task-detail-page__loading","data-testid":"status-task-loading"},wv={key:1,class:"task-detail-page__error",role:"alert","data-testid":"status-task-error"},Ev=e.defineComponent({__name:"TaskDetailPage",props:{taskId:{}},emits:["navigate-back","task-deleted","edit-task"],setup(t,{emit:a}){const n=t,o=a,l=Ht(e.toRef(n,"taskId")),i=e.ref(!1),r=e.ref(null);async function s(U){i.value=!0;try{await U()}finally{i.value=!1}}function _(U){s(()=>l.completeTask(U))}function d(U){s(()=>l.reopenTask(U))}function V(U){s(()=>l.cancelTask(U))}function m(U,Y,G){r.value={title:U,message:Y,action:G}}async function v(){if(r.value!==null){i.value=!0;try{await r.value.action()}finally{i.value=!1,r.value=null}}}function p(){r.value=null}function k(U){var G;const Y=((G=l.task.value)==null?void 0:G.title)??"this task";m("Delete task?",`Delete "${Y}"? This cannot be undone.`,async()=>{await l.deleteTask(U),o("task-deleted",U)})}function B(U){o("edit-task",U)}function u(U){s(()=>l.addComment(U))}function c(U){s(()=>l.addChecklistItem(U))}function b(U){l.toggleChecklistItem(U)}function h(U){var ee;const Y=(ee=l.task.value)==null?void 0:ee.checklist_items.find(O=>O.id===U),G=(Y==null?void 0:Y.title)??"this checklist item";m("Remove checklist item?",`Remove "${G}" from this task?`,async()=>{await l.removeChecklistItem(U)})}function L(){s(()=>l.acknowledgeEscalation())}function S(U){s(()=>l.snoozeEscalation(U))}function w(U){}function f(U){s(()=>l.startTimer(U))}function $(U){s(()=>l.stopTimer(U))}function z(U){s(()=>l.addManualTimeEntry(U,U.taskId))}function q(U){m("Delete time entry?","Delete this logged time entry? The recorded time will be removed from the task.",async()=>{await l.deleteTimeEntry(U.entryId,U.taskId)})}function te(){l.loadTask(n.taskId)}return(U,Y)=>{var G,ee;return e.openBlock(),e.createElementBlock("div",gv,[e.createElementVNode("div",bv,[e.createElementVNode("button",{type:"button",class:"task-detail-page__back","data-testid":"btn-back-to-tasks",onClick:Y[0]||(Y[0]=O=>o("navigate-back"))}," ← Back to Tasks ")]),e.unref(l).loading.value?(e.openBlock(),e.createElementBlock("div",hv," Loading task... ")):e.unref(l).error.value?(e.openBlock(),e.createElementBlock("div",wv,[e.createElementVNode("p",null,e.toDisplayString(e.unref(l).error.value),1),e.createElementVNode("button",{type:"button","data-testid":"btn-retry-load",onClick:te},"Retry")])):e.unref(l).task.value?(e.openBlock(),e.createBlock(ga,{key:2,task:e.unref(l).task.value,"active-timer":e.unref(l).activeTimer.value,busy:i.value,onComplete:_,onReopen:d,onCancel:V,onDelete:k,onEdit:B,onSubmitComment:u,onAddChecklistItem:c,onToggleChecklistItem:b,onRemoveChecklistItem:h,onReorderChecklistItems:w,onStartTimer:f,onStopTimer:$,onAddManualTimeEntry:z,onDeleteTimeEntry:q,onAcknowledgeEscalation:L,onSnoozeEscalation:S},null,8,["task","active-timer","busy"])):e.createCommentVNode("",!0),e.createVNode(vt,{show:r.value!==null,title:((G=r.value)==null?void 0:G.title)??"Confirm action",message:((ee=r.value)==null?void 0:ee.message)??"","confirm-text":"Delete",busy:i.value,"onUpdate:show":Y[1]||(Y[1]=O=>{O||p()}),onCancel:p,onConfirm:v},null,8,["show","title","message","busy"])])}}}),Vv=K(Ev,[["__scopeId","data-v-0e38bf7f"]]),Nv={class:"task-list-page","data-testid":"page-task-list"},$v=e.defineComponent({__name:"TaskListPage",props:{entityContext:{}},emits:["navigate-to-task"],setup(t,{emit:a}){const n=a,o=ze(),{filters:l,setFilters:i}=jt(),r=qt(),s=e.ref(!1),_=e.ref(!1),d=e.ref(null),V=e.computed(()=>{var U;return((U=d.value)==null?void 0:U.kind)==="saved-filter"?"Delete saved filter?":"Delete selected tasks?"}),m=e.computed(()=>{var Y,G,ee;if(((Y=d.value)==null?void 0:Y.kind)==="saved-filter")return`Delete "${d.value.filterName??"this saved filter"}"? This saved view will be removed.`;const U=((ee=(G=d.value)==null?void 0:G.payload)==null?void 0:ee.taskIds.length)??0;return`Delete ${U} selected task${U===1?"":"s"}? This action cannot be undone.`});function v(U,Y="task-engine-export.csv"){if(typeof window>"u")return;const G=new Blob([U],{type:"text/csv;charset=utf-8"}),ee=window.URL.createObjectURL(G),O=document.createElement("a");O.href=ee,O.download=Y,O.click(),window.URL.revokeObjectURL(ee)}async function p(){await o.fetchTasks(l.value)}function k(U){i(U),p()}function B(U){i({...l.value,page:U}),p()}function u(U){n("navigate-to-task",U)}function c(){s.value=!0}async function b(U){_.value=!0;try{await o.createTask(U),s.value=!1,await p()}finally{_.value=!1}}async function h(U){_.value=!0;try{await o.instantiateTemplate(U.templateId,U.payload),s.value=!1,await p()}finally{_.value=!1}}async function L(){const U=prompt("Filter name:");U&&await r.saveCurrentFilter({name:U})}async function S(U){const Y=r.savedFilters.value.find(G=>G.id===U);Y&&(r.applySavedFilter(Y),await p())}async function w(U){const Y=r.savedFilters.value.find(G=>G.id===U);d.value={kind:"saved-filter",filterId:U,filterName:Y==null?void 0:Y.name}}async function f(U){if(U.action==="delete"){d.value={kind:"bulk-delete",payload:U};return}await o.runBulkAction(U.taskIds,U.action,U.params)}function $(){d.value=null}async function z(){if(d.value!==null){if(d.value.kind==="saved-filter"&&d.value.filterId){await r.deleteSavedFilter(d.value.filterId),d.value=null;return}d.value.kind==="bulk-delete"&&d.value.payload&&(await o.runBulkAction(d.value.payload.taskIds,d.value.payload.action,d.value.payload.params),d.value=null)}}async function q(){const U=await o.exportTasks(l.value);v(U)}async function te(U){await o.importTasks(U),await p()}return e.onMounted(async()=>{await Promise.all([p(),r.loadSavedFilters()])}),(U,Y)=>(e.openBlock(),e.createElementBlock("div",Nv,[e.createVNode(pa,{busy:e.unref(o).loading,importing:e.unref(o).importLoading,exporting:e.unref(o).exportLoading,result:e.unref(o).importResult,onExport:q,onImport:te},null,8,["busy","importing","exporting","result"]),s.value?(e.openBlock(),e.createBlock(ft,{key:0,busy:_.value,"entity-context":t.entityContext??null,"data-testid":"panel-task-composer",onSubmit:b,onInstantiateTemplate:h,onCancel:Y[0]||(Y[0]=G=>s.value=!1)},null,8,["busy","entity-context"])):e.createCommentVNode("",!0),e.createVNode(ua,{tasks:e.unref(o).tasks,filters:e.unref(l),pagination:e.unref(o).pagination,loading:e.unref(o).loading,"saved-filters":e.unref(r).savedFilters.value,"active-saved-filter-id":e.unref(r).activeSavedFilterId.value,"bulk-busy":e.unref(o).bulkLoading,"bulk-result":e.unref(o).bulkResult,onSelectTask:u,"onUpdate:filters":k,onPageChange:B,onQuickCreate:c,onSaveFilter:L,onApplySavedFilter:S,onDeleteSavedFilter:w,onBulkAction:f,onClearBulkResult:Y[1]||(Y[1]=G=>e.unref(o).clearBulkResult())},null,8,["tasks","filters","pagination","loading","saved-filters","active-saved-filter-id","bulk-busy","bulk-result"]),e.createVNode(vt,{show:d.value!==null,title:V.value,message:m.value,"confirm-text":"Delete",busy:e.unref(o).bulkLoading||e.unref(o).savedFiltersLoading,"onUpdate:show":Y[2]||(Y[2]=G=>{G||$()}),onCancel:$,onConfirm:z},null,8,["show","title","message","busy"])]))}}),Bv=K($v,[["__scopeId","data-v-94836b8a"]]),Tv={class:"task-dashboard-page","data-testid":"page-task-dashboard"},Cv=e.defineComponent({__name:"TaskDashboardPage",props:{userId:{},echo:{},autoConnect:{type:Boolean}},emits:["navigate-to-task"],setup(t,{emit:a}){const n=a;function o(l){n("navigate-to-task",l)}return(l,i)=>(e.openBlock(),e.createElementBlock("div",Tv,[e.createVNode(oa,{"user-id":t.userId,echo:t.echo,"auto-connect":t.autoConnect??!0,onSelectTask:o},null,8,["user-id","echo","auto-connect"])]))}}),Sv=K(Cv,[["__scopeId","data-v-3d67a330"]]),Dv={class:"task-recurring-page","data-testid":"page-task-recurring"},Mv=e.defineComponent({__name:"TaskRecurringPage",props:{entityTypeOptions:{}},emits:["navigate-to-task"],setup(t,{emit:a}){const n=t,o=a,l=Yt(),i=e.ref(!1),r=e.ref(null),s=e.ref(""),_=e.ref(!1),d=e.ref(null),V=e.computed(()=>{var w;return d.value===null?"":`Delete "${d.value.title??((w=d.value.task_template)==null?void 0:w.name)??"this recurring template"}"? Future scheduled tasks will stop generating.`});function m(){r.value=null,i.value=!0}function v(S){const w=l.templates.value.find(f=>f.id===S);r.value=w??null,i.value=!0}function p(){i.value=!1,r.value=null}async function k(S){r.value?await l.updateTemplate(r.value.id,S):await l.createTemplate(S),l.error.value||p()}async function B(S){await l.pauseTemplate(S)}async function u(S){await l.resumeTemplate(S)}function c(S){d.value=l.templates.value.find(w=>w.id===S)??null}async function b(){d.value!==null&&(await l.deleteTemplate(d.value.id),d.value=null)}function h(){d.value=null}async function L(S){const w=await l.generateFromTemplate(S);w&&o("navigate-to-task",w.id)}return e.onMounted(()=>{l.loadTemplates()}),(S,w)=>(e.openBlock(),e.createElementBlock("div",Dv,[e.createElementVNode("header",{class:"task-recurring-page__header"},[w[3]||(w[3]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Recurring Tasks"),e.createElementVNode("p",null,"Manage recurring task schedules")],-1)),e.createElementVNode("button",{type:"button","data-testid":"btn-create-recurring",onClick:m}," Create recurring task ")]),i.value?(e.openBlock(),e.createBlock(ra,e.mergeProps({key:0},n.entityTypeOptions?{entityTypeOptions:n.entityTypeOptions}:{},{recurring:r.value,submitting:e.unref(l).saving.value,mode:r.value?"edit":"create",onSubmit:k,onCancel:p}),null,16,["recurring","submitting","mode"])):e.createCommentVNode("",!0),e.createVNode(da,{templates:e.unref(l).templates.value,loading:e.unref(l).loading.value,search:s.value,"include-inactive":_.value,onEdit:v,onPause:B,onResume:u,onRemove:c,onGenerate:L,"onUpdate:search":w[0]||(w[0]=f=>s.value=f),"onUpdate:includeInactive":w[1]||(w[1]=f=>_.value=f)},null,8,["templates","loading","search","include-inactive"]),e.createVNode(vt,{show:d.value!==null,title:"Delete recurring template?",message:V.value,"confirm-text":"Delete",busy:e.unref(l).saving.value,"onUpdate:show":w[2]||(w[2]=f=>{f||h()}),onCancel:h,onConfirm:b},null,8,["show","message","busy"])]))}}),Av=K(Mv,[["__scopeId","data-v-7e8383a0"]]);exports.EscalationActions=ka;exports.EscalationBadge=Ye;exports.MyStatsWidget=Zt;exports.MyTasksToday=Xt;exports.OverdueTracker=ea;exports.RecurringTemplateForm=ra;exports.RecurringTemplateList=da;exports.TaskAssigneePicker=be;exports.TaskBoardView=ss;exports.TaskBulkActionBar=sa;exports.TaskCalendarView=ei;exports.TaskCard=_t;exports.TaskChecklist=_a;exports.TaskComments=fa;exports.TaskComposer=ft;exports.TaskCreateWizard=Bk;exports.TaskDashboard=oa;exports.TaskDashboardPage=Sv;exports.TaskDeadlineBadge=ge;exports.TaskDeadlineField=Ke;exports.TaskDetailPage=Vv;exports.TaskDetailView=ga;exports.TaskEntityWidget=_p;exports.TaskFilterBar=ia;exports.TaskForm=uv;exports.TaskHealthAlerts=ta;exports.TaskImportExportPanel=pa;exports.TaskListPage=Bv;exports.TaskListView=ua;exports.TaskNotificationToast=Ok;exports.TaskPriorityIcon=Ie;exports.TaskQuickCreate=Gk;exports.TaskRecurringPage=Av;exports.TaskRolePicker=ma;exports.TaskSavedFilterTabs=ca;exports.TaskStatusBadge=xe;exports.TaskTimeTracker=va;exports.TaskTimeline=ya;exports.TaskWorkloadPanel=$o;exports.TeamActivityFeed=aa;exports.UpcomingThisWeek=na;exports.WidgetGrid=la;exports.WorkflowForm=Nu;exports.WorkflowList=qu;exports.WorkflowLogs=im;exports.createTaskApi=rt;exports.formatTaskEntityReference=pt;exports.getTaskApi=M;exports.humanizeTaskEntityType=ot;exports.normalizeTaskableType=Kt;exports.resetTaskApi=Ka;exports.setTaskApi=Ya;exports.taskApi=Pe;exports.useRecurringTemplates=Yt;exports.useTaskDashboard=Ot;exports.useTaskDetail=Ht;exports.useTaskFilters=jt;exports.useTaskListStore=ct;exports.useTaskNotificationFeed=mt;exports.useTaskPresence=hn;exports.useTaskSavedFilters=qt;exports.useTaskStore=ze;exports.useTaskWebSocket=Pt;exports.useTaskWorkflowStore=Mt;exports.useTaskWorkflows=wn;