@parhelia/core 0.1.12889 → 0.1.12891
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/agents-view/AgentCard.js +7 -12
- package/dist/agents-view/AgentCard.js.map +1 -1
- package/dist/agents-view/AgentGalleryCard.js +2 -3
- package/dist/agents-view/AgentGalleryCard.js.map +1 -1
- package/dist/agents-view/AgentGalleryView.js +6 -6
- package/dist/agents-view/AgentGalleryView.js.map +1 -1
- package/dist/agents-view/AgentProfileIcon.d.ts +9 -0
- package/dist/agents-view/AgentProfileIcon.js +28 -0
- package/dist/agents-view/AgentProfileIcon.js.map +1 -0
- package/dist/agents-view/AgentsSidebar.js +2 -2
- package/dist/agents-view/AgentsSidebar.js.map +1 -1
- package/dist/agents-view/AgentsTitlebar.d.ts +1 -2
- package/dist/agents-view/AgentsTitlebar.js +5 -6
- package/dist/agents-view/AgentsTitlebar.js.map +1 -1
- package/dist/agents-view/AgentsView.d.ts +8 -1
- package/dist/agents-view/AgentsView.js +8 -8
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.js +30 -22
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/agents-view/CreateAgentView.js +1 -1
- package/dist/agents-view/CreateAgentView.js.map +1 -1
- package/dist/agents-view/DateAgentsGroup.js +1 -1
- package/dist/agents-view/DateAgentsGroup.js.map +1 -1
- package/dist/agents-view/ProfileAgentsGroup.js +3 -6
- package/dist/agents-view/ProfileAgentsGroup.js.map +1 -1
- package/dist/components/FilterInput.d.ts +2 -0
- package/dist/components/FilterInput.js +2 -2
- package/dist/components/FilterInput.js.map +1 -1
- package/dist/components/MarkdownDisplay.js +4 -4
- package/dist/components/MarkdownDisplay.js.map +1 -1
- package/dist/components/PageHeader.js +1 -1
- package/dist/components/PageHeader.js.map +1 -1
- package/dist/components/ui/LanguageSelectionGrid.js +1 -1
- package/dist/components/ui/LanguageSelectionGrid.js.map +1 -1
- package/dist/components/ui/alert-dialog.js +1 -1
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/card.d.ts +2 -1
- package/dist/components/ui/card.js +2 -2
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/multi-switch-button.d.ts +22 -0
- package/dist/components/ui/multi-switch-button.js +12 -0
- package/dist/components/ui/multi-switch-button.js.map +1 -0
- package/dist/components/ui/styled-dialog-title.js +1 -1
- package/dist/components/ui/styled-dialog-title.js.map +1 -1
- package/dist/config/config.js +6 -4
- package/dist/config/config.js.map +1 -1
- package/dist/config/types/sidebar.d.ts +2 -0
- package/dist/config/types.d.ts +1 -0
- package/dist/config/types.js.map +1 -1
- package/dist/editor/AdminRequiredView.js +1 -1
- package/dist/editor/AdminRequiredView.js.map +1 -1
- package/dist/editor/ContentTree.js +1 -1
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/FieldActionsOverlay.js +2 -2
- package/dist/editor/FieldActionsOverlay.js.map +1 -1
- package/dist/editor/FieldHistory.js +2 -2
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/GlobalMenuBar.js +3 -1
- package/dist/editor/GlobalMenuBar.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +10 -9
- package/dist/editor/LinkEditorDialog.js.map +1 -1
- package/dist/editor/MainLayout.js +11 -9
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/MigrationsView.js +4 -4
- package/dist/editor/MigrationsView.js.map +1 -1
- package/dist/editor/Titlebar.d.ts +1 -1
- package/dist/editor/Titlebar.js +2 -2
- package/dist/editor/Titlebar.js.map +1 -1
- package/dist/editor/WorkspaceTitleSwitcher.d.ts +5 -0
- package/dist/editor/WorkspaceTitleSwitcher.js +86 -0
- package/dist/editor/WorkspaceTitleSwitcher.js.map +1 -0
- package/dist/editor/ai/AgentProfileSelector.js +2 -2
- package/dist/editor/ai/AgentProfileSelector.js.map +1 -1
- package/dist/editor/ai/Agents.js +155 -43
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/HeartbeatDiagnosticsPanel.js +1 -1
- package/dist/editor/ai/HeartbeatDiagnosticsPanel.js.map +1 -1
- package/dist/editor/ai/InlineAiDialog.js +4 -4
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/InlineAiTextEditTooltip.js +1 -1
- package/dist/editor/ai/InlineAiTextEditTooltip.js.map +1 -1
- package/dist/editor/ai/InlineAiTrigger.js +1 -1
- package/dist/editor/ai/InlineAiTrigger.js.map +1 -1
- package/dist/editor/ai/agentMessageMarkdown.js +3 -3
- package/dist/editor/ai/agentMessageMarkdown.js.map +1 -1
- package/dist/editor/ai/dialogs/ComponentTypeSelectorInline.js +2 -2
- package/dist/editor/ai/dialogs/ComponentTypeSelectorInline.js.map +1 -1
- package/dist/editor/ai/dialogs/QuestionnaireInline.js +2 -2
- package/dist/editor/ai/dialogs/QuestionnaireInline.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentBanners.js +2 -2
- package/dist/editor/ai/terminal/components/AgentBanners.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentBrowserClaimBanner.js +1 -1
- package/dist/editor/ai/terminal/components/AgentBrowserClaimBanner.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js +1 -1
- package/dist/editor/ai/terminal/components/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentFullPromptControls.js +1 -1
- package/dist/editor/ai/terminal/components/AgentFullPromptControls.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentGreeting.js +1 -1
- package/dist/editor/ai/terminal/components/AgentGreeting.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentProjectProgress.js +1 -1
- package/dist/editor/ai/terminal/components/AgentProjectProgress.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js +3 -3
- package/dist/editor/ai/terminal/components/AgentPromptActionButtons.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptComposer.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentPromptComposer.js +5 -2
- package/dist/editor/ai/terminal/components/AgentPromptComposer.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.d.ts +2 -1
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js +5 -3
- package/dist/editor/ai/terminal/components/AgentPromptInputArea.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js +3 -1
- package/dist/editor/ai/terminal/components/AgentTerminalFullLayout.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js +3 -3
- package/dist/editor/ai/terminal/components/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js +2 -1
- package/dist/editor/ai/terminal/components/AgentTerminalSummaryLayout.js.map +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js +8 -8
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.js +2 -2
- package/dist/editor/ai/terminal/components/QuestionnaireRecap.js.map +1 -1
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js +5 -5
- package/dist/editor/ai/terminal/components/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js +3 -3
- package/dist/editor/ai-image-editor/AiImageEditorDialog.js.map +1 -1
- package/dist/editor/bridge/protocol.d.ts +0 -5
- package/dist/editor/bridge/protocol.js.map +1 -1
- package/dist/editor/client/AboutDialog.js +1 -1
- package/dist/editor/client/AboutDialog.js.map +1 -1
- package/dist/editor/client/EditorShell.js +15 -8
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/operations.js +1 -1
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/pageModelBuilder.d.ts +1 -0
- package/dist/editor/client/pageModelBuilder.js +22 -13
- package/dist/editor/client/pageModelBuilder.js.map +1 -1
- package/dist/editor/content-tree/IndicatorSettings.js +3 -2
- package/dist/editor/content-tree/IndicatorSettings.js.map +1 -1
- package/dist/editor/media-selector/Preview.js +1 -1
- package/dist/editor/media-selector/Preview.js.map +1 -1
- package/dist/editor/media-selector/TreeSelector.js +1 -1
- package/dist/editor/media-selector/TreeSelector.js.map +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js +3 -14
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/VersionSelector.d.ts +3 -2
- package/dist/editor/menubar/VersionSelector.js +28 -12
- package/dist/editor/menubar/VersionSelector.js.map +1 -1
- package/dist/editor/menubar/WorkflowButton.js +9 -8
- package/dist/editor/menubar/WorkflowButton.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js +7 -7
- package/dist/editor/menubar/toolbar-sections/ManualBrowser.js.map +1 -1
- package/dist/editor/notifications/NotificationCenter.js +1 -1
- package/dist/editor/notifications/NotificationCenter.js.map +1 -1
- package/dist/editor/notifications/NotificationItem.js +4 -3
- package/dist/editor/notifications/NotificationItem.js.map +1 -1
- package/dist/editor/notifications/watchEventOptions.js +3 -2
- package/dist/editor/notifications/watchEventOptions.js.map +1 -1
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +10 -4
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js +1 -1
- package/dist/editor/page-editor-chrome/FeedbackHighlightBadge.js.map +1 -1
- package/dist/editor/page-viewer/EditorFormHintPopover.js +1 -1
- package/dist/editor/page-viewer/EditorFormHintPopover.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +67 -0
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/RenderingParametersSection.js +1 -1
- package/dist/editor/page-viewer/RenderingParametersSection.js.map +1 -1
- package/dist/editor/personalization/PersonalizationPanel.js +3 -3
- package/dist/editor/personalization/PersonalizationPanel.js.map +1 -1
- package/dist/editor/personalization/RuleElementPicker.js +1 -1
- package/dist/editor/personalization/RuleElementPicker.js.map +1 -1
- package/dist/editor/reviews/CommentDisplayPopover.js +1 -1
- package/dist/editor/reviews/CommentDisplayPopover.js.map +1 -1
- package/dist/editor/reviews/CommentEditor.js +1 -1
- package/dist/editor/reviews/CommentEditor.js.map +1 -1
- package/dist/editor/reviews/CommentPopover.js +1 -1
- package/dist/editor/reviews/CommentPopover.js.map +1 -1
- package/dist/editor/reviews/CommentView.js +2 -2
- package/dist/editor/reviews/CommentView.js.map +1 -1
- package/dist/editor/reviews/CreateReviewConfirmStep.js +2 -2
- package/dist/editor/reviews/CreateReviewConfirmStep.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDetailsStep.js +6 -6
- package/dist/editor/reviews/CreateReviewDetailsStep.js.map +1 -1
- package/dist/editor/reviews/CreateReviewSuccessStep.js +2 -2
- package/dist/editor/reviews/CreateReviewSuccessStep.js.map +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js +3 -3
- package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
- package/dist/editor/reviews/EditReviewSettingsDialog.js +7 -7
- package/dist/editor/reviews/EditReviewSettingsDialog.js.map +1 -1
- package/dist/editor/reviews/LatestFeedback.js +1 -1
- package/dist/editor/reviews/LatestFeedback.js.map +1 -1
- package/dist/editor/reviews/ReviewDetail.js +2 -2
- package/dist/editor/reviews/ReviewDetail.js.map +1 -1
- package/dist/editor/reviews/ReviewersPanel.js +1 -1
- package/dist/editor/reviews/ReviewersPanel.js.map +1 -1
- package/dist/editor/reviews/SuggestedEdit.js +5 -5
- package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
- package/dist/editor/settings/About.js +4 -4
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/QuotaInfo.js +6 -6
- package/dist/editor/settings/QuotaInfo.js.map +1 -1
- package/dist/editor/settings/SettingsCard.d.ts +4 -0
- package/dist/editor/settings/SettingsCard.js +7 -0
- package/dist/editor/settings/SettingsCard.js.map +1 -0
- package/dist/editor/settings/SettingsView.js +1 -1
- package/dist/editor/settings/SettingsView.js.map +1 -1
- package/dist/editor/settings/index/AdvancedSettings.js +1 -1
- package/dist/editor/settings/index/AdvancedSettings.js.map +1 -1
- package/dist/editor/settings/index/EmbeddingProviderInfo.js +1 -1
- package/dist/editor/settings/index/EmbeddingProviderInfo.js.map +1 -1
- package/dist/editor/settings/index/IndexStatusCards.js +1 -1
- package/dist/editor/settings/index/IndexStatusCards.js.map +1 -1
- package/dist/editor/settings/index/LatestEmbeddingsList.js +1 -1
- package/dist/editor/settings/index/LatestEmbeddingsList.js.map +1 -1
- package/dist/editor/settings/index/RebuildIndexSection.js +1 -1
- package/dist/editor/settings/index/RebuildIndexSection.js.map +1 -1
- package/dist/editor/settings/index/RecentBatchesList.js +1 -1
- package/dist/editor/settings/index/RecentBatchesList.js.map +1 -1
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js +3 -2
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/AgentToolsPanel.js +1 -1
- package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/AgentsPanel.js +1 -1
- package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ClusterInstancesPanel.js +3 -3
- package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
- package/dist/editor/settings/panels/FieldTypeSerializersPanel.js +1 -1
- package/dist/editor/settings/panels/FieldTypeSerializersPanel.js.map +1 -1
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.js +2 -2
- package/dist/editor/settings/panels/GroupedFieldConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js +3 -2
- package/dist/editor/settings/panels/JavaScriptToolAgentPanel.js.map +1 -1
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +2 -2
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/McpToolsPanel.js +1 -1
- package/dist/editor/settings/panels/McpToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ModelConfigPanel.js +1 -1
- package/dist/editor/settings/panels/ModelConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/ModelsPanel.js +2 -2
- package/dist/editor/settings/panels/ModelsPanel.js.map +1 -1
- package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js +1 -1
- package/dist/editor/settings/panels/NotificationSubscriptionsPanel.js.map +1 -1
- package/dist/editor/settings/panels/PersistentLogsPanel.js +3 -3
- package/dist/editor/settings/panels/PersistentLogsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js +3 -2
- package/dist/editor/settings/panels/ProjectTemplateAgentPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplateSelector.js +1 -1
- package/dist/editor/settings/panels/ProjectTemplateSelector.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +3 -3
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProviderIcon.js +1 -1
- package/dist/editor/settings/panels/ProviderIcon.js.map +1 -1
- package/dist/editor/settings/panels/SearchConfigPanel.js +1 -1
- package/dist/editor/settings/panels/SearchConfigPanel.js.map +1 -1
- package/dist/editor/settings/panels/SettingsPanel.js +1 -1
- package/dist/editor/settings/panels/SettingsPanel.js.map +1 -1
- package/dist/editor/settings/panels/StatusPanel.js +1 -1
- package/dist/editor/settings/panels/StatusPanel.js.map +1 -1
- package/dist/editor/settings/panels/SystemSettingsPanel.js +1 -1
- package/dist/editor/settings/panels/SystemSettingsPanel.js.map +1 -1
- package/dist/editor/settings/panels/UserPreferencesPanel.js +1 -1
- package/dist/editor/settings/panels/UserPreferencesPanel.js.map +1 -1
- package/dist/editor/setup-wizard/steps/CreateSettingsStep.js +1 -1
- package/dist/editor/setup-wizard/steps/CreateSettingsStep.js.map +1 -1
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +1 -1
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.js.map +1 -1
- package/dist/editor/setup-wizard/steps/ProviderStep.js +6 -6
- package/dist/editor/setup-wizard/steps/ProviderStep.js.map +1 -1
- package/dist/editor/sidebar/Favorites.js +1 -1
- package/dist/editor/sidebar/Favorites.js.map +1 -1
- package/dist/editor/sidebar/SidebarPanel.js +3 -1
- package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
- package/dist/editor/sidebar/SidebarStack.js +1 -0
- package/dist/editor/sidebar/SidebarStack.js.map +1 -1
- package/dist/editor/sidebar/Workbox.js +1 -1
- package/dist/editor/sidebar/Workbox.js.map +1 -1
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js +12 -11
- package/dist/editor/template-wizard/TemplateStructureInlineEditor.js.map +1 -1
- package/dist/editor/tree-indicators/GutterColumns.js +3 -2
- package/dist/editor/tree-indicators/GutterColumns.js.map +1 -1
- package/dist/editor/ui/Icons.js +1 -1
- package/dist/editor/ui/Icons.js.map +1 -1
- package/dist/editor/ui/ItemCollectionEditor.js +2 -2
- package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
- package/dist/editor/ui/PublishItemDialog.js +2 -2
- package/dist/editor/ui/PublishItemDialog.js.map +1 -1
- package/dist/editor/ui/PublishRestrictionsDialog.js +5 -5
- package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
- package/dist/editor/ui/Section.js +1 -1
- package/dist/editor/ui/Section.js.map +1 -1
- package/dist/editor/ui/SimpleMenu.js +3 -3
- package/dist/editor/ui/SimpleMenu.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.d.ts +2 -1
- package/dist/editor/ui/SimpleTabs.js +23 -5
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.js +120 -3
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/ui/TemplateSelectorDialog.js +2 -2
- package/dist/editor/ui/TemplateSelectorDialog.js.map +1 -1
- package/dist/editor/ui/splitterResizeEvent.d.ts +7 -0
- package/dist/editor/ui/splitterResizeEvent.js +6 -0
- package/dist/editor/ui/splitterResizeEvent.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/licensing/LicenseOverlay.js +2 -2
- package/dist/licensing/LicenseOverlay.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/setup/wizard/steps/ImportModelDialog.js +3 -3
- package/dist/setup/wizard/steps/ImportModelDialog.js.map +1 -1
- package/dist/splash-screen/ModernSplashScreen.js +26 -17
- package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
- package/dist/splash-screen/ParheliaAssistantChat.js +2 -2
- package/dist/splash-screen/ParheliaAssistantChat.js.map +1 -1
- package/dist/splash-screen/RecentPages.js +2 -2
- package/dist/splash-screen/RecentPages.js.map +1 -1
- package/dist/task-board/TaskBoardWorkspace.js +153 -164
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/CommentsList.js +1 -1
- package/dist/task-board/components/CommentsList.js.map +1 -1
- package/dist/task-board/components/CreateTaskDialog.js +10 -6
- package/dist/task-board/components/CreateTaskDialog.js.map +1 -1
- package/dist/task-board/components/ItemCollectionEditorDialog.js +1 -1
- package/dist/task-board/components/ItemCollectionEditorDialog.js.map +1 -1
- package/dist/task-board/components/ProjectDashboard.d.ts +12 -22
- package/dist/task-board/components/ProjectDashboard.js +121 -109
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/ProjectListContent.js +5 -5
- package/dist/task-board/components/ProjectListContent.js.map +1 -1
- package/dist/task-board/components/ProjectOverviewContent.js +7 -4
- package/dist/task-board/components/ProjectOverviewContent.js.map +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.d.ts +2 -0
- package/dist/task-board/components/ProjectPropertiesPanel.js +12 -9
- package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
- package/dist/task-board/components/ProjectSettingsDialog.d.ts +18 -0
- package/dist/task-board/components/ProjectSettingsDialog.js +57 -47
- package/dist/task-board/components/ProjectSettingsDialog.js.map +1 -1
- package/dist/task-board/components/TaskAgentPanel.js +6 -5
- package/dist/task-board/components/TaskAgentPanel.js.map +1 -1
- package/dist/task-board/components/TaskAssigneePicker.js +3 -2
- package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
- package/dist/task-board/components/TaskAttachmentsSection.js +2 -2
- package/dist/task-board/components/TaskAttachmentsSection.js.map +1 -1
- package/dist/task-board/components/TaskBoardHomeView.d.ts +1 -21
- package/dist/task-board/components/TaskBoardHomeView.js +18 -155
- package/dist/task-board/components/TaskBoardHomeView.js.map +1 -1
- package/dist/task-board/components/TaskBoardMyTasksSidebar.js +4 -4
- package/dist/task-board/components/TaskBoardMyTasksSidebar.js.map +1 -1
- package/dist/task-board/components/TaskBoardProjectListSidebar.js +71 -14
- package/dist/task-board/components/TaskBoardProjectListSidebar.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +9 -52
- package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
- package/dist/task-board/components/TaskCard.js +7 -24
- package/dist/task-board/components/TaskCard.js.map +1 -1
- package/dist/task-board/components/TaskDetailPanel.js +18 -12
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
- package/dist/task-board/components/TaskRow.js +19 -18
- package/dist/task-board/components/TaskRow.js.map +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js +1 -1
- package/dist/task-board/components/TaskboardPersistentLogPanel.js.map +1 -1
- package/dist/task-board/components/WizardCommunicationCards.js +4 -4
- package/dist/task-board/components/WizardCommunicationCards.js.map +1 -1
- package/dist/task-board/components/WizardCommunicationShared.js +3 -3
- package/dist/task-board/components/WizardTaskDetailsPanel.js +2 -2
- package/dist/task-board/components/WizardTaskDetailsPanel.js.map +1 -1
- package/dist/task-board/taskBoardNavStore.d.ts +0 -2
- package/dist/task-board/taskBoardNavStore.js +0 -2
- package/dist/task-board/taskBoardNavStore.js.map +1 -1
- package/dist/task-board/taskStatus.js +2 -2
- package/dist/task-board/taskStatus.js.map +1 -1
- package/dist/task-board/views/DependencyGraphView.js +19 -8
- package/dist/task-board/views/DependencyGraphView.js.map +1 -1
- package/dist/task-board/views/KanbanView.js +240 -39
- package/dist/task-board/views/KanbanView.js.map +1 -1
- package/dist/task-board/views/ListView.js +2 -3
- package/dist/task-board/views/ListView.js.map +1 -1
- package/dist/task-board/views/WizardView.d.ts +2 -0
- package/dist/task-board/views/WizardView.js +11 -8
- package/dist/task-board/views/WizardView.js.map +1 -1
- package/package.json +2 -1
- package/styles.css +6 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProjectAttentionSummary, ProjectWithPermission } from "../types";
|
|
2
2
|
export type SubprojectTaskCounts = {
|
|
3
3
|
total: number;
|
|
4
4
|
todo: number;
|
|
@@ -11,37 +11,27 @@ export declare function TaskStateProgressBar(props: {
|
|
|
11
11
|
counts: SubprojectTaskCounts;
|
|
12
12
|
compact?: boolean;
|
|
13
13
|
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
-
export declare function CostProgressRing(props: {
|
|
15
|
-
used: number;
|
|
16
|
-
limit: number;
|
|
17
|
-
size?: number;
|
|
18
|
-
strokeWidth?: number;
|
|
19
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
20
|
-
export declare function TaskStateProgressRing(props: {
|
|
21
|
-
counts: SubprojectTaskCounts;
|
|
22
|
-
size?: number;
|
|
23
|
-
strokeWidth?: number;
|
|
24
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
25
14
|
export declare function ProjectDashboard(props: {
|
|
26
15
|
projectId: string;
|
|
27
16
|
selectedProjectTitle: string;
|
|
28
17
|
selectedProjectDescription?: string;
|
|
29
|
-
selectedProjectStatus?: ProjectStatus;
|
|
30
18
|
selectedProjectCostUsed?: number;
|
|
31
19
|
selectedProjectCostLimit?: number | null;
|
|
32
|
-
selectedProjectSourceTemplateId?: string | null;
|
|
33
|
-
selectedProjectSourceTemplateName?: string | null;
|
|
34
|
-
canOpenSourceTemplate?: boolean;
|
|
35
|
-
onOpenSourceTemplate?: (templateId: string) => void;
|
|
36
|
-
canEditProjectStatus?: boolean;
|
|
37
|
-
savingProjectStatus?: boolean;
|
|
38
|
-
onStatusChange?: (status: ProjectStatus) => void | Promise<void>;
|
|
39
20
|
selectedProjectTaskCounts: SubprojectTaskCounts;
|
|
40
21
|
subprojects: ProjectWithPermission[];
|
|
41
22
|
taskCountsByProjectId: Record<string, SubprojectTaskCounts>;
|
|
42
|
-
loading: boolean;
|
|
43
23
|
parentProjectId?: string | null;
|
|
44
24
|
parentProjectTitle?: string | null;
|
|
45
25
|
onSelectProject?: (projectId: string) => void;
|
|
46
|
-
|
|
26
|
+
canCreateTask?: boolean;
|
|
27
|
+
onCreateTask?: () => void;
|
|
28
|
+
showCreateTaskButton?: boolean;
|
|
29
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function ProjectKpisPanel(props: {
|
|
31
|
+
selectedProjectCostUsed?: number;
|
|
32
|
+
selectedProjectCostLimit?: number | null;
|
|
33
|
+
selectedProjectTaskCounts: SubprojectTaskCounts;
|
|
34
|
+
selectedProjectAttention?: ProjectAttentionSummary | null;
|
|
35
|
+
subprojects: ProjectWithPermission[];
|
|
36
|
+
taskCountsByProjectId: Record<string, SubprojectTaskCounts>;
|
|
47
37
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { Select } from "../../components/ui/select";
|
|
5
|
-
import { Tooltip, TooltipContent, TooltipTrigger, } from "../../components/ui/tooltip";
|
|
6
|
-
import { ProjectPropertiesPanel } from "./ProjectPropertiesPanel";
|
|
2
|
+
import { AlertTriangle, CheckCircle2, ChevronLeft, CircleDollarSign, ClipboardList, FolderTree, Plus, Timer, } from "lucide-react";
|
|
3
|
+
import { Button } from "../../components/ui/button";
|
|
7
4
|
const EMPTY_COUNTS = {
|
|
8
5
|
total: 0,
|
|
9
6
|
todo: 0,
|
|
@@ -16,40 +13,116 @@ const DEFAULT_COST_LIMIT = 25;
|
|
|
16
13
|
const STATE_STOPS = [
|
|
17
14
|
{
|
|
18
15
|
key: "todo",
|
|
19
|
-
label: "
|
|
16
|
+
label: "To do",
|
|
20
17
|
segmentClassName: "bg-neutral-grey-10",
|
|
21
|
-
ringColor: "var(--color-neutral-grey-10)",
|
|
22
18
|
swatchClassName: "bg-neutral-grey-10",
|
|
23
19
|
},
|
|
24
20
|
{
|
|
25
21
|
key: "waiting",
|
|
26
22
|
label: "Waiting",
|
|
27
23
|
segmentClassName: "bg-feedback-orange",
|
|
28
|
-
ringColor: "var(--color-feedback-orange-light)",
|
|
29
24
|
swatchClassName: "bg-feedback-orange",
|
|
30
25
|
},
|
|
31
26
|
{
|
|
32
27
|
key: "inProgress",
|
|
33
28
|
label: "In progress",
|
|
34
29
|
segmentClassName: "bg-feedback-blue",
|
|
35
|
-
ringColor: "var(--color-component-default)",
|
|
36
30
|
swatchClassName: "bg-feedback-blue",
|
|
37
31
|
},
|
|
38
32
|
{
|
|
39
33
|
key: "review",
|
|
40
34
|
label: "Review",
|
|
41
35
|
segmentClassName: "bg-highlight-100",
|
|
42
|
-
ringColor: "var(--color-component-layout)",
|
|
43
36
|
swatchClassName: "bg-highlight-100",
|
|
44
37
|
},
|
|
45
38
|
{
|
|
46
39
|
key: "done",
|
|
47
40
|
label: "Done",
|
|
48
41
|
segmentClassName: "bg-feedback-green",
|
|
49
|
-
ringColor: "var(--color-feedback-green)",
|
|
50
42
|
swatchClassName: "bg-feedback-green",
|
|
51
43
|
},
|
|
52
44
|
];
|
|
45
|
+
const ATTENTION_STOPS = [
|
|
46
|
+
{
|
|
47
|
+
key: "blocked",
|
|
48
|
+
label: "Blocked",
|
|
49
|
+
swatchClassName: "bg-feedback-orange",
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
key: "approval",
|
|
53
|
+
label: "Approval",
|
|
54
|
+
swatchClassName: "bg-highlight-100",
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "input",
|
|
58
|
+
label: "Input",
|
|
59
|
+
swatchClassName: "bg-feedback-blue",
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
key: "failed",
|
|
63
|
+
label: "Failed",
|
|
64
|
+
swatchClassName: "bg-feedback-red",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: "budget",
|
|
68
|
+
label: "Budget",
|
|
69
|
+
swatchClassName: "bg-feedback-orange-light",
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
key: "capacity",
|
|
73
|
+
label: "Capacity",
|
|
74
|
+
swatchClassName: "bg-neutral-grey-50",
|
|
75
|
+
},
|
|
76
|
+
];
|
|
77
|
+
function aggregateTaskCounts(selectedProjectTaskCounts, subprojects, taskCountsByProjectId) {
|
|
78
|
+
if (subprojects.length === 0)
|
|
79
|
+
return selectedProjectTaskCounts;
|
|
80
|
+
return subprojects.reduce((acc, subproject) => {
|
|
81
|
+
const counts = taskCountsByProjectId[subproject.project.projectId] || EMPTY_COUNTS;
|
|
82
|
+
return {
|
|
83
|
+
total: acc.total + counts.total,
|
|
84
|
+
todo: acc.todo + counts.todo,
|
|
85
|
+
waiting: acc.waiting + counts.waiting,
|
|
86
|
+
inProgress: acc.inProgress + counts.inProgress,
|
|
87
|
+
review: acc.review + counts.review,
|
|
88
|
+
done: acc.done + counts.done,
|
|
89
|
+
};
|
|
90
|
+
}, { ...selectedProjectTaskCounts });
|
|
91
|
+
}
|
|
92
|
+
function aggregateAttention(selectedProjectAttention, subprojects) {
|
|
93
|
+
return subprojects.reduce((acc, subproject) => {
|
|
94
|
+
const attention = subproject.overview?.attention;
|
|
95
|
+
if (!attention)
|
|
96
|
+
return acc;
|
|
97
|
+
return {
|
|
98
|
+
total: acc.total + attention.total,
|
|
99
|
+
blocked: acc.blocked + attention.blocked,
|
|
100
|
+
approval: acc.approval + attention.approval,
|
|
101
|
+
input: acc.input + attention.input,
|
|
102
|
+
failed: acc.failed + attention.failed,
|
|
103
|
+
budget: acc.budget + attention.budget,
|
|
104
|
+
capacity: (acc.capacity ?? 0) + (attention.capacity ?? 0),
|
|
105
|
+
};
|
|
106
|
+
}, {
|
|
107
|
+
total: selectedProjectAttention?.total ?? 0,
|
|
108
|
+
blocked: selectedProjectAttention?.blocked ?? 0,
|
|
109
|
+
approval: selectedProjectAttention?.approval ?? 0,
|
|
110
|
+
input: selectedProjectAttention?.input ?? 0,
|
|
111
|
+
failed: selectedProjectAttention?.failed ?? 0,
|
|
112
|
+
budget: selectedProjectAttention?.budget ?? 0,
|
|
113
|
+
capacity: selectedProjectAttention?.capacity ?? 0,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
function formatCurrency(value) {
|
|
117
|
+
return `$${value.toFixed(2)}`;
|
|
118
|
+
}
|
|
119
|
+
function formatPercent(value) {
|
|
120
|
+
return `${Math.round(value)}%`;
|
|
121
|
+
}
|
|
122
|
+
function KpiTile(props) {
|
|
123
|
+
const { icon, label, value, detail, testId } = props;
|
|
124
|
+
return (_jsxs("div", { className: "border-border-default flex min-h-[112px] flex-col justify-between rounded-md border bg-white p-4", "data-testid": testId, children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsx("div", { className: "text-neutral-grey-50 text-[10px] leading-none font-bold tracking-wider uppercase", children: label }), _jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-50 flex size-8 items-center justify-center rounded-md", children: icon })] }), _jsxs("div", { children: [_jsx("div", { className: "text-neutral-grey-100 text-2xl leading-tight font-medium", children: value }), _jsx("div", { className: "text-neutral-grey-50 mt-1 text-xs", children: detail })] })] }));
|
|
125
|
+
}
|
|
53
126
|
export function TaskStateProgressBar(props) {
|
|
54
127
|
const { counts, compact = false } = props;
|
|
55
128
|
const total = counts.total;
|
|
@@ -59,110 +132,49 @@ export function TaskStateProgressBar(props) {
|
|
|
59
132
|
return (_jsx("div", { className: stop.segmentClassName, style: { width: `${widthPct}%` }, title: `${stop.label}: ${value}` }, stop.key));
|
|
60
133
|
}) })) : null }));
|
|
61
134
|
}
|
|
62
|
-
export function CostProgressRing(props) {
|
|
63
|
-
const { used, limit, size = 44, strokeWidth = 4 } = props;
|
|
64
|
-
const radius = (size - strokeWidth) / 2;
|
|
65
|
-
const circumference = 2 * Math.PI * radius;
|
|
66
|
-
const pct = limit > 0 ? Math.max(0, Math.min((used / limit) * 100, 100)) : 0;
|
|
67
|
-
const dashOffset = circumference - (pct / 100) * circumference;
|
|
68
|
-
const stroke = pct >= 100
|
|
69
|
-
? "var(--color-feedback-red)"
|
|
70
|
-
: pct >= 80
|
|
71
|
-
? "var(--color-feedback-orange)"
|
|
72
|
-
: "var(--color-feedback-green)";
|
|
73
|
-
const center = size / 2;
|
|
74
|
-
const formatAmount = (value) => value >= 1000
|
|
75
|
-
? `${(value / 1000).toFixed(value >= 10000 ? 0 : 1)}k`
|
|
76
|
-
: value.toFixed(value >= 100 ? 0 : 0);
|
|
77
|
-
return (_jsxs("div", { className: "relative", style: { width: size, height: size }, children: [_jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "-rotate-90", "aria-hidden": true, children: [_jsx("circle", { cx: center, cy: center, r: radius, stroke: "var(--color-neutral-grey-10)", strokeWidth: strokeWidth, fill: "none" }), _jsx("circle", { cx: center, cy: center, r: radius, stroke: stroke, strokeWidth: strokeWidth, fill: "none", strokeLinecap: "round", strokeDasharray: circumference, strokeDashoffset: dashOffset, style: { transition: "stroke-dashoffset 200ms ease-out" } })] }), _jsxs("div", { className: "text-neutral-grey-100 pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-[10px] leading-none font-semibold", children: [_jsxs("span", { children: ["$", formatAmount(used)] }), _jsxs("span", { className: "text-neutral-grey-50 text-[8px] font-normal", children: ["of $", formatAmount(limit)] })] })] }));
|
|
78
|
-
}
|
|
79
|
-
export function TaskStateProgressRing(props) {
|
|
80
|
-
const { counts, size = 44, strokeWidth = 4 } = props;
|
|
81
|
-
const radius = (size - strokeWidth) / 2;
|
|
82
|
-
const circumference = 2 * Math.PI * radius;
|
|
83
|
-
const center = size / 2;
|
|
84
|
-
const total = counts.total;
|
|
85
|
-
let cumulative = 0;
|
|
86
|
-
const segments = total
|
|
87
|
-
? STATE_STOPS.map((stop) => {
|
|
88
|
-
const value = counts[stop.key];
|
|
89
|
-
if (value <= 0)
|
|
90
|
-
return null;
|
|
91
|
-
const fraction = value / total;
|
|
92
|
-
const dashLength = fraction * circumference;
|
|
93
|
-
const dashGap = circumference - dashLength;
|
|
94
|
-
const dashOffset = -cumulative * circumference;
|
|
95
|
-
cumulative += fraction;
|
|
96
|
-
return (_jsx("circle", { cx: center, cy: center, r: radius, stroke: stop.ringColor, strokeWidth: strokeWidth, fill: "none", strokeDasharray: `${dashLength} ${dashGap}`, strokeDashoffset: dashOffset }, stop.key));
|
|
97
|
-
})
|
|
98
|
-
: [];
|
|
99
|
-
return (_jsxs("div", { className: "relative", style: { width: size, height: size }, children: [_jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, className: "-rotate-90", "aria-hidden": true, children: [_jsx("circle", { cx: center, cy: center, r: radius, stroke: "var(--color-neutral-grey-10)", strokeWidth: strokeWidth, fill: "none" }), segments] }), _jsxs("div", { className: "text-neutral-grey-100 pointer-events-none absolute inset-0 flex flex-col items-center justify-center text-[11px] leading-none font-semibold", children: [_jsx("span", { children: total }), _jsx("span", { className: "text-neutral-grey-50 text-[8px] font-normal", children: total === 1 ? "task" : "tasks" })] })] }));
|
|
100
|
-
}
|
|
101
|
-
function SourceTemplateBadge(props) {
|
|
102
|
-
const { templateId, templateName, canOpenTemplate, onOpenTemplate } = props;
|
|
103
|
-
// Hide entirely when the project was not created from a template, or when
|
|
104
|
-
// the source template was deleted (backend leaves the resolved name null).
|
|
105
|
-
if (!templateId || !templateName) {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
const tooltipText = `Created from project template "${templateName}"`;
|
|
109
|
-
const inner = (_jsxs("span", { className: "inline-flex max-w-56 items-center gap-1 truncate", children: [_jsx(GitBranch, { className: "h-3 w-3 shrink-0", "aria-hidden": true }), _jsx("span", { className: "truncate", children: templateName })] }));
|
|
110
|
-
return (_jsxs("div", { className: "flex shrink-0 flex-col gap-0.5", children: [_jsx("span", { className: "text-neutral-grey-50 text-[10px] font-semibold tracking-wider", children: "Created from template" }), _jsxs(Tooltip, { delayDuration: 250, children: [_jsx(TooltipTrigger, { asChild: true, children: canOpenTemplate ? (_jsx("button", { type: "button", className: "rounded-badge badge-pad text-2xs bg-neutral-grey-5 text-neutral-grey-50 hover:bg-neutral-grey-10 hover:text-neutral-grey-100 flex h-7 shrink-0 items-center font-medium", onClick: () => onOpenTemplate(templateId), "data-testid": "taskboard-project-source-template", children: inner })) : (_jsx("span", { className: "rounded-badge badge-pad text-2xs bg-neutral-grey-5 text-neutral-grey-50 flex h-7 shrink-0 items-center font-medium", "data-testid": "taskboard-project-source-template", children: inner })) }), _jsx(TooltipContent, { side: "bottom", children: canOpenTemplate
|
|
111
|
-
? `${tooltipText}. Click to open the template editor.`
|
|
112
|
-
: tooltipText })] })] }));
|
|
113
|
-
}
|
|
114
135
|
export function ProjectDashboard(props) {
|
|
115
|
-
const {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const previousCount = previousSubprojectCountRef.current;
|
|
121
|
-
const nextCount = subprojects.length;
|
|
122
|
-
if (nextCount > previousCount) {
|
|
123
|
-
setShowSubprojects(true);
|
|
124
|
-
}
|
|
125
|
-
previousSubprojectCountRef.current = nextCount;
|
|
126
|
-
}, [subprojects.length]);
|
|
136
|
+
const { selectedProjectTitle, selectedProjectDescription, parentProjectId, parentProjectTitle, onSelectProject, canCreateTask = false, onCreateTask, showCreateTaskButton = true, } = props;
|
|
137
|
+
return (_jsxs("div", { "data-testid": "taskboard-project-dashboard", children: [parentProjectId && parentProjectTitle && onSelectProject && (_jsx("div", { className: "mb-3", children: _jsxs("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 inline-flex items-center gap-1.5 text-sm", onClick: () => onSelectProject(parentProjectId), "data-testid": "taskboard-parent-project-button", children: [_jsx(ChevronLeft, { className: "h-4 w-4", strokeWidth: 1.5 }), _jsxs("span", { children: ["Back to ", parentProjectTitle] })] }) })), _jsxs("div", { className: "flex flex-col gap-5 lg:flex-row lg:items-start lg:justify-between", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h1", { className: "text-neutral-grey-100 truncate text-3xl leading-tight font-medium tracking-normal", children: selectedProjectTitle }), selectedProjectDescription?.trim() ? (_jsx("p", { className: "text-neutral-grey-50 mt-2 max-w-3xl text-sm leading-6", children: selectedProjectDescription.trim() })) : null] }), showCreateTaskButton ? (_jsx("div", { className: "flex shrink-0 flex-wrap items-center gap-3", children: _jsxs(Button, { onClick: () => onCreateTask?.(), disabled: !canCreateTask || !onCreateTask, "data-testid": "taskboard-create-task-button", children: [_jsx("span", { children: "Create new task" }), _jsx(Plus, { className: "h-4 w-4", strokeWidth: 1.5 })] }) })) : null] })] }));
|
|
138
|
+
}
|
|
139
|
+
export function ProjectKpisPanel(props) {
|
|
140
|
+
const { selectedProjectCostUsed = 0, selectedProjectCostLimit = null, selectedProjectTaskCounts, selectedProjectAttention, subprojects, taskCountsByProjectId, } = props;
|
|
127
141
|
const normalizedCostUsed = Number.isFinite(selectedProjectCostUsed)
|
|
128
142
|
? Math.max(0, selectedProjectCostUsed)
|
|
129
143
|
: 0;
|
|
130
144
|
const effectiveCostLimit = typeof selectedProjectCostLimit === "number" && selectedProjectCostLimit > 0
|
|
131
145
|
? selectedProjectCostLimit
|
|
132
146
|
: DEFAULT_COST_LIMIT;
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
})
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
{
|
|
164
|
-
|
|
165
|
-
{ value: "Archived", label: "Archived" },
|
|
166
|
-
], className: "h-7 w-28 text-xs" })] }), _jsx(SourceTemplateBadge, { templateId: selectedProjectSourceTemplateId ?? null, templateName: selectedProjectSourceTemplateName ?? null, canOpenTemplate: canOpenSourceTemplate && !!onOpenSourceTemplate, onOpenTemplate: (id) => onOpenSourceTemplate?.(id) }), _jsxs("div", { className: "flex flex-1 items-center justify-end gap-2", children: [_jsxs(Tooltip, { delayDuration: 250, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { "data-testid": "taskboard-project-cost-ring", children: _jsx(CostProgressRing, { used: normalizedCostUsed, limit: effectiveCostLimit }) }) }), _jsxs(TooltipContent, { side: "bottom", children: ["Cumulative cost: $", normalizedCostUsed.toFixed(2), " / $", effectiveCostLimit.toFixed(2)] })] }), _jsxs(Tooltip, { delayDuration: 250, children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx("div", { "data-testid": "taskboard-project-progress-ring", children: _jsx(TaskStateProgressRing, { counts: aggregatedCounts }) }) }), _jsx(TooltipContent, { side: "bottom", className: "max-w-xs text-left", children: aggregatedCounts.total > 0 ? (_jsx("div", { className: "space-y-1", children: STATE_STOPS.map((stop) => (_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: `inline-block h-2 w-2 rounded-full ${stop.swatchClassName}` }), stop.label] }), _jsx("span", { children: aggregatedCounts[stop.key] })] }, stop.key))) })) : ("No tasks yet") })] })] })] }), hasSubprojects && (_jsxs("div", { className: "mt-3", children: [_jsxs("button", { type: "button", className: "text-neutral-grey-50 hover:text-neutral-grey-100 mb-1.5 flex items-center gap-1 text-[11px] font-semibold tracking-wider", onClick: () => setShowSubprojects((prev) => !prev), "aria-label": showSubprojects ? "Hide subprojects" : "Show subprojects", "data-testid": "taskboard-subproject-toggle-label", children: [_jsx(ChevronDown, { className: `h-3 w-3 transition-transform ${showSubprojects ? "rotate-0" : "-rotate-90"}` }), "Subprojects (", subprojects.length, ")"] }), showSubprojects && (_jsx("div", { className: "space-y-2", "data-testid": "taskboard-project-progress-rows", children: subprojectRows.map((row) => (_jsxs("div", { className: "space-y-1", "data-testid": `taskboard-project-progress-row-${row.projectId}`, children: [_jsxs("div", { className: "flex items-center justify-between gap-4 pl-4 text-xs", children: [onSelectProject ? (_jsxs("button", { type: "button", className: "text-neutral-grey-100 hover:text-neutral-grey-100 flex min-w-0 items-center gap-1.5 truncate text-left font-medium", onClick: () => onSelectProject(row.projectId), "data-testid": `taskboard-subproject-link-${row.projectId}`, children: [_jsx(Folder, { className: "text-neutral-grey-50 h-3.5 w-3.5 shrink-0", "aria-hidden": true }), _jsx("span", { className: "truncate", children: row.title })] })) : (_jsxs("div", { className: "text-neutral-grey-100 flex min-w-0 items-center gap-1.5 truncate font-medium", children: [_jsx(Folder, { className: "text-neutral-grey-50 h-3.5 w-3.5 shrink-0", "aria-hidden": true }), _jsx("span", { className: "truncate", children: row.title })] })), _jsxs("div", { className: "text-neutral-grey-50 shrink-0 text-[11px]", children: [row.counts.total, " tasks"] })] }), _jsx("div", { className: "pr-6 pl-4", children: _jsx(TaskStateProgressBar, { counts: row.counts, compact: true }) })] }, row.projectId))) }))] })), _jsx(ProjectPropertiesPanel, { projectId: projectId, canEdit: canEditProperties, className: "mt-4" })] }));
|
|
147
|
+
const budgetPercent = effectiveCostLimit > 0
|
|
148
|
+
? Math.max(0, (normalizedCostUsed / effectiveCostLimit) * 100)
|
|
149
|
+
: 0;
|
|
150
|
+
const remainingBudget = effectiveCostLimit - normalizedCostUsed;
|
|
151
|
+
const aggregatedCounts = aggregateTaskCounts(selectedProjectTaskCounts, subprojects, taskCountsByProjectId);
|
|
152
|
+
const completionPercent = aggregatedCounts.total > 0
|
|
153
|
+
? (aggregatedCounts.done / aggregatedCounts.total) * 100
|
|
154
|
+
: 0;
|
|
155
|
+
const openTasks = Math.max(0, aggregatedCounts.total - aggregatedCounts.done);
|
|
156
|
+
const attention = aggregateAttention(selectedProjectAttention, subprojects);
|
|
157
|
+
const attentionTotal = attention.total ||
|
|
158
|
+
attention.blocked +
|
|
159
|
+
attention.approval +
|
|
160
|
+
attention.input +
|
|
161
|
+
attention.failed +
|
|
162
|
+
attention.budget +
|
|
163
|
+
(attention.capacity ?? 0);
|
|
164
|
+
const budgetDetail = remainingBudget >= 0
|
|
165
|
+
? `${formatCurrency(remainingBudget)} remaining of ${formatCurrency(effectiveCostLimit)}`
|
|
166
|
+
: `${formatCurrency(Math.abs(remainingBudget))} over ${formatCurrency(effectiveCostLimit)}`;
|
|
167
|
+
return (_jsxs("div", { className: "min-h-0 space-y-4", "data-testid": "taskboard-project-kpis-panel", children: [_jsxs("div", { className: "grid gap-3 md:grid-cols-2 xl:grid-cols-4", children: [_jsx(KpiTile, { icon: _jsx(CircleDollarSign, { className: "size-4", strokeWidth: 1.5 }), label: "Budget used", value: formatCurrency(normalizedCostUsed), detail: `${formatPercent(budgetPercent)} of budget. ${budgetDetail}`, testId: "taskboard-kpi-budget" }), _jsx(KpiTile, { icon: _jsx(CheckCircle2, { className: "size-4", strokeWidth: 1.5 }), label: "Completion", value: formatPercent(completionPercent), detail: `${aggregatedCounts.done} of ${aggregatedCounts.total} tasks done`, testId: "taskboard-kpi-completion" }), _jsx(KpiTile, { icon: _jsx(Timer, { className: "size-4", strokeWidth: 1.5 }), label: "Open tasks", value: openTasks, detail: `${aggregatedCounts.inProgress} in progress, ${aggregatedCounts.waiting} waiting`, testId: "taskboard-kpi-open-tasks" }), _jsx(KpiTile, { icon: _jsx(FolderTree, { className: "size-4", strokeWidth: 1.5 }), label: "Subprojects", value: subprojects.length, detail: subprojects.length === 1
|
|
168
|
+
? "1 direct subproject"
|
|
169
|
+
: `${subprojects.length} direct subprojects`, testId: "taskboard-kpi-subprojects" })] }), _jsxs("div", { className: "grid gap-4 xl:grid-cols-[minmax(0,1.35fr)_minmax(280px,0.65fr)]", children: [_jsxs("section", { className: "border-border-default rounded-md border bg-white p-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-50 flex size-8 items-center justify-center rounded-md", children: _jsx(ClipboardList, { className: "size-4", strokeWidth: 1.5 }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-neutral-grey-100 text-base font-medium", children: "Task status" }), _jsxs("p", { className: "text-neutral-grey-50 text-xs", children: [aggregatedCounts.total, " total tasks including direct subprojects"] })] })] }), _jsx("div", { className: "text-neutral-grey-100 text-xl font-medium", children: formatPercent(completionPercent) })] }), _jsx("div", { className: "mt-4", children: _jsx(TaskStateProgressBar, { counts: aggregatedCounts }) }), _jsx("div", { className: "mt-4 grid gap-2 md:grid-cols-2", children: STATE_STOPS.map((stop) => {
|
|
170
|
+
const value = aggregatedCounts[stop.key];
|
|
171
|
+
const percent = aggregatedCounts.total > 0
|
|
172
|
+
? (value / aggregatedCounts.total) * 100
|
|
173
|
+
: 0;
|
|
174
|
+
return (_jsxs("div", { className: "bg-neutral-grey-5/60 flex items-center justify-between gap-3 rounded-md px-3 py-2 text-sm", children: [_jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: `inline-block size-2 rounded-full ${stop.swatchClassName}` }), _jsx("span", { className: "text-neutral-grey-100 truncate", children: stop.label })] }), _jsxs("span", { className: "text-neutral-grey-50 shrink-0 text-xs tabular-nums", children: [value, " / ", formatPercent(percent)] })] }, stop.key));
|
|
175
|
+
}) })] }), _jsxs("section", { className: "border-border-default rounded-md border bg-white p-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "bg-neutral-grey-5 text-neutral-grey-50 flex size-8 items-center justify-center rounded-md", children: _jsx(AlertTriangle, { className: "size-4", strokeWidth: 1.5 }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-neutral-grey-100 text-base font-medium", children: "Attention" }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Work that needs a human or system unblock" })] })] }), _jsx("div", { className: "text-neutral-grey-100 text-xl font-medium", children: attentionTotal })] }), _jsx("div", { className: "mt-4 space-y-2", children: ATTENTION_STOPS.map((stop) => {
|
|
176
|
+
const value = attention[stop.key] ?? 0;
|
|
177
|
+
return (_jsxs("div", { className: "bg-neutral-grey-5/60 flex items-center justify-between gap-3 rounded-md px-3 py-2 text-sm", children: [_jsxs("span", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: `inline-block size-2 rounded-full ${stop.swatchClassName}` }), _jsx("span", { className: "text-neutral-grey-100 truncate", children: stop.label })] }), _jsx("span", { className: "text-neutral-grey-50 shrink-0 text-xs tabular-nums", children: value })] }, stop.key));
|
|
178
|
+
}) })] })] })] }));
|
|
167
179
|
}
|
|
168
180
|
//# sourceMappingURL=ProjectDashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectDashboard.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectDashboard.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectDashboard.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectDashboard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo, useState } from "react";
|
|
3
|
-
import { LayoutGrid,
|
|
3
|
+
import { LayoutGrid, Shield, Settings, FolderPlus, Clock, Loader2, } from "lucide-react";
|
|
4
4
|
import { Button } from "../../components/ui/button";
|
|
5
5
|
import { DeleteIcon } from "../../components/ui/delete-icon";
|
|
6
|
-
import {
|
|
6
|
+
import { FilterInput } from "../../components/FilterInput";
|
|
7
7
|
import { cn } from "../../lib/utils";
|
|
8
8
|
import { formatDistanceToNow } from "date-fns";
|
|
9
9
|
export function ProjectListContent({ nav, onProjectSelected, className, maxHeight = 360, }) {
|
|
@@ -28,10 +28,10 @@ export function ProjectListContent({ nav, onProjectSelected, className, maxHeigh
|
|
|
28
28
|
status.includes(query));
|
|
29
29
|
});
|
|
30
30
|
}, [nav.projectOptions, projectSearch, hideArchivedProjects]);
|
|
31
|
-
return (_jsxs("div", { className: cn("flex flex-col", className), children: [_jsxs("div", { className: "flex items-center justify-between border-b px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs font-
|
|
31
|
+
return (_jsxs("div", { className: cn("flex flex-col", className), children: [_jsxs("div", { className: "flex items-center justify-between border-b px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: "Projects" }), nav.isProjectsLoading ? (_jsx(Loader2, { className: "text-neutral-grey-50 h-3.5 w-3.5 animate-spin", "data-testid": "taskboard-projects-loading-spinner" })) : null] }), _jsxs("div", { className: "flex items-center gap-2", children: [nav.selectedProjectId ? (_jsxs(Button, { variant: "ghost", size: "sm", className: "text-neutral-grey-50 h-8 px-2.5", "data-testid": "taskboard-open-project-overview-button", onClick: () => {
|
|
32
32
|
nav.onSelectProject?.(null);
|
|
33
33
|
onProjectSelected?.();
|
|
34
|
-
}, children: [_jsx(LayoutGrid, { className: "mr-1.5 h-3.5 w-3.5" }), "Overview"] })) : null, _jsxs(Button, { variant: "default", size: "sm", className: "h-8 px-3", "data-testid": "taskboard-create-project-button", onClick: () => nav.onCreateProject?.(), children: [_jsx(FolderPlus, { className: "mr-1.5 h-3.5 w-3.5" }), "New project"] })] })] }), _jsx("div", { className: "border-b px-3 py-2", children: _jsxs("div", { className: "grid gap-2", children: [
|
|
34
|
+
}, children: [_jsx(LayoutGrid, { className: "mr-1.5 h-3.5 w-3.5" }), "Overview"] })) : null, _jsxs(Button, { variant: "default", size: "sm", className: "h-8 px-3", "data-testid": "taskboard-create-project-button", onClick: () => nav.onCreateProject?.(), children: [_jsx(FolderPlus, { className: "mr-1.5 h-3.5 w-3.5" }), "New project"] })] })] }), _jsx("div", { className: "border-b px-3 py-2", children: _jsxs("div", { className: "grid gap-2", children: [_jsx(FilterInput, { value: projectSearch, onChange: setProjectSearch, placeholder: "Search projects...", size: "md", searchIconPosition: "left", testId: "taskboard-project-search-input" }), _jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: hideArchivedProjects, onChange: (e) => setHideArchivedProjects(e.target.checked), "data-testid": "taskboard-hide-archived-checkbox" }), "Hide archived projects"] }), nav.isAdministrator ? (_jsxs("div", { className: "grid gap-1", children: [_jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: nav.showAllProjects, onChange: (e) => nav.onToggleShowAllProjects?.(e.target.checked), "data-testid": "taskboard-show-all-projects-checkbox" }), "Show all projects"] }), _jsx("p", { className: "text-neutral-grey-50 pl-5 text-[10px]", "data-testid": "taskboard-show-all-projects-hint", children: "Admin feature: includes projects across all users." })] })) : null] }) }), _jsx("div", { className: cn("overflow-y-auto p-2", maxHeight === "none" && "min-h-0 flex-1"), style: maxHeight !== "none" ? { maxHeight } : undefined, 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-projects-empty-loading", children: [_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin" }), "Loading projects..."] })) : nav.projectOptions.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 yet" })) : filteredProjectOptions.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 rounded-md border border-dashed px-3 py-8 text-center text-xs", children: "No matching projects" })) : (_jsx("div", { className: "flex flex-col gap-1", children: filteredProjectOptions.map((project) => {
|
|
35
35
|
const isSelected = project.projectId === nav.selectedProjectId;
|
|
36
36
|
const canManage = project.permission === "Owner";
|
|
37
37
|
const isSubproject = (project.depth ?? 0) > 0;
|
|
@@ -45,7 +45,7 @@ export function ProjectListContent({ nav, onProjectSelected, className, maxHeigh
|
|
|
45
45
|
onProjectSelected?.();
|
|
46
46
|
}, children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(LayoutGrid, { className: cn("text-neutral-grey-50", isSubproject ? "h-3 w-3" : "h-3.5 w-3.5") }), project.depth && project.depth > 0 ? (_jsx("span", { className: "text-neutral-grey-50 text-[10px]", children: "\u21B3" })) : null, _jsx("span", { className: cn("text-neutral-grey-100 truncate", isSubproject
|
|
47
47
|
? "text-xs font-medium"
|
|
48
|
-
: "text-sm font-medium"), children: project.title })] }), project.description?.trim() && (_jsx("div", { className: cn("text-neutral-grey-50 line-clamp-2 pl-5", isSubproject ? "mt-0.5 text-[10px]" : "mt-1 text-xs"), children: project.description.trim() })), _jsxs("div", { className: "mt-1 flex items-center gap-3 pl-5", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Shield, { className: cn("text-neutral-grey-50", isSubproject ? "h-2 w-2" : "h-2.5 w-2.5") }), _jsx("span", { className: cn("text-neutral-grey-50 font-
|
|
48
|
+
: "text-sm font-medium"), children: project.title })] }), project.description?.trim() && (_jsx("div", { className: cn("text-neutral-grey-50 line-clamp-2 pl-5", isSubproject ? "mt-0.5 text-[10px]" : "mt-1 text-xs"), children: project.description.trim() })), _jsxs("div", { className: "mt-1 flex items-center gap-3 pl-5", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(Shield, { className: cn("text-neutral-grey-50", isSubproject ? "h-2 w-2" : "h-2.5 w-2.5") }), _jsx("span", { className: cn("text-neutral-grey-50 font-medium tracking-wider", isSubproject ? "text-[9px]" : "text-[10px]"), children: project.permission })] }), project.updatedAt && (_jsxs("div", { className: "flex items-center gap-1.5", title: `Last updated: ${new Date(project.updatedAt).toLocaleString()}`, children: [_jsx(Clock, { className: cn("text-neutral-grey-50", isSubproject ? "h-2 w-2" : "h-2.5 w-2.5") }), _jsx("span", { className: cn("text-neutral-grey-50 font-medium", isSubproject ? "text-[9px]" : "text-[10px]"), children: formatDistanceToNow(new Date(project.updatedAt), {
|
|
49
49
|
addSuffix: true,
|
|
50
50
|
}) })] }))] })] }), canManage && (_jsxs("div", { className: "flex items-center gap-1 transition-opacity md:opacity-0 md:group-hover:opacity-100", children: [_jsx(Button, { variant: "ghost", size: "icon", className: "h-7 w-7", onClick: (e) => {
|
|
51
51
|
e.stopPropagation();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectListContent.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectListContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,UAAU,EACV,MAAM,EACN,
|
|
1
|
+
{"version":3,"file":"ProjectListContent.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectListContent.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useMemo, useState } from "react";
|
|
3
|
-
import { Clock, FileStack, FolderPlus, LayoutGrid, Loader2,
|
|
3
|
+
import { Clock, FileStack, FolderPlus, LayoutGrid, Loader2, Settings, Shield, } from "lucide-react";
|
|
4
4
|
import { formatDistanceToNow } from "date-fns";
|
|
5
5
|
import { DeleteIcon } from "../../components/ui/delete-icon";
|
|
6
6
|
import { Button } from "../../components/ui/button";
|
|
7
|
-
import {
|
|
7
|
+
import { FilterInput } from "../../components/FilterInput";
|
|
8
8
|
import { cn } from "../../lib/utils";
|
|
9
9
|
import { TaskStateProgressBar } from "./ProjectDashboard";
|
|
10
10
|
export function ProjectOverviewContent({ nav }) {
|
|
@@ -13,6 +13,9 @@ export function ProjectOverviewContent({ nav }) {
|
|
|
13
13
|
const filteredProjectOptions = useMemo(() => {
|
|
14
14
|
const query = projectSearch.trim().toLowerCase();
|
|
15
15
|
return nav.projectOptions.filter((project) => {
|
|
16
|
+
if (project.parentProjectId || (project.depth ?? 0) > 0) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
16
19
|
if (hideArchivedProjects &&
|
|
17
20
|
project.status?.toLowerCase() === "archived") {
|
|
18
21
|
return false;
|
|
@@ -29,7 +32,7 @@ export function ProjectOverviewContent({ nav }) {
|
|
|
29
32
|
status.includes(query));
|
|
30
33
|
});
|
|
31
34
|
}, [hideArchivedProjects, nav.projectOptions, projectSearch]);
|
|
32
|
-
return (_jsxs("div", { className: "flex min-h-full w-full flex-col rounded-2xl border bg-white shadow-sm", "data-testid": "taskboard-project-overview", children: [_jsxs("div", { className: "flex flex-col gap-3 border-b px-4 py-4 md:flex-row md:items-start md:justify-between", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs font-
|
|
35
|
+
return (_jsxs("div", { className: "flex min-h-full w-full flex-col rounded-2xl border bg-white shadow-sm", "data-testid": "taskboard-project-overview", children: [_jsxs("div", { className: "flex flex-col gap-3 border-b px-4 py-4 md:flex-row md:items-start md:justify-between", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: "Taskboard" }), _jsx("h2", { className: "text-neutral-grey-100 text-xl font-medium", children: "Projects Overview" }), _jsx("p", { className: "text-neutral-grey-50 max-w-2xl text-sm", children: "Pick a project to open the board. Progress is shown here so you can see where each project stands." })] }), _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsxs(Button, { variant: "outline", size: "sm", className: "h-9 px-3", "data-testid": "taskboard-project-overview-edit-templates-button", onClick: () => nav.onOpenProjectTemplates?.(), children: [_jsx(FileStack, { className: "mr-1.5 h-3.5 w-3.5" }), "Edit Templates"] }), _jsxs(Button, { variant: "default", size: "sm", className: "h-9 px-3", "data-testid": "taskboard-project-overview-create-button", onClick: () => nav.onCreateProject?.(), children: [_jsx(FolderPlus, { className: "mr-1.5 h-3.5 w-3.5" }), "New project"] })] })] }), _jsx("div", { className: "border-b px-4 py-3", children: _jsxs("div", { className: "grid gap-3 lg:grid-cols-[minmax(0,1fr)_auto_auto] lg:items-center", children: [_jsx(FilterInput, { value: projectSearch, onChange: setProjectSearch, placeholder: "Search projects...", size: "lg", searchIconPosition: "left", inputClassName: "text-sm", testId: "taskboard-project-overview-search-input" }), _jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: hideArchivedProjects, onChange: (e) => setHideArchivedProjects(e.target.checked), "data-testid": "taskboard-project-overview-hide-archived" }), "Hide archived projects"] }), nav.isAdministrator ? (_jsxs("label", { className: "text-neutral-grey-50 flex items-center gap-2 text-xs", children: [_jsx("input", { type: "checkbox", checked: nav.showAllProjects, onChange: (e) => nav.onToggleShowAllProjects?.(e.target.checked), "data-testid": "taskboard-project-overview-show-all-projects" }), "Show all projects"] })) : null] }) }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: nav.isProjectsLoading && nav.projectOptions.length === 0 ? (_jsxs("div", { className: "text-neutral-grey-50 flex min-h-[240px] items-center justify-center gap-2 rounded-xl border border-dashed text-sm", "data-testid": "taskboard-project-overview-loading", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Loading projects..."] })) : nav.projectOptions.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 rounded-xl border border-dashed px-4 py-12 text-center text-sm", children: "No projects yet" })) : filteredProjectOptions.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 rounded-xl border border-dashed px-4 py-12 text-center text-sm", children: "No matching projects" })) : (_jsx("div", { className: "grid gap-4 md:grid-cols-2 xl:grid-cols-3", children: filteredProjectOptions.map((project) => {
|
|
33
36
|
const counts = project.overview?.taskCounts ?? {
|
|
34
37
|
total: 0,
|
|
35
38
|
todo: 0,
|
|
@@ -47,7 +50,7 @@ export function ProjectOverviewContent({ nav }) {
|
|
|
47
50
|
const subprojectCount = project.overview?.directSubprojectCount ?? 0;
|
|
48
51
|
return (_jsxs("div", { className: cn("group flex flex-col rounded-xl border bg-white transition-colors", isSelected
|
|
49
52
|
? "border-border-default shadow-sm"
|
|
50
|
-
: "border-border-default hover:border-border-default"), "data-testid": `taskboard-project-overview-card-${project.projectId}`, children: [_jsxs("div", { className: "flex items-start justify-between gap-2 px-4 pt-4", children: [_jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: () => nav.onSelectProject?.(project.projectId), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(LayoutGrid, { className: "text-neutral-grey-50 h-4 w-4 flex-none" }), depth > 0 ? (_jsx("span", { className: "text-neutral-grey-50 text-[10px]", children: "↳".repeat(Math.min(depth, 2)) })) : null, _jsx("span", { className: "text-neutral-grey-100 truncate text-base font-
|
|
53
|
+
: "border-border-default hover:border-border-default"), "data-testid": `taskboard-project-overview-card-${project.projectId}`, children: [_jsxs("div", { className: "flex items-start justify-between gap-2 px-4 pt-4", children: [_jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: () => nav.onSelectProject?.(project.projectId), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(LayoutGrid, { className: "text-neutral-grey-50 h-4 w-4 flex-none" }), depth > 0 ? (_jsx("span", { className: "text-neutral-grey-50 text-[10px]", children: "↳".repeat(Math.min(depth, 2)) })) : null, _jsx("span", { className: "text-neutral-grey-100 truncate text-base font-medium", children: project.title })] }), project.description?.trim() ? (_jsx("p", { className: "text-neutral-grey-50 mt-2 line-clamp-3 text-xs", children: project.description.trim() })) : (_jsx("p", { className: "text-neutral-grey-50 mt-2 text-xs", children: "No description" }))] }), canManage ? (_jsxs("div", { className: "flex items-center gap-1 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100", children: [_jsx(Button, { variant: "ghost", size: "icon", className: "h-8 w-8", onClick: (e) => {
|
|
51
54
|
e.stopPropagation();
|
|
52
55
|
nav.onOpenProjectSettings?.(project.projectId);
|
|
53
56
|
}, title: "Project settings", "data-testid": `taskboard-project-overview-settings-${project.projectId}`, children: _jsx(Settings, { className: "h-3.5 w-3.5" }) }), _jsx(Button, { variant: "ghost", size: "icon", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-50 h-8 w-8", onClick: (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectOverviewContent.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectOverviewContent.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,KAAK,EACL,SAAS,EACT,UAAU,EACV,UAAU,EACV,OAAO,EACP,
|
|
1
|
+
{"version":3,"file":"ProjectOverviewContent.js","sourceRoot":"","sources":["../../../src/task-board/components/ProjectOverviewContent.tsx"],"names":[],"mappings":"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"}
|