@parhelia/core 0.1.12889 → 0.1.12890

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.
Files changed (130) hide show
  1. package/dist/agents-view/AgentCard.js +2 -7
  2. package/dist/agents-view/AgentCard.js.map +1 -1
  3. package/dist/agents-view/AgentGalleryCard.js +2 -3
  4. package/dist/agents-view/AgentGalleryCard.js.map +1 -1
  5. package/dist/agents-view/AgentProfileIcon.d.ts +9 -0
  6. package/dist/agents-view/AgentProfileIcon.js +28 -0
  7. package/dist/agents-view/AgentProfileIcon.js.map +1 -0
  8. package/dist/agents-view/AgentsView.d.ts +6 -1
  9. package/dist/agents-view/AgentsView.js +4 -4
  10. package/dist/agents-view/AgentsView.js.map +1 -1
  11. package/dist/agents-view/DateAgentsGroup.js +1 -1
  12. package/dist/agents-view/DateAgentsGroup.js.map +1 -1
  13. package/dist/agents-view/ProfileAgentsGroup.js +2 -5
  14. package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
  15. package/dist/config/config.js +4 -3
  16. package/dist/config/config.js.map +1 -1
  17. package/dist/editor/GlobalMenuBar.js +2 -1
  18. package/dist/editor/GlobalMenuBar.js.map +1 -1
  19. package/dist/editor/MainLayout.js +11 -9
  20. package/dist/editor/MainLayout.js.map +1 -1
  21. package/dist/editor/WorkspaceTitleSwitcher.d.ts +5 -0
  22. package/dist/editor/WorkspaceTitleSwitcher.js +86 -0
  23. package/dist/editor/WorkspaceTitleSwitcher.js.map +1 -0
  24. package/dist/editor/ai/Agents.js +155 -43
  25. package/dist/editor/ai/Agents.js.map +1 -1
  26. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
  27. package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
  28. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +3 -3
  29. package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
  30. package/dist/editor/ai/terminal/components/AgentPromptComposer.d.ts +2 -1
  31. package/dist/editor/ai/terminal/components/AgentPromptComposer.js +5 -2
  32. package/dist/editor/ai/terminal/components/AgentPromptComposer.js.map +1 -1
  33. package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +2 -1
  34. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +5 -3
  35. package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
  36. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +3 -1
  37. package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
  38. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +2 -1
  39. package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
  40. package/dist/editor/bridge/protocol.d.ts +0 -5
  41. package/dist/editor/bridge/protocol.js.map +1 -1
  42. package/dist/editor/client/EditorShell.js +14 -7
  43. package/dist/editor/client/EditorShell.js.map +1 -1
  44. package/dist/editor/client/pageModelBuilder.d.ts +1 -0
  45. package/dist/editor/client/pageModelBuilder.js +22 -13
  46. package/dist/editor/client/pageModelBuilder.js.map +1 -1
  47. package/dist/editor/content-tree/IndicatorSettings.js +3 -2
  48. package/dist/editor/content-tree/IndicatorSettings.js.map +1 -1
  49. package/dist/editor/menubar/ItemLanguageVersion.js +3 -14
  50. package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
  51. package/dist/editor/menubar/VersionSelector.d.ts +3 -2
  52. package/dist/editor/menubar/VersionSelector.js +28 -12
  53. package/dist/editor/menubar/VersionSelector.js.map +1 -1
  54. package/dist/editor/notifications/NotificationItem.js +3 -2
  55. package/dist/editor/notifications/NotificationItem.js.map +1 -1
  56. package/dist/editor/notifications/watchEventOptions.js +3 -2
  57. package/dist/editor/notifications/watchEventOptions.js.map +1 -1
  58. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +8 -2
  59. package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
  60. package/dist/editor/page-viewer/PageViewerFrame.js +67 -0
  61. package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
  62. package/dist/editor/settings/panels/AgentProfileConfigPanel.js +3 -2
  63. package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
  64. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +3 -2
  65. package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
  66. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -2
  67. package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
  68. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +3 -2
  69. package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
  70. package/dist/editor/tree-indicators/GutterColumns.js +3 -2
  71. package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
  72. package/dist/editor/ui/Icons.js +1 -1
  73. package/dist/editor/ui/Icons.js.map +1 -1
  74. package/dist/editor/ui/SimpleTabs.d.ts +2 -1
  75. package/dist/editor/ui/SimpleTabs.js +23 -5
  76. package/dist/editor/ui/SimpleTabs.js.map +1 -1
  77. package/dist/editor/ui/Splitter.js +120 -3
  78. package/dist/editor/ui/Splitter.js.map +1 -1
  79. package/dist/editor/ui/splitterResizeEvent.d.ts +7 -0
  80. package/dist/editor/ui/splitterResizeEvent.js +6 -0
  81. package/dist/editor/ui/splitterResizeEvent.js.map +1 -1
  82. package/dist/revision.d.ts +2 -2
  83. package/dist/revision.js +2 -2
  84. package/dist/splash-screen/ModernSplashScreen.js +20 -11
  85. package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
  86. package/dist/task-board/TaskBoardWorkspace.js +112 -132
  87. package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
  88. package/dist/task-board/components/CreateTaskDialog.js +1 -1
  89. package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
  90. package/dist/task-board/components/ProjectDashboard.d.ts +12 -22
  91. package/dist/task-board/components/ProjectDashboard.js +120 -108
  92. package/dist/task-board/components/ProjectDashboard.js.map +1 -1
  93. package/dist/task-board/components/ProjectOverviewContent.js +3 -0
  94. package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
  95. package/dist/task-board/components/ProjectPropertiesPanel.d.ts +2 -0
  96. package/dist/task-board/components/ProjectPropertiesPanel.js +7 -4
  97. package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
  98. package/dist/task-board/components/ProjectSettingsDialog.d.ts +16 -0
  99. package/dist/task-board/components/ProjectSettingsDialog.js +55 -47
  100. package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
  101. package/dist/task-board/components/TaskAgentPanel.js +6 -5
  102. package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
  103. package/dist/task-board/components/TaskAssigneePicker.js +3 -2
  104. package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
  105. package/dist/task-board/components/TaskAttachmentsSection.js +1 -1
  106. package/dist/task-board/components/TaskAttachmentsSection.js.map +1 -1
  107. package/dist/task-board/components/TaskBoardHomeView.d.ts +1 -21
  108. package/dist/task-board/components/TaskBoardHomeView.js +18 -155
  109. package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
  110. package/dist/task-board/components/TaskBoardProjectListSidebar.js +74 -12
  111. package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
  112. package/dist/task-board/components/TaskBoardTitlebar.js +9 -52
  113. package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
  114. package/dist/task-board/components/TaskCard.js +5 -13
  115. package/dist/task-board/components/TaskCard.js.map +1 -1
  116. package/dist/task-board/components/TaskRow.js +3 -2
  117. package/dist/task-board/components/TaskRow.js.map +1 -1
  118. package/dist/task-board/taskBoardNavStore.d.ts +0 -2
  119. package/dist/task-board/taskBoardNavStore.js +0 -2
  120. package/dist/task-board/taskBoardNavStore.js.map +1 -1
  121. package/dist/task-board/views/DependencyGraphView.js +3 -2
  122. package/dist/task-board/views/DependencyGraphView.js.map +1 -1
  123. package/dist/task-board/views/KanbanView.js +161 -38
  124. package/dist/task-board/views/KanbanView.js.map +1 -1
  125. package/dist/task-board/views/ListView.js +1 -2
  126. package/dist/task-board/views/ListView.js.map +1 -1
  127. package/dist/task-board/views/WizardView.d.ts +2 -0
  128. package/dist/task-board/views/WizardView.js +7 -4
  129. package/dist/task-board/views/WizardView.js.map +1 -1
  130. package/package.json +1 -1
