Buttons — iOS 27
Read when: you need an exact iOS 27 value for buttons (size, colour, text, effect) as Apple's kit draws it. Owns: Buttons in Apple's iOS 27 kit: components, anatomy, sizes, colours and states, text, effects, kit notes.
Source: specs/buttons.txt from Apple's iOS 27 UI Kit (Sketch, v27.1.3), read 2026-11-01. Values are copied from the kit; derived values say so.
Components
264 components in two families. The page has no documentation boards, only a _Header instance (see Kit notes).
| Family | Name pattern | Axes and values | Count |
|---|---|---|---|
| Filled and borderless buttons | Buttons/<Appearance>/<Size>/[<Tone>/]<Style>/<Content>/<State> |
Appearance: Light, Dark · Size: Large, Medium, Small · Tone: Default, Destructive · Style: Bordered, Bordered Prominent, Borderless · Content: Symbol, Text, Symbol + Text · State: 1 - Idle, 4 - Disabled | 216 (2 × 3 × 2 × 3 × 3 × 2) |
| Glass buttons | Buttons/<Appearance>/<Size>/<Style>/<Variant> |
Appearance: Light, Dark · Size: Large, Regular, Small · Style: Glass, Glass Prominent, Destructive · Variant: Default, Disabled, Destructive, Destructive + Disabled (not every style has every variant, see below) | 48 |
Naming quirk in the first family: the tone segment is left out for Default Bordered and Bordered Prominent (Buttons/Light/Large/Bordered/Text/1 - Idle), but present for Default Borderless (Buttons/Light/Large/Default/Borderless/Text/1 - Idle) and for every Destructive button (Buttons/Light/Large/Destructive/Bordered/Text/1 - Idle).
Glass-family variants that exist, per appearance (each exists in all three sizes):
| Style | Light | Dark |
|---|---|---|
| Glass | Default, Disabled | Default (two components with the same name), Destructive |
| Glass Prominent | Default, Disabled, Destructive, Destructive + Disabled | Default, Disabled, Destructive, Destructive + Disabled |
| Destructive | Destructive, Disabled | Destructive |
Anatomy
Filled and borderless buttons
The root is the button shape: one fill (the style colour), corners max smoothing0.6 style1 (a capsule, or a circle when square). No border or shadow on any of the 216.
| Content | Layout | Children (layer name: size @position, Large size shown) |
|---|---|---|
| Symbol | No auto layout | text "Symbol": 50×50 @0,0, fills the button, centre-aligned |
| Text | stack h gap4 pad16,20,16,20 |
text "Label" "Play": 32×18 @20,16, left-aligned |
| Symbol + Text | stack h gap4 pad16,20,16,20 |
text "Symbol": 15×18 @20,16; text "Label" "Play": 32×18 @39,16 |
The glyph is drawn as a text layer, not an image: (U+100284), in every Symbol and Symbol + Text component. No nested components.
Glass buttons
Glass, Destructive, and the disabled Glass Prominent variants: the root carries the shared glass style (style="Liquid Glass/<Appearance>/Regular - Small"), corners max smoothing0.6 style1, stack h gap0, and one child text "Label" "Label", centre-aligned.
Glass Prominent Default and Destructive (the tinted ones) are built from three layers; the root has corners 0 and no fill:
| Layer | Size @position (Large Dark) | Content |
|---|---|---|
group "Tint Color" |
84×47 @-0.5,-0.5 (button size + 1 on each axis) | fill #FFFFFF@96% + <tint> (blend plus-darker), corners max smoothing0.6 style1 |
group "Tinted Glass" |
83×46 @0,0 | style="Liquid Glass/<other appearance>/Regular - Small - Tinted", corners max |
text "Label" |
43×18 @20,14 | "Label", #FFFFFF, centre |
The tinted glass uses the opposite appearance's style: Light buttons use Liquid Glass/Dark/Regular - Small - Tinted and Dark buttons use Liquid Glass/Light/Regular - Small - Tinted. This is how the kit stores it.
Sizes
Filled and borderless buttons
The same geometry holds across Light, Dark, both tones, all three styles and both states (checked across all 216).
| Size | Symbol | Text | Symbol + Text | Padding T,R,B,L | Gap | Corner | Label font | Label layer | Symbol layer (in Symbol + Text) |
|---|---|---|---|---|---|---|---|---|---|
| Large | 50 × 50 | 72 × 50 | 91 × 50 | 16, 20, 16, 20 | 4 | max | SFPro-Regular 17, lh 18 | 32 × 18 | 15 × 18 @20,16 |
| Medium | 34 × 34 | 56 × 34 | 75 × 34 | 8, 12, 8, 12 | 4 | max | SFPro-Regular 17, lh 18 | 32 × 18 | 15 × 18 @12,8 |
| Small | 28 × 28 | 49 × 28 | 66 × 28 | 5, 10, 5, 10 | 4 | max | SFPro-Regular 15, lh 18 | 29 × 18 | 13 × 18 @10,5 |
Derived from the padding and layer sizes (the widths hug the "Play" label):
- Height = pad top + 18 + pad bottom: 16 + 18 + 16 = 50; 8 + 18 + 8 = 34; 5 + 18 + 5 = 28.
- Text width = pad left + label + pad right: 20 + 32 + 20 = 72; 12 + 32 + 12 = 56; 10 + 29 + 10 = 49.
- Symbol + Text width = pad left + symbol + gap + label + pad right: 20 + 15 + 4 + 32 + 20 = 91; 12 + 15 + 4 + 32 + 12 = 75; 10 + 13 + 4 + 29 + 10 = 66.
- Symbol-only buttons are square with the side equal to the height; the glyph layer is the whole button, centred.
Glyph size: drawn at the label's font size (17 for Large and Medium, 15 for Small).
Glass buttons
| Size | Size (W × H) | Padding T,R,B,L | Gap | Corner | Label font | Label layer |
|---|---|---|---|---|---|---|
| Large | 83 × 46 | 14, 20, 14, 20 | 0 | max | SFPro-Medium 17, lh 18 | 43 × 18 @20,14 |
| Large, Light Glass Prominent only | 83 × 50 | 16, 20, 16, 20 | 0 | max | SFPro-Medium 17, lh 18 | 43 × 18 @20,16 |
| Regular | 67 × 34 | 8, 12, 8, 12 | 0 | max | SFPro-Medium 17, lh 18 | 43 × 18 @12,8 |
| Small | 59 × 28 | 5, 10, 5, 10 | 0 | max | SFPro-Medium 15, lh 18 | 39 × 18 @10,5 |
Derived: width = pad left + label + pad right (20 + 43 + 20 = 83; 12 + 43 + 12 = 67; 10 + 39 + 10 = 59); height = pad top + 18 + pad bottom (14 + 18 + 14 = 46; 8 + 18 + 8 = 34; 5 + 18 + 5 = 28).
Glass buttons have text only; the kit has no symbol variants for them.
Colours and states
Filled and borderless buttons — Light
| Tone / Style | State | Fill | Label and symbol colour | Other |
|---|---|---|---|---|
| Default / Bordered | 1 - Idle | #767680@12% {Fills/Light/3 Tertiary} | #0088FF {System Colors/Light/8 Blue} | — |
| Default / Bordered | 4 - Disabled | #747480@8% {Fills/Light/4 Quaternary} | #3C3C43@30% {Labels/Light/3 Tertiary} | — |
| Default / Bordered Prominent | 1 - Idle | #0088FF {System Colors/Light/8 Blue} | #FFFFFF | — |
| Default / Bordered Prominent | 4 - Disabled | #747480@8% {Fills/Light/4 Quaternary} | #3C3C43@30% {Labels/Light/3 Tertiary} | — |
| Default / Borderless | 1 - Idle | #FFFFFF + #FFFFFF (as stored) | #0088FF {System Colors/Light/8 Blue} | — |
| Default / Borderless | 4 - Disabled | #FFFFFF + #FFFFFF (as stored) | #3C3C43@30% {Labels/Light/3 Tertiary} | — |
| Destructive / Bordered | 1 - Idle | #FF383C@14% (no swatch) | #FF383C {System Colors/Light/1 Red} | text layers blend darken |
| Destructive / Bordered | 4 - Disabled | #747480@8% {Fills/Light/4 Quaternary} | #3C3C43@30% {Labels/Light/3 Tertiary} | text layers blend darken |
| Destructive / Bordered Prominent | 1 - Idle | #FF383C {System Colors/Light/1 Red} | #FFFFFF | — |
| Destructive / Bordered Prominent | 4 - Disabled | #747480@8% {Fills/Light/4 Quaternary} | #3C3C43@30% {Labels/Light/3 Tertiary} | — |
| Destructive / Borderless | 1 - Idle | #FFFFFF + #FFFFFF (as stored) | #FF383C {System Colors/Light/1 Red} | — |
| Destructive / Borderless | 4 - Disabled | #FFFFFF + #FFFFFF (as stored) | #3C3C43@30% {Labels/Light/3 Tertiary} | — |
Filled and borderless buttons — Dark
| Tone / Style | State | Fill | Label and symbol colour | Other |
|---|---|---|---|---|
| Default / Bordered | 1 - Idle | #EBEBF5@30% {Labels/Dark/3 Tertiary} | #0091FF {System Colors/Dark/8 Blue} | — |
| Default / Bordered | 4 - Disabled | #EBEBF5@16% {Labels/Dark/4 Quaternary} | #EBEBF5@30% {Labels/Dark/3 Tertiary} | — |
| Default / Bordered Prominent | 1 - Idle | #0091FF {System Colors/Dark/8 Blue} | #FFFFFF | — |
| Default / Bordered Prominent | 4 - Disabled | #EBEBF5@16% {Labels/Dark/4 Quaternary} | #EBEBF5@30% {Labels/Dark/3 Tertiary} | — |
| Default / Borderless | 1 - Idle | #FFFFFF + #FFFFFF (as stored) | #0091FF {System Colors/Dark/8 Blue} | — |
| Default / Borderless | 4 - Disabled | #FFFFFF + #FFFFFF (as stored) | #EBEBF5@30% {Labels/Dark/3 Tertiary} | — |
| Destructive / Bordered | 1 - Idle | #FF4245@14% (no swatch) | #FF4245 {System Colors/Dark/1 Red} | — |
| Destructive / Bordered | 4 - Disabled | #767680@18% {Fills/Dark/4 Quaternary} | #EBEBF5@30% {Labels/Dark/3 Tertiary} | — |
| Destructive / Bordered Prominent | 1 - Idle | #FF4245 {System Colors/Dark/1 Red} | #FFFFFF | — |
| Destructive / Bordered Prominent | 4 - Disabled | #767680@18% {Fills/Dark/4 Quaternary} | #EBEBF5@30% {Labels/Dark/3 Tertiary} | — |
| Destructive / Borderless | 1 - Idle | #FFFFFF + #FFFFFF (as stored) | #FF4245 {System Colors/Dark/1 Red} | — |
| Destructive / Borderless | 4 - Disabled | #FFFFFF + #FFFFFF (as stored) | #EBEBF5@30% {Labels/Dark/3 Tertiary} | text layers opacity 49.2% |
Notes on these tables:
- Borderless roots store two white fills (
fill #FFFFFF + #FFFFFF) in both appearances; the dump gives no opacity for them. - The idle Bordered fill differs by appearance: Light uses a Fills swatch (Fills/Light/3 Tertiary), Dark uses a Labels swatch (Labels/Dark/3 Tertiary).
- Disabled fills differ by tone in Dark: Default uses #EBEBF5@16% {Labels/Dark/4 Quaternary}, Destructive uses #767680@18% {Fills/Dark/4 Quaternary}. In Light both tones use #747480@8% {Fills/Light/4 Quaternary}.
- The 14% destructive tint (#FF383C@14%, #FF4245@14%) is unbound in this page.
colors.mdlists the matching Figma variableMiscellaneous/Buttons/BG - Destructive. - No shared layer style (
style="…") is used by this family; it uses swatches only. - Only Idle and Disabled exist. Pressed, focused or highlighted states: Not in the kit.
Glass buttons — Light
| Style / Variant | Glass layer | Tint layer | Label colour |
|---|---|---|---|
| Glass / Default | Liquid Glass/Light/Regular - Small |
— | #000000 {Labels/Light/1 Primary} |
| Glass / Disabled | Liquid Glass/Light/Regular - Small |
— | #3C3C43@30% {Labels/Light/3 Tertiary} |
| Glass Prominent / Default | Liquid Glass/Dark/Regular - Small - Tinted |
#FFFFFF@96% + #0088FF {System Colors/Light/8 Blue} (blend plus-darker) | #FFFFFF |
| Glass Prominent / Disabled | Liquid Glass/Light/Regular - Small |
— | #3C3C43@30% {Labels/Light/3 Tertiary} |
| Glass Prominent / Destructive | Liquid Glass/Dark/Regular - Small - Tinted |
#FFFFFF@96% + #FF383C {System Colors/Light/1 Red} (blend plus-darker) | #FFFFFF |
| Glass Prominent / Destructive + Disabled | Liquid Glass/Light/Regular - Small |
— | #3C3C43@30% {Labels/Light/3 Tertiary} |
| Destructive / Destructive | Liquid Glass/Light/Regular - Small |
— | #FF383C {System Colors/Light/1 Red} |
| Destructive / Disabled | Liquid Glass/Light/Regular - Small |
— | #3C3C43@30% {Labels/Light/3 Tertiary} |
Glass buttons — Dark
| Style / Variant | Glass layer | Tint layer | Label colour |
|---|---|---|---|
| Glass / Default (first of two) | Liquid Glass/Dark/Regular - Small |
— | #FFFFFF {Labels/Dark/1 Primary} |
| Glass / Default (second of two) | Liquid Glass/Dark/Regular - Small |
— | #EBEBF5@30% {Labels/Dark/3 Tertiary} |
| Glass / Destructive | Liquid Glass/Dark/Regular - Small |
— | #EBEBF5@30% {Labels/Dark/3 Tertiary} |
| Glass Prominent / Default | Liquid Glass/Light/Regular - Small - Tinted |
#FFFFFF@96% + #0091FF {System Colors/Dark/8 Blue} (blend plus-darker) | #FFFFFF |
| Glass Prominent / Disabled | Liquid Glass/Dark/Regular - Small |
— | #EBEBF5@30% {Labels/Dark/3 Tertiary} |
| Glass Prominent / Destructive | Liquid Glass/Light/Regular - Small - Tinted |
#FFFFFF@96% + #FF4245 {System Colors/Dark/1 Red} (blend plus-darker) | #FFFFFF |
| Glass Prominent / Destructive + Disabled | Liquid Glass/Dark/Regular - Small |
— | #EBEBF5@30% {Labels/Dark/3 Tertiary} |
| Destructive / Destructive | Liquid Glass/Dark/Regular - Small |
— | #FF4245 {System Colors/Dark/1 Red} |
The Dark Glass names don't line up with Light: the Dark "Glass / Destructive" and the second Dark "Glass / Default" both have the tertiary (disabled) label colour, where Light has "Glass / Disabled" and "Destructive / Disabled". Dark has no component named "Destructive / Disabled". In the spec file the tertiary-label Dark Glass/Default set comes first (Large at line 759), the primary-label set second (Large at line 795).
Disabled glass buttons keep the full glass style; only the label colour changes. Tinted variants lose the tint layer and go back to plain glass when disabled.
Text
| Part | Font | Size | Line height | Tracking | Align | Content |
|---|---|---|---|---|---|---|
| Label, Large and Medium filled/borderless | SFPro-Regular | 17 | 18 | Not in the kit (no kern value) | left | "Play" |
| Label, Small filled/borderless | SFPro-Regular | 15 | 18 | Not in the kit | left | "Play" |
| Symbol, Large and Medium | SFPro-Regular | 17 | 18 | Not in the kit | left in Symbol + Text, centre in Symbol | U+100284 |
| Symbol, Small | SFPro-Regular | 15 | 18 | Not in the kit | left / centre | U+100284 |
| Label, glass Large and Regular | SFPro-Medium | 17 | 18 | Not in the kit | centre | "Label" |
| Label, glass Small | SFPro-Medium | 15 | 18 | Not in the kit | centre | "Label" |
No text layer on this page binds a shared text style (no textstyle reference). Compared with text-styles.md: the 15 / 18 labels match the values of Tight Leading/08 Subheadline/1 Default (SFPro-Regular 15 / 18); no style there pairs size 17 with line height 18 (Body is 17 / 22, Tight Leading Body 17 / 20), and no style uses SFPro-Medium at 17 or 15.
Effects
Filled and borderless buttons have no shadows, blurs or borders. The only effects are:
blend darkenon the text layers of Light Destructive Bordered (Idle and Disabled).opacity 49.2%on the text layers of Dark Destructive Borderless 4 - Disabled.
Glass buttons use four shared styles from materials.md. The inline expansion on every glass component matches the token exactly (checked by script on all 48 lines that use a style); the components add corners max smoothing0.6 style1 where the token has none.
| Style | Fill stack (bottom first) | Glass blur | Outer shadows |
|---|---|---|---|
| Liquid Glass/Light/Regular - Small | #F8F8F8@20% (luminosity) + #000000@25% + #FFFFFF@25% + #444444@60% (plus-lighter) | radius6 saturation2 brightness1 distortion0.4 depth0.8 chromatic0 | x0 y8 blur15 #000000@2%; spread0.5 #DBDBDB (plus-darker); x±1.25 spread-0.75 #DBDBDB (plus-darker) |
| Liquid Glass/Dark/Regular - Small | #000000 (screen) + #999999@17% | radius6 saturation1 brightness1 distortion0.4 depth0.8 chromatic0 | x0 y8 blur15 #000000@4%; spread0.5 #BFBFBF (plus-darker); x±1.25 spread-0.75 #BFBFBF (plus-darker) |
| Liquid Glass/Light/Regular - Small - Tinted | #FFFFFF (multiply) | radius6 saturation1 brightness1 distortion0.4 depth0.8 chromatic0 | x0 y8 blur15 #000000@4%; x±1.25 spread-0.75 #E6E6E6 (plus-darker) |
| Liquid Glass/Dark/Regular - Small - Tinted | #000000 (screen) | radius6 saturation1 brightness1 distortion0.4 depth0.8 chromatic0 | x0 y8 blur15 #000000@4%; x±1.25 spread-0.75 #E6E6E6 (plus-darker) |
Each of these also has eight to nine inner shadows (edge highlights in plus-lighter and side shading in plus-darker); materials.md lists them all.
Tint layer on Glass Prominent: fill #FFFFFF@96% + <System Blue or Red> (blend plus-darker), drawn 0.5 pt larger than the button on every side (W+1 × H+1 @-0.5,-0.5), under the tinted glass.
Kit notes
The page has no documentation boards. Its only non-component layer is a _Header instance (1600 × 126) with the title "Buttons" and a description that the dump cuts off after "A button initiates an instantaneous acti…". The full text is Not in the dump.
Finding it in the spec
| Family / part | grep |
|---|---|
| All filled and borderless buttons (216) | grep -nE '^COMPONENT "Buttons/.*/(1 - Idle|4 - Disabled)"' specs/buttons.txt |
| One style, e.g. Bordered Prominent | grep -n '^COMPONENT .*/Bordered Prominent/' specs/buttons.txt |
| Destructive filled and borderless (108) | grep -n '^COMPONENT "Buttons/[A-Za-z]*/[A-Za-z]*/Destructive/Border' specs/buttons.txt |
| Disabled filled and borderless | grep -n '^COMPONENT .*4 - Disabled' specs/buttons.txt |
| All glass buttons (48) | grep -nE '^COMPONENT "Buttons/[^/]*/[^/]*/(Glass|Glass Prominent|Destructive)/[^/]*"' specs/buttons.txt |
| Glass Prominent tint layers | grep -n 'group "Tint Color"' specs/buttons.txt |
| Tinted glass layers | grep -n 'group "Tinted Glass"' specs/buttons.txt |
| Page header | grep -n '_Header' specs/buttons.txt |