---
title: "SettingsSelectionChrome, DroppyKit"
description: "One rule for &quot;this is the option you picked&quot;, across every selectable control DroppyKit publishes."
canonical: "https://getdroppy.app/docs/droppykit/api/settings-selection-chrome"
last-updated: "2026-09-09"
---

# SettingsSelectionChrome

One rule for "this is the option you picked", across every selectable control DroppyKit publishes.

`enum SettingsSelectionChrome`

## Type properties

### disabledSelectedFill

`static let disabledSelectedFill: Color`

### disabledSelectedOpacity

`static let disabledSelectedOpacity: Double`

### emphasizedPrimaryText

`static let emphasizedPrimaryText: Color`

### hoverAccentTint

`static let hoverAccentTint: Double`

Same, while the pointer is over the selected object.

### pressedFill

`static let pressedFill: Color`

### primaryText

`static let primaryText: Color`

### raisedFill

`static let raisedFill: Color`

### restAccentTint

`static let restAccentTint: Double`

Accent fraction composited over the emphasis fill on a selected object at rest.

### segmentGlyphFont

`static let segmentGlyphFont: Font`

### selectedBaseFill

`static let selectedBaseFill: Color`

### trackFill

`static let trackFill: Color`

### trackInsetRatio

`static let trackInsetRatio: CGFloat`

Inset between a segmented track's outer edge and its selection pill, as a RATIO of the track height (10%, from the host's 3pt inset on its 30pt card-row control tier). Taking the ratio rather than the number is what keeps the pill reading as the same object on the 34pt full-width track.

## Type methods

### accentTintOpacity(isSelected:isEnabled:isHovering:)

`static func accentTintOpacity(isSelected: Bool, isEnabled: Bool, isHovering: Bool) -> Double`

### disabledSelectedFill(_:)

`static func disabledSelectedFill(_ scheme: ColorScheme) -> Color`

A selected object whose control is disabled: still the emphasis material, dimmed, never the unselected fill, or a disabled picker stops saying which option is active.

### emphasizedPrimaryText(_:)

`static func emphasizedPrimaryText(_ scheme: ColorScheme) -> Color`

Text inside an emphasized surface, inverted against its fill.

### labelColor(isSelected:isEnabled:)

`static func labelColor(isSelected: Bool, isEnabled: Bool) -> Color`

Label / glyph colour for one option. Selected inverts against its own pill; unselected recedes to 0.62, because with a solid pill marking the choice an almost-full-strength unselected segment competes with it.

### onSurfaceLabelColor(isSelected:isEnabled:)

`static func onSurfaceLabelColor(isSelected: Bool, isEnabled: Bool) -> Color`

Label colour for text that NAMES a selected object without sitting on it, such as a caption under a tile. It must never invert: it is printed on the card, not on the pill.

### pillFits(trackHeight:cornerRadius:)

`static func pillFits(trackHeight: CGFloat, cornerRadius: CGFloat) -> Bool`

True when a selection pill of `trackHeight`, inset by `trackInset(forTrackHeight:)`, is fully inside a track corner of `cornerRadius`. The pill's corner arc is centred at (h/2, h/2) and the track's at (R, R), so containment is `|h/2 - R| * sqrt(2) <= R - (h/2 - inset)`.

### pillShape()

`static func pillShape() -> Capsule`

The selection pill's shape. A capsule, always.

### pressedFill(_:)

`static func pressedFill(_ scheme: ColorScheme) -> Color`

Press fill on an UNSELECTED segment.

### primaryText(_:)

`static func primaryText(_ scheme: ColorScheme) -> Color`

### raisedFill(_:)

`static func raisedFill(_ scheme: ColorScheme) -> Color`

Hover lift on an UNSELECTED segment.

### segmentFont(isSelected:)

`static func segmentFont(isSelected: Bool) -> Font`

### selectedBaseFill(_:)

`static func selectedBaseFill(_ scheme: ColorScheme) -> Color`

THE rule: attention is a solid opaque capsule at the far end of the contrast range from its surface. White on a dark canvas, near-black on a light one. The same idea spelled with the other extreme, never the same white dimmed.

### trackFill(_:)

`static func trackFill(_ scheme: ColorScheme) -> Color`

The quiet track a segmented row rests in.

### trackInset(forTrackHeight:)

`static func trackInset(forTrackHeight trackHeight: CGFloat) -> CGFloat`

### unselectedFill(isEnabled:isHovering:isPressed:)

`static func unselectedFill(isEnabled: Bool, isHovering: Bool, isPressed: Bool = false) -> Color`
