import Foundation

/// The boards navigation stack's value-based routes: board list → lanes → cards → card detail.
///
/// **Board-relative IDs only, never a model value.** Every screen this drives re-reads its subject
/// from `session.snapshot` on each body evaluation (see `BoardScreen`/`LaneScreen`/
/// `CardDetailScreen`), so a route only has to say *where* to look, not *what was there* — a write
/// that lands while a screen is on top of the stack is picked up automatically, and a route never
/// goes stale the way a captured `Lane`/`Card` value would.
enum BoardRoute: Hashable {
    /// The lane list for the board at `boardRoot`.
    case lanes(boardRoot: URL)

    /// The card list for one lane.
    case cards(boardRoot: URL, laneID: ItemID)

    /// The editor for one card.
    case card(boardRoot: URL, laneID: ItemID, cardID: ItemID)
}
