@quanticjs/workflow-ui 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/dist/components/ProcessTimeline/ProcessTimeline.d.ts +7 -0
- package/dist/components/ProcessTimeline/ProcessTimeline.d.ts.map +1 -0
- package/dist/components/ProcessTimeline/ProcessTimeline.js +48 -0
- package/dist/components/ProcessTimeline/ProcessTimeline.js.map +1 -0
- package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.d.ts +6 -0
- package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.d.ts.map +1 -0
- package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.js +6 -0
- package/dist/components/ProcessTimeline/ProcessTimelineSkeleton.js.map +1 -0
- package/dist/components/ProcessTimeline/TimelineEntry.d.ts +8 -0
- package/dist/components/ProcessTimeline/TimelineEntry.d.ts.map +1 -0
- package/dist/components/ProcessTimeline/TimelineEntry.js +66 -0
- package/dist/components/ProcessTimeline/TimelineEntry.js.map +1 -0
- package/dist/components/ProcessTimeline/index.d.ts +4 -0
- package/dist/components/ProcessTimeline/index.d.ts.map +1 -0
- package/dist/components/ProcessTimeline/index.js +4 -0
- package/dist/components/ProcessTimeline/index.js.map +1 -0
- package/dist/components/TaskActions/ConfirmationDialog.d.ts +8 -0
- package/dist/components/TaskActions/ConfirmationDialog.d.ts.map +1 -0
- package/dist/components/TaskActions/ConfirmationDialog.js +45 -0
- package/dist/components/TaskActions/ConfirmationDialog.js.map +1 -0
- package/dist/components/TaskActions/TaskActions.d.ts +10 -0
- package/dist/components/TaskActions/TaskActions.d.ts.map +1 -0
- package/dist/components/TaskActions/TaskActions.js +51 -0
- package/dist/components/TaskActions/TaskActions.js.map +1 -0
- package/dist/components/TaskActions/index.d.ts +3 -0
- package/dist/components/TaskActions/index.d.ts.map +1 -0
- package/dist/components/TaskActions/index.js +3 -0
- package/dist/components/TaskActions/index.js.map +1 -0
- package/dist/components/TaskDetail/TaskDetail.d.ts +8 -0
- package/dist/components/TaskDetail/TaskDetail.d.ts.map +1 -0
- package/dist/components/TaskDetail/TaskDetail.js +116 -0
- package/dist/components/TaskDetail/TaskDetail.js.map +1 -0
- package/dist/components/TaskDetail/TaskDetailError.d.ts +7 -0
- package/dist/components/TaskDetail/TaskDetailError.d.ts.map +1 -0
- package/dist/components/TaskDetail/TaskDetailError.js +8 -0
- package/dist/components/TaskDetail/TaskDetailError.js.map +1 -0
- package/dist/components/TaskDetail/TaskDetailHeader.d.ts +7 -0
- package/dist/components/TaskDetail/TaskDetailHeader.d.ts.map +1 -0
- package/dist/components/TaskDetail/TaskDetailHeader.js +39 -0
- package/dist/components/TaskDetail/TaskDetailHeader.js.map +1 -0
- package/dist/components/TaskDetail/TaskDetailNotFound.d.ts +5 -0
- package/dist/components/TaskDetail/TaskDetailNotFound.d.ts.map +1 -0
- package/dist/components/TaskDetail/TaskDetailNotFound.js +6 -0
- package/dist/components/TaskDetail/TaskDetailNotFound.js.map +1 -0
- package/dist/components/TaskDetail/TaskDetailSkeleton.d.ts +5 -0
- package/dist/components/TaskDetail/TaskDetailSkeleton.d.ts.map +1 -0
- package/dist/components/TaskDetail/TaskDetailSkeleton.js +6 -0
- package/dist/components/TaskDetail/TaskDetailSkeleton.js.map +1 -0
- package/dist/components/TaskDetail/index.d.ts +6 -0
- package/dist/components/TaskDetail/index.d.ts.map +1 -0
- package/dist/components/TaskDetail/index.js +6 -0
- package/dist/components/TaskDetail/index.js.map +1 -0
- package/dist/components/TaskInbox/TaskCard.d.ts +10 -0
- package/dist/components/TaskInbox/TaskCard.d.ts.map +1 -0
- package/dist/components/TaskInbox/TaskCard.js +90 -0
- package/dist/components/TaskInbox/TaskCard.js.map +1 -0
- package/dist/components/TaskInbox/TaskFilters.d.ts +10 -0
- package/dist/components/TaskInbox/TaskFilters.d.ts.map +1 -0
- package/dist/components/TaskInbox/TaskFilters.js +59 -0
- package/dist/components/TaskInbox/TaskFilters.js.map +1 -0
- package/dist/components/TaskInbox/TaskInbox.d.ts +12 -0
- package/dist/components/TaskInbox/TaskInbox.d.ts.map +1 -0
- package/dist/components/TaskInbox/TaskInbox.js +85 -0
- package/dist/components/TaskInbox/TaskInbox.js.map +1 -0
- package/dist/components/TaskInbox/TaskInboxEmpty.d.ts +7 -0
- package/dist/components/TaskInbox/TaskInboxEmpty.d.ts.map +1 -0
- package/dist/components/TaskInbox/TaskInboxEmpty.js +6 -0
- package/dist/components/TaskInbox/TaskInboxEmpty.js.map +1 -0
- package/dist/components/TaskInbox/TaskInboxError.d.ts +7 -0
- package/dist/components/TaskInbox/TaskInboxError.d.ts.map +1 -0
- package/dist/components/TaskInbox/TaskInboxError.js +8 -0
- package/dist/components/TaskInbox/TaskInboxError.js.map +1 -0
- package/dist/components/TaskInbox/TaskInboxSkeleton.d.ts +6 -0
- package/dist/components/TaskInbox/TaskInboxSkeleton.d.ts.map +1 -0
- package/dist/components/TaskInbox/TaskInboxSkeleton.js +6 -0
- package/dist/components/TaskInbox/TaskInboxSkeleton.js.map +1 -0
- package/dist/components/TaskInbox/index.d.ts +7 -0
- package/dist/components/TaskInbox/index.d.ts.map +1 -0
- package/dist/components/TaskInbox/index.js +7 -0
- package/dist/components/TaskInbox/index.js.map +1 -0
- package/dist/components/WorkflowForm/FieldRenderer.d.ts +14 -0
- package/dist/components/WorkflowForm/FieldRenderer.d.ts.map +1 -0
- package/dist/components/WorkflowForm/FieldRenderer.js +28 -0
- package/dist/components/WorkflowForm/FieldRenderer.js.map +1 -0
- package/dist/components/WorkflowForm/FormSection.d.ts +10 -0
- package/dist/components/WorkflowForm/FormSection.d.ts.map +1 -0
- package/dist/components/WorkflowForm/FormSection.js +12 -0
- package/dist/components/WorkflowForm/FormSection.js.map +1 -0
- package/dist/components/WorkflowForm/WorkflowForm.d.ts +11 -0
- package/dist/components/WorkflowForm/WorkflowForm.d.ts.map +1 -0
- package/dist/components/WorkflowForm/WorkflowForm.js +61 -0
- package/dist/components/WorkflowForm/WorkflowForm.js.map +1 -0
- package/dist/components/WorkflowForm/buildZodSchema.d.ts +4 -0
- package/dist/components/WorkflowForm/buildZodSchema.d.ts.map +1 -0
- package/dist/components/WorkflowForm/buildZodSchema.js +79 -0
- package/dist/components/WorkflowForm/buildZodSchema.js.map +1 -0
- package/dist/components/WorkflowForm/fields/CheckboxField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/CheckboxField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/CheckboxField.js +7 -0
- package/dist/components/WorkflowForm/fields/CheckboxField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/DateField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/DateField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/DateField.js +7 -0
- package/dist/components/WorkflowForm/fields/DateField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/FileUploadField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/FileUploadField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/FileUploadField.js +80 -0
- package/dist/components/WorkflowForm/fields/FileUploadField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/MultiSelectField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/MultiSelectField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/MultiSelectField.js +33 -0
- package/dist/components/WorkflowForm/fields/MultiSelectField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/NumberField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/NumberField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/NumberField.js +16 -0
- package/dist/components/WorkflowForm/fields/NumberField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/ReadonlyField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/ReadonlyField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/ReadonlyField.js +6 -0
- package/dist/components/WorkflowForm/fields/ReadonlyField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/SelectField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/SelectField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/SelectField.js +7 -0
- package/dist/components/WorkflowForm/fields/SelectField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/TextField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/TextField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/TextField.js +7 -0
- package/dist/components/WorkflowForm/fields/TextField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/TextareaField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/TextareaField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/TextareaField.js +7 -0
- package/dist/components/WorkflowForm/fields/TextareaField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/UnknownField.d.ts +3 -0
- package/dist/components/WorkflowForm/fields/UnknownField.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/UnknownField.js +7 -0
- package/dist/components/WorkflowForm/fields/UnknownField.js.map +1 -0
- package/dist/components/WorkflowForm/fields/shared.d.ts +22 -0
- package/dist/components/WorkflowForm/fields/shared.d.ts.map +1 -0
- package/dist/components/WorkflowForm/fields/shared.js +2 -0
- package/dist/components/WorkflowForm/fields/shared.js.map +1 -0
- package/dist/components/WorkflowForm/index.d.ts +5 -0
- package/dist/components/WorkflowForm/index.d.ts.map +1 -0
- package/dist/components/WorkflowForm/index.js +5 -0
- package/dist/components/WorkflowForm/index.js.map +1 -0
- package/dist/hooks/mutation-error-handler.d.ts +3 -0
- package/dist/hooks/mutation-error-handler.d.ts.map +1 -0
- package/dist/hooks/mutation-error-handler.js +20 -0
- package/dist/hooks/mutation-error-handler.js.map +1 -0
- package/dist/hooks/useProcessTimeline.d.ts +8 -0
- package/dist/hooks/useProcessTimeline.d.ts.map +1 -0
- package/dist/hooks/useProcessTimeline.js +17 -0
- package/dist/hooks/useProcessTimeline.js.map +1 -0
- package/dist/hooks/useTask.d.ts +3 -0
- package/dist/hooks/useTask.d.ts.map +1 -0
- package/dist/hooks/useTask.js +11 -0
- package/dist/hooks/useTask.js.map +1 -0
- package/dist/hooks/useTaskAction.d.ts +3 -0
- package/dist/hooks/useTaskAction.d.ts.map +1 -0
- package/dist/hooks/useTaskAction.js +15 -0
- package/dist/hooks/useTaskAction.js.map +1 -0
- package/dist/hooks/useTaskClaim.d.ts +5 -0
- package/dist/hooks/useTaskClaim.d.ts.map +1 -0
- package/dist/hooks/useTaskClaim.js +23 -0
- package/dist/hooks/useTaskClaim.js.map +1 -0
- package/dist/hooks/useTaskList.d.ts +3 -0
- package/dist/hooks/useTaskList.d.ts.map +1 -0
- package/dist/hooks/useTaskList.js +23 -0
- package/dist/hooks/useTaskList.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/WorkflowProvider.d.ts +32 -0
- package/dist/provider/WorkflowProvider.d.ts.map +1 -0
- package/dist/provider/WorkflowProvider.js +52 -0
- package/dist/provider/WorkflowProvider.js.map +1 -0
- package/dist/test-setup.d.ts +2 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/test-setup.js +2 -0
- package/dist/test-setup.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types.d.ts +141 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
function formatDate(dateString) {
|
|
4
|
+
return new Date(dateString).toLocaleDateString(undefined, {
|
|
5
|
+
month: 'short',
|
|
6
|
+
day: 'numeric',
|
|
7
|
+
year: 'numeric',
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
function isOverdue(dueDate) {
|
|
11
|
+
if (!dueDate)
|
|
12
|
+
return false;
|
|
13
|
+
return new Date(dueDate).getTime() <= Date.now();
|
|
14
|
+
}
|
|
15
|
+
function formatStatus(status) {
|
|
16
|
+
return status.replace(/_/g, ' ').replace(/\b\w/g, (c) => c.toUpperCase());
|
|
17
|
+
}
|
|
18
|
+
function statusClasses(status) {
|
|
19
|
+
switch (status) {
|
|
20
|
+
case 'pending':
|
|
21
|
+
return 'bg-amber-100 text-amber-700 dark:bg-amber-400/15 dark:text-amber-400';
|
|
22
|
+
case 'in_progress':
|
|
23
|
+
case 'active':
|
|
24
|
+
return 'bg-primary/10 text-primary';
|
|
25
|
+
case 'completed':
|
|
26
|
+
return 'bg-emerald-100 text-emerald-700 dark:bg-emerald-400/15 dark:text-emerald-400';
|
|
27
|
+
case 'suspended':
|
|
28
|
+
return 'bg-gray-100 text-gray-700 dark:bg-gray-400/15 dark:text-gray-400';
|
|
29
|
+
default:
|
|
30
|
+
return 'bg-muted text-muted-foreground';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export const TaskDetailHeader = forwardRef(function TaskDetailHeader({ task, className }, ref) {
|
|
34
|
+
const overdue = isOverdue(task.dueDate);
|
|
35
|
+
return (_jsxs("div", { ref: ref, className: `space-y-4 ${className ?? ''}`, "data-component": "task-detail-header", children: [_jsxs("div", { className: "flex items-start gap-3", "data-slot": "primary", children: [_jsx("span", { className: `mt-1 inline-flex shrink-0 items-center rounded-lg px-2.5 py-1 text-[11px] font-bold uppercase tracking-wider ${statusClasses(task.status)}`, "data-badge": "status", "data-status": task.status, children: formatStatus(task.status) }), _jsx("h1", { className: "text-2xl font-bold leading-snug text-foreground", children: task.name })] }), _jsx("div", { className: "rounded-2xl border border-border bg-card shadow-sm", "data-slot": "meta", children: _jsxs("div", { className: "grid grid-cols-2 divide-x divide-border sm:grid-cols-4", children: [(task.workflowName ?? task.definitionName) && (_jsxs("div", { className: "px-5 py-4", "data-field": "workflow", children: [_jsx("span", { className: "mb-1.5 block text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: "Workflow" }), _jsx("span", { className: "block text-sm font-semibold text-foreground", children: task.workflowName ?? task.definitionName })] })), task.currentState && (_jsxs("div", { className: "px-5 py-4", "data-field": "state", children: [_jsx("span", { className: "mb-1.5 block text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: "State" }), _jsx("span", { className: "block font-mono text-xs font-semibold text-primary", children: task.currentState })] })), _jsxs("div", { className: "px-5 py-4", "data-field": "assigned", children: [_jsx("span", { className: "mb-1.5 block text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: task.assignedUser ? 'Assigned To' : 'Role' }), _jsx("span", { className: "block text-sm font-semibold text-foreground", children: task.assignedUser
|
|
36
|
+
? (task.assignedUserDisplayName ?? task.assignedUser)
|
|
37
|
+
: task.assignedRole })] }), task.dueDate && (_jsxs("div", { className: "px-5 py-4", "data-field": "due-date", children: [_jsx("span", { className: "mb-1.5 block text-[10px] font-bold uppercase tracking-widest text-muted-foreground", children: "Due Date" }), _jsxs("span", { className: "flex items-center gap-2 text-sm font-semibold text-foreground", children: [formatDate(task.dueDate), overdue && (_jsx("span", { className: "rounded bg-red-100 px-1.5 py-0.5 text-[10px] font-bold uppercase text-red-600 dark:bg-red-500/15 dark:text-red-400", "data-badge": "overdue", role: "status", "aria-label": "Overdue", children: "Overdue" }))] })] }))] }) })] }));
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=TaskDetailHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDetailHeader.js","sourceRoot":"","sources":["../../../src/components/TaskDetail/TaskDetailHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAQnC,SAAS,UAAU,CAAC,UAAkB;IACpC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,SAAS,EAAE;QACxD,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,OAAsB;IACvC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,sEAAsE,CAAC;QAChF,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,4BAA4B,CAAC;QACtC,KAAK,WAAW;YACd,OAAO,8EAA8E,CAAC;QACxF,KAAK,WAAW;YACd,OAAO,kEAAkE,CAAC;QAC5E;YACE,OAAO,gCAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CACxC,SAAS,gBAAgB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAExC,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,SAAS,IAAI,EAAE,EAAE,oBAAiB,oBAAoB,aAC3F,eAAK,SAAS,EAAC,wBAAwB,eAAW,SAAS,aACzD,eACE,SAAS,EAAE,gHAAgH,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,gBAC5I,QAAQ,iBACN,IAAI,CAAC,MAAM,YAEvB,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GACrB,EACP,aAAI,SAAS,EAAC,iDAAiD,YAAE,IAAI,CAAC,IAAI,GAAM,IAC5E,EAEN,cAAK,SAAS,EAAC,oDAAoD,eAAW,MAAM,YAClF,eAAK,SAAS,EAAC,wDAAwD,aACpE,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7C,eAAK,SAAS,EAAC,WAAW,gBAAY,UAAU,aAC9C,eAAM,SAAS,EAAC,oFAAoF,yBAE7F,EACP,eAAM,SAAS,EAAC,6CAA6C,YAC1D,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,GACpC,IACH,CACP,EAEA,IAAI,CAAC,YAAY,IAAI,CACpB,eAAK,SAAS,EAAC,WAAW,gBAAY,OAAO,aAC3C,eAAM,SAAS,EAAC,oFAAoF,sBAE7F,EACP,eAAM,SAAS,EAAC,oDAAoD,YACjE,IAAI,CAAC,YAAY,GACb,IACH,CACP,EAED,eAAK,SAAS,EAAC,WAAW,gBAAY,UAAU,aAC9C,eAAM,SAAS,EAAC,oFAAoF,YACjG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,GACtC,EACP,eAAM,SAAS,EAAC,6CAA6C,YAC1D,IAAI,CAAC,YAAY;wCAChB,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,YAAY,CAAC;wCACrD,CAAC,CAAC,IAAI,CAAC,YAAY,GAChB,IACH,EAEL,IAAI,CAAC,OAAO,IAAI,CACf,eAAK,SAAS,EAAC,WAAW,gBAAY,UAAU,aAC9C,eAAM,SAAS,EAAC,oFAAoF,yBAE7F,EACP,gBAAM,SAAS,EAAC,+DAA+D,aAC5E,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EACxB,OAAO,IAAI,CACV,eACE,SAAS,EAAC,oHAAoH,gBACnH,SAAS,EACpB,IAAI,EAAC,QAAQ,gBACF,SAAS,wBAGf,CACR,IACI,IACH,CACP,IACG,GACF,IACF,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface TaskDetailNotFoundProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const TaskDetailNotFound: import("react").ForwardRefExoticComponent<TaskDetailNotFoundProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
|
+
//# sourceMappingURL=TaskDetailNotFound.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDetailNotFound.d.ts","sourceRoot":"","sources":["../../../src/components/TaskDetail/TaskDetailNotFound.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,oHA8B9B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
export const TaskDetailNotFound = forwardRef(function TaskDetailNotFound({ className }, ref) {
|
|
4
|
+
return (_jsxs("div", { ref: ref, className: `flex flex-col items-center gap-3 rounded-2xl border border-dashed border-border bg-card px-6 py-12 text-center shadow-sm ${className ?? ''}`, "data-component": "task-detail-not-found", role: "status", children: [_jsx("svg", { className: "h-12 w-12 text-muted-foreground/40", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }), _jsx("h2", { className: "text-lg font-semibold text-foreground", children: "Task not found" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "The task you are looking for does not exist or has been removed." })] }));
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=TaskDetailNotFound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDetailNotFound.js","sourceRoot":"","sources":["../../../src/components/TaskDetail/TaskDetailNotFound.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAMnC,MAAM,CAAC,MAAM,kBAAkB,GAAG,UAAU,CAC1C,SAAS,kBAAkB,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG;IAC5C,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,4HAA4H,SAAS,IAAI,EAAE,EAAE,oBACzI,uBAAuB,EACtC,IAAI,EAAC,QAAQ,aAEb,cACE,SAAS,EAAC,oCAAoC,EAC9C,KAAK,EAAC,4BAA4B,EAClC,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,WAAW,EACnB,WAAW,EAAE,GAAG,EAChB,MAAM,EAAC,cAAc,YAErB,eACE,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EACtB,CAAC,EAAC,qEAAqE,GACvE,GACE,EACN,aAAI,SAAS,EAAC,uCAAuC,+BAAoB,EACzE,YAAG,SAAS,EAAC,+BAA+B,iFAExC,IACA,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface TaskDetailSkeletonProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
}
|
|
4
|
+
export declare const TaskDetailSkeleton: import("react").ForwardRefExoticComponent<TaskDetailSkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
5
|
+
//# sourceMappingURL=TaskDetailSkeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDetailSkeleton.d.ts","sourceRoot":"","sources":["../../../src/components/TaskDetail/TaskDetailSkeleton.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,oHA2G9B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
export const TaskDetailSkeleton = forwardRef(function TaskDetailSkeleton({ className }, ref) {
|
|
4
|
+
return (_jsxs("div", { ref: ref, className: `space-y-4 ${className ?? ''}`, role: "status", "aria-label": "Loading task details", children: [_jsx("span", { className: "sr-only", children: "Loading task details..." }), _jsxs("div", { "aria-hidden": "true", className: "space-y-4", "data-skeleton": "detail", children: [_jsxs("div", { className: "space-y-4", "data-skeleton-section": "header", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "h-7 w-24 animate-pulse rounded-lg bg-muted", "data-skeleton-line": "badge" }), _jsx("div", { className: "h-7 w-72 animate-pulse rounded bg-muted", "data-skeleton-line": "title" })] }), _jsx("div", { className: "grid grid-cols-4 divide-x divide-border rounded-2xl border border-border bg-card shadow-sm", children: Array.from({ length: 4 }, (_, i) => (_jsxs("div", { className: "space-y-2 px-5 py-4", children: [_jsx("div", { className: "h-2.5 w-16 animate-pulse rounded bg-muted", "data-skeleton-line": "meta" }), _jsx("div", { className: "h-4 w-28 animate-pulse rounded bg-muted", "data-skeleton-line": "meta" })] }, i))) })] }), _jsxs("div", { className: "overflow-hidden rounded-2xl border border-border bg-card shadow-sm", "data-skeleton-section": "form", children: [_jsx("div", { className: "border-b border-border px-6 py-4", children: _jsx("div", { className: "h-3 w-24 animate-pulse rounded bg-muted" }) }), _jsx("div", { className: "space-y-4 px-6 py-5", children: Array.from({ length: 3 }, (_, i) => (_jsxs("div", { className: "space-y-1.5", children: [_jsx("div", { className: "h-3 w-20 animate-pulse rounded bg-muted", "data-skeleton-line": "field" }), _jsx("div", { className: "h-9 w-full animate-pulse rounded-xl bg-muted", "data-skeleton-line": "field" })] }, i))) })] }), _jsxs("div", { className: "flex gap-3", "data-skeleton-section": "actions", children: [_jsx("div", { className: "h-10 w-28 animate-pulse rounded-xl bg-muted", "data-skeleton-line": "button" }), _jsx("div", { className: "h-10 w-24 animate-pulse rounded-xl bg-muted", "data-skeleton-line": "button" }), _jsx("div", { className: "h-10 w-36 animate-pulse rounded-xl bg-muted", "data-skeleton-line": "button" })] }), _jsxs("div", { className: "space-y-5", "data-skeleton-section": "timeline", children: [_jsx("div", { className: "h-3 w-28 animate-pulse rounded bg-muted" }), Array.from({ length: 3 }, (_, i) => (_jsxs("div", { className: "flex gap-4", "data-skeleton-line": "entry", children: [_jsxs("div", { className: "flex w-10 shrink-0 flex-col items-center", children: [_jsx("div", { className: "h-10 w-10 animate-pulse rounded-2xl bg-muted" }), i < 2 && (_jsx("div", { className: "my-1.5 w-px flex-1 bg-border", style: { minHeight: '24px' } }))] }), _jsx("div", { className: "mb-4 flex-1 rounded-2xl border border-border bg-card px-5 py-4 shadow-sm", children: _jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "flex-1 space-y-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "h-5 w-20 animate-pulse rounded-md bg-muted" }), _jsx("div", { className: "h-3.5 w-3.5 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-5 w-24 animate-pulse rounded-md bg-muted" })] }), _jsx("div", { className: "h-3 w-32 animate-pulse rounded bg-muted" })] }), _jsx("div", { className: "h-3 w-24 animate-pulse rounded bg-muted" })] }) })] }, i)))] })] })] }));
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=TaskDetailSkeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskDetailSkeleton.js","sourceRoot":"","sources":["../../../src/components/TaskDetail/TaskDetailSkeleton.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TaskDetail, type TaskDetailProps } from './TaskDetail';
|
|
2
|
+
export { TaskDetailHeader, type TaskDetailHeaderProps } from './TaskDetailHeader';
|
|
3
|
+
export { TaskDetailSkeleton, type TaskDetailSkeletonProps } from './TaskDetailSkeleton';
|
|
4
|
+
export { TaskDetailNotFound, type TaskDetailNotFoundProps } from './TaskDetailNotFound';
|
|
5
|
+
export { TaskDetailError, type TaskDetailErrorProps } from './TaskDetailError';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TaskDetail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { TaskDetail } from './TaskDetail';
|
|
2
|
+
export { TaskDetailHeader } from './TaskDetailHeader';
|
|
3
|
+
export { TaskDetailSkeleton } from './TaskDetailSkeleton';
|
|
4
|
+
export { TaskDetailNotFound } from './TaskDetailNotFound';
|
|
5
|
+
export { TaskDetailError } from './TaskDetailError';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TaskDetail/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAA8B,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAgC,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAgC,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,eAAe,EAA6B,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TaskSummary } from '../../types';
|
|
2
|
+
export interface TaskCardProps {
|
|
3
|
+
task: TaskSummary;
|
|
4
|
+
onClick?: (task: TaskSummary) => void;
|
|
5
|
+
onClaim?: (task: TaskSummary) => void;
|
|
6
|
+
onAssignToTeam?: (task: TaskSummary) => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const TaskCard: import("react").ForwardRefExoticComponent<TaskCardProps & import("react").RefAttributes<HTMLLIElement>>;
|
|
10
|
+
//# sourceMappingURL=TaskCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCard.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAwDD,eAAO,MAAM,QAAQ,yGA6InB,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
function timeAgo(dateString) {
|
|
4
|
+
const seconds = Math.floor((Date.now() - new Date(dateString).getTime()) / 1000);
|
|
5
|
+
if (seconds < 60)
|
|
6
|
+
return 'just now';
|
|
7
|
+
const minutes = Math.floor(seconds / 60);
|
|
8
|
+
if (minutes < 60)
|
|
9
|
+
return `${minutes}m ago`;
|
|
10
|
+
const hours = Math.floor(minutes / 60);
|
|
11
|
+
if (hours < 24)
|
|
12
|
+
return `${hours}h ago`;
|
|
13
|
+
const days = Math.floor(hours / 24);
|
|
14
|
+
return `${days}d ago`;
|
|
15
|
+
}
|
|
16
|
+
function formatDate(dateString) {
|
|
17
|
+
return new Date(dateString).toLocaleDateString(undefined, {
|
|
18
|
+
month: 'short',
|
|
19
|
+
day: 'numeric',
|
|
20
|
+
year: 'numeric',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
function isOverdue(dueDate) {
|
|
24
|
+
if (!dueDate)
|
|
25
|
+
return false;
|
|
26
|
+
return new Date(dueDate).getTime() <= Date.now();
|
|
27
|
+
}
|
|
28
|
+
function daysUntilDue(dueDate) {
|
|
29
|
+
const now = new Date();
|
|
30
|
+
now.setHours(0, 0, 0, 0);
|
|
31
|
+
const due = new Date(dueDate);
|
|
32
|
+
due.setHours(0, 0, 0, 0);
|
|
33
|
+
const diffMs = due.getTime() - now.getTime();
|
|
34
|
+
const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));
|
|
35
|
+
if (diffDays > 0)
|
|
36
|
+
return { text: `${diffDays}d left`, overdue: false };
|
|
37
|
+
if (diffDays === 0)
|
|
38
|
+
return { text: '0 days overdue', overdue: true };
|
|
39
|
+
return { text: `${Math.abs(diffDays)} days overdue`, overdue: true };
|
|
40
|
+
}
|
|
41
|
+
const DEFINITION_COLORS = {
|
|
42
|
+
0: 'border-emerald-500/40 bg-emerald-50 text-emerald-700 dark:bg-emerald-500/15 dark:text-emerald-400',
|
|
43
|
+
1: 'border-violet-500/40 bg-violet-50 text-violet-700 dark:bg-violet-500/15 dark:text-violet-400',
|
|
44
|
+
2: 'border-sky-500/40 bg-sky-50 text-sky-700 dark:bg-sky-500/15 dark:text-sky-400',
|
|
45
|
+
3: 'border-amber-500/40 bg-amber-50 text-amber-700 dark:bg-amber-500/15 dark:text-amber-400',
|
|
46
|
+
4: 'border-rose-500/40 bg-rose-50 text-rose-700 dark:bg-rose-500/15 dark:text-rose-400',
|
|
47
|
+
};
|
|
48
|
+
function definitionColor(name) {
|
|
49
|
+
let hash = 0;
|
|
50
|
+
for (let i = 0; i < name.length; i++) {
|
|
51
|
+
hash = (hash * 31 + name.charCodeAt(i)) | 0;
|
|
52
|
+
}
|
|
53
|
+
const idx = Math.abs(hash) % Object.keys(DEFINITION_COLORS).length;
|
|
54
|
+
return DEFINITION_COLORS[idx] ?? DEFINITION_COLORS[0];
|
|
55
|
+
}
|
|
56
|
+
export const TaskCard = forwardRef(function TaskCard({ task, onClick, onClaim, onAssignToTeam, className }, ref) {
|
|
57
|
+
const overdue = isOverdue(task.dueDate);
|
|
58
|
+
const dueInfo = task.dueDate ? daysUntilDue(task.dueDate) : null;
|
|
59
|
+
return (_jsx("li", { ref: ref, role: "listitem", tabIndex: 0, "aria-label": `Task: ${task.name}`, "data-task-id": task.id, "data-status": task.status, "data-overdue": overdue || undefined, className: [
|
|
60
|
+
'group rounded-lg border border-border bg-card px-5 py-4 transition-colors',
|
|
61
|
+
'hover:border-border/80 hover:shadow-sm',
|
|
62
|
+
'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring',
|
|
63
|
+
onClick ? 'cursor-pointer' : '',
|
|
64
|
+
className ?? '',
|
|
65
|
+
].join(' '), onClick: (e) => {
|
|
66
|
+
if (e.target.closest('button'))
|
|
67
|
+
return;
|
|
68
|
+
onClick?.(task);
|
|
69
|
+
}, onKeyDown: (e) => {
|
|
70
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
71
|
+
if (e.target.closest('button'))
|
|
72
|
+
return;
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
onClick?.(task);
|
|
75
|
+
}
|
|
76
|
+
}, children: _jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "mb-1.5 flex items-center gap-2", children: [_jsx("span", { className: `inline-block h-2.5 w-2.5 shrink-0 rounded-full ${overdue
|
|
77
|
+
? 'bg-red-500'
|
|
78
|
+
: task.status === 'in_progress'
|
|
79
|
+
? 'bg-blue-500'
|
|
80
|
+
: 'bg-amber-400'}`, "aria-hidden": "true" }), _jsx("span", { className: `inline-flex items-center rounded-md border px-2 py-0.5 text-[11px] font-semibold ${definitionColor(task.definitionName)}`, "data-field": "definition", children: task.definitionName }), _jsx("span", { className: "text-xs text-muted-foreground", "data-field": "created", "aria-label": `Created ${timeAgo(task.createdAt)}`, children: timeAgo(task.createdAt) })] }), _jsx("p", { title: task.name, className: "truncate text-sm font-semibold text-foreground", children: task.name }), _jsxs("div", { className: "mt-1.5 flex items-center gap-2", children: [_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 text-[11px] font-mono text-muted-foreground", children: task.id }), task.dueDate && (_jsxs(_Fragment, { children: [_jsxs("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", "data-field": "due-date", children: [_jsx("svg", { className: "h-3 w-3", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5" }) }), "Due ", formatDate(task.dueDate)] }), dueInfo && (_jsx("span", { className: `rounded-full px-2 py-0.5 text-[11px] font-semibold ${dueInfo.overdue
|
|
81
|
+
? 'bg-red-50 text-red-600 dark:bg-red-500/15 dark:text-red-400'
|
|
82
|
+
: 'bg-emerald-50 text-emerald-600 dark:bg-emerald-500/15 dark:text-emerald-400'}`, role: "status", "aria-label": dueInfo.text, children: dueInfo.text }))] }))] })] }), (onClaim || onAssignToTeam) && (_jsxs("div", { className: "flex shrink-0 flex-col items-end gap-1 pt-2", children: [onClaim && (_jsx("button", { type: "button", onClick: (e) => {
|
|
83
|
+
e.stopPropagation();
|
|
84
|
+
onClaim(task);
|
|
85
|
+
}, className: "rounded-full bg-emerald-500 px-4 py-1.5 text-xs font-semibold text-white transition-colors hover:bg-emerald-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-emerald-500", "aria-label": `Claim task ${task.name}`, children: "Claim" })), onAssignToTeam && (_jsx("button", { type: "button", onClick: (e) => {
|
|
86
|
+
e.stopPropagation();
|
|
87
|
+
onAssignToTeam(task);
|
|
88
|
+
}, className: "text-xs text-muted-foreground transition-colors hover:text-foreground", "aria-label": `Assign task ${task.name} to team`, children: "Assign to team" }))] }))] }) }));
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=TaskCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TaskFilters as TaskFiltersType } from '../../types';
|
|
2
|
+
export interface TaskFiltersProps {
|
|
3
|
+
filters: TaskFiltersType;
|
|
4
|
+
userRoles: string[];
|
|
5
|
+
onFilterChange: (filters: TaskFiltersType) => void;
|
|
6
|
+
onClear: () => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const TaskFilters: import("react").ForwardRefExoticComponent<TaskFiltersProps & import("react").RefAttributes<HTMLElement>>;
|
|
10
|
+
//# sourceMappingURL=TaskFilters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskFilters.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskFilters.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,aAAa,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,eAAO,MAAM,WAAW,0GAwKtB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useRef, forwardRef } from 'react';
|
|
3
|
+
const DEBOUNCE_MS = 300;
|
|
4
|
+
export const TaskFilters = forwardRef(function TaskFilters({ filters, userRoles, onFilterChange, onClear, className }, ref) {
|
|
5
|
+
const [searchValue, setSearchValue] = useState(filters.search ?? '');
|
|
6
|
+
const timeoutRef = useRef();
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
setSearchValue(filters.search ?? '');
|
|
9
|
+
}, [filters.search]);
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
return () => {
|
|
12
|
+
if (timeoutRef.current)
|
|
13
|
+
clearTimeout(timeoutRef.current);
|
|
14
|
+
};
|
|
15
|
+
}, []);
|
|
16
|
+
const handleSearchChange = (e) => {
|
|
17
|
+
const value = e.target.value;
|
|
18
|
+
setSearchValue(value);
|
|
19
|
+
if (timeoutRef.current)
|
|
20
|
+
clearTimeout(timeoutRef.current);
|
|
21
|
+
timeoutRef.current = setTimeout(() => {
|
|
22
|
+
onFilterChange({ ...filters, search: value || undefined });
|
|
23
|
+
}, DEBOUNCE_MS);
|
|
24
|
+
};
|
|
25
|
+
const handleStatusChange = (e) => {
|
|
26
|
+
onFilterChange({ ...filters, status: e.target.value || undefined });
|
|
27
|
+
};
|
|
28
|
+
const handleRoleToggle = (role) => {
|
|
29
|
+
const current = filters.role ?? [];
|
|
30
|
+
const next = current.includes(role) ? current.filter((r) => r !== role) : [...current, role];
|
|
31
|
+
onFilterChange({ ...filters, role: next.length > 0 ? next : undefined });
|
|
32
|
+
};
|
|
33
|
+
const handleDateChange = (field, value) => {
|
|
34
|
+
const current = filters.dateRange ?? { start: '', end: '' };
|
|
35
|
+
const next = { ...current, [field]: value };
|
|
36
|
+
const hasValues = next.start || next.end;
|
|
37
|
+
onFilterChange({
|
|
38
|
+
...filters,
|
|
39
|
+
dateRange: hasValues ? next : undefined,
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
const hasFilters = Object.values(filters).some((v) => Array.isArray(v) ? v.length > 0 : v !== undefined && v !== '');
|
|
43
|
+
const formatDateDisplay = (dateStr) => {
|
|
44
|
+
if (!dateStr)
|
|
45
|
+
return '';
|
|
46
|
+
const d = new Date(dateStr + 'T00:00:00');
|
|
47
|
+
const mm = String(d.getMonth() + 1).padStart(2, '0');
|
|
48
|
+
const dd = String(d.getDate()).padStart(2, '0');
|
|
49
|
+
const yyyy = d.getFullYear();
|
|
50
|
+
return `${mm}/${dd}/${yyyy}`;
|
|
51
|
+
};
|
|
52
|
+
return (_jsxs("aside", { ref: ref, className: `flex flex-wrap items-center gap-3 rounded-lg border border-border bg-card px-4 py-3 ${className ?? ''}`, "aria-label": "Task filters", "data-component": "task-filters", children: [_jsxs("div", { className: "relative min-w-[180px] flex-1", children: [_jsx("svg", { className: "pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" }) }), _jsx("input", { id: "task-search", type: "search", placeholder: "Search tasks...", value: searchValue, onChange: handleSearchChange, "aria-label": "Search by task name or correlation ID", className: "w-full rounded-md border border-input bg-background py-1.5 pl-9 pr-3 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring" })] }), userRoles.length > 0 && (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Role" }), userRoles.map((role) => {
|
|
53
|
+
const active = filters.role?.includes(role) ?? false;
|
|
54
|
+
return (_jsx("button", { type: "button", onClick: () => handleRoleToggle(role), "aria-pressed": active, className: `rounded-md border px-2.5 py-1 text-xs font-medium transition-colors ${active
|
|
55
|
+
? 'border-primary bg-primary/10 text-primary'
|
|
56
|
+
: 'border-border text-muted-foreground hover:border-primary/50 hover:text-foreground'}`, children: role }, role));
|
|
57
|
+
})] })), _jsxs("select", { id: "status-filter", value: filters.status ?? '', onChange: handleStatusChange, "aria-label": "Filter by status", className: "rounded-md border border-input bg-background px-3 py-1.5 text-xs text-foreground focus:outline-none focus:ring-2 focus:ring-ring", children: [_jsx("option", { value: "", children: "All statuses" }), _jsx("option", { value: "pending", children: "Pending" }), _jsx("option", { value: "in_progress", children: "In Progress" })] }), _jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [_jsx("svg", { className: "h-3.5 w-3.5", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 2, stroke: "currentColor", "aria-hidden": "true", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5" }) }), _jsx("input", { id: "date-start", type: "date", value: filters.dateRange?.start ?? '', onChange: (e) => handleDateChange('start', e.target.value), "aria-label": "From date", className: "w-[110px] rounded border border-input bg-background px-1.5 py-1 text-xs text-foreground focus:outline-none focus:ring-2 focus:ring-ring" }), _jsx("span", { className: "text-muted-foreground", children: "\u2014" }), _jsx("input", { id: "date-end", type: "date", value: filters.dateRange?.end ?? '', onChange: (e) => handleDateChange('end', e.target.value), "aria-label": "To date", className: "w-[110px] rounded border border-input bg-background px-1.5 py-1 text-xs text-foreground focus:outline-none focus:ring-2 focus:ring-ring" })] }), hasFilters && (_jsx("button", { type: "button", onClick: onClear, "aria-label": "Clear all filters", className: "ml-auto text-xs font-medium text-muted-foreground transition-colors hover:text-foreground", children: "Clear" }))] }));
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=TaskFilters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskFilters.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskFilters.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TaskSummary, TaskInboxTab } from '../../types';
|
|
2
|
+
export interface TaskInboxProps {
|
|
3
|
+
defaultTab?: TaskInboxTab;
|
|
4
|
+
pageSize?: number;
|
|
5
|
+
onTaskClick?: (task: TaskSummary) => void;
|
|
6
|
+
onClaim?: (task: TaskSummary) => void;
|
|
7
|
+
onAssignToTeam?: (task: TaskSummary) => void;
|
|
8
|
+
onAssignAll?: () => void;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function TaskInbox({ defaultTab, pageSize, onTaskClick, onClaim, onAssignToTeam, onAssignAll, className, }: TaskInboxProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=TaskInbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInbox.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInbox.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAkC,MAAM,aAAa,CAAC;AAO7F,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAC;IAC7C,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,wBAAgB,SAAS,CAAC,EACxB,UAAoB,EACpB,QAAa,EACb,WAAW,EACX,OAAO,EACP,cAAc,EACd,WAAW,EACX,SAAS,GACV,EAAE,cAAc,2CA+MhB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useCallback, useRef } from 'react';
|
|
3
|
+
import { useTaskList } from '../../hooks/useTaskList';
|
|
4
|
+
import { useWorkflowContext } from '../../provider/WorkflowProvider';
|
|
5
|
+
import { TaskCard } from './TaskCard';
|
|
6
|
+
import { TaskFilters } from './TaskFilters';
|
|
7
|
+
import { TaskInboxSkeleton } from './TaskInboxSkeleton';
|
|
8
|
+
import { TaskInboxEmpty } from './TaskInboxEmpty';
|
|
9
|
+
import { TaskInboxError } from './TaskInboxError';
|
|
10
|
+
const TAB_CONFIG = [
|
|
11
|
+
{ id: 'inbox', label: 'Inbox' },
|
|
12
|
+
{ id: 'available', label: 'Available' },
|
|
13
|
+
{ id: 'my-tasks', label: 'My Tasks' },
|
|
14
|
+
{ id: 'team', label: 'Team' },
|
|
15
|
+
{ id: 'overdue', label: 'Overdue' },
|
|
16
|
+
];
|
|
17
|
+
export function TaskInbox({ defaultTab = 'inbox', pageSize = 20, onTaskClick, onClaim, onAssignToTeam, onAssignAll, className, }) {
|
|
18
|
+
const { userContext } = useWorkflowContext();
|
|
19
|
+
const [activeTab, setActiveTab] = useState(defaultTab);
|
|
20
|
+
const [filters, setFilters] = useState({});
|
|
21
|
+
const [page, setPage] = useState(1);
|
|
22
|
+
const listRef = useRef(null);
|
|
23
|
+
const tabRefs = useRef([]);
|
|
24
|
+
const queryFilters = { ...filters };
|
|
25
|
+
const hasActiveFilters = Object.keys(queryFilters).length > 0;
|
|
26
|
+
const { data, isLoading, isError, error, refetch } = useTaskList({
|
|
27
|
+
tab: activeTab,
|
|
28
|
+
filters: hasActiveFilters ? queryFilters : undefined,
|
|
29
|
+
page,
|
|
30
|
+
pageSize,
|
|
31
|
+
});
|
|
32
|
+
const handleTabChange = useCallback((tab) => {
|
|
33
|
+
setActiveTab(tab);
|
|
34
|
+
setPage(1);
|
|
35
|
+
}, []);
|
|
36
|
+
const handleFilterChange = useCallback((newFilters) => {
|
|
37
|
+
setFilters(newFilters);
|
|
38
|
+
setPage(1);
|
|
39
|
+
}, []);
|
|
40
|
+
const handleClearFilters = useCallback(() => {
|
|
41
|
+
setFilters({});
|
|
42
|
+
setPage(1);
|
|
43
|
+
}, []);
|
|
44
|
+
const handleTabKeyDown = useCallback((e, index) => {
|
|
45
|
+
let nextIndex = null;
|
|
46
|
+
if (e.key === 'ArrowRight')
|
|
47
|
+
nextIndex = (index + 1) % TAB_CONFIG.length;
|
|
48
|
+
if (e.key === 'ArrowLeft')
|
|
49
|
+
nextIndex = (index - 1 + TAB_CONFIG.length) % TAB_CONFIG.length;
|
|
50
|
+
if (nextIndex !== null) {
|
|
51
|
+
e.preventDefault();
|
|
52
|
+
const nextTab = TAB_CONFIG[nextIndex];
|
|
53
|
+
handleTabChange(nextTab.id);
|
|
54
|
+
tabRefs.current[nextIndex]?.focus();
|
|
55
|
+
}
|
|
56
|
+
}, [handleTabChange]);
|
|
57
|
+
const handleListKeyDown = useCallback((e) => {
|
|
58
|
+
const list = listRef.current;
|
|
59
|
+
if (!list)
|
|
60
|
+
return;
|
|
61
|
+
const items = Array.from(list.querySelectorAll('[role="listitem"]'));
|
|
62
|
+
const focused = document.activeElement;
|
|
63
|
+
const currentIndex = items.indexOf(focused);
|
|
64
|
+
let nextIndex = null;
|
|
65
|
+
if (e.key === 'ArrowDown')
|
|
66
|
+
nextIndex = Math.min(currentIndex + 1, items.length - 1);
|
|
67
|
+
if (e.key === 'ArrowUp')
|
|
68
|
+
nextIndex = Math.max(currentIndex - 1, 0);
|
|
69
|
+
if (nextIndex !== null && nextIndex !== currentIndex) {
|
|
70
|
+
e.preventDefault();
|
|
71
|
+
items[nextIndex]?.focus();
|
|
72
|
+
}
|
|
73
|
+
}, []);
|
|
74
|
+
const totalPages = data ? Math.ceil(data.total / pageSize) : 0;
|
|
75
|
+
const hasFilters = Object.values(filters).some((v) => Array.isArray(v) ? v.length > 0 : v !== undefined && v !== '');
|
|
76
|
+
const overdueCount = data?.items.filter((t) => t.dueDate && new Date(t.dueDate).getTime() <= Date.now()).length ?? 0;
|
|
77
|
+
return (_jsxs("div", { className: `space-y-4 ${className ?? ''}`, "data-component": "task-inbox", children: [_jsx(TaskFilters, { filters: filters, userRoles: userContext.roles, onFilterChange: handleFilterChange, onClear: handleClearFilters }), _jsx("div", { role: "tablist", "aria-label": "Task tabs", className: "flex items-center gap-1 border-b border-border pb-px", children: TAB_CONFIG.map((tab, index) => (_jsxs("button", { ref: (el) => {
|
|
78
|
+
tabRefs.current[index] = el;
|
|
79
|
+
}, role: "tab", id: `tab-${tab.id}`, "aria-selected": activeTab === tab.id, "aria-controls": `tabpanel-${tab.id}`, tabIndex: activeTab === tab.id ? 0 : -1, onClick: () => handleTabChange(tab.id), onKeyDown: (e) => handleTabKeyDown(e, index), className: `relative flex items-center gap-1.5 rounded-full px-4 py-1.5 text-sm font-medium transition-colors ${activeTab === tab.id
|
|
80
|
+
? 'bg-primary text-primary-foreground'
|
|
81
|
+
: 'text-muted-foreground hover:text-foreground'}`, children: [tab.label, tab.id === 'overdue' && overdueCount > 0 && (_jsx("span", { className: `inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1 text-[10px] font-bold ${activeTab === 'overdue'
|
|
82
|
+
? 'bg-primary-foreground/20 text-primary-foreground'
|
|
83
|
+
: 'bg-red-100 text-red-600 dark:bg-red-500/20 dark:text-red-400'}`, children: overdueCount }))] }, tab.id))) }), !isLoading && !isError && data && data.items.length > 0 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-sm text-muted-foreground", children: [data.total, " ", data.total === 1 ? 'task' : 'tasks', " waiting"] }), onAssignAll && (activeTab === 'inbox' || activeTab === 'available') && (_jsx("button", { type: "button", onClick: onAssignAll, className: "text-sm font-medium text-primary transition-colors hover:text-primary/80", children: "Assign all available" }))] })), _jsxs("div", { role: "tabpanel", id: `tabpanel-${activeTab}`, "aria-labelledby": `tab-${activeTab}`, children: [isLoading && _jsx(TaskInboxSkeleton, { count: Math.min(pageSize, 5) }), isError && _jsx(TaskInboxError, { error: error, onRetry: () => refetch() }), !isLoading && !isError && data?.items.length === 0 && (_jsx(TaskInboxEmpty, { hasFilters: hasFilters, onClearFilters: handleClearFilters })), !isLoading && !isError && data && data.items.length > 0 && (_jsxs(_Fragment, { children: [_jsx("ul", { ref: listRef, role: "list", "aria-label": "Task list", onKeyDown: handleListKeyDown, className: "space-y-3", children: data.items.map((task) => (_jsx(TaskCard, { task: task, onClick: onTaskClick, onClaim: onClaim, onAssignToTeam: onAssignToTeam }, task.id))) }), totalPages > 1 && (_jsxs("nav", { "aria-label": "Pagination", className: "mt-4 flex items-center justify-center gap-3", children: [_jsx("button", { onClick: () => setPage((p) => Math.max(1, p - 1)), disabled: page <= 1, "aria-label": "Previous page", className: "rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50", children: "Previous" }), _jsxs("span", { "aria-current": "page", className: "text-sm text-muted-foreground", children: ["Page ", page, " of ", totalPages] }), _jsx("button", { onClick: () => setPage((p) => Math.min(totalPages, p + 1)), disabled: page >= totalPages, "aria-label": "Next page", className: "rounded-md px-3 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-accent hover:text-accent-foreground disabled:pointer-events-none disabled:opacity-50", children: "Next" })] }))] }))] })] }));
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=TaskInbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInbox.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInbox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface TaskInboxEmptyProps {
|
|
2
|
+
hasFilters: boolean;
|
|
3
|
+
onClearFilters: () => void;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const TaskInboxEmpty: import("react").ForwardRefExoticComponent<TaskInboxEmptyProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=TaskInboxEmpty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInboxEmpty.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInboxEmpty.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHAsB1B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
export const TaskInboxEmpty = forwardRef(function TaskInboxEmpty({ hasFilters, onClearFilters, className }, ref) {
|
|
4
|
+
return (_jsxs("div", { ref: ref, className: `flex flex-col items-center justify-center rounded-lg border border-dashed border-border py-16 text-center ${className ?? ''}`, "data-component": "task-inbox-empty", role: "status", children: [_jsx("p", { className: "text-sm text-muted-foreground", children: "No tasks matching your filters" }), hasFilters && (_jsx("button", { type: "button", onClick: onClearFilters, className: "mt-3 rounded-md px-3 py-1.5 text-sm font-medium text-primary transition-colors hover:bg-primary/10", children: "Clear filters" }))] }));
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=TaskInboxEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInboxEmpty.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInboxEmpty.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAQnC,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,GAAG;IACpE,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,6GAA6G,SAAS,IAAI,EAAE,EAAE,oBAC1H,kBAAkB,EACjC,IAAI,EAAC,QAAQ,aAEb,YAAG,SAAS,EAAC,+BAA+B,+CAAmC,EAC9E,UAAU,IAAI,CACb,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,oGAAoG,8BAGvG,CACV,IACG,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface TaskInboxErrorProps {
|
|
2
|
+
error: Error | null;
|
|
3
|
+
onRetry: () => void;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const TaskInboxError: import("react").ForwardRefExoticComponent<TaskInboxErrorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
7
|
+
//# sourceMappingURL=TaskInboxError.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInboxError.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInboxError.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHA4B1B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
import { isApiError } from '@quanticjs/react-core';
|
|
4
|
+
export const TaskInboxError = forwardRef(function TaskInboxError({ error, onRetry, className }, ref) {
|
|
5
|
+
const correlationId = error && isApiError(error) ? error.correlationId : undefined;
|
|
6
|
+
return (_jsxs("div", { ref: ref, className: `flex flex-col items-center justify-center rounded-lg border border-destructive/30 bg-destructive/5 py-16 text-center ${className ?? ''}`, "data-component": "task-inbox-error", role: "alert", children: [_jsx("p", { className: "text-sm font-medium text-destructive", children: "Something went wrong loading tasks" }), correlationId && (_jsxs("p", { className: "mt-1 text-xs text-muted-foreground", "data-field": "error-ref", children: ["Reference: ", correlationId] })), _jsx("button", { type: "button", onClick: onRetry, "aria-label": "Retry loading tasks", className: "mt-3 rounded-md bg-destructive px-3 py-1.5 text-sm font-medium text-destructive-foreground transition-colors hover:bg-destructive/90", children: "Retry" })] }));
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=TaskInboxError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInboxError.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInboxError.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAQnD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CACtC,SAAS,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,GAAG;IACxD,MAAM,aAAa,GAAG,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAEnF,OAAO,CACL,eACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,wHAAwH,SAAS,IAAI,EAAE,EAAE,oBACrI,kBAAkB,EACjC,IAAI,EAAC,OAAO,aAEZ,YAAG,SAAS,EAAC,sCAAsC,mDAAuC,EACzF,aAAa,IAAI,CAChB,aAAG,SAAS,EAAC,oCAAoC,gBAAY,WAAW,4BAC1D,aAAa,IACvB,CACL,EACD,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,gBACL,qBAAqB,EAChC,SAAS,EAAC,sIAAsI,sBAGzI,IACL,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface TaskInboxSkeletonProps {
|
|
2
|
+
count?: number;
|
|
3
|
+
className?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare const TaskInboxSkeleton: import("react").ForwardRefExoticComponent<TaskInboxSkeletonProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
6
|
+
//# sourceMappingURL=TaskInboxSkeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInboxSkeleton.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInboxSkeleton.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,mHAqC7B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef } from 'react';
|
|
3
|
+
export const TaskInboxSkeleton = forwardRef(function TaskInboxSkeleton({ count = 5, className }, ref) {
|
|
4
|
+
return (_jsxs("div", { ref: ref, className: className, role: "status", "aria-label": "Loading tasks", children: [_jsx("span", { className: "sr-only", children: "Loading tasks..." }), _jsx("ul", { role: "list", "aria-hidden": "true", className: "space-y-3", children: Array.from({ length: count }, (_, i) => (_jsx("li", { className: "rounded-lg border border-border bg-card px-5 py-4", "data-skeleton": "true", children: _jsxs("div", { className: "flex items-start justify-between gap-4", children: [_jsxs("div", { className: "flex-1 space-y-2.5", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "h-2.5 w-2.5 animate-pulse rounded-full bg-muted" }), _jsx("div", { className: "h-5 w-28 animate-pulse rounded-md bg-muted" }), _jsx("div", { className: "h-3 w-12 animate-pulse rounded bg-muted" })] }), _jsx("div", { className: "h-4 w-3/5 animate-pulse rounded bg-muted" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "h-4 w-14 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-3 w-28 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-4 w-14 animate-pulse rounded-full bg-muted" })] })] }), _jsxs("div", { className: "flex flex-col items-end gap-1.5 pt-2", children: [_jsx("div", { className: "h-8 w-16 animate-pulse rounded-full bg-muted" }), _jsx("div", { className: "h-3 w-20 animate-pulse rounded bg-muted" })] })] }) }, i))) })] }));
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=TaskInboxSkeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TaskInboxSkeleton.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/TaskInboxSkeleton.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAOnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CACzC,SAAS,iBAAiB,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG;IACtD,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAC,QAAQ,gBAAY,eAAe,aAC3E,eAAM,SAAS,EAAC,SAAS,iCAAwB,EACjD,aAAI,IAAI,EAAC,MAAM,iBAAa,MAAM,EAAC,SAAS,EAAC,WAAW,YACrD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACvC,aAEE,SAAS,EAAC,mDAAmD,mBAC/C,MAAM,YAEpB,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,oBAAoB,aACjC,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,iDAAiD,GAAG,EACnE,cAAK,SAAS,EAAC,4CAA4C,GAAG,EAC9D,cAAK,SAAS,EAAC,yCAAyC,GAAG,IACvD,EACN,cAAK,SAAS,EAAC,0CAA0C,GAAG,EAC5D,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,yCAAyC,GAAG,EAC3D,cAAK,SAAS,EAAC,yCAAyC,GAAG,EAC3D,cAAK,SAAS,EAAC,8CAA8C,GAAG,IAC5D,IACF,EACN,eAAK,SAAS,EAAC,sCAAsC,aACnD,cAAK,SAAS,EAAC,8CAA8C,GAAG,EAChE,cAAK,SAAS,EAAC,yCAAyC,GAAG,IACvD,IACF,IAtBD,CAAC,CAuBH,CACN,CAAC,GACC,IACD,CACP,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { TaskInbox, type TaskInboxProps } from './TaskInbox';
|
|
2
|
+
export { TaskCard, type TaskCardProps } from './TaskCard';
|
|
3
|
+
export { TaskFilters, type TaskFiltersProps } from './TaskFilters';
|
|
4
|
+
export { TaskInboxSkeleton, type TaskInboxSkeletonProps } from './TaskInboxSkeleton';
|
|
5
|
+
export { TaskInboxEmpty, type TaskInboxEmptyProps } from './TaskInboxEmpty';
|
|
6
|
+
export { TaskInboxError, type TaskInboxErrorProps } from './TaskInboxError';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TaskInbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { TaskInbox } from './TaskInbox';
|
|
2
|
+
export { TaskCard } from './TaskCard';
|
|
3
|
+
export { TaskFilters } from './TaskFilters';
|
|
4
|
+
export { TaskInboxSkeleton } from './TaskInboxSkeleton';
|
|
5
|
+
export { TaskInboxEmpty } from './TaskInboxEmpty';
|
|
6
|
+
export { TaskInboxError } from './TaskInboxError';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/TaskInbox/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAuB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAsB,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAyB,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAA+B,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,cAAc,EAA4B,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAA4B,MAAM,kBAAkB,CAAC"}
|