Anchorage API reference
    Preparing search index...
    interface ApprovalDashboardState {
        busy: boolean;
        claim: () => void;
        clearSelection: () => void;
        conflict: DecisionConflict | null;
        decide: (decision: ApprovalDecision, comment: string) => void;
        decideSelected: (decision: ApprovalDecision, comment: string) => void;
        delegate: (to: string) => void;
        dismissConflict: () => void;
        error: string | null;
        filter: ApprovalListFilter;
        lastBatch: BatchDecideResult | null;
        metrics: ApprovalMetrics | null;
        nowMs: number;
        presence: PresenceMember[];
        records: ApprovalRecord[];
        refresh: () => Promise<void>;
        select: (id: string) => void;
        selected: ApprovalRecord | null;
        selectedId: string | null;
        selectedIds: readonly string[];
        setFilter: (next: ApprovalListFilter) => void;
        toggleSelect: (id: string) => void;
    }
    Index

    Properties

    busy: boolean

    True while a claim/decide/delegate/decideSelected mutation is in flight.

    claim: () => void
    clearSelection: () => void
    conflict: DecisionConflict | null

    Set when a live 'decided' event attributes a record this reviewer optimistically decided to a DIFFERENT decider (they decided first). null otherwise. Never set in poll-only mode or without an actorId.

    decide: (decision: ApprovalDecision, comment: string) => void
    decideSelected: (decision: ApprovalDecision, comment: string) => void

    One decision fanned out over the current selection via decideBatch. No-op when empty.

    delegate: (to: string) => void
    dismissConflict: () => void

    Clears the current conflict surface (Toast dismissal).

    error: string | null

    The EFFECTIVE queue filter: options.filter unless setFilter overrode it.

    lastBatch: BatchDecideResult | null

    The most recent batch envelope; cleared when the next mutation starts.

    metrics: ApprovalMetrics | null
    nowMs: number
    presence: PresenceMember[]

    Reviewers currently connected to the tenant's live stream (deduped by actorId). Empty in poll-only mode.

    records: ApprovalRecord[]

    Queue records. In reviewer order (priority → deadline → FIFO) when the filter requests it (the default) — otherwise the server's order, so a FIFO/after-paged filter is not client-resorted. See orderRecordsForDisplay.

    refresh: () => Promise<void>
    select: (id: string) => void
    selected: ApprovalRecord | null

    Derived from the fetched list — never stale after a refresh.

    selectedId: string | null
    selectedIds: readonly string[]

    Batch selection, derived-pruned to ids still in the fetched page AND still open (pruneSelection) — a decided or paged-out record can never ride a stale checkbox into decideSelected.

    setFilter: (next: ApprovalListFilter) => void

    Override the queue filter from the UI (FilterBar). The override holds until the OPTIONS filter value changes, which retires it on the same render — controlled without a reset effect (effectiveApprovalFilter).

    toggleSelect: (id: string) => void