oh-my-design-cli 1.3.9 → 1.5.1
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/README.ja.md +8 -8
- package/README.ko.md +7 -7
- package/README.md +50 -16
- package/README.zh-TW.md +8 -8
- package/agents/omd-asset-curator.md +2 -7
- package/agents/omd-codex-image.md +49 -0
- package/agents/omd-designer-review.md +38 -0
- package/agents/omd-final-qa.md +40 -0
- package/agents/omd-kr-writer.md +35 -0
- package/agents/omd-locale-adapter.md +32 -0
- package/agents/omd-master.md +3 -13
- package/agents/omd-orchestrator.md +34 -0
- package/data/reference-audits/2026-05-14-kr10.md +72 -0
- package/data/reference-audits/2026-05-15-kr10.md +124 -0
- package/data/reference-fingerprints.json +1409 -254
- package/data/research/2026-05-18-agent-landscape.md +69 -0
- package/data/research/2026-05-18-kr-style-presets.md +572 -0
- package/dist/bin/oh-my-design.js +6 -3
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/{install-skills-MVXVXYAY.js → install-skills-IETT2TBJ.js} +91 -8
- package/dist/install-skills-IETT2TBJ.js.map +1 -0
- package/package.json +7 -1
- package/skills/omd-apply/SKILL.md +0 -1
- package/skills/omd-codex-image/SKILL.md +162 -0
- package/skills/omd-designer-review/SKILL.md +146 -0
- package/skills/omd-final-qa/SKILL.md +153 -0
- package/skills/omd-kr-writer/SKILL.md +229 -0
- package/skills/omd-locale-adapter/SKILL.md +124 -0
- package/skills/omd-orchestrator/SKILL.md +124 -0
- package/web/references/17live/DESIGN.md +424 -0
- package/web/references/29cm/DESIGN.md +11 -2
- package/web/references/ably/DESIGN.md +12 -2
- package/web/references/airbnb/DESIGN.md +17 -2
- package/web/references/airtable/DESIGN.md +20 -0
- package/web/references/alipay/DESIGN.md +456 -0
- package/web/references/appier/DESIGN.md +420 -0
- package/web/references/apple/DESIGN.md +17 -2
- package/web/references/baemin/DESIGN.md +11 -2
- package/web/references/banksalad/DESIGN.md +17 -2
- package/web/references/bilibili/DESIGN.md +426 -0
- package/web/references/bmw/DESIGN.md +14 -0
- package/web/references/bunjang/DESIGN.md +308 -0
- package/web/references/cal/DESIGN.md +14 -0
- package/web/references/catchtable/DESIGN.md +262 -0
- package/web/references/channeltalk/DESIGN.md +374 -0
- package/web/references/class101/DESIGN.md +433 -0
- package/web/references/classum/DESIGN.md +217 -0
- package/web/references/claude/DESIGN.md +11 -2
- package/web/references/clay/DESIGN.md +19 -0
- package/web/references/clickhouse/DESIGN.md +19 -0
- package/web/references/cohere/DESIGN.md +20 -0
- package/web/references/coinbase/DESIGN.md +14 -0
- package/web/references/composio/DESIGN.md +14 -0
- package/web/references/cookpad/DESIGN.md +357 -0
- package/web/references/coupang/DESIGN.md +17 -2
- package/web/references/cursor/DESIGN.md +20 -0
- package/web/references/dabang/DESIGN.md +210 -0
- package/web/references/dcard/DESIGN.md +11 -2
- package/web/references/dji/DESIGN.md +416 -0
- package/web/references/elevenlabs/DESIGN.md +20 -0
- package/web/references/expo/DESIGN.md +20 -0
- package/web/references/fastcampus/DESIGN.md +460 -0
- package/web/references/ferrari/DESIGN.md +14 -0
- package/web/references/figma/DESIGN.md +17 -2
- package/web/references/flex/DESIGN.md +309 -0
- package/web/references/framer/DESIGN.md +20 -0
- package/web/references/freee/DESIGN.md +16 -2
- package/web/references/gangnamunni/DESIGN.md +18 -2
- package/web/references/gmarket/DESIGN.md +464 -0
- package/web/references/gogoro/DESIGN.md +403 -0
- package/web/references/hashicorp/DESIGN.md +19 -0
- package/web/references/ibm/DESIGN.md +20 -0
- package/web/references/ichef/DESIGN.md +411 -0
- package/web/references/inflearn/DESIGN.md +396 -0
- package/web/references/intercom/DESIGN.md +14 -0
- package/web/references/jumpit/DESIGN.md +366 -0
- package/web/references/kakao/DESIGN.md +14 -0
- package/web/references/kakaobank/DESIGN.md +17 -2
- package/web/references/kakaopay/DESIGN.md +17 -2
- package/web/references/kakaot/DESIGN.md +454 -0
- package/web/references/karrot/DESIGN.md +16 -2
- package/web/references/kbank/DESIGN.md +195 -0
- package/web/references/kkday/DESIGN.md +423 -0
- package/web/references/kraken/DESIGN.md +14 -0
- package/web/references/krds/DESIGN.md +17 -2
- package/web/references/kream/DESIGN.md +382 -0
- package/web/references/kurly/DESIGN.md +11 -2
- package/web/references/lamborghini/DESIGN.md +14 -0
- package/web/references/line/DESIGN.md +17 -2
- package/web/references/linear.app/DESIGN.md +17 -2
- package/web/references/lovable/DESIGN.md +14 -0
- package/web/references/lunit/DESIGN.md +249 -0
- package/web/references/meituan/DESIGN.md +424 -0
- package/web/references/mercari/DESIGN.md +11 -2
- package/web/references/millie/DESIGN.md +533 -0
- package/web/references/minimax/DESIGN.md +14 -0
- package/web/references/mintlify/DESIGN.md +14 -0
- package/web/references/miro/DESIGN.md +20 -0
- package/web/references/mistral.ai/DESIGN.md +20 -0
- package/web/references/money-forward/DESIGN.md +401 -0
- package/web/references/mongodb/DESIGN.md +19 -0
- package/web/references/musinsa/DESIGN.md +11 -2
- package/web/references/myrealtrip/DESIGN.md +445 -0
- package/web/references/naver/DESIGN.md +17 -2
- package/web/references/naverwebtoon/DESIGN.md +429 -0
- package/web/references/note/DESIGN.md +318 -0
- package/web/references/notion/DESIGN.md +11 -2
- package/web/references/nvidia/DESIGN.md +11 -2
- package/web/references/ohouse/DESIGN.md +11 -2
- package/web/references/oliveyoung/DESIGN.md +342 -0
- package/web/references/ollama/DESIGN.md +14 -0
- package/web/references/opencode.ai/DESIGN.md +20 -0
- package/web/references/pinkoi/DESIGN.md +11 -2
- package/web/references/pinterest/DESIGN.md +19 -0
- package/web/references/posthog/DESIGN.md +20 -0
- package/web/references/publy/DESIGN.md +511 -0
- package/web/references/qanda/DESIGN.md +11 -2
- package/web/references/raycast/DESIGN.md +19 -0
- package/web/references/remember/DESIGN.md +17 -2
- package/web/references/renault/DESIGN.md +14 -0
- package/web/references/replicate/DESIGN.md +14 -0
- package/web/references/resend/DESIGN.md +20 -0
- package/web/references/revolut/DESIGN.md +14 -0
- package/web/references/ridi/DESIGN.md +11 -2
- package/web/references/runwayml/DESIGN.md +14 -0
- package/web/references/sanity/DESIGN.md +20 -0
- package/web/references/sentry/DESIGN.md +14 -0
- package/web/references/smarthr/DESIGN.md +404 -0
- package/web/references/smartnews/DESIGN.md +331 -0
- package/web/references/socar/DESIGN.md +17 -2
- package/web/references/spacex/DESIGN.md +11 -2
- package/web/references/spoon/DESIGN.md +446 -0
- package/web/references/spotify/DESIGN.md +14 -0
- package/web/references/stripe/DESIGN.md +11 -2
- package/web/references/supabase/DESIGN.md +20 -0
- package/web/references/superhuman/DESIGN.md +20 -0
- package/web/references/tada/DESIGN.md +528 -0
- package/web/references/tesla/DESIGN.md +11 -2
- package/web/references/together.ai/DESIGN.md +20 -0
- package/web/references/toss/DESIGN.md +16 -2
- package/web/references/toss-securities/DESIGN.md +193 -0
- package/web/references/tossbank/DESIGN.md +519 -0
- package/web/references/triple/DESIGN.md +434 -0
- package/web/references/tumblbug/DESIGN.md +530 -0
- package/web/references/tving/DESIGN.md +259 -0
- package/web/references/uber/DESIGN.md +19 -0
- package/web/references/upbit/DESIGN.md +276 -0
- package/web/references/upstage/DESIGN.md +214 -0
- package/web/references/vercel/DESIGN.md +17 -2
- package/web/references/voltagent/DESIGN.md +14 -0
- package/web/references/wadiz/DESIGN.md +344 -0
- package/web/references/wanted/DESIGN.md +16 -2
- package/web/references/warp/DESIGN.md +14 -0
- package/web/references/watcha/DESIGN.md +425 -0
- package/web/references/wavve/DESIGN.md +438 -0
- package/web/references/wconcept/DESIGN.md +511 -0
- package/web/references/webflow/DESIGN.md +14 -0
- package/web/references/wise/DESIGN.md +19 -0
- package/web/references/x.ai/DESIGN.md +14 -0
- package/web/references/xiaohongshu/DESIGN.md +423 -0
- package/web/references/yanolja/DESIGN.md +17 -2
- package/web/references/yeogiotte/DESIGN.md +18 -2
- package/web/references/yogiyo/DESIGN.md +465 -0
- package/web/references/zapier/DESIGN.md +20 -0
- package/web/references/zigbang/DESIGN.md +12 -2
- package/web/references/zigzag/DESIGN.md +17 -2
- package/agents/omd-3d-blender.md +0 -269
- package/dist/install-skills-MVXVXYAY.js.map +0 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: oliveyoung
|
|
3
|
+
name: Olive Young
|
|
4
|
+
display_name_kr: Olive Young (올리브영)
|
|
5
|
+
country: KR
|
|
6
|
+
category: ecommerce
|
|
7
|
+
homepage: "https://www.oliveyoung.co.kr"
|
|
8
|
+
primary_color: "#000000"
|
|
9
|
+
logo:
|
|
10
|
+
type: favicon
|
|
11
|
+
slug: "https://www.google.com/s2/favicons?domain=oliveyoung.co.kr&sz=256"
|
|
12
|
+
verified: "2026-05-15"
|
|
13
|
+
omd: "0.1"
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 1. Visual Theme & Atmosphere
|
|
17
|
+
|
|
18
|
+
Olive Young presents as a **dense, scan-first H&B catalog**: a near-monochrome grayscale chrome (white surface, body ink `#666`, primary ink `#131518`) carries 90%+ of the surface, then snaps awake at the product card with a **five-color flag taxonomy** — `#F65C60` sale, `#F374B7` 오늘드림 same-day, `#9BCE26` coupon, `#6FCFF7` gift, plus the `#F05A5E` best-badge ring. Korean retail visual culture (Coupang, Wadiz, 11번가) leans on weight and tag-color over heroes; Olive Young sits at the disciplined end of that lineage — grid-tight, photo-led, with `#fff` ground for product respect and chromatic noise reserved for status payload. Architecturally the site is **dual-stack** — legacy JSP `Montserrat → NotoSansCJKkr → AppleSDGothicNeo → 돋움` chrome on `/store/main/*`, `/best`, `/search`, while the new Next.js subtree (visible on `/store/goods/getGoodsDetail.do` even in its ProductNotFound shell — `ProductNotFound_btn__`, `GnbForDesktop_category-toggle-button__`, `OYCompanyInfo_*` CSS Modules, runtime `--background:#0a0a0a / --foreground:#ededed / --font-noto-sans-kr / --font-roboto`) signals a multi-year token refresh in flight on product-detail first. Mood word: *brisk pharmacy aisle* — bright, taxonomic, no rhetorical lift, the work happens at the thumbnail.
|
|
19
|
+
|
|
20
|
+
## 2. Color
|
|
21
|
+
|
|
22
|
+
| Token | Value | Role |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `ink/primary` | `rgb(19, 21, 24)` ≈ `#131518` | GNB items, nav, headings on white |
|
|
25
|
+
| `ink/default` | `rgb(51, 51, 51)` ≈ `#333` | Card titles, mid-weight copy |
|
|
26
|
+
| `ink/body` | `rgb(102, 102, 102)` ≈ `#666` | Body default (also `body` element color) |
|
|
27
|
+
| `ink/muted` | `rgb(136, 136, 136)` ≈ `#888` | Meta lines, inactive pagination |
|
|
28
|
+
| `ink/disabled` | `rgb(170, 170, 170)` ≈ `#AAA` | Disabled |
|
|
29
|
+
| `ink/neutral-dark` | `rgb(47, 48, 48)` ≈ `#2F3030` | Active pagination fill |
|
|
30
|
+
| `ink/neutral-alt` | `rgb(69, 76, 83)` ≈ `#454C53` | "신상 더보기" outline button text |
|
|
31
|
+
| `ink/neutral-alt-2` | `rgb(80, 88, 95)` ≈ `#50585F` | Footer links / company-info button |
|
|
32
|
+
| `ink/neutral-alt-3` | `rgb(117, 125, 134)` ≈ `#757D86` | Chip text |
|
|
33
|
+
| `surface/white` | `#FFFFFF` | Ground (≈ all chrome) |
|
|
34
|
+
| `surface/paper` | `rgb(246, 247, 249)` ≈ `#F6F7F9` | Filter strip / quiet panels |
|
|
35
|
+
| `line/default` | `rgb(229, 231, 234)` ≈ `#E5E7EA` | Chip + card border |
|
|
36
|
+
| `line/thin` | `rgb(235, 235, 235)` ≈ `#EBEBEB` | 1px tile separator (heart-button border) |
|
|
37
|
+
| `flag/sale` | `rgb(246, 92, 96)` ≈ `#F65C60` | "세일" pill |
|
|
38
|
+
| `flag/best` | `rgb(240, 90, 94)` ≈ `#F05A5E` | "베스트" badge ring + text |
|
|
39
|
+
| `flag/same-day` | `rgb(243, 116, 183)` ≈ `#F374B7` | "오늘드림" |
|
|
40
|
+
| `flag/coupon` | `rgb(155, 206, 38)` ≈ `#9BCE26` | "쿠폰" (closest live token to brand olive) |
|
|
41
|
+
| `flag/gift` | `rgb(111, 207, 247)` ≈ `#6FCFF7` | "증정" |
|
|
42
|
+
| `accent/promo-salmon` | `rgb(242, 115, 112)` ≈ `#F27370` | Promotional shelf accent on /best |
|
|
43
|
+
| `nextjs/dark-bg` | `#0a0a0a` | Next.js subtree fallback background var |
|
|
44
|
+
| `nextjs/dark-fg` | `#ededed` | Next.js subtree fallback foreground var |
|
|
45
|
+
|
|
46
|
+
**Discipline rule** (observed): Olive Young **does not put hue on its chrome**. Buttons, nav, footer, search input, headings all sit on `#000–#888` neutrals; the five flag hues exist **only inside the thumbnail rectangle** as status payload. Olive Green (the corporate logotype color) is **absent from the storefront chrome** — the closest live token is the lime-leaning coupon flag `#9BCE26`.
|
|
47
|
+
|
|
48
|
+
## 3. Typography
|
|
49
|
+
|
|
50
|
+
- **Stack (legacy JSP chrome):** `Montserrat, -apple-system, NotoSansCJKkr, AppleSDGothicNeo, Roboto, dotum, 돋움, sans-serif`
|
|
51
|
+
- **Stack (Next.js subtree):** `-apple-system, system-ui, AppleSDGothicNeo, "Noto Sans", Roboto, Montserrat, sans-serif`
|
|
52
|
+
- **Body:** 14px / 400 / `#666` / lh ~1.4
|
|
53
|
+
- **Size scale observed:** 12, 13, 13.33, 14, 15, 16, 20, 26, 28 px (no formal modular scale; the `13.333px` shows up in buttons converted from `0.833em`)
|
|
54
|
+
- **Weight scale:** 200 (rare ornamental), 400, 500 (Next.js subtree), 700 (default emphasis)
|
|
55
|
+
- **H1:** 28px / 700 (legacy main) — used sparingly; most surfaces are H-less
|
|
56
|
+
- **Korean rendering:** intentional 4-stop fallback chain ending at `dotum / 돋움` preserves rendering for legacy WinXP/MacOS Korean readers (uncommon discipline in 2026 KR e-commerce — legacy retention not pruned)
|
|
57
|
+
|
|
58
|
+
## 4. Components
|
|
59
|
+
|
|
60
|
+
### Button — Primary (filled black CTA, legacy chrome)
|
|
61
|
+
|
|
62
|
+
**Default**
|
|
63
|
+
- Background: `#000000`
|
|
64
|
+
- Text: `#FFFFFF`
|
|
65
|
+
- Border: 0
|
|
66
|
+
- Radius: `4px`
|
|
67
|
+
- Padding: ~`12px 18px` (h≈40)
|
|
68
|
+
- Font: 13.33px / 700 / Montserrat→NotoSansCJKkr
|
|
69
|
+
- Use: "장바구니 담기" / primary commit on legacy surfaces
|
|
70
|
+
|
|
71
|
+
### Button — Outline neutral
|
|
72
|
+
|
|
73
|
+
**Default**
|
|
74
|
+
- Background: `#FFFFFF`
|
|
75
|
+
- Text: `#454C53`
|
|
76
|
+
- Border: `1px solid #E5E7EA`
|
|
77
|
+
- Radius: `4px`
|
|
78
|
+
- Padding: ~`10px 16px` (h≈40)
|
|
79
|
+
- Font: 14px / 500
|
|
80
|
+
- Use: "신상 더보기" / secondary actions
|
|
81
|
+
|
|
82
|
+
### Button — Pagination
|
|
83
|
+
|
|
84
|
+
**Active**
|
|
85
|
+
- Background: `#2F3030`
|
|
86
|
+
- Text: `#FFFFFF`
|
|
87
|
+
- Border: 0
|
|
88
|
+
- Radius: `50%` (circular)
|
|
89
|
+
- Size: 24×24
|
|
90
|
+
- Font: 14px / 700
|
|
91
|
+
- Use: Current page indicator
|
|
92
|
+
|
|
93
|
+
**Default**
|
|
94
|
+
- Background: transparent
|
|
95
|
+
- Text: `#888888`
|
|
96
|
+
- Border: 0
|
|
97
|
+
- Radius: 0
|
|
98
|
+
- Font: 14px / 700
|
|
99
|
+
- Use: Other-page link
|
|
100
|
+
|
|
101
|
+
### Pill — Category (top-of-main shortcut)
|
|
102
|
+
|
|
103
|
+
**Active**
|
|
104
|
+
- Background: `#000000`
|
|
105
|
+
- Text: `#FFFFFF`
|
|
106
|
+
- Border: 0
|
|
107
|
+
- Radius: `20px`
|
|
108
|
+
- Padding: ~`8px 14px` (h≈34)
|
|
109
|
+
- Font: 14px / 400
|
|
110
|
+
- Use: Selected category shortcut
|
|
111
|
+
|
|
112
|
+
**Default**
|
|
113
|
+
- Background: `#FFFFFF`
|
|
114
|
+
- Text: `#757D86`
|
|
115
|
+
- Border: `1px solid #E5E7EA` (inferred — same chip family)
|
|
116
|
+
- Radius: `20px`
|
|
117
|
+
- Font: 14px / 400
|
|
118
|
+
- Use: Unselected category shortcut
|
|
119
|
+
|
|
120
|
+
### Chip — Filter (search results)
|
|
121
|
+
|
|
122
|
+
**Default**
|
|
123
|
+
- Background: `#FFFFFF`
|
|
124
|
+
- Text: `#757D86`
|
|
125
|
+
- Border: `1px solid #E5E7EA`
|
|
126
|
+
- Radius: `18px`
|
|
127
|
+
- Padding: ~`8px 14px` (h=36)
|
|
128
|
+
- Font: 14px / 400
|
|
129
|
+
- Use: 제품특징 / 가격대 / 색상 facet filters
|
|
130
|
+
|
|
131
|
+
### Flag — Status pill (in-thumbnail status payload)
|
|
132
|
+
|
|
133
|
+
**Sale**
|
|
134
|
+
- Background: `#F65C60`
|
|
135
|
+
- Text: `#FFFFFF`
|
|
136
|
+
- Border: 0
|
|
137
|
+
- Radius: `9px`
|
|
138
|
+
- Padding: ~`3px 6px` (h=18)
|
|
139
|
+
- Font: 12px / 400
|
|
140
|
+
- Use: Active price discount
|
|
141
|
+
|
|
142
|
+
**Same-day (오늘드림)**
|
|
143
|
+
- Background: `#F374B7`
|
|
144
|
+
- Text: `#FFFFFF`
|
|
145
|
+
- Border: 0
|
|
146
|
+
- Radius: `9px`
|
|
147
|
+
- Font: 12px / 400
|
|
148
|
+
- Use: Same-day quick-commerce eligibility
|
|
149
|
+
|
|
150
|
+
**Coupon**
|
|
151
|
+
- Background: `#9BCE26`
|
|
152
|
+
- Text: `#FFFFFF`
|
|
153
|
+
- Border: 0
|
|
154
|
+
- Radius: `9px`
|
|
155
|
+
- Font: 12px / 400
|
|
156
|
+
- Use: Coupon-eligible SKU
|
|
157
|
+
|
|
158
|
+
**Gift**
|
|
159
|
+
- Background: `#6FCFF7`
|
|
160
|
+
- Text: `#FFFFFF`
|
|
161
|
+
- Border: 0
|
|
162
|
+
- Radius: `9px`
|
|
163
|
+
- Font: 12px / 400
|
|
164
|
+
- Use: Gift-with-purchase
|
|
165
|
+
|
|
166
|
+
### Badge — Best (large pill, sash-style)
|
|
167
|
+
|
|
168
|
+
**Default**
|
|
169
|
+
- Background: `#FFFFFF`
|
|
170
|
+
- Text: `#F05A5E`
|
|
171
|
+
- Border: `2px solid #F05A5E`
|
|
172
|
+
- Radius: `24px` (pill)
|
|
173
|
+
- Padding: ~`8px 18px` (h=48)
|
|
174
|
+
- Font: 14px / 700
|
|
175
|
+
- Use: Best-seller call-out on hero rails
|
|
176
|
+
|
|
177
|
+
### Heart — Wishlist button
|
|
178
|
+
|
|
179
|
+
**Idle (off)**
|
|
180
|
+
- Background: `#FFFFFF`
|
|
181
|
+
- Icon color: (icon-asset, color via SVG fill)
|
|
182
|
+
- Border: `1px solid #EBEBEB`
|
|
183
|
+
- Radius: 0 (square hit-box)
|
|
184
|
+
- Size: 40×40
|
|
185
|
+
- Use: 찜하기 toggle
|
|
186
|
+
|
|
187
|
+
### Input — Search (GNB)
|
|
188
|
+
|
|
189
|
+
**Default**
|
|
190
|
+
- Background: `#FFFFFF`
|
|
191
|
+
- Text: `#131518`
|
|
192
|
+
- Border: bottom-only / inherited
|
|
193
|
+
- Radius: 0
|
|
194
|
+
- Height: 38
|
|
195
|
+
- Font: 13.33px (legacy) / 16px (Next.js)
|
|
196
|
+
- Use: Global product search
|
|
197
|
+
|
|
198
|
+
### Card — Product tile (search/list)
|
|
199
|
+
|
|
200
|
+
**Default**
|
|
201
|
+
- Background: `#FFFFFF`
|
|
202
|
+
- Thumbnail aspect: 1:1 square (standard for KR H&B grid)
|
|
203
|
+
- Title: 14px / 400 / `#333`
|
|
204
|
+
- Brand: 12px / 400 / `#888`
|
|
205
|
+
- Price (active): 14–16px / 700 / `#131518`
|
|
206
|
+
- Strike price: 12px / 400 / `#AAA` line-through
|
|
207
|
+
- Flag area: 9px-radius pills inside thumb corner
|
|
208
|
+
- Border: 0 (separated by `#EBEBEB` grid gap)
|
|
209
|
+
- Use: Search result / category list / best list
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
**Verified:** 2026-05-15
|
|
214
|
+
**Tier 1 sources:** CDP `:9222` getComputedStyle on (a) `https://www.oliveyoung.co.kr/store/main/main.do` 65 distinct samples · (b) `/store/main/getBestList.do` 33 samples · (c) `/store/search/getSearchMain.do?query=선크림` 55 samples · (d) `/store/goods/getGoodsDetail.do?goodsNo=A000000167660` 26 samples on Next.js shell. Total **179 distinct DOM samples** across 4 surfaces. Artifacts: `assets/_reference/tokens.json`, `structure.json`, `fonts.json`, `.live-inspect-proof.json` (11 raw_samples — over the ≥5 floor).
|
|
215
|
+
**Tier 1 official DS:** ✗ negative — `design.oliveyoung.co.kr` no DNS, `oliveyoung.design` no DNS, `corp.oliveyoung.com/*` 404, `cjoliveyoung.co.kr` ECONNREFUSED, no public Figma library, no `github.com/oliveyoung*` design-system repo. Documented authoritative negative. **Discovery**: production code reveals a **dual-stack migration in flight** (legacy JSP chrome + Next.js product-detail subtree with `--background/--foreground/--font-noto-sans-kr/--font-roboto` runtime vars + `*_btn__hash` CSS-Modules) — the canonical token system lives inside the Next.js bundle, not on a public docs surface.
|
|
216
|
+
**Tier 2 sources:** ✗ getdesign.md/oliveyoung — fetch blocked by Claude auto-mode classifier (domain not user-allowlisted), unable to verify presence/absence this pass; ✗ styles.refero.design `?q=oliveyoung` — no result cards.
|
|
217
|
+
**Conflicts unresolved:** none material — `accent/promo-salmon #F27370` vs `flag/best #F05A5E` differ by 2 RGB steps; treated as **two distinct tokens** since they appear on different surface roles (promo shelf vs taxonomic badge). Flagged for UPDATE pass: product-detail (real SKU), cart, my-page, mobile (`m.oliveyoung.co.kr`) — not captured this session.
|
|
218
|
+
|
|
219
|
+
## 5. Layout & Grid
|
|
220
|
+
|
|
221
|
+
- **Page width:** 1280px fixed container (legacy chrome); Next.js subtree fluid
|
|
222
|
+
- **GNB:** 90px header inner + 119px design-area (banner row), fixed top
|
|
223
|
+
- **Search input:** 38px height
|
|
224
|
+
- **Card grid (search/best):** 4-up desktop, square thumbnails, ~16px gutter
|
|
225
|
+
- **Filter strip (search):** 36px chips, paper bg `#F6F7F9`, top of result column
|
|
226
|
+
- **Pagination:** 24×24 circular active dot, centered below grid
|
|
227
|
+
|
|
228
|
+
## 6. Iconography
|
|
229
|
+
|
|
230
|
+
- **Style:** Outlined line icons at 16–24px, monochrome ink (no two-tone). Stroke ~1.5px. Korean retail convention (cart/heart/coupon/gift glyphs) inherited rather than custom.
|
|
231
|
+
- **Filled use:** Only in flag pills (no in-pill icon; pill itself is the icon).
|
|
232
|
+
- **Heart:** Outline default → filled `#F05A5E` on active (inferred from `btn_zzim jeem` class semantics).
|
|
233
|
+
|
|
234
|
+
## 7. Motion & Easing
|
|
235
|
+
|
|
236
|
+
- **Carousel transitions:** `slick` carousel (legacy) on hero rails — default 300ms slide
|
|
237
|
+
- **Hover states:** Catalog tiles use static hover (no lift / no shadow gain — depth is line-only in the system; corroborates the 0-shadow observation)
|
|
238
|
+
- **Next.js subtree:** `--swiper-theme-color: #007aff` exposed (default Swiper iOS blue; visual non-load because chrome overrides)
|
|
239
|
+
- **Floor:** No site-wide CSS custom-property motion tokens — durations live inside vendor carousels (slick, Swiper). Flagged as a follow-up: motion token harvest from product-detail page after a real SKU loads.
|
|
240
|
+
|
|
241
|
+
## 8. Accessibility & Density
|
|
242
|
+
|
|
243
|
+
- **Body 14px / #666 on white** = ~5.7:1 contrast — passes WCAG AA for body text, fails AAA for small text
|
|
244
|
+
- **Chip text `#757D86` on white** = ~4.5:1 — at the AA floor; chips with mixed-case Korean (대 vs ㅏ) are legible but borderline
|
|
245
|
+
- **Flag contrasts (white text on flag color):**
|
|
246
|
+
- Sale `#F65C60` ≈ 3.2:1 → **fails AA for normal text**; passes for 14px bold or larger via Korean Bold-text exception; documented trade-off
|
|
247
|
+
- Coupon `#9BCE26` + white ≈ 1.8:1 → **fails AA**; legibility relies on the 12px size + bold-by-CJK rendering
|
|
248
|
+
- Gift `#6FCFF7` + white ≈ 1.6:1 → **fails AA**
|
|
249
|
+
- **Touch targets:** Pagination 24×24 below WCAG 2.5.5 (44×44) — speed-over-floor decision typical of KR catalog UIs
|
|
250
|
+
- **Korean fallback chain ends at 돋움** — explicit legacy-OS support, rare in 2026
|
|
251
|
+
|
|
252
|
+
## 9. Voice & Tone
|
|
253
|
+
|
|
254
|
+
- **Voice adjectives (3):** *Direct · Functional · Promotional* — no rhetorical lift; copy works as labels and offers.
|
|
255
|
+
- **Korean style:** Casual-polite ("~해요/세요"), declarative, comma-light, status-first ("세일", "오늘드림", "쿠폰", "증정"). Imperative-light — even CTAs read as factual ("장바구니 담기" not "지금 사세요").
|
|
256
|
+
- **Pattern:** Verb + 하기 noun ("찜하기", "담기", "더보기", "1:1문의하기") is the dominant CTA shape — observed on 6+ buttons across captures.
|
|
257
|
+
- **Do / Don't (fresh OmD illustrative — not Olive Young verbatim):**
|
|
258
|
+
|
|
259
|
+
| Do | Don't |
|
|
260
|
+
|---|---|
|
|
261
|
+
| "쿠폰가 보기" | "지금 안 사면 손해예요" |
|
|
262
|
+
| "내 피부톤에 맞는 쿠션 골라보기" | "당신을 위해 골랐어요" |
|
|
263
|
+
| "오늘 받는 상품만 보기" | "오늘 안 받으면 후회해요" |
|
|
264
|
+
|
|
265
|
+
**Voice samples (3 fresh illustrative reconstructions — not Olive Young copy):**
|
|
266
|
+
1. "오늘 도착 가능한 상품만 모았어요." — same-day filter affordance
|
|
267
|
+
2. "회원이면 ₩2,000 더 저렴해요." — soft commercial nudge, declarative not imperative
|
|
268
|
+
3. "이 색상은 다음 주에 다시 들어올 것 같아요." — OOS state, soft restock signal
|
|
269
|
+
|
|
270
|
+
**IP guardrail:** No verbatim Olive Young marketing copy reproduced. Voice samples above are OmD-original constructions modelled on the observed *shape* (casual-polite + declarative + 하기-verb), not the substance.
|
|
271
|
+
|
|
272
|
+
## 10. Brand Narrative
|
|
273
|
+
|
|
274
|
+
CJ Olive Young is the H&B (Health & Beauty) retail arm of **CJ Group**, founded 1999 and operating as Korea's #1 omnichannel H&B chain — ~1,300 stores nationwide plus the `oliveyoung.co.kr` web/app and `global.oliveyoung.com` cross-border surface. Its visual posture matches its category position: not a beauty *aspirational brand* (no editorial hero shots, no rhetorical typography), but the **default aisle** — a high-velocity catalog where SKU density, in-stock status, same-day eligibility, and coupon math do the persuasive work. The recent migration of product-detail to Next.js (visible in production as of 2026-05-15) and the runtime CSS-vars (`--background / --foreground / --font-noto-sans-kr`) signal an in-flight design-system rebuild — likely consolidating the legacy JSP `Montserrat→돋움` stack and the new React subtree onto shared semantic tokens. *Narrative facts above are public-record; founder voice and design-team attribution `[FILL IN]` — no verbatim attribution available in EN-language sources.*
|
|
275
|
+
|
|
276
|
+
## 11. Principles
|
|
277
|
+
|
|
278
|
+
1. **Chrome stays gray; flags do the work.** Olive Young commits to neutral grayscale across nav/header/footer/buttons and reserves all five hues for in-thumbnail status. *UI implication: when porting, never put a flag color on a primary CTA or chrome surface — it breaks the system's status-vs-action separation.*
|
|
279
|
+
2. **One flag = one fact.** Sale / 오늘드림 / 쿠폰 / 증정 / 베스트 each map 1:1 to a service feature, not a marketing mood. *UI implication: don't introduce a sixth color for a "new" badge; pick one of the existing flag roles or skip the chrome.*
|
|
280
|
+
3. **Weight signals over hue.** Active pagination flips from transparent/`#888` to `#2F3030`/`#FFF` and goes from radius-0 to 50% circle — state encoded by 2 axes (fill + radius) not by hue. *UI implication: prefer ink-darkening + shape-change for state; reserve color for status payload.*
|
|
281
|
+
4. **Korean rendering down to 돋움.** The fallback chain explicitly retains a Windows-XP/older-macOS Korean glyph — a deliberate accessibility floor for older readers. *UI implication: never prune the Korean fallback chain to system-ui only.*
|
|
282
|
+
5. **Migrate in subtrees, not big-bang.** Product-detail Next.js + legacy JSP main coexist; the catalog shopper sees a consistent chrome despite two stacks underneath. *UI implication: design-system migrations should target one feature surface at a time and share visual tokens at the chrome level.*
|
|
283
|
+
|
|
284
|
+
## 12. Personas
|
|
285
|
+
|
|
286
|
+
*Illustrative archetypes — not Olive Young user research; OmD-original for design framing.*
|
|
287
|
+
|
|
288
|
+
- **Han-na (29, office worker, Seoul):** browses on phone during commute, scans flags before titles, expects 오늘드림 by 14:00 cutoff, abandons if cart total doesn't show coupon math inline. Comfort with Korean copy, low patience for English-loanword decoration.
|
|
289
|
+
- **Ji-won (38, parent, Suwon):** weekend desktop session, builds a 8–12 SKU cart of repeat-buy basics, sorts by coupon eligibility, treats `#9BCE26` coupon flag as primary signal-to-noise filter.
|
|
290
|
+
- **Min-jae (24, K-beauty enthusiast, Busan):** product-detail page is the destination — wants ingredient list, review filter by skin type, real-color swatch photos. The Next.js detail-page rebuild is for this persona.
|
|
291
|
+
- **Su-jin (52, gift-buyer, Daejeon):** lower digital comfort, relies on category pills and "베스트" badge — the radius-24px pill is a literal stamp of "popular enough to trust." Korean fallback to `돋움` is for this reader.
|
|
292
|
+
|
|
293
|
+
## 13. States
|
|
294
|
+
|
|
295
|
+
| State | Pattern |
|
|
296
|
+
|---|---|
|
|
297
|
+
| Empty (search 0-result) | Centered "이전 페이지 / 홈으로 가기" pair — outline white-bg + filled-black; observed on `getGoodsDetail.do` ProductNotFound shell (Next.js) |
|
|
298
|
+
| Loading | No skeleton observed on legacy chrome; Next.js subtree presumed (not captured this pass — flagged) |
|
|
299
|
+
| Error — 404 | `ProductNotFound_btn-area__Q_xDU` two-button shell, neutral chrome, no error red |
|
|
300
|
+
| Error — form | Not captured this pass; flagged for UPDATE |
|
|
301
|
+
| Success — added to cart | Toast pattern presumed; not captured |
|
|
302
|
+
| Skeleton | Likely tile-shaped on Next.js detail; not captured |
|
|
303
|
+
| Disabled (button) | Inferred — opacity-driven on legacy (no dedicated token) |
|
|
304
|
+
| Hover (chip / pill) | Static — no shadow gain, no lift; depth stays line-only |
|
|
305
|
+
| Active (pagination) | Fill flip `transparent → #2F3030` + radius `0 → 50%` + text flip `#888 → #FFF` |
|
|
306
|
+
| Active (category pill) | Fill flip `#FFF → #000` + text flip `#757D86 → #FFF`, radius unchanged at 20px |
|
|
307
|
+
|
|
308
|
+
## 14. Motion & Easing
|
|
309
|
+
|
|
310
|
+
- **Carousel:** slick (legacy hero) — default 300ms slide, ease-in-out
|
|
311
|
+
- **Carousel:** Swiper (Next.js subtree) — `--swiper-theme-color: #007aff` exposed (visual override likely)
|
|
312
|
+
- **Hover:** **none observed** on tiles, chips, or pills — depth and state are static-encoded
|
|
313
|
+
- **Floor:** No site-wide motion tokens captured. **Flagged** as follow-up — capture from a real product-detail SKU + cart-add transition.
|
|
314
|
+
|
|
315
|
+
## 15. References & Footer
|
|
316
|
+
|
|
317
|
+
**Live capture (Tier 1):**
|
|
318
|
+
- `https://www.oliveyoung.co.kr/store/main/main.do` (65 samples, legacy JSP)
|
|
319
|
+
- `https://www.oliveyoung.co.kr/store/main/getBestList.do` (33 samples, legacy JSP, promo-salmon `#F27370`)
|
|
320
|
+
- `https://www.oliveyoung.co.kr/store/search/getSearchMain.do?query=선크림` (55 samples, full 5-color flag taxonomy captured here)
|
|
321
|
+
- `https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000167660` (26 samples, Next.js subtree shell + runtime CSS vars)
|
|
322
|
+
- Harness: Chrome DevTools Protocol `:9222` via `websocket-client` (`suppress_origin=True`)
|
|
323
|
+
- Artifacts: `assets/_reference/tokens.json` · `structure.json` · `fonts.json` · `.live-inspect-proof.json` (11 raw_samples)
|
|
324
|
+
|
|
325
|
+
**Tier 1 official DS:** ✗ negative (authoritative). No `design.oliveyoung.co.kr` / `oliveyoung.design` DNS; `corp.oliveyoung.com/*` 404; `cjoliveyoung.co.kr` ECONNREFUSED; no public Figma library or GitHub design-system repo at `github.com/oliveyoung*`. The canonical token system lives **inside the Next.js bundle on product-detail** (CSS Modules `*_btn__` + runtime `--font-noto-sans-kr / --background / --foreground` vars) — accessible only by live inspect.
|
|
326
|
+
|
|
327
|
+
**Tier 2 sources:** ✗ getdesign.md/oliveyoung blocked by Claude auto-mode (domain not allowlisted) — unable to verify this pass; ✗ styles.refero.design `?q=oliveyoung` no result cards.
|
|
328
|
+
|
|
329
|
+
**IP guardrails:**
|
|
330
|
+
- Brand mark and product photography referenced for token harvest only — no asset stored beyond JSON observation records
|
|
331
|
+
- No verbatim Olive Young marketing taglines reproduced (none observed in captures)
|
|
332
|
+
- §9 voice samples are OmD-original illustrative — modelled on observed shape (declarative + 하기-verb + casual-polite), not substance
|
|
333
|
+
- §12 personas are illustrative (no user research); flagged in section header
|
|
334
|
+
|
|
335
|
+
**Conflicts unresolved:** none material. Promo-salmon `#F27370` vs flag-best `#F05A5E` treated as distinct (role-separated). Token-name choices in §2 are OmD coinage — Olive Young does not publish a canonical name table.
|
|
336
|
+
|
|
337
|
+
**Follow-up UPDATE pass recommended:**
|
|
338
|
+
- Real product-detail SKU (Next.js token harvest — `--*` vars + Module class catalog)
|
|
339
|
+
- Cart / my-page / checkout (state matrix completion)
|
|
340
|
+
- Mobile site `m.oliveyoung.co.kr` (touch-target audit)
|
|
341
|
+
- Motion token harvest (durations, easings)
|
|
342
|
+
- Re-attempt Tier 2 (getdesign.md with user-allowlisted fetch)
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: ollama
|
|
3
|
+
name: Ollama
|
|
4
|
+
country: US
|
|
5
|
+
category: ai
|
|
6
|
+
homepage: "https://ollama.com"
|
|
7
|
+
primary_color: "#000000"
|
|
8
|
+
logo:
|
|
9
|
+
type: simpleicons
|
|
10
|
+
slug: ollama
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
# Design System Inspiration of Ollama
|
|
2
16
|
|
|
3
17
|
## 1. Visual Theme & Atmosphere
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: opencode.ai
|
|
3
|
+
name: OpenCode AI
|
|
4
|
+
country: US
|
|
5
|
+
category: ai
|
|
6
|
+
homepage: "https://opencode.ai"
|
|
7
|
+
primary_color: "#000000"
|
|
8
|
+
logo:
|
|
9
|
+
type: github
|
|
10
|
+
slug: opencode-ai
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: OpenCode Brand
|
|
15
|
+
url: "https://opencode.ai/brand"
|
|
16
|
+
type: brand
|
|
17
|
+
description: OpenCode's terminal-oriented logo and brand assets.
|
|
18
|
+
og_image: "https://opencode.ai/social-share.png"
|
|
19
|
+
---
|
|
20
|
+
|
|
1
21
|
# Design System Inspiration of OpenCode
|
|
2
22
|
|
|
3
23
|
## 1. Visual Theme & Atmosphere
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
id: pinkoi
|
|
3
|
+
name: Pinkoi
|
|
4
|
+
country: TW
|
|
5
|
+
category: consumer-tech
|
|
6
|
+
homepage: "https://www.pinkoi.com"
|
|
7
|
+
primary_color: "#ff595a"
|
|
8
|
+
logo:
|
|
9
|
+
type: github
|
|
10
|
+
slug: pinkoi
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
4
13
|
---
|
|
5
14
|
|
|
6
15
|
# Design System Inspiration of Pinkoi
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: pinterest
|
|
3
|
+
name: Pinterest
|
|
4
|
+
country: US
|
|
5
|
+
category: consumer-tech
|
|
6
|
+
homepage: "https://www.pinterest.com"
|
|
7
|
+
primary_color: "#e60023"
|
|
8
|
+
logo:
|
|
9
|
+
type: simpleicons
|
|
10
|
+
slug: pinterest
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: Gestalt
|
|
15
|
+
url: "https://gestalt.pinterest.systems"
|
|
16
|
+
type: system
|
|
17
|
+
description: Pinterest's open-source React component library with tokens and foundations.
|
|
18
|
+
---
|
|
19
|
+
|
|
1
20
|
# Design System Inspiration of Pinterest
|
|
2
21
|
|
|
3
22
|
## 1. Visual Theme & Atmosphere
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: posthog
|
|
3
|
+
name: PostHog
|
|
4
|
+
country: US
|
|
5
|
+
category: backend-devops
|
|
6
|
+
homepage: "https://posthog.com"
|
|
7
|
+
primary_color: "#1d4aff"
|
|
8
|
+
logo:
|
|
9
|
+
type: simpleicons
|
|
10
|
+
slug: posthog
|
|
11
|
+
verified: "2026-05-15"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: PostHog Brand Assets
|
|
15
|
+
url: "https://posthog.com/handbook/company/brand-assets"
|
|
16
|
+
type: brand
|
|
17
|
+
description: PostHog's public handbook brand, logo, and illustration guidelines.
|
|
18
|
+
og_image: "https://d36j3rcgc2qfsv.cloudfront.net/handbookcompanybrand-assets.jpeg"
|
|
19
|
+
---
|
|
20
|
+
|
|
1
21
|
# Design System Inspiration of PostHog
|
|
2
22
|
|
|
3
23
|
## 1. Visual Theme & Atmosphere
|