Skip to content

Commit 900ff99

Browse files
tianzhouclaude
andcommitted
Unify product icons with the pgplex diamond silhouette
Redesign all four product icons onto the shared pgplex rounded-diamond silhouette, each in its product colour with a single simple knockout glyph, so the suite reads as one family with the logo (one step simpler than the four-blade pinwheel): - pgconsole — window (cobalt blue) - pgtui — terminal prompt >_ (green) - pgschema — 2x2 grid (red) - pgparser — syntax tree (amber) Update DESIGN.md: add the shared product-shape diamond token, rewrite the Product Icons section, registry, table, and Do's/Don'ts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 4d1ce55 commit 900ff99

9 files changed

Lines changed: 67 additions & 47 deletions

File tree

DESIGN.md

Lines changed: 36 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,15 @@ palettes:
3939
signal-red: { light: "#ffb1a6", mid: "#f4473c", deep: "#cf2f2a" } # pgschema
4040
solar-amber: { light: "#ffe6b0", mid: "#ffb938", deep: "#e89327" } # pgparser
4141
# Product icons are function-specific glyphs (NOT the pinwheel) drawn in the
42-
# shared gradient style: one userSpaceOnUse gradient (0,0)->(120,120) over a
43-
# 120x120 canvas, transparent background, transparent negative space.
42+
# Product icons share the pgplex rounded-diamond silhouette (product-shape),
43+
# filled with one userSpaceOnUse gradient (0,0)->(120,120) on a 120x120 canvas,
44+
# transparent background. They differ by colour + a simple knockout glyph.
45+
product-shape: "M60 6 Q95 26 114 60 Q94 95 60 114 Q25 94 6 60 Q26 25 60 6 Z"
4446
product-icons:
45-
pgconsole: { glyph: "app window (title dots)", palette: "{palettes.cobalt-blue}", files: ["public/icons/pgconsole.svg", "public/icons/pgconsole.png"] }
46-
pgtui: { glyph: "terminal prompt >_", palette: "{palettes.terminal-green}", files: ["public/icons/pgtui.svg", "public/icons/pgtui.png"] }
47-
pgschema: { glyph: "table / grid", palette: "{palettes.signal-red}", files: ["public/icons/pgschema.svg", "public/icons/pgschema.png"] }
48-
pgparser: { glyph: "syntax tree / AST", palette: "{palettes.solar-amber}", files: ["public/icons/pgparser.svg", "public/icons/pgparser.png"] }
47+
pgconsole: { glyph: "window (knockout)", palette: "{palettes.cobalt-blue}", files: ["public/icons/pgconsole.svg", "public/icons/pgconsole.png"] }
48+
pgtui: { glyph: "terminal prompt >_ (knockout)", palette: "{palettes.terminal-green}", files: ["public/icons/pgtui.svg", "public/icons/pgtui.png"] }
49+
pgschema: { glyph: "2x2 grid (knockout)", palette: "{palettes.signal-red}", files: ["public/icons/pgschema.svg", "public/icons/pgschema.png"] }
50+
pgparser: { glyph: "syntax tree / AST (knockout)", palette: "{palettes.solar-amber}", files: ["public/icons/pgparser.svg", "public/icons/pgparser.png"] }
4951
components:
5052
logo:
5153
format: svg
@@ -62,9 +64,11 @@ tiers:
6264

