Files
rzen e1ffe71e5b A refused trash hover withdraws the trash's own promise — the fall-through holds only keepable ones
Gap #12 ruled into 04 ▸ the trash-drop bullet: the refusal fall-through's
honest reading (the column declines to be a target, it does not cancel
the held drag) covers only promises the refusal leaves keepable — lane
shadows keep drawing and an ⌥-copy lands where they are. A standing
proposal naming the trash itself is the promise the refusal just broke,
so it withdraws: the drag goes proposal-less over the column, release
with no proposal cancels in agreement with the empty picture, and
lifting ⌥ re-asks at the same address. Implementation filed on the
Implementation board.

Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
2026-08-06 20:48:45 -04:00

22 lines
1.4 KiB
Swift

import SwiftUI
/// The board's **standard chrome** — the neutral surface stack under every lane and card,
/// carried over from the pathfinder (03-board-ui.md § Styling: user colour is an edge accent;
/// these are the fills underneath, and they never carry the user's colour).
///
/// The stack is three steps deep, and each step has its own home: the window keeps the standard
/// background (`BoardView.boardBackground` paints over it only when the board *chooses* a colour),
/// every lane lays a quiet quaternary wash over that (`Accommodations.lanePlateWash`), and every
/// card sits on the opaque plate below — which is what makes a card pop against the washed lane in
/// both appearances: white on grey in light, a step *darker* than the window in dark.
enum BoardSurface {
/// A card's opaque plate — `controlBackgroundColor`, the pathfinder's card surface. Every face
/// on the board fills with this one value (the resting face, the drag replica, the lane
/// replica's miniatures, the placeholder editor and the arriving face), so a card is the same
/// object wherever it is drawn. Opaque deliberately: a card's title never sees the board
/// colour, which is why the ≥ 4.5:1 rule binds to the board level and not here
/// (10-accessibility.md; `BoardView.boardBackground`).
static var cardPlate: Color { Color(nsColor: .controlBackgroundColor) }
}