oh-my-design-cli 1.8.6 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +2761 -85
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/airbridge/DESIGN.md +451 -0
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bigin/DESIGN.md +454 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/buzzvil/DESIGN.md +457 -0
- package/web/references/cafe24/DESIGN.md +472 -0
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/codeit/DESIGN.md +470 -0
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +338 -0
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/elice/DESIGN.md +445 -0
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/furiosaai/DESIGN.md +450 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/goorm/DESIGN.md +470 -0
- package/web/references/greencar/DESIGN.md +420 -0
- package/web/references/hackle/DESIGN.md +472 -0
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hwahae/DESIGN.md +453 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kcd/DESIGN.md +432 -0
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/kyobobook/DESIGN.md +445 -0
- package/web/references/lablup/DESIGN.md +474 -0
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lemonbase/DESIGN.md +452 -0
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +242 -0
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/moreh/DESIGN.md +437 -0
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/neosapience/DESIGN.md +441 -0
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/nota/DESIGN.md +451 -0
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/portone/DESIGN.md +446 -0
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/queenit/DESIGN.md +432 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/rebellions/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/returnzero/DESIGN.md +460 -0
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/saramin/DESIGN.md +465 -0
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shiftee/DESIGN.md +468 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/solapi/DESIGN.md +483 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/supertone/DESIGN.md +413 -0
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/vuno/DESIGN.md +413 -0
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/weverse/DESIGN.md +437 -0
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- package/dist/install-skills-7UUDOLG2.js.map +0 -1
|
@@ -4,437 +4,363 @@ name: Resend
|
|
|
4
4
|
country: US
|
|
5
5
|
category: productivity
|
|
6
6
|
homepage: "https://resend.com"
|
|
7
|
-
primary_color: "#
|
|
7
|
+
primary_color: "#00a3ff"
|
|
8
8
|
logo:
|
|
9
9
|
type: simpleicons
|
|
10
10
|
slug: resend
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
13
|
ds:
|
|
14
14
|
name: Resend Brand
|
|
15
15
|
url: "https://resend.com/brand"
|
|
16
16
|
type: brand
|
|
17
|
-
description: Resend's brand
|
|
17
|
+
description: Resend's official brand assets and guidelines.
|
|
18
18
|
og_image: "https://cdn.resend.com/cover-brand.png"
|
|
19
|
+
verification_v2:
|
|
20
|
+
schema: 2
|
|
21
|
+
checked: "2026-07-13"
|
|
22
|
+
surfaces:
|
|
23
|
+
- { id: home, kind: marketing, url: "https://resend.com/", inspected: "2026-07-13" }
|
|
24
|
+
- { id: surface-2, kind: marketing, url: "https://resend.com/features/audiences", inspected: "2026-07-13" }
|
|
25
|
+
- { id: surface-3, kind: marketing, url: "https://resend.com/features/automations", inspected: "2026-07-13" }
|
|
26
|
+
sources:
|
|
27
|
+
- { id: resend-home-live, kind: product-surface, url: "https://resend.com/", captured: "2026-07-13" }
|
|
28
|
+
- { id: resend-audiences-live, kind: product-surface, url: "https://resend.com/features/audiences", captured: "2026-07-13" }
|
|
29
|
+
- { id: resend-automations-live, kind: product-surface, url: "https://resend.com/features/automations", captured: "2026-07-13" }
|
|
30
|
+
- { id: resend-brand-guidelines, kind: official-doc, url: "https://resend.com/handbook/design/what-are-our-brand-guidelines", captured: "2026-07-13" }
|
|
31
|
+
- { id: resend-rebrand, kind: official-doc, url: "https://resend.com/blog/rebranding-resend", captured: "2026-07-13" }
|
|
32
|
+
- { id: resend-about, kind: official-doc, url: "https://resend.com/about", captured: "2026-07-13" }
|
|
33
|
+
- { id: resend-history, kind: official-doc, url: "https://resend.com/handbook/company/how-we-got-here", captured: "2026-07-13" }
|
|
34
|
+
- { id: resend-mission, kind: official-doc, url: "https://resend.com/handbook/company/why-we-exist", captured: "2026-07-13" }
|
|
35
|
+
- { id: inter-asset, kind: brand-asset, url: "https://resend.com/_next/static/media/inter_variable.p.0r27kd5h06n72.woff2?dpl=dpl_6QdhL9DCTN9ExbvTURDkdxpxJgKR", captured: "2026-07-13" }
|
|
36
|
+
- { id: abc-favorit-asset, kind: brand-asset, url: "https://resend.com/_next/static/media/abc_favorit_book.p.0or15w12zowqm.woff2?dpl=dpl_6QdhL9DCTN9ExbvTURDkdxpxJgKR", captured: "2026-07-13" }
|
|
37
|
+
- { id: domaine-asset, kind: brand-asset, url: "https://resend.com/_next/static/media/domaine_regular.p.0e_gg6~4pmz90.woff2?dpl=dpl_6QdhL9DCTN9ExbvTURDkdxpxJgKR", captured: "2026-07-13" }
|
|
38
|
+
- { id: favorit-license, kind: license, url: "https://abcdinamo.com/buy/favorit", captured: "2026-07-13" }
|
|
39
|
+
conflicts: []
|
|
40
|
+
claims:
|
|
41
|
+
"tokens.colors.primary": &marketing { surface_id: home, source_id: resend-home-live, method: computed-style, captured: "2026-07-13" }
|
|
42
|
+
"tokens.colors.canvas": *marketing
|
|
43
|
+
"tokens.colors.foreground": *marketing
|
|
44
|
+
"tokens.colors.muted": *marketing
|
|
45
|
+
"tokens.colors.on-primary": *marketing
|
|
46
|
+
"tokens.typography.family.ui": *marketing
|
|
47
|
+
"tokens.typography.family.display": *marketing
|
|
48
|
+
"tokens.typography.family.editorial": *marketing
|
|
49
|
+
"tokens.typography.display-hero.size": *marketing
|
|
50
|
+
"tokens.typography.display-hero.weight": *marketing
|
|
51
|
+
"tokens.typography.display-hero.lineHeight": *marketing
|
|
52
|
+
"tokens.typography.display-hero.tracking": *marketing
|
|
53
|
+
"tokens.typography.display-hero.use": *marketing
|
|
54
|
+
"tokens.typography.section-heading.size": *marketing
|
|
55
|
+
"tokens.typography.section-heading.weight": *marketing
|
|
56
|
+
"tokens.typography.section-heading.lineHeight": *marketing
|
|
57
|
+
"tokens.typography.section-heading.tracking": *marketing
|
|
58
|
+
"tokens.typography.section-heading.use": *marketing
|
|
59
|
+
"tokens.typography.body.size": *marketing
|
|
60
|
+
"tokens.typography.body.weight": *marketing
|
|
61
|
+
"tokens.typography.body.lineHeight": *marketing
|
|
62
|
+
"tokens.typography.body.use": *marketing
|
|
63
|
+
"tokens.typography.control.size": *marketing
|
|
64
|
+
"tokens.typography.control.weight": *marketing
|
|
65
|
+
"tokens.typography.control.lineHeight": *marketing
|
|
66
|
+
"tokens.typography.control.use": *marketing
|
|
67
|
+
"tokens.spacing.unit": *marketing
|
|
68
|
+
"tokens.spacing.control-x": *marketing
|
|
69
|
+
"tokens.spacing.control-y": *marketing
|
|
70
|
+
"tokens.spacing.menu-x": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
71
|
+
"tokens.spacing.menu-y": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
72
|
+
"tokens.rounded.control": *marketing
|
|
73
|
+
"tokens.rounded.menu": *marketing
|
|
74
|
+
"tokens.rounded.panel": *marketing
|
|
75
|
+
"tokens.rounded.full": *marketing
|
|
76
|
+
"tokens.components.primary-cta.type": *marketing
|
|
77
|
+
"tokens.components.primary-cta.bg": *marketing
|
|
78
|
+
"tokens.components.primary-cta.fg": *marketing
|
|
79
|
+
"tokens.components.primary-cta.radius": *marketing
|
|
80
|
+
"tokens.components.primary-cta.padding": *marketing
|
|
81
|
+
"tokens.components.primary-cta.font": *marketing
|
|
82
|
+
"tokens.components.primary-cta.states": *marketing
|
|
83
|
+
"tokens.components.primary-cta.use": *marketing
|
|
84
|
+
"tokens.components.outline-pill.type": *marketing
|
|
85
|
+
"tokens.components.outline-pill.fg": *marketing
|
|
86
|
+
"tokens.components.outline-pill.border": *marketing
|
|
87
|
+
"tokens.components.outline-pill.radius": *marketing
|
|
88
|
+
"tokens.components.outline-pill.padding": *marketing
|
|
89
|
+
"tokens.components.outline-pill.font": *marketing
|
|
90
|
+
"tokens.components.outline-pill.states": *marketing
|
|
91
|
+
"tokens.components.outline-pill.use": *marketing
|
|
92
|
+
"tokens.components.header-control.type": *marketing
|
|
93
|
+
"tokens.components.header-control.fg": *marketing
|
|
94
|
+
"tokens.components.header-control.padding": *marketing
|
|
95
|
+
"tokens.components.header-control.font": *marketing
|
|
96
|
+
"tokens.components.header-control.states": *marketing
|
|
97
|
+
"tokens.components.header-control.use": *marketing
|
|
98
|
+
"tokens.components.selected-tab-panel.type": *marketing
|
|
99
|
+
"tokens.components.selected-tab-panel.bg": *marketing
|
|
100
|
+
"tokens.components.selected-tab-panel.fg": *marketing
|
|
101
|
+
"tokens.components.selected-tab-panel.radius": *marketing
|
|
102
|
+
"tokens.components.selected-tab-panel.states": *marketing
|
|
103
|
+
"tokens.components.selected-tab-panel.use": *marketing
|
|
104
|
+
"tokens.components.menu-option.type": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
105
|
+
"tokens.components.menu-option.fg": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
106
|
+
"tokens.components.menu-option.radius": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
107
|
+
"tokens.components.menu-option.padding": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
108
|
+
"tokens.components.menu-option.states": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
109
|
+
"tokens.components.menu-option.use": { surface_id: surface-2, source_id: resend-audiences-live, method: interaction-capture, captured: "2026-07-13" }
|
|
110
|
+
"tokens.components.disabled-action.type": { surface_id: surface-3, source_id: resend-automations-live, method: computed-style, captured: "2026-07-13" }
|
|
111
|
+
"tokens.components.disabled-action.fg": { surface_id: surface-3, source_id: resend-automations-live, method: computed-style, captured: "2026-07-13" }
|
|
112
|
+
"tokens.components.disabled-action.radius": { surface_id: surface-3, source_id: resend-automations-live, method: computed-style, captured: "2026-07-13" }
|
|
113
|
+
"tokens.components.disabled-action.padding": { surface_id: surface-3, source_id: resend-automations-live, method: computed-style, captured: "2026-07-13" }
|
|
114
|
+
"tokens.components.disabled-action.states": { surface_id: surface-3, source_id: resend-automations-live, method: computed-style, captured: "2026-07-13" }
|
|
115
|
+
"tokens.components.disabled-action.use": { surface_id: surface-3, source_id: resend-automations-live, method: computed-style, captured: "2026-07-13" }
|
|
19
116
|
tokens:
|
|
20
|
-
source:
|
|
21
|
-
extracted: "2026-
|
|
117
|
+
source: reconciled
|
|
118
|
+
extracted: "2026-07-13"
|
|
119
|
+
components_harvested: true
|
|
22
120
|
colors:
|
|
23
|
-
primary: "#
|
|
24
|
-
brand: "#000000"
|
|
121
|
+
primary: "#00a3ff"
|
|
25
122
|
canvas: "#000000"
|
|
26
123
|
foreground: "#f0f0f0"
|
|
27
124
|
muted: "#a1a4a5"
|
|
28
|
-
on-primary: "#
|
|
29
|
-
accent-orange: "#ff801f"
|
|
30
|
-
accent-green: "#11ff99"
|
|
31
|
-
accent-blue: "#3b9eff"
|
|
32
|
-
accent-yellow: "#ffc53d"
|
|
33
|
-
error: "#ff2047"
|
|
125
|
+
on-primary: "#ffffff"
|
|
34
126
|
typography:
|
|
35
|
-
family: {
|
|
36
|
-
display-hero:
|
|
37
|
-
section:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
nav-link: { size: 14, weight: 500, lineHeight: 1.43, tracking: 0.35, use: "ABC Favorit nav links, positive tracking" }
|
|
43
|
-
button: { size: 14, weight: 600, lineHeight: 1.43, use: "Buttons, CTAs" }
|
|
44
|
-
caption: { size: 14, weight: 400, lineHeight: 1.60, use: "Descriptions" }
|
|
45
|
-
small: { size: 12, weight: 500, lineHeight: 1.33, use: "Tags, meta, fine print" }
|
|
46
|
-
code: { size: 16, weight: 400, lineHeight: 1.50, use: "Commit Mono code blocks" }
|
|
47
|
-
spacing: [1, 2, 4, 5, 6, 7, 8, 10, 12, 16, 20, 24, 30, 32, 40]
|
|
48
|
-
rounded: { sm: 4, md: 8, lg: 16, full: 9999 }
|
|
49
|
-
shadow:
|
|
50
|
-
ring: "rgba(176,199,217,0.145) 0px 0px 0px 1px"
|
|
51
|
-
subtle: "rgba(0,0,0,0.1) 0px 1px 3px, rgba(0,0,0,0.1) 0px 1px 2px -1px"
|
|
52
|
-
focus: "rgb(0,0,0) 0px 0px 0px 8px"
|
|
53
|
-
components_harvested: true
|
|
127
|
+
family: { ui: "Inter", display: "ABC Favorit", editorial: "Domaine Display" }
|
|
128
|
+
display-hero: { size: 96, weight: 400, lineHeight: 1, tracking: -0.96, use: "Marketing h1" }
|
|
129
|
+
section-heading: { size: 56, weight: 400, lineHeight: 1.2, tracking: -2.8, use: "Marketing h2" }
|
|
130
|
+
body: { size: 16, weight: 400, lineHeight: 1.5, use: "Marketing body and lists" }
|
|
131
|
+
control: { size: 14, weight: 400, lineHeight: 1.43, use: "Observed Inter controls" }
|
|
132
|
+
spacing: { unit: 4, control-x: 12, control-y: 5, menu-x: 24, menu-y: 8 }
|
|
133
|
+
rounded: { control: 4, menu: 12, panel: 16, full: 9999 }
|
|
54
134
|
components:
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
badge-accent: { type: badge, fg: "#ffa057", radius: "9999px", font: "12px / 500", use: "Multi-color accent badge, accent bg at low opacity" }
|
|
62
|
-
code-panel: { type: card, bg: "transparent", border: "1px solid rgba(214,235,253,0.19)", radius: "24px", font: "16px / 400", use: "Commit Mono code preview panel" }
|
|
135
|
+
primary-cta: { type: button, bg: "#00a3ff", fg: "#ffffff", radius: "4px", padding: "12px 20px", font: "14px / 600 / Helvetica (system-computed)", states: "default capture only", use: "Home marketing primary CTA" }
|
|
136
|
+
outline-pill: { type: button, fg: "#f0f0f0", border: "1px solid rgba(214,235,253,0.19)", radius: "9999px", padding: "5px 12px", font: "14px / 400 / Inter", states: "default capture only", use: "Home marketing outline control" }
|
|
137
|
+
header-control: { type: button, fg: "#a1a4a5", padding: "4px 12px", font: "14px / 500 / Inter", states: "default capture only", use: "Home header navigation control" }
|
|
138
|
+
selected-tab-panel: { type: tab, bg: "rgba(214,235,253,0.19)", fg: "#f0f0f0", radius: "16px", states: "selected tab capture", use: "Home selected tab panel" }
|
|
139
|
+
menu-option: { type: listItem, fg: "rgba(233,240,253,0.525)", radius: "12px", padding: "8px 24px", states: "menu-open selected capture", use: "Audiences feature-page menu option" }
|
|
140
|
+
disabled-action: { type: button, fg: "#4a4a4a", radius: "12px", padding: "12px", states: "disabled capture", use: "Automations feature-page disabled action" }
|
|
63
141
|
---
|
|
64
142
|
|
|
65
|
-
#
|
|
143
|
+
# Resend — Design Reference
|
|
66
144
|
|
|
67
145
|
## 1. Visual Theme & Atmosphere
|
|
68
146
|
|
|
69
|
-
Resend
|
|
147
|
+
Resend is a communication platform for developers, built from the React Email open-source project and launched as an email-sending platform in 2023. Its official story frames the work around making human communication easier while helping developers build better products. The current public marketing expression is dark-first and editorial: black canvas, pale text, a crisp `#00a3ff` action, and a deliberately mixed type system that gives headlines more ceremony than controls. The 2025 rebrand introduced a new identity and expanded the original black-and-white palette with gradients and gray tones inspired by physical materials. This reference is intentionally narrower than a product-system claim: its tokens and components come only from three captured public marketing pages, not an authenticated Resend dashboard, API response, email output, or documentation chrome.
|
|
70
148
|
|
|
71
|
-
|
|
149
|
+
- **Dark-first public marketing:** `#000000`, pale text, and cool translucent hairlines organize the captured pages.
|
|
150
|
+
- **Editorial hierarchy:** Domaine creates the hero moment, ABC Favorit carries section-level display copy, and Inter is the loaded product/UI family.
|
|
151
|
+
- **Precise, not generic:** the blue CTA is a sharp 4px control; the separate outline action is full-pill. Neither shape is generalized into an unobserved global button rule.
|
|
72
152
|
|
|
73
|
-
|
|
153
|
+
## 2. Color Palette & Roles
|
|
74
154
|
|
|
75
|
-
|
|
76
|
-
- Pure black background with near-white (`#f0f0f0`) text — theatrical, gallery-like darkness
|
|
77
|
-
- Three-font hierarchy: Domaine Display (serif hero), ABC Favorit (geometric sections), Inter (body/UI)
|
|
78
|
-
- Icy blue-tinted borders: `rgba(214, 235, 253, 0.19)` — every border has a cold, crystalline shimmer
|
|
79
|
-
- Multi-color accent system: orange, green, blue, yellow, red — each with numbered CSS variable scales
|
|
80
|
-
- Pill-shaped buttons and tags (9999px radius) with transparent backgrounds
|
|
81
|
-
- OpenType stylistic sets (`"ss01"`, `"ss03"`, `"ss04"`, `"ss11"`) on display fonts
|
|
82
|
-
- Commit Mono for code — monospace as a design element, not an afterthought
|
|
83
|
-
- Whisper-level shadows using blue-tinted ring: `rgba(176, 199, 217, 0.145) 0px 0px 0px 1px`
|
|
155
|
+
### Observed marketing roles
|
|
84
156
|
|
|
85
|
-
|
|
157
|
+
- **Primary action** (`#00a3ff`): home primary CTA at `home::[data-omd-capture="56"]`.
|
|
158
|
+
- **Canvas** (`#000000`): opened home menu and the dark public-page base.
|
|
159
|
+
- **Foreground** (`#f0f0f0`): outline-pill text, selected tab-panel text, and menu text.
|
|
160
|
+
- **Muted navigation** (`#a1a4a5`): home header control text.
|
|
161
|
+
- **On-primary** (`#ffffff`): home primary CTA text.
|
|
162
|
+
- **Cool hairline** (`rgba(214,235,253,0.19)`): outline-pill and opened-menu border; selected tab-panel fill.
|
|
86
163
|
|
|
87
|
-
|
|
88
|
-
- **Void Black** (`#000000`): Page background, the defining canvas color (95% opacity via `--color-black-12`)
|
|
89
|
-
- **Near White** (`#f0f0f0`): Primary text, button text, high-contrast elements
|
|
90
|
-
- **Pure White** (`#ffffff`): `--color-white`, maximum emphasis text, link highlights
|
|
91
|
-
|
|
92
|
-
### Accent Scale — Orange
|
|
93
|
-
- **Orange 4** (`#ff5900`): `--color-orange-4`, at 22% opacity — subtle warm glow
|
|
94
|
-
- **Orange 10** (`#ff801f`): `--color-orange-10`, primary orange accent — warm, energetic
|
|
95
|
-
- **Orange 11** (`#ffa057`): `--color-orange-11`, lighter orange for secondary use
|
|
96
|
-
|
|
97
|
-
### Accent Scale — Green
|
|
98
|
-
- **Green 3** (`#22ff99`): `--color-green-3`, at 12% opacity — faint emerald wash
|
|
99
|
-
- **Green 4** (`#11ff99`): `--color-green-4`, at 18% opacity — success indicator glow
|
|
100
|
-
|
|
101
|
-
### Accent Scale — Blue
|
|
102
|
-
- **Blue 4** (`#0075ff`): `--color-blue-4`, at 34% opacity — medium blue accent
|
|
103
|
-
- **Blue 5** (`#0081fd`): `--color-blue-5`, at 42% opacity — stronger blue
|
|
104
|
-
- **Blue 10** (`#3b9eff`): `--color-blue-10`, bright blue — links, interactive elements
|
|
105
|
-
|
|
106
|
-
### Accent Scale — Other
|
|
107
|
-
- **Yellow 9** (`#ffc53d`): `--color-yellow-9`, warm gold for warnings or highlights
|
|
108
|
-
- **Red 5** (`#ff2047`): `--color-red-5`, at 34% opacity — error states, destructive actions
|
|
109
|
-
|
|
110
|
-
### Neutral Scale
|
|
111
|
-
- **Silver** (`#a1a4a5`): Secondary text, muted links, descriptions
|
|
112
|
-
- **Dark Gray** (`#464a4d`): Tertiary text, de-emphasized content
|
|
113
|
-
- **Mid Gray** (`#5c5c5c`): Hover states, subtle emphasis
|
|
114
|
-
- **Medium Gray** (`#494949`): Quaternary text
|
|
115
|
-
- **Light Gray** (`#f8f8f8`): Light mode surface (if applicable)
|
|
116
|
-
- **Border Gray** (`#eaeaea`): Light context borders
|
|
117
|
-
- **Edge Gray** (`#ececec`): Subtle borders on light surfaces
|
|
118
|
-
- **Mist Gray** (`#dedfdf`): Light dividers
|
|
119
|
-
- **Soft Gray** (`#e5e6e6`): Alternate light border
|
|
120
|
-
|
|
121
|
-
### Surface & Overlay
|
|
122
|
-
- **Frost Primary** (`#fcfdff`): Primary color token (slight blue tint, 94% opacity)
|
|
123
|
-
- **White Hover** (`rgba(255, 255, 255, 0.28)`): Button hover state on dark
|
|
124
|
-
- **White 60%** (`oklab(0.999994 ... / 0.577)`): Semi-transparent white for muted text
|
|
125
|
-
- **White 64%** (`oklab(0.999994 ... / 0.642)`): Slightly brighter semi-transparent white
|
|
126
|
-
|
|
127
|
-
### Borders & Shadows
|
|
128
|
-
- **Frost Border** (`rgba(214, 235, 253, 0.19)`): The signature — icy blue-tinted borders at 19% opacity
|
|
129
|
-
- **Frost Border Alt** (`rgba(217, 237, 254, 0.145)`): Slightly lighter variant for list items
|
|
130
|
-
- **Ring Shadow** (`rgba(176, 199, 217, 0.145) 0px 0px 0px 1px`): Blue-tinted shadow-as-border
|
|
131
|
-
- **Focus Ring** (`rgb(0, 0, 0) 0px 0px 0px 8px`): Heavy black focus ring
|
|
132
|
-
- **Subtle Shadow** (`rgba(0, 0, 0, 0.1) 0px 1px 3px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px`): Minimal card elevation
|
|
164
|
+
The collector also records local translucent whites and blues. They stay component-scoped; no success, warning, error, dashboard, or email-client semantic palette is inferred.
|
|
133
165
|
|
|
134
166
|
## 3. Typography Rules
|
|
135
167
|
|
|
136
|
-
###
|
|
137
|
-
|
|
138
|
-
- **
|
|
139
|
-
- **
|
|
140
|
-
- **
|
|
141
|
-
- **
|
|
142
|
-
- **
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
| Body | inter | 16px (1.00rem) | 400 | 1.50 | normal | Standard body text |
|
|
156
|
-
| Body Semibold | inter | 16px (1.00rem) | 600 | 1.50 | normal | Emphasis, active states |
|
|
157
|
-
| Nav Link | aBCFavorit | 14px (0.88rem) | 500 | 1.43 | 0.35px | `"ss01", "ss03", "ss04"` — positive tracking |
|
|
158
|
-
| Button / Link | inter | 14px (0.88rem) | 500–600 | 1.43 | normal | Buttons, nav, CTAs |
|
|
159
|
-
| Caption | inter | 14px (0.88rem) | 400 | 1.60 (relaxed) | normal | Descriptions |
|
|
160
|
-
| Helvetica Caption | Helvetica | 14px (0.88rem) | 400–600 | 1.00–1.71 | normal | UI elements |
|
|
161
|
-
| Small | inter | 12px (0.75rem) | 400–500 | 1.33 | normal | Tags, meta, fine print |
|
|
162
|
-
| Small Uppercase | inter | 12px (0.75rem) | 500 | 1.33 | normal | `text-transform: uppercase` |
|
|
163
|
-
| Small Capitalize | inter | 12px (0.75rem) | 500 | 1.33 | normal | `text-transform: capitalize` |
|
|
164
|
-
| Code Body | commitMono | 16px (1.00rem) | 400 | 1.50 | normal | Code blocks |
|
|
165
|
-
| Code Small | commitMono | 14px (0.88rem) | 400 | 1.43 | normal | Inline code |
|
|
166
|
-
| Code Tiny | commitMono | 12px (0.75rem) | 400 | 1.33 | normal | Small code labels |
|
|
167
|
-
| Heading (Helvetica) | Helvetica | 24px (1.50rem) | 400 | 1.40 | normal | Alternate heading context |
|
|
168
|
-
|
|
169
|
-
### Principles
|
|
170
|
-
- **Three-font editorial hierarchy**: Domaine Display (serif, hero), ABC Favorit (geometric sans, sections), Inter (readable body). Each font has a strict role — they never cross lanes.
|
|
171
|
-
- **Aggressive negative tracking on display**: Domaine at -0.96px, ABC Favorit at -2.8px. The display type feels compressed, urgent, and designed — like a magazine masthead.
|
|
172
|
-
- **Positive tracking on nav**: ABC Favorit nav links use +0.35px letter-spacing — the only positive tracking in the system. This creates airy, spaced-out navigation text that contrasts with the compressed headings.
|
|
173
|
-
- **OpenType as identity**: The `"ss01"`, `"ss03"`, `"ss04"`, `"ss11"` stylistic sets are enabled on all ABC Favorit and Domaine text, activating alternate glyphs that give Resend's typography its unique character.
|
|
174
|
-
- **Commit Mono as design element**: The monospace font isn't hidden in code blocks — it's used prominently for code examples and technical content, treated as a first-class visual element.
|
|
168
|
+
### Evidence classes
|
|
169
|
+
|
|
170
|
+
- **Official product-use plus live computed use — Inter:** Resend identifies Inter by Rasmus Andersson as its product typeface. It is loaded with high confidence, has 599 visible captured uses, and is corroborated by a Resend-hosted WOFF2 source. It is the UI-family token.
|
|
171
|
+
- **Official display-use plus live computed use — ABC Favorit:** Resend names ABC Favorit by Dinamo as display type. It is loaded with high confidence, has 40 visible heading uses, and is corroborated by loaded Book and Medium Resend-hosted WOFF2 sources. Dinamo’s commercial EULA is a licence boundary, not permission to reuse Resend’s served files.
|
|
172
|
+
- **Official editorial-use plus live computed use — Domaine Display:** Resend names Domaine Display by Klim Type Foundry as editorial type. It is loaded with high confidence, has four visible heading uses, and is corroborated by three Resend-hosted WOFF2 sources. The 2025 rebrand explains its headline role.
|
|
173
|
+
- **System-computed, not a token — Helvetica:** the `#00a3ff` CTA computes to Helvetica but the collector records no matching loaded face/source. The component records that measured value without promoting Helvetica to Resend UI typography.
|
|
174
|
+
- **Declared-only, not a token — Commit Mono:** two `@font-face` sources exist, but zero visible captured uses were recorded. It is neither an active UI family nor a code-panel token.
|
|
175
|
+
- **System-computed embedded field:** `-apple-system` appears twice in an embedded editable field; it is not a Resend typography token.
|
|
176
|
+
|
|
177
|
+
### Observed hierarchy
|
|
178
|
+
|
|
179
|
+
| Role | Family | Size | Weight | Line height | Tracking | Surface boundary |
|
|
180
|
+
|---|---|---:|---:|---:|---:|---|
|
|
181
|
+
| Marketing hero | Domaine Display | 96px | 400 | 1.00 | -0.96px | public marketing only |
|
|
182
|
+
| Marketing hero, compact | Domaine Display | 76.8px | 400 | 1.00 | -0.768px | public marketing only |
|
|
183
|
+
| Section heading | ABC Favorit | 56px | 400 | 1.20 | -2.8px | public marketing only |
|
|
184
|
+
| Supporting heading | ABC Favorit | 20px | 400 | 1.00 | normal | public marketing only |
|
|
185
|
+
| Body/list | Inter | 16px | 400 | 1.50 | normal | public marketing only |
|
|
186
|
+
| Control | Inter | 14px | 400–500 | 1.43 | normal | public marketing only |
|
|
175
187
|
|
|
176
188
|
## 4. Component Stylings
|
|
177
189
|
|
|
178
|
-
### Buttons
|
|
190
|
+
### Buttons and controls
|
|
191
|
+
|
|
192
|
+
**Primary CTA — home marketing**
|
|
193
|
+
- Background: `#00a3ff`
|
|
194
|
+
- Text: `#ffffff`
|
|
195
|
+
- Radius: 4px
|
|
196
|
+
- Padding: 12px 20px
|
|
197
|
+
- Font: 14px / 600 / Helvetica (system-computed)
|
|
198
|
+
- States: default capture only
|
|
199
|
+
- Use: Home marketing primary CTA at `home::[data-omd-capture="56"]`.
|
|
179
200
|
|
|
180
|
-
**
|
|
181
|
-
- Background: transparent
|
|
201
|
+
**Outline pill — home marketing**
|
|
182
202
|
- Text: `#f0f0f0`
|
|
183
|
-
-
|
|
184
|
-
- Radius: 9999px (full pill)
|
|
185
|
-
- Border: `1px solid rgba(214, 235, 253, 0.19)` (frost border)
|
|
186
|
-
- Hover: background `rgba(255, 255, 255, 0.28)` (white glass)
|
|
187
|
-
- Use: Primary CTA on dark backgrounds
|
|
188
|
-
|
|
189
|
-
**White Solid Pill**
|
|
190
|
-
- Background: `#ffffff`
|
|
191
|
-
- Text: `#000000`
|
|
192
|
-
- Padding: 5px 12px
|
|
203
|
+
- Border: 1px solid `rgba(214,235,253,0.19)`
|
|
193
204
|
- Radius: 9999px
|
|
194
|
-
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
-
|
|
205
|
+
- Padding: 5px 12px
|
|
206
|
+
- Font: 14px / 400 / Inter
|
|
207
|
+
- States: default capture only
|
|
208
|
+
- Use: Home outline control at `home::[data-omd-capture="41"]`.
|
|
209
|
+
|
|
210
|
+
**Header navigation control — home marketing**
|
|
211
|
+
- Text: `#a1a4a5`
|
|
212
|
+
- Padding: 4px 12px
|
|
213
|
+
- Font: 14px / 500 / Inter
|
|
214
|
+
- States: default capture only
|
|
215
|
+
- Use: Header control at `home::[data-omd-capture="1"]`.
|
|
216
|
+
|
|
217
|
+
**Disabled automation action — feature marketing**
|
|
218
|
+
- Text: `#4a4a4a`
|
|
219
|
+
- Radius: 12px
|
|
220
|
+
- Padding: 12px
|
|
221
|
+
- Font: 14px / 400 / Inter
|
|
222
|
+
- States: disabled capture
|
|
223
|
+
- Use: Automations page action at `surface-3::[data-omd-capture="24"]`.
|
|
224
|
+
|
|
225
|
+
### Tabs and menus
|
|
226
|
+
|
|
227
|
+
**Selected tab panel — home marketing**
|
|
228
|
+
- Background: `rgba(214,235,253,0.19)`
|
|
198
229
|
- Text: `#f0f0f0`
|
|
199
|
-
- Radius:
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
207
|
-
-
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
-
|
|
221
|
-
- ABC Favorit 14px weight 500 with +0.35px tracking for nav links
|
|
222
|
-
- Pill CTAs right-aligned
|
|
223
|
-
- Mobile: hamburger collapse
|
|
224
|
-
|
|
225
|
-
### Image Treatment
|
|
226
|
-
- Product screenshots and code demos dominate content sections
|
|
227
|
-
- Dark-themed screenshots on dark background — seamless integration
|
|
228
|
-
- Rounded corners: 12px–16px on images
|
|
229
|
-
- Full-width sections with subtle gradient overlays
|
|
230
|
-
|
|
231
|
-
### Distinctive Components
|
|
232
|
-
|
|
233
|
-
**Tab Navigation**
|
|
234
|
-
- Horizontal tabs with subtle selection indicator
|
|
235
|
-
- Tab items: 8px radius
|
|
236
|
-
- Active state with subtle background differentiation
|
|
237
|
-
|
|
238
|
-
**Code Preview Panels**
|
|
239
|
-
- Dark code blocks using Commit Mono
|
|
240
|
-
- Frost borders (`rgba(214, 235, 253, 0.19)`)
|
|
241
|
-
- Syntax-highlighted with multi-color accent tokens (orange, blue, green, yellow)
|
|
242
|
-
|
|
243
|
-
**Multi-color Accent Badges**
|
|
244
|
-
- Each product feature has its own accent color from the CSS variable scale
|
|
245
|
-
- Badges use the accent color at low opacity (12–42%) for background, full opacity for text
|
|
230
|
+
- Radius: 16px
|
|
231
|
+
- States: selected tab capture
|
|
232
|
+
- Use: Home selected panel at `home::[data-omd-capture="65"]`.
|
|
233
|
+
|
|
234
|
+
**Selected menu option — audiences feature marketing**
|
|
235
|
+
- Background: `rgba(221,234,248,0.008)`
|
|
236
|
+
- Text: `rgba(233,240,253,0.525)`
|
|
237
|
+
- Radius: 12px
|
|
238
|
+
- Padding: 8px 24px
|
|
239
|
+
- Font: 14px / 400 / Inter
|
|
240
|
+
- States: menu-open selected capture
|
|
241
|
+
- Use: Audiences option at `surface-2::[data-omd-interaction-capture="menu-0-2"]`.
|
|
242
|
+
|
|
243
|
+
**Opened menu listbox — home marketing**
|
|
244
|
+
- Background: `#000000`
|
|
245
|
+
- Text: `#f0f0f0`
|
|
246
|
+
- Border: 1px solid `rgba(214,235,253,0.19)`
|
|
247
|
+
- Radius: 8px
|
|
248
|
+
- Padding: 8px
|
|
249
|
+
- Use: Home opened listbox at `home::[data-omd-interaction-capture="menu-0-0"]`.
|
|
250
|
+
|
|
251
|
+
Only the selector-level public marketing variants above are canonical. No generic card, input, code panel, hover, focus, toast, dialog, or authenticated-product state is asserted without supplied observation.
|
|
246
252
|
|
|
247
253
|
## 5. Layout Principles
|
|
248
254
|
|
|
249
|
-
### Spacing
|
|
250
|
-
- Base unit: 8px
|
|
251
|
-
- Scale: 1px, 2px, 4px, 5px, 6px, 7px, 8px, 10px, 12px, 16px, 20px, 24px, 30px, 32px, 40px
|
|
252
|
-
|
|
253
|
-
### Grid & Container
|
|
254
|
-
- Centered content with generous max-width
|
|
255
|
-
- Full-width black sections with contained inner content
|
|
256
|
-
- Single-column hero, expanding to feature grids below
|
|
257
|
-
- Code preview panels as full-width or contained showcases
|
|
258
|
-
|
|
259
|
-
### Whitespace Philosophy
|
|
260
|
-
- **Cinematic black space**: The black background IS the whitespace. Generous vertical spacing (80px–120px+) between sections creates a scroll-through-darkness experience where each section emerges like a scene.
|
|
261
|
-
- **Tight content, vast surrounds**: Text blocks and cards are compact internally, but float in vast dark space — creating isolated "islands" of content.
|
|
262
|
-
- **Typography-led rhythm**: The massive display fonts (96px) create their own vertical rhythm — each headline is a visual event that anchors the surrounding space.
|
|
263
|
-
|
|
264
|
-
### Border Radius Scale
|
|
265
|
-
- Sharp (4px): Buttons (ghost), inputs, small interactive elements
|
|
266
|
-
- Subtle (6px): Menu panels, navigation items
|
|
267
|
-
- Standard (8px): Tabs, content blocks
|
|
268
|
-
- Comfortable (10px): Accent elements
|
|
269
|
-
- Card (12px): Clipboard buttons, medium containers
|
|
270
|
-
- Large (16px): Feature cards, images, main buttons
|
|
271
|
-
- Section (24px): Large panels, section containers
|
|
272
|
-
- Pill (9999px): Primary CTAs, tags, badges
|
|
255
|
+
### Spacing system
|
|
273
256
|
|
|
274
|
-
|
|
257
|
+
Observed public-page spacing clusters around 4px, 8px, 12px, 16px, 24px, and 32px. The component evidence specifically confirms 12px/20px primary-action padding, 5px/12px outline-pill padding, and 8px/24px menu-option padding; larger layout spacing is not promoted into a page-grid contract.
|
|
275
258
|
|
|
276
|
-
|
|
277
|
-
|-------|-----------|-----|
|
|
278
|
-
| Flat (Level 0) | No shadow, transparent background | Default — most elements on dark void |
|
|
279
|
-
| Ring (Level 1) | `rgba(176, 199, 217, 0.145) 0px 0px 0px 1px` | Shadow-as-border for cards, containers |
|
|
280
|
-
| Frost Border (Level 1b) | `1px solid rgba(214, 235, 253, 0.19)` | Explicit borders — buttons, dividers, tabs |
|
|
281
|
-
| Subtle (Level 2) | `rgba(0, 0, 0, 0.1) 0px 1px 3px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px` | Light card elevation |
|
|
282
|
-
| Focus (Level 3) | `rgb(0, 0, 0) 0px 0px 0px 8px` | Heavy black focus ring — accessibility |
|
|
259
|
+
### Shape system
|
|
283
260
|
|
|
284
|
-
|
|
261
|
+
The observed control range is intentionally mixed: sharp 4px primary CTA, 8px opened-menu container, 12px feature options/actions, 16px selected panel, and a full-pill outline action. Apply a shape only where its component provenance matches.
|
|
262
|
+
|
|
263
|
+
## 6. Depth & Elevation
|
|
285
264
|
|
|
286
|
-
|
|
287
|
-
- Subtle warm gradient glows behind hero content (orange/amber tints)
|
|
288
|
-
- Product screenshots create visual depth through their own internal UI
|
|
289
|
-
- No gradient backgrounds — depth comes from border luminance and content contrast
|
|
265
|
+
The captured public pages use cool translucent lines and restrained translucent fills to separate controls from the black canvas. The supplied evidence does not justify a general card-shadow or global elevation scale; the opened menu and outlined pill retain their observed hairline only.
|
|
290
266
|
|
|
291
267
|
## 7. Do's and Don'ts
|
|
292
268
|
|
|
293
269
|
### Do
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
-
|
|
297
|
-
-
|
|
298
|
-
-
|
|
299
|
-
- Use the multi-color accent scale (orange/green/blue/yellow/red) with opacity variants for context-specific highlighting
|
|
300
|
-
- Keep shadows at ring level (`0px 0px 0px 1px`) — on black, traditional shadows don't work
|
|
301
|
-
- Use +0.35px letter-spacing on ABC Favorit nav links — the only positive tracking
|
|
270
|
+
|
|
271
|
+
- Use the verified dark canvas and pale foreground for public Resend-style marketing surfaces.
|
|
272
|
+
- Keep the sharp blue primary CTA distinct from the separate full-pill outline control.
|
|
273
|
+
- Use Inter for UI work, ABC Favorit for loaded display headings, and Domaine Display for loaded editorial heroes when the relevant font is actually available.
|
|
274
|
+
- Keep selected/menu-open/disabled styling scoped to the observed component and public surface.
|
|
302
275
|
|
|
303
276
|
### Don't
|
|
304
|
-
- Don't lighten the background above `#000000` — the pure black void is non-negotiable
|
|
305
|
-
- Don't use neutral gray borders — all borders must have the frost blue tint
|
|
306
|
-
- Don't apply Domaine Display to body text — it's a display-only serif
|
|
307
|
-
- Don't mix accent colors in the same component — each feature gets one accent color
|
|
308
|
-
- Don't use box-shadow for elevation on the dark background — use frost borders instead
|
|
309
|
-
- Don't skip the OpenType stylistic sets — they define the typographic character
|
|
310
|
-
- Don't use negative letter-spacing on nav links — ABC Favorit nav uses positive +0.35px
|
|
311
|
-
- Don't make buttons opaque on dark — transparency with frost border is the pattern
|
|
312
277
|
|
|
313
|
-
|
|
278
|
+
- Do not substitute a system font and present it as ABC Favorit, Domaine Display, or Commit Mono.
|
|
279
|
+
- Do not treat declared-only Commit Mono as a verified code-panel font.
|
|
280
|
+
- Do not extend public marketing components into dashboard, API, generated-email, or documentation rules.
|
|
281
|
+
- Do not invent hover, focus, form-error, toast, dialog, or loading variants from the supplied captures.
|
|
314
282
|
|
|
315
|
-
|
|
316
|
-
| Name | Width | Key Changes |
|
|
317
|
-
|------|-------|-------------|
|
|
318
|
-
| Mobile Small | <480px | Single column, tight padding, 76.8px hero |
|
|
319
|
-
| Mobile | 480–600px | Standard mobile, stacked layout |
|
|
320
|
-
| Desktop | >600px | Full layout, 96px hero, expanded sections |
|
|
283
|
+
## 8. Responsive Behavior
|
|
321
284
|
|
|
322
|
-
|
|
285
|
+
The collector snapshot is 1440×900. It verifies the compact 76.8px Domaine hero and full 96px hero values on public marketing, but does not supply breakpoint selectors, mobile navigation behavior, or responsive component-state evidence. Preserve the observed type values only; leave unobserved mobile behavior unresolved.
|
|
323
286
|
|
|
324
|
-
|
|
325
|
-
- Pill buttons: adequate padding (5px 12px minimum)
|
|
326
|
-
- Tab items: 8px radius with comfortable hit areas
|
|
327
|
-
- Navigation links spaced with 0.35px tracking for visual separation
|
|
287
|
+
## 9. Agent Prompt Guide
|
|
328
288
|
|
|
329
|
-
###
|
|
330
|
-
- Hero: Domaine 96px → 76.8px on mobile
|
|
331
|
-
- Navigation: horizontal → hamburger
|
|
332
|
-
- Feature sections: side-by-side → stacked
|
|
333
|
-
- Code panels: maintain width, horizontal scroll if needed
|
|
334
|
-
- Spacing compresses proportionally
|
|
289
|
+
### Quick reference
|
|
335
290
|
|
|
336
|
-
|
|
337
|
-
-
|
|
338
|
-
-
|
|
339
|
-
-
|
|
291
|
+
- Canvas: `#000000`
|
|
292
|
+
- Foreground: `#f0f0f0`
|
|
293
|
+
- Primary action: `#00a3ff` / `#ffffff` / 4px / 12px 20px
|
|
294
|
+
- Hairline: `rgba(214,235,253,0.19)`
|
|
295
|
+
- Outline control: full pill / 5px 12px / Inter 14px
|
|
340
296
|
|
|
341
|
-
|
|
297
|
+
### Example component prompts
|
|
342
298
|
|
|
343
|
-
|
|
344
|
-
-
|
|
345
|
-
-
|
|
346
|
-
- Secondary text: Silver (`#a1a4a5`)
|
|
347
|
-
- Border: Frost Border (`rgba(214, 235, 253, 0.19)`)
|
|
348
|
-
- Orange accent: `#ff801f`
|
|
349
|
-
- Green accent: `#11ff99` (at 18% opacity)
|
|
350
|
-
- Blue accent: `#3b9eff`
|
|
351
|
-
- Focus ring: `rgb(0, 0, 0) 0px 0px 0px 8px`
|
|
352
|
-
|
|
353
|
-
### Example Component Prompts
|
|
354
|
-
- "Create a hero section on pure black (#000000) background. Headline at 96px Domaine Display weight 400, line-height 1.00, letter-spacing -0.96px, near-white (#f0f0f0) text, OpenType 'ss01 ss04 ss11'. Subtitle at 20px ABC Favorit weight 400, line-height 1.30. Two pill buttons: white solid (#ffffff, 9999px radius) and transparent with frost border (rgba(214,235,253,0.19))."
|
|
355
|
-
- "Design a navigation bar: dark background with frost border bottom (1px solid rgba(214,235,253,0.19)). Nav links at 14px ABC Favorit weight 500, letter-spacing +0.35px, OpenType 'ss01 ss03 ss04'. White pill CTA right-aligned."
|
|
356
|
-
- "Build a feature card: transparent background, frost border (rgba(214,235,253,0.19)), 16px radius. Title at 56px ABC Favorit weight 400, letter-spacing -2.8px. Body at 16px Inter weight 400, #a1a4a5 text."
|
|
357
|
-
- "Create a code block using Commit Mono 16px on dark background. Frost border container (24px radius). Syntax colors: orange (#ff801f), blue (#3b9eff), green (#11ff99), yellow (#ffc53d)."
|
|
358
|
-
- "Design an accent badge: background #ff5900 at 22% opacity, text #ffa057, 9999px radius, 12px Inter weight 500."
|
|
359
|
-
|
|
360
|
-
### Iteration Guide
|
|
361
|
-
1. Start with pure black — everything floats in the void
|
|
362
|
-
2. Frost borders (`rgba(214, 235, 253, 0.19)`) are the universal structural element — not gray, not neutral
|
|
363
|
-
3. Three fonts, three roles: Domaine (hero), ABC Favorit (sections), Inter (body) — never cross
|
|
364
|
-
4. OpenType stylistic sets are mandatory on display fonts — they define the character
|
|
365
|
-
5. Multi-color accents at low opacity (12–42%) for backgrounds, full opacity for text
|
|
366
|
-
6. Pill shape (9999px) for CTAs and badges, standard radius (4px–16px) for containers
|
|
367
|
-
7. No shadows — use frost borders for depth against the void
|
|
299
|
+
- “Create a public marketing primary CTA with `#00a3ff` background, white text, 4px radius, and 12px 20px padding. Do not turn it into a pill.”
|
|
300
|
+
- “Create a home-style outline control with pale text, a cool translucent hairline, full-pill radius, 5px 12px padding, and loaded Inter if available.”
|
|
301
|
+
- “Create an audiences-style selected menu option only for an open-menu state: 12px radius, 8px 24px padding, and the observed translucent pale treatment.”
|
|
368
302
|
|
|
369
303
|
## 10. Voice & Tone
|
|
370
304
|
|
|
371
|
-
Resend
|
|
305
|
+
Resend’s official mission is to make human communication easier and help developers build better products. Its public language is concise, direct, and builder-oriented rather than inflated.
|
|
372
306
|
|
|
373
|
-
| Context |
|
|
307
|
+
| Context | Direction |
|
|
374
308
|
|---|---|
|
|
375
|
-
|
|
|
376
|
-
|
|
|
377
|
-
|
|
|
378
|
-
| Error | Specific. "Invalid API key. Generate new one in Settings." |
|
|
309
|
+
| Product framing | Explain a concrete communication or developer outcome. |
|
|
310
|
+
| CTA | Use a short, clear action. |
|
|
311
|
+
| Technical support | Prefer specific next steps over abstract reassurance. |
|
|
379
312
|
|
|
380
313
|
**Voice samples**
|
|
381
|
-
- Tagline: *"Email for developers"* <!-- verified: resend.com homepage 2026-05 -->
|
|
382
|
-
- Recurring promo: *"Announcing Resend Forward"* <!-- verified: resend.com homepage 2026-05 -->
|
|
383
314
|
|
|
384
|
-
|
|
315
|
+
- “Email for developers” <!-- verified: Resend public home, supplied 2026-07-13 collector -->
|
|
316
|
+
- “To help humans communicate” <!-- verified: resend.com/handbook/company/why-we-exist, 2026-07-13 -->
|
|
317
|
+
- “To help developers build better products” <!-- verified: resend.com/handbook/company/why-we-exist, 2026-07-13 -->
|
|
385
318
|
|
|
386
319
|
## 11. Brand Narrative
|
|
387
320
|
|
|
388
|
-
Resend
|
|
321
|
+
Resend began with an open-source project in 2022, when its founders were frustrated by the difficulty of making modern email templates work across email clients. The company launched an email-sending platform in 2023 and joined Y Combinator’s winter batch. Its official timeline identifies React Email, incorporation in January 2023, and later developer tooling as connected milestones rather than separate brands.
|
|
322
|
+
|
|
323
|
+
The public identity evolved in July 2025 with a new logo, visual identity, wallpapers, expanded color treatment, and a typography system that gives Domaine editorial headline work, ABC Favorit subheading/display work, and Inter product/body work. That narrative supports the marketing atmosphere here; it does not expand the scope of the captured component tokens.
|
|
389
324
|
|
|
390
325
|
## 12. Principles
|
|
391
326
|
|
|
392
|
-
1. **
|
|
393
|
-
2. **
|
|
394
|
-
3. **
|
|
395
|
-
4. **
|
|
396
|
-
5. **React Email is the OSS hook.** *UI implication:* surfaces lead with React Email examples.
|
|
327
|
+
1. **Reduce friction.** Resend’s official brand guidelines call the brand simple. *UI implication:* use clear action labels and avoid decorative control complexity.
|
|
328
|
+
2. **Be modern without noise.** The official guidelines describe a look ahead of the present. *UI implication:* use the dark-first palette and measured translucent details rather than generic neon decoration.
|
|
329
|
+
3. **Earn trust through memorability.** The official guidelines pair memorability with trust. *UI implication:* keep the blue action and cool hairline language consistent where their source component applies.
|
|
330
|
+
4. **Make for builders.** Resend’s mission centers developers and makers. *UI implication:* keep instructions and technical decisions concrete and actionable.
|
|
397
331
|
|
|
398
332
|
## 13. Personas
|
|
399
333
|
|
|
400
|
-
*
|
|
334
|
+
*These are stakeholder archetypes derived from Resend’s official mission and public product framing, not individual people or user research findings.*
|
|
401
335
|
|
|
402
|
-
**
|
|
336
|
+
**Developer building a product.** Needs a direct way to send reliable communications and values precise, implementation-ready guidance.
|
|
403
337
|
|
|
404
|
-
**
|
|
338
|
+
**Product maker coordinating communication.** Needs emails and messaging to feel coherent with the product, without becoming an email-infrastructure specialist.
|
|
405
339
|
|
|
406
|
-
**
|
|
340
|
+
**Technical team evaluating a platform.** Needs transparent constraints, clear next actions, and source-backed claims rather than ornamental marketing language.
|
|
407
341
|
|
|
408
342
|
## 14. States
|
|
409
343
|
|
|
410
|
-
|
|
411
|
-
|---|---|
|
|
412
|
-
| **Empty (no domains)** | "Add your first domain" CTA + DNS setup |
|
|
413
|
-
| **Empty (no API keys)** | "Generate first API key" CTA |
|
|
414
|
-
| **Loading (sending)** | Per-email status visible |
|
|
415
|
-
| **Loading (DNS verifying)** | Persistent badge with check button |
|
|
416
|
-
| **Error (DNS not verified)** | Specific record + value to add |
|
|
417
|
-
| **Error (rate limit)** | Tier limit + upgrade |
|
|
418
|
-
| **Success (sent)** | Implicit; appears in dashboard |
|
|
419
|
-
| **Success (domain verified)** | Subtle confirmation |
|
|
420
|
-
| **Skeleton (email log)** | Frost-border placeholders |
|
|
421
|
-
| **Disabled (no plan)** | Upgrade link |
|
|
422
|
-
| **Loading (long batch)** | Persistent progress |
|
|
423
|
-
|
|
424
|
-
## 15. Motion & Easing
|
|
344
|
+
Only the supplied public-page states are asserted.
|
|
425
345
|
|
|
426
|
-
|
|
|
346
|
+
| State | Treatment | Scope |
|
|
427
347
|
|---|---|---|
|
|
428
|
-
|
|
|
429
|
-
|
|
|
430
|
-
|
|
|
348
|
+
| Default primary CTA | Blue `#00a3ff`, white text, 4px radius | Home marketing |
|
|
349
|
+
| Default outline control | Pale text, cool hairline, full pill | Home marketing |
|
|
350
|
+
| Selected tab panel | Cool translucent fill, pale text, 16px radius | Home marketing |
|
|
351
|
+
| Menu open | Black listbox with cool hairline | Home marketing |
|
|
352
|
+
| Selected menu option | Translucent pale treatment, 12px radius | Audiences marketing |
|
|
353
|
+
| Disabled action | `#4a4a4a` text, 12px radius, 12px padding | Automations marketing |
|
|
354
|
+
|
|
355
|
+
Empty, loading, error, success, skeleton, form validation, toast, dialog, and authenticated-product states were not supplied and are intentionally omitted.
|
|
356
|
+
|
|
357
|
+
## 15. Motion & Easing
|
|
431
358
|
|
|
432
|
-
|
|
359
|
+
The supplied collector preserves selected, menu-open, and disabled outcomes but not a reliable duration/easing contract. Do not infer a global motion scale from CSS class names or adjacent legacy material. Use reduced motion by default when implementing a new surface, and keep any animation specification outside this reference until a source-backed observation is available.
|
|
433
360
|
|
|
434
361
|
---
|
|
435
362
|
|
|
436
|
-
**Verified:** 2026-
|
|
437
|
-
**Tier 1 sources:** resend.com
|
|
438
|
-
**Tier 2 sources:**
|
|
439
|
-
**
|
|
440
|
-
**Style ref:** `stripe`. **Conflicts unresolved:** none. **Earlier mistake reverted (significant):** prior footer captured 16px tab/ghost variants only — canonical Primary is `#00a3ff` **Resend Blue 4px** (the brand-defining color, missed entirely). §4 material correction.
|
|
363
|
+
**Verified:** 2026-07-13
|
|
364
|
+
**Tier 1 sources:** supplied collector for https://resend.com/, https://resend.com/features/audiences, and https://resend.com/features/automations; official Resend brand guidelines, rebrand article, About, history, and mission pages.
|
|
365
|
+
**Tier 2 sources:** getdesign Resend analysis opened; Refero query attempted but unavailable through built-in web open.
|
|
366
|
+
**Conflicts unresolved:** none
|