A reusable symbol picker — the board's glyph joins its name in the info popover
SymbolPicker: one well at rest, a 6x6 curated grid in a popover (leading well = the level default, clearing the key), and an optional search over the OS's full symbol inventory read from CoreGlyphs metadata. Geometry font-derived off StyleEditorLayout's base, grid enlarged by a deliberate 1.3x. Wired inline with the rename field in the board info popover through the StyleCommand funnel; the Title header retires. Curated set and the search's standing vs 03's full-browser refusal await ratification.
This commit is contained in:
@@ -309,8 +309,27 @@ struct BoardInfoView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
VStack(alignment: .leading, spacing: 6) {
|
||||
sectionHeader("Title")
|
||||
BoardRenameField(store: store)
|
||||
HStack(spacing: 6) {
|
||||
// The board's own icon, inline with its name — the same field the embedded style
|
||||
// editor's symbol section below writes, offered here too since a board's identity
|
||||
// is its name *and* its glyph together (03-board-ui.md § Styling ▸ Controls). No
|
||||
// `undo:` — the board popover has none of its own, so this reaches the board's
|
||||
// stack exactly as the embedded editor's writes do.
|
||||
SymbolPicker(
|
||||
current: store.snapshot.icon.value,
|
||||
fallback: ItemSymbol.board,
|
||||
onSelect: { name in
|
||||
StyleCommand.apply(
|
||||
icon: name.map { StyleChange.set($0) } ?? .remove,
|
||||
to: .board,
|
||||
in: store,
|
||||
recents: recents
|
||||
)
|
||||
}
|
||||
)
|
||||
.disabled(!store.acceptsBoardMutations)
|
||||
BoardRenameField(store: store)
|
||||
}
|
||||
}
|
||||
.padding(inset)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user