@@ -1,158 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo, useState } from "react";
3
- import { ClipboardCheck, Clock, FolderPlus, LayoutGrid, List, Loader2, SearchX, Shield, } from "lucide-react";
4
- import { SimpleTabs } from "../../editor/ui/SimpleTabs";
5
- import { cn } from "../../lib/utils";
6
- import { TaskStateProgressBar } from "./ProjectDashboard";
7
- function getTaskBoardGreeting(userFirstName) {
8
- const hour = new Date().getHours();
9
- const slots = [
10
- {
11
- label: "Still up",
12
- when: hour >= 23 || hour < 5,
13
- lines: [
14
- "Midnight task wrangling, but make it tasteful.",
15
- "The board promised this will only take a minute.",
16
- "Late-night checkboxes are technically tiny lanterns.",
17
- ],
18
- },
19
- {
20
- label: hour < 12 ? "Good morning" : "Hello",
21
- when: hour >= 5 && hour < 12,
22
- lines: [
23
- "The backlog brought a sensible hat.",
24
- "Tiny checkboxes, unusually large ambitions.",
25
- "The tasks have formed an orderly queue. Suspicious, but useful.",
26
- ],
27
- },
28
- {
29
- label: "Good afternoon",
30
- when: hour >= 12 && hour < 18,
31
- lines: [
32
- "The board is pretending to be calm.",
33
- "A little progress parade is forming.",
34
- "Tiny tickets, big main-character energy.",
35
- ],
36
- },
37
- {
38
- label: "Good evening",
39
- when: hour >= 18 && hour < 23,
40
- lines: [
41
- "The backlog is wearing slippers now.",
42
- "One last neat column before dinner glory.",
43
- "Evening mode: polish, nudge, done.",
44
- ],
45
- },
46
- ];
47
- const slot = slots.find((entry) => entry.when) ?? slots[0];
48
- const line = slot.lines[Math.floor(Math.random() * slot.lines.length)] ?? "";
49
- return {
50
- label: `${slot.label}${userFirstName ? `, ${userFirstName}` : ""}.`,
51
- line,
52
- };
53
- }
54
- function renderCountBadge(count) {
55
- if (count <= 0)
56
- return undefined;
57
- return (_jsx("span", { className: "rounded-badge bg-neutral-grey-10 badge-pad-sm text-2xs text-neutral-grey-100 font-semibold", children: count }));
58
- }
59
- function formatUpdatedDate(value) {
60
- if (!value)
61
- return null;
62
- const date = new Date(value);
63
- if (!Number.isFinite(date.getTime()))
64
- return null;
65
- return date.toLocaleDateString();
66
- }
67
- function taskStatusBadgeClass(status) {
68
- const normalized = status.toLowerCase();
69
- if (normalized.includes("done")) {
70
- return "bg-feedback-green-light text-feedback-green";
71
- }
72
- if (normalized.includes("progress")) {
73
- return "bg-feedback-green-light text-feedback-green";
74
- }
75
- if (normalized.includes("review") || normalized.includes("waiting")) {
76
- return "bg-feedback-orange-light text-feedback-orange";
77
- }
78
- return "bg-neutral-grey-5 text-neutral-grey-100";
79
- }
80
- function SmallBadge({ children, className, }) {
81
- return (_jsx("span", { className: cn("badge-pad-sm shrink-0 rounded-[4px] text-[10px] font-medium", className), children: children }));
82
- }
83
- function EmptyGalleryState({ title, description, }) {
84
- return (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-50 mb-3 flex size-12 items-center justify-center rounded", children: _jsx(SearchX, { size: 24 }) }), _jsx("h4", { className: "text-neutral-grey-100 text-sm font-semibold", children: title }), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: description })] }));
85
- }
86
- function ProjectGalleryCard({ project, layout, onSelect, }) {
87
- const counts = project.overview?.taskCounts ?? {
88
- total: 0,
89
- todo: 0,
90
- waiting: 0,
91
- inProgress: 0,
92
- review: 0,
93
- done: 0,
94
- };
95
- const completion = counts.total > 0 ? `${counts.done}/${counts.total} done` : "No tasks yet";
96
- const depth = Math.max(0, Math.min(project.depth ?? 0, 3));
97
- const updatedLabel = formatUpdatedDate(project.updatedAt);
98
- return (_jsxs("button", { type: "button", className: cn("group border-border-default hover:border-neutral-grey-50/40 relative flex cursor-pointer items-start gap-4 rounded-lg border bg-white p-4 text-left transition-all duration-200 hover:shadow-md", layout === "grid" ? "min-h-[124px] flex-col sm:flex-row" : "flex-row"), onClick: () => onSelect?.(project.projectId), "data-testid": `taskboard-home-project-card-${project.projectId}`, children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-100 flex size-12 shrink-0 items-center justify-center rounded-lg", children: _jsx(LayoutGrid, { className: "size-6", strokeWidth: 1.5 }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsxs("h3", { className: "text-neutral-grey-100 truncate text-sm font-bold tracking-tight", children: [depth > 0 ? `${"> ".repeat(depth)}` : "", project.title] }), _jsx("p", { className: cn("text-neutral-grey-50 mt-1 text-xs leading-relaxed", layout === "grid" ? "line-clamp-2" : "line-clamp-1"), title: project.description?.trim() || "No description", children: project.description?.trim() || "No description" })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "text-neutral-grey-50 flex items-center justify-between gap-3 text-[11px]", children: [_jsx("span", { children: "Progress" }), _jsx("span", { children: completion })] }), _jsx(TaskStateProgressBar, { counts: counts })] }), _jsxs("div", { className: "text-neutral-grey-50 flex flex-wrap items-center gap-2 text-[11px]", children: [_jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx(Shield, { className: "size-3" }), project.permission] }), project.status ? (_jsx(SmallBadge, { className: "bg-neutral-grey-5 text-neutral-grey-100", children: project.status })) : null, updatedLabel ? (_jsxs("span", { className: "inline-flex items-center gap-1", children: [_jsx(Clock, { className: "size-3" }), updatedLabel] })) : null, project.overview?.directSubprojectCount ? (_jsxs("span", { children: [project.overview.directSubprojectCount, " subproject", project.overview.directSubprojectCount === 1 ? "" : "s"] })) : null] })] })] }));
99
- }
100
- function CreateProjectCard({ layout, onCreateProject, }) {
101
- return (_jsxs("button", { type: "button", onClick: () => onCreateProject?.(), className: cn("group border-border-default/70 relative flex cursor-pointer items-start gap-4 rounded-lg border bg-neutral-grey-10/70 p-4 text-left transition-all duration-200 hover:border-neutral-grey-50/40 hover:bg-neutral-grey-10 hover:shadow-md", layout === "grid" ? "min-h-[124px] flex-col sm:flex-row" : "flex-row"), "data-testid": "taskboard-home-create-project-card", children: [_jsx("div", { className: "bg-neutral-grey-100/10 text-neutral-grey-100 flex size-12 shrink-0 items-center justify-center rounded-lg", children: _jsx(FolderPlus, { className: "size-6", strokeWidth: 1.5 }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsx("h3", { className: "text-neutral-grey-100 truncate text-sm font-bold tracking-tight", children: "Create a new project" }), _jsx("p", { className: "text-neutral-grey-100/80 line-clamp-3 text-xs leading-relaxed", children: "Start a new taskboard project and gather the work in one place." })] })] }));
102
- }
103
- function TaskGalleryCard({ task, layout, selected, onSelect, }) {
104
- const updatedLabel = formatUpdatedDate(task.updatedAt);
105
- return (_jsxs("button", { type: "button", className: cn("group border-border-default hover:border-neutral-grey-50/40 relative flex cursor-pointer items-start gap-4 rounded-lg border bg-white p-4 text-left transition-all duration-200 hover:shadow-md", layout === "grid" ? "min-h-[108px] flex-col sm:flex-row" : "flex-row", selected && "border-neutral-grey-50/40 bg-neutral-grey-5"), onClick: () => onSelect?.({
106
- projectId: task.projectId,
107
- taskId: task.taskId,
108
- }), "data-testid": `taskboard-home-my-task-option-${task.taskId}`, children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-100 flex size-12 shrink-0 items-center justify-center rounded-lg", children: _jsx(ClipboardCheck, { className: "size-6", strokeWidth: 1.5 }) }), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [_jsx("h3", { className: "text-neutral-grey-100 truncate text-sm font-bold tracking-tight", children: task.title }), _jsxs("p", { className: cn("text-neutral-grey-50 text-xs leading-relaxed", layout === "grid" ? "line-clamp-2" : "line-clamp-1"), title: task.projectTitle, children: [task.projectTitle || "Untitled project", updatedLabel ? ` - ${updatedLabel}` : ""] }), _jsx("div", { className: "mt-1", children: _jsx(SmallBadge, { className: taskStatusBadgeClass(task.status), children: task.status }) })] })] }));
109
- }
110
- function TaskBoardGalleryContent({ nav, activeTabId, layout, }) {
111
- const visibleProjects = nav.projectOptions;
112
- if (activeTabId === "my-tasks") {
113
- if (nav.myTasksLoading) {
114
- return (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [_jsx(Loader2, { className: "text-neutral-grey-50 size-8 animate-spin" }), _jsx("p", { className: "text-neutral-grey-50 mt-4 text-sm font-medium", children: "Loading tasks..." })] }));
115
- }
116
- if (nav.myTasks.length === 0) {
117
- return (_jsx(EmptyGalleryState, { title: "No tasks assigned", description: "Your personal task queue is blissfully quiet." }));
118
- }
119
- return (_jsx("div", { className: cn("mt-6 gap-4", layout === "grid"
120
- ? "@lg:grid-cols-2 @3xl:grid-cols-3 @5xl:grid-cols-4 grid grid-cols-1"
121
- : "flex flex-col"), children: nav.myTasks.map((task) => (_jsx(TaskGalleryCard, { task: task, layout: layout, selected: nav.selectedProjectId === task.projectId &&
122
- nav.selectedTaskId === task.taskId, onSelect: nav.onSelectMyTask }, `${task.projectId}:${task.taskId}`))) }));
123
- }
124
- if (nav.isProjectsLoading && nav.projectOptions.length === 0) {
125
- return (_jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-center", children: [_jsx(Loader2, { className: "text-neutral-grey-50 size-8 animate-spin" }), _jsx("p", { className: "text-neutral-grey-50 mt-4 text-sm font-medium", children: "Loading projects..." })] }));
126
- }
127
- if (visibleProjects.length === 0) {
128
- return (_jsxs("div", { children: [_jsx(EmptyGalleryState, { title: "No projects yet", description: "Create your first project and give those tasks somewhere to live." }), nav.onCreateProject ? (_jsx("div", { className: "mx-auto mt-2 max-w-sm", children: _jsx(CreateProjectCard, { layout: "grid", onCreateProject: nav.onCreateProject }) })) : null] }));
129
- }
130
- return (_jsxs("div", { className: cn("mt-6 gap-4", layout === "grid"
131
- ? "@lg:grid-cols-2 @3xl:grid-cols-3 @5xl:grid-cols-4 grid grid-cols-1"
132
- : "flex flex-col"), children: [visibleProjects.map((project) => (_jsx(ProjectGalleryCard, { project: project, layout: layout, onSelect: (projectId) => nav.onSelectProject?.(projectId) }, project.projectId))), nav.onCreateProject ? (_jsx(CreateProjectCard, { layout: layout, onCreateProject: nav.onCreateProject })) : null] }));
133
- }
134
- export function TaskBoardHomeView({ nav, activeTab, setActiveTab, userFirstName, }) {
135
- const [layout, setLayout] = useState("grid");
136
- const greeting = useMemo(() => getTaskBoardGreeting(userFirstName), [userFirstName]);
137
- const tabs = useMemo(() => [
138
- {
139
- id: "projects",
140
- label: "Projects",
141
- content: null,
142
- badge: renderCountBadge(nav.projectOptions.length),
143
- },
144
- {
145
- id: "my-tasks",
146
- label: "My Tasks",
147
- content: null,
148
- badge: renderCountBadge(nav.myTasks.length),
149
- },
150
- ], [nav.myTasks.length, nav.projectOptions.length]);
151
- const activeTabId = tabs[activeTab]?.id ?? "projects";
152
- return (_jsx("div", { className: "@container bg-neutral-grey-5 h-full overflow-y-auto px-8 py-10 lg:px-14", "data-testid": "taskboard-home-view", children: _jsxs("div", { className: "mx-auto max-w-6xl", children: [_jsxs("header", { children: [_jsx("p", { className: "text-neutral-grey-50 text-base font-normal", children: greeting.label }), _jsx("h1", { className: "text-neutral-grey-100 mt-3 text-3xl font-semibold tracking-tight", children: greeting.line }), _jsx("p", { className: "text-neutral-grey-50 mt-2 text-sm", children: "Pick a project or jump straight into the tasks waiting for you." })] }), _jsxs("div", { className: "border-border-default mt-6 flex items-end justify-between gap-4 border-b", children: [_jsx(SimpleTabs, { tabs: tabs, activeTab: activeTab, setActiveTab: setActiveTab, hideContent: true, variant: "large", className: "min-w-0", testId: "taskboard-home-tab-switcher" }), _jsxs("div", { className: "mb-2 flex shrink-0 items-center gap-0.5", children: [_jsx("button", { type: "button", onClick: () => setLayout("list"), className: cn("flex size-8 items-center justify-center rounded transition-colors", layout === "list"
153
- ? "text-neutral-grey-100 bg-neutral-grey-5"
154
- : "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "List view", "aria-label": "List view", "data-testid": "taskboard-home-list-toggle", children: _jsx(List, { className: "size-4.5", strokeWidth: 2 }) }), _jsx("button", { type: "button", onClick: () => setLayout("grid"), className: cn("flex size-8 items-center justify-center rounded transition-colors", layout === "grid"
155
- ? "text-neutral-grey-100 bg-neutral-grey-5"
156
- : "text-neutral-grey-50 hover:text-neutral-grey-100"), title: "Grid view", "aria-label": "Grid view", "data-testid": "taskboard-home-grid-toggle", children: _jsx(LayoutGrid, { className: "size-4.5", strokeWidth: 2 }) })] })] }), _jsx(TaskBoardGalleryContent, { nav: nav, activeTabId: activeTabId, layout: layout })] }) }));
2
+ import { useMemo } from "react";
3
+ import { Plus } from "lucide-react";
4
+ import { Button } from "../../components/ui/button";
5
+ const TASKBOARD_EMPTY_SLOGANS = [
6
+ "A fresh board. Suspiciously clean.",
7
+ "Backlog, meet destiny.",
8
+ "Tiny tasks, big main character energy.",
9
+ "No cards yet. The calm before the columns.",
10
+ "One more project? Famous last words.",
11
+ "Kanban't stop, won't stop.",
12
+ "The board is empty. Bold move.",
13
+ "Give those sticky notes a purpose.",
14
+ "New project smell, zero dependencies.",
15
+ "Somewhere, a checklist is waiting.",
16
+ ];
17
+ export function TaskBoardHomeView({ nav }) {
18
+ const slogan = useMemo(() => TASKBOARD_EMPTY_SLOGANS[Math.floor(Math.random() * TASKBOARD_EMPTY_SLOGANS.length)] ?? TASKBOARD_EMPTY_SLOGANS[0], []);
19
+ return (_jsx("div", { className: "bg-neutral-grey-5 flex h-full min-h-[420px] w-full items-center justify-center px-6 py-10", "data-testid": "taskboard-home-view", children: _jsxs("div", { className: "flex w-full max-w-[560px] flex-col items-center text-center", children: [_jsx("h1", { className: "text-neutral-grey-100 text-5xl leading-tight font-semibold tracking-normal", children: slogan }), _jsxs(Button, { type: "button", variant: "outline", className: "border-border-default hover:border-neutral-grey-15 group active:bg-neutral-grey-5 mt-12 flex h-[134px] w-full max-w-[300px] flex-col items-center justify-center gap-4 rounded-md bg-white px-6 text-base font-semibold shadow-none transition-all duration-150 hover:bg-white active:translate-y-px active:scale-[0.985] active:shadow-inner", onClick: () => nav.onCreateProject?.(), disabled: !nav.onCreateProject, "data-testid": "taskboard-home-create-project-card", children: [_jsx("span", { className: "bg-neutral-grey-5 text-neutral-grey-100 group-hover:bg-neutral-grey-10 flex size-11 items-center justify-center rounded-md transition-colors duration-150", children: _jsx(Plus, { className: "size-6", strokeWidth: 1.5 }) }), _jsx("span", { children: "Start your next project" })] })] }) }));
157
20
  }
158
21
  //# sourceMappingURL=TaskBoardHomeView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskBoardHomeView.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardHomeView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskBoardHomeView.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardHomeView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAMpD,MAAM,uBAAuB,GAAG;IAC9B,oCAAoC;IACpC,wBAAwB;IACxB,wCAAwC;IACxC,4CAA4C;IAC5C,sCAAsC;IACtC,4BAA4B;IAC5B,gCAAgC;IAChC,oCAAoC;IACpC,uCAAuC;IACvC,oCAAoC;CACrC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,EAAE,GAAG,EAA6B;IAClE,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,uBAAuB,CACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAC3D,IAAI,uBAAuB,CAAC,CAAC,CAAC,EACjC,EAAE,CACH,CAAC;IAEF,OAAO,CACL,cACE,SAAS,EAAC,2FAA2F,iBACzF,qBAAqB,YAEjC,eAAK,SAAS,EAAC,6DAA6D,aAC1E,aAAI,SAAS,EAAC,4EAA4E,YACvF,MAAM,GACJ,EAEL,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,+UAA+U,EACzV,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,EACtC,QAAQ,EAAE,CAAC,GAAG,CAAC,eAAe,iBAClB,oCAAoC,aAEhD,eAAM,SAAS,EAAC,2JAA2J,YACzK,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,EAAC,WAAW,EAAE,GAAG,GAAI,GACxC,EACP,qDAAoC,IAC7B,IACL,GACF,CACP,CAAC;AACJ,CAAC"}
@@ -1,21 +1,70 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo, useState, useSyncExternalStore } from "react";
3
- import { FolderPlus, LayoutGrid, Search } from "lucide-react";
3
+ import { Check, Folder, FolderOpen, Loader2, PanelLeftClose, Plus, Search, } from "lucide-react";
4
+ import { Button } from "../../components/ui/button";
4
5
  import { Input } from "../../components/ui/input";
5
6
  import { cn } from "../../lib/utils";
7
+ import { useEditContext } from "../../editor/client/editContext";
6
8
  import { SimpleIconButton } from "../../editor/ui/SimpleIconButton";
7
- import { SimpleToolbar } from "../../editor/ui/SimpleToolbar";
9
+ import { SimpleTabs } from "../../editor/ui/SimpleTabs";
8
10
  import { getTaskBoardNavSnapshot, subscribeTaskBoardNav, } from "../taskBoardNavStore";
11
+ function ProjectProgressIndicator({ done, total, }) {
12
+ if (!total || total <= 0) {
13
+ return null;
14
+ }
15
+ const progress = Math.max(0, Math.min(100, Math.round(((done ?? 0) / total) * 100)));
16
+ if (progress >= 100) {
17
+ return (_jsx("span", { className: "bg-feedback-green flex size-4 shrink-0 items-center justify-center rounded-full text-white", title: "Completed", "aria-label": "Completed", children: _jsx(Check, { className: "size-2.5", strokeWidth: 3 }) }));
18
+ }
19
+ return (_jsxs("span", { className: "text-neutral-grey-50 shrink-0 text-xs font-medium tabular-nums", children: [progress, "%"] }));
20
+ }
9
21
  export function TaskBoardProjectListSidebar() {
22
+ const editContext = useEditContext();
10
23
  const nav = useSyncExternalStore(subscribeTaskBoardNav, getTaskBoardNavSnapshot, getTaskBoardNavSnapshot);
11
24
  const [search, setSearch] = useState("");
12
- const [hideArchived, setHideArchived] = useState(true);
25
+ const [filterMode, setFilterMode] = useState("active");
26
+ const filterTabs = useMemo(() => [
27
+ {
28
+ id: "active",
29
+ label: "All projects",
30
+ content: null,
31
+ testId: "taskboard-project-list-filter-active",
32
+ },
33
+ {
34
+ id: "archived",
35
+ label: "Archive",
36
+ content: null,
37
+ testId: "taskboard-project-list-filter-archived",
38
+ },
39
+ ], []);
40
+ const expandedProjectIds = useMemo(() => {
41
+ if (!nav.selectedProjectId)
42
+ return new Set();
43
+ const projectById = new Map(nav.projectOptions.map((project) => [project.projectId, project]));
44
+ const expanded = new Set();
45
+ const visited = new Set();
46
+ let currentProjectId = nav.selectedProjectId;
47
+ while (currentProjectId && !visited.has(currentProjectId)) {
48
+ visited.add(currentProjectId);
49
+ expanded.add(currentProjectId);
50
+ const parentProjectId = projectById.get(currentProjectId)?.parentProjectId ?? null;
51
+ currentProjectId = parentProjectId;
52
+ }
53
+ return expanded;
54
+ }, [nav.projectOptions, nav.selectedProjectId]);
55
+ const scopedProjectOptions = useMemo(() => {
56
+ return nav.projectOptions.filter((project) => !project.parentProjectId ||
57
+ (project.depth ?? 0) === 0 ||
58
+ expandedProjectIds.has(project.parentProjectId));
59
+ }, [expandedProjectIds, nav.projectOptions]);
13
60
  const projects = useMemo(() => {
14
61
  const query = search.trim().toLowerCase();
15
- return nav.projectOptions.filter((project) => {
16
- if (hideArchived && project.status?.toLowerCase() === "archived") {
62
+ return scopedProjectOptions.filter((project) => {
63
+ const isArchived = project.status?.toLowerCase() === "archived";
64
+ if (filterMode === "active" && isArchived)
65
+ return false;
66
+ if (filterMode === "archived" && !isArchived)
17
67
  return false;
18
- }
19
68
  if (!query)
20
69
  return true;
21
70
  const title = project.title?.toLowerCase() ?? "";
@@ -25,13 +74,26 @@ export function TaskBoardProjectListSidebar() {
25
74
  description.includes(query) ||
26
75
  status.includes(query));
27
76
  });
28
- }, [hideArchived, nav.projectOptions, search]);
29
- return (_jsxs("div", { className: "flex h-full min-h-0 flex-col bg-white", "data-testid": "taskboard-project-list-sidebar", children: [_jsx(SimpleToolbar, { children: _jsx(SimpleIconButton, { onClick: () => nav.onCreateProject?.(), icon: _jsx(FolderPlus, { className: "h-4 w-4", strokeWidth: 1 }), label: "New project", "data-testid": "taskboard-project-list-create-button" }) }), _jsxs("div", { className: "border-border-default border-b px-3 py-2.5", children: [_jsxs("div", { className: "relative mb-2", children: [_jsx(Search, { className: "text-neutral-grey-50 pointer-events-none absolute top-1/2 left-2.5 h-3.5 w-3.5 -translate-y-1/2" }), _jsx(Input, { value: search, onChange: (event) => setSearch(event.target.value), placeholder: "Search projects...", className: "h-8 pl-8 text-xs", "data-testid": "taskboard-project-list-search" })] }), _jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: hideArchived, onChange: (event) => setHideArchived(event.target.checked), "data-testid": "taskboard-project-list-hide-archived" }), "Hide archived projects"] })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-2", children: projects.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 rounded-md border border-dashed px-3 py-8 text-center text-xs", children: "No projects found" })) : (_jsx("div", { className: "flex flex-col gap-1", children: projects.map((project) => {
77
+ }, [filterMode, scopedProjectOptions, search]);
78
+ const emptyMessage = useMemo(() => {
79
+ if (filterMode === "archived")
80
+ return "No archived projects";
81
+ if (search.trim())
82
+ return "No matching projects";
83
+ return "No projects found";
84
+ }, [filterMode, search]);
85
+ return (_jsxs("div", { className: "flex h-full min-h-0 flex-col bg-white", "data-testid": "taskboard-project-list-sidebar", children: [_jsxs("div", { className: "flex h-16 shrink-0 items-center justify-between px-4", children: [_jsx("h1", { className: "text-neutral-grey-100 truncate text-base font-semibold", children: "Project taskboard" }), _jsx(SimpleIconButton, { onClick: () => editContext?.toggleSidebar("taskboard-project-list", {
86
+ forceClose: true,
87
+ }), icon: _jsx(PanelLeftClose, { className: "h-4 w-4", strokeWidth: 1.5 }), label: "Close project list", className: "text-neutral-grey-50 hover:text-neutral-grey-100 h-8 w-8", "data-testid": "taskboard-project-list-close-button" })] }), _jsxs("div", { className: "flex shrink-0 flex-col gap-3 px-4 pt-3", children: [_jsxs(Button, { variant: "outline", size: "sm", className: "h-10 w-full justify-center gap-3 rounded-md bg-white px-4 text-sm font-semibold shadow-none", onClick: () => nav.onCreateProject?.(), "data-testid": "taskboard-project-list-create-button", children: [_jsx("span", { className: "truncate", children: "Create new project" }), _jsx(Plus, { className: "h-4 w-4", strokeWidth: 1.5 })] }), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "text-neutral-grey-50 pointer-events-none absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2" }), _jsx(Input, { value: search, onChange: (event) => setSearch(event.target.value), placeholder: "Search projects", className: "h-9 bg-white pl-9 text-sm", "data-testid": "taskboard-project-list-search" })] }), _jsx("div", { className: "border-border-default border-b", children: _jsx(SimpleTabs, { tabs: filterTabs, activeTab: filterMode === "archived" ? 1 : 0, setActiveTab: (index) => setFilterMode(index === 1 ? "archived" : "active"), hideContent: true, className: "w-full gap-0", tabClassName: "w-1/2 px-0 pt-3 pb-[9px] text-sm font-semibold", underlineTarget: "label", testId: "taskboard-project-list-filter-tabs" }) }), nav.isAdministrator ? (_jsxs("div", { className: "border-border-default border-b pb-3", children: [_jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: nav.showAllProjects, onChange: (event) => nav.onToggleShowAllProjects?.(event.target.checked), "data-testid": "taskboard-show-all-projects-checkbox" }), "Show all projects"] }), _jsx("p", { className: "text-neutral-grey-50 mt-1 pl-5 text-[10px]", "data-testid": "taskboard-show-all-projects-hint", children: "Admin feature: includes projects across all users." })] })) : null] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto px-3 py-3", children: nav.isProjectsLoading && nav.projectOptions.length === 0 ? (_jsxs("div", { className: "text-neutral-grey-50 flex items-center justify-center gap-2 rounded-md border border-dashed px-3 py-8 text-xs", "data-testid": "taskboard-project-list-loading", children: [_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }), "Loading projects..."] })) : projects.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 rounded-md border border-dashed px-3 py-8 text-center text-xs", children: emptyMessage })) : (_jsx("div", { className: "flex flex-col gap-1", children: projects.map((project) => {
30
88
  const selected = project.projectId === nav.selectedProjectId;
31
- const depth = Math.max(0, Math.min(project.depth ?? 0, 6));
32
- return (_jsxs("button", { type: "button", className: cn("w-full rounded-md border px-2 py-2 text-left transition-colors", selected
33
- ? "border-border-default bg-neutral-grey-5"
34
- : "hover:border-border-default hover:bg-neutral-grey-5/70 border-transparent"), style: { paddingLeft: `${8 + depth * 12}px` }, onClick: () => nav.onSelectProject?.(project.projectId), "data-testid": `taskboard-project-list-option-${project.projectId}`, children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(LayoutGrid, { className: "text-neutral-grey-50 h-3.5 w-3.5" }), _jsx("span", { className: "text-neutral-grey-100 truncate text-xs font-medium", children: project.title })] }), project.description ? (_jsx("div", { className: "text-neutral-grey-50 mt-0.5 line-clamp-2 pl-5 text-[10px]", children: project.description })) : null] }, project.projectId));
89
+ const depth = Math.max(0, Math.min(project.depth ?? (project.parentProjectId ? 1 : 0), 6));
90
+ const ProjectIcon = selected ? FolderOpen : Folder;
91
+ const counts = project.overview?.taskCounts;
92
+ return (_jsxs("button", { type: "button", className: cn("group flex min-h-9 w-full items-center gap-2 rounded-md px-3 py-2 text-left transition-colors", selected
93
+ ? "bg-neutral-grey-5 text-neutral-grey-100"
94
+ : "text-neutral-grey-100 hover:bg-neutral-grey-5/70"), style: { paddingLeft: `${12 + depth * 20}px` }, onClick: () => nav.onSelectProject?.(project.projectId), "data-testid": `taskboard-project-list-option-${project.projectId}`, children: [_jsx("span", { className: "flex h-4 w-4 shrink-0 items-center justify-center", children: _jsx(ProjectIcon, { className: cn("h-4 w-4 shrink-0", selected
95
+ ? "text-neutral-grey-100"
96
+ : "text-neutral-grey-50 group-hover:text-neutral-grey-100"), strokeWidth: 1.5 }) }), _jsx("span", { className: cn("min-w-0 flex-1 truncate", depth === 0 ? "text-sm font-semibold" : "text-sm"), children: project.title }), _jsx(ProjectProgressIndicator, { done: counts?.done, total: counts?.total })] }, project.projectId));
35
97
  }) })) })] }));
