IDM DS
One component set, seven editorial brands. A themeable system where the primitives hold still and only the theme layer moves.
- Status
- In progress
Iron Diamond Media runs seven sister publications, Arizona Bride among them. Each has its own palette, its own typographic voice, and, until now, its own half-maintained set of components.
The system's whole job is to make that sustainable: primitives are shared and theme-agnostic; brands supply a token file and nothing else.
Component library in progress
The theming contract below is settled. Components publish here once they pass the seven-brand check: every primitive has to survive all seven themes before it ships.
The theming contract
A brand theme is a flat map of the same keys. No brand adds a key, no brand removes one. If a design needs a token the contract doesn't have, that's a change to the contract, not a one-off.
{
"brand": "arizona-bride",
"color": {
"accent": "#e996b3",
"accent-contrast": "#3d1520",
"ink": "#1a1416",
"ink-muted": "#6b5a60",
"surface": "#fffdfd",
"surface-sunken": "#faf3f5",
"rule": "#e8dce0"
},
"type": {
"display": "\"Canela Deck\", Georgia, serif",
"body": "\"Söhne\", system-ui, sans-serif"
},
"radius": { "sm": "2px", "md": "4px", "lg": "8px" }
}Primitives read only from that map:
.idm-card {
background: var(--color-surface);
border: 1px solid var(--color-rule);
border-radius: var(--radius-lg);
color: var(--color-ink);
}
.idm-card__kicker {
color: var(--color-accent-contrast);
font-family: var(--type-body);
}No primitive may reference a brand by name. A .idm-card--arizona-bride
selector anywhere in the codebase is a bug, not a feature.
Foundations
Radius as brand signal
Radius does more identity work here than color does. The editorial brands run near-square; the vendor-facing platform rounds off.
| Brand group | sm | md | lg | Reads as |
|---|---|---|---|---|
| Editorial (5) | 2px | 4px | 8px | Print, considered |
| Vendor platform | 6px | 10px | 16px | Software, approachable |
The seven-brand check
Build the primitive against the base theme only, no brand in the file.
Render it in all seven themes side by side at three breakpoints.
Any theme that needs a component-level override fails the check. Fix the contract or fix the primitive.
Publish, then add the changelog entry with the contract version it targets.
Components
Nothing published yet. Build order follows what all seven brands share most:
| Component | Status | Themes passing |
|---|---|---|
| Article card | In Figma | 5 / 7 |
| Section rule | In Figma | 7 / 7 |
| Byline | Design | – |
| Vendor listing | Design | – |
| Newsletter capture | Not started | – |
Article card fails on the two vendor-platform themes: the radius jump breaks the image crop. That's a contract problem, not a card problem.
Changelog
- 2026-08-11: Radius promoted to a contract key after the card failure.
- 2026-06-30: Seven-brand check added to the publish gate.
- 2026-05-14: Theming contract drafted.
