The board wears a picture — background becomes a mapping, and the window chrome follows it under a thin frost
background is {color:, image:} and only a mapping at every level; the board's image paints the full window under a transparent title bar, with a thin-material frost strip keeping the chrome legible and the standard accommodations intact.
Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -90,19 +90,28 @@ enum Accommodations {
|
||||
/// appear").
|
||||
///
|
||||
/// The design's own example (the card face carousel's page dots) died with the carousel
|
||||
/// (03-board-ui.md § Card face's no-carousel resettlement), so the rule's one surviving subject
|
||||
/// on the board is the transient search bar's `.bar` material. It is stated as a type anyway
|
||||
/// rather than inlined at that one call site, because "wherever they appear" is a standing rule
|
||||
/// and the next material to arrive should find the answer already written.
|
||||
/// (03-board-ui.md § Card face's no-carousel resettlement), so the rule's subjects on the board
|
||||
/// are the transient search bar's `.bar` material and the backdrop's title-bar frost — the
|
||||
/// "next material to arrive" this type was stated for, and it found the answer already written.
|
||||
enum Underlay: Equatable {
|
||||
/// `Material.bar` — the find-bar's own backdrop, translucent over the board beneath it.
|
||||
case glass
|
||||
/// `Material.thin` — the title-bar frost over a custom board backdrop
|
||||
/// (`BoardView.boardBackground`). Deliberately not `.bar` — the find-bar sits over lanes
|
||||
/// the board's own plates have already calmed, where the frost sits directly on an image
|
||||
/// the author may well have chosen *for* its busyness — and deliberately not the heavier
|
||||
/// notches either, tried and retired: `.ultraThick` read as a cloudy plate where a backdrop
|
||||
/// should still show through, and `.regular` still veiled it more than the chrome needs.
|
||||
/// The thin weight carries the chrome, and the dissolve below it (`BoardView.frostStrip`)
|
||||
/// is what keeps the strip from reading as a bar.
|
||||
case frost
|
||||
/// The window's own background colour, opaque.
|
||||
case solid
|
||||
|
||||
var style: AnyShapeStyle {
|
||||
switch self {
|
||||
case .glass: AnyShapeStyle(.bar)
|
||||
case .frost: AnyShapeStyle(.thinMaterial)
|
||||
case .solid: AnyShapeStyle(Color(nsColor: .windowBackgroundColor))
|
||||
}
|
||||
}
|
||||
@@ -112,6 +121,12 @@ enum Accommodations {
|
||||
reduceTransparency ? .solid : .glass
|
||||
}
|
||||
|
||||
/// The title-bar frost's own reading of the same rule — heavier glass, identical accommodation:
|
||||
/// under Reduce Transparency both underlays take the one solid.
|
||||
static func frost(reduceTransparency: Bool) -> Underlay {
|
||||
reduceTransparency ? .solid : .frost
|
||||
}
|
||||
|
||||
/// A **translucent wash** — a tint laid over whatever happens to be behind it, and the shape
|
||||
/// every non-material translucency on the board takes: every lane's plate, the trash column's
|
||||
/// plate and hatched header, and the drag shadow's fill.
|
||||
|
||||
Reference in New Issue
Block a user