Skip to content

Commit f64e948

Browse files
committed
ots: theme-color palette + square corners
Two design rules I'd been violating, now corrected and documented: 1. Bitcoin orange (--primary = #FF9900) is the only accent. The diagram boxes had decorative purple ('Your file') and yellow ('Calendar') borders I invented. Replaced with the theme's semantic vars: - 'Your file': neutral default (#2d3250) - 'Calendar': neutral default, tinted by health -> var(--success) / var(--warning) / var(--danger) - 'Bitcoin': var(--primary) (Bitcoin orange, intentional) Health pill colours, calendar pill border colours, ready-row borders, etc. all switched from invented hexes (#5cb874, #198754, #d77a7a, #6e3a3a, etc.) to var(--success/warning/danger). 2. No rounded corners. Stripped border-radius from every OTS card, dropzone, diagram box, calendar pill, queue row, and match-zone. Kept border-radius: 50% for the round health dot. Documented both as hard rules in frontend/.claude/CLAUDE.md so future edits don't drift toward upstream's rounded styling, plus a note to use cat21-mint as the canonical reference for ordpool typography + spacing + colour usage.
1 parent de02dfc commit f64e948

5 files changed

Lines changed: 68 additions & 35 deletions

File tree

frontend/.claude/CLAUDE.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,42 @@ npm run lint:fix # ESLint with auto-fix
6969
npm run prettier # Prettier formatting
7070
```
7171

72+
### Visual Identity (the differentiators from upstream)
73+
74+
Ordpool's design has a few rules that look like style choices but are
75+
**brand differentiators**. Don't accidentally drift toward upstream
76+
mempool.space styling.
77+
78+
1. **Bitcoin orange (`$bitcoin: #FF9900`) is the only accent colour.**
79+
Aliased as `--primary`, `--info`, `--orange`, `--tertiary` in the
80+
theme. Use `var(--primary)` for any accent. Don't invent decorative
81+
tints (purple, teal, yellow, etc.) — if you need to differentiate UI
82+
states, reach for the theme's semantic vars: `var(--success)` (green),
83+
`var(--warning)` (yellow), `var(--danger)` (red). They're already in
84+
the colour vocabulary the user knows.
85+
86+
2. **No rounded corners.** Upstream mempool uses `border-radius` on
87+
cards, buttons, dropzones, badges. Ordpool deliberately ships
88+
square. Avoid `border-radius: <Npx>` in custom SCSS for ordpool
89+
components. (`border-radius: 50%` for circular avatars / dots is
90+
fine.) If a Bootstrap class adds rounding, override it.
91+
92+
3. **Card / panel backgrounds**: `#181b2d` for the card itself,
93+
`#11132a` for sunken/dropzone insets, `#1d1f31` for the page
94+
background (`var(--bg)`). Borders default to `#2d3250`.
95+
96+
4. **Typography**: default `<p>` body size matches `cat21-mint`. Avoid
97+
the Bootstrap `.lead` class for OTS-style explanatory text — it
98+
reads too large in our layout. Use `.smaller-text` (14px) only for
99+
genuine asides / metadata, not body copy.
100+
101+
5. **Icons**: FontAwesome solid (`['fas', '<name>']`), single colour
102+
(white over the dark theme). Don't mix in emoji icons.
103+
104+
When you're unsure, check `cat21-mint`'s component for the canonical
105+
ordpool look — it's the reference page for typography + spacing +
106+
colour usage.
107+
72108
### Code Marking Convention (for merge-friendly changes)
73109

74110
This is a fork of mempool.space. To keep changes isolated and merges manageable, ordpool-specific code follows a three-tier marking system:

frontend/src/app/components/_ordpool/ots-diagram/ots-diagram.component.scss

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
.ots-diagram {
66
background-color: #11132a;
77
border: 1px solid #2d3250;
8-
border-radius: 8px;
98
padding: 24px 16px;
109
}
1110

@@ -19,7 +18,6 @@
1918
.ots-diagram-box {
2019
text-align: center;
2120
padding: 16px 12px;
22-
border-radius: 8px;
2321
border: 2px solid #2d3250;
2422
background-color: #181b2d;
2523
cursor: help;
@@ -45,16 +43,17 @@
4543
line-height: 1.3;
4644
}
4745

48-
// Phase tinting -- mirrors the queue states (queued/ready/anchored).
49-
&.ots-diagram-you { border-color: #4a5085; }
50-
&.ots-diagram-calendar { border-color: #d6a85a; }
51-
&.ots-diagram-bitcoin { border-color: #f7931a; }
52-
53-
// Calendar liveness override: the health colour wins over the default
54-
// calendar tint. Reflects the freshest calendar's last on-chain publish.
55-
&.ots-diagram-calendar.health-fresh { border-color: #5cb874; }
56-
&.ots-diagram-calendar.health-aging { border-color: #d6a85a; } // same as default; "slow but not broken"
57-
&.ots-diagram-calendar.health-stale { border-color: #d77a7a; }
46+
// Bitcoin orange on the Bitcoin box -- single intentional accent that
47+
// carries meaning (this is literally what Bitcoin's brand colour is).
48+
// 'Your file' and 'Calendar' stay neutral until the calendar gets a
49+
// health tint applied below.
50+
&.ots-diagram-bitcoin { border-color: var(--primary); }
51+
52+
// Calendar liveness uses Bootstrap semantic colours so we inherit the
53+
// site's existing colour vocabulary rather than inventing new hexes.
54+
&.ots-diagram-calendar.health-fresh { border-color: var(--success); }
55+
&.ots-diagram-calendar.health-aging { border-color: var(--warning); }
56+
&.ots-diagram-calendar.health-stale { border-color: var(--danger); }
5857
}
5958

6059
.ots-diagram-health {
@@ -74,9 +73,9 @@
7473
display: inline-block;
7574
}
7675

77-
.ots-diagram-calendar.health-fresh & .ots-health-dot { background-color: #5cb874; }
78-
.ots-diagram-calendar.health-aging & .ots-health-dot { background-color: #d6a85a; }
79-
.ots-diagram-calendar.health-stale & .ots-health-dot { background-color: #d77a7a; }
76+
.ots-diagram-calendar.health-fresh & .ots-health-dot { background-color: var(--success); }
77+
.ots-diagram-calendar.health-aging & .ots-health-dot { background-color: var(--warning); }
78+
.ots-diagram-calendar.health-stale & .ots-health-dot { background-color: var(--danger); }
8079
}
8180

8281
.ots-diagram-arrow {
@@ -95,7 +94,7 @@
9594
.ots-diagram-arrow-line {
9695
font-size: 1.4rem;
9796
line-height: 1;
98-
color: #4a5085;
97+
color: #2d3250;
9998
}
10099
}
101100

frontend/src/app/components/_ordpool/ots-stamp-verify/ots-pending-queue.component.scss

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,25 @@
66
.ots-stamp-row {
77
background-color: #181b2d;
88
border: 1px solid #2d3250;
9-
border-radius: 8px;
109
padding: 16px 18px;
1110
margin-bottom: 12px;
1211
transition: border-color 0.2s ease, box-shadow 0.2s ease;
1312

1413
&.is-ready {
15-
border-color: #198754;
14+
border-color: var(--success);
1615
}
1716

1817
&.is-undownloaded {
19-
border-color: #f7931a;
20-
box-shadow: 0 0 0 3px rgba(247, 147, 26, 0.15);
18+
border-color: var(--primary);
19+
// Pulsing orange halo to draw the eye toward the download button.
20+
// Hard-coded RGBA because Bootstrap's primary var doesn't compose
21+
// into rgba() across browsers without color-mix support.
22+
box-shadow: 0 0 0 3px rgba(255, 153, 0, 0.15);
2123
animation: ots-pulse 2s ease-in-out infinite;
2224
}
2325

2426
&.is-failed {
25-
border-color: #4a5085;
27+
border-color: #2d3250;
2628
opacity: 0.85;
2729
}
2830
}
@@ -46,17 +48,16 @@
4648
color: #9aa0c0;
4749
background-color: #11132a;
4850
border: 1px solid #2d3250;
49-
border-radius: 6px;
5051
padding: 4px 10px;
5152

5253
&.is-published {
53-
color: #5cb874;
54-
border-color: #198754;
54+
color: var(--success);
55+
border-color: var(--success);
5556
}
5657

5758
&.is-error {
58-
color: #d77a7a;
59-
border-color: #6e3a3a;
59+
color: var(--danger);
60+
border-color: var(--danger);
6061
}
6162

6263
strong {

frontend/src/app/components/_ordpool/ots-stamp-verify/ots-stamp.component.scss

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
align-items: center;
1212
justify-content: center;
1313
min-height: 140px;
14-
border: 2px dashed #4a5085;
15-
border-radius: 8px;
14+
border: 2px dashed #2d3250;
1615
cursor: pointer;
1716
background-color: #11132a;
1817
transition: border-color 0.15s ease, background-color 0.15s ease;
@@ -22,7 +21,7 @@
2221

2322
&:hover,
2423
&.dragging {
25-
border-color: var(--bs-primary, #f7931a);
24+
border-color: var(--primary);
2625
background-color: #1a1d36;
2726
}
2827

frontend/src/app/components/_ordpool/ots-stamp-verify/ots-verify.component.scss

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
align-items: center;
1212
justify-content: center;
1313
min-height: 140px;
14-
border: 2px dashed #4a5085;
15-
border-radius: 8px;
14+
border: 2px dashed #2d3250;
1615
cursor: pointer;
1716
background-color: #11132a;
1817
transition: border-color 0.15s ease, background-color 0.15s ease;
@@ -22,7 +21,7 @@
2221

2322
&:hover,
2423
&.dragging {
25-
border-color: var(--bs-primary, #f7931a);
24+
border-color: var(--primary);
2625
background-color: #1a1d36;
2726
}
2827

@@ -43,8 +42,7 @@
4342
align-items: center;
4443
justify-content: center;
4544
min-height: 80px;
46-
border: 1.5px dashed #4a5085;
47-
border-radius: 6px;
45+
border: 1.5px dashed #2d3250;
4846
cursor: pointer;
4947
background-color: #11132a;
5048
padding: 12px;
@@ -53,7 +51,7 @@
5351
color: #9aa0c0;
5452
transition: border-color 0.15s ease, background-color 0.15s ease;
5553

56-
&:hover { border-color: var(--bs-primary, #f7931a); background-color: #1a1d36; }
54+
&:hover { border-color: var(--primary); background-color: #1a1d36; }
5755
.dropzone-input { display: none; }
5856
strong { color: #fff; }
5957
}

0 commit comments

Comments
 (0)