36
98
  }
37
99
  //# sourceMappingURL=TaskBoardProjectListSidebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskBoardProjectListSidebar.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardProjectListSidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskBoardProjectListSidebar.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardProjectListSidebar.tsx"],"names":[],"mappings":"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"}
@@ -1,65 +1,22 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useMemo, useSyncExternalStore } from "react";
2
+ import { useSyncExternalStore } from "react";
3
+ import { RotateCcw, SquarePen } from "lucide-react";
3
4
  import { Button } from "../../components/ui/button";
4
- import { RotateCcw, Route, Settings, SquarePen } from "lucide-react";
5
- import { subscribeTaskBoardNav, getTaskBoardNavSnapshot, } from "../taskBoardNavStore";
6
- import { useEditContext } from "../../editor/client/editContext";
7
5
  import { SimpleIconButton } from "../../editor/ui/SimpleIconButton";
8
- import { TaskBoardBreadcrumb } from "./TaskBoardBreadcrumb";
6
+ import { useEditContext } from "../../editor/client/editContext";
7
+ import { getTaskBoardNavSnapshot, subscribeTaskBoardNav, } from "../taskBoardNavStore";
9
8
  import { TaskboardPersistentLogPanel } from "./TaskboardPersistentLogPanel";
10
- import { TaskBoardProjectSelector } from "./TaskBoardProjectSelector";
11
9
  export function TaskBoardTitlebar() {
12
10
  const editContext = useEditContext();
13
11
  const nav = useSyncExternalStore(subscribeTaskBoardNav, getTaskBoardNavSnapshot, getTaskBoardNavSnapshot);
14
12
  const showEditorPanel = editContext?.showAgentsWorkspaceEditor ?? false;
15
- const breadcrumbItems = useMemo(() => {
16
- if (!nav.selectedProjectId) {
17
- return [];
18
- }
19
- const projectById = new Map(nav.projectOptions.map((project) => [project.projectId, project]));
20
- const items = [];
21
- const visited = new Set();
22
- let currentProjectId = nav.selectedProjectId;
23
- while (currentProjectId && !visited.has(currentProjectId)) {
24
- visited.add(currentProjectId);
25
- const project = projectById.get(currentProjectId);
26
- const isCurrent = currentProjectId === nav.selectedProjectId;
27
- const description = (isCurrent ? nav.projectSubtitle : (project?.description ?? "")).trim();
28
- items.unshift({
29
- projectId: currentProjectId,
30
- title: isCurrent
31
- ? nav.projectTitle
32
- : (project?.title ?? currentProjectId),
33
- subtitle: isCurrent
34
- ? [description, nav.permissionLabel].filter(Boolean).join(" · ") ||
35
- undefined
36
- : description || undefined,
37
- });
38
- currentProjectId =
39
- project?.parentProjectId && projectById.has(project.parentProjectId)
40
- ? project.parentProjectId
41
- : null;
42
- }
43
- return items;
44
- }, [
45
- nav.permissionLabel,
46
- nav.projectOptions,
47
- nav.projectSubtitle,
48
- nav.projectTitle,
49
- nav.selectedProjectId,
50
- ]);
51
- const currentBreadcrumbItem = breadcrumbItems[breadcrumbItems.length - 1];
52
13
  if (editContext?.isMobile && !nav.hasSelectedProject) {
53
14
  return null;
54
15
  }
55
- return (_jsxs("div", { className: "flex w-full items-center justify-between gap-4 pr-2 pl-2", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx(TaskBoardBreadcrumb, { rootSubtitle: "Parhelia taskboard", items: breadcrumbItems, rootContent: !nav.hasSelectedProject ? (_jsx(TaskBoardProjectSelector, { variant: "breadcrumb", label: "Tasks", subtitle: "Parhelia taskboard" })) : undefined, currentItemContent: currentBreadcrumbItem ? (_jsx(TaskBoardProjectSelector, { variant: "breadcrumb", label: currentBreadcrumbItem.title, subtitle: currentBreadcrumbItem.subtitle })) : undefined, onRootClick: () => nav.onSelectProject?.(null), onItemClick: (projectId) => nav.onSelectProject?.(projectId) }), nav.hasSelectedProject ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "bg-neutral-grey-10 mx-1 h-8 w-px" }), _jsx(Button, { variant: "outline", size: "icon", onClick: () => {
56
- if (nav.selectedProjectId) {
57
- nav.onOpenProjectSettings?.(nav.selectedProjectId);
58
- }
59
- }, disabled: !nav.canManageProject, className: "h-8 w-8", title: "Project settings", "data-testid": "taskboard-project-settings-button", children: _jsx(Settings, { className: "text-neutral-grey-50 h-4 w-4" }) }), _jsx(Button, { variant: "outline", size: "icon", onClick: () => {
60
- if (nav.selectedProjectId) {
61
- nav.onRestartProject?.(nav.selectedProjectId, nav.projectTitle);
62
- }
63
- }, disabled: !nav.canManageProject || !nav.onRestartProject, className: "h-8 w-8", title: "Restart project (delete all tasks and subprojects, recreate from template)", "data-testid": "taskboard-project-restart-button", children: _jsx(RotateCcw, { className: "text-neutral-grey-50 h-4 w-4" }) }), nav.onToggleWizardMode && (_jsx(SimpleIconButton, { icon: _jsx(Route, { className: "h-4 w-4" }), label: nav.isWizardMode ? "Exit Wizard mode" : "Wizard mode", className: "bg-background hover:bg-accent hover:text-accent-foreground text-neutral-grey-50 h-8 w-8 rounded border", "data-testid": "taskboard-wizard-switcher", selected: nav.isWizardMode, onClick: () => nav.onToggleWizardMode?.(!nav.isWizardMode) })), nav.selectedProjectId ? (_jsx(TaskboardPersistentLogPanel, { scope: "project", projectId: nav.selectedProjectId, title: "Project Activity Log", emptyMessage: "No project-level orchestration entries yet.", refreshKey: nav.selectedProjectId, testId: "taskboard-project-dashboard-log-panel" })) : null] })) : null] }), !editContext?.isMobile && (_jsx("div", { className: "flex items-center gap-2", children: _jsx(SimpleIconButton, { icon: _jsx(SquarePen, { className: "h-5 w-5", strokeWidth: 1 }), label: showEditorPanel ? "Hide Editor" : "Show Editor", size: "large", "data-testid": "taskboard-editor-panel-toggle", selected: showEditorPanel, onClick: () => editContext?.setShowAgentsWorkspaceEditor(!showEditorPanel) }) }))] }));
16
+ return (_jsxs("div", { className: "flex w-full items-center justify-between gap-4 pr-2 pl-2", children: [_jsx("div", { className: "flex min-w-0 items-center gap-2", children: nav.hasSelectedProject ? (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", size: "icon", onClick: () => {
17
+ if (nav.selectedProjectId) {
18
+ nav.onRestartProject?.(nav.selectedProjectId, nav.projectTitle);
19
+ }
20
+ }, disabled: !nav.canManageProject || !nav.onRestartProject, className: "h-8 w-8", title: "Restart project (delete all tasks and subprojects, recreate from template)", "data-testid": "taskboard-project-restart-button", children: _jsx(RotateCcw, { className: "text-neutral-grey-50 h-4 w-4" }) }), nav.selectedProjectId ? (_jsx(TaskboardPersistentLogPanel, { scope: "project", projectId: nav.selectedProjectId, title: "Project Activity Log", emptyMessage: "No project-level orchestration entries yet.", refreshKey: nav.selectedProjectId, testId: "taskboard-project-dashboard-log-panel" })) : null] })) : null }), !editContext?.isMobile && (_jsx("div", { className: "flex items-center gap-2", children: _jsx(SimpleIconButton, { icon: _jsx(SquarePen, { className: "h-5 w-5", strokeWidth: 1 }), label: showEditorPanel ? "Hide Editor" : "Show Editor", size: "large", "data-testid": "taskboard-editor-panel-toggle", selected: showEditorPanel, onClick: () => editContext?.setShowAgentsWorkspaceEditor(!showEditorPanel) }) }))] }));
64
21
  }
