DroppyLiveActivityMetrics

Native metrics for compact and interactive live-activity rows.

enum DroppyLiveActivityMetrics

A live activity is mini-HUD chrome, not a card. These values mirror Droppy's built-in Pomodoro, media, and compact status surfaces so example droplets do not have to guess typography, control, or host widths.

Type properties

cardContentHeight

static let cardContentHeight: CGFloat

Content height of a standard card, a HUD's, or an expanded live activity's, before the host adds the cutout above and its 16pt inset below. Droppy's own battery and AirPods cards are this tall.

compactIslandWidth

static let compactIslandWidth: CGFloat

Width of the at-rest island live-activity slot.

compactNotchWingWidth

static let compactNotchWingWidth: CGFloat

Width of each notch wing in the at-rest live-activity slot.

contentSpacing

static let contentSpacing: CGFloat

Gap between compact row elements.

controlGlyphSize

static let controlGlyphSize: CGFloat

Glyph size for an inline interactive control.

controlSize

static let controlSize: CGFloat

Hit and background diameter for an inline interactive control.

iconSize

static let iconSize: CGFloat

Standard compact status glyph size.

interactiveIslandWidth

static let interactiveIslandWidth: CGFloat

Width of the interactive island row.

interactiveNotchWingWidth

static let interactiveNotchWingWidth: CGFloat

Width of each notch wing in the interactive row.

islandContentInset

static let islandContentInset: CGFloat

Horizontal inset inside an island capsule.

labelFontSize

static let labelFontSize: CGFloat

Standard compact status label and value size.

progressRingGlyphSize

static let progressRingGlyphSize: CGFloat

Glyph inside a compact progress ring.

progressRingLineWidth

static let progressRingLineWidth: CGFloat

Stroke width of the compact progress ring.

progressRingSize

static let progressRingSize: CGFloat

Progress-ring diameter for a ring that also contains a small glyph.

rowHeight

static let rowHeight: CGFloat

Height of both the at-rest and interactive row.

wingCornerCompensation

static let wingCornerCompensation: CGFloat

Wing-corner compensation: how far a concave notch shoulder carves into the drawable area at the shell's outer edges.

An island is convex and needs none of it. Both notch-styled shells need all of it, cutout or no cutout, because the shell DRAWS the same curve either way.

Type methods

symmetricPadding(iconSize:notchHeight:usesNotchStyle:)

static func symmetricPadding(iconSize: CGFloat, notchHeight: CGFloat = rowHeight, usesNotchStyle: Bool) -> CGFloat

The one padding every compact surface uses, all four edges (DroppyKit 1.1.0).

This is the host's own formula, not an approximation: a symmetric gap derived from how much taller the surface is than the content in it, floored at 6, plus the shoulder compensation on a notch-styled shell. For a 13pt status glyph on a 37pt notch it resolves to 22 against 12 on an island, a 10pt difference at the very edge of a 70pt wing, which is most of the reason a compact surface laid out against one number looks wrong in the other mode.

Pass the LARGEST thing in the row, not the average: the padding exists to centre content vertically, and the tallest item is what decides whether the row is centred.