Style guide
Flatbed styles
How Flatbed looks today on Mac, iPhone and iPad, read from the Swift source. The app is built on system colors and Dynamic Type, with a status color for each of the four statuses and a badge color for each link type. Items marked to decide are places where the app disagrees with itself.
Color
System colors adapt to light and dark, so each shows its light value on the left half and its dark value on the right. Values are the iOS system values; contrast is the light value against white. Mac uses the matching AppKit colors.
Status
Link badges
Accent and text
Surfaces
Type
The system font at Dynamic Type sizes shown at their default. No custom fonts. Sizes are the Dynamic Type defaults; they scale with the user’s text size. Roles are inferred from where each style appears.
Styles in use
Use counts in the source: Caption 14, Caption 2 5, Title 2 4, Title 3 3, Headline 1. The app uses SF Symbols for icons.
Spacing and shape
Spacing in use
| Item | Value |
|---|---|
| Stack spacing in use | 0, 2, 4, 5, 6, 7, 8, 10 (6 and 10 most common) |
| Touch target | 44 minimum height on rows and buttons |
| Mac window | 720 minimum width, 900 ideal, 520 minimum height |
| Notes editor | 120 minimum height |
Corner radius in use
1 use
1 use
2 uses
2 uses
2 uses
Borders and shadow
| Item | Value |
|---|---|
| Default | 1 pt platform separator around fields and rows |
| Selection | System accent fill on the selected row and active status segment |
Screens
Real captures from the running app, not redrawings. Click one to see it at full size.
Mac
iPhone and iPad
Open issues
Flatbed uses system colors and Dynamic Type on purpose, so there are few conflicts. These are the places it could be tighter.
- Highlight contrast. The
==highlight==text is system orange, about 2.2:1 on white. Fine in dark appearance; weak in light. to decide - Secondary text contrast. iOS secondary label is about 3.4:1 on white, under the 4.5:1 small text needs. It carries timestamps and section labels.
- Status colors are system colors. Orange, blue, purple and green shift with the OS. Fine for a native app; it means there are no fixed hex values to match in screenshots or the web.
- Link badge brand colors. Figma, Jira and Aha use their own brand colors, typed as float values in one file (
StatusStyle.swift). - Radii. 4, 5, 6, 7 and 9 are all in use, one or two places each, with no rule for which is which.
- Named tokens. Only three colors have names (detail, viewer, separator). The rest are system colors or inline.
Decisions
- Four fixed statuses, each with one system color: Exploring orange, Working blue, Reviewing purple, Done green.
- The accent is the system accent. No custom brand color.
- One codebase covers Mac, iPhone and iPad.