@@ -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"
4446product-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"] }
4951components :
5052 logo :
5153 format : svg
@@ -62,9 +64,11 @@ tiers:
6264
63651 . ** ` 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.
0 commit comments