65
22
  //# sourceMappingURL=TaskBoardTitlebar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskBoardTitlebar.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardTitlebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskBoardTitlebar.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskBoardTitlebar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,oBAAoB,CAC9B,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,CACxB,CAAC;IACF,MAAM,eAAe,GAAG,WAAW,EAAE,yBAAyB,IAAI,KAAK,CAAC;IAExE,IAAI,WAAW,EAAE,QAAQ,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,0DAA0D,aACvE,cAAK,SAAS,EAAC,iCAAiC,YAC7C,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,CACxB,8BACE,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE;gCACZ,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;oCAC1B,GAAG,CAAC,gBAAgB,EAAE,CACpB,GAAG,CAAC,iBAAiB,EACrB,GAAG,CAAC,YAAY,CACjB,CAAC;gCACJ,CAAC;4BACH,CAAC,EACD,QAAQ,EAAE,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,GAAG,CAAC,gBAAgB,EACxD,SAAS,EAAC,SAAS,EACnB,KAAK,EAAC,4EAA4E,iBACtE,kCAAkC,YAE9C,KAAC,SAAS,IAAC,SAAS,EAAC,8BAA8B,GAAG,GAC/C,EACR,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CACvB,KAAC,2BAA2B,IAC1B,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,GAAG,CAAC,iBAAiB,EAChC,KAAK,EAAC,sBAAsB,EAC5B,YAAY,EAAC,6CAA6C,EAC1D,UAAU,EAAE,GAAG,CAAC,iBAAiB,EACjC,MAAM,EAAC,uCAAuC,GAC9C,CACH,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC,CAAC,CAAC,IAAI,GACJ,EAEL,CAAC,WAAW,EAAE,QAAQ,IAAI,CACzB,cAAK,SAAS,EAAC,yBAAyB,YACtC,KAAC,gBAAgB,IACf,IAAI,EAAE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,EAAC,WAAW,EAAE,CAAC,GAAI,EACvD,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EACtD,IAAI,EAAC,OAAO,iBACA,+BAA+B,EAC3C,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,GAAG,EAAE,CACZ,WAAW,EAAE,4BAA4B,CAAC,CAAC,eAAe,CAAC,GAE7D,GACE,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,17 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cn } from "../../lib/utils";
