the flat outlined button, and the same one disabled
mounted as button
why it looks like this
A Metro button, from PhoneButtonBase in the SDK's own System.Windows.xaml.
A rectangle with a thick border and no fill; pressing inverts it — the border colour floods the background and the text turns the colour of the page. There is no elevation, no corner radius (CornerRadius="0" is written out in the template) and no ripple; the rest of the press feedback is the theme's tilt.
The visible rectangle is smaller than the button. In the template the Border carries Margin="{StaticResource PhoneTouchTargetOverhang}" — 12 px on every side — inside a Grid whose Background="Transparent" makes it hit-testable. So twelve pixels of invisible button surround the frame in every direction, and two buttons side by side sit 24 px apart while looking 24 px apart plus a gap. Reproducing the frame without the overhang, which is what this used to do, gives a control that measures right and is harder to hit.
Every number here is Microsoft's, at this library's canonical 0.75 of a Metro pixel: BorderThickness 3, the overhang 12, Padding="10,3,10,5" — asymmetric top to bottom, 3 above and 5 below — and PhoneFontSizeMediumLarge 25.333 in PhoneFontFamilySemiBold. The type slot matters: this was set in KvadrantTypography.normal and so came out two steps of the ramp too small and a weight too light.
interactionSource is hoisted for the same reason Material hoists it — a caller that wants to observe or drive the press — and here it is also the only way to photograph the pressed state, which a golden otherwise cannot reach.
enabled is the template's Disabled state and nothing more: text and border go to KvadrantColors.disabled, the background is forced back to transparent — so a button disabled mid-press does not stay filled — and the tilt is not raised, because a disabled ButtonBase never entered the pressed state to begin with.
Read it: kvadrant-core/src/commonMain/kotlin/io/github/youndie/kvadrant/components/Controls.kt · the full signature and every parameter