The two pickers rhyme — one two-zone chrome, a face onto a standalone browser, a trigger onto the popover
The colour combo was a wide two-zone field with a second door onto the Colors panel; the symbol picker was a small square button with one. Both now subclass one `ComboFieldControl`, so they are the same width, height, radius and trigger by construction: click the face for the standalone picker, click the chevron for the quick list. The symbol face opens a new floating browser over the OS's own category, ordering and keyword plists out of CoreGlyphs.bundle — searchable, categorised, trademark-restricted glyphs withheld. The palette grows twelve to sixteen per table, filling the hue ring's four widest gaps with lime, jade, indigo and magenta at each table's own saturation and brightness. That gives the Style… popover's background grid a third row and the tint grid its third row of four, and both grids gain an Other… row onto the system colour picker — which the card sidebar's combo has had all along and the primary styling surface never did. An arbitrary hex already round-tripped; it is asserted now, including that an unquoted one is a YAML comment and no value. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -26,10 +26,14 @@ struct SymbolPickerCatalogDefaultSetTests {
|
||||
@Suite("SymbolPicker ▸ the colour row")
|
||||
struct SymbolPickerColorSetTests {
|
||||
|
||||
@Test("Seven unique tints — the leading None plus these fills the 4×2 grid exactly")
|
||||
/// Eleven since the palette grew (2026-08-09), seven before it — stated as the grid arithmetic
|
||||
/// rather than as a literal, because the claim is *the leading None plus these fills the grid
|
||||
/// exactly*, and that is what breaks when either the palette or the column count moves.
|
||||
@Test("The leading None plus the tints fills the colour grid exactly")
|
||||
func shape() {
|
||||
#expect(SymbolPickerCatalog.colorSet.count
|
||||
== SymbolPickerLayout.colorColumns * SymbolPickerLayout.colorRows - 1)
|
||||
#expect(SymbolPickerCatalog.colorSet.count == 11)
|
||||
#expect(Set(SymbolPickerCatalog.colorSet).count == SymbolPickerCatalog.colorSet.count)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user