3
- import { Loader2, User, Bot, Calendar, AlertCircle, CheckCircle2, Shield, GitBranch, } from "lucide-react";
3
+ import { Loader2, User, Calendar, AlertCircle, CheckCircle2, Shield, GitBranch, } from "lucide-react";
4
4
  import { getDisplayableAssignee } from "../assigneeDisplay";
5
5
  import { Badge } from "../../components/ui/badge";
6
6
  import { format } from "date-fns";
7
+ import { ParheliaAgentIcon } from "../../editor/ui/Icons";
7
8
  import { getTaskExecutionDisplayFromTask } from "../taskExecutionStatus";
8
9
  import { TaskAssigneePicker } from "./TaskAssigneePicker";
9
- const priorityColors = {
10
- Critical: "bg-feedback-red-strong",
11
- High: "bg-component-shared",
12
- Medium: "bg-feedback-blue",
13
- Low: "bg-neutral-grey-50",
14
- };
15
10
  const prioritySelectedColors = {
16
11
  Critical: "border-feedback-red-strong ring-feedback-red-strong",
17
12
  High: "border-component-shared ring-component-shared",
@@ -33,9 +28,6 @@ export function TaskCard(props) {
33
28
  executionState: task.executionState,
34
29
  isBlocked,
35
30
  });
