Style guide
Buy↓Sell↑Hold styles
Every color, text style, size and component the iPhone and iPad app uses today, read from the Swift source. Items marked to decide are places where the app disagrees with itself.
Color
Defined in Utilities/Colors.swift. Contrast is against white unless noted.
Brand
Text and surfaces, light
Sheets, dark
Opacity in use
| Value | Where |
|---|---|
| 0.08 | Card shadow (#161616) |
| 0.1 / 0.2 | Range panel border, error fill |
| 0.3 | Search and Sort borders, slider track (most common) |
| 0.5 | Disabled button |
| 0.9 | White icons on dark sheets |
Type
Work Sans, four weights, bundled in the app. Icons are SF Symbols. Prices and percentages use tabular figures. Roles are inferred from where each style appears.
Styles in use
Icons are SF Symbols: 10 bold for change arrows, 12 to 14 for small controls, 16 for card actions, 18 medium for navbar and settings, 40 for the empty list. There is no icon scale.
Spacing and shape
Spacing in use
| Item | Value |
|---|---|
| Page margin | 16 iPhone, 24 iPad |
| Card inner padding | 16 |
| Range panel padding | 12 |
| Sheet padding | 20 |
| Input padding | 10, label 4 above |
| Button padding | 16 across, 8 down (14 down for the large button) |
| Navbar gaps | 12 between the wordmark row and the search row, and between search and Sort |
| Card column minimums | ticker 80, price 100, Low and High 60 |
| Settings row | 56 minimum height, 30 × 30 icon tile |
| Empty-state button | two thirds of the width, 360 at most |
Corner radius in use
nearly all
settings rows
one use
small tags, 3 and 2
Borders and shadow
| Item | Value |
|---|---|
| Default border | 1 pt, secondary #4B5563, at 0.3 on light screens and solid on dark sheets |
| Signal border | 4 pt, Buy green or Sell purple |
| iPad add slot | 1.5 pt dashed, gray at 0.35 |
| Slider track | 1 pt, gray at 0.3. Triangle 12 × 6 |
| Shadow | #161616 at 0.08, blur 4, y 2. Cards only |
Components
Drawn here at the app’s real sizes from the values above.
Card state rules
Navbar
Card, collapsed and expanded
Sheet controls
Screens
Real captures from the running app, not redrawings. Click one to see it at full size.
iPhone
iPad
Open issues
Where the app still disagrees with itself.
- Falling prices are purple. A loss on the change line uses the Sell text color, even when the stock is nowhere near its high. Green means gain and Buy, so the direction color and the signal color overlap. to decide
- Fourteen text sizes from 11 to 32, five of them within one point of each other (14, 15, 16, 17, 18), and no named styles.
- Radii. 8 is nearly universal, but 12, 10, 3 and 2 appear once or twice.
- Icons are sized from 10 to 18 with no scale.
- White text on dark sheets is plain white, with no token.
- Link contrast. The finnhub link is insight blue on the dark surface, about 3.4:1, under the 4.5:1 that 14 pt text needs.
- The date under the ticker reads “Today” from the edit date, not the price time. Widgets will need a fetched-at time.
Resolved in the app
- Two purples.
#6B21A8is the text purple.#9333EAis the fill purple: the Sell card border, the loader arrow, the wordmark. - Grays. Three: ink
#161616, secondary#4B5563(text, icons, labels, borders), neutral#9CA3AF(hold, placeholders, text on dark sheets). The system gray and#374151are gone. - Surface.
#F9FAFBis now thesurfacetoken, no longer typed by hand. - Wordmark “Hold” is the foreground color. The navy
#1E293Bis gone. - Dark surface. Sheets, fields and settings rows share
surfaceDark#181A20.inputDarkis gone. - Link colors.
linkandlinkHoverare gone. The one text link uses insight blue.
Proposal
The smallest set that covers what exists. The color items are applied; the rest is not.
Color. Still proposed: danger to replace red, onDark #F3F4F6. Name the two purples by role: sellText #6B21A8, sellFill #9333EA.
Type, eight styles. Display Bold 32. Title Bold 24. Heading SemiBold 20. Subheading SemiBold 18. Body Regular 15. Body strong and buttons Medium 15. Caption Medium 13. Fine Regular 12. Sizes 11, 14, 16, 17 and 22 fold in; the card ticker either keeps 22 as its own style or moves to 20.
Spacing. 4, 8, 12, 16, 24.
Radius. 8 everywhere. Settings rows move from 12 to 8, or stay as the one exception.