6365
1. **`pgplex` umbrella mark** — the aperture/pinwheel. A new tint of *this* mark
6466
is **a colour swap, not a redraw** (change the three gradient stops only).
65-
2. **Product icons** (pgconsole, pgtui, pgschema, pgparser) — **function-specific
66-
glyphs** that share the gradient style and a per-product base colour but each
67-
has its own shape. See [Product Icons](#product-icons).
67+
2. **Product icons** (pgconsole, pgtui, pgschema, pgparser) — the **same
68+
rounded-diamond silhouette** as the logo, in a per-product base colour, with a
69+
simple function glyph knocked out of the centre. Same family as the logo, one
70+
step simpler (a solid diamond instead of the four-blade pinwheel). See
71+
[Product Icons](#product-icons).
6872

6973
## Overview
7074

@@ -160,32 +164,36 @@ as the favicon + apple-touch icon in `src/app/layout.tsx`.
160164

161165
## Product Icons
162166

163-
The product tools do **not** reuse the pinwheel — each is a function-specific
164-
glyph so it's recognisable on its own. They stay a family through a shared
165-
treatment, not a shared shape:
167+
Each product icon is the **same rounded-diamond silhouette as the logo**
168+
(`product-shape`), in the product's colour, with a simple function glyph knocked
169+
out of the centre. They're one step simpler than the logo — a solid diamond, not
170+
the four-blade pinwheel — so the suite reads as one family and the umbrella mark
171+
still stands apart.
166172

173+
- **Silhouette** — the shared `product-shape` path (the logo's outer diamond:
174+
pointed N/E/S/W corners, gently convex edges), identical for all four.
167175
- **Canvas & export** — same `120 × 120` viewBox, transparent background,
168176
exported to 512px PNG (same command as the logo).
169177
- **Fill** — a single gradient per icon, `light → mid → deep` along
170-
`(0,0) → (120,120)` with `gradientUnits="userSpaceOnUse"` so the whole glyph
171-
shares one diagonal prism sheen (unlike the logo's per-blade gradients).
172-
- **Negative space** — internal detail is transparent (knockout via `mask`),
173-
the same light/dark-adaptive trick as the logo's centre square.
178+
`(0,0) → (120,120)` with `gradientUnits="userSpaceOnUse"` so the whole diamond
179+
shares one diagonal prism sheen.
180+
- **Glyph** — one simple mark knocked out of the centre via a `mask` (white
181+
diamond, black glyph), the same light/dark-adaptive trick as the logo's centre
182+
square. Keep glyphs compact (within ~`x40–80, y45–78`) so they sit inside the
183+
diamond.
174184
- **Colour** — each product owns one row of `palettes` (deep stop kept light
175185
enough to read on dark, lightness ≳ 35%).
176-
- **Weight** — glyphs are sized to similar visual mass (~88px of content,
177-
~16px margin) so the set looks even side by side.
178186

179187
| Product | Meaning | Glyph | Palette |
180188
|:--|:--|:--|:--|
181-
| `pgconsole` | SQL GUI editor | app window (title dots) | `cobalt-blue` |
189+
| `pgconsole` | SQL GUI editor | window (title bar + body) | `cobalt-blue` |
182190
| `pgtui` | TUI SQL client | terminal prompt `>_` | `terminal-green` |
183-
| `pgschema` | declarative schema (Terraform-for-pg) | table / grid (header + 2×2 cells) | `signal-red` |
184-
| `pgparser` | Postgres parser library | syntax tree / AST (root + 3 children) | `solar-amber` |
191+
| `pgschema` | declarative schema (Terraform-for-pg) | 2×2 grid | `signal-red` |
192+
| `pgparser` | Postgres parser library | syntax tree (root + 2 children) | `solar-amber` |
185193

186-
Sources live in `public/icons/<product>.{svg,png}`. To add a product: pick or
187-
add a `palettes` row, draw a bold gradient glyph on the shared canvas, knock out
188-
detail with a `mask`, and export the PNG.
194+
Sources live in `public/icons/<product>.{svg,png}`. To add a product: pick or add
195+
a `palettes` row, fill the `product-shape` diamond with its gradient, knock out a
196+
simple centred glyph with a `mask`, and export the PNG.
189197

190198
## Do's and Don'ts
191199

@@ -197,10 +205,11 @@ detail with a `mask`, and export the PNG.
197205
- **Do** re-export the 512px PNG after any colour change.
198206
- **Don't** fill, recolour, or resize the centre square.
199207
- **Don't** change the *umbrella mark's* geometry when retinting it — only swap
200-
the three gradient stops. (Product icons are the exception: they are their own
201-
glyphs by design — see [Product Icons](#product-icons).)
208+
the three gradient stops.
209+
- **Do** reuse the shared `product-shape` diamond for every product icon — only
210+
the colour and the small centre glyph change. Don't invent a new silhouette.
202211
- **Do**, for product icons, use one `userSpaceOnUse` gradient across the whole
203-
glyph and keep margins/visual weight consistent across the set.
212+
diamond and keep the centre glyph simple and compact.
204213
- **Don't** flatten the gradient to a single colour; the per-blade gradient is
205214
what creates the prism/pinwheel depth.
206215
- **Don't** use a near-black deep stop (e.g. `#15123f`) — it vanishes on dark.

public/icons/pgconsole.png

14.7 KB
Loading

public/icons/pgconsole.svg

Lines changed: 6 additions & 5 deletions
Loading

public/icons/pgparser.png

61.2 KB
Loading

public/icons/pgparser.svg

Lines changed: 9 additions & 6 deletions
Loading

public/icons/pgschema.png

54.9 KB
Loading

public/icons/pgschema.svg

Lines changed: 9 additions & 6 deletions
Loading

public/icons/pgtui.png

99.3 KB
Loading

public/icons/pgtui.svg

Lines changed: 7 additions & 3 deletions
Loading

0 commit comments

Comments
 (0)