36
- const priorityColor = task.priority
37
- ? priorityColors[task.priority]
38
- : "bg-neutral-grey-10";
39
31
  const selectedColor = task.priority
40
32
  ? prioritySelectedColors[task.priority]
41
33
  : defaultSelectedColor;
@@ -54,8 +46,8 @@ export function TaskCard(props) {
54
46
  event.preventDefault();
55
47
  event.currentTarget.click();
56
48
  };
57
- return (_jsxs("div", { role: "button", tabIndex: 0, onClick: onClick, onKeyDown: handleKeyDown, className: cn("group relative w-full overflow-hidden rounded-lg border bg-white p-3 text-left shadow-sm transition-all hover:shadow-md", hoverColor, selected && cn("shadow-lg ring-2", selectedColor)), children: [_jsx("div", { className: cn("absolute inset-y-0 left-0 w-1", priorityColor) }), _jsxs("div", { className: "flex flex-col gap-2.5", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-muted-foreground mb-1 text-[10px] font-semibold tracking-widest", children: displayTaskId }), _jsx("div", { className: "line-clamp-2 text-sm leading-snug font-semibold", children: task.title })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [isDecisionPointTask && (_jsx(GitBranch, { className: "text-highlight-100 h-4 w-4" })), showDoneCheckmark && task.status === "Done" && (_jsx(CheckCircle2, { className: "text-feedback-green h-4 w-4" })), task.priority === "Critical" && (_jsx(AlertCircle, { className: "text-feedback-red-strong h-4 w-4" }))] })] }), task.description && (_jsx("div", { className: "text-muted-foreground line-clamp-1 text-xs italic", children: task.description })), dependencyTaskIds.length > 0 && (_jsxs("div", { className: "text-muted-foreground line-clamp-1 text-[10px] font-medium", children: ["Depends on: ", dependencyTaskIds.join(", ")] })), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2", children: [isDecisionPointTask && (_jsx(Badge, { variant: "outline", size: "sm", className: "text-2xs border-highlight-100 bg-highlight-10 text-highlight-100", children: "Decision Point" })), canEditInlineAssignee ? (_jsx("div", { className: "min-w-0", onClick: (event) => event.stopPropagation(), onMouseDown: (event) => event.stopPropagation(), children: _jsx(TaskAssigneePicker, { projectId: projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, onChange: onAssigneeChange, placeholder: "Assign user or agent", buttonClassName: "h-auto max-w-[220px] gap-1 rounded-md border-0 bg-neutral-grey-5 badge-pad-sm text-2xs font-medium text-muted-foreground shadow-none hover:bg-neutral-grey-5", buttonTestId: `taskboard-task-assignee-${task.taskId}`, showChevron: false, showAssigneeIcon: true }) })) : (_jsxs("div", { className: "text-muted-foreground badge-pad-sm bg-neutral-grey-5 flex items-center gap-1 rounded-md text-xs", children: [task.assigneeType === "Agent" ? (_jsx(Bot, { className: "h-3 w-3" })) : task.assigneeType === "Role" ? (_jsx(Shield, { className: "h-3 w-3" })) : (_jsx(User, { className: "h-3 w-3" })), _jsx("span", { className: "max-w-[160px] truncate", title: assigneeValue, children: assigneeValue })] })), task.dueDate && (_jsxs("div", { className: "text-muted-foreground badge-pad-sm bg-neutral-grey-5 flex items-center gap-1 rounded-md text-xs", children: [_jsx(Calendar, { className: "h-3 w-3" }), _jsx("span", { children: format(new Date(task.dueDate), "MMM d") })] })), executionDisplay ? (_jsxs(Badge, { variant: executionDisplay.variant, size: "sm", className: cn("font-bold", executionDisplay.className), title: executionDisplay.needsAttention
58
- ? "Assigned agent requires attention"
59
- : undefined, children: [executionDisplay.showSpinner && (_jsx(Loader2, { className: "mr-1 h-2.5 w-2.5 animate-spin" })), executionDisplay.label] })) : null] })] })] }));
49
+ return (_jsx("div", { role: "button", tabIndex: 0, onClick: onClick, onKeyDown: handleKeyDown, className: cn("group border-border-default relative w-full rounded-lg border bg-white p-3 text-left shadow-sm transition-all hover:shadow-md", hoverColor, selected && cn("shadow-lg ring-2", selectedColor)), children: _jsxs("div", { className: "flex flex-col gap-2.5", children: [_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-neutral-grey-50 mb-1 text-[10px] font-bold tracking-widest", children: displayTaskId }), _jsx("div", { className: "text-neutral-grey-100 line-clamp-2 text-sm leading-snug font-bold", children: task.title })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [isDecisionPointTask && (_jsx(GitBranch, { className: "text-feedback-blue h-4 w-4" })), showDoneCheckmark && task.status === "Done" && (_jsx(CheckCircle2, { className: "text-feedback-green h-4 w-4" })), task.priority === "Critical" && (_jsx(AlertCircle, { className: "text-feedback-red-strong h-4 w-4" }))] })] }), task.description && (_jsx("div", { className: "text-neutral-grey-50 line-clamp-1 text-xs leading-5 italic", children: task.description })), dependencyTaskIds.length > 0 && (_jsxs("div", { className: "text-neutral-grey-50 line-clamp-1 text-[10px] font-semibold", children: ["Depends on: ", dependencyTaskIds.join(", ")] })), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2", children: [isDecisionPointTask && (_jsx(Badge, { variant: "outline", size: "sm", className: "text-2xs border-feedback-blue bg-feedback-blue-light text-feedback-blue", children: "Decision Point" })), canEditInlineAssignee ? (_jsx("div", { className: "min-w-0", onClick: (event) => event.stopPropagation(), onMouseDown: (event) => event.stopPropagation(), children: _jsx(TaskAssigneePicker, { projectId: projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, onChange: onAssigneeChange, placeholder: "Assign user or agent", buttonClassName: "h-auto max-w-[220px] gap-1 rounded-md border-0 bg-neutral-grey-5 badge-pad-sm text-2xs font-semibold text-neutral-grey-50 shadow-none hover:bg-neutral-grey-5", buttonTestId: `taskboard-task-assignee-${task.taskId}`, showChevron: false, showAssigneeIcon: true }) })) : (_jsxs("div", { className: "text-neutral-grey-50 badge-pad-sm bg-neutral-grey-5 flex items-center gap-1 rounded-md text-xs font-semibold", children: [task.assigneeType === "Agent" ? (_jsx(ParheliaAgentIcon, { className: "h-3 w-3" })) : task.assigneeType === "Role" ? (_jsx(Shield, { className: "h-3 w-3" })) : (_jsx(User, { className: "h-3 w-3" })), _jsx("span", { className: "max-w-[160px] truncate", title: assigneeValue, children: assigneeValue })] })), task.dueDate && (_jsxs("div", { className: "text-neutral-grey-50 badge-pad-sm bg-neutral-grey-5 flex items-center gap-1 rounded-md text-xs font-semibold", children: [_jsx(Calendar, { className: "h-3 w-3" }), _jsx("span", { children: format(new Date(task.dueDate), "MMM d") })] })), executionDisplay ? (_jsxs(Badge, { variant: executionDisplay.variant, size: "sm", className: cn("font-bold", executionDisplay.className), title: executionDisplay.needsAttention
50
+ ? "Assigned agent requires attention"
51
+ : undefined, children: [executionDisplay.showSpinner && (_jsx(Loader2, { className: "mr-1 h-2.5 w-2.5 animate-spin" })), executionDisplay.label] })) : null] })] }) }));
60
52
  }
