import { type } from '@ngrx/signals'; import { eventGroup } from '@ngrx/signals/events'; import { BoardColumn, BoardFilter, CommandResult, CreateIssueInput, IssueChanged, IssueStatus, } from '@task-stream/web/tracker/domain'; export const boardPageEvents = eventGroup({ source: 'Board Page', events: { opened: type(), filterChanged: type(), /** Optimistic: the card moves immediately and comes back if the API refuses. */ issueMoved: type<{ issueId: string; to: IssueStatus; reason?: string | null; }>(), issueCreateRequested: type(), }, }); export const boardApiEvents = eventGroup({ source: 'Board API', events: { loaded: type(), loadFailed: type(), issueMoveFailed: type(), issueCreated: type(), issueCreateFailed: type(), }, }); export const boardRealtimeEvents = eventGroup({ source: 'Board Realtime', events: { issueChanged: type(), }, });