@codingfactory/task-engine-client 0.1.0
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/README.md +53 -0
- package/dist/components/dashboard/MyStatsWidget.vue.d.ts +10 -0
- package/dist/components/dashboard/MyTasksToday.vue.d.ts +10 -0
- package/dist/components/dashboard/OverdueTracker.vue.d.ts +10 -0
- package/dist/components/dashboard/TaskDashboard.vue.d.ts +20 -0
- package/dist/components/dashboard/TaskHealthAlerts.vue.d.ts +18 -0
- package/dist/components/dashboard/TeamActivityFeed.vue.d.ts +11 -0
- package/dist/components/dashboard/UpcomingThisWeek.vue.d.ts +10 -0
- package/dist/components/dashboard/WidgetGrid.vue.d.ts +25 -0
- package/dist/components/index.d.ts +29 -0
- package/dist/components/list/TaskBoardView.vue.d.ts +21 -0
- package/dist/components/list/TaskBulkActionBar.vue.d.ts +20 -0
- package/dist/components/list/TaskCalendarView.vue.d.ts +11 -0
- package/dist/components/list/TaskFilterBar.vue.d.ts +15 -0
- package/dist/components/list/TaskListView.vue.d.ts +39 -0
- package/dist/components/list/TaskSavedFilterTabs.vue.d.ts +13 -0
- package/dist/components/recurrence/RecurringTemplateForm.vue.d.ts +17 -0
- package/dist/components/recurrence/RecurringTemplateList.vue.d.ts +25 -0
- package/dist/components/shared/TaskEntityWidget.vue.d.ts +20 -0
- package/dist/components/shared/TaskNotificationToast.vue.d.ts +16 -0
- package/dist/components/shared/TaskPriorityIcon.vue.d.ts +7 -0
- package/dist/components/shared/TaskQuickCreate.vue.d.ts +17 -0
- package/dist/components/task/EscalationActions.vue.d.ts +22 -0
- package/dist/components/task/EscalationBadge.vue.d.ts +9 -0
- package/dist/components/task/TaskCard.vue.d.ts +14 -0
- package/dist/components/task/TaskChecklist.vue.d.ts +17 -0
- package/dist/components/task/TaskComments.vue.d.ts +17 -0
- package/dist/components/task/TaskDetail.vue.d.ts +47 -0
- package/dist/components/task/TaskForm.vue.d.ts +21 -0
- package/dist/components/task/TaskStatusBadge.vue.d.ts +6 -0
- package/dist/components/task/TaskTimeline.vue.d.ts +11 -0
- package/dist/composables/index.d.ts +7 -0
- package/dist/composables/useTaskDashboard.d.ts +504 -0
- package/dist/composables/useTaskDetail.d.ts +207 -0
- package/dist/composables/useTaskFilters.d.ts +38 -0
- package/dist/composables/useTaskNotificationFeed.d.ts +47 -0
- package/dist/composables/useTaskPresence.d.ts +22 -0
- package/dist/composables/useTaskSavedFilters.d.ts +47 -0
- package/dist/composables/useTaskWebSocket.d.ts +31 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5163 -0
- package/dist/services/index.d.ts +1 -0
- package/dist/services/taskApi.d.ts +12 -0
- package/dist/stores/index.d.ts +2 -0
- package/dist/stores/taskListStore.d.ts +179 -0
- package/dist/stores/taskStore.d.ts +2294 -0
- package/dist/task-engine-client.css +1 -0
- package/dist/types/index.d.ts +700 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/recurrence.d.ts +25 -0
- package/dist/utils/taskDisplay.d.ts +14 -0
- package/package.json +74 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const jt=require("axios"),ze=require("pinia"),e=require("vue"),qt="/api/task-engine/v1";function H(t,a){return a===void 0?{}:{[t]:a}}function Kt(t){return typeof t=="object"&&t!==null&&"id"in t&&"name"in t}function F(t,a){if(t==null||t==="")return null;if(Kt(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,r=typeof n.avatar_url=="string"?n.avatar_url:void 0;if(o!==void 0&&l!==void 0)return{id:o,name:String(l),...H("avatar_url",r)}}return null}function Le(t){return{id:t.id,name:t.name,color:t.color,...H("created_at",t.created_at),...H("updated_at",t.updated_at)}}function le(t){return{id:t.id,...H("task_id",t.task_id),title:t.title,is_completed:t.is_completed,completed_at:t.completed_at,completed_by:F(t.completed_by),position:t.position,template_item_id:t.template_item_id??null}}function de(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 _e(t){return{id:t.id,type:t.type_for_task??t.type,related_task:de(t.related_task),created_at:t.created_at??null}}function ye(t){return{id:t.id,...H("task_id",t.task_id),author:F(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 Qt(t){return{id:t.id,...H("task_id",t.task_id),user:F(t.user??t.user_id),action:t.action,description:t.description,changes:t.changes,metadata:t.metadata,created_at:t.created_at}}function Gt(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 Re(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:F(t.target_user),channels_used:t.channels_used??[],acknowledged_at:t.acknowledged_at,acknowledged_by:t.acknowledged_by,acknowledged_by_user:F(t.acknowledged_by_user),snoozed_until:t.snoozed_until,snooze_reason:t.snooze_reason,blocker_task_id:t.blocker_task_id,blocker_task:de(t.blocker_task),metadata:t.metadata??null,created_at:t.created_at}}function fe(t){var o,l;const a=((o=t.checklist_items)==null?void 0:o.map(le))??[],n=a.filter(r=>r.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:F(t.created_by),primary_assignee:F(t.primary_assignee??t.primary_assignee_id),due_at:t.due_at,completed_at:t.completed_at,completed_by:F(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,tags:((l=t.tags)==null?void 0:l.map(Le))??[],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 U(t){var o,l,r,_,s;const a=fe(t),n=((o=t.assignments)==null?void 0:o.filter(v=>v.role==="watcher"))??[];return{...a,comments:((l=t.comments)==null?void 0:l.map(ye))??[],checklist_items:((r=t.checklist_items)==null?void 0:r.map(le))??[],watchers:n.map(v=>F(v.user_id)).filter(v=>v!==null),relations:[...t.outgoing_relations??[],...t.incoming_relations??[]].map(_e),activity_logs:((_=t.activity_logs)==null?void 0:_.map(Qt))??[],escalation_policy:t.escalation_policy?Gt(t.escalation_policy):null,escalation_events:((s=t.escalation_events)==null?void 0:s.map(Re))??[]}}function Ue(t){var a;return{id:t.id,...H("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(Ue))??[]}}function Jt(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,...H("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(Ue))??[],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 me(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 Zt(t){return{success:t.success??[],failed:t.failed??[]}}function he(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:F(t.primary_assignee),created_by:F(t.created_by),completed_by:F(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 Xt(t){return{id:t.id,action:t.action,description:t.description,changes:t.changes,metadata:t.metadata,created_at:t.created_at,user:F(t.user),task:de(t.task)}}function ve(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 oe(t){return{items:t.items.map(he),summary:t.summary}}function Pe(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(he)})),summary:t.summary}}function ea(t){return{task:he(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 Oe(t){return{items:t.items.map(ea),summary:t.summary}}function We(t){return{items:t.items.map(Xt),summary:t.summary}}function He(t){return{period:t.period,current:t.current,previous:t.previous,trends:t.trends}}function ta(t){return{scope:t.scope,config:ve(t.config),widgets:{my_tasks_today:oe(t.widgets.my_tasks_today),upcoming_this_week:Pe(t.widgets.upcoming_this_week),overdue:oe(t.widgets.overdue),activity:We(t.widgets.activity),my_stats:He(t.widgets.my_stats),health_alerts:Oe(t.widgets.health_alerts)},meta:t.meta}}function Ye(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:de(t.task)}}function G(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(Ye))??[]}}function aa(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 J(t,a){return{data:t.data.map(a),meta:aa(t)}}function S(t,a){return`${t.replace(/\/$/,"")}${a}`}function Ce(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,a}function Ee(t={}){const a=t.axios??jt,n=t.baseUrl??qt;return{async list(o={}){const l=await a.get(S(n,"/tasks"),{params:Ce(o)});return J(l.data,fe)},async get(o){const l=await a.get(S(n,`/tasks/${o}`));return U(l.data.data)},async create(o){const l=await a.post(S(n,"/tasks"),o);return U(l.data.data)},async update(o,l){const r=await a.patch(S(n,`/tasks/${o}`),l);return U(r.data.data)},async delete(o){await a.delete(S(n,`/tasks/${o}`))},async complete(o,l){const r=await a.post(S(n,`/tasks/${o}/complete`),{note:l});return U(r.data.data)},async reopen(o){const l=await a.post(S(n,`/tasks/${o}/reopen`));return U(l.data.data)},async cancel(o){const l=await a.post(S(n,`/tasks/${o}/cancel`));return U(l.data.data)},async assign(o,l){return await a.post(S(n,`/tasks/${o}/assign`),{user_id:l}),this.get(o)},async reassign(o,l){return await a.post(S(n,`/tasks/${o}/reassign`),{user_id:l}),this.get(o)},async addWatcher(o,l){return await a.post(S(n,`/tasks/${o}/watchers`),{user_id:l}),this.get(o)},async removeWatcher(o,l){return await a.delete(S(n,`/tasks/${o}/watchers/${l}`)),this.get(o)},async listComments(o){return(await a.get(S(n,`/tasks/${o}/comments`))).data.data.map(ye)},async addComment(o,l){const r=await a.post(S(n,`/tasks/${o}/comments`),l);return ye(r.data.data)},async acknowledgeEscalation(o){const l=await a.post(S(n,`/tasks/${o}/escalation/acknowledge`));return U(l.data.data)},async snoozeEscalation(o,l){const r=await a.post(S(n,`/tasks/${o}/escalation/snooze`),l);return U(r.data.data)},async escalationHistory(o,l={}){const r=await a.get(S(n,`/tasks/${o}/escalation/history`),{params:l});return J(r.data,Re)},async addChecklistItem(o,l){const r=await a.post(S(n,`/tasks/${o}/checklist`),{title:l});return le(r.data.data)},async toggleChecklistItem(o,l){const r=await a.post(S(n,`/tasks/${o}/checklist/${l}/toggle`));return le(r.data.data)},async removeChecklistItem(o,l){await a.delete(S(n,`/tasks/${o}/checklist/${l}`))},async listRelations(o){return(await a.get(S(n,`/tasks/${o}/relations`))).data.data.map(_e)},async addRelation(o,l){const r=await a.post(S(n,`/tasks/${o}/relations`),l);return _e(r.data.data)},async listTags(){return(await a.get(S(n,"/tags"))).data.data.map(Le)},async addTagToTask(o,l){return await a.post(S(n,`/tasks/${o}/tags`),{tag_id:l}),this.get(o)},async listSavedFilters(){return(await a.get(S(n,"/filters"))).data.data.map(me)},async createSavedFilter(o){const l=await a.post(S(n,"/filters"),o);return me(l.data.data)},async updateSavedFilter(o,l){const r=await a.patch(S(n,`/filters/${o}`),l);return me(r.data.data)},async deleteSavedFilter(o){await a.delete(S(n,`/filters/${o}`))},async bulkAction(o,l,r={}){const _=await a.post(S(n,"/tasks/bulk"),{task_ids:o,action:l,params:r});return Zt(_.data.data)},async listTemplates(o={}){const l=await a.get(S(n,"/templates"),{params:o});return J(l.data,Jt)},async instantiateTemplate(o,l){const r=await a.post(S(n,`/templates/${o}/instantiate`),l);return U(r.data.data)},async listRecurring(o={}){const l=await a.get(S(n,"/recurring"),{params:o});return J(l.data,G)},async getRecurring(o){const l=await a.get(S(n,`/recurring/${o}`));return G(l.data.data)},async createRecurring(o){const l=await a.post(S(n,"/recurring"),o);return G(l.data.data)},async updateRecurring(o,l){const r=await a.patch(S(n,`/recurring/${o}`),l);return G(r.data.data)},async deleteRecurring(o){await a.delete(S(n,`/recurring/${o}`))},async pauseRecurring(o){const l=await a.post(S(n,`/recurring/${o}/pause`));return G(l.data.data)},async resumeRecurring(o){const l=await a.post(S(n,`/recurring/${o}/resume`));return G(l.data.data)},async recurringHistory(o,l={}){const r=await a.get(S(n,`/recurring/${o}/history`),{params:l});return J(r.data,Ye)},async generateRecurring(o){const l=await a.post(S(n,`/recurring/${o}/generate`));return U(l.data.data)},async entityTasks(o,l,r={}){const _=await a.get(S(n,`/entity/${o}/${l}/tasks`),{params:Ce(r)});return J(_.data,fe)},async entitySummary(o,l){const _=(await a.get(S(n,`/entity/${o}/${l}/summary`))).data.data;return{..._,recent_tasks:_.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(S(n,"/dashboard"),{params:{period:o}});return ta(l.data.data)},async getDashboardConfig(){const o=await a.get(S(n,"/dashboard/config"));return ve(o.data.data)},async updateDashboardConfig(o){const l=await a.put(S(n,"/dashboard/config"),o);return ve(l.data.data)},async getDashboardMyTasksToday(){const o=await a.get(S(n,"/dashboard/my-tasks-today"));return oe(o.data.data)},async getDashboardUpcoming(){const o=await a.get(S(n,"/dashboard/upcoming"));return Pe(o.data.data)},async getDashboardOverdue(){const o=await a.get(S(n,"/dashboard/overdue"));return oe(o.data.data)},async getDashboardActivity(){const o=await a.get(S(n,"/dashboard/activity"));return We(o.data.data)},async getDashboardStats(o="week"){const l=await a.get(S(n,"/dashboard/stats"),{params:{period:o}});return He(l.data.data)},async getDashboardHealthAlerts(){const o=await a.get(S(n,"/dashboard/health-alerts"));return Oe(o.data.data)},async getAnalyticsCompletionRate(o={}){return(await a.get(S(n,"/analytics/completion-rate"),{params:o})).data.data},async getAnalyticsCycleTime(o={}){return(await a.get(S(n,"/analytics/cycle-time"),{params:o})).data.data},async getAnalyticsVelocity(o={}){return(await a.get(S(n,"/analytics/velocity"),{params:o})).data.data},async getAnalyticsOverdueRate(o={}){return(await a.get(S(n,"/analytics/overdue-rate"),{params:o})).data.data},async getAnalyticsTemplateUsage(){return(await a.get(S(n,"/analytics/template-usage"))).data.data}}}let Ve=Ee();function w(){return Ve}function na(t){Ve=t}function la(){Ve=Ee()}const oa={list:t=>w().list(t),get:t=>w().get(t),create:t=>w().create(t),update:(t,a)=>w().update(t,a),delete:t=>w().delete(t),complete:(t,a)=>w().complete(t,a),reopen:t=>w().reopen(t),cancel:t=>w().cancel(t),assign:(t,a)=>w().assign(t,a),reassign:(t,a)=>w().reassign(t,a),addWatcher:(t,a)=>w().addWatcher(t,a),removeWatcher:(t,a)=>w().removeWatcher(t,a),listComments:t=>w().listComments(t),addComment:(t,a)=>w().addComment(t,a),acknowledgeEscalation:t=>w().acknowledgeEscalation(t),snoozeEscalation:(t,a)=>w().snoozeEscalation(t,a),escalationHistory:(t,a)=>w().escalationHistory(t,a),addChecklistItem:(t,a)=>w().addChecklistItem(t,a),toggleChecklistItem:(t,a)=>w().toggleChecklistItem(t,a),removeChecklistItem:(t,a)=>w().removeChecklistItem(t,a),listRelations:t=>w().listRelations(t),addRelation:(t,a)=>w().addRelation(t,a),listTags:()=>w().listTags(),addTagToTask:(t,a)=>w().addTagToTask(t,a),listSavedFilters:()=>w().listSavedFilters(),createSavedFilter:t=>w().createSavedFilter(t),updateSavedFilter:(t,a)=>w().updateSavedFilter(t,a),deleteSavedFilter:t=>w().deleteSavedFilter(t),bulkAction:(t,a,n)=>w().bulkAction(t,a,n),listTemplates:t=>w().listTemplates(t),instantiateTemplate:(t,a)=>w().instantiateTemplate(t,a),listRecurring:t=>w().listRecurring(t),getRecurring:t=>w().getRecurring(t),createRecurring:t=>w().createRecurring(t),updateRecurring:(t,a)=>w().updateRecurring(t,a),deleteRecurring:t=>w().deleteRecurring(t),pauseRecurring:t=>w().pauseRecurring(t),resumeRecurring:t=>w().resumeRecurring(t),recurringHistory:(t,a)=>w().recurringHistory(t,a),generateRecurring:t=>w().generateRecurring(t),entityTasks:(t,a,n)=>w().entityTasks(t,a,n),entitySummary:(t,a)=>w().entitySummary(t,a),getDashboard:t=>w().getDashboard(t),getDashboardConfig:()=>w().getDashboardConfig(),updateDashboardConfig:t=>w().updateDashboardConfig(t),getDashboardMyTasksToday:()=>w().getDashboardMyTasksToday(),getDashboardUpcoming:()=>w().getDashboardUpcoming(),getDashboardOverdue:()=>w().getDashboardOverdue(),getDashboardActivity:()=>w().getDashboardActivity(),getDashboardStats:t=>w().getDashboardStats(t),getDashboardHealthAlerts:()=>w().getDashboardHealthAlerts(),getAnalyticsCompletionRate:t=>w().getAnalyticsCompletionRate(t),getAnalyticsCycleTime:t=>w().getAnalyticsCycleTime(t),getAnalyticsVelocity:t=>w().getAnalyticsVelocity(t),getAnalyticsOverdueRate:t=>w().getAnalyticsOverdueRate(t),getAnalyticsTemplateUsage:()=>w().getAnalyticsTemplateUsage()};function De(){return{page:1,per_page:15,sort:"-created_at"}}function sa(){return{current_page:1,last_page:1,per_page:15,total:0}}const Ne=ze.defineStore("task-engine/task-list",()=>{const t=e.ref(De()),a=e.ref(sa()),n=e.ref("list"),o=e.ref(null);function l(c,u){const f={...t.value};u==null||u===""||Array.isArray(u)&&u.length===0?delete f[c]:f[c]=u,f.page=1,t.value=f}function r(c){t.value={...t.value,...c,page:c.page??1}}function _(){t.value=De()}function s(c){t.value={...t.value,sort:c,page:1}}function v(){a.value.current_page>=a.value.last_page||(t.value={...t.value,page:a.value.current_page+1})}function k(){a.value.current_page<=1||(t.value={...t.value,page:a.value.current_page-1})}function d(c){a.value=c,t.value={...t.value,page:c.current_page,per_page:c.per_page}}function m(c){n.value=c}function g(c){o.value=c}const h=e.computed(()=>Object.entries(t.value).reduce((c,[u,f])=>u==="page"||u==="per_page"||u==="sort"||f==null||f===""||Array.isArray(f)&&f.length===0?c:c+1,0));return{filters:t,pagination:a,view:n,activeSavedFilterId:o,activeFilterCount:h,setFilter:l,setFilters:r,clearFilters:_,setSort:s,setView:m,setActiveSavedFilter:g,nextPage:v,previousPage:k,syncPagination:d}});function ra(){return{current_page:1,last_page:1,per_page:15,total:0}}function ia(){return{completed:0,total:0}}function da(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 ne(t){return t==="complete"}function ke(t){return t.total<=0?0:Math.round(t.completed/t.total*100)}function ca(t,a){return t===null||ne(a)||a==="cancelled"?!1:new Date(t).getTime()<Date.now()}function Me(t,a){return a===void 0?!0:Array.isArray(a)?a.includes(t):a===t}const ce=ze.defineStore("task-engine/tasks",()=>{const t=e.ref([]),a=e.ref(null),n=e.ref(null),o=e.ref(!1),l=e.ref(null),r=e.ref(ra()),_=e.ref({}),s=e.ref([]),v=e.ref(!1),k=e.ref(null),d=e.ref(!1);function m(p){l.value=p instanceof Error?p.message:String(p)}function g(p){r.value={...r.value,total:Math.max(0,p)}}function h(p){g(r.value.total+p)}function c(p){const i=t.value.findIndex($=>$.id===p.id);return i>=0?(t.value.splice(i,1,p),!1):(t.value.unshift(p),!0)}function u(p){const i=t.value.findIndex($=>$.id===p);return i<0?!1:(t.value.splice(i,1),!0)}function f(p){var $;const i=_.value;return!(!Me(p.status,i.status)||!Me(p.priority,i.priority)||typeof i.taskable_type=="string"&&p.taskable_type!==i.taskable_type||typeof i.taskable_id=="string"&&p.taskable_id!==i.taskable_id||typeof i.assignee=="string"&&String((($=p.primary_assignee)==null?void 0:$.id)??"")!==i.assignee||i.overdue===!0&&!p.is_overdue)}function E(p,i){const $=(i==null?void 0:i.checklist_progress)??ia(),D=p.status,A=p.due_at??(i==null?void 0:i.due_at)??null,z=p.display_number_formatted||String(p.display_number);return{id:p.id,tenant_id:(i==null?void 0:i.tenant_id)??"",display_number:(i==null?void 0:i.display_number)??da(p.display_number),display_number_formatted:z,title:p.title,description:(i==null?void 0:i.description)??null,status:D,priority:p.priority,taskable_type:p.taskable_type??(i==null?void 0:i.taskable_type)??null,taskable_id:p.taskable_id??(i==null?void 0:i.taskable_id)??null,created_by:p.created_by??(i==null?void 0:i.created_by)??null,primary_assignee:p.primary_assignee??(i==null?void 0:i.primary_assignee)??null,due_at:A,completed_at:ne(D)?(i==null?void 0:i.completed_at)??null:null,completed_by:p.completed_by??(ne(D)?(i==null?void 0:i.completed_by)??null:null),source:(i==null?void 0:i.source)??"manual",source_id:(i==null?void 0:i.source_id)??null,template_item_id:(i==null?void 0:i.template_item_id)??null,escalation_policy_id:(i==null?void 0:i.escalation_policy_id)??null,current_escalation_tier:p.current_escalation_tier??(i==null?void 0:i.current_escalation_tier)??null,current_escalation_label:(i==null?void 0:i.current_escalation_label)??null,next_escalation_at:p.next_escalation_at??(i==null?void 0:i.next_escalation_at)??null,escalation_acknowledged_at:p.escalation_acknowledged_at??(i==null?void 0:i.escalation_acknowledged_at)??null,escalation_snoozed_until:p.escalation_snoozed_until??(i==null?void 0:i.escalation_snoozed_until)??null,blocker_count:(i==null?void 0:i.blocker_count)??null,open_blocker_count:(i==null?void 0:i.open_blocker_count)??null,has_unresolved_blockers:(i==null?void 0:i.has_unresolved_blockers)??null,subtask_count:(i==null?void 0:i.subtask_count)??null,completed_subtask_count:(i==null?void 0:i.completed_subtask_count)??null,completion_rules:(i==null?void 0:i.completion_rules)??null,tags:(i==null?void 0:i.tags)??[],checklist_progress:$,is_overdue:ca(A,D),is_complete:ne(D),progress_percentage:ke($),metadata:(i==null?void 0:i.metadata)??null,created_at:(i==null?void 0:i.created_at)??new Date().toISOString(),updated_at:new Date().toISOString()}}function B(p){var $;if((($=a.value)==null?void 0:$.id)!==p.id)return;const i=E(p,a.value);a.value={...a.value,...i}}function V(p){const i=t.value.find(z=>z.id===p.id)??a.value,$=E(p,i??null),D=t.value.some(z=>z.id===$.id);return f($)?c($)&&!D&&h(1):u($.id)&&h(-1),B(p),$}function b(p,i,$){var z;const D=t.value.findIndex(Q=>Q.id===p);if(D>=0){const Q=t.value[D];Q!==void 0&&t.value.splice(D,1,{...Q,checklist_progress:$,progress_percentage:ke($),updated_at:new Date().toISOString()})}if(((z=a.value)==null?void 0:z.id)!==p)return;const A=a.value.checklist_items.findIndex(Q=>Q.id===i.id);A>=0?a.value.checklist_items.splice(A,1,{...a.value.checklist_items[A],...i}):a.value.checklist_items.push(i),a.value={...a.value,checklist_progress:$,progress_percentage:ke($),updated_at:new Date().toISOString()}}function y(p){var i;return((i=a.value)==null?void 0:i.id)===p}function N(p){return V(p)}function C(p){return V(p.task)}function T(p){return V({...p.task,status:p.new_status})}function I(p){return V({...p.task,assignee_id:p.new_assignee_id,primary_assignee:p.task.primary_assignee})}function bt(p){return V({...p.task,status:"complete",completed_by:p.completed_by})}function ht(p){return V(p.task)}function Et(p){const i=V(p.task);return b(p.task.id,p.item,p.progress),i}async function Se(p={}){o.value=!0,l.value=null;try{const i=await w().list(p);t.value=i.data,r.value=i.meta,_.value={...p}}catch(i){throw m(i),i}finally{o.value=!1}}async function K(p){o.value=!0,l.value=null;try{const i=await w().get(p);return a.value=i,c(i),i}catch(i){throw m(i),i}finally{o.value=!1}}async function Vt(p){o.value=!0,l.value=null;try{const i=await w().create(p);return a.value=i,c(i),h(1),i}catch(i){throw m(i),i}finally{o.value=!1}}async function Nt(p,i){o.value=!0,l.value=null;try{const $=await w().update(p,i);return a.value=$,c($),$}catch($){throw m($),$}finally{o.value=!1}}async function wt(p){var i;o.value=!0,l.value=null;try{await w().delete(p),t.value=t.value.filter($=>$.id!==p),((i=a.value)==null?void 0:i.id)===p&&(a.value=null),h(-1)}catch($){throw m($),$}finally{o.value=!1}}async function $t(p,i){const $=await w().complete(p,i);return a.value=$,c($),$}async function Tt(p){const i=await w().reopen(p);return a.value=i,c(i),i}async function Bt(p){const i=await w().cancel(p);return a.value=i,c(i),i}async function St(p,i){var $;return await w().addComment(p,i),(($=a.value)==null?void 0:$.id)===p?K(p):null}async function Ct(p){const i=await w().acknowledgeEscalation(p);return a.value=i,c(i),i}async function Dt(p,i){const $=await w().snoozeEscalation(p,i);return a.value=$,c($),$}async function Mt(p,i){var $;return await w().addChecklistItem(p,i),(($=a.value)==null?void 0:$.id)===p?K(p):null}async function It(p,i){var $;return await w().toggleChecklistItem(p,i),(($=a.value)==null?void 0:$.id)===p?K(p):null}async function Ft(p,i){var $;return await w().removeChecklistItem(p,i),(($=a.value)==null?void 0:$.id)===p?K(p):null}async function At(p,i,$={}){o.value=!0,l.value=null;try{const D=await w().entityTasks(p,i,$);t.value=D.data,r.value=D.meta,_.value={...$,taskable_type:p,taskable_id:i}}catch(D){throw m(D),D}finally{o.value=!1}}async function zt(p,i){o.value=!0,l.value=null;try{const $=await w().entitySummary(p,i);return n.value=$,$}catch($){throw m($),$}finally{o.value=!1}}async function Lt(p,i){o.value=!0,l.value=null;try{const $=await w().instantiateTemplate(p,i);return a.value=$,c($),h(1),$}catch($){throw m($),$}finally{o.value=!1}}async function Rt(){v.value=!0,l.value=null;try{const p=await w().listSavedFilters();return s.value=[...p].sort((i,$)=>i.position-$.position||i.name.localeCompare($.name)),s.value}catch(p){throw m(p),p}finally{v.value=!1}}async function Ut(p){v.value=!0,l.value=null;try{const i=await w().createSavedFilter(p);return s.value=[...s.value,i].sort(($,D)=>$.position-D.position||$.name.localeCompare(D.name)),i}catch(i){throw m(i),i}finally{v.value=!1}}async function Pt(p,i){v.value=!0,l.value=null;try{const $=await w().updateSavedFilter(p,i),D=s.value.findIndex(A=>A.id===p);return D>=0&&(s.value.splice(D,1,$),s.value=[...s.value].sort((A,z)=>A.position-z.position||A.name.localeCompare(z.name))),$}catch($){throw m($),$}finally{v.value=!1}}async function Ot(p){v.value=!0,l.value=null;try{await w().deleteSavedFilter(p),s.value=s.value.filter(i=>i.id!==p)}catch(i){throw m(i),i}finally{v.value=!1}}async function Wt(p,i,$={}){d.value=!0,l.value=null;try{const D=await w().bulkAction(p,i,$);return k.value=D,D.success.length>0&&(t.value.length>0||Object.keys(_.value).length>0)&&await Se(_.value),a.value!==null&&D.success.includes(a.value.id)&&(i==="delete"?a.value=null:await K(a.value.id)),D}catch(D){throw m(D),D}finally{d.value=!1}}const Ht=e.computed(()=>t.value.filter(p=>p.is_overdue)),Yt=e.computed(()=>({draft:t.value.filter(p=>p.status==="draft"),open:t.value.filter(p=>p.status==="open"),in_progress:t.value.filter(p=>p.status==="in_progress"),blocked:t.value.filter(p=>p.status==="blocked"),under_review:t.value.filter(p=>p.status==="under_review"),complete:t.value.filter(p=>p.status==="complete"),cancelled:t.value.filter(p=>p.status==="cancelled")})),xt=e.computed(()=>({none:t.value.filter(p=>p.priority==="none"),low:t.value.filter(p=>p.priority==="low"),medium:t.value.filter(p=>p.priority==="medium"),high:t.value.filter(p=>p.priority==="high"),urgent:t.value.filter(p=>p.priority==="urgent"),critical:t.value.filter(p=>p.priority==="critical")}));return{tasks:t,currentTask:a,entitySummary:n,loading:o,error:l,pagination:r,lastFilters:_,savedFilters:s,savedFiltersLoading:v,bulkResult:k,bulkLoading:d,overdueTasks:Ht,tasksByStatus:Yt,tasksByPriority:xt,isViewingTask:y,handleTaskCreated:N,handleTaskUpdated:C,handleStatusChanged:T,handleTaskAssigned:I,handleTaskCompleted:bt,handleCommentAdded:ht,handleChecklistToggled:Et,fetchTasks:Se,fetchTask:K,createTask:Vt,updateTask:Nt,deleteTask:wt,completeTask:$t,reopenTask:Tt,cancelTask:Bt,addComment:St,acknowledgeEscalation:Ct,snoozeEscalation:Dt,addChecklistItem:Mt,toggleChecklistItem:It,removeChecklistItem:Ft,fetchEntityTasks:At,fetchEntitySummary:zt,instantiateTemplate:Lt,fetchSavedFilters:Rt,createSavedFilter:Ut,updateSavedFilterRecord:Pt,deleteSavedFilterRecord:Ot,runBulkAction:Wt}}),ua=8e3,ma="/admin/tasks",P=e.ref([]),se=new Map;let ka=0;function pa(t){return`${ma}/${t}`}function we(t){const a=se.get(t);a!==void 0&&(clearTimeout(a),se.delete(t))}function xe(t){we(t),P.value=P.value.filter(a=>a.id!==t)}function _a(t){const a=t.id??`task-toast-${++ka}`,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??ua,url:t.url??pa(t.taskId),created_at:t.created_at??new Date().toISOString()},o=P.value.findIndex(l=>l.id===a);return we(a),o>=0&&P.value.splice(o,1),P.value=[n,...P.value].slice(0,5),se.set(a,setTimeout(()=>{xe(a)},n.duration)),n}function ya(){Array.from(se.keys()).forEach(we),P.value=[]}function $e(){return{notifications:e.readonly(P),hasNotifications:e.computed(()=>P.value.length>0),pushTaskNotificationToast:_a,dismissTaskNotificationToast:xe,clearTaskNotificationFeed:ya}}const Y={created:".task.created",updated:".task.updated",statusChanged:".task.status_changed",assigned:".task.assigned",completed:".task.completed",commentAdded:".task.comment_added",checklistToggled:".task.checklist_toggled"},fa=["draft","open","in_progress","blocked","under_review","complete","cancelled"],va=["none","low","medium","high","urgent","critical"],ga=["reminder","warning","due_now","overdue","escalated","critical"];function R(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function L(t){return t==null||t===""?null:typeof t=="string"||typeof t=="number"?String(t):void 0}function ge(t){return typeof t=="string"&&fa.includes(t)}function ba(t){return typeof t=="string"&&va.includes(t)}function ha(t){return t==null||t===""?null:typeof t=="string"&&ga.includes(t)?t:void 0}function j(t){if(t==null||t==="")return null;if(!R(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 q(t){if(!R(t))return null;const a=t.id,n=t.display_number,o=t.display_number_formatted,l=t.title,r=t.status,_=t.priority,s=L(t.assignee_id),v=L(t.taskable_type),k=L(t.taskable_id),d=j(t.created_by),m=j(t.primary_assignee),g=j(t.completed_by),h=L(t.due_at),c=ha(t.current_escalation_tier),u=L(t.next_escalation_at),f=L(t.escalation_acknowledged_at),E=L(t.escalation_snoozed_until);return typeof a!="string"||typeof n!="string"&&typeof n!="number"||typeof o!="string"||typeof l!="string"||!ge(r)||!ba(_)||s===void 0||v===void 0||k===void 0||d===void 0||m===void 0||g===void 0||h===void 0||c===void 0||u===void 0||f===void 0||E===void 0?null:{id:a,display_number:n,display_number_formatted:o,title:l,status:r,priority:_,assignee_id:s,taskable_type:v,taskable_id:k,created_by:d,primary_assignee:m,completed_by:g,due_at:h,current_escalation_tier:c,next_escalation_at:u,escalation_acknowledged_at:f,escalation_snoozed_until:E}}function je(t){if(!R(t))return null;const a=q(t.task),n=t.changes;return a===null||!R(n)?null:{task:a,changes:n}}function qe(t){if(!R(t))return null;const a=q(t.task),n=t.old_status,o=t.new_status;return a===null||!ge(n)||!ge(o)?null:{task:a,old_status:n,new_status:o}}function Ke(t){if(!R(t))return null;const a=q(t.task),n=L(t.new_assignee_id),o=L(t.old_assignee_id),l=j(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 Qe(t){if(!R(t))return null;const a=q(t.task),n=j(t.completed_by);return a===null||n===void 0?null:{task:a,completed_by:n}}function Ea(t){if(!R(t))return null;const a=t.id,n=j(t.author),o=L(t.author_id),l=t.visibility,r=t.preview,_=L(t.created_at);return typeof a!="string"||n===void 0||o===void 0||l!=="team"&&l!=="private"||typeof r!="string"||_===void 0?null:{id:a,author:n,author_id:o,visibility:l,preview:r,created_at:_}}function Ge(t){if(!R(t))return null;const a=q(t.task),n=Ea(t.comment);return a===null||n===null?null:{task:a,comment:n}}function Va(t){if(!R(t))return null;const a=t.completed,n=t.total;return typeof a!="number"||typeof n!="number"?null:{completed:a,total:n}}function Na(t){if(!R(t))return null;const a=t.id,n=t.title,o=t.is_completed,l=L(t.completed_at),r=j(t.completed_by),_=t.position;return typeof a!="string"||typeof n!="string"||typeof o!="boolean"||l===void 0||r===void 0||typeof _!="number"?null:{id:a,title:n,is_completed:o,completed_at:l,completed_by:r,position:_}}function Je(t){if(!R(t))return null;const a=q(t.task),n=Na(t.item),o=Va(t.progress);return a===null||n===null||o===null?null:{task:a,item:n,progress:o}}function Ze(t){return q(t)}function wa(){return typeof window>"u"?null:window.Echo??null}function Xe(t){try{return JSON.stringify(t)??"null"}catch{return"unserializable"}}function O(t){return t.display_number_formatted||String(t.display_number)}function x(t,a){switch(t){case"task.created":{const n=Ze(a);return n===null?null:`${t}:${n.id}`}case"task.updated":{const n=je(a);return n===null?null:`${t}:${n.task.id}:${Xe(n.changes)}`}case"task.status_changed":{const n=qe(a);return n===null?null:`${t}:${n.task.id}:${n.old_status}:${n.new_status}`}case"task.assigned":{const n=Ke(a);return n===null?null:`${t}:${n.task.id}:${n.new_assignee_id??""}:${n.old_assignee_id??""}`}case"task.completed":{const n=Qe(a);return n===null?null:`${t}:${n.task.id}`}case"task.comment_added":{const n=Ge(a);return n===null?null:`${t}:${n.task.id}:${n.comment.id}`}case"task.checklist_toggled":{const n=Je(a);return n===null?null:`${t}:${n.task.id}:${n.item.id}:${n.item.is_completed?"1":"0"}`}}}function et(t,a={}){const n=ce(),o=$e(),l=e.ref([]),r=e.ref(a.autoConnect??!0),_=e.ref(!1),s=e.computed(()=>_.value),v=new Map;function k(V){var b;_.value!==V&&(_.value=V,(b=a.onConnectionChange)==null||b.call(a,V))}function d(){return(typeof a.echo=="function"?a.echo():a.echo)??wa()}function m(V){return V===null||v.has(V)?!1:(v.set(V,setTimeout(()=>{const b=v.get(V);b!==void 0&&clearTimeout(b),v.delete(V)},1500)),!0)}function g(){Array.from(v.entries()).forEach(([V,b])=>{clearTimeout(b),v.delete(V)})}function h(V){var y;const b=o.pushTaskNotificationToast(V);(y=a.onToast)==null||y.call(a,b)}function c(V,b){const y=d();if(y===null)return;y.private(V.name).listen(Y.created,C=>{var I;if(!m(x("task.created",C)))return;const T=Ze(C);T!==null&&(n.handleTaskCreated(T),(I=a.onEvent)==null||I.call(a,"task.created",T))}).listen(Y.updated,C=>{var I;if(!m(x("task.updated",C)))return;const T=je(C);T!==null&&(n.handleTaskUpdated(T),(I=a.onEvent)==null||I.call(a,"task.updated",T),n.isViewingTask(T.task.id)&&n.fetchTask(T.task.id),V.scope==="personal"&&h({id:`task.updated:${T.task.id}:${Xe(T.changes)}`,kind:"update",title:`${O(T.task)} updated`,body:T.task.title,taskId:T.task.id,taskNumber:O(T.task),tone:"info",url:`/admin/tasks/${T.task.id}`}))}).listen(Y.statusChanged,C=>{var I;if(!m(x("task.status_changed",C)))return;const T=qe(C);T!==null&&(n.handleStatusChanged(T),(I=a.onEvent)==null||I.call(a,"task.status_changed",T))}).listen(Y.assigned,C=>{var I;if(!m(x("task.assigned",C)))return;const T=Ke(C);T!==null&&(n.handleTaskAssigned(T),(I=a.onEvent)==null||I.call(a,"task.assigned",T),V.scope==="personal"&&T.new_assignee_id===b&&h({id:`task.assigned:${T.task.id}:${T.new_assignee_id??""}`,kind:"assignment",title:`Assigned ${O(T.task)}`,body:T.assigned_by===null?T.task.title:`${T.assigned_by.name} assigned ${T.task.title}`,taskId:T.task.id,taskNumber:O(T.task),tone:"info",url:`/admin/tasks/${T.task.id}`}))}).listen(Y.completed,C=>{var I;if(!m(x("task.completed",C)))return;const T=Qe(C);T!==null&&(n.handleTaskCompleted(T),(I=a.onEvent)==null||I.call(a,"task.completed",T),V.scope==="personal"&&h({id:`task.completed:${T.task.id}`,kind:"completion",title:`${O(T.task)} completed`,body:T.completed_by===null?T.task.title:`${T.completed_by.name} completed ${T.task.title}`,taskId:T.task.id,taskNumber:O(T.task),tone:"success",url:`/admin/tasks/${T.task.id}`}))}).listen(Y.commentAdded,C=>{var I;if(!m(x("task.comment_added",C)))return;const T=Ge(C);T!==null&&(n.handleCommentAdded(T),(I=a.onEvent)==null||I.call(a,"task.comment_added",T),n.isViewingTask(T.task.id)&&n.fetchTask(T.task.id),V.scope==="personal"&&h({id:`task.comment_added:${T.task.id}:${T.comment.id}`,kind:"comment",title:`New comment on ${O(T.task)}`,body:T.comment.author===null?T.comment.preview:`${T.comment.author.name}: ${T.comment.preview}`,taskId:T.task.id,taskNumber:O(T.task),tone:"info",url:`/admin/tasks/${T.task.id}`}))}).listen(Y.checklistToggled,C=>{var I;if(!m(x("task.checklist_toggled",C)))return;const T=Je(C);T!==null&&(n.handleChecklistToggled(T),(I=a.onEvent)==null||I.call(a,"task.checklist_toggled",T))})}function u(){const V=d();l.value.forEach(b=>{V==null||V.leave(b)}),l.value=[],k(!1)}function f(){r.value=!0}function E(){r.value=!1,u(),r.value=!0}const B=e.computed(()=>{const V=[],b=e.toValue(t);b!=null&&b!==""&&V.push({name:`tasks.user.${String(b)}`,scope:"personal"});const y=a.entity===void 0?null:e.toValue(a.entity);return y!=null&&y.type!==""&&y.id!==""&&V.push({name:`tasks.entity.${y.type}.${String(y.id)}`,scope:"entity"}),(a.teamIds===void 0?[]:e.toValue(a.teamIds)??[]).forEach(C=>{C==null||C===""||V.push({name:`tasks.team.${String(C)}`,scope:"team"})}),V});return e.watch(()=>({shouldConnect:r.value,targetNames:B.value.map(V=>V.name).join("|"),userId:String(e.toValue(t)??"")}),({shouldConnect:V,userId:b})=>{u(),g(),!(!V||b==="")&&(B.value.forEach(y=>{c(y,b)}),l.value=B.value.map(y=>y.name),k(l.value.length>0))},{immediate:!0}),e.onUnmounted(()=>{u(),g()}),{isConnected:s,activeChannels:l,connect:f,disconnect:()=>{r.value=!1,u()},reconnect:E}}function $a(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 Ta(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 tt(t,a={}){const n=e.ref(null),o=e.ref(!1),l=e.ref(!1),r=e.ref(null),_=e.ref({}),s=e.ref("week");function v(c,u){_.value={..._.value,[c]:u}}async function k(c=s.value){const u=e.toValue(t);if(u==null||u==="")return n.value=null,null;o.value=!0,r.value=null;try{const f=await w().getDashboard(c);return n.value=f,s.value=f.widgets.my_stats.period,f}catch(f){throw r.value=f instanceof Error?f.message:String(f),f}finally{o.value=!1}}async function d(c){n.value===null&&await k(),v(c,!0),r.value=null;try{let u;switch(c){case"my-tasks-today":u=await w().getDashboardMyTasksToday();break;case"upcoming-this-week":u=await w().getDashboardUpcoming();break;case"overdue-tracker":u=await w().getDashboardOverdue();break;case"team-activity-feed":u=await w().getDashboardActivity();break;case"my-stats":u=await w().getDashboardStats(s.value),s.value=u.period;break;case"task-health-alerts":u=await w().getDashboardHealthAlerts();break}return n.value!==null&&(n.value={...n.value,widgets:{...n.value.widgets,[$a(c)]:u}}),u}catch(u){throw r.value=u instanceof Error?u.message:String(u),u}finally{v(c,!1)}}async function m(c,u){var f;l.value=!0,r.value=null;try{const E=await w().updateDashboardConfig({layout:c,preferences:u??((f=n.value)==null?void 0:f.config.preferences)??{}});return n.value!==null&&(n.value={...n.value,config:E}),E}catch(E){throw r.value=E instanceof Error?E.message:String(E),E}finally{l.value=!1}}function g(c){n.value!==null&&(n.value={...n.value,config:{...n.value.config,layout:{widgets:c}}})}async function h(c){s.value=c,await d("my-stats")}return e.watch(()=>e.toValue(t),c=>{if(c==null||c===""){n.value=null;return}(a.autoLoad??!0)&&k()},{immediate:!0}),et(t,{echo:a.echo,autoConnect:a.autoConnect??!0,onEvent:c=>{Ta(c).forEach(f=>{d(f)})}}),{dashboardData:n,loading:e.computed(()=>o.value),saving:e.computed(()=>l.value),error:e.computed(()=>r.value),widgetLoading:e.computed(()=>_.value),statsPeriod:e.computed(()=>s.value),loadDashboard:k,loadWidget:d,saveLayout:m,updateLayoutWidgets:g,setStatsPeriod:h}}function Ba(t){const a=ce();async function n(k){return k?a.fetchTask(k):null}async function o(k){var d;return(d=a.currentTask)!=null&&d.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 r(k){var d;return(d=a.currentTask)!=null&&d.id?a.snoozeEscalation(a.currentTask.id,k):null}async function _(k){var d;return(d=a.currentTask)!=null&&d.id?a.addChecklistItem(a.currentTask.id,k):null}async function s(k){var d;return(d=a.currentTask)!=null&&d.id?a.toggleChecklistItem(a.currentTask.id,k):null}async function v(k){var d;return(d=a.currentTask)!=null&&d.id?a.removeChecklistItem(a.currentTask.id,k):null}return t!==void 0&&e.watch(()=>e.toValue(t),async k=>{await n(k)},{immediate:!0}),{task:e.computed(()=>a.currentTask),loading:e.computed(()=>a.loading),error:e.computed(()=>a.error),loadTask:n,addComment:o,acknowledgeEscalation:l,snoozeEscalation:r,addChecklistItem:_,toggleChecklistItem:s,removeChecklistItem:v,completeTask:a.completeTask,reopenTask:a.reopenTask,cancelTask:a.cancelTask,updateTask:a.updateTask,deleteTask:a.deleteTask}}function Sa(){const t=Ne();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 Ca(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function pe(t){if(!Ca(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 Da(){return typeof window>"u"?null:window.Echo??null}function Ma(t,a={}){const n=e.ref([]),o=e.ref(null),l=e.ref(a.autoConnect??!0),r=e.computed(()=>o.value!==null);function _(){const m=(typeof a.echo=="function"?a.echo():a.echo)??Da();if(m===null)throw new Error("Laravel Echo is not available for task presence.");return m}function s(d){n.value=d}function v(){l.value=!0}function k(){l.value=!1,o.value!==null&&(_().leave(o.value),o.value=null),s([])}return e.watch(()=>{const d=e.toValue(t),m=d==null?null:String(d);return l.value&&m!==""?`presence-tasks.viewing.${m}`:null},(d,m)=>{if(typeof m=="string"&&m!==d&&(_().leave(m),o.value=null,s([])),d===null||d===m)return;_().join(d).here(h=>{s(h.map(pe).filter(c=>c!==null))}).joining(h=>{const c=pe(h);c===null||n.value.some(u=>u.id===c.id)||s([...n.value,c])}).leaving(h=>{const c=pe(h);c!==null&&s(n.value.filter(u=>u.id!==c.id))}),o.value=d},{immediate:!0}),e.onUnmounted(()=>{o.value!==null&&_().leave(o.value)}),{viewers:n,isConnected:r,connect:v,disconnect:k}}function Ia(){const t=ce(),a=Ne();async function n(){const s=await t.fetchSavedFilters();if(a.activeSavedFilterId===null){const v=s.find(k=>k.is_default);v!==void 0&&o(v)}return s}function o(s){const v={...s.filters,page:1,per_page:s.filters.per_page??a.filters.per_page??15};return a.setFilters(v),a.setActiveSavedFilter(s.id),v}async function l(s){const v=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(v.id),v}async function r(s,v){const k=await t.updateSavedFilterRecord(s,v);return a.activeSavedFilterId===s&&v.filters!==void 0&&o(k),k}async function _(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:r,deleteSavedFilter:_}}const Fa={class:"stats-widget"},Aa={class:"stats-widget__toggle"},za=["onClick"],La={class:"stats-widget__cards"},Ra={class:"stats-widget__footer"},Ua=e.defineComponent({__name:"MyStatsWidget",props:{stats:{}},emits:["update:period"],setup(t,{emit:a}){const n=a;function o(r){return r==="up"?"↑":r==="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(r,_)=>(e.openBlock(),e.createElementBlock("section",Fa,[e.createElementVNode("header",Aa,[(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}),onClick:v=>n("update:period",s)},e.toDisplayString(s),11,za)),64))]),e.createElementVNode("div",La,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,s=>e.createElementVNode("article",{key:s.key,class:"stats-widget__card"},[e.createElementVNode("small",null,e.toDisplayString(s.label),1),e.createElementVNode("strong",null,e.toDisplayString(t.stats.current[s.key]),1),e.createElementVNode("span",null,e.toDisplayString(o(t.stats.trends[s.key]))+" vs previous",1)])),64))]),e.createElementVNode("footer",Ra,e.toDisplayString(t.stats.current.streak_days??0)+" day streak ",1)]))}}),M=(t,a)=>{const n=t.__vccOpts||t;for(const[o,l]of a)n[o]=l;return n},at=M(Ua,[["__scopeId","data-v-163981e9"]]),Pa={draft:"Draft",open:"Open",in_progress:"In Progress",blocked:"Blocked",under_review:"Under Review",complete:"Complete",cancelled:"Cancelled"},Oa={none:"None",low:"Low",medium:"Medium",high:"High",urgent:"Urgent",critical:"Critical"},Wa={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"},Ha={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"]},Ya={none:"·",low:"↓",medium:"–",high:"↑",urgent:"⇈",critical:"!"},xa={none:"is-none",low:"is-low",medium:"is-medium",high:"is-high",urgent:"is-urgent",critical:"is-critical"},ja={reminder:"Reminder",warning:"Warning",due_now:"Due Now",overdue:"Overdue",escalated:"Escalated",critical:"Critical"};function be(t){return Pa[t]}function qa(t,a){return Ha[t].includes(a)}function Ie(t,a){return!(!qa(t.status,a)||a==="in_progress"&&t.has_unresolved_blockers===!0)}function Ka(t){return Wa[t]}function Qa(t){return Oa[t]}function Ga(t){return Ya[t]}function Ja(t){return xa[t]}function Za(t){return{none:"#94a3b8",low:"#0f766e",medium:"#2563eb",high:"#d97706",urgent:"#dc2626",critical:"#7f1d1d"}[t]}function Xa(t){return t?ja[t]:"No escalation"}function Te(t){return t?new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric",year:"numeric"}).format(new Date(t)):"No due date"}function W(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 X(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 r=new Intl.RelativeTimeFormat("en-US",{numeric:"auto"});if(Math.abs(l)<60)return r.format(l,"minute");const _=Math.round(l/60);if(Math.abs(_)<24)return r.format(_,"hour");const s=Math.round(_/24);return r.format(s,"day")}function nt(t){return t.description?t.description:t.action.replace(/_/g," ")}const re=[{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"}],en=["America/New_York","America/Chicago","America/Denver","America/Los_Angeles","America/Phoenix","UTC"],ie=new Map(re.map(t=>[t.value,t.label])),Fe=re.map(t=>t.value),tn=new Map([[1,"first"],[2,"second"],[3,"third"],[4,"fourth"],[-1,"last"]]);function Z(t,a=1){const n=typeof t=="number"?t:Number.parseInt(String(t??""),10);return Number.isFinite(n)&&n>0?n:a}function an(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 lt(t){return[...t].sort((a,n)=>Fe.indexOf(a)-Fe.indexOf(n))}function Ae(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 nn(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 ae(t){return`FREQ=DAILY;INTERVAL=${Z(t)}`}function ln(t,a){const n=lt(a);return`FREQ=WEEKLY;INTERVAL=${Z(t)};BYDAY=${n.join(",")}`}function on(t,a){const n=Math.min(Math.max(Z(a),1),31);return`FREQ=MONTHLY;INTERVAL=${Z(t)};BYMONTHDAY=${n}`}function sn(t,a,n){const o=[1,2,3,4,-1].includes(n)?n:1;return`FREQ=MONTHLY;INTERVAL=${Z(t)};BYDAY=${a};BYSETPOS=${o}`}function ot(t){const a=t.trim().toUpperCase(),n=an(a),o=n.get("FREQ"),l=Z(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 r=lt((n.get("BYDAY")??"").split(",").filter(_=>ie.has(_)));if(r.length>0)return{mode:"weekly",interval:l,weeklyDays:r,monthlyMode:"day_of_month",monthlyDay:1,monthlyWeekday:"MO",monthlySetPosition:1,raw:a}}if(o==="MONTHLY"){const r=Number.parseInt(n.get("BYMONTHDAY")??"",10);if(Number.isFinite(r))return{mode:"monthly",interval:l,weeklyDays:["MO"],monthlyMode:"day_of_month",monthlyDay:Math.min(Math.max(r,1),31),monthlyWeekday:"MO",monthlySetPosition:1,raw:a};const _=n.get("BYDAY"),s=Number.parseInt(n.get("BYSETPOS")??"",10);if(_!==void 0&&ie.has(_)&&Number.isFinite(s))return{mode:"monthly",interval:l,weeklyDays:["MO"],monthlyMode:"weekday",monthlyDay:1,monthlyWeekday:_,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 rn(t){const a=ot(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 r=a.weeklyDays.map(_=>ie.get(_)).filter(_=>typeof _=="string");return a.interval===1?`Every ${Ae(r)}`:a.interval===2&&r.length===1?`Every other ${r[0]??"week"}`:`Every ${a.interval} weeks on ${Ae(r)}`}if(a.monthlyMode==="day_of_month"){const r=a.interval===1?"month":`${a.interval} months`;return`${nn(a.monthlyDay)} of every ${r}`}const n=ie.get(a.monthlyWeekday)??a.monthlyWeekday,o=tn.get(a.monthlySetPosition)??`${a.monthlySetPosition}th`,l=a.interval===1?"month":`${a.interval} months`;return`${o} ${n} of every ${l}`}const dn=["title"],cn={class:"task-priority-icon__glyph","aria-hidden":"true"},un={key:0,class:"task-priority-icon__label"},mn=e.defineComponent({__name:"TaskPriorityIcon",props:{priority:{},compact:{type:Boolean}},setup(t){const a=t,n=e.computed(()=>Qa(a.priority)),o=e.computed(()=>Ga(a.priority)),l=e.computed(()=>Ja(a.priority));return(r,_)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["task-priority-icon",[l.value,{compact:t.compact}]]),title:n.value},[e.createElementVNode("span",cn,e.toDisplayString(o.value),1),t.compact?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("span",un,e.toDisplayString(n.value),1))],10,dn))}}),ee=M(mn,[["__scopeId","data-v-970c450e"]]),kn=["data-status"],pn=e.defineComponent({__name:"TaskStatusBadge",props:{status:{}},setup(t){const a=t,n=e.computed(()=>be(a.status)),o=e.computed(()=>Ka(a.status));return(l,r)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["task-status-badge",o.value]),"data-status":t.status},e.toDisplayString(n.value),11,kn))}}),te=M(pn,[["__scopeId","data-v-6b01d2ac"]]),_n={class:"dashboard-widget"},yn={key:0,class:"dashboard-widget__empty"},fn={key:1,class:"dashboard-widget__list"},vn=["onClick"],gn={class:"dashboard-widget__task-main"},bn={class:"dashboard-widget__task-meta"},hn={class:"dashboard-widget__footer"},En=e.defineComponent({__name:"MyTasksToday",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const n=a;return(o,l)=>(e.openBlock(),e.createElementBlock("section",_n,[t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",yn,[...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",fn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,r=>(e.openBlock(),e.createElementBlock("li",{key:r.id},[e.createElementVNode("button",{type:"button",class:"dashboard-widget__task",onClick:_=>n("select-task",r.id)},[e.createElementVNode("div",gn,[e.createVNode(ee,{priority:r.priority,compact:""},null,8,["priority"]),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",bn,[e.createVNode(te,{status:r.status},null,8,["status"]),e.createElementVNode("span",{class:e.normalizeClass({"is-overdue":r.is_overdue})},e.toDisplayString(e.unref(X)(r.due_at)),3)])],8,vn)]))),128))])),e.createElementVNode("footer",hn,e.toDisplayString(t.widget.summary.due_today??0)+" due today, "+e.toDisplayString(t.widget.summary.overdue??0)+" overdue ",1)]))}}),st=M(En,[["__scopeId","data-v-88b31c2a"]]),Vn={class:"overdue-tracker"},Nn={key:0,class:"overdue-tracker__empty"},wn={key:1,class:"overdue-tracker__list"},$n=["onClick"],Tn={class:"overdue-tracker__meta"},Bn=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 r=Math.abs((Date.now()-new Date(l.due_at).getTime())/36e5);return r>=72?"is-critical":r>=24?"is-high":"is-medium"}return(l,r)=>(e.openBlock(),e.createElementBlock("section",Vn,[t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",Nn,"No overdue tasks.")):(e.openBlock(),e.createElementBlock("ul",wn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,_=>{var s;return e.openBlock(),e.createElementBlock("li",{key:_.id},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["overdue-tracker__row",o(_)]),onClick:v=>n("select-task",_.id)},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(_.display_number_formatted),1),e.createElementVNode("p",null,e.toDisplayString(_.title),1)]),e.createElementVNode("div",Tn,[e.createElementVNode("span",null,e.toDisplayString(e.unref(X)(_.due_at)),1),e.createElementVNode("small",null,e.toDisplayString(((s=_.primary_assignee)==null?void 0:s.name)??"Unassigned"),1)])],10,$n)])}),128))]))]))}}),rt=M(Bn,[["__scopeId","data-v-c28df1f8"]]),Sn={class:"health-alerts"},Cn={key:0,class:"health-alerts__empty"},Dn={class:"health-alerts__card"},Mn=["onClick"],In={class:"health-alerts__actions"},Fn=["onClick"],An=["onClick"],zn=e.defineComponent({__name:"TaskHealthAlerts",props:{widget:{}},emits:["select-task","action"],setup(t,{emit:a}){const n=t,o=a,l=e.ref({}),r=e.computed(()=>{const s=Date.now();return n.widget.items.filter(v=>(l.value[v.task.id]??0)<s).flatMap(v=>v.issues.map(k=>({issue:k,alert:v}))).reduce((v,k)=>{const d=k.issue.type;return v[d]=[...v[d]??[],k],v},{})});function _(s){l.value={...l.value,[s]:Date.now()+1440*60*1e3}}return(s,v)=>(e.openBlock(),e.createElementBlock("section",Sn,[Object.keys(r.value).length===0?(e.openBlock(),e.createElementBlock("div",Cn,"No tasks need attention.")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,(k,d)=>{var m;return e.openBlock(),e.createElementBlock("article",{key:d,class:"health-alerts__group"},[e.createElementVNode("header",null,e.toDisplayString((m=k[0])==null?void 0:m.issue.label),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k,g=>(e.openBlock(),e.createElementBlock("li",{key:`${d}-${g.alert.task.id}`},[e.createElementVNode("div",Dn,[e.createElementVNode("button",{type:"button",class:"health-alerts__task",onClick:h=>o("select-task",g.alert.task.id)},[e.createElementVNode("strong",null,e.toDisplayString(g.alert.task.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(g.alert.task.title),1)],8,Mn),e.createElementVNode("p",null,e.toDisplayString(g.issue.message),1),e.createElementVNode("div",In,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.issue.suggested_actions,h=>(e.openBlock(),e.createElementBlock("button",{key:h,type:"button",onClick:c=>o("action",{taskId:g.alert.task.id,action:h})},e.toDisplayString(h.replace(/_/g," ")),9,Fn))),128)),e.createElementVNode("button",{type:"button",class:"secondary",onClick:h=>_(g.alert.task.id)},"Snooze 24h",8,An)])])]))),128))])])}),128))]))}}),it=M(zn,[["__scopeId","data-v-6ac7d17e"]]),Ln={class:"activity-feed"},Rn={class:"activity-feed__header"},Un={key:0,class:"activity-feed__empty"},Pn={key:1,class:"activity-feed__list"},On={class:"activity-feed__item"},Wn={class:"activity-feed__avatar"},Hn={class:"activity-feed__content"},Yn=["onClick"],xn=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",Ln,[e.createElementVNode("header",Rn,[e.createElementVNode("strong",null,e.toDisplayString(t.scope==="team"?"Team feed":"My feed"),1),e.createElementVNode("span",null,e.toDisplayString(t.widget.summary.count??t.widget.items.length)+" items",1)]),t.widget.items.length===0?(e.openBlock(),e.createElementBlock("div",Un,"No recent activity.")):(e.openBlock(),e.createElementBlock("ul",Pn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.items,r=>{var _,s,v;return e.openBlock(),e.createElementBlock("li",{key:r.id},[e.createElementVNode("div",On,[e.createElementVNode("div",Wn,e.toDisplayString(((s=(_=r.user)==null?void 0:_.name)==null?void 0:s.slice(0,1))??"?"),1),e.createElementVNode("div",Hn,[e.createElementVNode("p",null,[e.createElementVNode("strong",null,e.toDisplayString(((v=r.user)==null?void 0:v.name)??"System"),1),e.createTextVNode(" "+e.toDisplayString(e.unref(nt)(r))+" ",1),r.task?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"activity-feed__task-link",onClick:k=>n("select-task",r.task.id)},e.toDisplayString(r.task.display_number_formatted),9,Yn)):e.createCommentVNode("",!0)]),e.createElementVNode("small",null,e.toDisplayString(e.unref(X)(r.created_at)),1)])])])}),128))]))]))}}),dt=M(xn,[["__scopeId","data-v-5bdbe1cf"]]),jn={class:"upcoming-grid"},qn={key:0,class:"upcoming-grid__empty"},Kn={key:1},Qn=["onClick"],Gn=e.defineComponent({__name:"UpcomingThisWeek",props:{widget:{}},emits:["select-task"],setup(t,{emit:a}){const n=a;return(o,l)=>(e.openBlock(),e.createElementBlock("section",jn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.widget.days,r=>(e.openBlock(),e.createElementBlock("article",{key:r.date,class:e.normalizeClass(["upcoming-grid__column",{"is-today":r.is_today}])},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(r.label),1),e.createElementVNode("span",null,e.toDisplayString(r.tasks.length),1)]),r.tasks.length===0?(e.openBlock(),e.createElementBlock("div",qn,"No tasks")):(e.openBlock(),e.createElementBlock("ul",Kn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.tasks,_=>(e.openBlock(),e.createElementBlock("li",{key:_.id},[e.createElementVNode("button",{type:"button",onClick:s=>n("select-task",_.id)},[e.createElementVNode("strong",null,e.toDisplayString(_.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(_.title),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(X)(_.due_at)),1)],8,Qn)]))),128))]))],2))),128))]))}}),ct=M(Gn,[["__scopeId","data-v-510a9e8a"]]),Jn={class:"widget-grid"},Zn=["onDragstart","onDrop"],Xn=e.defineComponent({__name:"WidgetGrid",props:{widgets:{}},emits:["update:widgets"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(null),r=e.computed(()=>[...n.widgets].filter(m=>m.visible!==!1).sort((m,g)=>m.y-g.y||m.x-g.x));function _(m){o("update:widgets",m(n.widgets.map(g=>({...g,...g.settings?{settings:{...g.settings}}:{}}))))}function s(m,g){m!==g&&_(h=>{const c=h.find(f=>f.id===m),u=h.find(f=>f.id===g);return c===void 0||u===void 0||([c.x,u.x]=[u.x,c.x],[c.y,u.y]=[u.y,c.y]),h})}function v(m,g){_(h=>h.map(c=>c.id!==m?c:g==="left"?{...c,x:Math.max(0,c.x-1)}:g==="right"?{...c,x:Math.min(11,c.x+1)}:g==="up"?{...c,y:Math.max(0,c.y-1)}:{...c,y:Math.max(0,c.y+1)}))}function k(m,g){_(h=>h.map(c=>c.id===m?{...c,w:Math.min(12,Math.max(2,c.w+g))}:c))}function d(m){return{gridColumn:`${m.x+1} / span ${m.w}`,gridRow:`${m.y+1} / span ${m.h}`}}return(m,g)=>(e.openBlock(),e.createElementBlock("div",Jn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,h=>(e.openBlock(),e.createElementBlock("article",{key:h.id,class:"widget-grid__item",style:e.normalizeStyle(d(h)),draggable:"true",onDragstart:c=>l.value=h.id,onDragend:g[0]||(g[0]=c=>l.value=null),onDragover:g[1]||(g[1]=e.withModifiers(()=>{},["prevent"])),onDrop:c=>l.value?s(l.value,h.id):null},[e.renderSlot(m.$slots,"default",{widget:h,move:c=>v(h.id,c),resize:c=>k(h.id,c)},void 0,!0)],44,Zn))),128))]))}}),ut=M(Xn,[["__scopeId","data-v-69c55936"]]),el={class:"task-dashboard"},tl={class:"task-dashboard__header"},al={class:"task-dashboard__eyebrow"},nl={key:0,class:"task-dashboard__error"},ll={key:1,class:"task-dashboard__loading"},ol={key:2,class:"task-dashboard__hidden"},sl=["onClick"],rl={class:"task-dashboard__panel"},il={class:"task-dashboard__panel-header"},dl={key:0},cl={class:"task-dashboard__panel-controls"},ul=["onClick"],ml=["onClick"],kl=["onClick"],pl=["onClick"],_l=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=tt(e.computed(()=>n.userId),{echo:n.echo,autoConnect:n.autoConnect??!0}),r=l.dashboardData,_=l.loading,s=l.error,v=l.widgetLoading,k=e.computed(()=>{var f;return((f=l.dashboardData.value)==null?void 0:f.config.layout.widgets.filter(E=>E.visible===!1))??[]});let d;function m(f){var E;return{"my-tasks-today":"My Tasks Today","upcoming-this-week":"Upcoming This Week","overdue-tracker":"Overdue Tracker","team-activity-feed":((E=l.dashboardData.value)==null?void 0:E.scope)==="team"?"Team Activity":"My Activity","my-stats":"My Stats","task-health-alerts":"Task Health Alerts"}[f]??f}function g(){l.dashboardData.value!==null&&(d!==void 0&&clearTimeout(d),d=setTimeout(()=>{l.dashboardData.value!==null&&l.saveLayout(l.dashboardData.value.config.layout)},300))}function h(f){l.updateLayoutWidgets(f),g()}function c(f){var B;const E=(B=l.dashboardData.value)==null?void 0:B.config.layout.widgets.map(V=>V.id===f?{...V,visible:!0}:V);E!==void 0&&h(E)}function u(f){o("select-task",f)}return e.onBeforeUnmount(()=>{d!==void 0&&clearTimeout(d)}),(f,E)=>{var B;return e.openBlock(),e.createElementBlock("section",el,[e.createElementVNode("header",tl,[e.createElementVNode("div",null,[e.createElementVNode("p",al,e.toDisplayString(((B=e.unref(r))==null?void 0:B.scope)==="team"?"Operations command center":"Personal command center"),1),E[2]||(E[2]=e.createElementVNode("h2",null,"Task Dashboard",-1))]),e.createElementVNode("button",{type:"button",class:"task-dashboard__refresh",onClick:E[0]||(E[0]=V=>e.unref(l).loadDashboard())}," Refresh ")]),e.unref(s)?(e.openBlock(),e.createElementBlock("p",nl,e.toDisplayString(e.unref(s)),1)):e.unref(_)&&e.unref(r)===null?(e.openBlock(),e.createElementBlock("p",ll,"Loading dashboard…")):e.createCommentVNode("",!0),k.value.length>0?(e.openBlock(),e.createElementBlock("div",ol,[E[3]||(E[3]=e.createElementVNode("span",null,"Hidden widgets",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,V=>(e.openBlock(),e.createElementBlock("button",{key:V.id,type:"button",onClick:b=>c(V.id)}," Show "+e.toDisplayString(m(V.id)),9,sl))),128))])):e.createCommentVNode("",!0),e.unref(r)?(e.openBlock(),e.createBlock(ut,{key:3,widgets:e.unref(r).config.layout.widgets,"onUpdate:widgets":h},{default:e.withCtx(({widget:V,move:b,resize:y})=>[e.createElementVNode("section",rl,[e.createElementVNode("header",il,[e.createElementVNode("div",null,[e.createElementVNode("h3",null,e.toDisplayString(m(V.id)),1),e.unref(v)[V.id]?(e.openBlock(),e.createElementBlock("small",dl,"Refreshing…")):e.createCommentVNode("",!0)]),e.createElementVNode("div",cl,[e.createElementVNode("button",{type:"button","aria-label":"Move left",onClick:N=>b("left")},"←",8,ul),e.createElementVNode("button",{type:"button","aria-label":"Move right",onClick:N=>b("right")},"→",8,ml),e.createElementVNode("button",{type:"button","aria-label":"Grow widget",onClick:N=>y(1)},"+",8,kl),e.createElementVNode("button",{type:"button","aria-label":"Shrink widget",onClick:N=>y(-1)},"−",8,pl)])]),V.id==="my-tasks-today"?(e.openBlock(),e.createBlock(st,{key:0,widget:e.unref(r).widgets.my_tasks_today,onSelectTask:u},null,8,["widget"])):V.id==="upcoming-this-week"?(e.openBlock(),e.createBlock(ct,{key:1,widget:e.unref(r).widgets.upcoming_this_week,onSelectTask:u},null,8,["widget"])):V.id==="overdue-tracker"?(e.openBlock(),e.createBlock(rt,{key:2,widget:e.unref(r).widgets.overdue,onSelectTask:u},null,8,["widget"])):V.id==="team-activity-feed"?(e.openBlock(),e.createBlock(dt,{key:3,widget:e.unref(r).widgets.activity,scope:e.unref(r).scope,onSelectTask:u},null,8,["widget","scope"])):V.id==="my-stats"?(e.openBlock(),e.createBlock(at,{key:4,stats:e.unref(r).widgets.my_stats,"onUpdate:period":e.unref(l).setStatsPeriod},null,8,["stats","onUpdate:period"])):V.id==="task-health-alerts"?(e.openBlock(),e.createBlock(it,{key:5,widget:e.unref(r).widgets.health_alerts,onSelectTask:u,onAction:E[1]||(E[1]=N=>o("widget-action",N))},null,8,["widget"])):e.createCommentVNode("",!0)])]),_:1},8,["widgets"])):e.createCommentVNode("",!0)])}}}),yl=M(_l,[["__scopeId","data-v-c5b174cf"]]),fl={key:0,class:"escalation-badge__icon","aria-hidden":"true"},vl={key:1,class:"escalation-badge__suffix"},gl=e.defineComponent({__name:"EscalationBadge",props:{tier:{},acknowledgedAt:{},snoozedUntil:{},compact:{type:Boolean}},setup(t){const a=t,n=e.computed(()=>Xa(a.tier)),o=e.computed(()=>a.tier?`tier-${a.tier}`:"tier-none"),l=e.computed(()=>a.snoozedUntil?"Snoozed":a.acknowledgedAt?"Ack":null),r=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(_,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}]])},[r.value?(e.openBlock(),e.createElementBlock("span",fl,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(n.value),1),l.value?(e.openBlock(),e.createElementBlock("span",vl,e.toDisplayString(l.value),1)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)}}),ue=M(gl,[["__scopeId","data-v-f6e26022"]]),bl=["onKeydown"],hl={class:"task-card__header"},El={class:"task-card__identity"},Vl={class:"task-card__number"},Nl={class:"task-card__title"},wl={class:"task-card__meta"},$l={key:0,class:"task-card__lock","aria-label":"Blocked task"},Tl={key:0,class:"task-card__description"},Bl={class:"task-card__footer"},Sl={class:"task-card__person"},Cl={class:"task-card__person-value"},Dl={class:"task-card__date"},Ml={class:"task-card__person-value"},Il={key:1,class:"task-card__progress"},Fl={class:"task-card__progress-bar"},Al={class:"task-card__progress-label"},zl={key:2,class:"task-card__tags"},Ll=e.defineComponent({__name:"TaskCard",props:{task:{},compact:{type:Boolean}},emits:["select"],setup(t,{emit:a}){const n=t,o=a,l=e.computed(()=>Te(n.task.due_at??null)),r=e.computed(()=>{var d;return((d=n.task.tags)==null?void 0:d.slice(0,n.compact?2:4))??[]}),_=e.computed(()=>n.task.has_unresolved_blockers===!0||n.task.status==="blocked"),s=e.computed(()=>{const d=n.task.checklist_progress;return!d||d.total===0?0:Math.min(100,Math.round(d.completed/d.total*100))}),v=e.computed(()=>n.task.current_escalation_tier?`escalation-${n.task.current_escalation_tier}`:"");function k(){o("select",n.task.id)}return(d,m)=>{var g;return e.openBlock(),e.createElementBlock("article",{class:e.normalizeClass(["task-card",[v.value,{compact:t.compact,overdue:t.task.is_overdue}]]),role:"button",tabindex:"0",onClick:k,onKeydown:e.withKeys(e.withModifiers(k,["prevent"]),["enter"])},[e.createElementVNode("header",hl,[e.createElementVNode("div",El,[e.createElementVNode("span",Vl,e.toDisplayString(t.task.display_number_formatted),1),e.createElementVNode("h3",Nl,e.toDisplayString(t.task.title),1)]),e.createElementVNode("div",wl,[_.value?(e.openBlock(),e.createElementBlock("span",$l," Lock ")):e.createCommentVNode("",!0),e.createVNode(ue,{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(ee,{priority:t.task.priority,compact:""},null,8,["priority"]),e.createVNode(te,{status:t.task.status},null,8,["status"])])]),t.task.description&&!t.compact?(e.openBlock(),e.createElementBlock("p",Tl,e.toDisplayString(t.task.description),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Bl,[e.createElementVNode("div",Sl,[m[0]||(m[0]=e.createElementVNode("span",{class:"task-card__person-label"},"Assignee",-1)),e.createElementVNode("span",Cl,e.toDisplayString(((g=t.task.primary_assignee)==null?void 0:g.name)??"Unassigned"),1)]),e.createElementVNode("div",Dl,[m[1]||(m[1]=e.createElementVNode("span",{class:"task-card__person-label"},"Due",-1)),e.createElementVNode("span",Ml,e.toDisplayString(l.value),1)])]),t.task.checklist_progress&&t.task.checklist_progress.total>0?(e.openBlock(),e.createElementBlock("div",Il,[e.createElementVNode("div",Fl,[e.createElementVNode("div",{class:"task-card__progress-fill",style:e.normalizeStyle({width:`${s.value}%`})},null,4)]),e.createElementVNode("span",Al,e.toDisplayString(t.task.checklist_progress.completed)+"/"+e.toDisplayString(t.task.checklist_progress.total),1)])):e.createCommentVNode("",!0),r.value.length>0?(e.openBlock(),e.createElementBlock("ul",zl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,h=>(e.openBlock(),e.createElementBlock("li",{key:h.id,class:"task-card__tag"},[e.createElementVNode("span",{class:"task-card__tag-dot",style:e.normalizeStyle({backgroundColor:h.color??"#94a3b8"})},null,4),e.createTextVNode(" "+e.toDisplayString(h.name),1)]))),128))])):e.createCommentVNode("",!0)],42,bl)}}}),Be=M(Ll,[["__scopeId","data-v-bc76d632"]]),Rl={class:"task-board-view","aria-label":"Task board"},Ul={class:"task-board-view__header"},Pl={key:0,class:"task-board-view__error"},Ol={class:"task-board-view__columns"},Wl=["onDragover","onDrop"],Hl={class:"task-board-view__column-header"},Yl={class:"task-board-view__column-body"},xl={key:0,class:"task-board-view__empty"},jl=["onDragstart"],ql=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,r=e.ref([]),_=e.ref(null),s=e.ref(null),v=e.ref(null);e.watch(()=>o.tasks,f=>{r.value=f.map(E=>({...E}))},{immediate:!0,deep:!0});const k=e.computed(()=>o.visibleStatuses??n),d=e.computed(()=>({draft:r.value.filter(f=>f.status==="draft"),open:r.value.filter(f=>f.status==="open"),in_progress:r.value.filter(f=>f.status==="in_progress"),blocked:r.value.filter(f=>f.status==="blocked"),under_review:r.value.filter(f=>f.status==="under_review"),complete:r.value.filter(f=>f.status==="complete"),cancelled:r.value.filter(f=>f.status==="cancelled")}));function m(f,E){var B,V,b;_.value=f,v.value=null,(B=E.dataTransfer)==null||B.setData("text/plain",f),(b=(V=E.dataTransfer)==null?void 0:V.setDragImage)==null||b.call(V,E.currentTarget,20,20)}function g(){_.value=null,s.value=null}function h(){return r.value.find(f=>f.id===_.value)}function c(f){const E=h();return E===void 0?!1:Ie(E,f)}async function u(f){var V;const E=h();if(E===void 0){g();return}if(!Ie(E,f)){v.value=`Task ${E.display_number_formatted} cannot move to ${be(f)}.`,g();return}const B=E.status;E.status=f,l("status-change",{taskId:E.id,status:f});try{await((V=o.updateTaskStatus)==null?void 0:V.call(o,E.id,f))}catch(b){E.status=B,v.value=b instanceof Error?b.message:"Unable to update the task status."}finally{g()}}return(f,E)=>(e.openBlock(),e.createElementBlock("section",Rl,[e.createElementVNode("header",Ul,[E[2]||(E[2]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Board"),e.createElementVNode("p",null,"Drag tasks between status columns to keep work moving.")],-1)),v.value?(e.openBlock(),e.createElementBlock("p",Pl,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",Ol,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.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&&_.value!==null&&!c(B)}]),onDragover:e.withModifiers(V=>s.value=B,["prevent"]),onDragleave:E[1]||(E[1]=V=>s.value=null),onDrop:e.withModifiers(V=>u(B),["prevent"])},[e.createElementVNode("header",Hl,[e.createElementVNode("div",null,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(be)(B)),1),e.createElementVNode("span",null,e.toDisplayString(d.value[B].length),1)])]),e.createElementVNode("div",Yl,[d.value[B].length===0&&!t.loading?(e.openBlock(),e.createElementBlock("p",xl," Nothing here. ")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value[B],V=>(e.openBlock(),e.createElementBlock("div",{key:V.id,class:"task-board-view__card",draggable:"true",onDragstart:b=>m(V.id,b),onDragend:g},[e.createVNode(Be,{task:V,compact:"",onSelect:E[0]||(E[0]=b=>l("select-task",b))},null,8,["task"])],40,jl))),128))])],42,Wl))),128))])]))}}),Kl=M(ql,[["__scopeId","data-v-2eecbf77"]]),Ql={class:"task-bulk-action-bar","aria-label":"Bulk actions"},Gl={class:"task-bulk-action-bar__summary"},Jl={class:"task-bulk-action-bar__controls"},Zl=["disabled"],Xl={key:0},eo=["disabled"],to={key:1},ao=["disabled"],no={key:2},lo=["disabled"],oo={key:3},so=["disabled"],ro={key:4},io=["disabled"],co=["disabled"],uo={key:0,class:"task-bulk-action-bar__result"},mo=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"),r=e.ref("open"),_=e.ref("medium"),s=e.ref(""),v=e.ref(""),k=e.ref(""),d=e.computed(()=>l.value==="set_status"),m=e.computed(()=>l.value==="set_priority"),g=e.computed(()=>l.value==="assign"),h=e.computed(()=>l.value==="add_tag"||l.value==="remove_tag"),c=e.computed(()=>l.value==="complete"),u=e.computed(()=>n.result===null||n.result===void 0?"":`${n.result.success.length} succeeded, ${n.result.failed.length} failed`);function f(){const E={};d.value&&(E.status=r.value),m.value&&(E.priority=_.value),g.value&&(E.user_id=s.value),h.value&&(E.name=v.value),c.value&&k.value.trim()!==""&&(E.note=k.value.trim()),o("apply",{action:l.value,params:E})}return(E,B)=>(e.openBlock(),e.createElementBlock("section",Ql,[e.createElementVNode("div",Gl,[e.createElementVNode("strong",null,e.toDisplayString(t.selectedCount)+" selected",1),e.createElementVNode("button",{type:"button",onClick:B[0]||(B[0]=V=>o("clear"))},"Clear selection")]),e.createElementVNode("div",Jl,[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]=V=>l.value=V),disabled:t.busy},[...B[7]||(B[7]=[e.createStaticVNode('<option value="assign" data-v-1acf9910>Assign</option><option value="set_status" data-v-1acf9910>Set status</option><option value="set_priority" data-v-1acf9910>Set priority</option><option value="add_tag" data-v-1acf9910>Add tag</option><option value="remove_tag" data-v-1acf9910>Remove tag</option><option value="complete" data-v-1acf9910>Complete</option><option value="cancel" data-v-1acf9910>Cancel</option><option value="delete" data-v-1acf9910>Delete</option>',8)])],8,Zl),[[e.vModelSelect,l.value]])]),d.value?(e.openBlock(),e.createElementBlock("label",Xl,[B[10]||(B[10]=e.createElementVNode("span",null,"Status",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":B[2]||(B[2]=V=>r.value=V),disabled:t.busy},[...B[9]||(B[9]=[e.createStaticVNode('<option value="draft" data-v-1acf9910>Draft</option><option value="open" data-v-1acf9910>Open</option><option value="in_progress" data-v-1acf9910>In Progress</option><option value="blocked" data-v-1acf9910>Blocked</option><option value="under_review" data-v-1acf9910>Under Review</option><option value="complete" data-v-1acf9910>Complete</option><option value="cancelled" data-v-1acf9910>Cancelled</option>',7)])],8,eo),[[e.vModelSelect,r.value]])])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("label",to,[B[12]||(B[12]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":B[3]||(B[3]=V=>_.value=V),disabled:t.busy},[...B[11]||(B[11]=[e.createStaticVNode('<option value="none" data-v-1acf9910>None</option><option value="low" data-v-1acf9910>Low</option><option value="medium" data-v-1acf9910>Medium</option><option value="high" data-v-1acf9910>High</option><option value="urgent" data-v-1acf9910>Urgent</option><option value="critical" data-v-1acf9910>Critical</option>',6)])],8,ao),[[e.vModelSelect,_.value]])])):e.createCommentVNode("",!0),g.value?(e.openBlock(),e.createElementBlock("label",no,[B[13]||(B[13]=e.createElementVNode("span",null,"Assignee ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":B[4]||(B[4]=V=>s.value=V),type:"text",disabled:t.busy,placeholder:"user-123"},null,8,lo),[[e.vModelText,s.value]])])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createElementBlock("label",oo,[B[14]||(B[14]=e.createElementVNode("span",null,"Tag",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":B[5]||(B[5]=V=>v.value=V),type:"text",disabled:t.busy,placeholder:"warehouse"},null,8,so),[[e.vModelText,v.value]])])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("label",ro,[B[15]||(B[15]=e.createElementVNode("span",null,"Note",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":B[6]||(B[6]=V=>k.value=V),type:"text",disabled:t.busy,placeholder:"Optional completion note"},null,8,io),[[e.vModelText,k.value]])])):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",class:"task-bulk-action-bar__apply",disabled:t.busy,onClick:f}," Apply ",8,co)]),u.value?(e.openBlock(),e.createElementBlock("p",uo,e.toDisplayString(u.value),1)):e.createCommentVNode("",!0)]))}}),mt=M(mo,[["__scopeId","data-v-1acf9910"]]),ko={class:"task-calendar-view","aria-label":"Task calendar"},po={class:"task-calendar-view__header"},_o={class:"task-calendar-view__nav"},yo={class:"task-calendar-view__layout"},fo={class:"task-calendar-view__grid"},vo={class:"task-calendar-view__cell-header"},go={key:0,class:"task-calendar-view__dot-indicator"},bo=["onClick"],ho={class:"task-calendar-view__task-number"},Eo={class:"task-calendar-view__task-title"},Vo={class:"task-calendar-view__sidebar"},No={key:0},wo=["onClick"],$o=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 r(g){if(g instanceof Date)return new Date(g.getFullYear(),g.getMonth(),1);if(typeof g=="string"&&/^\d{4}-\d{2}/.test(g)){const[c,u]=g.slice(0,7).split("-");return new Date(Number(c),Number(u)-1,1)}const h=typeof g=="string"?new Date(g):new Date;return new Date(h.getFullYear(),h.getMonth(),1)}const _=e.ref(r(n.initialMonth)),s=e.computed(()=>new Intl.DateTimeFormat("en-US",{month:"long",year:"numeric"}).format(_.value)),v=e.computed(()=>{const g=new Date(_.value);return g.setDate(1-g.getDay()),Array.from({length:42},(h,c)=>{const u=new Date(g);u.setDate(g.getDate()+c);const f=u.toISOString().slice(0,10),E=n.tasks.filter(B=>{var V;return((V=B.due_at)==null?void 0:V.slice(0,10))===f});return{key:f,date:u,isCurrentMonth:u.getMonth()===_.value.getMonth(),tasks:E}})}),k=e.computed(()=>n.tasks.filter(g=>g.due_at===null));function d(){_.value=new Date(_.value.getFullYear(),_.value.getMonth()-1,1)}function m(){_.value=new Date(_.value.getFullYear(),_.value.getMonth()+1,1)}return(g,h)=>(e.openBlock(),e.createElementBlock("section",ko,[e.createElementVNode("header",po,[h[0]||(h[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",_o,[e.createElementVNode("button",{type:"button",onClick:d},"Previous"),e.createElementVNode("strong",null,e.toDisplayString(s.value),1),e.createElementVNode("button",{type:"button",onClick:m},"Next")])]),e.createElementVNode("div",yo,[e.createElementVNode("div",fo,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,c=>e.createElementVNode("div",{key:c,class:"task-calendar-view__weekday"},e.toDisplayString(c),1)),64)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,c=>(e.openBlock(),e.createElementBlock("article",{key:c.key,class:e.normalizeClass(["task-calendar-view__cell",{"is-muted":!c.isCurrentMonth}])},[e.createElementVNode("header",vo,[e.createElementVNode("span",null,e.toDisplayString(c.date.getDate()),1),c.tasks.length>3?(e.openBlock(),e.createElementBlock("span",go,"+"+e.toDisplayString(c.tasks.length-3),1)):e.createCommentVNode("",!0)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.tasks.slice(0,3),u=>(e.openBlock(),e.createElementBlock("button",{key:u.id,type:"button",class:e.normalizeClass(["task-calendar-view__task",{"is-overdue":u.is_overdue}]),style:e.normalizeStyle({"--task-calendar-priority":e.unref(Za)(u.priority)}),onClick:f=>o("select-task",u.id)},[e.createElementVNode("span",ho,e.toDisplayString(u.display_number_formatted),1),e.createElementVNode("span",Eo,e.toDisplayString(u.title),1)],14,bo))),128))],2))),128))]),e.createElementVNode("aside",Vo,[h[1]||(h[1]=e.createElementVNode("h3",null,"No Date",-1)),k.value.length===0?(e.openBlock(),e.createElementBlock("p",No,"Every task in this set has a due date.")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,c=>(e.openBlock(),e.createElementBlock("button",{key:c.id,type:"button",class:"task-calendar-view__sidebar-task",onClick:u=>o("select-task",c.id)},[e.createElementVNode("strong",null,e.toDisplayString(c.display_number_formatted),1),e.createElementVNode("span",null,e.toDisplayString(c.title),1),e.createElementVNode("small",null,e.toDisplayString(e.unref(Te)(c.due_at)),1)],8,wo))),128))])])]))}}),To=M($o,[["__scopeId","data-v-3ae0727b"]]),Bo={class:"task-filter-bar"},So={class:"task-filter-bar__topline"},Co={class:"task-filter-bar__search"},Do=["disabled"],Mo={class:"task-filter-bar__actions"},Io={key:0,class:"task-filter-bar__badge"},Fo={class:"task-filter-bar__grid"},Ao=["disabled"],zo=["selected","value"],Lo=["disabled"],Ro=["selected","value"],Uo=["value","disabled"],Po=["value","disabled"],Oo=["value","disabled"],Wo=["value","disabled"],Ho=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"],r=["none","low","medium","high","urgent","critical"],_=e.ref(n.modelValue.search??"");let s=null;e.watch(()=>n.modelValue.search,h=>{_.value=h??""}),e.onBeforeUnmount(()=>{s&&clearTimeout(s)});const v=e.computed(()=>Object.entries(n.modelValue).reduce((h,[c,u])=>c==="page"||c==="per_page"||c==="sort"||u==null||u===""||Array.isArray(u)&&u.length===0?h:h+1,0));function k(h,c){const u={...n.modelValue,page:1};c==null||c===""?delete u[h]:u[h]=c,o("update:modelValue",u)}function d(h,c){const u=c.target,f=Array.from(u.selectedOptions).map(E=>E.value);k(h,f.length>0?f:void 0)}function m(){s&&clearTimeout(s),s=setTimeout(()=>{k("search",_.value||void 0)},250)}function g(){_.value="",o("update:modelValue",{page:1,per_page:n.modelValue.per_page??15,sort:n.modelValue.sort??"-created_at"}),o("clear")}return(h,c)=>(e.openBlock(),e.createElementBlock("section",Bo,[e.createElementVNode("div",So,[e.createElementVNode("div",Co,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=u=>_.value=u),type:"search",disabled:t.loading,placeholder:"Search tasks",onInput:m},null,40,Do),[[e.vModelText,_.value]])]),e.createElementVNode("div",Mo,[e.createElementVNode("button",{type:"button",class:"task-filter-bar__save",onClick:c[1]||(c[1]=u=>o("save-current"))}," Save current filter "),e.createElementVNode("button",{type:"button",class:"task-filter-bar__clear",onClick:g},[c[8]||(c[8]=e.createTextVNode(" Clear all ",-1)),v.value>0?(e.openBlock(),e.createElementBlock("span",Io,e.toDisplayString(v.value),1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",Fo,[e.createElementVNode("label",null,[c[9]||(c[9]=e.createElementVNode("span",null,"Status",-1)),e.createElementVNode("select",{multiple:"",disabled:t.loading,onChange:c[2]||(c[2]=u=>d("status",u))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,u=>e.createElementVNode("option",{key:u,selected:Array.isArray(t.modelValue.status)?t.modelValue.status.includes(u):t.modelValue.status===u,value:u},e.toDisplayString(u),9,zo)),64))],40,Ao)]),e.createElementVNode("label",null,[c[10]||(c[10]=e.createElementVNode("span",null,"Priority",-1)),e.createElementVNode("select",{multiple:"",disabled:t.loading,onChange:c[3]||(c[3]=u=>d("priority",u))},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,u=>e.createElementVNode("option",{key:u,selected:Array.isArray(t.modelValue.priority)?t.modelValue.priority.includes(u):t.modelValue.priority===u,value:u},e.toDisplayString(u),9,Ro)),64))],40,Lo)]),e.createElementVNode("label",null,[c[11]||(c[11]=e.createElementVNode("span",null,"Assignee",-1)),e.createElementVNode("input",{value:t.modelValue.assignee??"",type:"text",disabled:t.loading,placeholder:"Assignee ID",onInput:c[4]||(c[4]=u=>k("assignee",u.target.value||void 0))},null,40,Uo)]),e.createElementVNode("label",null,[c[12]||(c[12]=e.createElementVNode("span",null,"Tag",-1)),e.createElementVNode("input",{value:t.modelValue.tag??"",type:"text",disabled:t.loading,placeholder:"Tag name",onInput:c[5]||(c[5]=u=>k("tag",u.target.value||void 0))},null,40,Po)]),e.createElementVNode("label",null,[c[13]||(c[13]=e.createElementVNode("span",null,"Due after",-1)),e.createElementVNode("input",{value:t.modelValue.due_after??"",type:"date",disabled:t.loading,onInput:c[6]||(c[6]=u=>k("due_after",u.target.value||void 0))},null,40,Oo)]),e.createElementVNode("label",null,[c[14]||(c[14]=e.createElementVNode("span",null,"Due before",-1)),e.createElementVNode("input",{value:t.modelValue.due_before??"",type:"date",disabled:t.loading,onInput:c[7]||(c[7]=u=>k("due_before",u.target.value||void 0))},null,40,Wo)])])]))}}),kt=M(Ho,[["__scopeId","data-v-55f1e294"]]),Yo={class:"recurring-form__grid"},xo={class:"recurring-form__field"},jo=["value","disabled"],qo=["value"],Ko={class:"recurring-form__field recurring-form__field--wide"},Qo=["disabled"],Go={class:"recurring-form__field recurring-form__field--wide"},Jo=["disabled"],Zo={class:"recurring-form__field"},Xo=["disabled"],es=["value"],ts={class:"recurring-form__field"},as=["disabled"],ns=["value"],ls={key:0,class:"recurring-form__panel recurring-form__field--wide"},os={class:"recurring-form__field"},ss=["disabled"],rs={key:1,class:"recurring-form__panel recurring-form__field--wide"},is={class:"recurring-form__field"},ds=["disabled"],cs={class:"recurring-form__field"},us={class:"recurring-form__day-grid"},ms=["disabled","onClick"],ks={key:2,class:"recurring-form__panel recurring-form__field--wide"},ps={class:"recurring-form__field"},_s=["disabled"],ys={class:"recurring-form__field"},fs=["disabled"],vs={key:0,class:"recurring-form__field"},gs=["disabled"],bs={class:"recurring-form__field"},hs=["disabled"],Es=["value"],Vs={class:"recurring-form__field"},Ns=["disabled"],ws=["value"],$s={key:3,class:"recurring-form__field recurring-form__field--wide"},Ts=["disabled"],Bs={class:"recurring-form__field recurring-form__field--wide recurring-form__preview"},Ss={"data-testid":"recurring-preview"},Cs={class:"recurring-form__field"},Ds=["disabled"],Ms={class:"recurring-form__field"},Is=["disabled"],Fs={class:"recurring-form__field"},As=["disabled"],zs={class:"recurring-form__field"},Ls=["disabled"],Rs=["value"],Us={class:"recurring-form__field"},Ps=["disabled"],Os={class:"recurring-form__field recurring-form__field--wide"},Ws=["disabled"],Hs={class:"recurring-form__toggles"},Ys=["disabled"],xs=["disabled"],js=["disabled"],qs=["disabled"],Ks={class:"recurring-form__actions"},Qs=["disabled"],Gs=e.defineComponent({__name:"RecurringTemplateForm",props:{recurring:{},templates:{},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"],r=[{value:1,label:"First"},{value:2,label:"Second"},{value:3,label:"Third"},{value:4,label:"Fourth"},{value:-1,label:"Last"}],_=[{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:ae(1)}),v=e.computed(()=>n.templates??[]),k=e.computed(()=>n.mode??"create"),d=e.computed(()=>k.value==="edit"?"Save recurring template":"Create recurring template");function m(){var N;const b=n.recurring;s.taskTemplateId=(b==null?void 0:b.task_template_id)??"",s.title=(b==null?void 0:b.title)??"",s.description=(b==null?void 0:b.description)??"",s.timezone=(b==null?void 0:b.timezone)??"America/New_York",s.taskableType=(b==null?void 0:b.taskable_type)??"",s.taskableId=(b==null?void 0:b.taskable_id)??"",s.primaryAssigneeId=(b==null?void 0:b.primary_assignee_id)??"",s.priority=(b==null?void 0:b.priority)??"none",s.dueOffsetHours=(b==null?void 0:b.due_offset_hours)===null||(b==null?void 0:b.due_offset_hours)===void 0?"":String(b.due_offset_hours),s.tags=((N=b==null?void 0:b.tags)==null?void 0:N.join(", "))??"",s.isActive=(b==null?void 0:b.is_active)??!0,s.skipHolidays=(b==null?void 0:b.skip_holidays)??!1,s.businessHoursOnly=(b==null?void 0:b.business_hours_only)??!1,s.chainMode=(b==null?void 0:b.chain_mode)??!1;const y=ot((b==null?void 0:b.rrule)??ae(1));s.scheduleMode=y.mode,s.dailyInterval=String(y.interval),s.weeklyInterval=String(y.interval),s.weeklyDays=y.weeklyDays,s.monthlyMode=y.monthlyMode,s.monthlyInterval=String(y.interval),s.monthlyDay=String(y.monthlyDay),s.monthlyWeekday=y.monthlyWeekday,s.monthlySetPosition=String(y.monthlySetPosition),s.rawRrule=y.raw||ae(1)}e.watch(()=>n.recurring,()=>{m()},{immediate:!0,deep:!0});const g=e.computed(()=>s.scheduleMode==="daily"?ae(Number.parseInt(s.dailyInterval,10)||1):s.scheduleMode==="weekly"?ln(Number.parseInt(s.weeklyInterval,10)||1,s.weeklyDays.length>0?s.weeklyDays:["MO"]):s.scheduleMode==="monthly"&&s.monthlyMode==="day_of_month"?on(Number.parseInt(s.monthlyInterval,10)||1,Number.parseInt(s.monthlyDay,10)||1):s.scheduleMode==="monthly"?sn(Number.parseInt(s.monthlyInterval,10)||1,s.monthlyWeekday,Number.parseInt(s.monthlySetPosition,10)||1):s.rawRrule.trim());e.watch(g,b=>{s.scheduleMode!=="custom"&&(s.rawRrule=b)},{immediate:!0});const h=e.computed(()=>s.scheduleMode==="custom"?s.rawRrule.trim():g.value),c=e.computed(()=>rn(h.value)),u=e.computed(()=>h.value.length>0&&(s.taskTemplateId.length>0||s.title.trim().length>0));function f(b){if(s.taskTemplateId=b,o("template-change",b||null),!b||k.value==="edit")return;const y=v.value.find(N=>N.id===b);y&&(s.title.trim()||(s.title=y.name),!s.description.trim()&&y.description&&(s.description=y.description))}function E(b){var y;f(((y=b.target)==null?void 0:y.value)??"")}function B(b){if(s.weeklyDays.includes(b)){s.weeklyDays=s.weeklyDays.filter(y=>y!==b);return}s.weeklyDays=[...s.weeklyDays,b]}function V(){var y;if(!u.value)return;const b=Number.parseInt(s.dueOffsetHours,10);o("submit",{task_template_id:s.taskTemplateId||null,title:s.title.trim()||null,description:s.description.trim()||null,rrule:h.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(b)?b:null,tags:s.tags.split(",").map(N=>N.trim()).filter(Boolean),is_active:s.isActive,skip_holidays:s.skipHolidays,business_hours_only:s.businessHoursOnly,chain_mode:s.chainMode,metadata:((y=n.recurring)==null?void 0:y.metadata)??null})}return(b,y)=>(e.openBlock(),e.createElementBlock("form",{class:"recurring-form",onSubmit:e.withModifiers(V,["prevent"])},[e.createElementVNode("div",Yo,[e.createElementVNode("label",xo,[y[24]||(y[24]=e.createElementVNode("span",null,"Template",-1)),e.createElementVNode("select",{"data-testid":"recurring-template-select",value:s.taskTemplateId,disabled:t.submitting,onChange:E},[y[23]||(y[23]=e.createElementVNode("option",{value:""},"Standalone recurring task",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,N=>(e.openBlock(),e.createElementBlock("option",{key:N.id,value:N.id},e.toDisplayString(N.name),9,qo))),128))],40,jo)]),e.createElementVNode("label",Ko,[y[25]||(y[25]=e.createElementVNode("span",null,"Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[0]||(y[0]=N=>s.title=N),"data-testid":"recurring-title-input",type:"text",disabled:t.submitting,placeholder:"Required when no template is linked"},null,8,Qo),[[e.vModelText,s.title]])]),e.createElementVNode("label",Go,[y[26]||(y[26]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":y[1]||(y[1]=N=>s.description=N),rows:"4",disabled:t.submitting},null,8,Jo),[[e.vModelText,s.description]])]),e.createElementVNode("label",Zo,[y[27]||(y[27]=e.createElementVNode("span",null,"Schedule type",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[2]||(y[2]=N=>s.scheduleMode=N),"data-testid":"recurring-schedule-mode",disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(_,N=>e.createElementVNode("option",{key:N.value,value:N.value},e.toDisplayString(N.label),9,es)),64))],8,Xo),[[e.vModelSelect,s.scheduleMode]])]),e.createElementVNode("label",ts,[y[28]||(y[28]=e.createElementVNode("span",null,"Timezone",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[3]||(y[3]=N=>s.timezone=N),disabled:t.submitting},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(en),N=>(e.openBlock(),e.createElementBlock("option",{key:N,value:N},e.toDisplayString(N),9,ns))),128))],8,as),[[e.vModelSelect,s.timezone]])]),s.scheduleMode==="daily"?(e.openBlock(),e.createElementBlock("section",ls,[e.createElementVNode("label",os,[y[29]||(y[29]=e.createElementVNode("span",null,"Every N days",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[4]||(y[4]=N=>s.dailyInterval=N),"data-testid":"recurring-daily-interval",type:"number",min:"1",disabled:t.submitting},null,8,ss),[[e.vModelText,s.dailyInterval]])])])):s.scheduleMode==="weekly"?(e.openBlock(),e.createElementBlock("section",rs,[e.createElementVNode("label",is,[y[30]||(y[30]=e.createElementVNode("span",null,"Every N weeks",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[5]||(y[5]=N=>s.weeklyInterval=N),type:"number",min:"1",disabled:t.submitting},null,8,ds),[[e.vModelText,s.weeklyInterval]])]),e.createElementVNode("div",cs,[y[31]||(y[31]=e.createElementVNode("span",null,"Days",-1)),e.createElementVNode("div",us,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(re),N=>(e.openBlock(),e.createElementBlock("button",{key:N.value,class:e.normalizeClass(["recurring-form__day-chip",{"is-active":s.weeklyDays.includes(N.value)}]),disabled:t.submitting,type:"button",onClick:C=>B(N.value)},e.toDisplayString(N.shortLabel),11,ms))),128))])])])):s.scheduleMode==="monthly"?(e.openBlock(),e.createElementBlock("section",ks,[e.createElementVNode("label",ps,[y[32]||(y[32]=e.createElementVNode("span",null,"Every N months",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[6]||(y[6]=N=>s.monthlyInterval=N),type:"number",min:"1",disabled:t.submitting},null,8,_s),[[e.vModelText,s.monthlyInterval]])]),e.createElementVNode("label",ys,[y[34]||(y[34]=e.createElementVNode("span",null,"Monthly pattern",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[7]||(y[7]=N=>s.monthlyMode=N),"data-testid":"recurring-monthly-mode",disabled:t.submitting},[...y[33]||(y[33]=[e.createElementVNode("option",{value:"day_of_month"},"Day of month",-1),e.createElementVNode("option",{value:"weekday"},"Nth weekday",-1)])],8,fs),[[e.vModelSelect,s.monthlyMode]])]),s.monthlyMode==="day_of_month"?(e.openBlock(),e.createElementBlock("label",vs,[y[35]||(y[35]=e.createElementVNode("span",null,"Day of month",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[8]||(y[8]=N=>s.monthlyDay=N),"data-testid":"recurring-monthly-day",type:"number",min:"1",max:"31",disabled:t.submitting},null,8,gs),[[e.vModelText,s.monthlyDay]])])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("label",bs,[y[36]||(y[36]=e.createElementVNode("span",null,"Position",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[9]||(y[9]=N=>s.monthlySetPosition=N),disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(r,N=>e.createElementVNode("option",{key:N.value,value:String(N.value)},e.toDisplayString(N.label),9,Es)),64))],8,hs),[[e.vModelSelect,s.monthlySetPosition]])]),e.createElementVNode("label",Vs,[y[37]||(y[37]=e.createElementVNode("span",null,"Weekday",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[10]||(y[10]=N=>s.monthlyWeekday=N),disabled:t.submitting},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(re),N=>(e.openBlock(),e.createElementBlock("option",{key:N.value,value:N.value},e.toDisplayString(N.label),9,ws))),128))],8,Ns),[[e.vModelSelect,s.monthlyWeekday]])])],64))])):(e.openBlock(),e.createElementBlock("label",$s,[y[38]||(y[38]=e.createElementVNode("span",null,"Custom RRULE",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":y[11]||(y[11]=N=>s.rawRrule=N),"data-testid":"recurring-raw-rrule",rows:"3",disabled:t.submitting,placeholder:"FREQ=WEEKLY;BYDAY=MO,WE,FR"},null,8,Ts),[[e.vModelText,s.rawRrule]])])),e.createElementVNode("div",Bs,[y[39]||(y[39]=e.createElementVNode("span",null,"Preview",-1)),e.createElementVNode("strong",Ss,e.toDisplayString(c.value),1),e.createElementVNode("code",null,e.toDisplayString(h.value),1)]),e.createElementVNode("label",Cs,[y[40]||(y[40]=e.createElementVNode("span",null,"Taskable type",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[12]||(y[12]=N=>s.taskableType=N),type:"text",disabled:t.submitting,placeholder:"order"},null,8,Ds),[[e.vModelText,s.taskableType]])]),e.createElementVNode("label",Ms,[y[41]||(y[41]=e.createElementVNode("span",null,"Taskable ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[13]||(y[13]=N=>s.taskableId=N),type:"text",disabled:t.submitting},null,8,Is),[[e.vModelText,s.taskableId]])]),e.createElementVNode("label",Fs,[y[42]||(y[42]=e.createElementVNode("span",null,"Primary assignee ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[14]||(y[14]=N=>s.primaryAssigneeId=N),type:"text",disabled:t.submitting},null,8,As),[[e.vModelText,s.primaryAssigneeId]])]),e.createElementVNode("label",zs,[y[43]||(y[43]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":y[15]||(y[15]=N=>s.priority=N),disabled:t.submitting},[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(l,N=>e.createElementVNode("option",{key:N,value:N},e.toDisplayString(N),9,Rs)),64))],8,Ls),[[e.vModelSelect,s.priority]])]),e.createElementVNode("label",Us,[y[44]||(y[44]=e.createElementVNode("span",null,"Due offset hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[16]||(y[16]=N=>s.dueOffsetHours=N),type:"number",min:"0",disabled:t.submitting},null,8,Ps),[[e.vModelText,s.dueOffsetHours]])]),e.createElementVNode("label",Os,[y[45]||(y[45]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[17]||(y[17]=N=>s.tags=N),type:"text",disabled:t.submitting,placeholder:"ops, warehouse"},null,8,Ws),[[e.vModelText,s.tags]])])]),e.createElementVNode("section",Hs,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[18]||(y[18]=N=>s.isActive=N),type:"checkbox",disabled:t.submitting},null,8,Ys),[[e.vModelCheckbox,s.isActive]]),y[46]||(y[46]=e.createTextVNode(" Active",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[19]||(y[19]=N=>s.skipHolidays=N),type:"checkbox",disabled:t.submitting},null,8,xs),[[e.vModelCheckbox,s.skipHolidays]]),y[47]||(y[47]=e.createTextVNode(" Skip holidays",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[20]||(y[20]=N=>s.businessHoursOnly=N),type:"checkbox",disabled:t.submitting},null,8,js),[[e.vModelCheckbox,s.businessHoursOnly]]),y[48]||(y[48]=e.createTextVNode(" Business hours only",-1))]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[21]||(y[21]=N=>s.chainMode=N),type:"checkbox",disabled:t.submitting},null,8,qs),[[e.vModelCheckbox,s.chainMode]]),y[49]||(y[49]=e.createTextVNode(" Chain mode",-1))])]),e.createElementVNode("footer",Ks,[e.createElementVNode("button",{type:"button",class:"secondary",onClick:y[22]||(y[22]=N=>o("cancel"))},"Cancel"),e.createElementVNode("button",{type:"submit",disabled:t.submitting||!u.value},e.toDisplayString(d.value),9,Qs)])],32))}}),Js=M(Gs,[["__scopeId","data-v-64eff738"]]),Zs={class:"recurring-list"},Xs={class:"recurring-list__toolbar"},er={class:"recurring-list__search"},tr=["value"],ar={class:"recurring-list__toggle"},nr=["checked"],lr={key:0,class:"recurring-list__empty"},or={key:1,class:"recurring-list__empty"},sr={key:2,class:"recurring-list__table"},rr={key:0,class:"recurring-list__meta"},ir={key:1,class:"recurring-list__flags"},dr={key:0},cr={key:1},ur={key:2},mr={class:"recurring-list__meta"},kr={class:"recurring-list__actions"},pr=["onClick"],_r=["onClick"],yr=["onClick"],fr=["onClick"],vr=["onClick"],gr=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 r(v){return v?W(v):"Not scheduled"}function _(v){var k;o("update:search",((k=v.target)==null?void 0:k.value)??"")}function s(v){var k;o("update:includeInactive",((k=v.target)==null?void 0:k.checked)??!1)}return(v,k)=>(e.openBlock(),e.createElementBlock("section",Zs,[e.createElementVNode("header",Xs,[e.createElementVNode("label",er,[k[0]||(k[0]=e.createElementVNode("span",null,"Search",-1)),e.createElementVNode("input",{"data-testid":"recurring-search",value:t.search??"",type:"search",placeholder:"Search recurring templates",onInput:_},null,40,tr)]),e.createElementVNode("label",ar,[e.createElementVNode("input",{checked:t.includeInactive??!1,type:"checkbox",onChange:s},null,40,nr),k[1]||(k[1]=e.createElementVNode("span",null,"Include paused",-1))])]),t.loading?(e.openBlock(),e.createElementBlock("div",lr," Loading recurring templates… ")):l.value.length===0?(e.openBlock(),e.createElementBlock("div",or," No recurring templates found. ")):(e.openBlock(),e.createElementBlock("table",sr,[k[2]||(k[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,d=>{var m;return e.openBlock(),e.createElementBlock("tr",{key:d.id},[e.createElementVNode("td",null,[e.createElementVNode("strong",null,e.toDisplayString(d.title??((m=d.task_template)==null?void 0:m.name)??"Untitled recurrence"),1),d.task_template?(e.openBlock(),e.createElementBlock("p",rr," Template: "+e.toDisplayString(d.task_template.name),1)):e.createCommentVNode("",!0),d.chain_mode||d.business_hours_only||d.skip_holidays?(e.openBlock(),e.createElementBlock("p",ir,[d.chain_mode?(e.openBlock(),e.createElementBlock("span",dr,"Chain mode")):e.createCommentVNode("",!0),d.business_hours_only?(e.openBlock(),e.createElementBlock("span",cr,"Business hours")):e.createCommentVNode("",!0),d.skip_holidays?(e.openBlock(),e.createElementBlock("span",ur,"Skip holidays")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)]),e.createElementVNode("td",null,[e.createElementVNode("strong",null,e.toDisplayString(d.rrule_human),1),e.createElementVNode("p",mr,e.toDisplayString(d.timezone),1)]),e.createElementVNode("td",null,e.toDisplayString(r(d.next_occurrence_at)),1),e.createElementVNode("td",null,e.toDisplayString(r(d.last_generated_at)),1),e.createElementVNode("td",null,[e.createElementVNode("span",{class:e.normalizeClass(["recurring-list__status",d.is_active?"is-active":"is-paused"])},e.toDisplayString(d.is_active?"Active":"Paused"),3)]),e.createElementVNode("td",null,[e.createElementVNode("div",kr,[e.createElementVNode("button",{type:"button",onClick:g=>o("edit",d.id)},"Edit",8,pr),d.is_active?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:g=>o("pause",d.id)}," Pause ",8,_r)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:g=>o("resume",d.id)}," Resume ",8,yr)),e.createElementVNode("button",{type:"button",onClick:g=>o("generate",d.id)},"Generate",8,fr),e.createElementVNode("button",{type:"button",class:"danger",onClick:g=>o("remove",d.id)},"Delete",8,vr)])])])}),128))])]))]))}}),br=M(gr,[["__scopeId","data-v-0b7b3aee"]]),hr={key:0,class:"task-saved-filter-tabs","aria-label":"Saved filters"},Er=["onClick"],Vr={key:0,class:"task-saved-filter-tabs__default"},Nr=["onClick"],wr=e.defineComponent({__name:"TaskSavedFilterTabs",props:{filters:{},activeFilterId:{}},emits:["select","remove"],setup(t,{emit:a}){const n=t,o=a;return(l,r)=>n.filters.length>0?(e.openBlock(),e.createElementBlock("section",hr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.filters,_=>(e.openBlock(),e.createElementBlock("article",{key:_.id,class:e.normalizeClass(["task-saved-filter-tabs__pill",{"is-active":_.id===t.activeFilterId}])},[e.createElementVNode("button",{type:"button",class:"task-saved-filter-tabs__select",onClick:s=>o("select",_.id)},[e.createElementVNode("span",null,e.toDisplayString(_.name),1),_.is_default?(e.openBlock(),e.createElementBlock("span",Vr,"Default")):e.createCommentVNode("",!0)],8,Er),_.is_default?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-saved-filter-tabs__remove",onClick:s=>o("remove",_.id)}," Remove ",8,Nr))],2))),128))])):e.createCommentVNode("",!0)}}),pt=M(wr,[["__scopeId","data-v-69d88930"]]),$r={class:"task-list-view"},Tr={class:"task-list-view__header"},Br={key:2,class:"task-list-view__empty"},Sr={key:3,class:"task-list-view__table-wrap"},Cr={class:"task-list-view__table"},Dr=["onClick"],Mr=["value"],Ir={class:"task-list-view__title-cell"},Fr={key:0},Ar={class:"task-list-view__tags"},zr={class:"task-list-view__pagination"},Lr=["disabled"],Rr=["disabled"],Ur=e.defineComponent({__name:"TaskListView",props:{tasks:{},filters:{},pagination:{},loading:{type:Boolean},savedFilters:{},activeSavedFilterId:{},bulkBusy:{type:Boolean},bulkResult:{}},emits:["update:filters","select-task","quick-create","page-change","save-filter","apply-saved-filter","delete-saved-filter","bulk-action"],setup(t,{emit:a}){const n=t,o=a,l=e.ref([]),r=e.computed({get:()=>n.tasks.length>0&&l.value.length===n.tasks.length,set:k=>{l.value=k?n.tasks.map(d=>d.id):[]}});function _(k){const d=n.filters.sort??"-created_at",g=(d.startsWith("-")?d.slice(1):d)===k&&!d.startsWith("-")?`-${k}`:k;o("update:filters",{...n.filters,sort:g,page:1})}function s(k){o("page-change",k),o("update:filters",{...n.filters,page:k})}function v(){l.value=[]}return e.watch(()=>n.tasks,k=>{const d=new Set(k.map(m=>m.id));l.value=l.value.filter(m=>d.has(m))},{deep:!0}),(k,d)=>(e.openBlock(),e.createElementBlock("section",$r,[e.createElementVNode("header",Tr,[d[15]||(d[15]=e.createElementVNode("div",null,[e.createElementVNode("h2",null,"Tasks"),e.createElementVNode("p",null,"Manage work across entities, playbooks, and operational follow-ups.")],-1)),e.createElementVNode("button",{type:"button",class:"task-list-view__create",onClick:d[0]||(d[0]=m=>o("quick-create"))}," Create task ")]),t.savedFilters&&t.savedFilters.length>0?(e.openBlock(),e.createBlock(pt,{key:0,filters:t.savedFilters,"active-filter-id":t.activeSavedFilterId??null,onSelect:d[1]||(d[1]=m=>o("apply-saved-filter",m)),onRemove:d[2]||(d[2]=m=>o("delete-saved-filter",m))},null,8,["filters","active-filter-id"])):e.createCommentVNode("",!0),e.createVNode(kt,{"model-value":t.filters,loading:t.loading??!1,"onUpdate:modelValue":d[3]||(d[3]=m=>o("update:filters",m)),onSaveCurrent:d[4]||(d[4]=m=>o("save-filter"))},null,8,["model-value","loading"]),l.value.length>0?(e.openBlock(),e.createBlock(mt,{key:1,"selected-count":l.value.length,busy:t.bulkBusy??!1,result:t.bulkResult??null,onApply:d[5]||(d[5]=m=>o("bulk-action",{taskIds:l.value,action:m.action,params:m.params})),onClear:v},null,8,["selected-count","busy","result"])):e.createCommentVNode("",!0),t.tasks.length===0&&!t.loading?(e.openBlock(),e.createElementBlock("div",Br,[d[16]||(d[16]=e.createElementVNode("h3",null,"No tasks yet",-1)),d[17]||(d[17]=e.createElementVNode("p",null,"Start with a quick task or instantiate a template for structured work.",-1)),e.createElementVNode("button",{type:"button",onClick:d[6]||(d[6]=m=>o("quick-create"))},"Create first task")])):(e.openBlock(),e.createElementBlock("div",Sr,[e.createElementVNode("table",Cr,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[e.createElementVNode("th",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[7]||(d[7]=m=>r.value=m),type:"checkbox"},null,512),[[e.vModelCheckbox,r.value]])]),e.createElementVNode("th",null,[e.createElementVNode("button",{type:"button",onClick:d[8]||(d[8]=m=>_("display_number"))},"Number")]),e.createElementVNode("th",null,[e.createElementVNode("button",{type:"button",onClick:d[9]||(d[9]=m=>_("title"))},"Title")]),d[18]||(d[18]=e.createElementVNode("th",null,"Status",-1)),d[19]||(d[19]=e.createElementVNode("th",null,"Priority",-1)),d[20]||(d[20]=e.createElementVNode("th",null,"Assignee",-1)),e.createElementVNode("th",null,[e.createElementVNode("button",{type:"button",onClick:d[10]||(d[10]=m=>_("due_at"))},"Due")]),d[21]||(d[21]=e.createElementVNode("th",null,"Tags",-1))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.tasks,m=>{var g;return e.openBlock(),e.createElementBlock("tr",{key:m.id,onClick:h=>o("select-task",m.id)},[e.createElementVNode("td",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[11]||(d[11]=h=>l.value=h),type:"checkbox",value:m.id,onClick:d[12]||(d[12]=e.withModifiers(()=>{},["stop"]))},null,8,Mr),[[e.vModelCheckbox,l.value]])]),e.createElementVNode("td",null,e.toDisplayString(m.display_number_formatted),1),e.createElementVNode("td",null,[e.createElementVNode("div",Ir,[e.createElementVNode("strong",null,e.toDisplayString(m.title),1),m.description?(e.openBlock(),e.createElementBlock("small",Fr,e.toDisplayString(m.description),1)):e.createCommentVNode("",!0)])]),e.createElementVNode("td",null,[e.createVNode(te,{status:m.status},null,8,["status"])]),e.createElementVNode("td",null,[e.createVNode(ee,{priority:m.priority,compact:""},null,8,["priority"])]),e.createElementVNode("td",null,e.toDisplayString(((g=m.primary_assignee)==null?void 0:g.name)??"Unassigned"),1),e.createElementVNode("td",{class:e.normalizeClass({overdue:m.is_overdue})},e.toDisplayString(e.unref(Te)(m.due_at)),3),e.createElementVNode("td",null,[e.createElementVNode("ul",Ar,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(m.tags,h=>(e.openBlock(),e.createElementBlock("li",{key:h.id},e.toDisplayString(h.name),1))),128))])])],8,Dr)}),128))])])])),e.createElementVNode("footer",zr,[e.createElementVNode("button",{type:"button",disabled:t.pagination.current_page<=1,onClick:d[13]||(d[13]=m=>s(t.pagination.current_page-1))}," Previous ",8,Lr),e.createElementVNode("span",null,"Page "+e.toDisplayString(t.pagination.current_page)+" of "+e.toDisplayString(t.pagination.last_page),1),e.createElementVNode("button",{type:"button",disabled:t.pagination.current_page>=t.pagination.last_page,onClick:d[14]||(d[14]=m=>s(t.pagination.current_page+1))}," Next ",8,Rr)])]))}}),Pr=M(Ur,[["__scopeId","data-v-962cc1c5"]]),Or=["disabled"],Wr={key:0,class:"task-quick-create__extras"},Hr=["disabled"],Yr=["value"],xr=["disabled"],jr=["disabled"],qr=["disabled"],Kr=e.defineComponent({__name:"TaskQuickCreate",props:{templates:{},busy:{type:Boolean},entityContext:{}},emits:["submit","instantiate-template"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(!1),r=e.reactive({title:"",primary_assignee_id:"",due_at:"",template_id:""}),_=e.computed(()=>n.templates??[]);function s(){l.value=!0}function v(){r.title||r.primary_assignee_id||r.due_at||r.template_id||(l.value=!1)}function k(){var d,m;if(r.template_id){o("instantiate-template",r.template_id),r.template_id="",v();return}r.title.trim()&&(o("submit",{title:r.title.trim(),primary_assignee_id:r.primary_assignee_id||null,due_at:r.due_at||null,taskable_type:((d=n.entityContext)==null?void 0:d.type)??null,taskable_id:((m=n.entityContext)==null?void 0:m.id)??null}),r.title="",r.primary_assignee_id="",r.due_at="",v())}return(d,m)=>(e.openBlock(),e.createElementBlock("form",{class:e.normalizeClass(["task-quick-create",{expanded:l.value}]),onSubmit:e.withModifiers(k,["prevent"])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[0]||(m[0]=g=>r.title=g),type:"text",disabled:t.busy,placeholder:"Quick create a task",onFocus:s,onBlur:v},null,40,Or),[[e.vModelText,r.title]]),l.value?(e.openBlock(),e.createElementBlock("div",Wr,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":m[1]||(m[1]=g=>r.template_id=g),disabled:t.busy},[m[4]||(m[4]=e.createElementVNode("option",{value:""},"No template",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,g=>(e.openBlock(),e.createElementBlock("option",{key:g.id,value:g.id},e.toDisplayString(g.name),9,Yr))),128))],8,Hr),[[e.vModelSelect,r.template_id]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[2]||(m[2]=g=>r.primary_assignee_id=g),type:"text",disabled:t.busy,placeholder:"Assignee ID"},null,8,xr),[[e.vModelText,r.primary_assignee_id]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":m[3]||(m[3]=g=>r.due_at=g),type:"date",disabled:t.busy},null,8,jr),[[e.vModelText,r.due_at]]),e.createElementVNode("button",{type:"submit",disabled:t.busy||!r.title.trim()&&!r.template_id}," Create ",8,qr)])):e.createCommentVNode("",!0)],34))}}),_t=M(Kr,[["__scopeId","data-v-5d55ea74"]]),Qr={class:"task-entity-widget"},Gr={class:"task-entity-widget__header"},Jr={class:"task-entity-widget__summary"},Zr={class:"task-entity-widget__recent"},Xr={key:0,class:"task-entity-widget__cards"},ei={key:1},ti=e.defineComponent({__name:"TaskEntityWidget",props:{entityType:{},entityId:{},summary:{},templates:{},loading:{type:Boolean}},emits:["create-task","view-all","instantiate-template","select-task"],setup(t,{emit:a}){const n=a;return(o,l)=>{var r,_,s,v,k,d;return e.openBlock(),e.createElementBlock("section",Qr,[e.createElementVNode("header",Gr,[e.createElementVNode("div",null,[l[4]||(l[4]=e.createElementVNode("h3",null,"Tasks",-1)),e.createElementVNode("p",null,"Operational work linked to this "+e.toDisplayString(t.entityType)+".",1)]),e.createElementVNode("button",{type:"button",onClick:l[0]||(l[0]=m=>n("view-all"))},"View all")]),e.createElementVNode("div",Jr,[e.createElementVNode("article",null,[l[5]||(l[5]=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",null,[l[6]||(l[6]=e.createElementVNode("span",null,"Open",-1)),e.createElementVNode("strong",null,e.toDisplayString(((_=t.summary)==null?void 0:_.open)??0),1)]),e.createElementVNode("article",null,[l[7]||(l[7]=e.createElementVNode("span",null,"Overdue",-1)),e.createElementVNode("strong",null,e.toDisplayString(((s=t.summary)==null?void 0:s.overdue)??0),1)]),e.createElementVNode("article",null,[l[8]||(l[8]=e.createElementVNode("span",null,"Completed",-1)),e.createElementVNode("strong",null,e.toDisplayString(((v=t.summary)==null?void 0:v.completed)??0),1)])]),e.createVNode(_t,{busy:t.loading??!1,templates:t.templates??[],"entity-context":{type:t.entityType,id:t.entityId},onSubmit:l[1]||(l[1]=m=>n("create-task",m)),onInstantiateTemplate:l[2]||(l[2]=m=>n("instantiate-template",m))},null,8,["busy","templates","entity-context"]),e.createElementVNode("div",Zr,[l[9]||(l[9]=e.createElementVNode("h4",null,"Recent tasks",-1)),(d=(k=t.summary)==null?void 0:k.recent_tasks)!=null&&d.length?(e.openBlock(),e.createElementBlock("div",Xr,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.summary.recent_tasks,m=>(e.openBlock(),e.createBlock(Be,{key:m.id,task:m,compact:"",onSelect:l[3]||(l[3]=g=>n("select-task",g))},null,8,["task"]))),128))])):(e.openBlock(),e.createElementBlock("p",ei,"No recent tasks for this entity."))])])}}}),ai=M(ti,[["__scopeId","data-v-947c2ca8"]]),ni=["aria-label"],li=["onClick"],oi={class:"task-notification-toast__eyebrow"},si=["aria-label","onClick"],ri=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=$e(),r=l.notifications,_=l.hasNotifications;function s(k){l.dismissTaskNotificationToast(k),o("dismiss",k)}function v(k){if(o("select",k),n.navigate!==null){n.navigate(k);return}typeof window<"u"&&k.url!==null&&window.location.assign(k.url)}return(k,d)=>e.unref(_)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"task-notification-toast",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(r),m=>(e.openBlock(),e.createElementBlock("article",{key:m.id,class:e.normalizeClass(["task-notification-toast__item",`task-notification-toast__item--${m.tone}`])},[e.createElementVNode("button",{type:"button",class:"task-notification-toast__content",onClick:g=>v(m)},[e.createElementVNode("span",oi,e.toDisplayString(m.kind),1),e.createElementVNode("strong",null,e.toDisplayString(m.title),1),e.createElementVNode("p",null,e.toDisplayString(m.body),1)],8,li),e.createElementVNode("button",{type:"button",class:"task-notification-toast__dismiss","aria-label":`Dismiss ${m.title}`,onClick:g=>s(m.id)}," × ",8,si)],2))),128))]),_:1})],8,ni)):e.createCommentVNode("",!0)}}),ii=M(ri,[["__scopeId","data-v-8a7d8bd6"]]),di={key:0,class:"escalation-actions"},ci={class:"escalation-actions__header"},ui={class:"escalation-actions__status"},mi={class:"escalation-actions__label"},ki={class:"escalation-actions__buttons"},pi=["disabled"],_i=["disabled"],yi={class:"escalation-actions__facts"},fi={key:0},vi={key:1},gi={key:2},bi={class:"escalation-actions__field"},hi={class:"escalation-actions__field"},Ei={key:0,class:"escalation-actions__error"},Vi={class:"escalation-actions__buttons"},Ni=["disabled"],wi={key:1,class:"escalation-actions__timeline"},$i={key:0},Ti=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),r=e.ref(4),_=e.ref(""),s=e.ref(null),v=e.computed(()=>n.task.escalation_events.slice(0,6)),k=e.computed(()=>n.task.current_escalation_tier!==null||v.value.length>0),d=e.computed(()=>n.task.current_escalation_tier!==null&&!n.task.escalation_acknowledged_at),m=e.computed(()=>n.task.current_escalation_tier!==null),g=e.computed(()=>n.task.current_escalation_label??"Escalation");function h(){if(_.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(r.value)),reason:_.value.trim()}),l.value=!1,_.value=""}function c(u){switch(u.event_type){case"tier_fired":return u.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 u.event_type}}return(u,f)=>k.value?(e.openBlock(),e.createElementBlock("section",di,[e.createElementVNode("header",ci,[e.createElementVNode("div",null,[f[5]||(f[5]=e.createElementVNode("p",{class:"escalation-actions__eyebrow"},"Escalation",-1)),e.createElementVNode("div",ui,[e.createVNode(ue,{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",mi,e.toDisplayString(g.value),1)])]),e.createElementVNode("div",ki,[e.createElementVNode("button",{type:"button",disabled:(t.busy??!1)||!d.value,onClick:f[0]||(f[0]=E=>o("acknowledge",t.task.id))}," Acknowledge ",8,pi),e.createElementVNode("button",{type:"button",disabled:(t.busy??!1)||!m.value,onClick:f[1]||(f[1]=E=>l.value=!l.value)}," Snooze ",8,_i)])]),e.createElementVNode("dl",yi,[t.task.next_escalation_at?(e.openBlock(),e.createElementBlock("div",fi,[f[6]||(f[6]=e.createElementVNode("dt",null,"Next check",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(W)(t.task.next_escalation_at))+" · "+e.toDisplayString(e.unref(X)(t.task.next_escalation_at)),1)])):e.createCommentVNode("",!0),t.task.escalation_snoozed_until?(e.openBlock(),e.createElementBlock("div",vi,[f[7]||(f[7]=e.createElementVNode("dt",null,"Snoozed until",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(W)(t.task.escalation_snoozed_until)),1)])):e.createCommentVNode("",!0),t.task.escalation_acknowledged_at?(e.openBlock(),e.createElementBlock("div",gi,[f[8]||(f[8]=e.createElementVNode("dt",null,"Acknowledged",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(W)(t.task.escalation_acknowledged_at)),1)])):e.createCommentVNode("",!0)]),l.value?(e.openBlock(),e.createElementBlock("form",{key:0,class:"escalation-actions__snooze",onSubmit:e.withModifiers(h,["prevent"])},[e.createElementVNode("label",bi,[f[9]||(f[9]=e.createElementVNode("span",null,"Hours",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[2]||(f[2]=E=>r.value=E),type:"number",min:"1",max:"168"},null,512),[[e.vModelText,r.value,void 0,{number:!0}]])]),e.createElementVNode("label",hi,[f[10]||(f[10]=e.createElementVNode("span",null,"Reason",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":f[3]||(f[3]=E=>_.value=E),rows:"3",placeholder:"Explain why this alert can wait."},null,512),[[e.vModelText,_.value]])]),s.value?(e.openBlock(),e.createElementBlock("p",Ei,e.toDisplayString(s.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Vi,[e.createElementVNode("button",{type:"submit",disabled:t.busy??!1},"Save snooze",8,Ni),e.createElementVNode("button",{type:"button",class:"ghost",onClick:f[4]||(f[4]=E=>l.value=!1)},"Cancel")])],32)):e.createCommentVNode("",!0),v.value.length>0?(e.openBlock(),e.createElementBlock("ol",wi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(v.value,E=>(e.openBlock(),e.createElementBlock("li",{key:E.id},[e.createElementVNode("strong",null,e.toDisplayString(c(E)),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(W)(E.created_at)),1),E.snooze_reason?(e.openBlock(),e.createElementBlock("small",$i,e.toDisplayString(E.snooze_reason),1)):e.createCommentVNode("",!0)]))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),yt=M(Ti,[["__scopeId","data-v-4a4194a6"]]),Bi={class:"task-checklist"},Si={class:"task-checklist__header"},Ci={class:"task-checklist__meter","aria-hidden":"true"},Di={class:"task-checklist__items"},Mi={class:"task-checklist__toggle"},Ii=["checked","disabled","onChange"],Fi={class:"task-checklist__actions"},Ai=["disabled","onClick"],zi=["disabled","onClick"],Li=["disabled","onClick"],Ri=["disabled"],Ui=["disabled"],Pi=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(""),r=e.computed(()=>n.items.filter(k=>k.is_completed).length),_=e.computed(()=>n.items.length===0?0:Math.round(r.value/n.items.length*100));function s(){l.value.trim()&&(o("add-item",l.value.trim()),l.value="")}function v(k,d){const m=k+d;if(m<0||m>=n.items.length)return;const g=[...n.items],[h]=g.splice(k,1);h&&(g.splice(m,0,h),o("reorder-items",g.map(c=>c.id)))}return(k,d)=>(e.openBlock(),e.createElementBlock("section",Bi,[e.createElementVNode("header",Si,[e.createElementVNode("div",null,[d[1]||(d[1]=e.createElementVNode("h3",null,"Checklist",-1)),e.createElementVNode("p",null,e.toDisplayString(r.value)+" of "+e.toDisplayString(t.items.length)+" complete",1)]),e.createElementVNode("div",Ci,[e.createElementVNode("div",{class:"task-checklist__meter-fill",style:e.normalizeStyle({width:`${_.value}%`})},null,4)])]),e.createElementVNode("ul",Di,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(m,g)=>(e.openBlock(),e.createElementBlock("li",{key:m.id,class:"task-checklist__item"},[e.createElementVNode("label",Mi,[e.createElementVNode("input",{type:"checkbox",checked:m.is_completed,disabled:t.disabled,onChange:h=>o("toggle-item",m.id)},null,40,Ii),e.createElementVNode("span",{class:e.normalizeClass({done:m.is_completed})},e.toDisplayString(m.title),3)]),e.createElementVNode("div",Fi,[e.createElementVNode("button",{type:"button",disabled:t.disabled||g===0,onClick:h=>v(g,-1)},"↑",8,Ai),e.createElementVNode("button",{type:"button",disabled:t.disabled||g===t.items.length-1,onClick:h=>v(g,1)},"↓",8,zi),e.createElementVNode("button",{type:"button",disabled:t.disabled,onClick:h=>o("remove-item",m.id)},"Remove",8,Li)])]))),128))]),e.createElementVNode("form",{class:"task-checklist__composer",onSubmit:e.withModifiers(s,["prevent"])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":d[0]||(d[0]=m=>l.value=m),type:"text",disabled:t.disabled,placeholder:"Add a checklist item"},null,8,Ri),[[e.vModelText,l.value]]),e.createElementVNode("button",{type:"submit",disabled:t.disabled||!l.value.trim()},"Add",8,Ui)],32)]))}}),ft=M(Pi,[["__scopeId","data-v-103efdc2"]]),Oi={class:"task-comments"},Wi={class:"task-comments__list"},Hi={class:"task-comments__meta"},Yi={class:"task-comments__visibility"},xi=["disabled"],ji={class:"task-comments__controls"},qi=["disabled"],Ki=["disabled"],Qi=e.defineComponent({__name:"TaskComments",props:{comments:{},disabled:{type:Boolean}},emits:["submit"],setup(t,{emit:a}){const n=t,o=a,l=e.ref(""),r=e.ref("team"),_=e.computed(()=>[...n.comments].sort((v,k)=>v.created_at.localeCompare(k.created_at)));function s(){l.value.trim()&&(o("submit",{content:l.value.trim(),visibility:r.value}),l.value="",r.value="team")}return(v,k)=>(e.openBlock(),e.createElementBlock("section",Oi,[e.createElementVNode("ul",Wi,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(_.value,d=>(e.openBlock(),e.createElementBlock("li",{key:d.id,class:"task-comments__item"},[e.createElementVNode("div",Hi,[e.createElementVNode("strong",null,e.toDisplayString(d.author.name),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(W)(d.created_at)),1),e.createElementVNode("span",Yi,e.toDisplayString(d.visibility),1)]),e.createElementVNode("p",null,e.toDisplayString(d.content),1)]))),128))]),e.createElementVNode("form",{class:"task-comments__composer",onSubmit:e.withModifiers(s,["prevent"])},[e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":k[0]||(k[0]=d=>l.value=d),rows:"4",disabled:t.disabled,placeholder:"Add a comment (basic markdown supported)"},null,8,xi),[[e.vModelText,l.value]]),e.createElementVNode("div",ji,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":k[1]||(k[1]=d=>r.value=d),disabled:t.disabled},[...k[2]||(k[2]=[e.createElementVNode("option",{value:"team"},"Team",-1),e.createElementVNode("option",{value:"private"},"Private",-1)])],8,qi),[[e.vModelSelect,r.value]]),e.createElementVNode("button",{type:"submit",disabled:t.disabled||!l.value.trim()},"Post comment",8,Ki)])],32)]))}}),vt=M(Qi,[["__scopeId","data-v-e158d79c"]]),Gi={class:"task-timeline"},Ji={class:"task-timeline__list"},Zi=e.defineComponent({__name:"TaskTimeline",props:{logs:{},canLoadMore:{type:Boolean}},emits:["load-more"],setup(t,{emit:a}){const n=a;return(o,l)=>(e.openBlock(),e.createElementBlock("section",Gi,[e.createElementVNode("ol",Ji,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.logs,r=>{var _;return e.openBlock(),e.createElementBlock("li",{key:r.id,class:"task-timeline__item"},[l[1]||(l[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.user)==null?void 0:_.name)??"System"),1),e.createTextVNode(" "+e.toDisplayString(e.unref(nt)(r)),1)]),e.createElementVNode("small",null,e.toDisplayString(e.unref(W)(r.created_at)),1)])])}),128))]),t.canLoadMore?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"task-timeline__more",onClick:l[0]||(l[0]=r=>n("load-more"))}," Load more ")):e.createCommentVNode("",!0)]))}}),gt=M(Zi,[["__scopeId","data-v-7835cffb"]]),Xi={key:0,class:"task-detail"},ed={class:"task-detail__header"},td={class:"task-detail__identity"},ad={class:"task-detail__number"},nd={class:"task-detail__badges"},ld={class:"task-detail__actions"},od=["disabled"],sd=["disabled"],rd=["disabled"],id=["disabled"],dd=["disabled"],cd={class:"task-detail__layout"},ud={class:"task-detail__main"},md={class:"task-detail__description"},kd={class:"task-detail__tabs","aria-label":"Task detail sections"},pd={key:2,class:"task-detail__relations"},_d={key:0},yd={class:"task-detail__sidebar"},fd=e.defineComponent({__name:"TaskDetail",props:{task:{},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"],setup(t,{emit:a}){const n=t,o=a,l=e.ref("comments"),r=e.computed(()=>{var _;return((_=n.task)==null?void 0:_.relations)??[]});return(_,s)=>{var v;return t.task?(e.openBlock(),e.createElementBlock("section",Xi,[e.createElementVNode("header",ed,[e.createElementVNode("div",td,[e.createElementVNode("span",ad,e.toDisplayString(t.task.display_number_formatted),1),e.createElementVNode("h2",null,e.toDisplayString(t.task.title),1),e.createElementVNode("div",nd,[e.createVNode(ue,{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(te,{status:t.task.status},null,8,["status"]),e.createVNode(ee,{priority:t.task.priority},null,8,["priority"])])]),e.createElementVNode("div",ld,[e.createElementVNode("button",{type:"button",disabled:t.busy??!1,onClick:s[0]||(s[0]=k=>o("complete",t.task.id))},"Complete",8,od),e.createElementVNode("button",{type:"button",disabled:t.busy??!1,onClick:s[1]||(s[1]=k=>o("reopen",t.task.id))},"Reopen",8,sd),e.createElementVNode("button",{type:"button",disabled:t.busy??!1,onClick:s[2]||(s[2]=k=>o("cancel",t.task.id))},"Cancel",8,rd),e.createElementVNode("button",{type:"button",disabled:t.busy??!1,onClick:s[3]||(s[3]=k=>o("edit",t.task.id))},"Edit",8,id),e.createElementVNode("button",{type:"button",class:"danger",disabled:t.busy??!1,onClick:s[4]||(s[4]=k=>o("delete",t.task.id))},"Delete",8,dd)])]),e.createElementVNode("div",cd,[e.createElementVNode("article",ud,[e.createVNode(yt,{task:t.task,busy:t.busy??!1,onAcknowledge:s[5]||(s[5]=k=>o("acknowledge-escalation",k)),onSnooze:s[6]||(s[6]=k=>o("snooze-escalation",k))},null,8,["task","busy"]),e.createElementVNode("section",md,[s[16]||(s[16]=e.createElementVNode("h3",null,"Description",-1)),e.createElementVNode("p",null,e.toDisplayString(t.task.description||"No description yet."),1)]),e.createElementVNode("nav",kd,[e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:l.value==="comments"}),onClick:s[7]||(s[7]=k=>l.value="comments")},"Comments",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:l.value==="checklist"}),onClick:s[8]||(s[8]=k=>l.value="checklist")},"Checklist",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:l.value==="relations"}),onClick:s[9]||(s[9]=k=>l.value="relations")},"Relations",2),e.createElementVNode("button",{type:"button",class:e.normalizeClass({active:l.value==="activity"}),onClick:s[10]||(s[10]=k=>l.value="activity")},"Activity",2)]),l.value==="comments"?(e.openBlock(),e.createBlock(vt,{key:0,comments:t.task.comments,disabled:t.busy??!1,onSubmit:s[11]||(s[11]=k=>o("submit-comment",k))},null,8,["comments","disabled"])):l.value==="checklist"?(e.openBlock(),e.createBlock(ft,{key:1,items:t.task.checklist_items,disabled:t.busy??!1,onToggleItem:s[12]||(s[12]=k=>o("toggle-checklist-item",k)),onAddItem:s[13]||(s[13]=k=>o("add-checklist-item",k)),onRemoveItem:s[14]||(s[14]=k=>o("remove-checklist-item",k)),onReorderItems:s[15]||(s[15]=k=>o("reorder-checklist-items",k))},null,8,["items","disabled"])):l.value==="relations"?(e.openBlock(),e.createElementBlock("section",pd,[e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,k=>(e.openBlock(),e.createElementBlock("li",{key:k.id},[e.createElementVNode("strong",null,e.toDisplayString(k.type),1),k.related_task?(e.openBlock(),e.createElementBlock("span",_d,e.toDisplayString(k.related_task.display_number_formatted)+" · "+e.toDisplayString(k.related_task.title),1)):e.createCommentVNode("",!0)]))),128))])])):(e.openBlock(),e.createBlock(gt,{key:3,logs:t.task.activity_logs},null,8,["logs"]))]),e.createElementVNode("aside",yd,[e.createElementVNode("dl",null,[e.createElementVNode("div",null,[s[17]||(s[17]=e.createElementVNode("dt",null,"Assignee",-1)),e.createElementVNode("dd",null,e.toDisplayString(((v=t.task.primary_assignee)==null?void 0:v.name)??"Unassigned"),1)]),e.createElementVNode("div",null,[s[18]||(s[18]=e.createElementVNode("dt",null,"Due date",-1)),e.createElementVNode("dd",null,e.toDisplayString(e.unref(W)(t.task.due_at)),1)]),e.createElementVNode("div",null,[s[19]||(s[19]=e.createElementVNode("dt",null,"Source",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.source),1)]),e.createElementVNode("div",null,[s[20]||(s[20]=e.createElementVNode("dt",null,"Linked entity",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.taskable_type??"None")+" "+e.toDisplayString(t.task.taskable_id??""),1)]),e.createElementVNode("div",null,[s[21]||(s[21]=e.createElementVNode("dt",null,"Tags",-1)),e.createElementVNode("dd",null,e.toDisplayString(t.task.tags.map(k=>k.name).join(", ")||"No tags"),1)])])])])])):e.createCommentVNode("",!0)}}}),vd=M(fd,[["__scopeId","data-v-5e41584f"]]),gd={class:"task-form__grid"},bd={class:"task-form__field task-form__field--wide"},hd=["disabled"],Ed={key:0,class:"task-form__field"},Vd=["disabled"],Nd=["value"],wd={class:"task-form__field"},$d=["disabled"],Td={class:"task-form__field"},Bd=["disabled"],Sd={class:"task-form__field"},Cd=["disabled"],Dd={class:"task-form__field task-form__field--wide"},Md=["disabled"],Id={class:"task-form__field task-form__field--wide"},Fd=["disabled"],Ad={class:"task-form__checklist"},zd=["onUpdate:modelValue","disabled","placeholder"],Ld=["onClick"],Rd={class:"task-form__actions"},Ud=["disabled"],Pd=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:[]}),r=e.computed(()=>n.templates??[]),_=e.computed(()=>n.mode??"create"),s=e.computed(()=>_.value==="edit"?"Save task":"Create task");function v(c){return c.flatMap(u=>{const f=v(u.children);return u.type==="checklist"?[u.title,...f]:f})}function k(){var c,u,f,E,B,V,b,y,N,C;l.title=((c=n.task)==null?void 0:c.title)??"",l.description=((u=n.task)==null?void 0:u.description)??"",l.priority=((f=n.task)==null?void 0:f.priority)??"none",l.primary_assignee_id=String(((B=(E=n.task)==null?void 0:E.primary_assignee)==null?void 0:B.id)??""),l.due_at=(V=n.task)!=null&&V.due_at?n.task.due_at.slice(0,10):"",l.tags=((y=(b=n.task)==null?void 0:b.tags)==null?void 0:y.map(T=>T.name).join(", "))??"",l.checklist=((C=(N=n.task)==null?void 0:N.checklist_items)==null?void 0:C.map(T=>T.title))??[]}e.watch(()=>n.task,()=>{k()},{immediate:!0});function d(c){if(l.templateId=c,o("template-change",c||null),!c||_.value==="edit")return;const u=r.value.find(f=>f.id===c);u&&(l.title=u.default_title,l.description=u.default_description??"",l.priority=u.default_priority,l.tags=(u.tags??[]).join(", "),l.checklist=u.items?v(u.items):[])}function m(){l.checklist.push("")}function g(c){l.checklist.splice(c,1)}function h(){var c,u;l.title.trim()&&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:((c=n.entityContext)==null?void 0:c.type)??null,taskable_id:((u=n.entityContext)==null?void 0:u.id)??null,tags:l.tags.split(",").map(f=>f.trim()).filter(Boolean),checklist_items:l.checklist.map((f,E)=>({title:f.trim(),position:E})).filter(f=>f.title.length>0)})}return(c,u)=>(e.openBlock(),e.createElementBlock("form",{class:"task-form",onSubmit:e.withModifiers(h,["prevent"])},[e.createElementVNode("div",gd,[e.createElementVNode("label",bd,[u[9]||(u[9]=e.createElementVNode("span",null,"Title",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[0]||(u[0]=f=>l.title=f),type:"text",disabled:t.submitting,required:""},null,8,hd),[[e.vModelText,l.title]])]),_.value==="create"?(e.openBlock(),e.createElementBlock("label",Ed,[u[11]||(u[11]=e.createElementVNode("span",null,"Template",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[1]||(u[1]=f=>l.templateId=f),disabled:t.submitting,onChange:u[2]||(u[2]=f=>d(l.templateId))},[u[10]||(u[10]=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,Nd))),128))],40,Vd),[[e.vModelSelect,l.templateId]])])):e.createCommentVNode("",!0),e.createElementVNode("label",wd,[u[13]||(u[13]=e.createElementVNode("span",null,"Priority",-1)),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":u[3]||(u[3]=f=>l.priority=f),disabled:t.submitting},[...u[12]||(u[12]=[e.createStaticVNode('<option value="none" data-v-8e495566>None</option><option value="low" data-v-8e495566>Low</option><option value="medium" data-v-8e495566>Medium</option><option value="high" data-v-8e495566>High</option><option value="urgent" data-v-8e495566>Urgent</option><option value="critical" data-v-8e495566>Critical</option>',6)])],8,$d),[[e.vModelSelect,l.priority]])]),e.createElementVNode("label",Td,[u[14]||(u[14]=e.createElementVNode("span",null,"Assignee ID",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[4]||(u[4]=f=>l.primary_assignee_id=f),type:"text",disabled:t.submitting},null,8,Bd),[[e.vModelText,l.primary_assignee_id]])]),e.createElementVNode("label",Sd,[u[15]||(u[15]=e.createElementVNode("span",null,"Due date",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[5]||(u[5]=f=>l.due_at=f),type:"date",disabled:t.submitting},null,8,Cd),[[e.vModelText,l.due_at]])]),e.createElementVNode("label",Dd,[u[16]||(u[16]=e.createElementVNode("span",null,"Tags",-1)),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":u[6]||(u[6]=f=>l.tags=f),type:"text",disabled:t.submitting,placeholder:"ops, warehouse"},null,8,Md),[[e.vModelText,l.tags]])]),e.createElementVNode("label",Id,[u[17]||(u[17]=e.createElementVNode("span",null,"Description",-1)),e.withDirectives(e.createElementVNode("textarea",{"onUpdate:modelValue":u[7]||(u[7]=f=>l.description=f),rows:"5",disabled:t.submitting},null,8,Fd),[[e.vModelText,l.description]])])]),e.createElementVNode("section",Ad,[e.createElementVNode("div",{class:"task-form__checklist-header"},[u[18]||(u[18]=e.createElementVNode("h3",null,"Checklist items",-1)),e.createElementVNode("button",{type:"button",onClick:m},"Add item")]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.checklist,(f,E)=>(e.openBlock(),e.createElementBlock("div",{key:`${E}-${f}`,class:"task-form__checklist-row"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":B=>l.checklist[E]=B,type:"text",disabled:t.submitting,placeholder:`Checklist item ${E+1}`},null,8,zd),[[e.vModelText,l.checklist[E]]]),e.createElementVNode("button",{type:"button",onClick:B=>g(E)},"Remove",8,Ld)]))),128))]),e.createElementVNode("footer",Rd,[e.createElementVNode("button",{type:"button",class:"secondary",onClick:u[8]||(u[8]=f=>o("cancel"))},"Cancel"),e.createElementVNode("button",{type:"submit",disabled:t.submitting||!l.title.trim()},e.toDisplayString(s.value),9,Ud)])],32))}}),Od=M(Pd,[["__scopeId","data-v-8e495566"]]);exports.EscalationActions=yt;exports.EscalationBadge=ue;exports.MyStatsWidget=at;exports.MyTasksToday=st;exports.OverdueTracker=rt;exports.RecurringTemplateForm=Js;exports.RecurringTemplateList=br;exports.TaskBoardView=Kl;exports.TaskBulkActionBar=mt;exports.TaskCalendarView=To;exports.TaskCard=Be;exports.TaskChecklist=ft;exports.TaskComments=vt;exports.TaskDashboard=yl;exports.TaskDetailView=vd;exports.TaskEntityWidget=ai;exports.TaskFilterBar=kt;exports.TaskForm=Od;exports.TaskHealthAlerts=it;exports.TaskListView=Pr;exports.TaskNotificationToast=ii;exports.TaskPriorityIcon=ee;exports.TaskQuickCreate=_t;exports.TaskSavedFilterTabs=pt;exports.TaskStatusBadge=te;exports.TaskTimeline=gt;exports.TeamActivityFeed=dt;exports.UpcomingThisWeek=ct;exports.WidgetGrid=ut;exports.createTaskApi=Ee;exports.getTaskApi=w;exports.resetTaskApi=la;exports.setTaskApi=na;exports.taskApi=oa;exports.useTaskDashboard=tt;exports.useTaskDetail=Ba;exports.useTaskFilters=Sa;exports.useTaskListStore=Ne;exports.useTaskNotificationFeed=$e;exports.useTaskPresence=Ma;exports.useTaskSavedFilters=Ia;exports.useTaskStore=ce;exports.useTaskWebSocket=et;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './services';
|
|
3
|
+
export * from './stores';
|
|
4
|
+
export * from './composables';
|
|
5
|
+
export { EscalationActions, EscalationBadge, MyStatsWidget, MyTasksToday, OverdueTracker, RecurringTemplateForm, RecurringTemplateList, TaskDashboard, TaskBoardView, TaskBulkActionBar, TaskCalendarView, TaskCard, TaskChecklist, TaskComments, TaskDetailView, TaskEntityWidget, TaskFilterBar, TaskForm, TaskHealthAlerts, TaskListView, TaskNotificationToast, TaskPriorityIcon, TaskQuickCreate, TaskSavedFilterTabs, TaskStatusBadge, TaskTimeline, TeamActivityFeed, UpcomingThisWeek, WidgetGrid, } from './components';
|