Build the styling system and shared style editor
One style-editor component, anchor-agnostic: a background grid (None well plus the 12 palette colors) and a curated symbol grid (the pathfinder's five-dozen set, leading well removing the icon key for the level default), selection-aware across cards, lanes, and the board itself. Batch edits compute per-dimension state — uniform, mixed (no well selected), or an off-palette value labeled verbatim outside the grids — and choosing a well applies to the whole target set as one write bracket, skipping no-ops per field. The popover tracks its target set live per the freshly ratified rule: targets re-resolve by UUID on every reload, a vanished target leaves the set, an emptied set dismisses the editor, and nothing ever silently retargets to the board. Anchors landing now: Board > Style (Opt-Cmd-S) and the card/lane context menus, which also carry the quick-style recents row (app-wide, persisted, capped at six, None never recorded) and the lane's width control twinning the menu chords. The styling system's other two renders arrive with it: a lane's background paints the C7 top-edge band, the board's paints the window content background — malformed values paint nothing and stay byte-identical on disk. 31 new tests. Claude-Session: https://claude.ai/code/session_01SR4XGjmBE16ZUYWpfFHXwY
This commit is contained in:
@@ -32,6 +32,18 @@ enum ItemSymbol {
|
||||
return name
|
||||
}
|
||||
|
||||
/// The default for a level — the style editor's symbol grid needs the three defaults as a
|
||||
/// function rather than as three constants, because its leading well is "the level's default
|
||||
/// symbol" and the editor is one component serving all three (03-board-ui.md § Styling ▸
|
||||
/// Controls).
|
||||
static func `default`(for level: StyleLevel) -> String {
|
||||
switch level {
|
||||
case .board: board
|
||||
case .lane: lane
|
||||
case .card: card
|
||||
}
|
||||
}
|
||||
|
||||
/// Whether the running system can draw `name` as an SF Symbol.
|
||||
///
|
||||
/// Uncached deliberately. The lookup is a bundle-backed symbol resolution that AppKit itself
|
||||
|
||||
Reference in New Issue
Block a user