---
title: "AdaptiveColors, DroppyKit"
description: "Semantic color palette for droplet UI."
canonical: "https://getdroppy.app/docs/droppykit/api/adaptive-colors"
last-updated: "2026-09-09"
---

# AdaptiveColors

Semantic color palette for droplet UI.

`enum AdaptiveColors`

Droppy's control family is quiet and strokeless: fills and opacity ladders, never outline rings, never gradients. These tokens are the ladder.

## Type properties

### buttonBackgroundAuto

`static var buttonBackgroundAuto: Color { get }`

Default button and control background overlay.

### contrastTintAuto

`static var contrastTintAuto: Color { get }`

Base contrast tint used for overlays (white in dark mode, black in light mode).

### dynamicIslandBackgroundAuto

`static var dynamicIslandBackgroundAuto: Color { get }`

Dynamic Island pill background: always pure black, so the island matches the physical notch independent of system appearance.

### hoverBackgroundAuto

`static var hoverBackgroundAuto: Color { get }`

Hover and active overlay.

### notchSurfaceCardFill

`static var notchSurfaceCardFill: Color { get }`

The fill of a raised surface inside a widget: a tile, a chip, a row that has to stand off the shell.

White in Dark and black in Light, resolved against the host view's appearance like the foregrounds above.

Not a card around the widget. Droppy draws no frame behind a widget, its own or a droplet's: almost every Droppy widget sits directly on the shell, which supplies the background. Wrapping a whole widget in this fill, or in any border, is the one thing that makes a droplet look foreign on the shelf. See [Design guidelines](https://getdroppy.app/docs/droppykit/design).

### notchSurfaceCardHoverFill

`static var notchSurfaceCardHoverFill: Color { get }`

The same card under the pointer (0.15 opacity).

### notchSurfacePrimaryText

`static var notchSurfacePrimaryText: Color { get }`

Primary foreground on notch/island/HUD chrome: white in Dark and black in Light, following the host view's appearance.

### notchSurfaceSecondaryText

`static var notchSurfaceSecondaryText: Color { get }`

Secondary foreground on notch/island/HUD chrome (0.82 opacity).

### notchSurfaceTertiaryText

`static var notchSurfaceTertiaryText: Color { get }`

Tertiary foreground on notch/island/HUD chrome (0.60 opacity).

### panelBackgroundAuto

`static var panelBackgroundAuto: Color { get }`

Opaque panel and window background.

### primaryTextAuto

`static var primaryTextAuto: Color { get }`

Primary text color.

### secondaryTextAuto

`static var secondaryTextAuto: Color { get }`

Secondary text color.

### selectionBlueAuto

`static var selectionBlueAuto: Color { get }`

Unified primary action accent. Hosted Droppy resolves the user's chosen highlight through [`DroppyKitThemeBridge`](https://getdroppy.app/docs/droppykit/api/droppy-kit-theme-bridge); standalone previews and harnesses explicitly resolve the system accent.

Was hardcoded to the system accent before the bridge existed, which rendered a droplet's selected picker segment accent-blue while the host's own pickers used the theme highlight (neutral `labelColor` by default).

### selectionForegroundAuto

`static var selectionForegroundAuto: Color { get }`

Best-contrast text color to draw on top of `selectionBlueAuto`. The highlight can be light or dark, so a fixed white label would vanish on light highlights; pick black or white by luminance. Same branch constants as the host's `ThemeSelectionCache`.

### subtleBorderAuto

`static var subtleBorderAuto: Color { get }`

Subtle divider color for cards and containers.

## Type methods

### overlayAuto(_:)

`static func overlayAuto(_ opacity: Double) -> Color`

Overlay helper for one-off opacities on the contrast tint.
