Skip to content

Commit bd74172

Browse files
committed
Add brand assets and put the logo at the top of the README
The mark is an open arc — the bounded ceiling a governed run executes under, and literally the ARC — wrapping a three-node graph, the Graph. One shape for both halves of the name; the gap at the top keeps it from reading as a generic ring. Wordmark is Poppins, Medium for "Graph" and Bold for "ARC" so the gradient lands on the emphasized half. The type is converted to vector outlines rather than <text> elements, so the SVGs render identically without Poppins installed anywhere. README uses <picture> with prefers-color-scheme, so GitHub serves the light-on-dark lockup in dark mode and the dark-on-light one in light mode, both transparent. The <img> fallback is the light asset for clients that ignore the source elements. docs/brand/grapharc-favicon.svg is deliberately not the icon scaled down: it carries heavier strokes and larger nodes because the standard icon's inner triangle turns to mush below ~48px. Rasters at 16/32/64/180/512. One implementation note, recorded in docs/brand/README.md because it is a silent failure mode: the gradients use gradientUnits="userSpaceOnUse". Under the default objectBoundingBox, a perfectly horizontal stroke has a zero-height bounding box, which leaves the gradient undefined and the element simply does not paint — the triangle's top edge disappeared from the first render for exactly that reason, with no error anywhere. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 729c6c5 commit bd74172

18 files changed

Lines changed: 250 additions & 0 deletions

‎README.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
<p align="center">
2+
<picture>
3+
<source media="(prefers-color-scheme: dark)" srcset="docs/brand/grapharc-logo-ondark.svg">
4+
<source media="(prefers-color-scheme: light)" srcset="docs/brand/grapharc-logo-light.svg">
5+
<img alt="GraphARC" src="docs/brand/grapharc-logo-light.svg" width="440">
6+
</picture>
7+
</p>
8+
19
# GraphARC
210

311
[![PyPI](https://img.shields.io/pypi/v/grapharc.svg)](https://pypi.org/project/grapharc/)

‎docs/brand/README.md‎

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# GraphARC brand assets
2+
3+
The mark is an open arc — the bounded ceiling a governed run executes under, and
4+
literally the *ARC* — wrapping a three-node graph, the *Graph*. One shape for
5+
both halves of the name; the gap at the top keeps it from reading as a generic
6+
ring.
7+
8+
Wordmark is Poppins (Medium for `Graph`, Bold for `ARC`, so the gradient lands
9+
on the emphasized half). **The type is converted to vector outlines, not `<text>`
10+
elements**, so every SVG here renders identically without Poppins installed.
11+
12+
## Which file to use
13+
14+
| File | Use for |
15+
| --- | --- |
16+
| `grapharc-logo-ondark.svg` | Lockup on a dark background (transparent) — this is the README's dark-mode asset |
17+
| `grapharc-logo-light.svg` | Lockup on a light background (transparent) |
18+
| `grapharc-logo-dark.svg` | Lockup with its own dark rounded panel, for placing on an arbitrary background |
19+
| `grapharc-icon-transparent.svg` | Icon alone, no background |
20+
| `grapharc-icon-dark.svg` | Icon on a dark rounded square — social avatars, app icons |
21+
| `grapharc-favicon.svg` + `grapharc-favicon-*.png` | Small sizes only (see below) |
22+
23+
`.png` siblings are 3x raster exports of the same artwork, for contexts that
24+
cannot take SVG. Prefer the SVG wherever it is accepted.
25+
26+
## Use the favicon file below ~48px
27+
28+
`grapharc-favicon.svg` is not the same artwork scaled down — it carries heavier
29+
arc and edge strokes and larger nodes, because the standard icon's inner
30+
triangle turns to mush at favicon sizes. Rasters are provided at 16, 32, 64, 180
31+
(Apple touch icon) and 512.
32+
33+
## Palette
34+
35+
The gradient runs teal → blue → violet:
36+
37+
| Stop | Icon arc | Inner graph (lighter, for contrast against the arc) |
38+
| --- | --- | --- |
39+
| 0% | `#2DD4BF` | `#5EEAD4` |
40+
| 50–55% | `#3B82F6` | `#60A5FA` |
41+
| 100% | `#8B5CF6` | `#A78BFA` |
42+
43+
Dark background: `#0B0F19`. Wordmark: `#E7ECF3` on dark, `#0F172A` on light.
44+
45+
## If you edit these
46+
47+
Gradients use `gradientUnits="userSpaceOnUse"`, and that is deliberate rather
48+
than incidental. Under the default `objectBoundingBox`, a perfectly horizontal
49+
or vertical stroke has a zero-height (or zero-width) bounding box, which makes
50+
the gradient undefined — so the element silently does not paint at all. The
51+
triangle's top edge is exactly that case, and it vanished from the first render
52+
of this mark for that reason. Keep the user-space units, or that edge disappears
53+
again with no error anywhere.

‎docs/brand/grapharc-favicon-16.png‎

699 Bytes
Loading
11.8 KB
Loading

‎docs/brand/grapharc-favicon-32.png‎

1.64 KB
Loading
41.9 KB
Loading

‎docs/brand/grapharc-favicon-64.png‎

3.67 KB
Loading

‎docs/brand/grapharc-favicon.svg‎

Lines changed: 25 additions & 0 deletions
Loading

‎docs/brand/grapharc-icon-dark.png‎

57.6 KB
Loading

‎docs/brand/grapharc-icon-dark.svg‎

Lines changed: 25 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)