oh-my-design-cli 1.8.7 → 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 +1995 -38
- 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/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/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- 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/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 +217 -330
- 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/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/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- 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/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/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/lamborghini/DESIGN.md +198 -360
- 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 +149 -349
- 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/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/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- 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/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/quotabook/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/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/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -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/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/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/wanted/DESIGN.md +215 -487
- 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,58 +4,126 @@ name: Hashicorp
|
|
|
4
4
|
country: US
|
|
5
5
|
category: backend-devops
|
|
6
6
|
homepage: "https://www.hashicorp.com"
|
|
7
|
-
primary_color: "#
|
|
7
|
+
primary_color: "#1060ff"
|
|
8
8
|
logo:
|
|
9
9
|
type: simpleicons
|
|
10
10
|
slug: hashicorp
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
13
|
ds:
|
|
14
14
|
name: Helios
|
|
15
15
|
url: "https://helios.hashicorp.design"
|
|
16
16
|
type: system
|
|
17
|
-
description: HashiCorp's design system
|
|
17
|
+
description: HashiCorp's public design system for product foundations, content, components, and patterns.
|
|
18
|
+
verification_v2:
|
|
19
|
+
schema: 2
|
|
20
|
+
checked: "2026-07-13"
|
|
21
|
+
surfaces:
|
|
22
|
+
- { id: home, kind: marketing, url: "https://www.hashicorp.com/ko", inspected: "2026-07-13" }
|
|
23
|
+
- { id: pricing, kind: pricing, url: "https://www.hashicorp.com/ko/pricing", inspected: "2026-07-13" }
|
|
24
|
+
- { id: boundary, kind: product-marketing, url: "https://www.hashicorp.com/ko/products/boundary", inspected: "2026-07-13" }
|
|
25
|
+
sources:
|
|
26
|
+
- { id: home-live, kind: product-surface, url: "https://www.hashicorp.com/ko", captured: "2026-07-13" }
|
|
27
|
+
- { id: pricing-live, kind: product-surface, url: "https://www.hashicorp.com/ko/pricing", captured: "2026-07-13" }
|
|
28
|
+
- { id: boundary-live, kind: product-surface, url: "https://www.hashicorp.com/ko/products/boundary", captured: "2026-07-13" }
|
|
29
|
+
- { id: helios, kind: official-doc, url: "https://helios.hashicorp.design/", captured: "2026-07-13" }
|
|
30
|
+
- { id: font-announcement, kind: official-doc, url: "https://www.hashicorp.com/en/blog/introducing-hashicorp-sans", captured: "2026-07-13" }
|
|
31
|
+
- { id: typography-guideline, kind: brand-asset, url: "https://www.hashicorp.com/en/brand/hcp-product-typography", captured: "2026-07-13" }
|
|
32
|
+
- { id: terms, kind: license, url: "https://www.hashicorp.com/terms-of-service", captured: "2026-07-13" }
|
|
33
|
+
- { id: about, kind: official-doc, url: "https://www.hashicorp.com/en/about", captured: "2026-07-13" }
|
|
34
|
+
conflicts: []
|
|
35
|
+
claims:
|
|
36
|
+
"tokens.colors.boundary": &boundary { surface_id: boundary, source_id: boundary-live, method: live-inspect, captured: "2026-07-13" }
|
|
37
|
+
"tokens.colors.canvas": &home { surface_id: home, source_id: home-live, method: live-inspect, captured: "2026-07-13" }
|
|
38
|
+
"tokens.colors.foreground": *home
|
|
39
|
+
"tokens.colors.foreground-dark": *home
|
|
40
|
+
"tokens.colors.hairline": *home
|
|
41
|
+
"tokens.colors.muted": *home
|
|
42
|
+
"tokens.colors.on-dark": *home
|
|
43
|
+
"tokens.colors.on-primary": *home
|
|
44
|
+
"tokens.colors.primary": *home
|
|
45
|
+
"tokens.colors.primary-border": *home
|
|
46
|
+
"tokens.colors.primary-bright": &pricing { surface_id: pricing, source_id: pricing-live, method: live-inspect, captured: "2026-07-13" }
|
|
47
|
+
"tokens.colors.surface": *home
|
|
48
|
+
"tokens.colors.surface-dark": *home
|
|
49
|
+
"tokens.colors.surface-deep": *home
|
|
50
|
+
"tokens.colors.surface-muted": *home
|
|
51
|
+
"tokens.colors.terraform": *pricing
|
|
52
|
+
"tokens.components.card.bg": *home
|
|
53
|
+
"tokens.components.card.fg": *home
|
|
54
|
+
"tokens.components.card.radius": *home
|
|
55
|
+
"tokens.components.card.type": *home
|
|
56
|
+
"tokens.components.card.use": *home
|
|
57
|
+
"tokens.rounded.card": *home
|
|
58
|
+
"tokens.rounded.control": *home
|
|
59
|
+
"tokens.rounded.nav": *home
|
|
60
|
+
"tokens.rounded.sm": *home
|
|
61
|
+
"tokens.rounded.square": *home
|
|
62
|
+
"tokens.shadow.control": *home
|
|
63
|
+
"tokens.spacing.base": *home
|
|
64
|
+
"tokens.spacing.lg": *home
|
|
65
|
+
"tokens.spacing.md": *home
|
|
66
|
+
"tokens.spacing.sm": *home
|
|
67
|
+
"tokens.spacing.xl": *home
|
|
68
|
+
"tokens.spacing.xs": *home
|
|
69
|
+
"tokens.spacing.xxl": *home
|
|
70
|
+
"tokens.typography.body.lineHeight": *home
|
|
71
|
+
"tokens.typography.body.size": *home
|
|
72
|
+
"tokens.typography.body.use": *home
|
|
73
|
+
"tokens.typography.body.weight": *home
|
|
74
|
+
"tokens.typography.button.lineHeight": *home
|
|
75
|
+
"tokens.typography.button.size": *home
|
|
76
|
+
"tokens.typography.button.use": *home
|
|
77
|
+
"tokens.typography.button.weight": *home
|
|
78
|
+
"tokens.typography.display-hero.lineHeight": *home
|
|
79
|
+
"tokens.typography.display-hero.size": *home
|
|
80
|
+
"tokens.typography.display-hero.use": *home
|
|
81
|
+
"tokens.typography.display-hero.weight": *home
|
|
82
|
+
"tokens.typography.family.display": *home
|
|
83
|
+
"tokens.typography.family.ui": *home
|
|
84
|
+
"tokens.typography.heading.lineHeight": *home
|
|
85
|
+
"tokens.typography.heading.size": *home
|
|
86
|
+
"tokens.typography.heading.use": *home
|
|
87
|
+
"tokens.typography.heading.weight": *home
|
|
88
|
+
"tokens.typography.label.lineHeight": *boundary
|
|
89
|
+
"tokens.typography.label.size": *boundary
|
|
90
|
+
"tokens.typography.label.tracking": *boundary
|
|
91
|
+
"tokens.typography.label.use": *boundary
|
|
92
|
+
"tokens.typography.label.weight": *boundary
|
|
18
93
|
tokens:
|
|
19
|
-
source:
|
|
20
|
-
extracted: "2026-
|
|
94
|
+
source: live-extract
|
|
95
|
+
extracted: "2026-07-13"
|
|
96
|
+
note: "Only values observed in the supplied three-route capture are machine tokens; HashiCorp Sans is a loaded display family, while controls and body text use system stacks."
|
|
21
97
|
colors:
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
98
|
+
primary: "#1060ff"
|
|
99
|
+
primary-border: "#0c56e9"
|
|
100
|
+
primary-bright: "#2b89ff"
|
|
25
101
|
canvas: "#ffffff"
|
|
26
|
-
surface
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
102
|
+
surface: "#fafafa"
|
|
103
|
+
surface-muted: "#f1f2f3"
|
|
104
|
+
surface-dark: "#15181e"
|
|
105
|
+
surface-deep: "#0d0e12"
|
|
106
|
+
foreground: "#3b3d45"
|
|
107
|
+
foreground-dark: "#d5d7db"
|
|
108
|
+
on-primary: "#ffffff"
|
|
30
109
|
on-dark: "#efeff1"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
link-bright: "#2b89ff"
|
|
110
|
+
muted: "#656a76"
|
|
111
|
+
hairline: "#b2b6bd"
|
|
34
112
|
terraform: "#7b42bc"
|
|
35
|
-
|
|
36
|
-
waypoint: "#14c6cb"
|
|
37
|
-
waypoint-hover: "#12b6bb"
|
|
38
|
-
vagrant: "#1868f2"
|
|
39
|
-
badge-bg: "#42225b"
|
|
113
|
+
boundary: "#f24c53"
|
|
40
114
|
typography:
|
|
41
|
-
family: {
|
|
42
|
-
display-hero: { size: 82, weight: 600, lineHeight: 1.17, use: "
|
|
43
|
-
heading:
|
|
44
|
-
body:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
115
|
+
family: { ui: "system-ui", display: "HashiCorp Sans" }
|
|
116
|
+
display-hero: { size: 82, weight: 600, lineHeight: 1.17, use: "Loaded HashiCorp Sans H1 on captured public surfaces" }
|
|
117
|
+
heading: { size: 52, weight: 600, lineHeight: 1.19, use: "Loaded HashiCorp Sans H2 on captured public surfaces" }
|
|
118
|
+
body: { size: 16, weight: 400, lineHeight: 1.63, use: "Computed system-ui reading text" }
|
|
119
|
+
button: { size: 16, weight: 500, lineHeight: 1.69, use: "Computed system-ui primary and secondary control label" }
|
|
120
|
+
label: { size: 13, weight: 600, lineHeight: 1.69, tracking: 1.3, use: "Loaded HashiCorp Sans eyebrow observed on Boundary" }
|
|
121
|
+
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48 }
|
|
122
|
+
rounded: { square: 0, sm: 2, nav: 4, control: 5, card: 6 }
|
|
48
123
|
shadow:
|
|
49
|
-
|
|
124
|
+
control: "rgba(101,104,118,0.05) 0px 1px 1px, rgba(101,104,118,0.05) 0px 2px 2px"
|
|
50
125
|
components:
|
|
51
|
-
|
|
52
|
-
button-secondary: { type: button, bg: "#ffffff", fg: "#3b3d45", radius: 4, padding: "8px 12px", use: "Secondary white button" }
|
|
53
|
-
button-terraform: { type: button, bg: "#7b42bc", fg: "#ffffff", radius: 5, use: "Terraform product button" }
|
|
54
|
-
button-waypoint: { type: button, bg: "#14c6cb", fg: "#0d0e12", radius: 5, use: "Waypoint product button" }
|
|
55
|
-
badge: { type: badge, bg: "#42225b", fg: "#efeff1", radius: 5, padding: "3px 7px", font: "16px", use: "Deep purple pill badge" }
|
|
56
|
-
input-dark: { type: input, bg: "#0d0e12", fg: "#efeff1", radius: 5, padding: "11px", use: "Dark-mode text input" }
|
|
57
|
-
card: { type: card, bg: "#ffffff", radius: 8, use: "Light card with micro-shadow elevation" }
|
|
58
|
-
nav-link: { type: tab, fg: "#3b3d45", font: "15px weight 500", use: "Horizontal nav link, system-ui" }
|
|
126
|
+
card: { type: card, bg: "#ffffff", fg: "#3b3d45", radius: 6, use: "Home content card with a 1px rgba(101,104,118,0.2) outline shadow" }
|
|
59
127
|
components_harvested: true
|
|
60
128
|
---
|
|
61
129
|
|
|
@@ -63,349 +131,236 @@ tokens:
|
|
|
63
131
|
|
|
64
132
|
## 1. Visual Theme & Atmosphere
|
|
65
133
|
|
|
66
|
-
HashiCorp
|
|
134
|
+
HashiCorp, now an IBM company, builds infrastructure and security software for multi-cloud and hybrid environments. Its current public expression puts a sober operational interface around that mission: white and near-white information surfaces sit beside deep charcoal sections, with blue as the shared action color and named product routes able to introduce their own accent. The 2024 Infrastructure Cloud brand launch also introduced HashiCorp Sans, a custom display typeface that ties the logotype and headlines together. In the captured public routes, that mix produces a clear division of labor: HashiCorp Sans carries large headings and eyebrow labels; system stacks carry reading text, navigation, controls, and cards.
|
|
67
135
|
|
|
68
|
-
The
|
|
69
|
-
|
|
70
|
-
What distinguishes HashiCorp is its multi-product color system. Each product in the portfolio has its own brand color — Terraform purple (`#7b42bc`), Vault yellow (`#ffcf25`), Waypoint teal (`#14c6cb`), Vagrant blue (`#1868f2`) — and these colors appear throughout as accent tokens via a CSS custom property system (`--mds-color-*`). This creates a design system within a design system: the parent brand is black-and-white with blue accents, while each child product injects its own chromatic identity.
|
|
71
|
-
|
|
72
|
-
The component system uses the `mds` (Markdown Design System) prefix, indicating a systematic, token-driven approach where colors, spacing, and states are all managed through CSS variables. Shadows are remarkably subtle — dual-layer micro-shadows using `rgba(97, 104, 117, 0.05)` that are nearly invisible but provide just enough depth to separate interactive surfaces from the background.
|
|
136
|
+
The raw capture covers three public-facing domains within the company site, not a signed-in application: `/ko` is corporate marketing, `/ko/pricing` is commercial/pricing marketing, and `/ko/products/boundary` is a Boundary product-marketing route. No developer documentation chrome or authenticated product UI was captured, so this reference does not promote those domains into the shared token set. Helios is documented separately by HashiCorp as the public product design system.
|
|
73
137
|
|
|
74
138
|
**Key Characteristics:**
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
- Uppercase letter-spaced captions (13px, weight 600, 1.3px letter-spacing)
|
|
80
|
-
- Micro-shadows: dual-layer at 0.05 opacity — depth through whisper, not shout
|
|
81
|
-
- Token-driven `mds` component system with semantic variable names
|
|
82
|
-
- Tight border radius: 2px–8px, nothing pill-shaped or circular
|
|
83
|
-
- System-ui fallback stack for secondary text
|
|
139
|
+
- White, near-white, deep-charcoal, and near-black surfaces are all observed in the capture
|
|
140
|
+
- Shared actions use `#1060ff`; a Terraform-labelled control and a Boundary-labelled control use their observed route-specific colors
|
|
141
|
+
- Loaded HashiCorp Sans appears in headings and a Boundary eyebrow; system-ui dominates visible UI text
|
|
142
|
+
- Controls use small 4–5px corners; the captured home card uses 6px
|
|
84
143
|
|
|
85
144
|
## 2. Color Palette & Roles
|
|
86
145
|
|
|
87
|
-
###
|
|
88
|
-
- **
|
|
89
|
-
- **
|
|
90
|
-
- **
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
- **
|
|
94
|
-
- **
|
|
95
|
-
- **
|
|
96
|
-
- **
|
|
97
|
-
|
|
98
|
-
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
- **Waypoint Teal** (`#14c6cb`): `--mds-color-waypoint-button-background-focus`
|
|
104
|
-
- **Waypoint Teal Hover** (`#12b6bb`): `--mds-color-waypoint-button-background-hover`
|
|
105
|
-
- **Vagrant Blue** (`#1868f2`): `--mds-color-vagrant-brand`
|
|
106
|
-
- **Purple Accent** (`#911ced`): `--mds-color-palette-purple-300`
|
|
107
|
-
- **Visited Purple** (`#a737ff`): `--mds-color-foreground-action-visited`
|
|
108
|
-
|
|
109
|
-
### Semantic Colors
|
|
110
|
-
- **Action Blue** (`#1060ff`): Primary action links on dark
|
|
111
|
-
- **Link Blue** (`#2264d6`): Primary links on light
|
|
112
|
-
- **Bright Blue** (`#2b89ff`): Active links, hover accent
|
|
113
|
-
- **Amber** (`#bb5a00`): `--mds-color-palette-amber-200`, warning states
|
|
114
|
-
- **Amber Light** (`#fbeabf`): `--mds-color-palette-amber-100`, warning backgrounds
|
|
115
|
-
- **Vault Faint Yellow** (`#fff9cf`): `--mds-color-vault-radar-gradient-faint-stop`
|
|
116
|
-
- **Orange** (`#a9722e`): `--mds-color-unified-core-orange-6`
|
|
117
|
-
- **Red** (`#731e25`): `--mds-color-unified-core-red-7`, error states
|
|
118
|
-
- **Navy** (`#101a59`): `--mds-color-unified-core-blue-7`
|
|
119
|
-
|
|
120
|
-
### Shadows
|
|
121
|
-
- **Micro Shadow** (`rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px`): Default card/button elevation
|
|
122
|
-
- **Focus Outline**: `3px solid var(--mds-color-focus-action-external)` — systematic focus ring
|
|
146
|
+
### Shared live surfaces
|
|
147
|
+
- **Shared primary** (`#1060ff`): blue primary CTA background, with observed border `#0c56e9`
|
|
148
|
+
- **Bright blue** (`#2b89ff`): selected pricing-tab foreground
|
|
149
|
+
- **Canvas** (`#ffffff`): navigation and light card background
|
|
150
|
+
- **Secondary surface** (`#fafafa`): secondary CTA background
|
|
151
|
+
- **Muted surface** (`#f1f2f3`): observed badge and alert background
|
|
152
|
+
- **Deep surfaces** (`#15181e`, `#0d0e12`): dark toggle and dark pricing-card/input backgrounds
|
|
153
|
+
- **Light foreground** (`#3b3d45`): secondary CTA, navigation, and light-card text
|
|
154
|
+
- **Dark-surface foreground** (`#d5d7db`, `#efeff1`): dark-route text and dark input text
|
|
155
|
+
- **Muted text** (`#656a76`) and **hairline** (`#b2b6bd`): observed supporting text and borders
|
|
156
|
+
|
|
157
|
+
### Route-specific live variants
|
|
158
|
+
- **Terraform** (`#7b42bc`): one `color-terraform` CTA observed on `/ko/pricing`
|
|
159
|
+
- **Boundary** (`#f24c53`): one `color-boundary` CTA observed on `/ko/products/boundary`
|
|
160
|
+
|
|
161
|
+
No other product-color variant is included: it was not present in the supplied capture.
|
|
123
162
|
|
|
124
163
|
## 3. Typography Rules
|
|
125
164
|
|
|
126
|
-
###
|
|
127
|
-
|
|
128
|
-
- **
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
|
137
|
-
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
| Body | system-ui | 16px
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
| Caption | system-ui | 13px (0.81rem) | 400–500 | 1.23–1.69 | normal | Metadata, footer links |
|
|
146
|
-
| Uppercase Label | HashiCorp Sans | 13px (0.81rem) | 600 | 1.69 (relaxed) | 1.3px | `text-transform: uppercase` |
|
|
147
|
-
|
|
148
|
-
### Principles
|
|
149
|
-
- **Brand/System split**: HashiCorp Sans for headings and brand-critical text; system-ui for body, navigation, and functional text. The brand font carries the weight, system-ui carries the words.
|
|
150
|
-
- **Kern always on**: All HashiCorp Sans text enables OpenType `"kern"` — letterfitting is non-negotiable.
|
|
151
|
-
- **Tight headings**: Every heading uses 1.17–1.21 line-height, creating dense, stacked text blocks that feel infrastructural — solid, load-bearing.
|
|
152
|
-
- **Relaxed body**: Body text uses 1.50–1.69 line-height (notably generous), creating comfortable reading rhythm beneath the dense headings.
|
|
153
|
-
- **Uppercase labels as wayfinding**: 13px uppercase with 1.3px letter-spacing serves as the systematic category/section marker — always HashiCorp Sans weight 600.
|
|
165
|
+
### Evidence classes
|
|
166
|
+
|
|
167
|
+
- **Official brand/product use:** HashiCorp’s 2024 font announcement describes HashiCorp Sans as a display typeface used across corporate and product logos and headlines. Its brand typography guidance directs HashiCorp Sans to headlines, sub-headlines, and titles; it separately names Metro Sans Book for brand-material body copy. That guidance is not evidence that Metro Sans is loaded on the captured Korean marketing routes.
|
|
168
|
+
- **Live computed and loaded:** the capture records `__hashicorpSans_96f0ca` on 21 visible heading/eyebrow nodes and a site-hosted WOFF2 source (`d29050812a1756cf-s.p.woff2`). The family is therefore represented as **HashiCorp Sans** for display use, not as the UI family.
|
|
169
|
+
- **Live system use:** `system-ui` is the computed high-confidence family on 713 visible body, button, card, tab, and badge nodes. Arial appears only on the captured embedded marketing form controls.
|
|
170
|
+
- **Declared-only assets:** `__dejavuSansMono_7cac6c` and `dejavu-sans-mono-web` have declared sources but no visible usage in this capture; they are not a UI or code token.
|
|
171
|
+
- **License boundary:** the official typography guidance directs access requests to the Brand Studio, while the site terms say no license to proprietary interests is implied. Neither source grants reusable webfont distribution or substitution rights; do not treat the captured WOFF2 source as such permission.
|
|
172
|
+
|
|
173
|
+
### Observed hierarchy
|
|
174
|
+
|
|
175
|
+
| Role | Family / evidence | Size | Weight | Line height | Captured use |
|
|
176
|
+
|------|-------------------|------|--------|-------------|--------------|
|
|
177
|
+
| Display hero | HashiCorp Sans, loaded | 82px | 600 | 96px | H1 |
|
|
178
|
+
| Heading | HashiCorp Sans, loaded | 52px | 600 | 62px | H2 |
|
|
179
|
+
| Heading variant | HashiCorp Sans, loaded | 42px | 700 | 50px | H2 |
|
|
180
|
+
| Eyebrow | HashiCorp Sans, loaded | 13px | 600 | 22px | Boundary label, 1.3px tracking |
|
|
181
|
+
| Body / card | system-ui | 16px | 400 | 26px | visible reading and card text |
|
|
182
|
+
| Controls | system-ui | 16px | 500 | 26–27px | shared CTAs and tabs |
|
|
183
|
+
| Navigation | system-ui | 15.008px | 500 | 24.013px | top navigation trigger |
|
|
154
184
|
|
|
155
185
|
## 4. Component Stylings
|
|
156
186
|
|
|
187
|
+
All values below are raw computed values from the supplied 2026-07-13 capture. Selector and route provenance are retained in `.verification.md`. The capture reports zero interaction events, so hover, focus, pressed, modal, menu, and error variants are intentionally omitted.
|
|
188
|
+
|
|
157
189
|
### Buttons
|
|
158
190
|
|
|
159
|
-
**Primary
|
|
160
|
-
- Background: `#
|
|
161
|
-
- Text: `#
|
|
162
|
-
-
|
|
163
|
-
- Radius: 5px
|
|
164
|
-
-
|
|
191
|
+
**Shared Primary CTA**
|
|
192
|
+
- Background: `#1060ff`
|
|
193
|
+
- Text: `#ffffff`
|
|
194
|
+
- Border: `1px solid #0c56e9`
|
|
195
|
+
- Radius: `5px`
|
|
196
|
+
- Padding: `9px 15px`
|
|
197
|
+
- Shadow: `rgba(101, 106, 118, 0.05) 0px 1px 1px, rgba(101, 106, 118, 0.05) 0px 2px 2px`
|
|
198
|
+
- Font: `16px / 500 / system-ui`
|
|
199
|
+
- Use: `.button__gOWvd.color-primary__rWbwp` on home, pricing, and Boundary routes
|
|
200
|
+
- Disabled: one icon-only primary instance used `#fafafa` background, `#8c909c` text, and `rgba(101, 106, 118, 0.2)` border
|
|
201
|
+
|
|
202
|
+
**Shared Secondary CTA — medium**
|
|
203
|
+
- Background: `#fafafa`
|
|
204
|
+
- Text: `#3b3d45`
|
|
205
|
+
- Border: `1px solid rgba(59, 61, 69, 0.4)`
|
|
206
|
+
- Radius: `5px`
|
|
207
|
+
- Padding: `9px 15px`
|
|
208
|
+
- Shadow: `rgba(101, 106, 118, 0.05) 0px 1px 1px, rgba(101, 106, 118, 0.05) 0px 2px 2px`
|
|
209
|
+
- Font: `16px / 500 / system-ui`
|
|
210
|
+
- Use: `.button__gOWvd.size-medium__HxMcm.color-secondary-white__AseI0` on all three routes
|
|
211
|
+
|
|
212
|
+
**Shared Secondary CTA — large**
|
|
213
|
+
- Background: `#fafafa`
|
|
214
|
+
- Text: `#3b3d45`
|
|
215
|
+
- Border: `1px solid rgba(59, 61, 69, 0.4)`
|
|
216
|
+
- Radius: `5px`
|
|
217
|
+
- Padding: `11px 19px`
|
|
218
|
+
- Shadow: `rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px`
|
|
219
|
+
- Font: `16px / 500 / system-ui`
|
|
220
|
+
- Use: `.button__gOWvd.size-large__MEpK3.color-secondary-high-contrast__3bxg3` on all three routes
|
|
221
|
+
|
|
222
|
+
**Terraform-labelled CTA**
|
|
223
|
+
- Background: `#7b42bc`
|
|
224
|
+
- Text: `#ffffff`
|
|
225
|
+
- Border: `1px solid rgba(178, 182, 189, 0.2)`
|
|
226
|
+
- Radius: `5px`
|
|
227
|
+
- Padding: `9px 15px`
|
|
165
228
|
- Shadow: `rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px`
|
|
166
|
-
-
|
|
167
|
-
-
|
|
229
|
+
- Font: `16px / 500 / system-ui`
|
|
230
|
+
- Use: `.button__gOWvd.color-terraform__DQMD5` on pricing; only this Terraform-labelled variant was captured
|
|
231
|
+
|
|
232
|
+
**Boundary-labelled CTA**
|
|
233
|
+
- Background: `#f24c53`
|
|
234
|
+
- Text: `#0c0c0e`
|
|
235
|
+
- Border: `1px solid rgba(178, 182, 189, 0.2)`
|
|
236
|
+
- Radius: `5px`
|
|
237
|
+
- Padding: `11px 19px`
|
|
238
|
+
- Shadow: `rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px`
|
|
239
|
+
- Font: `16px / 500 / system-ui`
|
|
240
|
+
- Use: `.button__gOWvd.color-boundary__xJtzy` on the Boundary route; only this Boundary-labelled variant was captured
|
|
241
|
+
|
|
242
|
+
### Navigation and tabs
|
|
168
243
|
|
|
169
|
-
**
|
|
244
|
+
**Top navigation trigger**
|
|
170
245
|
- Background: `#ffffff`
|
|
171
246
|
- Text: `#3b3d45`
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
- Radius: 5px
|
|
189
|
-
- Border: `1px solid rgb(180, 87, 255)`
|
|
190
|
-
- Font: 16px
|
|
247
|
+
- Radius: `4px`
|
|
248
|
+
- Padding: `8px 12px`
|
|
249
|
+
- Font: `15.008px / 500 / system-ui`
|
|
250
|
+
- Use: `.style_navItemTrigger__65Jsv` on all three routes
|
|
251
|
+
|
|
252
|
+
**Pricing tab — selected**
|
|
253
|
+
- Text: `#2b89ff`
|
|
254
|
+
- Radius: `5px`
|
|
255
|
+
- Font: `16px / 500 / system-ui`
|
|
256
|
+
- Use: `.tab-button__qI9wt` with `aria-selected="true"` on pricing
|
|
257
|
+
|
|
258
|
+
**Pricing tab — unselected**
|
|
259
|
+
- Text: `#d5d7db`
|
|
260
|
+
- Radius: `5px`
|
|
261
|
+
- Font: `16px / 500 / system-ui`
|
|
262
|
+
- Use: `.tab-button__qI9wt` with `aria-selected="false"` on pricing
|
|
191
263
|
|
|
192
|
-
###
|
|
264
|
+
### Form control
|
|
193
265
|
|
|
194
|
-
**
|
|
266
|
+
**Dark email field**
|
|
195
267
|
- Background: `#0d0e12`
|
|
196
268
|
- Text: `#efeff1`
|
|
197
|
-
- Border: `1px solid
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
-
|
|
269
|
+
- Border: `1px solid #616875`
|
|
270
|
+
- Radius: `5px`
|
|
271
|
+
- Padding: `11px`
|
|
272
|
+
- Shadow: `rgba(97, 104, 117, 0.1) 0px 1px 2px 1px inset`
|
|
273
|
+
- Font: `16px / 400 / Arial`
|
|
274
|
+
- Use: `.mktoField.mktoEmailField.mktoRequired` in the shared marketing form on all three routes
|
|
201
275
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
-
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
|
|
221
|
-
### Navigation
|
|
222
|
-
- Clean horizontal nav with mega-menu dropdowns
|
|
223
|
-
- HashiCorp logo left-aligned
|
|
224
|
-
- system-ui 15px weight 500 for links
|
|
225
|
-
- Product categories organized by lifecycle management group
|
|
226
|
-
- "Get started" and "Contact us" CTAs in header
|
|
227
|
-
- Dark mode variant for hero sections
|
|
276
|
+
### Cards and badge
|
|
277
|
+
|
|
278
|
+
**Light content card**
|
|
279
|
+
- Background: `#ffffff`
|
|
280
|
+
- Text: `#3b3d45`
|
|
281
|
+
- Radius: `6px`
|
|
282
|
+
- Shadow: `rgba(101, 106, 118, 0.2) 0px 0px 0px 1px`
|
|
283
|
+
- Font: `16px / 400 / system-ui`
|
|
284
|
+
- Use: `.card__HomZw` on home
|
|
285
|
+
|
|
286
|
+
**Neutral filled badge**
|
|
287
|
+
- Background: `#f1f2f3`
|
|
288
|
+
- Text: `#3b3d45`
|
|
289
|
+
- Border: `1px solid transparent`
|
|
290
|
+
- Radius: `5px`
|
|
291
|
+
- Padding: `3px 7px`
|
|
292
|
+
- Font: `16px / 400 / system-ui`
|
|
293
|
+
- Use: `.badge__zns82.type-filled__ZaWsu.color-neutral__6Csf4` on home
|
|
228
294
|
|
|
229
295
|
## 5. Layout Principles
|
|
230
296
|
|
|
231
|
-
|
|
232
|
-
- Base unit: 8px
|
|
233
|
-
- Scale: 2px, 3px, 4px, 6px, 7px, 8px, 9px, 11px, 12px, 16px, 20px, 24px, 32px, 40px, 48px
|
|
234
|
-
|
|
235
|
-
### Grid & Container
|
|
236
|
-
- Max content width: ~1150px (xl breakpoint)
|
|
237
|
-
- Full-width dark hero sections with contained content
|
|
238
|
-
- Card grids: 2–3 column layouts
|
|
239
|
-
- Generous horizontal padding at desktop scale
|
|
240
|
-
|
|
241
|
-
### Breakpoints
|
|
242
|
-
| Name | Width | Key Changes |
|
|
243
|
-
|------|-------|-------------|
|
|
244
|
-
| Mobile Small | <375px | Tight single column |
|
|
245
|
-
| Mobile | 375–480px | Standard mobile |
|
|
246
|
-
| Small Tablet | 480–600px | Minor adjustments |
|
|
247
|
-
| Tablet | 600–768px | 2-column grids begin |
|
|
248
|
-
| Small Desktop | 768–992px | Full nav visible |
|
|
249
|
-
| Desktop | 992–1120px | Standard layout |
|
|
250
|
-
| Large Desktop | 1120–1440px | Max-width content |
|
|
251
|
-
| Ultra-wide | >1440px | Centered, generous margins |
|
|
252
|
-
|
|
253
|
-
### Whitespace Philosophy
|
|
254
|
-
- **Enterprise breathing room**: Generous vertical spacing between sections (48px–80px+) communicates stability and seriousness.
|
|
255
|
-
- **Dense headings, spacious body**: Tight line-height headings sit above relaxed body text, creating visual "weight at the top" of each section.
|
|
256
|
-
- **Dark as canvas**: Dark hero sections use extra vertical padding to let 3D illustrations and gradients breathe.
|
|
257
|
-
|
|
258
|
-
### Border Radius Scale
|
|
259
|
-
- Minimal (2px): Links, small inline elements
|
|
260
|
-
- Subtle (3px): Checkboxes, small inputs
|
|
261
|
-
- Standard (4px): Secondary buttons
|
|
262
|
-
- Comfortable (5px): Primary buttons, badges, inputs
|
|
263
|
-
- Card (8px): Cards, containers, images
|
|
297
|
+
The capture records a recurring 4/8/12/16/24/32/48px spacing rhythm. Its high-frequency visible corners are 0px, 4px, 5px, and 6px; the only captured 8px radius is not promoted as the card standard. No responsive breakpoint, container-width, or grid behavior was measured in this packet.
|
|
264
298
|
|
|
265
299
|
## 6. Depth & Elevation
|
|
266
300
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
| Whisper (Level 1) | `rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px` | Cards, buttons, interactive surfaces |
|
|
271
|
-
| Focus (Level 2) | `3px solid var(--mds-color-focus-action-external)` outline | Focus rings — color-matched to context |
|
|
272
|
-
|
|
273
|
-
**Shadow Philosophy**: HashiCorp uses arguably the subtlest shadow system in modern web design. The dual-layer shadows at 5% opacity are nearly invisible — they exist not to create visual depth but to signal interactivity. If you can see the shadow, it's too strong. This restraint communicates the enterprise value of stability — nothing floats, nothing is uncertain.
|
|
301
|
+
- **Control shadow:** the primary, secondary, Terraform, and Boundary CTAs use a two-layer 5% shadow, with the exact values recorded in §4.
|
|
302
|
+
- **Light-card outline:** home cards use `rgba(101, 106, 118, 0.2) 0px 0px 0px 1px`.
|
|
303
|
+
- **Dark-input inset:** the captured email field uses `rgba(97, 104, 117, 0.1) 0px 1px 2px 1px inset`.
|
|
274
304
|
|
|
275
305
|
## 7. Do's and Don'ts
|
|
276
306
|
|
|
277
307
|
### Do
|
|
278
|
-
- Use HashiCorp Sans
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
- Apply uppercase labels at 13px weight 600 with 1.3px letter-spacing for section markers
|
|
282
|
-
- Keep shadows at the "whisper" level (0.05 opacity dual-layer)
|
|
283
|
-
- Use the `--mds-color-*` token system for consistent color application
|
|
284
|
-
- Maintain the tight-heading / relaxed-body rhythm (1.17–1.21 vs 1.50–1.69 line-heights)
|
|
285
|
-
- Use `3px solid` focus outlines for accessibility
|
|
308
|
+
- Use HashiCorp Sans only where the official brand describes display/logo/headline use and where it can actually be loaded.
|
|
309
|
+
- Use system-ui for the captured body and control treatments.
|
|
310
|
+
- Keep shared primary, Terraform, and Boundary CTA treatments attached to the route/context in which they were observed.
|
|
286
311
|
|
|
287
312
|
### Don't
|
|
288
|
-
- Don't
|
|
289
|
-
- Don't
|
|
290
|
-
- Don't
|
|
291
|
-
- Don't skip the `"kern"` feature on headings — the font requires it
|
|
292
|
-
- Don't use HashiCorp Sans for small body text — it's designed for 17px+ heading use
|
|
293
|
-
- Don't mix product colors in the same component — each product has one color
|
|
294
|
-
- Don't use pure black (`#000000`) for dark backgrounds — use `#15181e` or `#0d0e12`
|
|
295
|
-
- Don't forget the asymmetric button padding — 9px 9px 9px 15px is intentional
|
|
313
|
+
- Don't substitute a system font while labelling it HashiCorp Sans.
|
|
314
|
+
- Don't infer unobserved product colors, hover states, focus rings, or component variants from class names or adjacent routes.
|
|
315
|
+
- Don't treat declared DejaVu Sans Mono assets as a live code-font token.
|
|
296
316
|
|
|
297
317
|
## 8. Responsive Behavior
|
|
298
318
|
|
|
299
|
-
|
|
300
|
-
| Name | Width | Key Changes |
|
|
301
|
-
|------|-------|-------------|
|
|
302
|
-
| Mobile | <768px | Single column, hamburger nav, stacked CTAs |
|
|
303
|
-
| Tablet | 768–992px | 2-column grids, nav begins expanding |
|
|
304
|
-
| Desktop | 992–1150px | Full layout, mega-menu nav |
|
|
305
|
-
| Large | >1150px | Max-width centered, generous margins |
|
|
306
|
-
|
|
307
|
-
### Collapsing Strategy
|
|
308
|
-
- Hero: 82px → 52px → 42px heading sizes
|
|
309
|
-
- Navigation: mega-menu → hamburger
|
|
310
|
-
- Product cards: 3-column → 2-column → stacked
|
|
311
|
-
- Dark sections maintain full-width but compress padding
|
|
312
|
-
- Buttons: inline → full-width stacked on mobile
|
|
319
|
+
No responsive observations were collected in this packet. Do not infer breakpoint values or mobile transformations from the desktop-route evidence.
|
|
313
320
|
|
|
314
321
|
## 9. Agent Prompt Guide
|
|
315
322
|
|
|
316
|
-
|
|
317
|
-
- Light bg: `#ffffff`, `#f1f2f3`
|
|
318
|
-
- Dark bg: `#15181e`, `#0d0e12`
|
|
319
|
-
- Text light: `#000000`, `#3b3d45`
|
|
320
|
-
- Text dark: `#efeff1`, `#d5d7db`
|
|
321
|
-
- Links: `#2264d6` (light), `#1060ff` (dark), `#2b89ff` (active)
|
|
322
|
-
- Helper text: `#656a76`
|
|
323
|
-
- Borders: `rgba(178, 182, 189, 0.4)`, `rgb(97, 104, 117)`
|
|
324
|
-
- Focus: `3px solid` product-appropriate color
|
|
325
|
-
|
|
326
|
-
### Example Component Prompts
|
|
327
|
-
- "Create a hero on dark background (#15181e). Headline at 82px HashiCorp Sans weight 600, line-height 1.17, kern enabled, white text. Sub-text at 20px system-ui weight 400, line-height 1.50, #d5d7db text. Two buttons: primary dark (#15181e, 5px radius, 9px 15px padding) and secondary white (#ffffff, 4px radius, 8px 12px padding)."
|
|
328
|
-
- "Design a product card: white background, 8px radius, dual-layer shadow at rgba(97,104,117,0.05). Title at 26px HashiCorp Sans weight 700, body at 16px system-ui weight 400 line-height 1.63."
|
|
329
|
-
- "Build an uppercase section label: 13px HashiCorp Sans weight 600, line-height 1.69, letter-spacing 1.3px, text-transform uppercase, #656a76 color."
|
|
330
|
-
- "Create a product-specific CTA button: Terraform → #7b42bc background, Vault → #ffcf25 with dark text, Waypoint → #14c6cb. All: 5px radius, 500 weight text, 16px system-ui."
|
|
331
|
-
- "Design a dark form: #0d0e12 input background, #efeff1 text, 1px solid rgb(97,104,117) border, 5px radius, 11px padding. Focus: 3px solid accent-color outline."
|
|
332
|
-
|
|
333
|
-
### Iteration Guide
|
|
334
|
-
1. Always start with the mode decision: light (white) for informational, dark (#15181e) for hero/product
|
|
335
|
-
2. HashiCorp Sans for headings only (17px+), system-ui for everything else
|
|
336
|
-
3. Shadows are at whisper level (0.05 opacity) — if visible, reduce
|
|
337
|
-
4. Product colors are sacred — each product owns exactly one color
|
|
338
|
-
5. Focus rings are always 3px solid, color-matched to product context
|
|
339
|
-
6. Uppercase labels are the systematic wayfinding pattern — 13px, 600, 1.3px tracking
|
|
323
|
+
Use the captured public-marketing pattern only: `#1060ff` shared primary CTA or `#fafafa` secondary CTA, 5px corners, 16px/500 system-ui labels, and the recorded low-opacity control shadow. Use the Terraform `#7b42bc` or Boundary `#f24c53` CTA only for those specifically observed route contexts. Treat all other product colors and states as unresolved.
|
|
340
324
|
|
|
341
325
|
## 10. Voice & Tone
|
|
342
326
|
|
|
343
|
-
HashiCorp
|
|
344
|
-
|
|
345
|
-
| Context | Tone |
|
|
346
|
-
|---|---|
|
|
347
|
-
| CTA | Verb. "Try Terraform", "Get started", "Sign up" |
|
|
348
|
-
| Marketing | Product-specific. Terraform copy ≠ Vault copy ≠ Consul copy |
|
|
349
|
-
| Documentation | HCL/CLI heavy, deep code examples |
|
|
350
|
-
| Error (apply) | Plan diff + specific resource error |
|
|
327
|
+
HashiCorp describes its work in operational, outcome-oriented terms: automate and secure multi-cloud and hybrid environments; focus on workflows rather than technologies; and keep source code freely available at the core of its offerings. The public marketing routes use short imperative actions.
|
|
351
328
|
|
|
352
329
|
**Voice samples**
|
|
353
|
-
-
|
|
354
|
-
|
|
355
|
-
|
|
330
|
+
- “Get started” — shared marketing CTA, captured on `/ko`
|
|
331
|
+
- “Contact us” — shared marketing CTA, captured on `/ko`
|
|
332
|
+
- “The Infrastructure Cloud” — official company positioning
|
|
356
333
|
|
|
357
334
|
## 11. Brand Narrative
|
|
358
335
|
|
|
359
|
-
|
|
336
|
+
Mitchell Hashimoto and Armon Dadgar met at the University of Washington in 2008 while working on a research project to make public-cloud technologies available to scientists. Hashimoto started HashiCorp in November 2012 and Dadgar joined as co-founder in 2013. Their early view was that organizations using multiple clouds would need a consistent, reliable set of automation tools for combinations of cloud and on-premises environments.
|
|
337
|
+
|
|
338
|
+
The present company describes itself as an IBM company that helps organizations automate and secure multi-cloud and hybrid environments through The Infrastructure Cloud. In April 2024 it introduced that brand chapter and HashiCorp Sans; in February 2025 it officially joined IBM. These facts describe the corporate/brand domain and should not be read as a claim about the captured public UI’s runtime tokens.
|
|
360
339
|
|
|
361
340
|
## 12. Principles
|
|
362
341
|
|
|
363
|
-
1. **
|
|
364
|
-
2. **Multi-cloud
|
|
365
|
-
3. **
|
|
366
|
-
4. **
|
|
367
|
-
5. **Uppercase labels for wayfinding.** *UI implication:* tab labels and section dividers can use uppercase 13px / 600 / 1.3px tracking — systematic, never decorative.
|
|
342
|
+
1. **Workflows, not technologies.** The company frames its offering around real-world operator workflows. *UI implication:* lead with the task or outcome before product mechanics.
|
|
343
|
+
2. **Multi-cloud and hybrid operations.** The public mission is to automate and secure these environments. *UI implication:* avoid implying that a single provider is the default context.
|
|
344
|
+
3. **Open source at the core.** HashiCorp describes source-available projects and a practitioner community as foundational. *UI implication:* make technical learning and implementation paths legible alongside commercial paths.
|
|
345
|
+
4. **Pragmatic beauty.** The font announcement links “beauty works better” with pragmatism. *UI implication:* use distinctive display typography deliberately while keeping functional UI plain and readable.
|
|
368
346
|
|
|
369
347
|
## 13. Personas
|
|
370
348
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
**Sergey Volkov, 38, Berlin.** Senior platform engineer. Manages Terraform state for 120+ AWS accounts. Vault for production secrets.
|
|
374
|
-
|
|
375
|
-
**Priya Krishnan, 31, Bengaluru.** SRE at fintech. Consul service mesh + Nomad orchestration replacing K8s for specific workloads.
|
|
376
|
-
|
|
377
|
-
**Marcus Davies, 45, London.** Security architect. Vault is the entire reason their compliance audit passed.
|
|
349
|
+
The official company material identifies technical and business teams, IT operators, practitioners, users, customers, and partners as stakeholders. This reference does not invent named or demographic personas; use those verified stakeholder groups as the starting point for task research.
|
|
378
350
|
|
|
379
351
|
## 14. States
|
|
380
352
|
|
|
381
|
-
|
|
382
|
-
|---|---|
|
|
383
|
-
| **Empty (no resources)** | "Define resources in your `.tf` file" + sample HCL block |
|
|
384
|
-
| **Empty (no secrets)** | "Add your first secret" CTA + CLI command |
|
|
385
|
-
| **Loading (terraform apply)** | Plan diff visible + apply progress per resource |
|
|
386
|
-
| **Loading (state)** | Per-resource spinner |
|
|
387
|
-
| **Error (plan)** | HCL line:column + specific resource + recommended fix |
|
|
388
|
-
| **Error (apply)** | Resource-level rollback option |
|
|
389
|
-
| **Success (apply)** | Resource list + state-locked indicator clear |
|
|
390
|
-
| **Success (rotate)** | Vault rotation timestamp + next-rotation due date |
|
|
391
|
-
| **Skeleton (resource list)** | Dark cards with charcoal borders |
|
|
392
|
-
| **Disabled (locked state)** | Lock icon + "State locked by user@team" |
|
|
393
|
-
| **Loading (long apply)** | Real-time per-resource progress |
|
|
353
|
+
The supplied capture records one disabled icon-only primary button and selected/unselected pricing tabs. It records no interaction events, loading, error, success, empty, skeleton, dialog, or toast state transitions, so those treatments are intentionally unresolved.
|
|
394
354
|
|
|
395
355
|
## 15. Motion & Easing
|
|
396
356
|
|
|
397
|
-
|
|
398
|
-
|---|---|---|
|
|
399
|
-
| `motion-instant` | 0ms | Toggle |
|
|
400
|
-
| `motion-fast` | 150ms | Hover |
|
|
401
|
-
| `motion-standard` | 250ms | Modal, panel |
|
|
402
|
-
|
|
403
|
-
Standard cubic-bezier; no bounce. **Focus rings** never animate — appear instant for accessibility. `prefers-reduced-motion: reduce` removes panel slide-ins.
|
|
357
|
+
No motion duration, easing value, or reduced-motion behavior was measured in this packet. Keep motion tokens unresolved.
|
|
404
358
|
|
|
405
359
|
---
|
|
406
360
|
|
|
407
|
-
**Verified:** 2026-
|
|
408
|
-
**Tier 1 sources:** hashicorp.com/
|
|
409
|
-
**Tier 2 sources:** styles.refero.design
|
|
410
|
-
**
|
|
411
|
-
|
|
361
|
+
**Verified:** 2026-07-13
|
|
362
|
+
**Tier 1 sources:** supplied live capture of `https://www.hashicorp.com/ko`, `https://www.hashicorp.com/ko/pricing`, and `https://www.hashicorp.com/ko/products/boundary`; [Helios](https://helios.hashicorp.design/); [HashiCorp Sans announcement](https://www.hashicorp.com/en/blog/introducing-hashicorp-sans); [official typography guideline](https://www.hashicorp.com/en/brand/hcp-product-typography); [official terms of service](https://www.hashicorp.com/terms-of-service); [About](https://www.hashicorp.com/en/about); [Origin story](https://www.hashicorp.com/en/about/origin-story); [IBM-family announcement](https://www.hashicorp.com/en/blog/hashicorp-officially-joins-the-ibm-family).
|
|
363
|
+
**Tier 2 sources:** [getdesign.md/hashicorp](https://getdesign.md/hashicorp) directory metadata only; [Refero’s HashiCorp style](https://styles.refero.design/style/834ce97f-61f2-4b12-bf5c-e9fad2544456) cross-check. Its 4px-control and 8px-card claims conflict with the supplied raw capture, so the Tier 1 values remain canonical.
|
|
364
|
+
**Conflicts unresolved:** none
|
|
365
|
+
|
|
366
|
+
Refero’s differing radii and active-blue account are documented in `.verification.md` and resolved to the supplied computed evidence; unobserved prior claims for Vault, Waypoint, Vagrant, focus/hover behavior, responsive behavior, and motion remain omitted.
|