61
53
  //# sourceMappingURL=TaskCard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EACL,OAAO,EACP,IAAI,EACJ,GAAG,EACH,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,MAAM,EACN,SAAS,GACV,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,cAAc,GAAiC;IACnD,QAAQ,EAAE,wBAAwB;IAClC,IAAI,EAAE,qBAAqB;IAC3B,MAAM,EAAE,kBAAkB;IAC1B,GAAG,EAAE,oBAAoB;CAC1B,CAAC;AAEF,MAAM,sBAAsB,GAAiC;IAC3D,QAAQ,EAAE,qDAAqD;IAC/D,IAAI,EAAE,+CAA+C;IACrD,MAAM,EAAE,yCAAyC;IACjD,GAAG,EAAE,6CAA6C;CACnD,CAAC;AAEF,MAAM,oBAAoB,GAAG,yCAAyC,CAAC;AAEvE,MAAM,mBAAmB,GAAiC;IACxD,QAAQ,EAAE,qCAAqC;IAC/C,IAAI,EAAE,kCAAkC;IACxC,MAAM,EAAE,+BAA+B;IACvC,GAAG,EAAE,iCAAiC;CACvC,CAAC;AAEF,MAAM,iBAAiB,GAAG,iCAAiC,CAAC;AAE5D,MAAM,UAAU,QAAQ,CAAC,KAYxB;IACC,MAAM,EACJ,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,iBAAiB,GAAG,EAAE,EACtB,SAAS,GAAG,KAAK,EACjB,iBAAiB,GAAG,KAAK,EACzB,SAAS,EACT,eAAe,GAAG,KAAK,EACvB,gBAAgB,GACjB,GAAG,KAAK,CAAC;IACV,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;QACvD,UAAU,EAAE,IAAI,CAAC,MAAM;QACvB,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS;KACV,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ;QACjC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,oBAAoB,CAAC;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ;QACjC,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACvC,CAAC,CAAC,oBAAoB,CAAC;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ;QAC9B,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACpC,CAAC,CAAC,iBAAiB,CAAC;IACtB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC5E,MAAM,UAAU,GACd,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM;QACpD,IAAI,CAAC,KAAK,KAAK,cAAc,CAAC;IAChC,MAAM,mBAAmB,GACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC;IAChE,MAAM,aAAa,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACnE,MAAM,qBAAqB,GACzB,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,gBAAgB,IAAI,eAAe,IAAI,CAAC,UAAU,CAAC;IACtE,MAAM,aAAa,GAAyC,CAAC,KAAK,EAAE,EAAE;QACpE,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;YAAE,OAAO;QACvD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,EAAE,CACX,yHAAyH,EACzH,UAAU,EACV,QAAQ,IAAI,EAAE,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAClD,aAGD,cAAK,SAAS,EAAE,EAAE,CAAC,+BAA+B,EAAE,aAAa,CAAC,GAAI,EAEtE,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAK,SAAS,EAAC,wCAAwC,aACrD,eAAK,SAAS,EAAC,SAAS,aACtB,cAAK,SAAS,EAAC,sEAAsE,YAClF,aAAa,GACV,EACN,cAAK,SAAS,EAAC,iDAAiD,YAC7D,IAAI,CAAC,KAAK,GACP,IACF,EACN,eAAK,SAAS,EAAC,kCAAkC,aAC9C,mBAAmB,IAAI,CACtB,KAAC,SAAS,IAAC,SAAS,EAAC,4BAA4B,GAAG,CACrD,EACA,iBAAiB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAC9C,KAAC,YAAY,IAAC,SAAS,EAAC,6BAA6B,GAAG,CACzD,EACA,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,CAC/B,KAAC,WAAW,IAAC,SAAS,EAAC,kCAAkC,GAAG,CAC7D,IACG,IACF,EAEL,IAAI,CAAC,WAAW,IAAI,CACnB,cAAK,SAAS,EAAC,mDAAmD,YAC/D,IAAI,CAAC,WAAW,GACb,CACP,EAEA,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAC/B,eAAK,SAAS,EAAC,4DAA4D,6BAC5D,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IACrC,CACP,EAED,eAAK,SAAS,EAAC,0CAA0C,aACtD,mBAAmB,IAAI,CACtB,KAAC,KAAK,IACJ,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,kEAAkE,+BAGtE,CACT,EACA,qBAAqB,CAAC,CAAC,CAAC,CACvB,cACE,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,YAE/C,KAAC,kBAAkB,IACjB,SAAS,EAAE,SAAU,EACrB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,EACvC,KAAK,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI,EAC9B,YAAY,EACV,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAErD,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAC,sBAAsB,EAClC,eAAe,EAAC,8JAA8J,EAC9K,YAAY,EAAE,2BAA2B,IAAI,CAAC,MAAM,EAAE,EACtD,WAAW,EAAE,KAAK,EAClB,gBAAgB,SAChB,GACE,CACP,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,iGAAiG,aAC7G,IAAI,CAAC,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,CAC/B,KAAC,GAAG,IAAC,SAAS,EAAC,SAAS,GAAG,CAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,CACjC,KAAC,MAAM,IAAC,SAAS,EAAC,SAAS,GAAG,CAC/B,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,CAC7B,EACD,eAAM,SAAS,EAAC,wBAAwB,EAAC,KAAK,EAAE,aAAa,YAC1D,aAAa,GACT,IACH,CACP,EAEA,IAAI,CAAC,OAAO,IAAI,CACf,eAAK,SAAS,EAAC,iGAAiG,aAC9G,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,EAChC,yBAAO,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,GAAQ,IAClD,CACP,EAEA,gBAAgB,CAAC,CAAC,CAAC,CAClB,MAAC,KAAK,IACJ,OAAO,EAAE,gBAAgB,CAAC,OAAO,EACjC,IAAI,EAAC,IAAI,EACT,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,gBAAgB,CAAC,SAAS,CAAC,EACtD,KAAK,EACH,gBAAgB,CAAC,cAAc;oCAC7B,CAAC,CAAC,mCAAmC;oCACrC,CAAC,CAAC,SAAS,aAGd,gBAAgB,CAAC,WAAW,IAAI,CAC/B,KAAC,OAAO,IAAC,SAAS,EAAC,+BAA+B,GAAG,CACtD,EACA,gBAAgB,CAAC,KAAK,IACjB,CACT,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"TaskCard.js","sourceRoot":"","sources":["../../../src/task-board/components/TaskCard.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { cn } from "../../lib/utils";
