---
title: "DroppyLiveActivityMetrics, DroppyKit"
description: "Native metrics for compact and interactive live-activity rows."
canonical: "https://getdroppy.app/docs/droppykit/api/droppy-live-activity-metrics"
last-updated: "2026-09-09"
---

# 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.
