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,316 +4,318 @@ name: Miro
|
|
|
4
4
|
country: US
|
|
5
5
|
category: design-tools
|
|
6
6
|
homepage: "https://miro.com"
|
|
7
|
-
primary_color: "#
|
|
7
|
+
primary_color: "#fde050"
|
|
8
8
|
logo:
|
|
9
9
|
type: simpleicons
|
|
10
10
|
slug: miro
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
13
|
ds:
|
|
14
14
|
name: Mirotone
|
|
15
|
-
url: "https://mirotone.xyz"
|
|
15
|
+
url: "https://www.mirotone.xyz"
|
|
16
16
|
type: system
|
|
17
|
-
description: Miro's CSS component library for
|
|
17
|
+
description: Miro's base CSS component library for applications on the Miro platform.
|
|
18
18
|
og_image: "https://www.mirotone.xyz/cover.png"
|
|
19
|
+
verification_v2:
|
|
20
|
+
schema: 2
|
|
21
|
+
checked: "2026-07-13"
|
|
22
|
+
surfaces:
|
|
23
|
+
- { id: home, kind: public-marketing, url: "https://miro.com/ko/", inspected: "2026-07-13" }
|
|
24
|
+
- { id: pricing-desktop, kind: public-pricing, url: "https://miro.com/ko/pricing/", inspected: "2026-07-13" }
|
|
25
|
+
- { id: pricing-repeat, kind: public-pricing-repeat, url: "https://miro.com/ko/pricing/", inspected: "2026-07-13" }
|
|
26
|
+
sources:
|
|
27
|
+
- { id: home-live, kind: product-surface, url: "https://miro.com/ko/", captured: "2026-07-13" }
|
|
28
|
+
- { id: pricing-live, kind: product-surface, url: "https://miro.com/ko/pricing/", captured: "2026-07-13" }
|
|
29
|
+
- { id: miro-about, kind: official-doc, url: "https://miro.com/about/", captured: "2026-07-13" }
|
|
30
|
+
- { id: miro-aura, kind: brand-asset, url: "https://miro.com/aura/", captured: "2026-07-13" }
|
|
31
|
+
- { id: miro-identity, kind: brand-asset, url: "https://miro.com/blog/miro-vis/", captured: "2026-07-13" }
|
|
32
|
+
- { id: mirotone-docs, kind: official-doc, url: "https://developers.miro.com/docs/design-guidelines", captured: "2026-07-13" }
|
|
33
|
+
- { id: roobert-foundry, kind: brand-asset, url: "https://displaay.net/typeface/roobert", captured: "2026-07-13" }
|
|
34
|
+
- { id: roobert-license, kind: license, url: "https://displaay.net/help/licenses", captured: "2026-07-13" }
|
|
35
|
+
conflicts: []
|
|
36
|
+
claims:
|
|
37
|
+
"tokens.colors.brand-yellow": &home_live { surface_id: home, source_id: home-live, method: computed-style, captured: "2026-07-13" }
|
|
38
|
+
"tokens.colors.action-blue": &pricing_live { surface_id: pricing-desktop, source_id: pricing-live, method: computed-style, captured: "2026-07-13" }
|
|
39
|
+
"tokens.colors.action-blue-border": *pricing_live
|
|
40
|
+
"tokens.colors.ink": *home_live
|
|
41
|
+
"tokens.colors.canvas": *pricing_live
|
|
42
|
+
"tokens.colors.border-input": *home_live
|
|
43
|
+
"tokens.colors.border-control": *pricing_live
|
|
44
|
+
"tokens.colors.border-subtle": *pricing_live
|
|
45
|
+
"tokens.colors.muted": *pricing_live
|
|
46
|
+
"tokens.typography.family.ui": &font_live { surface_id: home, source_id: home-live, method: computed-style-fontfaceset-and-source-url, captured: "2026-07-13" }
|
|
47
|
+
"tokens.typography.family.display": *font_live
|
|
48
|
+
"tokens.typography.display-hero.size": *font_live
|
|
49
|
+
"tokens.typography.display-hero.weight": *font_live
|
|
50
|
+
"tokens.typography.display-hero.lineHeight": *font_live
|
|
51
|
+
"tokens.typography.display-hero.tracking": *font_live
|
|
52
|
+
"tokens.typography.display-hero.use": *font_live
|
|
53
|
+
"tokens.typography.display-section.size": *font_live
|
|
54
|
+
"tokens.typography.display-section.weight": *font_live
|
|
55
|
+
"tokens.typography.display-section.lineHeight": *font_live
|
|
56
|
+
"tokens.typography.display-section.tracking": *font_live
|
|
57
|
+
"tokens.typography.display-section.use": *font_live
|
|
58
|
+
"tokens.typography.body.size": *pricing_live
|
|
59
|
+
"tokens.typography.body.weight": *pricing_live
|
|
60
|
+
"tokens.typography.body.lineHeight": *pricing_live
|
|
61
|
+
"tokens.typography.body.use": *pricing_live
|
|
62
|
+
"tokens.typography.action.size": *pricing_live
|
|
63
|
+
"tokens.typography.action.weight": *pricing_live
|
|
64
|
+
"tokens.typography.action.lineHeight": *pricing_live
|
|
65
|
+
"tokens.typography.action.use": *pricing_live
|
|
66
|
+
"tokens.spacing.xs": *home_live
|
|
67
|
+
"tokens.spacing.sm": *home_live
|
|
68
|
+
"tokens.spacing.md": *home_live
|
|
69
|
+
"tokens.spacing.lg": *home_live
|
|
70
|
+
"tokens.spacing.xl": *home_live
|
|
71
|
+
"tokens.spacing.xxl": *home_live
|
|
72
|
+
"tokens.rounded.control": *pricing_live
|
|
73
|
+
"tokens.rounded.segmented": *pricing_live
|
|
74
|
+
"tokens.components.pricing-period-toggle.type": &toggle { surface_id: pricing-desktop, source_id: pricing-live, method: computed-style-and-observed-state, captured: "2026-07-13" }
|
|
75
|
+
"tokens.components.pricing-period-toggle.radius": *toggle
|
|
76
|
+
"tokens.components.pricing-period-toggle.height": *toggle
|
|
77
|
+
"tokens.components.pricing-period-toggle.padding": *toggle
|
|
78
|
+
"tokens.components.pricing-period-toggle.states": *toggle
|
|
79
|
+
"tokens.components.pricing-period-toggle.use": *toggle
|
|
19
80
|
tokens:
|
|
20
|
-
source:
|
|
21
|
-
extracted: "2026-
|
|
81
|
+
source: reconciled
|
|
82
|
+
extracted: "2026-07-13"
|
|
83
|
+
note: "Machine tokens are limited to supplied public marketing/pricing capture. Mirotone, Aura, and documentation establish context only; they do not supply unobserved live variants."
|
|
84
|
+
components_harvested: true
|
|
22
85
|
colors:
|
|
23
|
-
brand-yellow: "#
|
|
86
|
+
brand-yellow: "#fde050"
|
|
87
|
+
action-blue: "#3859ff"
|
|
88
|
+
action-blue-border: "#7a90fe"
|
|
24
89
|
ink: "#1c1c1e"
|
|
25
90
|
canvas: "#ffffff"
|
|
26
|
-
blue: "#5b76fe"
|
|
27
|
-
blue-pressed: "#2a41b6"
|
|
28
|
-
coral: "#ffc6c6"
|
|
29
|
-
teal: "#c3faf5"
|
|
30
|
-
teal-dark: "#187574"
|
|
31
|
-
orange: "#ffe6cd"
|
|
32
|
-
rose: "#ffd8f4"
|
|
33
|
-
pink: "#fde0f0"
|
|
34
|
-
red: "#fbd4d4"
|
|
35
|
-
success: "#00b473"
|
|
36
|
-
slate: "#555a6a"
|
|
37
|
-
placeholder: "#a5a8b5"
|
|
38
|
-
border: "#c7cad5"
|
|
39
91
|
border-input: "#e9eaef"
|
|
92
|
+
border-control: "#c7cad5"
|
|
93
|
+
border-subtle: "#e0e2e8"
|
|
94
|
+
muted: "#555a6a"
|
|
40
95
|
typography:
|
|
41
|
-
family: {
|
|
42
|
-
display-hero: { size: 56, weight:
|
|
43
|
-
section:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
body-std: { size: 16, weight: 400, lineHeight: 1.50, tracking: -0.16, use: "Standard body, Noto Sans" }
|
|
49
|
-
button: { size: 17.5, weight: 700, lineHeight: 1.29, tracking: 0.175, use: "Button, Roobert PRO Medium" }
|
|
50
|
-
caption: { size: 14, weight: 400, lineHeight: 1.71, use: "Caption, Roobert PRO Medium" }
|
|
51
|
-
micro: { size: 10.5, weight: 400, lineHeight: 0.90, use: "Uppercase micro label, Roobert PRO" }
|
|
52
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
|
|
53
|
-
rounded: { sm: 8, md: 12, lg: 24, full: 9999 }
|
|
54
|
-
shadow:
|
|
55
|
-
ring: "rgb(224,226,232) 0px 0px 0px 1px"
|
|
96
|
+
family: { ui: "Noto Sans", display: "Roobert PRO Medium" }
|
|
97
|
+
display-hero: { size: 56, weight: 500, lineHeight: 56, tracking: -1.68, use: "Observed public home display headline" }
|
|
98
|
+
display-section: { size: 48, weight: 400, lineHeight: 55.2, tracking: -1.44, use: "Observed public home section heading" }
|
|
99
|
+
body: { size: 14, weight: 400, lineHeight: 20, use: "Observed public pricing control and list text" }
|
|
100
|
+
action: { size: 16, weight: 600, lineHeight: 24, use: "Observed public pricing action" }
|
|
101
|
+
spacing: { xs: 4, sm: 8, md: 12, lg: 16, xl: 24, xxl: 32 }
|
|
102
|
+
rounded: { control: 8, segmented: 40 }
|
|
56
103
|
components:
|
|
57
|
-
|
|
58
|
-
button-outline: { type: button, bg: "transparent", fg: "#1c1c1e", radius: 8, padding: "7px 12px", font: "17.5px/700", use: "Secondary outlined button" }
|
|
59
|
-
button-circle: { type: button, bg: "#ffffff", radius: 9999, padding: "12px", use: "Circular icon button, ring shadow" }
|
|
60
|
-
input: { type: input, bg: "#ffffff", fg: "#1c1c1e", radius: 8, padding: "16px", font: "16px/400", use: "Standard input" }
|
|
61
|
-
card: { type: card, bg: "#ffffff", radius: 12, padding: "16px", use: "Default card with ring-shadow border" }
|
|
62
|
-
card-pastel: { type: card, bg: "#ffc6c6", fg: "#1c1c1e", radius: 12, padding: "24px", use: "Feature card with pastel surface" }
|
|
63
|
-
badge: { type: badge, bg: "#5b76fe", fg: "#ffffff", radius: 8, padding: "4px 8px", font: "12px/400", use: "Default badge" }
|
|
64
|
-
badge-success: { type: badge, bg: "#00b473", fg: "#ffffff", radius: 8, padding: "4px 8px", use: "Success badge" }
|
|
65
|
-
components_harvested: true
|
|
104
|
+
pricing-period-toggle: { type: toggle, radius: 40, height: 34, padding: "6px 16px", states: "checked, unchecked", use: "Public pricing billing-period selector" }
|
|
66
105
|
---
|
|
67
106
|
|
|
68
107
|
# Design System Inspiration of Miro
|
|
69
108
|
|
|
70
109
|
## 1. Visual Theme & Atmosphere
|
|
71
110
|
|
|
72
|
-
Miro
|
|
73
|
-
|
|
74
|
-
The typography uses Roobert PRO Medium as the primary display font with OpenType character variants (`"blwf", "cv03", "cv04", "cv09", "cv11"`) and negative letter-spacing (-1.68px at 56px). Noto Sans handles body text with its own stylistic set (`"liga" 0, "ss01", "ss04", "ss05"`). The design is built with Framer, giving it smooth animations and modern component patterns.
|
|
111
|
+
Miro is a collaborative canvas for teams that want to move from an early idea to a shared outcome. Its first version, RealtimeBoard, began in 2011 as a way for Andrey Khusid’s design agency to communicate with clients at a distance; Miro now describes the service as a place for teams and AI to develop strategy, design products and services, and manage the innovation lifecycle. The public presentation connects that expansive canvas metaphor to a deliberately vivid visual language: an optimistic yellow brand signal, restrained white and near-black functional surfaces, and blue conversion actions in the captured pricing flow. Miro’s 2023 identity work says yellow should be the protagonist rather than paint every surface, while the current Aura material expands the palette for colorful board work and pairs it with a broad-language body face.
|
|
75
112
|
|
|
76
|
-
**
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
- Pastel accent palette: coral, rose, teal, orange, yellow, moss (light + dark pairs)
|
|
80
|
-
- Blue 450 (`#5b76fe`) as primary interactive color
|
|
81
|
-
- Success green (`#00b473`) for positive states
|
|
82
|
-
- Generous border-radius: 8px–50px range
|
|
83
|
-
- Framer-built with smooth motion patterns
|
|
84
|
-
- Ring shadow border: `rgb(224,226,232) 0px 0px 0px 1px`
|
|
113
|
+
- **Yellow as a signal:** the official identity story calls yellow iconic and sparing; the supplied public capture observes `#fde050` on a 40px promo action.
|
|
114
|
+
- **Canvas before chrome:** white surfaces and near-black `#1c1c1e` text dominate the captured public controls, leaving color to mark a moment rather than fill the whole page.
|
|
115
|
+
- **Workroom energy:** Miro’s own language foregrounds collaborative, canvas-first work; brand imagery can be expressive, while functional pricing controls remain compact and measured.
|
|
85
116
|
|
|
86
117
|
## 2. Color Palette & Roles
|
|
87
118
|
|
|
88
|
-
###
|
|
89
|
-
|
|
90
|
-
- **
|
|
91
|
-
- **Blue
|
|
92
|
-
- **
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
- **
|
|
96
|
-
- **
|
|
97
|
-
- **
|
|
98
|
-
- **
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
- **Pink** (`#fde0f0`): Soft pink surface
|
|
102
|
-
- **Red** (`#fbd4d4`): Light red surface
|
|
103
|
-
- **Dark Red** (`#e3c5c5`): Muted red
|
|
104
|
-
|
|
105
|
-
### Semantic
|
|
106
|
-
- **Success** (`#00b473`): `--tw-color-success-accent`
|
|
107
|
-
|
|
108
|
-
### Neutral
|
|
109
|
-
- **Slate** (`#555a6a`): Secondary text
|
|
110
|
-
- **Input Placeholder** (`#a5a8b5`): `--tw-color-input-placeholder`
|
|
111
|
-
- **Border** (`#c7cad5`): Button borders
|
|
112
|
-
- **Ring** (`rgb(224,226,232)`): Shadow-as-border
|
|
119
|
+
### Observed public-surface roles
|
|
120
|
+
|
|
121
|
+
- **Miro Yellow / promo accent** (`#fde050`): live 40px marketing/promo action on home and pricing; Miro’s brand story establishes yellow as the central identity color, but no general primary-action role is inferred.
|
|
122
|
+
- **Action Blue** (`#3859ff`): repeated public-pricing CTA fill with white text.
|
|
123
|
+
- **Action Blue border** (`#7a90fe`): observed 1px border/inset edge on the blue pricing CTA.
|
|
124
|
+
- **Ink** (`#1c1c1e`): repeated public text and control color.
|
|
125
|
+
- **Canvas** (`#ffffff`): observed public surface and selected pricing-period fill.
|
|
126
|
+
- **Input border** (`#e9eaef`): observed on the single public-home email field.
|
|
127
|
+
- **Control border** (`#c7cad5`): observed outlined public pricing action border.
|
|
128
|
+
- **Subtle border** (`#e0e2e8`): observed pricing badge/control border.
|
|
129
|
+
- **Muted text** (`#555a6a`): observed unchecked pricing-period label.
|
|
130
|
+
|
|
131
|
+
Miro’s Aura material names a broader accent palette—Coral, Cyan, Lilac, Lime, Sunshine, Orange, Pink, Moss, and Teal—but the supplied capture does not establish their exact current public-web values or semantic component roles. They remain narrative context, not machine tokens.
|
|
113
132
|
|
|
114
133
|
## 3. Typography Rules
|
|
115
134
|
|
|
116
|
-
###
|
|
117
|
-
- **Display**: `Roobert PRO Medium`, fallback: Placeholder — `"blwf", "cv03", "cv04", "cv09", "cv11"`
|
|
118
|
-
- **Display Variants**: `Roobert PRO SemiBold`, `Roobert PRO SemiBold Italic`, `Roobert PRO`
|
|
119
|
-
- **Body**: `Noto Sans` — `"liga" 0, "ss01", "ss04", "ss05"`
|
|
120
|
-
|
|
121
|
-
### Hierarchy
|
|
122
|
-
|
|
123
|
-
| Role | Font | Size | Weight | Line Height | Letter Spacing |
|
|
124
|
-
|------|------|------|--------|-------------|----------------|
|
|
125
|
-
| Display Hero | Roobert PRO Medium | 56px | 400 | 1.15 | -1.68px |
|
|
126
|
-
| Section Heading | Roobert PRO Medium | 48px | 400 | 1.15 | -1.44px |
|
|
127
|
-
| Card Title | Roobert PRO Medium | 24px | 400 | 1.15 | -0.72px |
|
|
128
|
-
| Sub-heading | Noto Sans | 22px | 400 | 1.35 | -0.44px |
|
|
129
|
-
| Feature | Roobert PRO Medium | 18px | 600 | 1.35 | normal |
|
|
130
|
-
| Body | Noto Sans | 18px | 400 | 1.45 | normal |
|
|
131
|
-
| Body Standard | Noto Sans | 16px | 400–600 | 1.50 | -0.16px |
|
|
132
|
-
| Button | Roobert PRO Medium | 17.5px | 700 | 1.29 | 0.175px |
|
|
133
|
-
| Caption | Roobert PRO Medium | 14px | 400 | 1.71 | normal |
|
|
134
|
-
| Small | Roobert PRO Medium | 12px | 400 | 1.15 | -0.36px |
|
|
135
|
-
| Micro Uppercase | Roobert PRO | 10.5px | 400 | 0.90 | uppercase |
|
|
135
|
+
### Evidence classes
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
- **Official product-use:** Miro Aura calls Noto Sans its new body-text font, citing broad language and writing-system support for multilingual hybrid teams.
|
|
138
|
+
- **Live computed public-surface use:** `Noto Sans` is loaded/high confidence with 882 visible uses and 24 font-source URLs in the supplied bundle. `Roobert PRO Medium` is loaded/high confidence with 46 visible uses; the bundle also records the loaded `roobertPROLocal` face with three Miro-hosted WOFF2 source URLs. These FontFaceSet-backed families are the only typography families promoted to tokens.
|
|
139
|
+
- **Official distributed font asset and licence boundary:** Displaay identifies Roobert as a geometric sans with weight, slant, and mono axes. Displaay’s licence describes paid usage, including web self-hosting via `@font-face`; it is the foundry’s licence, not evidence that Miro grants third parties permission to redistribute its hosted files.
|
|
140
|
+
- **Declared-only:** Fragment Mono, Inter Placeholder, M PLUS 1, Nanum Pen Script, Vazirmatn, and placeholder/fallback faces are declared with zero visible use in this capture. They are not substitutes or UI tokens.
|
|
141
|
+
- **System/unresolved:** `sans-serif` is a system stack. Computed `Roobert PRO` has visible uses but no matching loaded-font record, so it is not separately tokenized.
|
|
138
142
|
|
|
139
|
-
###
|
|
143
|
+
### Measured public hierarchy
|
|
140
144
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- Hover: `#2a41b6` (`--tw-color-actionable-pressed`)
|
|
148
|
-
- Use: Primary CTA — implied from interactive blue
|
|
145
|
+
| Role | Family | Size | Weight | Line height | Tracking | Provenance |
|
|
146
|
+
|---|---|---:|---:|---:|---:|---|
|
|
147
|
+
| Public display hero | Roobert PRO Medium | 56px | 500 | 56px | -1.68px | `home::h1` |
|
|
148
|
+
| Public section heading | Roobert PRO Medium | 48px | 400 | 55.2px | -1.44px | `home::h2` |
|
|
149
|
+
| Public pricing action | Noto Sans | 16px | 600 | 24px | normal | `surface-2::[data-omd-capture="136"]` |
|
|
150
|
+
| Pricing control/list text | Noto Sans | 14px | 400 | 20px | normal | `surface-2::[data-omd-capture="89"]` |
|
|
149
151
|
|
|
150
|
-
|
|
151
|
-
- Background: transparent
|
|
152
|
-
- Text: `#1c1c1e`
|
|
153
|
-
- Border: 1px solid `#c7cad5`
|
|
154
|
-
- Radius: 8px
|
|
155
|
-
- Padding: 7px 12px
|
|
156
|
-
- Font: 17.5px / 700 / Roobert PRO Medium
|
|
157
|
-
- Use: Secondary outlined button
|
|
152
|
+
## 4. Component Stylings
|
|
158
153
|
|
|
159
|
-
|
|
160
|
-
- Background: `#ffffff`
|
|
161
|
-
- Radius: 50%
|
|
162
|
-
- Padding: 12px (icon button)
|
|
163
|
-
- Shadow: `rgb(224,226,232) 0px 0px 0px 1px` (ring shadow)
|
|
164
|
-
- Use: Circular icon button
|
|
154
|
+
All variants below are constrained to the supplied public marketing/pricing capture. Selector, surface, and observed-state provenance are kept with each entry; Mirotone documentation establishes a broader app-library context but does not turn undocumented or unobserved variants into tokens.
|
|
165
155
|
|
|
166
|
-
###
|
|
156
|
+
### Public actions
|
|
167
157
|
|
|
168
|
-
**
|
|
169
|
-
- Background: `#
|
|
158
|
+
**Yellow promo action**
|
|
159
|
+
- Background: `#fde050`
|
|
160
|
+
- Text: `#1c1c1e`
|
|
161
|
+
- Radius: `8px`
|
|
162
|
+
- Padding: `8px 12px`
|
|
163
|
+
- Height: `40px`
|
|
164
|
+
- Font: `16px / 900 / Roobert PRO Medium`
|
|
165
|
+
- Use: public promo/banner action; `home::[data-omd-capture="0"]`, repeated at `surface-2::[data-omd-capture="76"]`
|
|
166
|
+
|
|
167
|
+
**Blue pricing action**
|
|
168
|
+
- Background: `#3859ff`
|
|
169
|
+
- Text: `#ffffff`
|
|
170
|
+
- Border: `1px solid #7a90fe`
|
|
171
|
+
- Radius: `8px`
|
|
172
|
+
- Padding: `11px 15px`
|
|
173
|
+
- Height: `48px`
|
|
174
|
+
- Font: `16px / 600 / Noto Sans`
|
|
175
|
+
- Use: public pricing CTA; `surface-2::[data-omd-capture="136"]`, repeated on `surface-3`
|
|
176
|
+
|
|
177
|
+
**Outlined pricing action**
|
|
178
|
+
- Background: transparent
|
|
170
179
|
- Text: `#1c1c1e`
|
|
171
|
-
- Border: 1px solid
|
|
172
|
-
- Radius: 8px
|
|
173
|
-
- Padding:
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
- Use:
|
|
180
|
+
- Border: `1px solid #c7cad5`
|
|
181
|
+
- Radius: `8px`
|
|
182
|
+
- Padding: `11px 15px`
|
|
183
|
+
- Height: `48px`
|
|
184
|
+
- Font: `16px / 600 / Noto Sans`
|
|
185
|
+
- Use: public pricing action; `surface-2::[data-omd-capture="137"]`, repeated on `surface-3`
|
|
177
186
|
|
|
178
|
-
###
|
|
187
|
+
### Public form and choice controls
|
|
179
188
|
|
|
180
|
-
**
|
|
189
|
+
**Email input**
|
|
181
190
|
- Background: `#ffffff`
|
|
182
|
-
- Radius: 12px
|
|
183
|
-
- Padding: 16px
|
|
184
|
-
- Shadow: `rgb(224,226,232) 0px 0px 0px 1px` (ring shadow)
|
|
185
|
-
- Use: Default card with ring-shadow border
|
|
186
|
-
|
|
187
|
-
**Pastel Surface**
|
|
188
|
-
- Background: pastel accent (e.g., `#ffc6c6` Coral, `#c3faf5` Teal, `#ffe6cd` Orange, `#fde0f0` Pink)
|
|
189
191
|
- Text: `#1c1c1e`
|
|
190
|
-
-
|
|
191
|
-
-
|
|
192
|
-
-
|
|
192
|
+
- Border: `1px solid #e9eaef`
|
|
193
|
+
- Radius: `8px`
|
|
194
|
+
- Padding: `16px`
|
|
195
|
+
- Height: `48px`
|
|
196
|
+
- Font: `16px / 400 / Noto Sans`
|
|
197
|
+
- Use: public home email field; `home::[data-omd-capture="82"]` (one observed instance)
|
|
198
|
+
|
|
199
|
+
**Pricing-period toggle**
|
|
200
|
+
- Radius: `40px`
|
|
201
|
+
- Padding: `6px 16px`
|
|
202
|
+
- Height: `34px`
|
|
203
|
+
- Font: `16px / 600 / Noto Sans`
|
|
204
|
+
- Checked: white background with `#1c1c1e` text; `surface-2::[data-omd-capture="86"]`
|
|
205
|
+
- Unchecked: transparent background with `#555a6a` text at `16px / 400`; `surface-2::[data-omd-capture="85"]`
|
|
206
|
+
- Use: public pricing billing-period selector; both states observed
|
|
207
|
+
|
|
208
|
+
### Captured dialog boundary
|
|
209
|
+
|
|
210
|
+
**Pricing dialog**
|
|
211
|
+
- Background: `oklch(1 0 0)`
|
|
212
|
+
- Text: `#1c1c1e`
|
|
213
|
+
- Padding: `20px 24px`
|
|
214
|
+
- Font: `16px / 400 / roobertPROLocal`
|
|
215
|
+
- Dialog-open: `surface-2::[data-omd-interaction-capture="dialog-0-8"]`; shadow includes `rgba(0, 0, 0, 0.1) 0px 10px 15px -3px`
|
|
216
|
+
- Use: dialog opened by a captured public-pricing interaction; no global modal token or further state contract is inferred
|
|
193
217
|
|
|
194
|
-
|
|
195
|
-
- Background: `#ffffff`
|
|
196
|
-
- Radius: 24px
|
|
197
|
-
- Padding: 32px
|
|
198
|
-
- Shadow: `rgb(224,226,232) 0px 0px 0px 1px`
|
|
199
|
-
- Use: Large containers
|
|
218
|
+
## 5. Layout Principles
|
|
200
219
|
|
|
201
|
-
###
|
|
220
|
+
### Observed spacing scale
|
|
202
221
|
|
|
203
|
-
|
|
204
|
-
- Background: `#5b76fe`
|
|
205
|
-
- Text: `#ffffff`
|
|
206
|
-
- Radius: 8px
|
|
207
|
-
- Padding: 4px 8px
|
|
208
|
-
- Font: 12px / 400 / Roobert PRO Medium
|
|
209
|
-
- Use: Inferred from §1-§2 baseline (no explicit DS variant in source).
|
|
222
|
+
The supplied public capture repeatedly uses 4, 8, 12, 16, 24, and 32px values. This reference retains only those observed values as its spacing tokens.
|
|
210
223
|
|
|
211
|
-
|
|
212
|
-
- Background: `#00b473` (`--tw-color-success-accent`)
|
|
213
|
-
- Text: `#ffffff`
|
|
214
|
-
- Radius: 8px
|
|
215
|
-
- Padding: 4px 8px
|
|
216
|
-
- Use: Inferred from §1-§2 baseline (no explicit DS variant in source).
|
|
224
|
+
### Observed shape scale
|
|
217
225
|
|
|
218
|
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
- Ring shadow: `rgb(224,226,232) 0px 0px 0px 1px`
|
|
226
|
+
- **Public action and email input:** `8px`
|
|
227
|
+
- **Pricing-period option:** `40px`
|
|
228
|
+
- **Circular controls:** `50%` was observed locally on home controls; it is intentionally not normalized into a general-purpose radius token.
|
|
222
229
|
|
|
223
230
|
## 6. Depth & Elevation
|
|
224
|
-
|
|
231
|
+
|
|
232
|
+
No global elevation scale is established. The captured pricing dialog has a local two-part black shadow, while public buttons are largely flat; retain that shadow only when reproducing the recorded dialog context.
|
|
225
233
|
|
|
226
234
|
## 7. Do's and Don'ts
|
|
235
|
+
|
|
227
236
|
### Do
|
|
228
|
-
|
|
229
|
-
-
|
|
230
|
-
- Use
|
|
237
|
+
|
|
238
|
+
- Use yellow as a deliberate public-brand signal rather than a blanket surface fill.
|
|
239
|
+
- Use the supplied blue CTA geometry only for public pricing/conversion contexts.
|
|
240
|
+
- Default to the evidence-backed Noto Sans body/UI family where multilingual readability is needed.
|
|
241
|
+
- Keep public actions compact, with the observed 8px control corners.
|
|
242
|
+
|
|
231
243
|
### Don't
|
|
232
|
-
|
|
233
|
-
- Don
|
|
244
|
+
|
|
245
|
+
- Don’t turn the observed yellow promo button into Miro’s universal primary action.
|
|
246
|
+
- Don’t promote declared-only scripts, placeholders, or a system stack to Miro typography.
|
|
247
|
+
- Don’t apply Mirotone app-library components to Miro marketing/pricing tokens without direct live evidence.
|
|
248
|
+
- Don’t invent hover, pressed, focus, error, loading, toast, or animation variants from the captured dialog/toggle states.
|
|
234
249
|
|
|
235
250
|
## 8. Responsive Behavior
|
|
236
|
-
|
|
251
|
+
|
|
252
|
+
The supplied capture is desktop-only (`1440x900`) for the home and two pricing records. It does not establish a mobile breakpoint, layout transition, or responsive component variant.
|
|
237
253
|
|
|
238
254
|
## 9. Agent Prompt Guide
|
|
239
|
-
|
|
240
|
-
-
|
|
241
|
-
|
|
242
|
-
-
|
|
243
|
-
-
|
|
244
|
-
-
|
|
245
|
-
|
|
246
|
-
- "Create hero: white background. Roobert PRO Medium 56px, line-height 1.15, letter-spacing -1.68px. Blue CTA (#5b76fe). Outlined secondary (1px solid #c7cad5, 8px radius)."
|
|
255
|
+
|
|
256
|
+
### Evidence-safe prompts
|
|
257
|
+
|
|
258
|
+
- “Create a public pricing CTA using the observed `#3859ff` fill, white text, `#7a90fe` 1px border, 8px radius, 11px 15px padding, and 48px height. Keep it scoped to a pricing/conversion context.”
|
|
259
|
+
- “Use Miro Yellow `#fde050` only for a compact public promo action with `#1c1c1e` text, 8px radius, 8px 12px padding, and 40px height; do not assume it is the default app CTA.”
|
|
260
|
+
- “Set functional body/UI text in Noto Sans. Reserve FontFaceSet-backed Roobert display use for short public headings; do not substitute a declared-only or system family.”
|
|
261
|
+
- “For the pricing-period selector, use only the captured checked and unchecked treatments; do not invent transition or focus behavior.”
|
|
247
262
|
|
|
248
263
|
## 10. Voice & Tone
|
|
249
264
|
|
|
250
|
-
Miro
|
|
265
|
+
Miro’s first-party language is collaborative, expansive, and outcome-oriented: teams come together on a canvas to dream, design, and build. Its recent AI positioning keeps the emphasis on shared work rather than an individual assistant.
|
|
251
266
|
|
|
252
|
-
| Context |
|
|
267
|
+
| Context | Supported voice evidence |
|
|
253
268
|
|---|---|
|
|
254
|
-
|
|
|
255
|
-
|
|
|
256
|
-
|
|
|
257
|
-
| Error | Specific. "Board permissions changed. Refresh to see updates." |
|
|
269
|
+
| Mission | “empower teams to create the next big thing” — Miro About |
|
|
270
|
+
| Product metaphor | “canvas-first” / “from idea to outcome” — Miro newsroom |
|
|
271
|
+
| Accessibility | “Everyone should be able to collaborate … without barriers” — Miro Accessibility |
|
|
258
272
|
|
|
259
|
-
|
|
260
|
-
- Marketing CTA: *"SAVE YOUR SPOT"* <!-- verified: miro.com/ko homepage 2026-05 -->
|
|
261
|
-
|
|
262
|
-
**Forbidden phrases.** "Revolutionary whiteboard". Aggressive Mural-comparison framing.
|
|
273
|
+
No invented error copy or prohibition list is asserted.
|
|
263
274
|
|
|
264
275
|
## 11. Brand Narrative
|
|
265
276
|
|
|
266
|
-
Miro
|
|
277
|
+
Miro’s own account traces the product to a 2011 RealtimeBoard experiment built so a design agency could communicate with distant clients. The company now describes the product as a visual workspace where teams work with AI across strategy, product design, and innovation delivery.
|
|
278
|
+
|
|
279
|
+
Its 2023 identity work explains the expression behind the public brand: yellow had always been iconic, but the brand team chose to use it with moderation and supporting colors rather than flood every interface. Aura extends that evolution into a richer board palette and Noto Sans body text for multilingual collaboration. The result is a useful split for this reference: lively brand expression belongs to marketing and board context, while only the supplied live public controls become implementation tokens.
|
|
267
280
|
|
|
268
281
|
## 12. Principles
|
|
269
282
|
|
|
270
|
-
1. **
|
|
271
|
-
2. **
|
|
272
|
-
3. **
|
|
273
|
-
4. **
|
|
274
|
-
5. **AI as workshop participant.** *UI implication:* AI features framed as joining the workshop, not replacing humans.
|
|
283
|
+
1. **The canvas keeps work shared.** *UI implication:* prioritize surfaces that let teams move among ideas, structure, and outcomes without treating the workspace as a document-only flow.
|
|
284
|
+
2. **Yellow is an intentional identity signal.** *UI implication:* use a yellow accent to focus attention, not as a default fill for every public or product action.
|
|
285
|
+
3. **Multilingual clarity is a product concern.** *UI implication:* use Noto Sans for body/UI content where the live and official evidence supports it.
|
|
286
|
+
4. **Accessible collaboration is part of the experience.** *UI implication:* support keyboard access, named colors, readable contrast, and reduced-motion behavior when implementing product work with separate surface evidence.
|
|
275
287
|
|
|
276
288
|
## 13. Personas
|
|
277
289
|
|
|
278
|
-
*
|
|
290
|
+
*These are first-party stakeholder groups, not fictional individual personas.*
|
|
279
291
|
|
|
280
|
-
**
|
|
292
|
+
- **Cross-functional innovation teams:** Miro describes teams using the canvas to develop strategy, design products and services, and manage the innovation lifecycle.
|
|
293
|
+
- **Multilingual, hybrid collaborators:** Aura explicitly positions Noto Sans around broad language support for distributed teams.
|
|
294
|
+
- **People with access needs:** Miro’s accessibility work addresses keyboard, screen-reader, voice-control, color, and motion-sensitive collaboration.
|
|
281
295
|
|
|
282
|
-
|
|
296
|
+
## 14. States
|
|
283
297
|
|
|
284
|
-
|
|
298
|
+
Only the following states are observed or officially described in this pass:
|
|
285
299
|
|
|
286
|
-
|
|
300
|
+
| State | Treatment | Provenance |
|
|
301
|
+
|---|---|---|
|
|
302
|
+
| Checked | White pricing-period option with `#1c1c1e` text | `surface-2::[data-omd-capture="86"]` |
|
|
303
|
+
| Unchecked | Transparent pricing-period option with `#555a6a` text | `surface-2::[data-omd-capture="85"]` |
|
|
304
|
+
| Dialog open | White pricing dialog with local shadow | captured pricing dialog interactions |
|
|
305
|
+
| Disabled | 36px circular home control was captured disabled | `home::[data-omd-capture="100"]` |
|
|
306
|
+
| Reduced motion | Animations and transitions removed | official Miro Accessibility page |
|
|
287
307
|
|
|
288
|
-
|
|
289
|
-
|---|---|
|
|
290
|
-
| **Empty (no boards)** | "Create your first board" CTA + template gallery |
|
|
291
|
-
| **Empty (no team)** | "Invite teammates" with email picker |
|
|
292
|
-
| **Loading (board opening)** | Skeleton with sticky-note placeholders |
|
|
293
|
-
| **Loading (cursor sync)** | Cursor avatars appear with name labels |
|
|
294
|
-
| **Error (sync)** | Banner + retry; never block editing |
|
|
295
|
-
| **Error (permission)** | "Read-only — request edit access" inline link |
|
|
296
|
-
| **Success (saved)** | Implicit; auto-save with subtle indicator |
|
|
297
|
-
| **Success (export)** | Download triggered + toast confirmation |
|
|
298
|
-
| **Skeleton (board grid)** | Yellow-tinted placeholders |
|
|
299
|
-
| **Disabled (free plan limit)** | Upgrade link |
|
|
300
|
-
| **Loading (long export)** | Persistent progress chip |
|
|
308
|
+
No public evidence in this pass establishes a loading, empty, success, error, hover, pressed, or focus treatment.
|
|
301
309
|
|
|
302
310
|
## 15. Motion & Easing
|
|
303
311
|
|
|
304
|
-
|
|
305
|
-
|---|---|---|
|
|
306
|
-
| `motion-instant` | 0ms | Selection |
|
|
307
|
-
| `motion-fast` | 150ms | Hover |
|
|
308
|
-
| `motion-standard` | 250ms | Modal, panel |
|
|
309
|
-
| `motion-cursor` | continuous | Live cursor sync |
|
|
310
|
-
|
|
311
|
-
Standard cubic-bezier; minimal bounce. Cursor sync motion is signature. `prefers-reduced-motion: reduce` removes hover transitions; cursor sync becomes step-discrete.
|
|
312
|
+
The supplied raw capture contains no timing, easing, or transition values. Miro’s accessibility documentation says reduced motion removes animations and transition effects; that establishes a behavioral boundary, not motion tokens. No duration or easing value is asserted.
|
|
312
313
|
|
|
313
314
|
---
|
|
314
315
|
|
|
315
|
-
**Verified:** 2026-
|
|
316
|
-
**Tier 1 sources:** miro.com/ko
|
|
317
|
-
**Tier 2 sources:** styles.refero.design
|
|
318
|
-
**
|
|
319
|
-
|
|
316
|
+
**Verified:** 2026-07-13
|
|
317
|
+
**Tier 1 sources:** https://miro.com/ko/ | https://miro.com/ko/pricing/ | https://miro.com/about/ | https://miro.com/aura/ | https://miro.com/blog/miro-vis/ | https://developers.miro.com/docs/design-guidelines | https://displaay.net/typeface/roobert | https://displaay.net/help/licenses
|
|
318
|
+
**Tier 2 sources:** https://getdesign.md/miro/design-md (third-party independent analysis; summary only) | https://styles.refero.design/?q=Miro (attempted search; service returned an internal error)
|
|
319
|
+
**Conflicts unresolved:** none
|
|
320
|
+
|
|
321
|
+
Legacy `#5b76fe`/pastel/card/badge tokens and unobserved state variants were removed because the supplied July 2026 capture did not support them; repeated live public pricing actions resolve to `#3859ff`, while `#fde050` is retained only as a promo/brand-accent action.
|