3
- import { Loader2, User, Bot, Circle, Ban, AlertTriangle, Shield, GitBranch, } from "lucide-react";
3
+ import { Loader2, User, Circle, Ban, AlertTriangle, Shield, GitBranch, } from "lucide-react";
4
+ import { ParheliaAgentIcon } from "../../editor/ui/Icons";
4
5
  import { DeleteIcon } from "../../components/ui/delete-icon";
5
6
  import { getDisplayableAssignee } from "../assigneeDisplay";
6
7
  import { Badge } from "../../components/ui/badge";
@@ -32,6 +33,6 @@ export function TaskRow(props) {
32
33
  const isBlocked = task.executionState === "WaitingForDependency";
33
34
  return (_jsxs("div", { "data-testid": `taskboard-task-row-${task.taskId}`, className: cn("grid w-full grid-cols-[minmax(0,1fr)_6rem_7rem_2.5rem] gap-2.5 border-l-2 px-3.5 py-1.5 text-xs transition-colors", priorityBorderClass, selected ? "bg-primary/5 shadow-sm" : "hover:bg-neutral-grey-5"), children: [_jsxs("button", { type: "button", onClick: onClick, className: "contents text-left", "data-testid": `taskboard-task-row-button-${task.taskId}`, children: [_jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [_jsx("span", { className: cn("inline-flex h-4 w-4 shrink-0 items-center justify-center", executionDisplay?.showSpinner && "text-primary", executionDisplay?.needsAttention && "text-feedback-orange", !executionDisplay && "text-neutral-grey-50"), title: executionIconTitle, children: executionDisplay?.showSpinner ? (_jsx(Loader2, { className: "h-3 w-3 animate-spin" })) : isBlocked ? (_jsx(Ban, { className: "h-3 w-3" })) : executionDisplay?.needsAttention ? (_jsx(AlertTriangle, { className: "h-3 w-3" })) : (_jsx(Circle, { className: "h-2.5 w-2.5" })) }), _jsx("span", { "data-testid": `taskboard-task-title-${task.taskId}`, className: cn("truncate font-medium tracking-tight", selected ? "text-primary" : "text-neutral-grey-100"), title: task.description
34
35
  ? `${task.title} - ${task.description} (Priority: ${task.priority ?? "None"})`
35
- : `${task.title} (Priority: ${task.priority ?? "None"})`, children: task.title }), isDecisionPointTask && (_jsx(GitBranch, { className: "text-highlight-100 h-3.5 w-3.5 shrink-0" }))] }), _jsx("div", { className: "flex items-center", children: _jsx(Badge, { variant: "outline", size: "sm", className: "text-2xs font-semibold", "data-testid": `taskboard-task-status-${task.taskId}`, children: getTaskStatusLabel(taskStatus) }) })] }), _jsx("div", { className: "text-neutral-grey-50 flex items-center gap-1.5", children: canEditInlineAssignee ? (_jsx(TaskAssigneePicker, { projectId: projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, onChange: onAssigneeChange, placeholder: "Assign user or agent", buttonClassName: "h-[29px] w-full min-w-0 justify-between rounded-md bg-neutral-grey-5 text-2xs font-medium", buttonTestId: `taskboard-task-assignee-${task.taskId}` })) : (_jsxs(_Fragment, { children: [task.assigneeType === "Agent" ? (_jsx(Bot, { className: "text-neutral-grey-50 h-3 w-3 shrink-0" })) : task.assigneeType === "Role" ? (_jsx(Shield, { className: "text-neutral-grey-50 h-3 w-3 shrink-0" })) : (_jsx(User, { className: "text-neutral-grey-50 h-3 w-3 shrink-0" })), _jsx("span", { className: "truncate text-[11px] font-medium", title: assigneeValue, "data-testid": `taskboard-task-assignee-${task.taskId}`, children: assigneeValue })] })) }), _jsx("div", { className: "flex items-center justify-end", children: onDelete ? (_jsx("button", { type: "button", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-50 rounded-md p-1 transition-colors", title: "Delete task", onClick: onDelete, "data-testid": `taskboard-task-delete-${task.taskId}`, children: _jsx(DeleteIcon, { size: "md" }) })) : null })] }));
36
+ : `${task.title} (Priority: ${task.priority ?? "None"})`, children: task.title }), isDecisionPointTask && (_jsx(GitBranch, { className: "text-highlight-100 h-3.5 w-3.5 shrink-0" }))] }), _jsx("div", { className: "flex items-center", children: _jsx(Badge, { variant: "outline", size: "sm", className: "text-2xs font-semibold", "data-testid": `taskboard-task-status-${task.taskId}`, children: getTaskStatusLabel(taskStatus) }) })] }), _jsx("div", { className: "text-neutral-grey-50 flex items-center gap-1.5", children: canEditInlineAssignee ? (_jsx(TaskAssigneePicker, { projectId: projectId, assigneeType: task.assigneeType ?? null, value: task.assigneeId ?? null, displayValue: task.assigneeDisplayName ?? task.assigneeId ?? null, onChange: onAssigneeChange, placeholder: "Assign user or agent", buttonClassName: "h-[29px] w-full min-w-0 justify-between rounded-md bg-neutral-grey-5 text-2xs font-medium", buttonTestId: `taskboard-task-assignee-${task.taskId}` })) : (_jsxs(_Fragment, { children: [task.assigneeType === "Agent" ? (_jsx(ParheliaAgentIcon, { className: "text-neutral-grey-50 h-3 w-3 shrink-0" })) : task.assigneeType === "Role" ? (_jsx(Shield, { className: "text-neutral-grey-50 h-3 w-3 shrink-0" })) : (_jsx(User, { className: "text-neutral-grey-50 h-3 w-3 shrink-0" })), _jsx("span", { className: "truncate text-[11px] font-medium", title: assigneeValue, "data-testid": `taskboard-task-assignee-${task.taskId}`, children: assigneeValue })] })) }), _jsx("div", { className: "flex items-center justify-end", children: onDelete ? (_jsx("button", { type: "button", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-50 rounded-md p-1 transition-colors", title: "Delete task", onClick: onDelete, "data-testid": `taskboard-task-delete-${task.taskId}`, children: _jsx(DeleteIcon, { size: "md" }) })) : null })] }));
36
37
  }
37
38
  //# sourceMappingURL=TaskRow.js.map