oh-my-design-cli 1.6.0 → 1.6.2
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/AGENTS.md +1 -1
- package/README.ko.md +12 -0
- package/README.md +49 -0
- package/data/reference-fingerprints.json +957 -2
- package/dist/bin/oh-my-design.js +4 -3
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/{install-skills-IETT2TBJ.js → install-skills-6QFSN5BN.js} +108 -42
- package/dist/install-skills-6QFSN5BN.js.map +1 -0
- package/package.json +9 -3
- package/scripts/postinstall.cjs +6 -6
- package/skills/claude-design/SKILL.md +385 -0
- package/skills/claude-design/references/claude-design-flow.md +425 -0
- package/skills/claude-design/references/codebase-analysis.md +373 -0
- package/skills/claude-design/scripts/analyze_codebase.py +1369 -0
- package/skills/claude-design/scripts/clickable_link.sh +48 -0
- package/skills/claude-design/scripts/collect_source.py +178 -0
- package/skills/claude-design/scripts/drive_claude_design.cjs +378 -0
- package/skills/claude-design/scripts/gather_references.py +437 -0
- package/web/references/91app/DESIGN.md +151 -0
- package/web/references/airtable/DESIGN.md +16 -2
- package/web/references/bithumb/DESIGN.md +170 -0
- package/web/references/bunjang/DESIGN.md +20 -1
- package/web/references/cakeresume/DESIGN.md +162 -0
- package/web/references/catchtable/DESIGN.md +19 -0
- package/web/references/classting/DESIGN.md +251 -0
- package/web/references/classum/DESIGN.md +19 -0
- package/web/references/coinone/DESIGN.md +218 -0
- package/web/references/dabang/DESIGN.md +19 -0
- package/web/references/devsisters/DESIGN.md +253 -0
- package/web/references/dji/DESIGN.md +0 -1
- package/web/references/drnow/DESIGN.md +331 -0
- package/web/references/fastcampus/DESIGN.md +19 -0
- package/web/references/flex/DESIGN.md +19 -0
- package/web/references/flo/DESIGN.md +306 -0
- package/web/references/fugle/DESIGN.md +250 -0
- package/web/references/gmarket/DESIGN.md +19 -0
- package/web/references/gogolook/DESIGN.md +131 -0
- package/web/references/grip/DESIGN.md +250 -0
- package/web/references/hahow/DESIGN.md +158 -0
- package/web/references/hogangnono/DESIGN.md +308 -0
- package/web/references/hyundaicard/DESIGN.md +177 -0
- package/web/references/inflearn/DESIGN.md +19 -0
- package/web/references/jkopay/DESIGN.md +249 -0
- package/web/references/jobkorea/DESIGN.md +310 -0
- package/web/references/kbank/DESIGN.md +18 -0
- package/web/references/kdan/DESIGN.md +160 -0
- package/web/references/kkbox/DESIGN.md +114 -0
- package/web/references/krafton/DESIGN.md +230 -0
- package/web/references/kream/DESIGN.md +18 -0
- package/web/references/laftel/DESIGN.md +253 -0
- package/web/references/lezhin/DESIGN.md +301 -0
- package/web/references/lunit/DESIGN.md +19 -0
- package/web/references/melon/DESIGN.md +153 -0
- package/web/references/momoshop/DESIGN.md +279 -0
- package/web/references/mustit/DESIGN.md +282 -0
- package/web/references/nhncloud/DESIGN.md +174 -0
- package/web/references/oliveyoung/DESIGN.md +19 -0
- package/web/references/payco/DESIGN.md +227 -0
- package/web/references/piccollage/DESIGN.md +277 -0
- package/web/references/rayark/DESIGN.md +132 -0
- package/web/references/riiid/DESIGN.md +228 -0
- package/web/references/sendbird/DESIGN.md +285 -0
- package/web/references/socar/DESIGN.md +18 -0
- package/web/references/toss-securities/DESIGN.md +19 -0
- package/web/references/trenbe/DESIGN.md +252 -0
- package/web/references/tving/DESIGN.md +18 -0
- package/web/references/upbit/DESIGN.md +19 -0
- package/web/references/upstage/DESIGN.md +18 -0
- package/web/references/velog/DESIGN.md +168 -0
- package/web/references/voicetube/DESIGN.md +227 -0
- package/web/references/wadiz/DESIGN.md +19 -0
- package/web/references/webflow/DESIGN.md +16 -2
- package/web/references/yeogiotte/DESIGN.md +19 -0
- package/data/architecture-proposals/2026-05-13-thin-install-fresh-fetch.md +0 -189
- package/data/issues/2026-05-13-multi-surface-schema-rfc.md +0 -67
- package/data/reference-audits/2026-05-13-kr10.md +0 -132
- package/data/reference-audits/2026-05-14-kr10.md +0 -72
- package/data/reference-audits/2026-05-15-kr10.md +0 -124
- package/data/research/2026-05-18-agent-landscape.md +0 -69
- package/data/research/2026-05-18-kr-style-presets.md +0 -572
- package/dist/install-skills-IETT2TBJ.js.map +0 -1
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: riiid
|
|
3
|
+
name: "Riiid"
|
|
4
|
+
country: KR
|
|
5
|
+
category: education
|
|
6
|
+
homepage: "https://www.riiid.com"
|
|
7
|
+
primary_color: "#14161A"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=riiid.com&sz=256"
|
|
11
|
+
verified: "2026-06-03"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Riiid
|
|
16
|
+
|
|
17
|
+
AI-native education company from Seoul — formerly known as Riiid, reborn as Socra AI on September 1, 2025 — building personalized learning through products like Santa (AI TOEIC/TOEFL) guided by the philosophy "AI that grows humans."
|
|
18
|
+
|
|
19
|
+
## 1. Visual Theme & Atmosphere
|
|
20
|
+
|
|
21
|
+
Riiid's digital product language is scholarly and calm: a near-white canvas (`#FCFCFC`) anchored by a deep ink foreground (`#14161A`) creates a paper-like reading surface that frames learning rather than shouting it. The dual-typeface pairing — Playfair Display for headings, Pretendard for body — signals both academic credibility and modern Korean product sensibility. Accents stay cool-grey (`#F1F2F4`, `#E8EAED`) rather than saturated; colour is earned, never decorative. The overall effect is focused and unhurried: a tutor's quiet study room where content — not chrome — holds attention.
|
|
22
|
+
|
|
23
|
+
## 2. Color Palette & Roles
|
|
24
|
+
|
|
25
|
+
- **Ink / Primary:** `#14161A` — default button background, heading text, primary foreground; hsl(220 13% 9%)
|
|
26
|
+
- **Canvas / Background:** `#FCFCFC` — page background; hsl(0 0% 99%)
|
|
27
|
+
- **Card Surface:** `#FAFAFA` — card and popover fill; hsl(0 0% 98%)
|
|
28
|
+
- **Secondary Surface:** `#F1F2F4` — secondary button background, section dividers; hsl(220 10% 95%)
|
|
29
|
+
- **Muted / Subtle:** `#E8EAED` — muted backgrounds, chips; hsl(220 14% 92%)
|
|
30
|
+
- **Muted Foreground:** `#6C727F` — secondary labels, captions, placeholder text; hsl(220 8% 46%)
|
|
31
|
+
- **Border / Input:** `#E5E7EB` — all stroke borders and input outlines; hsl(220 13% 91%)
|
|
32
|
+
- **Destructive / Error:** `#EF4343` — error states, destructive actions; hsl(0 84% 60%)
|
|
33
|
+
- **Interactive Blue:** `#3B82F6` — focus rings, sidebar ring; hsl(217.2 91.2% 59.8%)
|
|
34
|
+
|
|
35
|
+
## 3. Typography Rules
|
|
36
|
+
|
|
37
|
+
- **Heading serif:** Playfair Display — weights 400 (light headings), 600 (section headings), 700 (bold callouts). Used for page titles (36–48px), section headers (24px), and editorial pull-quotes. Tracks wide at tracking-wide.
|
|
38
|
+
- **Body / UI:** Pretendard — weights 400 (body), 500 (nav, labels), 600 (card headers), 700 (strong emphasis). Used for all UI text, nav links (14px), body prose (16–18px), captions (12px).
|
|
39
|
+
- **Scale:** text-xs 12px / text-sm 14px / text-base 16px / text-lg 18px / text-xl 20px / text-2xl 24px / text-4xl 36px / text-5xl 48px
|
|
40
|
+
- **Leading:** leading-relaxed 1.625 (`--text-leading-relaxed`) for body; 1.8 (`--text-leading-loose`) for long-form prose
|
|
41
|
+
- **Korean locale note:** Pretendard is designed for Korean/Latin bilingual rendering; weights 300–800 are loaded.
|
|
42
|
+
|
|
43
|
+
## 4. Component Stylings
|
|
44
|
+
|
|
45
|
+
### Button
|
|
46
|
+
|
|
47
|
+
**Primary (Default)**
|
|
48
|
+
- Background: `#14161A`
|
|
49
|
+
- Text: `#FAFAFA`
|
|
50
|
+
- Radius: 6px
|
|
51
|
+
- Height: 40px
|
|
52
|
+
- Padding: 8px 16px
|
|
53
|
+
- Font: 14px / 500
|
|
54
|
+
|
|
55
|
+
**Outline**
|
|
56
|
+
- Background: `#FCFCFC`
|
|
57
|
+
- Text: `#14161A`
|
|
58
|
+
- Border: 1px solid `#E5E7EB`
|
|
59
|
+
- Radius: 6px
|
|
60
|
+
- Height: 40px
|
|
61
|
+
- Padding: 8px 16px
|
|
62
|
+
- Font: 14px / 500
|
|
63
|
+
|
|
64
|
+
**Large (CTA)**
|
|
65
|
+
- Background: `#14161A`
|
|
66
|
+
- Text: `#FAFAFA`
|
|
67
|
+
- Radius: 6px
|
|
68
|
+
- Height: 44px
|
|
69
|
+
- Padding: 12px 32px
|
|
70
|
+
- Font: 16px / 500
|
|
71
|
+
|
|
72
|
+
### Card / Content Block
|
|
73
|
+
|
|
74
|
+
**Surface Card**
|
|
75
|
+
- Background: `#FAFAFA`
|
|
76
|
+
- Border: 1px solid `#E5E7EB`
|
|
77
|
+
- Radius: 8px
|
|
78
|
+
- Padding: 32px
|
|
79
|
+
|
|
80
|
+
**Accent Panel**
|
|
81
|
+
- Background: `#F0F2F4`
|
|
82
|
+
- Radius: 8px
|
|
83
|
+
- Padding: 32px
|
|
84
|
+
|
|
85
|
+
**Primary-Tinted Panel**
|
|
86
|
+
- Background: `rgba(19, 21, 25, 0.05)`
|
|
87
|
+
- Radius: 8px
|
|
88
|
+
- Padding: 48px
|
|
89
|
+
|
|
90
|
+
### Navigation Link
|
|
91
|
+
|
|
92
|
+
**Default**
|
|
93
|
+
- Text: `#6C727F`
|
|
94
|
+
- Font: 14px / 500
|
|
95
|
+
|
|
96
|
+
**Hover**
|
|
97
|
+
- Text: `#14161A`
|
|
98
|
+
- Font: 14px / 500
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
**Verified:** 2026-06-03
|
|
102
|
+
**Tier 1 sources:** https://www.riiid.com (→ redirects to https://corp.socra.ai); https://corp.socra.ai/assets/index-DB1490PF.css (CSS bundle, :root custom properties); https://corp.socra.ai/assets/index-DpZvyCLE.js (JS bundle, component definitions); https://corp.socra.ai/our-story (brand narrative)
|
|
103
|
+
**Tier 2 sources:** getdesign.md/riiid — NOT LISTED ("No designs found for 'riiid'"). refero ?q=Riiid — no result found.
|
|
104
|
+
**Conflicts unresolved:** none
|
|
105
|
+
|
|
106
|
+
## 5. Layout Principles
|
|
107
|
+
|
|
108
|
+
- Single-column centered reading lane (max-w-prose-wide ≈ 65ch) for long-form pages; constrains text to comfortable reading width
|
|
109
|
+
- Grid breaks to 4-column for nav links on desktop, collapses to 1-column on mobile
|
|
110
|
+
- Generous top padding on page entry (pt-32 / 128px) creates breathing room before content
|
|
111
|
+
- Sections divided by subtle `--section-divide` lines and 64px vertical gaps; no heavy decorative dividers
|
|
112
|
+
- Content blocks use 32px internal padding; large callout panels use 48px padding for emphasis
|
|
113
|
+
- Max content width: max-w-4xl (896px) for wide layouts, max-w-2xl (672px) for focused reading
|
|
114
|
+
|
|
115
|
+
## 6. Depth & Elevation
|
|
116
|
+
|
|
117
|
+
- No drop shadows on primary surfaces — elevation is implied by background color steps (#FCFCFC → #FAFAFA → #F1F2F4)
|
|
118
|
+
- Border (`#E5E7EB`) used for separation rather than shadow
|
|
119
|
+
- Focus ring: 2px ring at `#3B82F6` with 2px offset — the only vibrant colour pop in the system
|
|
120
|
+
- Disabled elements reduce opacity to 50%
|
|
121
|
+
- Hover states use bg-accent (#F0F2F4) shift — subtle 0-shadow elevation language
|
|
122
|
+
|
|
123
|
+
## 7. Do's and Don'ts
|
|
124
|
+
|
|
125
|
+
### Do
|
|
126
|
+
- Use Playfair Display for headings to maintain the scholarly, thoughtful tone
|
|
127
|
+
- Pair Ink (`#14161A`) buttons with generous whitespace — the colour earns its authority through contrast, not saturation
|
|
128
|
+
- Keep body text at 16–18px with line-height 1.625 for extended reading sessions
|
|
129
|
+
- Use left-border accent lines (4px `#14161A`) for pull-quotes and editorial emphasis
|
|
130
|
+
- Maintain the cool-grey palette — every surface should feel like fine paper
|
|
131
|
+
- Use the 4-column responsive nav grid and collapse gracefully to single column on mobile
|
|
132
|
+
|
|
133
|
+
### Don't
|
|
134
|
+
- Introduce warm or saturated brand colours — the palette is intentionally cool and neutral
|
|
135
|
+
- Use heavy drop shadows; the system relies on tonal layering for depth
|
|
136
|
+
- Mix Pretendard and Playfair in the same weight role — Playfair is strictly for headings
|
|
137
|
+
- Set body text below 14px or line-height below 1.5 — legibility is a core product value
|
|
138
|
+
- Place primary buttons side by side — one clear CTA per viewport section
|
|
139
|
+
- Use border-radius above 8px (the base token) for primary UI components
|
|
140
|
+
|
|
141
|
+
## 8. Responsive Behavior
|
|
142
|
+
|
|
143
|
+
- Mobile (< 640px): single-column layout, px-4 gutters, hero font scales from text-4xl to text-xl, navigation collapses to 1×4 vertical stack
|
|
144
|
+
- Tablet (640px–1024px): px-6 gutters, hero at text-2xl, navigation in 2-column grid
|
|
145
|
+
- Desktop (> 1024px): max-w-4xl centered, px-8 gutters, hero at text-3xl+, full 4-column nav
|
|
146
|
+
- Font sizes use responsive prefixes (sm:, md:) — no JavaScript breakpoint logic in critical path
|
|
147
|
+
- Body max-width locked at max-w-prose-wide for reading pages regardless of viewport
|
|
148
|
+
|
|
149
|
+
## 9. Agent Prompt Guide
|
|
150
|
+
|
|
151
|
+
When generating Riiid / Socra AI UI:
|
|
152
|
+
|
|
153
|
+
- Background `#FCFCFC`, all body text `#14161A`, secondary text `#6C727F`
|
|
154
|
+
- Heading font: Playfair Display (light 400 for page titles, semibold 600 for sections)
|
|
155
|
+
- Body/UI font: Pretendard (regular 400, medium 500 for interactive)
|
|
156
|
+
- Primary button: `#14161A` fill, `#FAFAFA` text, 6px radius, 40px height
|
|
157
|
+
- Border: 1px `#E5E7EB` on inputs and cards; no drop shadows
|
|
158
|
+
- Spacing: 8px base unit, sections at 64px vertical gap
|
|
159
|
+
- Do NOT add warm tones, orange, or brand gradients — the system is intentionally monochromatic
|
|
160
|
+
- Focus ring: 2px `#3B82F6` — only blue accent in the palette
|
|
161
|
+
|
|
162
|
+
## 10. Voice & Tone
|
|
163
|
+
|
|
164
|
+
**Adjectives:** Scholarly, clear, humanist
|
|
165
|
+
|
|
166
|
+
| Do | Don't |
|
|
167
|
+
|---|---|
|
|
168
|
+
| Use measured, complete sentences that respect the reader's intelligence | Use hype language ("revolutionary", "game-changing") |
|
|
169
|
+
| Ask questions that invite reflection | Make declarative promises about outcomes |
|
|
170
|
+
| Acknowledge complexity in learning | Oversimplify ("just 5 minutes a day!") |
|
|
171
|
+
| Speak about growth as a journey, not a destination | Use urgency tactics or countdown timers |
|
|
172
|
+
| Reference evidence and method | Use superlatives without substance |
|
|
173
|
+
|
|
174
|
+
**Voice samples (illustrative):**
|
|
175
|
+
- *Illustrative:* "AI should be a tool for realizing human potential, not replacing it."
|
|
176
|
+
- *Illustrative:* "Know Thyself. Grow Thyself." — core tagline, Socratic in rhythm, personal in address
|
|
177
|
+
- *Illustrative:* "The future belongs to those who learn more skills and develop faster than their challenges."
|
|
178
|
+
- *Illustrative:* "We are not just imagining the future of education — we are building it."
|
|
179
|
+
- *Illustrative:* "Every learner receives personalized, real-time feedback and an environment designed for immersion, curiosity, and growth."
|
|
180
|
+
|
|
181
|
+
## 11. Brand Narrative
|
|
182
|
+
|
|
183
|
+
Founded in Seoul in 2014, Riiid built its name on a single conviction: that artificial intelligence could democratize access to world-class tutoring. Its first product, Santa, applied deep-learning algorithms to TOEIC exam preparation and rose to number one in education app sales across Korea and Japan, reaching over four million users. The company grew through partnerships with ETS, SoftBank Vision Fund, and global media companies including NBC Universal, Warner Media, and BBC, while expanding into the US, Japan, and Brazil.
|
|
184
|
+
|
|
185
|
+
On September 1, 2025, Riiid rebranded as Socra AI — a name drawn from Socrates and his method of guided questioning. The rebrand signalled a philosophical maturation: from AI as answer-delivery machine to AI as learning companion. The mission crystallised around a phrase: "AI that grows humans." Products were unified under this philosophy — Santa for standardised test prep, Real Class for ESL with licensed media, Real Academy for K–12 writing and speaking, and Vest Way for financial literacy.
|
|
186
|
+
|
|
187
|
+
The design language shifted accordingly: away from the bold product colours common in EdTech and toward a quiet, academic aesthetic. Pretendard and Playfair Display were chosen to serve both Korean and global audiences; a near-white canvas and ink-dark primary signal intellectual seriousness. The company now describes its mission as "opening the Age of Personal Tutors" — a world where every learner has access to a tutor as knowledgeable and patient as the best teacher they never had.
|
|
188
|
+
|
|
189
|
+
## 12. Principles
|
|
190
|
+
|
|
191
|
+
1. **AI as amplifier, not replacement.** Every product decision asks: does this strengthen or outsource human thinking? *UI implication:* Features surface reasoning scaffolds and reflection prompts rather than bare answers; feedback explains, not just scores.
|
|
192
|
+
|
|
193
|
+
2. **Developmentally appropriate.** Learning interfaces adapt to the user's current level. *UI implication:* Complexity is revealed progressively; beginners see fewer options; advanced users see richer controls.
|
|
194
|
+
|
|
195
|
+
3. **Socratic dialogue over rote delivery.** Questions drive understanding more than explanations. *UI implication:* Copy favours interrogative framing; empty states and onboarding use questions to orient users.
|
|
196
|
+
|
|
197
|
+
4. **Honest simplicity.** The brand rejects visual noise because learning requires sustained attention. *UI implication:* One primary CTA per screen; neutral palette; no distracting animation; generous whitespace.
|
|
198
|
+
|
|
199
|
+
5. **Global reach, Korean craft.** Riiid originates in Seoul and serves learners across Asia and beyond. *UI implication:* Pretendard supports flawless Korean/Latin bilingual rendering; layouts accommodate CJK character widths.
|
|
200
|
+
|
|
201
|
+
## 13. Personas
|
|
202
|
+
|
|
203
|
+
*Illustrative persona:* **Jiyeon, 24, TOEIC candidate** — A Korean university student preparing for her first job application. She studies in 20-minute subway sessions, prioritises score prediction accuracy, and trusts the app's AI score estimate more than she trusts her own self-assessment. She is motivated but time-poor; she needs reassurance that practice time is not wasted.
|
|
204
|
+
|
|
205
|
+
*Illustrative persona:* **Marcus, 31, ESL learner in Japan** — An American expatriate working in Tokyo who wants to learn Korean and maintain English fluency. He subscribes to Real Class to watch licensed media with AI conversation practice. He values authentic content over textbook exercises and skips lessons that feel condescending.
|
|
206
|
+
|
|
207
|
+
*Illustrative persona:* **Principal Kim, 48, K–12 administrator** — A middle-school principal evaluating Real Academy for classroom adoption. He needs evidence of measurable writing improvement and an admin dashboard. Trust is built through case studies and rubric-aligned scoring, not feature lists.
|
|
208
|
+
|
|
209
|
+
*Illustrative persona:* **Hana, 17, high-achieving student** — A Korean high-school student using Santa for TOEFL while simultaneously studying for university entrance exams. She compares her AI-predicted score weekly against peers. She expects a minimal, distraction-free UI and finds gamification condescending.
|
|
210
|
+
|
|
211
|
+
## 14. States
|
|
212
|
+
|
|
213
|
+
- **Empty (no study history):** Soft card with Playfair headline "Where would you like to begin?" and a single primary CTA; background `#F8F9FA`; no placeholder illustrations
|
|
214
|
+
- **Loading (score calculation):** Skeleton bars at 60% and 40% width on card surface `#FAFAFA`; animated opacity pulse from 0.4 to 0.7; no spinner
|
|
215
|
+
- **Error — network:** Inline alert with `#EF4343` left border (4px), muted-foreground message, and a single "Try again" outline button
|
|
216
|
+
- **Error — input validation:** Input border changes to `#EF4343`; 12px red caption appears below field; label remains in `#14161A`
|
|
217
|
+
- **Success:** Brief inline confirmation in `#14161A` text; no toast unless action was irreversible; icon ✓ in foreground colour
|
|
218
|
+
- **Skeleton:** Full-width bars at varying widths (80%, 60%, 40%); card background `#FAFAFA`; 1.5s ease-in-out pulse; no border shimmer
|
|
219
|
+
- **Disabled:** Pointer-events none; opacity 50%; both background and text muted together; no tooltip required unless action is permanently unavailable
|
|
220
|
+
|
|
221
|
+
## 15. Motion & Easing
|
|
222
|
+
|
|
223
|
+
- **Duration scale:** instant 0ms / fast 150ms / default 200ms / medium 300ms / slow 500ms
|
|
224
|
+
- **Easing:** `transition-colors` with CSS default ease; `fade-in-0` + `zoom-in-95` for enter (200ms); `fade-out-0` + `zoom-out-95` for exit (150ms)
|
|
225
|
+
- **Slide:** `slide-in-from-top-2` / `slide-in-from-bottom-2` for tooltips and popovers — 8px travel
|
|
226
|
+
- **Page transitions:** None (SPA with React Router; instant client-side navigation)
|
|
227
|
+
- **Hover:** Color-only transitions at 200ms `duration-200`; no transform on hover
|
|
228
|
+
- **Rules:** Do not animate layout shifts; respect `prefers-reduced-motion`; skeleton pulses are the only looping animations
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: "sendbird"
|
|
3
|
+
name: "Sendbird"
|
|
4
|
+
country: US
|
|
5
|
+
category: developer-tools
|
|
6
|
+
homepage: "https://sendbird.com"
|
|
7
|
+
primary_color: "#742DDD"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=sendbird.com&sz=128"
|
|
11
|
+
verified: "2026-06-01"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
ds:
|
|
14
|
+
name: Sendbird UIKit
|
|
15
|
+
url: "https://sendbird.com/docs/chat/uikit/v3/react/overview"
|
|
16
|
+
type: system
|
|
17
|
+
description: Sendbird's official chat UIKit — a documented, token-driven conversation-UI system (React, iOS, Android, React Native) with named color sets, message components, and themeable light/dark resources.
|
|
18
|
+
---
|
|
19
|
+
# Design System Inspiration of Sendbird
|
|
20
|
+
|
|
21
|
+
## 1. Visual Theme & Atmosphere
|
|
22
|
+
|
|
23
|
+
Sendbird is a developer-infrastructure company that wears two faces, and the gap between them is the whole story. The **product** — the Sendbird UIKit that powers chat inside thousands of apps — is a disciplined, token-driven system built on a single confident **purple** (`#742DDD`, "Sendbird purple") sitting on an eight-step neutral grayscale, with green, red and blue reserved strictly for semantic meaning. It is functional software color: a 4px corner radius everywhere, flat fills, no gradients, a palette that survives being dropped into a customer's own app without fighting it. The **marketing site** (sendbird.com), by contrast, is a near-monochrome editorial surface — pure white grounds, an oversized **serif display face** running to 72px for headlines, body text set in Helvetica Now Text, and pill-shaped black-and-white CTAs with no brand color at all. One surface is engineered to disappear into a developer's product; the other is engineered to read like a printed enterprise brochure. The through-line is restraint: a brand that earns trust by looking calm, legible, and uncluttered, letting the single purple do its work only where it carries product meaning.
|
|
24
|
+
|
|
25
|
+
## 2. Color Palette & Roles
|
|
26
|
+
|
|
27
|
+
Sendbird's UIKit ships a fully named, five-step-per-family color set (the authoritative design-system source). The marketing site layers a separate near-grayscale identity on top.
|
|
28
|
+
|
|
29
|
+
**Primary — Sendbird purple (brand + primary actions)**
|
|
30
|
+
- primary-100: `#DBD1FF`
|
|
31
|
+
- primary-200: `#C2A9FA`
|
|
32
|
+
- primary-300: `#742DDD` (the main color — default fills, links, focus)
|
|
33
|
+
- primary-400: `#6211C8` (hover)
|
|
34
|
+
- primary-500: `#491389` (pressed/active)
|
|
35
|
+
|
|
36
|
+
**Secondary — green (accents, success-adjacent)**
|
|
37
|
+
- secondary-100: `#A8E2AB`
|
|
38
|
+
- secondary-200: `#69C085`
|
|
39
|
+
- secondary-300: `#259C72`
|
|
40
|
+
- secondary-400: `#027D69`
|
|
41
|
+
- secondary-500: `#066858`
|
|
42
|
+
|
|
43
|
+
**Error — red (destructive, validation)**
|
|
44
|
+
- error-100: `#FDAAAA`
|
|
45
|
+
- error-200: `#F66161`
|
|
46
|
+
- error-300: `#DE360B` (light-theme error border + danger fill)
|
|
47
|
+
- error-400: `#BF0711`
|
|
48
|
+
- error-500: `#9D091E`
|
|
49
|
+
|
|
50
|
+
**Information — `#ADC9FF`** (informational highlights, link previews)
|
|
51
|
+
|
|
52
|
+
**Background — neutral grayscale (surfaces, light → dark)**
|
|
53
|
+
- background-50: `#FFFFFF`
|
|
54
|
+
- background-100: `#EEEEEE` (incoming message bubble, subtle fills)
|
|
55
|
+
- background-200: `#E0E0E0` (disabled fills)
|
|
56
|
+
- background-300: `#BDBDBD`
|
|
57
|
+
- background-400: `#393939`
|
|
58
|
+
- background-500: `#2C2C2C`
|
|
59
|
+
- background-600: `#161616`
|
|
60
|
+
- background-700: `#000000`
|
|
61
|
+
|
|
62
|
+
**Text on light (alpha black)**
|
|
63
|
+
- onlight-01: `#000000` @ 87% (primary text)
|
|
64
|
+
- onlight-02: `#000000` @ 50% (secondary text)
|
|
65
|
+
- onlight-03: `#000000` @ 38% (disabled text)
|
|
66
|
+
- onlight-04: `#000000` @ 12% (dividers, default input border)
|
|
67
|
+
|
|
68
|
+
**Text on dark (alpha white)** mirrors the above at 87 / 50 / 38 / 12% white. **Overlay:** `#000000` @ 55% (modal scrim), `#000000` @ 32% (lighter scrim).
|
|
69
|
+
|
|
70
|
+
**Marketing surface (sendbird.com, live):** ground `#FFFFFF`, body text `#424242`, near-black display + CTA ink `#0D0D0D`, nav ink `#0E1017`, footer + chip fill `#F2F3F7`, hairline borders `#E3E5EF` and `#D1D1D1`. No purple appears in the marketing chrome — brand color is held back for the product.
|
|
71
|
+
|
|
72
|
+
## 3. Typography Rules
|
|
73
|
+
|
|
74
|
+
- **Product (UIKit):** the system font stack via `--sendbird-font-family-default` — platform-native sans (SF Pro / Roboto / system-ui) so embedded chat matches the host app. Message text and labels sit at 14px with a clear weight ladder (400 body, 500–600 labels).
|
|
75
|
+
- **Marketing display:** a **serif** display face for headlines, observed at **72px / weight 500** on the hero (`#0D0D0D`). The serif is the single most distinctive type choice — it signals editorial confidence and separates Sendbird from the geometric-sans default of developer-tool marketing.
|
|
76
|
+
- **Marketing body + nav:** **Helvetica Now Text** — body at 18px / 400 (`#424242`), nav links at 16px / 500 (`#0E1017`), small print near 13px / 600 on pill CTAs.
|
|
77
|
+
- **Hierarchy:** large serif headline → Helvetica Now subhead/body → medium-weight nav and buttons. Tight, legible, generous line spacing; never more than two type families on one surface.
|
|
78
|
+
|
|
79
|
+
## 4. Component Stylings
|
|
80
|
+
|
|
81
|
+
> Two systems documented below: the **UIKit** (product, token-driven, purple) verified from the official component source, and the **marketing chrome** (sendbird.com) verified from live computed style. Each is the source of truth for its own surface.
|
|
82
|
+
|
|
83
|
+
### UIKit Button
|
|
84
|
+
|
|
85
|
+
**Primary — Big (default)**
|
|
86
|
+
- Background: `#742DDD` (primary-300)
|
|
87
|
+
- Text: `#FFFFFF`
|
|
88
|
+
- Border: none
|
|
89
|
+
- Radius: 4px
|
|
90
|
+
- Padding: 10px 16px
|
|
91
|
+
- Height: 40px
|
|
92
|
+
- Font: 14px / 600 / system default
|
|
93
|
+
- Hover: background `#6211C8` (primary-400)
|
|
94
|
+
- Pressed: background `#491389` (primary-500)
|
|
95
|
+
- Use: the single most prominent action in a UIKit surface (send, confirm, create channel)
|
|
96
|
+
|
|
97
|
+
**Primary — Small**
|
|
98
|
+
- Background: `#742DDD`
|
|
99
|
+
- Text: `#FFFFFF`
|
|
100
|
+
- Radius: 4px
|
|
101
|
+
- Padding: 6px 16px
|
|
102
|
+
- Height: 32px
|
|
103
|
+
- Use: inline and toolbar actions
|
|
104
|
+
|
|
105
|
+
**Secondary (ghost)**
|
|
106
|
+
- Background: transparent
|
|
107
|
+
- Text: `#742DDD`
|
|
108
|
+
- Border: 1px solid `#742DDD`
|
|
109
|
+
- Radius: 4px
|
|
110
|
+
- Pressed: background `#000000` @ 4% (onlight wash)
|
|
111
|
+
- Use: lower-emphasis alternative beside a primary button
|
|
112
|
+
|
|
113
|
+
**Danger**
|
|
114
|
+
- Background: `#DE360B` (error-300)
|
|
115
|
+
- Text: `#FFFFFF`
|
|
116
|
+
- Radius: 4px
|
|
117
|
+
- Hover: background `#BF0711` (error-400)
|
|
118
|
+
- Pressed: background `#9D091E` (error-500)
|
|
119
|
+
- Use: destructive actions (leave channel, delete message)
|
|
120
|
+
|
|
121
|
+
**Disabled**
|
|
122
|
+
- Background: `#E0E0E0` (background-200)
|
|
123
|
+
- Text: `#000000` @ 38% (onlight-03)
|
|
124
|
+
- Radius: 4px
|
|
125
|
+
- Use: any blocked action; non-interactive
|
|
126
|
+
|
|
127
|
+
### UIKit Input / TextField
|
|
128
|
+
|
|
129
|
+
**Default**
|
|
130
|
+
- Background: `#FFFFFF`
|
|
131
|
+
- Text: `#000000` @ 87% (onlight-01)
|
|
132
|
+
- Border: 1px solid `#000000` @ 12% (onlight-04)
|
|
133
|
+
- Radius: 4px
|
|
134
|
+
- Padding: 7px 12px
|
|
135
|
+
- Font: 14px / 400
|
|
136
|
+
|
|
137
|
+
**Focus**
|
|
138
|
+
- Border: 1px solid `#742DDD` (primary-300)
|
|
139
|
+
- Shadow: 0 0 0 1px `#742DDD`
|
|
140
|
+
|
|
141
|
+
**Error**
|
|
142
|
+
- Border: 1px solid `#DE360B` (error-300)
|
|
143
|
+
|
|
144
|
+
### UIKit Message Bubble
|
|
145
|
+
|
|
146
|
+
**Outgoing (mine)**
|
|
147
|
+
- Background: `#742DDD` (primary-300)
|
|
148
|
+
- Text: `#FFFFFF`
|
|
149
|
+
- Max-width: 400px
|
|
150
|
+
- Use: messages sent by the current user, right-aligned
|
|
151
|
+
|
|
152
|
+
**Incoming (other)**
|
|
153
|
+
- Background: `#EEEEEE` (background-100)
|
|
154
|
+
- Text: `#000000` @ 87% (onlight-01)
|
|
155
|
+
- Max-width: 400px
|
|
156
|
+
- Avatar: 40px (min-width, left of bubble)
|
|
157
|
+
- Use: messages from other participants, left-aligned
|
|
158
|
+
|
|
159
|
+
### Marketing CTA — Dark pill (primary)
|
|
160
|
+
|
|
161
|
+
**Default**
|
|
162
|
+
- Background: `#0D0D0D`
|
|
163
|
+
- Text: `#FFFFFF`
|
|
164
|
+
- Border: 1px solid `#0D0D0D`
|
|
165
|
+
- Radius: 24px
|
|
166
|
+
- Padding: 12px 10px
|
|
167
|
+
- Height: 42px
|
|
168
|
+
- Font: 13px / 600 / Helvetica Now Text
|
|
169
|
+
- Use: highest-emphasis marketing action
|
|
170
|
+
|
|
171
|
+
### Marketing CTA — Outline pill (secondary)
|
|
172
|
+
|
|
173
|
+
**Default**
|
|
174
|
+
- Background: `#FFFFFF`
|
|
175
|
+
- Text: `#0D0D0D`
|
|
176
|
+
- Border: 1px solid `#0D0D0D`
|
|
177
|
+
- Radius: 24px
|
|
178
|
+
- Padding: 12px 10px
|
|
179
|
+
- Height: 42px
|
|
180
|
+
- Font: 13px / 600
|
|
181
|
+
- Use: secondary marketing action paired with the dark pill
|
|
182
|
+
|
|
183
|
+
### Marketing Utility chip
|
|
184
|
+
|
|
185
|
+
**Default**
|
|
186
|
+
- Background: `#F2F3F7`
|
|
187
|
+
- Text: `#0D0D0D`
|
|
188
|
+
- Border: 1px solid `#E3E5EF`
|
|
189
|
+
- Radius: 8px
|
|
190
|
+
- Padding: 8px 12px
|
|
191
|
+
- Height: 50px
|
|
192
|
+
- Font: 18px / 400 / Helvetica Now Text
|
|
193
|
+
- Use: neutral selector / utility control on marketing surfaces
|
|
194
|
+
|
|
195
|
+
### Marketing Input (newsletter)
|
|
196
|
+
|
|
197
|
+
**Default**
|
|
198
|
+
- Background: `#FFFFFF`
|
|
199
|
+
- Text: `#424242`
|
|
200
|
+
- Border: 1px solid `#D1D1D1`
|
|
201
|
+
- Radius: 50px
|
|
202
|
+
- Padding: 6px 35px
|
|
203
|
+
- Font: 12.8px / 400
|
|
204
|
+
- Use: pill-shaped email capture in footer/forms
|
|
205
|
+
|
|
206
|
+
## 5. Layout Principles
|
|
207
|
+
|
|
208
|
+
- **UIKit:** a vertical conversation column with a fixed channel header, a scrolling message list, and a docked composer. Message rows are avatar + bubble, bubbles capped at 400px so long text wraps rather than spanning wide screens. 4px is the universal corner unit; spacing is an 8px rhythm.
|
|
209
|
+
- **Marketing:** generous single-column-of-attention sections on white, oversized serif headlines anchoring each block, wide margins, and image columns doing the visual work. No dense grids — the page breathes.
|
|
210
|
+
- **Density:** product is information-dense but calm (chat needs scannability); marketing is deliberately sparse.
|
|
211
|
+
|
|
212
|
+
## 6. Depth & Elevation
|
|
213
|
+
|
|
214
|
+
Sendbird is overwhelmingly **flat**. The UIKit uses fills and 1px hairlines, not shadows, to separate surfaces — incoming bubble vs. ground is a fill contrast (`#EEEEEE` on `#FFFFFF`), not a drop shadow. Elevation appears only where it carries meaning: modals/menus float above a `#000000` @ 55% overlay scrim, and the input focus ring is a 1px purple halo rather than a glow. Marketing is similarly shadowless — depth comes from whitespace and scale, not z-axis tricks.
|
|
215
|
+
|
|
216
|
+
## 7. Do's and Don'ts
|
|
217
|
+
|
|
218
|
+
### Do
|
|
219
|
+
- Use purple `#742DDD` for exactly one primary action per surface; let neutrals carry everything else.
|
|
220
|
+
- Keep the 4px radius on product controls and the pill (24px / 50px) radius on marketing chrome — don't mix the two languages.
|
|
221
|
+
- Reserve green, red, and blue for semantic roles (success-adjacent, destructive/error, informational).
|
|
222
|
+
- Pair the serif display headline with Helvetica Now body on marketing; never set body copy in the serif.
|
|
223
|
+
|
|
224
|
+
### Don't
|
|
225
|
+
- Introduce gradients, drop shadows, or a second brand hue — the system's calm depends on restraint.
|
|
226
|
+
- Put brand purple into marketing chrome, or near-black pills into the product UI; the surfaces are intentionally distinct.
|
|
227
|
+
- Combine multiple fields on one spec line; each token gets its own value.
|
|
228
|
+
- Let message bubbles exceed the 400px cap or drop the 40px avatar gutter.
|
|
229
|
+
|
|
230
|
+
## 8. Responsive Behavior
|
|
231
|
+
|
|
232
|
+
- **UIKit:** the conversation column is fluid; bubble max-width collapses from 400px to `calc(100vw - 140px)` on narrow viewports, preserving the avatar gutter and right/left alignment. Channel list and conversation become a single stacked view on mobile.
|
|
233
|
+
- **Marketing:** the serif hero scales down from 72px on large screens; multi-column sections reflow to a single column; pill CTAs stay full-radius and stack vertically.
|
|
234
|
+
- Touch targets respect the 40px (Big) / 32px (Small) button heights as comfortable minimums.
|
|
235
|
+
|
|
236
|
+
## 9. Agent Prompt Guide
|
|
237
|
+
|
|
238
|
+
When generating a Sendbird-style interface, specify which surface you mean:
|
|
239
|
+
- **"Sendbird UIKit style"** → token-driven chat UI: purple `#742DDD` primary, neutral grayscale, 4px radius, flat fills, 14px system-font text, message bubbles (outgoing purple / incoming `#EEEEEE`) capped at 400px with 40px avatars, semantic green/red/blue only.
|
|
240
|
+
- **"Sendbird marketing style"** → near-monochrome editorial: white ground, 72px serif display headline, Helvetica Now Text body, black `#0D0D0D` and white pill CTAs (24px radius), `#F2F3F7` neutral chips, no brand color in chrome.
|
|
241
|
+
- Default corner radius: **4px** (product) — state "pill" explicitly for marketing CTAs.
|
|
242
|
+
- Keep it flat: 1px hairlines and fills, not shadows. One primary action per surface.
|
|
243
|
+
|
|
244
|
+
## 10. Voice & Tone
|
|
245
|
+
|
|
246
|
+
Sendbird speaks like **infrastructure that respects your time**: precise, technical without jargon-for-its-own-sake, confident but never loud. Product copy (UIKit labels, empty states) is plain and instructive — "No messages yet," "Send," "Leave channel." Marketing copy is declarative and enterprise-assured — "The AI customer experience platform" — short clauses, present tense, outcomes over features. The serif display face gives the words a measured, editorial gravity; the tone is a senior engineer who has already solved your problem and is calmly telling you how.
|
|
247
|
+
|
|
248
|
+
## 11. Brand Narrative
|
|
249
|
+
|
|
250
|
+
Founded in Korea (originally as a community for parents) and now powering in-app conversations for some of the world's largest apps, Sendbird's story is **invisible reliability at scale**. The brand's job is to be the messaging layer you never think about — which is why the product design system is built to disappear into the host app, and why the brand color is held back from marketing chrome. The single purple is a signature you only meet where it matters: the action that sends, the link that connects. Everything else — grayscale surfaces, flat fills, serif calm — communicates "we are the dependable substrate, not the spectacle."
|
|
251
|
+
|
|
252
|
+
## 12. Principles
|
|
253
|
+
|
|
254
|
+
1. **Color carries meaning, not decoration.** One purple for primary action; semantic green/red/blue; everything else neutral.
|
|
255
|
+
2. **Flat by default.** Fills and hairlines over shadows; elevation only for true overlays.
|
|
256
|
+
3. **The product disappears.** UIKit is themeable and system-font-based so it adopts the host app's identity.
|
|
257
|
+
4. **Two surfaces, two languages.** Product = 4px functional; marketing = pill editorial. Never blur them.
|
|
258
|
+
5. **Restraint reads as trust.** Whitespace, legibility, and a single accent over visual noise.
|
|
259
|
+
|
|
260
|
+
## 13. Personas
|
|
261
|
+
|
|
262
|
+
- **The app developer** embedding chat — wants tokens, theming, and components that drop in without fighting their design. Lives in the UIKit docs.
|
|
263
|
+
- **The enterprise buyer** evaluating a CX/messaging platform — meets the serif marketing site, reads "reliable, secure, at scale," needs trust signals (certifications, G2).
|
|
264
|
+
- **The end user** inside a customer's app — never sees "Sendbird," only a calm, legible conversation that feels native to the app they're using.
|
|
265
|
+
|
|
266
|
+
## 14. States
|
|
267
|
+
|
|
268
|
+
- **Default / Hover / Pressed:** buttons step purple-300 → purple-400 → purple-500 (danger steps error-300 → 400 → 500).
|
|
269
|
+
- **Focus:** 1px purple `#742DDD` border + 1px purple box-shadow halo on inputs.
|
|
270
|
+
- **Error:** input border switches to error-300 `#DE360B`; validation text in error color.
|
|
271
|
+
- **Disabled:** background-200 `#E0E0E0` fill with onlight-03 (38% black) text; no interaction.
|
|
272
|
+
- **Empty:** plain instructive copy ("No messages yet") centered in the conversation column, neutral text, no illustration noise.
|
|
273
|
+
- **Loading:** lightweight skeleton/spinner in neutral grays; the composer stays docked.
|
|
274
|
+
|
|
275
|
+
## 15. Motion & Easing
|
|
276
|
+
|
|
277
|
+
Motion is **minimal and purposeful**. New messages slide/fade into the list at the bottom; the composer and channel transitions are quick (~150–200ms) ease-out movements that never block input. State changes (hover, focus, pressed) are near-instant color transitions, not animated flourishes. Overlays fade their scrim in over ~200ms. The marketing site favors restraint too — subtle reveal-on-scroll rather than parallax theatrics. The guiding rule mirrors the visual system: motion clarifies, it does not perform.
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
**Verified:** 2026-06-01 (CREATE pilot — first ref through the proof-gated pipeline)
|
|
281
|
+
**Tier 1 sources:** https://sendbird.com (live DOM via playwright getComputedStyle — marketing chrome: nav `#0E1017` 16px/500, serif h1 72px/500 `#0D0D0D`, dark pill `#0D0D0D` 24px radius, neutral chip `#F2F3F7`/`#E3E5EF` 8px, pill input 50px radius), https://sendbird.com/docs/chat/uikit/v3/android-view/customizations/resource-customization/color-resources (official UIKit color tokens — primary/secondary/error/background/onlight/ondark/overlay full palette), https://github.com/sendbird/sendbird-uikit-react (official UIKit source — Button index.scss 4px radius / Big 40px / Small 32px / variant fills, Input index.scss 7px·12px / focus + error borders, MessageContent index.scss 400px max-width / 40px avatar)
|
|
282
|
+
**Tier 2 sources:** getdesign.md/sendbird — NOT LISTED ("No designs found"). styles.refero.design — NOT LISTED (curated taste-set; ?q= does not server-filter; B2B SDK absent). Tier 1 (official UIKit docs + source + live inspect) treated as authoritative per pipeline.
|
|
283
|
+
**Conflicts unresolved:** none. Note: an earlier web search reported a green primary (#259c72) — that is the UIKit **secondary** palette; the Android `colors.xml` source confirms **primary = purple #742DDD**. Resolved in favor of the official source file.
|
|
284
|
+
**Proof:** see `.verification.md` (`## Proof` block, ≥5 raw computed-style samples).
|
|
285
|
+
**Surface split:** §4 documents two parallel systems — the UIKit product DS (purple, 4px, token-driven) and the sendbird.com marketing chrome (monochrome serif editorial, pill radius). Both retained as authoritative for their surface.
|
|
@@ -383,3 +383,21 @@ plus standard FRAME-tier conventions, not published SOCAR tokens. Treat as
|
|
|
383
383
|
inference until cross-checked against the internal SOCAR Frame 2.0 motion
|
|
384
384
|
documentation.
|
|
385
385
|
-->
|
|
386
|
+
|
|
387
|
+
## 16. Do's and Don'ts
|
|
388
|
+
|
|
389
|
+
### Do
|
|
390
|
+
- Set all body and heading text in cool blue-grey #354153 on pure white #ffffff, never true black, to signal a calm service rather than a bank or government form
|
|
391
|
+
- Reserve SOCAR Blue exclusively for the Space Frame symbol, app-store badges, and the primary booking CTA, keeping the rest of the chrome achromatic
|
|
392
|
+
- Keep radii on the 12 / 14 / 16px ladder — 12px for inputs and the search button, 14px for booking chips and city tiles, 16px for content cards
|
|
393
|
+
- Contain article cards with the single soft shadow rgba(0,0,0,0.1) 0 4px 8px and let it act as the border, rather than adding outlines
|
|
394
|
+
- Cap headings at the mobile-first scale (H1 26px/700, H2 22px/700, H3 16px/600) even on desktop, and separate hierarchy by size and weight, not by a darker color
|
|
395
|
+
- Render booking and payment confirmations as a dedicated single-column screen with one '확인' CTA, never reducing money-moving events to a toast
|
|
396
|
+
|
|
397
|
+
### Don't
|
|
398
|
+
- Spread SOCAR Blue across large background areas or general chrome — it must stay achromatic so the blue does the brand-flagging where it matters
|
|
399
|
+
- Reuse the #b4bbcb placeholder/disabled grey for active text, since it only measures ~2.5:1 on white and fails WCAG AA
|
|
400
|
+
- Introduce pill (9999px) or sharp-corner (0px) primary components, or multi-layer chromatic shadow stacks — both break the single-shadow, mid-radius geometry
|
|
401
|
+
- Swap Pretendard for a bespoke web display face or add letter-spacing to Korean text; the type voice comes from disciplined sizing with tracking left at normal
|
|
402
|
+
- Revive the pre-2024 playful consumer-app vocabulary — bright accents, illustrated empty states, or character mascots — that the rebrand deliberately retired
|
|
403
|
+
- Write generic error copy like '검색 결과가 없습니다' or '문제가 발생했습니다', or put exclamation marks and emoji on booking, payment, or return surfaces
|
|
@@ -11,6 +11,25 @@ logo:
|
|
|
11
11
|
slug: "https://www.google.com/s2/favicons?domain=tossinvest.com&sz=256"
|
|
12
12
|
verified: "2026-05-15"
|
|
13
13
|
omd: "0.1"
|
|
14
|
+
|
|
15
|
+
## 14. Do's and Don'ts
|
|
16
|
+
|
|
17
|
+
### Do
|
|
18
|
+
- Build dark-mode-first, layering surfaces from deepest #101013 to body rgb(23,23,28) to overlay #202025 for sheets
|
|
19
|
+
- Encode the KR-finance locale by using red #dc2e47 for positive/up ticks and blue #3182f6 for negative/down ticks via the positive/negative semantic tokens
|
|
20
|
+
- Create depth with translucent rgba(214,224,239,0.09) 1px borders and layered surface alpha instead of elevation
|
|
21
|
+
- Keep the two-tier radius scale, using 8px for cards, inputs, and buttons and 32px for pill controls like memo and filter chips
|
|
22
|
+
- Set type from the observed hierarchy: 24px/700 section H2, 18.72px/700 sub-section H3, 15px/500 nav links, and 16px/400 body
|
|
23
|
+
- Use Toss Product Sans tabular numerals so price ticks, order-book columns, and percent changes align by column
|
|
24
|
+
|
|
25
|
+
### Don't
|
|
26
|
+
- Copy positive=red / negative=blue into non-KR/JP/TW locales without inverting positive-* to green and negative-* to red
|
|
27
|
+
- Assume Toss Blue #3182f6 always means brand CTA, since on this surface it is also the down-tick fill and only context disambiguates
|
|
28
|
+
- Introduce box-shadow as elevation language; this system deliberately uses translucent borders plus layered surface alphas
|
|
29
|
+
- Add a third radius tier beyond the deliberate two-tier 8px / 32px scale
|
|
30
|
+
- Introduce a display-only accent typeface; restraint is the rule and there is no decorative accent face
|
|
31
|
+
- Decorate data surfaces with illustration; the price chart itself is the imagery
|
|
32
|
+
|
|
14
33
|
---
|
|
15
34
|
|
|
16
35
|
# Design System Inspiration of Toss Securities (토스증권)
|