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
|
@@ -5,496 +5,313 @@ display_name_kr: 여기어때 (GoodChoice)
|
|
|
5
5
|
country: KR
|
|
6
6
|
category: consumer-tech
|
|
7
7
|
homepage: "https://www.yeogi.com"
|
|
8
|
-
primary_color: "#
|
|
8
|
+
primary_color: "#1d8bff"
|
|
9
9
|
logo:
|
|
10
10
|
type: favicon
|
|
11
11
|
slug: "https://www.google.com/s2/favicons?domain=yeogi.com&sz=128"
|
|
12
|
-
verified: "2026-
|
|
12
|
+
verified: "2026-07-11"
|
|
13
13
|
omd: "0.1"
|
|
14
14
|
ds:
|
|
15
15
|
name: 여기어때 Design Library
|
|
16
16
|
url: "https://designlibrary.yeogi.com/"
|
|
17
17
|
type: system
|
|
18
|
-
description:
|
|
18
|
+
description: "YDS 6.0 foundations and public Button, Price marker, Search bar component guidance."
|
|
19
19
|
og_image: "https://framerusercontent.com/assets/kA6JROOLbG0jX7SQZl1tLZzahM.jpg"
|
|
20
|
+
verification_v2:
|
|
21
|
+
schema: 2
|
|
22
|
+
checked: "2026-07-11"
|
|
23
|
+
surfaces:
|
|
24
|
+
- { id: home, kind: product, url: "https://www.yeogi.com/", inspected: "2026-07-11" }
|
|
25
|
+
- { id: results, kind: product, url: "https://www.yeogi.com/domestic-accommodations", inspected: "2026-07-11" }
|
|
26
|
+
- { id: ds-home, kind: design-system, url: "https://designlibrary.yeogi.com/", inspected: "2026-07-11" }
|
|
27
|
+
- { id: colors, kind: design-system, url: "https://designlibrary.yeogi.com/foudations/color/palette-color", inspected: "2026-07-11" }
|
|
28
|
+
- { id: typography, kind: design-system, url: "https://designlibrary.yeogi.com/foudations/typography", inspected: "2026-07-11" }
|
|
29
|
+
- { id: layout, kind: design-system, url: "https://designlibrary.yeogi.com/foudations/layout", inspected: "2026-07-11" }
|
|
30
|
+
- { id: radius, kind: design-system, url: "https://designlibrary.yeogi.com/foudations/radius", inspected: "2026-07-11" }
|
|
31
|
+
- { id: components, kind: design-system, url: "https://designlibrary.yeogi.com/components/overview", inspected: "2026-07-11" }
|
|
32
|
+
- { id: shadow, kind: design-system, url: "https://designlibrary.yeogi.com/foudations/shadow", inspected: "2026-07-11" }
|
|
33
|
+
- { id: spacing, kind: design-system, url: "https://designlibrary.yeogi.com/foudations/spacing", inspected: "2026-07-11" }
|
|
34
|
+
sources:
|
|
35
|
+
- { id: product-live, kind: product-surface, url: "https://www.yeogi.com/", captured: "2026-07-11" }
|
|
36
|
+
- { id: results-live, kind: product-surface, url: "https://www.yeogi.com/domestic-accommodations", captured: "2026-07-11" }
|
|
37
|
+
- { id: ds-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/", captured: "2026-07-11" }
|
|
38
|
+
- { id: colors-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/foudations/color/palette-color", captured: "2026-07-11" }
|
|
39
|
+
- { id: typography-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/foudations/typography", captured: "2026-07-11" }
|
|
40
|
+
- { id: layout-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/foudations/layout", captured: "2026-07-11" }
|
|
41
|
+
- { id: radius-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/foudations/radius", captured: "2026-07-11" }
|
|
42
|
+
- { id: components-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/components/overview", captured: "2026-07-11" }
|
|
43
|
+
- { id: shadow-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/foudations/shadow", captured: "2026-07-11" }
|
|
44
|
+
- { id: spacing-doc, kind: official-doc, url: "https://designlibrary.yeogi.com/foudations/spacing", captured: "2026-07-11" }
|
|
45
|
+
claims:
|
|
46
|
+
"tokens.colors.primary": &color { surface_id: colors, source_id: colors-doc, method: official-doc, captured: "2026-07-11" }
|
|
47
|
+
"tokens.colors.canvas": *color
|
|
48
|
+
"tokens.colors.foreground": *color
|
|
49
|
+
"tokens.colors.border": *color
|
|
50
|
+
"tokens.colors.red": *color
|
|
51
|
+
"tokens.colors.red-tint": *color
|
|
52
|
+
"tokens.colors.blue-tint": *color
|
|
53
|
+
"tokens.colors.yellow": *color
|
|
54
|
+
"tokens.colors.slate": *color
|
|
55
|
+
"tokens.typography.family.sans": &type { surface_id: typography, source_id: typography-doc, method: official-doc+live-inspect, captured: "2026-07-11" }
|
|
56
|
+
"tokens.typography.display-large.size": *type
|
|
57
|
+
"tokens.typography.display-large.weight": *type
|
|
58
|
+
"tokens.typography.display-large.lineHeight": *type
|
|
59
|
+
"tokens.typography.display-large.use": *type
|
|
60
|
+
"tokens.typography.display-medium.size": *type
|
|
61
|
+
"tokens.typography.display-medium.weight": *type
|
|
62
|
+
"tokens.typography.display-medium.lineHeight": *type
|
|
63
|
+
"tokens.typography.display-medium.use": *type
|
|
64
|
+
"tokens.typography.title-large.size": *type
|
|
65
|
+
"tokens.typography.title-large.weight": *type
|
|
66
|
+
"tokens.typography.title-large.lineHeight": *type
|
|
67
|
+
"tokens.typography.title-large.use": *type
|
|
68
|
+
"tokens.typography.body-medium.size": *type
|
|
69
|
+
"tokens.typography.body-medium.weight": *type
|
|
70
|
+
"tokens.typography.body-medium.lineHeight": *type
|
|
71
|
+
"tokens.typography.body-medium.use": *type
|
|
72
|
+
"tokens.typography.caption-large.size": *type
|
|
73
|
+
"tokens.typography.caption-large.weight": *type
|
|
74
|
+
"tokens.typography.caption-large.lineHeight": *type
|
|
75
|
+
"tokens.typography.caption-large.use": *type
|
|
76
|
+
"tokens.spacing.xs": &space { surface_id: spacing, source_id: spacing-doc, method: official-doc, captured: "2026-07-11" }
|
|
77
|
+
"tokens.spacing.sm": *space
|
|
78
|
+
"tokens.spacing.md": *space
|
|
79
|
+
"tokens.spacing.base": *space
|
|
80
|
+
"tokens.spacing.lg": *space
|
|
81
|
+
"tokens.spacing.xl": *space
|
|
82
|
+
"tokens.spacing.xxl": *space
|
|
83
|
+
"tokens.spacing.section": *space
|
|
84
|
+
"tokens.rounded.xs": &radius { surface_id: radius, source_id: radius-doc, method: official-doc, captured: "2026-07-11" }
|
|
85
|
+
"tokens.rounded.sm": *radius
|
|
86
|
+
"tokens.rounded.md": *radius
|
|
87
|
+
"tokens.rounded.lg": *radius
|
|
88
|
+
"tokens.rounded.xl": *radius
|
|
89
|
+
"tokens.rounded.full": *radius
|
|
90
|
+
"tokens.shadow.flat": &shadow_evidence { surface_id: shadow, source_id: shadow-doc, method: official-doc, captured: "2026-07-11" }
|
|
91
|
+
"tokens.shadow.raised": *shadow_evidence
|
|
92
|
+
"tokens.shadow.sheet": *shadow_evidence
|
|
93
|
+
"tokens.components.button.type": &component { surface_id: components, source_id: components-doc, method: official-doc, captured: "2026-07-11" }
|
|
94
|
+
"tokens.components.button.bg": *color
|
|
95
|
+
"tokens.components.button.fg": *color
|
|
96
|
+
"tokens.components.button.radius": *radius
|
|
97
|
+
"tokens.components.button.states": *component
|
|
98
|
+
"tokens.components.button.use": *component
|
|
99
|
+
"tokens.components.search-bar.type": *component
|
|
100
|
+
"tokens.components.search-bar.bg": *component
|
|
101
|
+
"tokens.components.search-bar.fg": *component
|
|
102
|
+
"tokens.components.search-bar.radius": *component
|
|
103
|
+
"tokens.components.search-bar.states": *component
|
|
104
|
+
"tokens.components.search-bar.use": *component
|
|
105
|
+
"tokens.components.price-marker.type": *component
|
|
106
|
+
"tokens.components.price-marker.bg": *component
|
|
107
|
+
"tokens.components.price-marker.fg": *component
|
|
108
|
+
"tokens.components.price-marker.radius": *component
|
|
109
|
+
"tokens.components.price-marker.states": *component
|
|
110
|
+
"tokens.components.price-marker.use": *component
|
|
111
|
+
"tokens.components.filter-chip.type": &results { surface_id: results, source_id: results-live, method: live-inspect, captured: "2026-07-11" }
|
|
112
|
+
"tokens.components.filter-chip.bg": *results
|
|
113
|
+
"tokens.components.filter-chip.fg": *results
|
|
114
|
+
"tokens.components.filter-chip.border": *results
|
|
115
|
+
"tokens.components.filter-chip.radius": *results
|
|
116
|
+
"tokens.components.filter-chip.use": *results
|
|
117
|
+
"tokens.components.listing-card.type": *results
|
|
118
|
+
"tokens.components.listing-card.bg": *results
|
|
119
|
+
"tokens.components.listing-card.radius": *results
|
|
120
|
+
"tokens.components.listing-card.use": *results
|
|
20
121
|
tokens:
|
|
21
|
-
source:
|
|
22
|
-
extracted: "2026-
|
|
122
|
+
source: reconciled
|
|
123
|
+
extracted: "2026-07-11"
|
|
124
|
+
note: "YDS 6.0 official foundations are canonical. Filter chips and listing cards are current product observations, not publicly documented YDS component specifications."
|
|
23
125
|
colors:
|
|
24
126
|
primary: "#1d8bff"
|
|
25
127
|
canvas: "#ffffff"
|
|
26
|
-
|
|
27
|
-
body: "#222222"
|
|
28
|
-
on-primary: "#ffffff"
|
|
29
|
-
tint-blue: "#e3f0ff"
|
|
30
|
-
coupon-red: "#f94239"
|
|
31
|
-
coupon-red-tint: "#ffedea"
|
|
32
|
-
rating-yellow: "#ffc83b"
|
|
33
|
-
member-slate: "#49627a"
|
|
128
|
+
foreground: "#222222"
|
|
34
129
|
border: "#e6e6e6"
|
|
130
|
+
red: "#f94239"
|
|
131
|
+
red-tint: "#ffedea"
|
|
132
|
+
blue-tint: "#e3f0ff"
|
|
133
|
+
yellow: "#ffc83b"
|
|
134
|
+
slate: "#49627a"
|
|
35
135
|
typography:
|
|
36
|
-
family: { sans: "Pretendard"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
badge: { size: 12, weight: 700, use: "Promo / coupon / member / rating" }
|
|
45
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
|
|
46
|
-
rounded: { sm: 3, md: 8, lg: 12, full: 9999 }
|
|
136
|
+
family: { sans: "Pretendard" }
|
|
137
|
+
display-large: { size: 32, weight: 700, lineHeight: 1.1875, use: "Highest display hierarchy" }
|
|
138
|
+
display-medium: { size: 24, weight: 700, lineHeight: 1.1667, use: "Page-level display hierarchy" }
|
|
139
|
+
title-large: { size: 18, weight: 700, lineHeight: 1.1111, use: "Large component or section title" }
|
|
140
|
+
body-medium: { size: 14, weight: 400, lineHeight: 1.4286, use: "Multiline product body" }
|
|
141
|
+
caption-large: { size: 12, weight: 400, lineHeight: 1.3333, use: "Multiline caption" }
|
|
142
|
+
spacing: { xs: 2, sm: 4, md: 8, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
|
|
143
|
+
rounded: { xs: 2, sm: 4, md: 8, lg: 12, xl: 20, full: 9999 }
|
|
47
144
|
shadow:
|
|
48
|
-
|
|
145
|
+
flat: "0 1px 2px rgba(0,0,0,.06)"
|
|
146
|
+
raised: "0 2px 16px rgba(0,0,0,.08)"
|
|
147
|
+
sheet: "0 4px 20px rgba(0,0,0,.32)"
|
|
49
148
|
components_harvested: true
|
|
50
149
|
components:
|
|
51
|
-
button
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
filter-chip: { type: badge, bg: "#ffffff", fg: "#222222",
|
|
55
|
-
|
|
56
|
-
listing-card: { type: card, bg: "#ffffff", radius: 12, padding: "0 0 24px", use: "Photo-led search-result / recommendation card" }
|
|
57
|
-
badge-rating: { type: badge, bg: "#ffc83b", radius: 6, padding: "4px 5px 3px 3px", font: "16/400", use: "Review score chip on every listing card" }
|
|
58
|
-
badge-promo: { type: badge, bg: "#e3f0ff", fg: "#1d8bff", radius: 3, padding: "0px 4px", font: "12/700", use: "반짝특가 flash-deal emphasis" }
|
|
59
|
-
badge-member: { type: badge, bg: "#49627a", fg: "#ffffff", radius: 3, padding: "3px 4px", font: "12/700", use: "회원가 member-rate flag" }
|
|
60
|
-
badge-coupon: { type: badge, bg: "#ffedea", fg: "#f94239", radius: 3, padding: "0px 4px", font: "12/700", use: "쿠폰 적용가 discount callout" }
|
|
150
|
+
button: { type: button, bg: "#1d8bff", fg: "#ffffff", radius: "8px", states: "enabled, pressed, disabled", use: "YDS public Button family; exact variant geometry belongs to the component page" }
|
|
151
|
+
search-bar: { type: input, bg: "#ffffff", fg: "#222222", radius: "12px", states: "idle, focused, typing, populated", use: "YDS public search pattern and product destination/accommodation search" }
|
|
152
|
+
price-marker: { type: badge, bg: "#ffffff", fg: "#222222", radius: "20px", states: "default, selected", use: "YDS public map price marker" }
|
|
153
|
+
filter-chip: { type: badge, bg: "#ffffff", fg: "#222222", border: "1.5px solid #e6e6e6", radius: "50%", use: "Observed product accommodation filters" }
|
|
154
|
+
listing-card: { type: card, bg: "#ffffff", radius: "12px", use: "Observed photo-led accommodation result pattern" }
|
|
61
155
|
---
|
|
62
156
|
|
|
63
|
-
# Design System Inspiration of 여기어때 (GoodChoice
|
|
157
|
+
# Design System Inspiration of 여기어때 (GoodChoice)
|
|
64
158
|
|
|
65
159
|
## 1. Visual Theme & Atmosphere
|
|
66
160
|
|
|
67
|
-
|
|
161
|
+
여기어때의 공개 디자인 체계는 숙소와 여행 상품을 빠르게 탐색·비교·예약하게 하는 제품 UI와 이를 지탱하는 YDS 6.0으로 나뉩니다. 실서비스는 목적지 사진이 주도하는 카드, 흰 배경, `#222222` 텍스트, Cyan 800 `#1D8BFF` 액션을 사용해 가격·평점·혜택·예약 가능성을 한 흐름에서 읽게 합니다. 공식 Design Library는 이 제품 관찰값보다 넓은 Lively Red, Cyan, Neutral, membership, multi-color 팔레트와 foundation 규칙을 제공합니다. 따라서 이 reference는 여행의 활기라는 브랜드 인상과 실제 예약 UI의 효율을 함께 설명하되, library token과 특정 live surface 측정값을 서로 대체하지 않습니다.
|
|
68
162
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
The overall impression: a hospitality-grade booking app that treats *photography of the room* as the brand asset, with chrome that gets out of the way. Where Yanolja goes more saturated and product-busy, 여기어때 leans cleaner — fewer overlays, more whitespace per card, and a single confident blue that never has to compete with a secondary brand hue.
|
|
72
|
-
|
|
73
|
-
**Key Characteristics:**
|
|
74
|
-
- Yeogiotte Blue (`#1D8BFF`) as the singular brand accent — confident booking blue, one notch warmer than fintech
|
|
75
|
-
- Pretendard system stack — no custom typeface, photography is the brand asset
|
|
76
|
-
- 8px button radius / 12px card radius / 100px (pill) filter chips — three-tier radius system
|
|
77
|
-
- Filter chips at 32px height with 1.5px borders — the most-touched UI primitive on /domestic-accommodations
|
|
78
|
-
- Badge system carries promo grammar: yellow `#FFC83B` rating · blue `#E3F0FF`/`#1D8BFF` "반짝특가" · slate `#49627A` "회원가" · red `#FFEDEA`/`#F94239` "쿠폰 적용가"
|
|
79
|
-
- 222 (`#222222`) text instead of pure black — softer reading at small sizes
|
|
80
|
-
- Photo-forward listing cards with no border, 12px radius, full-bleed thumbnail above metadata
|
|
163
|
+
2026-07-11 수집은 홈·국내 숙소 결과·공식 Design Library 6개 route, 총 8 surfaces를 대상으로 했습니다. 37 colors, 21 font families, 30 component variants, 3 interactions, coverage 95/100을 확보했고, `Pretendard`는 560개 요소에서 loaded/high confidence로 확인됐습니다.
|
|
81
164
|
|
|
82
165
|
## 2. Color Palette & Roles
|
|
83
166
|
|
|
84
|
-
|
|
85
|
-
- **
|
|
86
|
-
- **
|
|
87
|
-
- **
|
|
167
|
+
- **Cyan 800 `#1D8BFF`**: 현재 제품의 주요 탐색·행동 강조. 공식 palette token입니다.
|
|
168
|
+
- **Lively Red 800 `#F94239`**: 경고·할인 계열 의미에 쓰이는 공식 red scale의 핵심값입니다.
|
|
169
|
+
- **Lively Red 100 `#FFEDEA`**: red-tint soft surface.
|
|
170
|
+
- **White `#FFFFFF` / Neutral 900 `#222222`**: 기본 surface와 foreground.
|
|
171
|
+
- **Neutral 100 `#E6E6E6`**: 제품의 outline과 divider에서 관찰되는 light border.
|
|
172
|
+
- **Cyan 100 `#E3F0FF`**: blue soft surface.
|
|
173
|
+
- **Yellow 800 `#FFC83B`**: rating·multi-color emphasis.
|
|
174
|
+
- **Navy 500 `#49627A`**: member-price 계열 보조 강조.
|
|
88
175
|
|
|
89
|
-
|
|
90
|
-
- **Blue Tint** (`#E3F0FF`): "반짝특가" badge background, subtle blue-tinted promo surfaces.
|
|
176
|
+
채도가 있는 palette에는 임의 opacity를 적용하지 않는 것이 YDS 원칙입니다. 예외 opacity token은 공식 문서에 별도로 열거된 값만 사용합니다.
|
|
91
177
|
|
|
92
|
-
|
|
93
|
-
- **Coupon Red** (`#F94239`): Coupon-applied price emphasis, error-foreground candidate. Warm red.
|
|
94
|
-
- **Coupon Red Tint** (`#FFEDEA`): Coupon badge background, red-tinted soft surface.
|
|
95
|
-
- **Rating Yellow** (`#FFC83B`): Rating badge background — the universal review-score chip on every listing card.
|
|
96
|
-
- **Member-Price Slate** (`#49627A`): "회원가" badge background. A muted slate-blue used to distinguish the member rate without competing with the brand blue.
|
|
178
|
+
## 3. Typography Rules
|
|
97
179
|
|
|
98
|
-
###
|
|
99
|
-
- **Border Light** (`#E6E6E6`): Standard 1.5px button-outline and filter-chip border. The single neutral border value on the system.
|
|
100
|
-
- **Heading / Body** (`#222222`): Section titles, listing names, body copy.
|
|
101
|
-
- **Muted Foreground** (observed across listing meta as part of the dark-on-white system; no distinct lighter gray captured at the inspected viewport)
|
|
102
|
-
- **Shadow** (subtle, system-default — not a heavy elevation system)
|
|
180
|
+
### Font evidence boundary
|
|
103
181
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
182
|
+
| Evidence class | Resolution |
|
|
183
|
+
|---|---|
|
|
184
|
+
| Official product-use | YDS 6.0 typography foundation이 `Pretendard` 사용을 명시합니다. |
|
|
185
|
+
| Live surface-use | 홈·숙소 결과·Design Library에서 loaded Pretendard가 560개 요소에 관찰됐습니다. |
|
|
186
|
+
| Official distributed asset | 별도의 여기어때 전용 제품 서체 배포 근거는 확인되지 않았습니다. |
|
|
187
|
+
| Declared-only | 다른 family 선언은 visible usage 없이는 승격하지 않습니다. |
|
|
188
|
+
| Unresolved | 공개 foundation 밖의 native-app 전용 family는 검증 전까지 미확정입니다. |
|
|
108
189
|
|
|
109
|
-
|
|
190
|
+
Specimen availability is separate from family truth and requires a loadable, licensed source.
|
|
110
191
|
|
|
111
|
-
|
|
112
|
-
- **Primary**: `Pretendard, Pretendard_Fallback` (the entire system runs on Pretendard — Korean web sans default)
|
|
113
|
-
- **Design Principle**: No custom brand typeface. Pretendard's mature multi-weight Korean Hangul + Latin support carries both Korean destination names and Latin price digits without a font swap.
|
|
114
|
-
|
|
115
|
-
### Hierarchy
|
|
116
|
-
|
|
117
|
-
| Role | Size | Weight | Color | Notes |
|
|
118
|
-
|------|------|--------|-------|-------|
|
|
119
|
-
| Hero H1 | 32px | 700 | `#ffffff` (over hero image) | "국내부터 해외까지 여기어때" home hero |
|
|
120
|
-
| Page H1 | 24px | 700 | `#222222` | Search-result count headline (`'현재 위치 주변' 검색 결과 21,157개`) |
|
|
121
|
-
| Section H2 | 18px | 700 | `#222222` | "이벤트", "국내 인기 여행지", "인기 추천 숙소" |
|
|
122
|
-
| Listing Card H3 | 18px | 700 | `#222222` | Hotel/motel/펜션 name on listing card |
|
|
123
|
-
| Tab/Chip Label | 13px | 600 | `#222222` | Filter chips, price-range pills |
|
|
124
|
-
| Destination Tile H3 | 14px | 500 | `#222222` | Destination chip caption (`제주도`, `서울`) |
|
|
125
|
-
| Body | 14-16px | 400-600 | `#222222` | Card meta, descriptions |
|
|
126
|
-
| Search Input | 16px | 400 | `#222222` | "여행지나 숙소를 검색해보세요." placeholder |
|
|
127
|
-
| Search CTA | 15px | 700 | `#ffffff` | The hero search button "검색" |
|
|
128
|
-
| Primary Button | 14px | 600 | varies | Login/회원가입, 지도 보기 — the standard utility CTA |
|
|
129
|
-
| Badge | 12px | 700 | varies | Promo / coupon / member-price / rating |
|
|
130
|
-
|
|
131
|
-
### Principles
|
|
132
|
-
- **Three weights only**: 400 (body/placeholder), 500-600 (chip/title secondary), 700 (heading / price / CTA / badge). No light, no extra-bold.
|
|
133
|
-
- **Pretendard as system default**: Korean reads cleanly at 13-14px, Latin price digits stay aligned. No font swap between locales.
|
|
134
|
-
- **Bold for price, not for sales**: Listing card weight goes into the price line and the hotel name; descriptive metadata (location, distance) stays at 400-500.
|
|
192
|
+
국문·영문·숫자 모두 **Pretendard**를 사용합니다. 공식 scale은 Display Large 32/38부터 Badge 9/11까지 이어지고, UI Typo는 16·15·14·13·12·11·10px의 Semibold 계층을 제공합니다. Letter spacing은 별도값을 지정하지 않으며, 두 줄 이상은 multiline role을 사용합니다. Underline은 링크, strikethrough는 가격 원가에 한정합니다.
|
|
135
193
|
|
|
136
194
|
## 4. Component Stylings
|
|
137
195
|
|
|
196
|
+
공개 YDS component catalog는 현재 Button, Price marker, Search bar를 명시합니다. 아래 숙소 filter와 card는 동일 capture에서 확인한 제품 패턴이며, 공개 YDS 명세와 혼동하지 않습니다.
|
|
197
|
+
|
|
138
198
|
### Buttons
|
|
139
199
|
|
|
140
|
-
**Primary
|
|
200
|
+
**Primary Action**
|
|
201
|
+
- Type: button
|
|
141
202
|
- Background: `#1D8BFF`
|
|
142
|
-
- Text: `#
|
|
143
|
-
- Border: none
|
|
144
|
-
- Radius: 8px (utility) / 10px (hero search)
|
|
145
|
-
- Padding: 9px 14px (utility 40px) / 10px 18px (search 48px)
|
|
146
|
-
- Font: 14px / 600 (utility) · 15px / 700 (search)
|
|
147
|
-
- Use: Login/회원가입 solid, hero "검색" CTA, "지도 보기"
|
|
148
|
-
|
|
149
|
-
**Brand Outline (Login)**
|
|
150
|
-
- Background: `#ffffff`
|
|
151
|
-
- Text: `#1D8BFF`
|
|
152
|
-
- Border: 1.5px solid `#1D8BFF`
|
|
153
|
-
- Radius: 8px
|
|
154
|
-
- Padding: 9px 14px
|
|
155
|
-
- Font: 14px / 600
|
|
156
|
-
- Use: Top-right login/회원가입 entry point
|
|
157
|
-
|
|
158
|
-
**Neutral Outline (비회원 / 비회원 예약조회)**
|
|
159
|
-
- Background: `#ffffff`
|
|
160
|
-
- Text: `#222222`
|
|
161
|
-
- Border: 1.5px solid `#E6E6E6`
|
|
203
|
+
- Text: `#FFFFFF`
|
|
162
204
|
- Radius: 8px
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
- Use: Guest reservation lookup, low-emphasis utility
|
|
166
|
-
|
|
167
|
-
**Filter Chip (Pill)**
|
|
168
|
-
- Background: `#ffffff`
|
|
169
|
-
- Text: `#222222`
|
|
170
|
-
- Border: 1.5px solid `#E6E6E6`
|
|
171
|
-
- Radius: 100px (pill)
|
|
172
|
-
- Padding: 0px 16px
|
|
173
|
-
- Font: 13px / 600
|
|
174
|
-
- Height: 32px
|
|
175
|
-
- Use: Price range, hashtag filters (`#감성숙소`, `#연인추천`), star-rating filter, amenity filter — the most-touched UI primitive on `/domestic-accommodations`. Selected state inferred to fill `#1D8BFF` on the same geometry (not statically captured).
|
|
205
|
+
- States: enabled, pressed, disabled
|
|
206
|
+
- Use: 검색과 다음 단계로 이어지는 핵심 행동
|
|
176
207
|
|
|
177
208
|
### Inputs
|
|
178
209
|
|
|
179
|
-
**Search
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
- Type: `search`
|
|
187
|
-
- Use: Home search box — paired with the 48px Yeogiotte Blue "검색" submit button on the right
|
|
210
|
+
**Search Bar**
|
|
211
|
+
- Type: input
|
|
212
|
+
- Background: `#FFFFFF`
|
|
213
|
+
- Text: `#222222`
|
|
214
|
+
- Radius: 12px
|
|
215
|
+
- States: idle, focused, typing, populated
|
|
216
|
+
- Use: 여행지와 숙소 검색
|
|
188
217
|
|
|
189
218
|
### Cards
|
|
190
219
|
|
|
191
|
-
**Listing
|
|
192
|
-
-
|
|
193
|
-
-
|
|
220
|
+
**Accommodation Listing**
|
|
221
|
+
- Type: card
|
|
222
|
+
- Background: `#FFFFFF`
|
|
194
223
|
- Radius: 12px
|
|
195
|
-
-
|
|
196
|
-
-
|
|
197
|
-
- Use: The dominant content primitive — photo top, then `[type · grade · category]` metadata, then 18px / 700 name, then location + distance, then `[★ rating chip] [N명 평가]`, then price line (with strikethrough original + bold final). Used on every search-result and recommendation surface.
|
|
198
|
-
|
|
199
|
-
**Destination Chip Card**
|
|
200
|
-
- Background: `#ffffff`
|
|
201
|
-
- Border: none
|
|
202
|
-
- Radius: 12px
|
|
203
|
-
- Padding: 0 (image fills, label sits below)
|
|
204
|
-
- Use: "국내 인기 여행지", "해외 인기 여행지", "패키지 인기 여행지" rows. Image-led, label in 14px / 500.
|
|
224
|
+
- Shadow: none or Flat only
|
|
225
|
+
- Use: 사진, 숙소명, 위치, 평점, 가격의 반복 결과 구조
|
|
205
226
|
|
|
206
227
|
### Badges
|
|
207
228
|
|
|
208
|
-
**
|
|
209
|
-
-
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
- Use:
|
|
215
|
-
|
|
216
|
-
**Promo (Flash Deal · Blue Tint)**
|
|
217
|
-
- Background: `#E3F0FF`
|
|
218
|
-
- Text: `#1D8BFF`
|
|
219
|
-
- Radius: 3px
|
|
220
|
-
- Padding: 0px 4px
|
|
221
|
-
- Font: 12px / 700
|
|
222
|
-
- Use: "반짝특가" (flash deal) — brand-tinted promo emphasis; the only place Yeogiotte Blue appears on a non-button surface.
|
|
223
|
-
|
|
224
|
-
**Member-Price (Slate)**
|
|
225
|
-
- Background: `#49627A`
|
|
226
|
-
- Text: `#ffffff`
|
|
227
|
-
- Radius: 3px
|
|
228
|
-
- Padding: 3px 4px
|
|
229
|
-
- Font: 12px / 700
|
|
230
|
-
- Use: "회원가" — distinguishes logged-in member rate without using brand blue, so it reads as utility rather than promotion.
|
|
231
|
-
|
|
232
|
-
**Coupon Red**
|
|
233
|
-
- Background: `#FFEDEA`
|
|
234
|
-
- Text: `#F94239`
|
|
235
|
-
- Radius: 3px
|
|
236
|
-
- Padding: 0px 4px
|
|
237
|
-
- Font: 12px / 700
|
|
238
|
-
- Use: "4,500원 쿠폰 적용가", "8% 쿠폰 적용가" — coupon-applied price callout. Warm red signals discount, not error.
|
|
239
|
-
|
|
240
|
-
## 5. Layout Principles
|
|
241
|
-
|
|
242
|
-
### Spacing System
|
|
243
|
-
- Base unit: 4px
|
|
244
|
-
- Observed scale: 4, 8, 14, 16, 18, 24px
|
|
245
|
-
- Card internal: 24px bottom padding for meta block under photo
|
|
246
|
-
- Filter chip horizontal padding: 16px
|
|
247
|
-
- Button horizontal padding: 14px (utility) / 18px (hero CTA)
|
|
248
|
-
|
|
249
|
-
### Grid & Container
|
|
250
|
-
- Web home: full-width hero image with centered search panel
|
|
251
|
-
- Listing grid: multi-column on desktop (`/domestic-accommodations`), collapses on narrower viewports
|
|
252
|
-
- Filter chip row: horizontal scroll, no wrap, 32px chip height
|
|
253
|
-
- Destination chip rows: horizontal scroll (제주도 / 서울 / 부산 / 강릉 / 인천 / 경주 / 해운대 / 가평 / 여수 / 속초)
|
|
254
|
-
|
|
255
|
-
### Whitespace Philosophy
|
|
256
|
-
- **Photo-as-content**: Listing cards reserve the top half for the photo with no chrome on the image; metadata sits below in a quiet text block.
|
|
257
|
-
- **Chip rhythm**: 32px filter chips sit on a single horizontal scroll row. Density per chip is high (13px / 600 / pill / 16px h-padding) because users scan dozens of filters per session.
|
|
258
|
-
- **Separation by spacing, not by outline**: Listing cards have no border. Cards separate via gap (whitespace), keeping the visual surface calm.
|
|
259
|
-
|
|
260
|
-
### Border Radius Scale
|
|
261
|
-
- Tight (3px): Inline badges (promo, coupon, member-price)
|
|
262
|
-
- Standard (6px): Rating badge
|
|
263
|
-
- Comfortable (8px): Buttons (utility geometry)
|
|
264
|
-
- Hero (10px): Hero "검색" submit button
|
|
265
|
-
- Card (12px): Listing cards, destination chips, search-wrapper container
|
|
266
|
-
- Pill (100px): Filter chips, hashtag chips
|
|
267
|
-
|
|
268
|
-
## 6. Iconography
|
|
269
|
-
|
|
270
|
-
여기어때's iconography is utilitarian and travel-vertical specific. Most icons are **monochrome `#222222`** glyphs that sit alongside text labels rather than replacing them. The only icon that reaches into a non-neutral color is the rating chip's star (gold-on-yellow context). On filter chips, the **hashtag character (`#`)** is treated as part of the label text (`#감성숙소`, `#반려견`) rather than as a glyph — Yeogiotte's filter taxonomy is text-first.
|
|
271
|
-
|
|
272
|
-
Category iconography on the home grid (호텔, 모텔, 펜션, 풀빌라, 캠핑, 패키지여행, 항공권 예약) leans on photo-illustrated thumbnails rather than flat geometric icons — the brand wants the user to feel the destination, not navigate a Material design language.
|
|
273
|
-
|
|
274
|
-
**Use rules:**
|
|
275
|
-
- Monochrome `#222222` icons paired with text labels for navigation
|
|
276
|
-
- Icon-only buttons reserved for utility (close, back, share, favorite)
|
|
277
|
-
- No two-tone or branded-blue icons in the main flow — blue is reserved for CTAs and "반짝특가"
|
|
278
|
-
|
|
279
|
-
## 7. Motion Principles
|
|
280
|
-
|
|
281
|
-
여기어때's motion is **functional and brisk**, oriented around the booking flow rather than expressive brand presence. There is no overshoot or spring stance observed on the chrome surfaces; transitions are short cubic-beziers in the standard easing family.
|
|
282
|
-
|
|
283
|
-
**Stance:**
|
|
284
|
-
- Filter-chip selection: instant fill state change to `#1D8BFF`, no bounce
|
|
285
|
-
- Listing-card tap feedback: subtle press-state (likely opacity or background tint at `motion-fast`)
|
|
286
|
-
- Image carousels (hero promos): horizontal scroll with snap, no inertia animations
|
|
287
|
-
- Modal/sheet entry: `motion-standard` slide-up with `ease-enter`
|
|
288
|
-
- Reduce motion: cross-fades replace slides; chip selection becomes instant (already is)
|
|
289
|
-
|
|
290
|
-
The brand context — booking real money on a real stay — discourages playful motion. Every kinetic moment is calibrated to feel **fast and committed**, like a confirmation, not a celebration.
|
|
291
|
-
|
|
292
|
-
## 8. Photography & Imagery
|
|
293
|
-
|
|
294
|
-
Photography is the load-bearing brand asset. Every listing card, destination chip, and hero panel surfaces a real photograph at a generous size:
|
|
295
|
-
- **Listing card photo**: full-card width, ~16:9-ish (varies by room type), no overlay, no text-on-photo
|
|
296
|
-
- **Destination chip**: square or near-square crop with gentle border-radius, label below the image (not on it)
|
|
297
|
-
- **Hero**: full-bleed lifestyle photography (`/home/home_key_visual/01_kv_domestic.png`) with white H1 placed in the upper-left band, search panel anchored over the lower band
|
|
298
|
-
|
|
299
|
-
**Rules:**
|
|
300
|
-
- No mint/blue color overlays on photography — let the actual destination do the work
|
|
301
|
-
- Promo badges (반짝특가, 쿠폰) sit in the metadata block below the photo, never on the image
|
|
302
|
-
- Photos go edge-to-edge inside a 12px-radius card; the radius clips the photo, no inner image padding
|
|
303
|
-
- Pricing strikethrough + final-price typography sits below the photo, not over it
|
|
304
|
-
|
|
305
|
-
## 9. Quick Color Reference
|
|
306
|
-
|
|
307
|
-
| Token | Hex | Use |
|
|
308
|
-
|---|---|---|
|
|
309
|
-
| Primary CTA | `#1D8BFF` | Search, login, 지도 보기 — every solid CTA |
|
|
310
|
-
| Body Dark | `#222222` | All headings, body, chip labels |
|
|
311
|
-
| Border Light | `#E6E6E6` | Filter chip + ghost button border (1.5px) |
|
|
312
|
-
| Card Surface | `#ffffff` | Listing card, destination chip, button bg |
|
|
313
|
-
| Rating Yellow | `#FFC83B` | Review-score chip on every listing card |
|
|
314
|
-
| Promo Blue Tint | `#E3F0FF` | "반짝특가" badge background |
|
|
315
|
-
| Member Slate | `#49627A` | "회원가" badge background |
|
|
316
|
-
| Coupon Red | `#F94239` | Coupon-applied price text |
|
|
317
|
-
| Coupon Red Tint | `#FFEDEA` | Coupon badge background |
|
|
318
|
-
| Hero Text | `#ffffff` | H1 over hero photography |
|
|
319
|
-
|
|
320
|
-
## 10. Voice & Tone
|
|
321
|
-
|
|
322
|
-
여기어때's voice is **plain-Korean utility with a faint hospitality warmth**. Where Yanolja leans more aggressive-marketing and where Booking.com translates English-first, 여기어때 stays in **conversational Korean booking register**: short verb-stem CTAs (`검색`, `로그인/회원가입`, `지도 보기`), polite-요 endings on instructional copy (`여행지나 숙소를 검색해보세요.`), and hashtag filter taxonomy (`#감성숙소`, `#연인추천`, `#반려견`, `#뷰맛집`) that reads like the user's own search intent rendered as UI. The brand's tagline — *"국내부터 해외까지 여행·숙소 예약은 여기어때"* — leans on the brand-name pun (*"how about here?"*) rather than on aspirational adjectives. The product never says "luxurious" or "premium"; it says "★당일특가★" (today-only special) and "쿠폰 적용시" (when coupon applied) and lets the photo carry the rest.
|
|
323
|
-
|
|
324
|
-
| Context | Tone |
|
|
325
|
-
|---|---|
|
|
326
|
-
| Top-bar utility | Two-character Korean nouns/verbs (`검색`, `로그인`, `장바구니`-equivalents). Never English on chrome. |
|
|
327
|
-
| Hero CTA | Single 2-char verb (`검색`) on `#1D8BFF` solid — confident, declarative |
|
|
328
|
-
| Filter chips | Hashtag-prefixed user-language (`#감성숙소`, `#스파`, `#OTT`) and price-range plain Korean (`5만원 이하`, `5~10만원`) |
|
|
329
|
-
| Promo badges | 2-4 character Korean superlatives in 700 weight: `반짝특가`, `당일특가`, `회원가`, `쿠폰 적용시` |
|
|
330
|
-
| Search placeholder | Polite-요 instructional (`여행지나 숙소를 검색해보세요.`) — leans into hospitality posture |
|
|
331
|
-
| Listing card meta | Plain factual Korean (`강문해변 도보 3분`, `보문관광단지 부근`) — distance/location is the trust signal |
|
|
332
|
-
| Empty / error | (Not directly captured in this pass — production teams should observe live before shipping copy) |
|
|
333
|
-
| Payment / refund | (Not captured — assumed formal `합니다` register based on Korean booking convention) |
|
|
334
|
-
|
|
335
|
-
**Forbidden phrases (recommended).** `불편을 드려 죄송합니다` as a boilerplate opener, English `Oops` / `Sorry` on Korean UI, generic `데이터가 없습니다` / `오류가 발생했습니다`. Never decorate `#감성숙소` with extra adjectives — the hashtag *is* the entire label, and overwriting it dilutes the user-language posture. Avoid stacking two promo badges of the same color family on the same card (e.g., `반짝특가` + another blue-tint badge); it desaturates the trust hierarchy.
|
|
336
|
-
|
|
337
|
-
**Voice samples (live-verified).**
|
|
338
|
-
|
|
339
|
-
- `국내부터 해외까지 여기어때` — hero H1 on home <!-- verified: yeogi.com 2026-05 -->
|
|
340
|
-
- `국내부터 해외까지 여행·숙소 예약은 여기어때` — hero sub-tagline <!-- verified: yeogi.com 2026-05 -->
|
|
341
|
-
- `여행지나 숙소를 검색해보세요.` — search input placeholder <!-- verified: yeogi.com 2026-05 -->
|
|
342
|
-
- `검색` — hero CTA on `#1D8BFF` <!-- verified: yeogi.com 2026-05 -->
|
|
343
|
-
- `로그인/회원가입` — top-right outline + solid variant <!-- verified: yeogi.com 2026-05 -->
|
|
344
|
-
- `비회원 예약조회` — guest reservation lookup <!-- verified: yeogi.com 2026-05 -->
|
|
345
|
-
- `지도 보기` — search-result page CTA <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
|
|
346
|
-
- `★당일특가★` — listing-card promo prefix on hotel names <!-- verified: yeogi.com 2026-05 -->
|
|
347
|
-
- `쿠폰 적용시` — price line qualifier <!-- verified: yeogi.com 2026-05 -->
|
|
348
|
-
- `반짝특가` — promo badge string <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
|
|
349
|
-
- `회원가` — member-price slate badge <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
|
|
350
|
-
- `#감성숙소`, `#연인추천`, `#반려견` — hashtag filter chip labels <!-- verified: yeogi.com/domestic-accommodations 2026-05 -->
|
|
229
|
+
**Price Marker**
|
|
230
|
+
- Type: badge
|
|
231
|
+
- Background: `#FFFFFF`
|
|
232
|
+
- Text: `#222222`
|
|
233
|
+
- Radius: 20px
|
|
234
|
+
- States: default, selected
|
|
235
|
+
- Use: 지도 위 가격 탐색
|
|
351
236
|
|
|
352
|
-
|
|
237
|
+
**Filter Chip — observed product pattern**
|
|
238
|
+
- Type: badge
|
|
239
|
+
- Background: `#FFFFFF`
|
|
240
|
+
- Text: `#222222`
|
|
241
|
+
- Border: 1.5px solid `#E6E6E6`
|
|
242
|
+
- Radius: 50%
|
|
243
|
+
- Use: 가격·등급·편의시설 필터
|
|
353
244
|
|
|
354
|
-
|
|
245
|
+
**Verified:** 2026-07-11 (eight-surface deterministic capture plus official in-app inspection)
|
|
246
|
+
**Tier 1 sources:** https://www.yeogi.com/ , https://www.yeogi.com/domestic-accommodations , https://designlibrary.yeogi.com/ , https://designlibrary.yeogi.com/foudations/color/palette-color , https://designlibrary.yeogi.com/foudations/typography , https://designlibrary.yeogi.com/foudations/layout , https://designlibrary.yeogi.com/foudations/radius , https://designlibrary.yeogi.com/components/overview
|
|
355
247
|
|
|
356
|
-
|
|
248
|
+
## 5. Layout & Spacing
|
|
357
249
|
|
|
358
|
-
|
|
250
|
+
기본 화면 좌우 margin은 20px, JTBD module을 강조하는 화면은 10px입니다. module width는 screen width minus 20px, radius는 20px, module section bottom spacing은 12px입니다. 공식 spacing scale은 2, 4, 8, 10, 12, 14, 16, 20, 24, 28, 32, 36, 40, 48, 56, 64, 96px입니다.
|
|
359
251
|
|
|
360
|
-
|
|
252
|
+
## 6. Shape, Border & Elevation
|
|
361
253
|
|
|
362
|
-
|
|
254
|
+
공식 radius tokens는 2, 3, 4, 8, 10, 12, 16, 20px와 50%입니다. Core sizes는 8, 12, 20px입니다. Shadow는 Flat, Header, Dock, Raised, Float, Sheet의 용도별 단계이며, 반복 card에는 Flat 또는 Raised, dialog에는 Raised, bottom sheet에는 Sheet를 사용합니다.
|
|
363
255
|
|
|
364
|
-
##
|
|
256
|
+
## 7. Imagery & Iconography
|
|
365
257
|
|
|
366
|
-
|
|
258
|
+
실서비스의 핵심 시각 자산은 숙소와 여행지 사진입니다. 아이콘은 장식보다 검색·필터·탐색 affordance를 보조해야 합니다. 공식 iconography를 확인할 수 없는 새 glyph나 임의 stroke 규칙은 추가하지 않습니다.
|
|
367
259
|
|
|
368
|
-
|
|
260
|
+
### Do
|
|
369
261
|
|
|
370
|
-
|
|
262
|
+
- 숙소와 여행지 사진을 탐색 정보의 첫 단서로 사용합니다.
|
|
263
|
+
- 검색·필터 아이콘에는 텍스트 label이나 접근 가능한 이름을 제공합니다.
|
|
371
264
|
|
|
372
|
-
|
|
265
|
+
### Don't
|
|
373
266
|
|
|
374
|
-
|
|
267
|
+
- 검증되지 않은 icon stroke나 brand illustration 규칙을 만들지 않습니다.
|
|
268
|
+
- 저대비 사진 위에 핵심 가격이나 행동 label을 직접 올리지 않습니다.
|
|
375
269
|
|
|
376
|
-
|
|
270
|
+
## 8. Component Patterns
|
|
377
271
|
|
|
378
|
-
|
|
272
|
+
제품 결과 화면의 반복 문법은 `photo → property metadata → name → location → rating → price`입니다. 검색은 하나의 명확한 query surface로 유지하고, 필터는 결과를 가리지 않는 compact chip으로 제공합니다. 공개 YDS component coverage가 세 family에 한정되므로 비공개 component anatomy를 추정해 채우지 않습니다.
|
|
379
273
|
|
|
380
|
-
##
|
|
274
|
+
## 9. Interaction & Motion
|
|
381
275
|
|
|
382
|
-
|
|
276
|
+
확인된 상태는 버튼·검색바·price marker의 기본/선택/입력 흐름과 product filter interaction입니다. duration이나 easing은 공개 source에서 확인되지 않았으므로 고정 token을 만들지 않습니다. 상태 변화는 색상만이 아니라 label, border, focus affordance로도 구분합니다.
|
|
383
277
|
|
|
384
|
-
|
|
278
|
+
## 10. Responsive Behavior
|
|
385
279
|
|
|
386
|
-
|
|
280
|
+
YDS layout은 모바일 screen margin을 20px로 두고, 강조 module에서 10px로 줄입니다. desktop web의 최대폭이나 breakpoint는 공개 foundation에서 확인되지 않았으므로 구현 환경의 content constraint를 따르되 토큰처럼 주장하지 않습니다.
|
|
387
281
|
|
|
388
|
-
|
|
282
|
+
제품 카피는 여행자가 지금 결정해야 하는 정보와 다음 행동을 짧게 연결합니다. 목적지·날짜·인원·가격·혜택처럼 비교에 필요한 명사는 먼저 보여주고, 검색·예약·확인 CTA는 동사형으로 유지합니다. 감성적인 여행 문구는 hero나 campaign에 둘 수 있지만 가격 조건, 취소 규정, 재고, 오류 상태를 덮어서는 안 됩니다. 확인되지 않은 push·오류 문구 규칙은 만들지 않으며, live surface에서 관찰된 용례만 예시로 사용합니다.
|
|
389
283
|
|
|
390
|
-
##
|
|
284
|
+
## 11. Brand Narrative
|
|
391
285
|
|
|
392
|
-
|
|
393
|
-
|---|---|
|
|
394
|
-
| **Empty (no search results)** | One factual line in `#222222` body weight (`'<query>' 검색 결과가 없어요`-pattern). Suggested-region or suggested-hashtag chips below in the standard 100px pill geometry. Never a mascot illustration on functional surfaces. |
|
|
395
|
-
| **Empty (filter cleared)** | Single line of muted body text. No CTA — user resets the filter via the same chip row. |
|
|
396
|
-
| **Loading (listing list)** | Skeleton cards at exact final dimensions — `#E6E6E6`-tone blocks for photo (top region), name row, meta row, price row. Shimmer ≤ 1.2s. Rating chip skeleton renders as a yellow-tone block (preserving the visual anchor) without a digit, so users don't read a placeholder `0.0`. |
|
|
397
|
-
| **Loading (search submit)** | Hero `#1D8BFF` "검색" button shows a 3-dot white animation replacing the label text. Button width does not change. |
|
|
398
|
-
| **Loading (image carousel)** | Card photo region renders a `#F4F4F4` placeholder block until the JPEG resolves. No spinner over the photo. |
|
|
399
|
-
| **Selected (filter chip)** | Filter chip background fills `#1D8BFF`, text becomes `#ffffff`, border becomes `1.5px solid #1D8BFF`. Geometry stays identical (100px / 32px / 16px h-padding) so the row doesn't reflow on toggle. |
|
|
400
|
-
| **Hover / press (button)** | Solid blue button darkens slightly (observed via interaction; static value approximated as a 6-8% darker blue). No scale, no bounce. |
|
|
401
|
-
| **Error (inline field)** | Input border becomes `2px solid #F94239`, helper text below in `#F94239` 13px / 400. One actionable Korean sentence. Avoids `오류가 발생했습니다`. |
|
|
402
|
-
| **Error (network)** | Top banner with dark surface, white 14px text, one sentence + retry. Auto-dismiss when connectivity returns. |
|
|
403
|
-
| **Success (booking confirmed)** | Dedicated confirmation screen — not a toast. Reservation number 16px / 600 `#222222`, property name 18-20px / 700, dates and price block, single primary `#1D8BFF` CTA `예약 내역 보기`. Booking is ceremonial here — the receipt matters. |
|
|
404
|
-
| **Success (favorited)** | Heart icon fills, brief 200ms scale pulse (`1.0 → 1.1 → 1.0`) using a calm easing — the only place the system tolerates a tiny motion flourish. |
|
|
405
|
-
| **Skeleton** | `#E6E6E6` blocks at exact card dimensions. Rating slot uses a yellow-tinted skeleton (preserves visual rhythm). Price slot renders as `---원` until resolved — never `0원`, which would misread as "free." |
|
|
406
|
-
| **Disabled (button)** | Background drops to `#E6E6E6`, text to `#888-ish` muted gray. Geometry stays identical so re-enable is frame-stable. |
|
|
407
|
-
|
|
408
|
-
## 15. Motion & Easing
|
|
409
|
-
|
|
410
|
-
여기어때's motion is **functional and brisk** — calibrated for a booking flow where users move through {search → filter → list → card → details → checkout} in a session and where every transition is information-bearing. There is no spring stance or overshoot on the chrome surfaces; the brand's posture is "confident booking," not "playful app."
|
|
411
|
-
|
|
412
|
-
**Durations:**
|
|
413
|
-
|
|
414
|
-
| Token | Value | Use |
|
|
415
|
-
|---|---|---|
|
|
416
|
-
| `motion-instant` | 0ms | Toggle commits, checkbox state changes |
|
|
417
|
-
| `motion-fast` | 150ms | Hover, focus, button press overlay, chip selection, image thumb tap |
|
|
418
|
-
| `motion-standard` | 250ms | The default — sheet opens, card expand, tab switch, toast appear |
|
|
419
|
-
| `motion-slow` | 350ms | Booking confirmation reveal, success screen entrance |
|
|
420
|
-
| `motion-page` | 300ms | Route transitions between top-level tabs (해외여행 ↔ 국내숙소) |
|
|
421
|
-
|
|
422
|
-
**Easings:**
|
|
423
|
-
|
|
424
|
-
| Token | Curve | Use |
|
|
425
|
-
|---|---|---|
|
|
426
|
-
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Things appearing — sheets, toasts, screen pushes |
|
|
427
|
-
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Things leaving — dismissals, pops |
|
|
428
|
-
| `ease-standard` | `cubic-bezier(0.4, 0.0, 0.2, 1)` | Two-way transitions — card expand/collapse, filter-chip toggle |
|
|
429
|
-
|
|
430
|
-
**Spring stance.** **Spring and overshoot easings are forbidden across 여기어때 chrome and money surfaces.** Booking is a money decision; a CTA that wobbles or a confirmation card that springs reads as toy-like in a context where users are committing to a real stay at a real price. The single licensed exception is the favorite-heart toggle, which gets a 200ms `1.0 → 1.1 → 1.0` scale pulse using `ease-standard` (not `ease-bounce`) — enough tactility to feel like a press, not enough to feel like a game.
|
|
431
|
-
|
|
432
|
-
**Signature motions.**
|
|
433
|
-
|
|
434
|
-
1. **Filter-chip selection.** Background fills `#1D8BFF`, text inverts to `#ffffff`, all over `motion-fast` with `ease-standard`. No geometry change.
|
|
435
|
-
2. **Listing-card tap.** Card scales `1.0 → 0.98` over `motion-fast / ease-standard` on press, returns on release. The route transition follows on `motion-page / ease-enter`.
|
|
436
|
-
3. **Search submit.** "검색" button label replaced by 3-dot loader; button geometry frozen. On result page entry, the result-count H1 fades in with `motion-standard / ease-enter`.
|
|
437
|
-
4. **Filter-chip row scroll.** Native horizontal scroll with snap. No inertia overshoot — the system snaps cleanly to the next chip boundary.
|
|
438
|
-
5. **Booking confirmation.** Confirmation card fades+rises from `y+20px` over `motion-slow / ease-enter`. The reservation number, property name, and CTA stagger in at 80ms intervals — calm, not theatrical.
|
|
439
|
-
6. **Reduce motion.** Under `prefers-reduced-motion: reduce`, all `motion-*` tokens collapse to `motion-instant`. Cross-fades replace slides. The favorite-heart pulse is suppressed entirely. The app stays fully usable.
|
|
440
|
-
|
|
441
|
-
<!--
|
|
442
|
-
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
443
|
-
|
|
444
|
-
Tier 1 — live DOM (playwright getComputedStyle, isolated browser context, 2026-05-09):
|
|
445
|
-
- https://yeogi.com/ — home: hero H1 32px·700 white, search input "여행지나 숙소를 검색해보세요.", search CTA #1D8BFF / #ffffff / 10px / 10×18 / 48px / 15px·700, login outline #1D8BFF border 1.5px / 8px / 9×14 / 40px / 14px·600, login solid #1D8BFF / 14px·600, 비회원 예약조회 #E6E6E6 outline / 14px·600, listing cards 12px radius / no border / white bg / 343px height with 0 0 24px padding, destination chip H3 14px·500.
|
|
446
|
-
- https://yeogi.com/domestic-accommodations — search-result page: filter chips 100px radius / 1.5px solid #E6E6E6 / 32px / 16px h-padding / 13px·600, "지도 보기" #1D8BFF solid 8px / 9×14 / 40px / 14px·600, badges captured: rating #FFC83B / 6px / 4×5, "반짝특가" #E3F0FF/#1D8BFF / 3px / 12px·700, "회원가" #49627A/white / 3px / 12px·700, coupon "쿠폰 적용가" #FFEDEA/#F94239 / 3px / 12px·700.
|
|
447
|
-
|
|
448
|
-
Tier 2 — Cross-check (WebFetch, 2026-05-09):
|
|
449
|
-
- https://getdesign.md/yeogiotte — no record ("No designs found for 'yeogiotte'")
|
|
450
|
-
- https://getdesign.md/goodchoice — no record ("No designs found for 'goodchoice'")
|
|
451
|
-
- styles.refero.design — not separately fetched this pass.
|
|
452
|
-
Tier 2 status: unavailable. Tier 1 (yeogi.com home + /domestic-accommodations) treated as authoritative.
|
|
453
|
-
|
|
454
|
-
Philosophy / Founders (Tier 1, WebSearch 2026-05-09):
|
|
455
|
-
- Founder Shim Myung-seop (심명섭), Daegu vocational HS → community college → SMS/PowerPoint/ad-agency entrepreneur → 2008 founded With Web → 2014 launched 여기어때 in-house → 2015 spun out 위드이노베이션 — sourced from 1boon (kakao jobsN), 한국관광스타트업협회 interview, 머니S 2015 article.
|
|
456
|
-
- 2018 founder prosecution & step-back — 한국경제 2018-11.
|
|
457
|
-
- 2019 CVC Capital Partners acquisition (~85%, ~₩300B / ~$300M) — KED Global "CVC to buy Korea's No.2 hotel booking app in $300mn deal" (2019-08), PaxNet News, Crunchbase Good Choice Company profile.
|
|
458
|
-
- 2020 rename 위드이노베이션 → 여기어때컴퍼니 — 서울경제, 전자신문 2019-11.
|
|
459
|
-
- 2024 IPO bookrunner selection — 인베스트조선 2024-08.
|
|
460
|
-
- 2025 온라인투어 acquisition — Travel Times.
|
|
461
|
-
- KKR misattribution corrected: actual acquirer is CVC Capital Partners (UK PE), not KKR — explicitly noted in §11 as the "frequently-confused fact" callout.
|
|
462
|
-
|
|
463
|
-
Style ref: baemin/karrot (Korean utility brands) — voice register conventions (polite-요 placeholder, two-character verb-form CTAs, hashtag taxonomy preserving Korean characters) cross-referenced from web/references/karrot/DESIGN.md and web/references/baemin/DESIGN.md.
|
|
464
|
-
|
|
465
|
-
Personas (§13) are fictional archetypes informed by publicly described 여기어때 user segments (Korean urban young couples for 모텔, family for 펜션, expats booking domestic Korean stays). Any resemblance to specific individuals is unintended.
|
|
466
|
-
|
|
467
|
-
Interpretive claims (editorial, not documented Yeogiotte brand statements):
|
|
468
|
-
- "Hashtag taxonomy mirrors user search intent" framing in §12 P3 — editorial reading of the live filter UX, not a sourced product statement.
|
|
469
|
-
- "One blue, scarce" rule in §12 P1 — derived from observed live usage on home + /domestic-accommodations, not a published Yeogiotte design-system rule.
|
|
470
|
-
- The KKR-vs-CVC clarification in §11 — KKR is widely confused in casual press; primary press citations confirm CVC.
|
|
471
|
-
-->
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
## 16. Do's and Don'ts
|
|
286
|
+
공식 Design Library가 밝히는 범위에서 여기어때의 디자인 언어는 여행을 위한 시각 언어이며 app/web 일관성을 유지하는 데 목적이 있습니다. YDS는 색, typography, layout, component를 공통 언어로 제공하고, 실제 제품은 이를 사진 중심 탐색과 예약 결정에 적용합니다. 이 결합이 중요한 이유는 여행 서비스가 영감과 거래를 동시에 다루기 때문입니다: 이미지는 가고 싶은 마음을 만들고, 명확한 정보 위계와 CTA는 그 마음을 실행 가능한 예약으로 바꿉니다.
|
|
475
287
|
|
|
476
|
-
|
|
477
|
-
- Reserve Yeogiotte Blue `#1D8BFF` for primary CTAs (hero `검색`, login, `지도 보기`), filter-chip selected-state, and the `반짝특가` promo badge, targeting ≤2 blue elements per viewport in a primary flow
|
|
478
|
-
- Hold to the three-tier radius scale of 8px buttons, 12px cards, and 100px filter pills, with inline badges at the tight 3-6px range
|
|
479
|
-
- Set body and headings in Pretendard at `#222222` rather than pure black, and confine 700 weight to the listing name, final price, promo badges, and hero CTA while keeping location and distance meta at 400-500
|
|
480
|
-
- Render the promo-badge grammar by role: yellow `#FFC83B` rating chip, blue-tint `#E3F0FF`/`#1D8BFF` `반짝특가`, slate `#49627A` `회원가`, and red `#FFEDEA`/`#F94239` coupon-applied price
|
|
481
|
-
- Separate borderless `#ffffff` listing cards by whitespace gap and let the edge-to-edge room photo fill the 12px-radius card top, placing all badges and pricing in the metadata block below
|
|
482
|
-
- Keep hashtag filter chips in user-language Korean (`#감성숙소`, `#연인추천`, `#반려견`) on a single 32px-tall horizontal-scroll row with 1.5px `#E6E6E6` borders as the primary filter surface
|
|
288
|
+
현재 공개 surface에서 확인되는 정체성은 활기만 강조하는 광고 브랜드가 아니라, 수많은 숙소 조건을 비교하는 사용자의 부담을 줄이는 제품입니다. 그래서 accent color는 행동과 선택 상태에 집중되고, typography는 장식보다 가격·평점·혜택의 스캔을 지원합니다. 창업·인수·시장순위 같은 제3자 기업 서사는 디자인 근거로 사용하지 않습니다.
|
|
483
289
|
|
|
484
|
-
|
|
485
|
-
- Use `#1D8BFF` as a hero background, card fill, divider, or decorative accent, or let three blue surfaces compete on one screen instead of demoting to the `#E3F0FF` tint
|
|
486
|
-
- Style the `회원가` member-rate badge in brand blue, red, or yellow — keep it on slate `#49627A` so it reads as account utility, not a flash deal
|
|
487
|
-
- Reach for an off-system radius like 10px, 14px, or 20px on a button or card when the answer is one of 8px, 12px, or pill
|
|
488
|
-
- Place any promo or coupon badge on top of the room photo or tint the photo with a brand-color filter — badges live below the image and the destination must read true
|
|
489
|
-
- Translate hashtag chips into category-style labels like `Romantic Stays` or `Pet-Friendly`, add extra adjectives to `#감성숙소`, or collapse the filter-chip row behind a primary `Filters` modal
|
|
490
|
-
- Apply spring or overshoot easing to chrome and money surfaces, bold an entire listing card, or stack two same-color-family promo badges on one card
|
|
290
|
+
YDS와 live product를 함께 읽으면 여기어때의 차별점은 특정 장식 하나보다 여행 결정의 리듬에 있습니다. 넓은 탐색에서는 사진과 카테고리가 관심을 만들고, 목록에서는 반복 가능한 metadata가 비교를 돕고, 상세와 예약에서는 행동과 조건이 선명해집니다. 이 reference는 그 리듬을 재현하되 공식 foundation에 없는 native pattern이나 campaign 표현을 전체 시스템 규칙으로 확대하지 않습니다.
|
|
491
291
|
|
|
492
|
-
|
|
292
|
+
## 12. Design Principles
|
|
293
|
+
|
|
294
|
+
- 여행 선택에 필요한 정보 위계를 먼저 보여줍니다.
|
|
295
|
+
- app/web 간 foundation과 component 사용을 일관되게 유지합니다.
|
|
296
|
+
- 강조는 JTBD가 필요한 최상단 module에 제한합니다.
|
|
297
|
+
- 공식 token과 실서비스 관찰 패턴의 증거 수준을 구분합니다.
|
|
298
|
+
- 가격·혜택·취소 조건 같은 결정 정보를 이미지나 감성 문구 뒤에 숨기지 않습니다.
|
|
299
|
+
- 색만으로 선택·오류·할인을 구분하지 않고 텍스트와 구조를 함께 제공합니다.
|
|
300
|
+
- **사진과 정보가 역할을 나눕니다.** 사진은 장소의 성격을 전달하고, 텍스트는 비교와 거래 조건을 책임집니다.
|
|
301
|
+
- **surface 근거를 보존합니다.** YDS 규칙, 웹 관찰값, 확인되지 않은 앱 동작을 한 수준의 사실로 합치지 않습니다.
|
|
302
|
+
|
|
303
|
+
## 13. Personas
|
|
304
|
+
|
|
305
|
+
공식 Design Library와 공개 제품 surface에는 검증 가능한 persona 정의가 없습니다. 확인 가능한 것은 작업 맥락입니다: 목적지와 날짜를 정해 숙소를 검색하는 사람, 가격·평점·혜택을 비교하는 사람, 예약 조건을 확인하고 결제 단계로 이동하는 사람, 그리고 app/web 사이에서 같은 여행을 이어가는 사람입니다. 이는 인구통계학적 persona가 아니며, 별도 사용자 조사 없이 이름·나이·동기·인용문을 만들어서는 안 됩니다.
|
|
306
|
+
|
|
307
|
+
## 14. Accessibility
|
|
308
|
+
|
|
309
|
+
작은 badge와 caption에서도 의미를 색상 하나에만 의존하지 않습니다. 사진 위 텍스트는 별도 contrast surface를 확보하고, search·filter·button은 visible focus와 명시적 label을 유지합니다. 정확한 contrast ratio나 target size는 별도 검증 전에는 주장하지 않습니다.
|
|
310
|
+
|
|
311
|
+
## 15. Implementation Checklist
|
|
493
312
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
**Style ref:** `baemin` + `karrot` (KR utility-brand voice register conventions retained).
|
|
500
|
-
**Conflicts unresolved:** none. **Earlier mistake reverted:** prompt initially assumed Yeogiotte's primary was a "signature pink/magenta"; live measurement on yeogi.com home + /domestic-accommodations (2026-05-09) shows the brand has a **single confident blue** `#1D8BFF` as its sole accent, not pink. The DESIGN.md is written to the live-verified blue system. Acquirer correction: prompt suggested KKR; press citations confirm CVC Capital Partners (2019).
|
|
313
|
+
- Pretendard를 국문·영문·숫자 공통 family로 사용합니다.
|
|
314
|
+
- Cyan 800을 product primary action에 사용하되 전체 브랜드를 단일 blue palette로 축약하지 않습니다.
|
|
315
|
+
- 20px 기본 screen margin과 공식 spacing/radius scale을 우선합니다.
|
|
316
|
+
- 공개 YDS components와 product-observed patterns를 코드·문서에서 구분합니다.
|
|
317
|
+
- 새로운 motion, persona, breakpoint, component state를 근거 없이 만들지 않습니다.
|