Gallery › design work › robotparts logo rounds
robotparts logo rounds
Every SVG from robotparts' eleven logo rounds of 2026-10-25 (203 files) as one media grid: grouped by round, each card the logo with its name, kind and the round's score out of 35; click a logo for the lightbox, then arrow through all of them. Other views rank the lockups by score and lay out the favicon marks.
The .base file and its data
Every tab above is one entry of this file; the views read these rows. ⋯ in the toolbar copies the current view as YAML.
# robotparts' eleven logo rounds as a media grid: every SVG a row, grouped by round, a lightbox over all of them.
# Obsidian Bases grammar plus data-ui's keys (docs/CONTRACT.md §5).
# Check it: node bin/data-ui.mjs check <this file> --data logos.json
data: logos.json
facets:
- round
- kind
- { property: score, as: range }
views:
- type: cards
name: Every round
order: [name, kind, score]
image: file
imageFit: contain
imageAspectRatio: 0.55
cardSize: 210
lightbox: true
caption: [round, kind, score]
groupBy: { property: round, direction: ASC }
- type: cards
name: Lockups by score
filters:
and:
- 'kind == "lockup"'
- '!score.isEmpty()'
order: [name, round, score]
image: file
imageFit: contain
imageAspectRatio: 0.55
cardSize: 240
lightbox: true
caption: [round, score, rationale]
sort:
- { property: score, direction: DESC }
- type: cards
name: Marks
filters: 'kind == "mark" || kind == "reference mark"'
order: [name, score]
image: file
imageFit: contain
imageAspectRatio: 1
cardSize: 120
lightbox: true
caption: [round, score]
groupBy: { property: round, direction: ASC }
- type: table
name: Table
order: [name, round, proposal, kind, score, rationale, source]
groupBy: { property: round, direction: ASC }
sort:
- { property: score, direction: DESC }
// logos.json: 203 rows, 72 KB; the first 3
{
"id": "logo-rounds",
"title": "robotparts logo rounds",
"titleProperty": "name",
"imageProperty": "file",
"properties": {
"name": {
"type": "text",
"label": "Name"
},
"round": {
"type": "number",
"label": "Round",
"facet": true,
"labels": {
"1": "Round 1",
"2": "Round 2",
"3": "Round 3",
"4": "Round 4",
"5": "Round 5",
"6": "Round 6",
"7": "Round 7",
"8": "Round 8",
"9": "Round 9",
"10": "Round 10",
"11": "Round 11"
}
},
"proposal": {
"type": "text",
"label": "Proposal"
},
"kind": {
"type": "text",
"label": "Kind",
"facet": true
},
"score": {
"type": "number",
"label": "Score",
"unitText": "/ 35",
"note": "the round's own: seven criteria, 1-5 each"
},
"rationale": {
"type": "text",
"label": "Rationale"
},
"file": {
"type": "text",
"label": "SVG",
"media": "image"
},
"source": {
"type": "text",
"label": "Source file"
}
},
"rows": [
{
"id": "r01-01-exploded-box-mark",
"round": 1,
"proposal": "1",
"name": "Exploded black box",
"kind": "mark",
"score": {
"value": null,
"why": "round 1 was not scored"
},
"rationale": "A box with its lid lifted on dashed guide lines: the part is a black box you can still look into (specs, CAD, sim, prices).",
"file": "svg/r01-01-exploded-box-mark.svg",
"source": "logos-2026-10-25/01-exploded-box-mark.svg"
},
{
"id": "r01-01-exploded-box",
"round": 1,
"proposal": "1",
"name": "Exploded black box",
"kind": "lockup",
"score": {
"value": null,
"why": "round 1 was not scored"
},
"rationale": "A box with its lid lifted on dashed guide lines: the part is a black box you can still look into (specs, CAD, sim, prices).",
"file": "svg/r01-01-exploded-box.svg",
"source": "logos-2026-10-25/01-exploded-box.svg"
},
{
"id": "r01-02-iso-cube-mark",
"round": 1,
"proposal": "2",
"name": "Isometric cube with a port",
"kind": "mark",
"score": {
"value": null,
"why": "round 1 was not scored"
},
"rationale": "One solid isometric block with a single connector port cut into its face; the catalog's unit of thought is the part-as-box.",
"file": "svg/r01-02-iso-cube-mark.svg",
"source": "logos-2026-10-25/02-iso-cube-mark.svg"
}
]
}skin.css, README.md
/* The logo rounds' one rule beyond data-ui's defaults: every logo is one dark ink drawn for paper (each SVG sets
color="#0E100E" and fills #000), so its image well stays paper-white in both themes, as the hand-built round
galleries showed them (build_gallery.py's .big tile: background #fff, color #161615). In a dark theme a dark
well would make the logos vanish. */
.data-ui-skin .dv-cards-img, .data-ui-skin .pswp__img { background: #ffffff; }
.data-ui-skin .dv-cards-img img { padding: 10px 12px; }
# robotparts logo rounds
Every SVG from robotparts' eleven logo rounds of 2026-10-25 (203 files) as one media grid: grouped by round, each
card the logo with its name, kind and the round's score out of 35; click a logo for the lightbox, then arrow through
all of them. Other views rank the lockups by score and lay out the favicon marks.
- **App:** design work
- **Replaces:** the hand-built logo gallery reports, one per round (`reports/media/robotparts-logos-r2…r11-2026-10-25.html`
in robotparts, each written by its round's own `build_gallery.py`, which inlined every SVG into a page of its own).
- **Shows:** the media grid (`type: cards` with `lightbox: true` and `caption`), `imageFit: contain` with a wide
`imageAspectRatio`, group headings by round, a score that is missing with its reason (`{value: null, why: "round 1
was not scored"}`), the rail's range facet on score, and a skin that keeps the image wells paper-white in a dark
theme because the logos are one dark ink.
- **Data:** `logos.json` and the `r01-…r11-*.svg` files in `svg/`, written by `source/make.py` from the logo lane's
`design/logos-2026-10-25*/` folders (robotparts `lane-logos` @ 2d1aaf3): every SVG joined to its round's
`logos.json` by file name; an SVG no entry names (an animation, the live logo) is still a row.
The original UI it replaces
the hand-built logo gallery reports, one per round (reports/media/robotparts-logos-r2…r11-2026-10-25.html in robotparts, each written by its round's own build_gallery.py, which inlined every SVG into a page of its own).
What it shows
the media grid (type: cards with lightbox: true and caption), imageFit: contain with a wide imageAspectRatio, group headings by round, a score that is missing with its reason ({value: null, why: "round 1 was not scored"}), the rail's range facet on score, and a skin that keeps the image wells paper-white in a dark theme because the logos are one dark ink.
Data
logos.json and the r01-…r11-*.svg files in svg/, written by source/make.py from the logo lane's design/logos-2026-10-25*/ folders (robotparts lane-logos @ 2d1aaf3): every SVG joined to its round's logos.json by file name; an SVG no entry names (an animation, the live logo) is still a row.