Skip to content

Text

Typography and time display.

text

Tier: core

Text label with optional semantic typography.

text (calculator.small)

From showcase preset — case calculator.small.

Properties

PropertyTypeDefaultDescription
alignmentTextAlignmentText alignment within the line.
backgroundBackgroundValueSolid, adaptive, or gradient background.
borderBorderConfigBorder color and width.
clipShapeClipShapeClip content to a shape (e.g. circle avatar from square image).
colorColorValueText color.
contentstringString to display.
cornerRadiusnumberCorner radius in points.
flexnumberLayout weight for flexible sizing inside stacks (like Android layout_weight).
fontDesignFontDesignFont design (default, monospaced, rounded, serif).
fontSizenumberFont size in points (overridden by textStyle when set).
fontWeightFontWeightFont weight.
frameFrameConfigExplicit width / height / max constraints.
lineLimitintegerMaximum number of lines before truncation.
opacitynumberOpacity from 0 (invisible) to 1 (opaque).
paddingPaddingValueInset padding (number or per-edge object).
shadowShadowConfigDrop shadow.
textStyleTextStyleSemantic text style (uses Dynamic Type on Apple, sp on Android). Overrides fontSize when set.

Examples

Minimal

json
{
  "type": "text",
  "content": "Hello",
  "fontSize": 16,
  "fontWeight": "semibold",
  "color": {
    "light": "#0f172a",
    "dark": "#f8fafc"
  },
  "alignment": "leading",
  "lineLimit": 2
}

From showcase calculator.small

json
{
  "type": "text",
  "content": " ",
  "fontSize": 10,
  "color": "#f09a36",
  "alignment": "leading",
  "lineLimit": 1
}

From showcase chart-mix.medium

json
{
  "type": "text",
  "content": "Bar",
  "fontSize": 11,
  "color": "#94a3b8"
}

Inside a WidgetConfig

json
{
  "small": {
    "type": "text",
    "content": "Hello",
    "fontSize": 16,
    "fontWeight": "semibold",
    "color": {
      "light": "#0f172a",
      "dark": "#f8fafc"
    },
    "alignment": "leading",
    "lineLimit": 2
  }
}

label

Tier: extended

Convenience element combining an SF Symbol / icon with text.

label (upcoming-payments-empty.large)

From showcase preset — case upcoming-payments-empty.large.

Properties

PropertyTypeDefaultDescription
backgroundBackgroundValueSolid, adaptive, or gradient background.
borderBorderConfigBorder color and width.
clipShapeClipShapeClip content to a shape (e.g. circle avatar from square image).
colorColorValueText color.
cornerRadiusnumberCorner radius in points.
flexnumberLayout weight for flexible sizing inside stacks (like Android layout_weight).
fontSizenumberText font size.
fontWeightFontWeightText font weight.
frameFrameConfigExplicit width / height / max constraints.
iconColorColorValueIcon tint color.
opacitynumberOpacity from 0 (invisible) to 1 (opaque).
paddingPaddingValueInset padding (number or per-edge object).
shadowShadowConfigDrop shadow.
spacingnumberSpace between icon and text.
systemNamestringSF Symbol or platform icon name.
textstringLabel text.

Examples

Minimal

json
{
  "type": "label",
  "text": "Inbox",
  "systemName": "envelope.fill",
  "iconColor": "#38bdf8",
  "fontSize": 15,
  "fontWeight": "medium",
  "spacing": 6
}

From showcase upcoming-payments-empty.large

json
{
  "type": "label",
  "text": "Upcoming",
  "systemName": "calendar.badge.clock",
  "fontSize": 11,
  "fontWeight": "bold",
  "color": "label",
  "iconColor": "#3878FA",
  "spacing": 4
}

Inside a WidgetConfig

json
{
  "small": {
    "type": "label",
    "text": "Inbox",
    "systemName": "envelope.fill",
    "iconColor": "#38bdf8",
    "fontSize": 15,
    "fontWeight": "medium",
    "spacing": 6
  }
}

date

Tier: extended

Formatted date / relative time display.

date (date-timer.medium)

From showcase preset — case date-timer.medium.

Properties

PropertyTypeDefaultDescription
backgroundBackgroundValueSolid, adaptive, or gradient background.
borderBorderConfigBorder color and width.
clipShapeClipShapeClip content to a shape (e.g. circle avatar from square image).
colorColorValueText color.
cornerRadiusnumberCorner radius in points.
datestringISO 8601 date string.
dateStyleDateStyleDisplay style (time, date, relative, offset, timer).
flexnumberLayout weight for flexible sizing inside stacks (like Android layout_weight).
fontSizenumberFont size in points.
frameFrameConfigExplicit width / height / max constraints.
opacitynumberOpacity from 0 (invisible) to 1 (opaque).
paddingPaddingValueInset padding (number or per-edge object).
shadowShadowConfigDrop shadow.

Examples

Minimal

json
{
  "type": "date",
  "date": "2026-03-01T10:00:00Z",
  "dateStyle": "relative",
  "fontSize": 14,
  "color": "secondaryLabel"
}

From showcase date-timer.medium

json
{
  "type": "date",
  "date": "2099-06-15T14:30:00Z",
  "dateStyle": "time",
  "fontSize": 14,
  "color": "#e2e8f0"
}

Inside a WidgetConfig

json
{
  "small": {
    "type": "date",
    "date": "2026-03-01T10:00:00Z",
    "dateStyle": "relative",
    "fontSize": 14,
    "color": "secondaryLabel"
  }
}

timer

Tier: extended

Live countdown/countup timer that updates without timeline refresh.

timer (date-timer.medium)

From showcase preset — case date-timer.medium.

Properties

PropertyTypeDefaultDescription
backgroundBackgroundValueSolid, adaptive, or gradient background.
borderBorderConfigBorder color and width.
clipShapeClipShapeClip content to a shape (e.g. circle avatar from square image).
colorColorValueText color.
cornerRadiusnumberCorner radius in points.
countingTimerCountingCount direction. Default: down.
flexnumberLayout weight for flexible sizing inside stacks (like Android layout_weight).
fontSizenumberFont size in points.
fontWeightFontWeightFont weight.
frameFrameConfigExplicit width / height / max constraints.
opacitynumberOpacity from 0 (invisible) to 1 (opaque).
paddingPaddingValueInset padding (number or per-edge object).
shadowShadowConfigDrop shadow.
targetDatestringISO 8601 target date.

Examples

Minimal

json
{
  "type": "timer",
  "targetDate": "2026-12-31T23:59:59Z",
  "counting": "down",
  "fontSize": 22,
  "fontWeight": "bold",
  "color": "#22c55e"
}

From showcase date-timer.medium

json
{
  "type": "timer",
  "targetDate": "2099-01-01T00:00:00Z",
  "counting": "down",
  "fontSize": 14,
  "fontWeight": "semibold",
  "color": "#38bdf8"
}

Inside a WidgetConfig

json
{
  "small": {
    "type": "timer",
    "targetDate": "2026-12-31T23:59:59Z",
    "counting": "down",
    "fontSize": 22,
    "fontWeight": "bold",
    "color": "#22c55e"
  }
}

Released under the MIT License. · Contributing