oh-my-design-cli 1.5.0 → 1.6.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/AGENTS.md +1 -0
- package/README.ko.md +1 -1
- package/README.md +9 -9
- package/agents/omd-master.md +13 -1
- package/data/reference-fingerprints.json +1428 -523
- package/package.json +5 -4
- package/scripts/ctx-prime.cjs +266 -0
- package/skills/omd-harness/SKILL.md +135 -7
- package/skills/omd-kr-writer/SKILL.md +1 -1
- package/web/references/17live/DESIGN.md +424 -0
- package/web/references/alipay/DESIGN.md +456 -0
- package/web/references/appier/DESIGN.md +420 -0
- package/web/references/bilibili/DESIGN.md +426 -0
- package/web/references/class101/DESIGN.md +433 -0
- package/web/references/cookpad/DESIGN.md +357 -0
- package/web/references/dji/DESIGN.md +416 -0
- package/web/references/gogoro/DESIGN.md +403 -0
- package/web/references/ichef/DESIGN.md +411 -0
- package/web/references/kakaopay/DESIGN.md +1 -1
- package/web/references/kakaot/DESIGN.md +454 -0
- package/web/references/kkday/DESIGN.md +423 -0
- package/web/references/meituan/DESIGN.md +424 -0
- package/web/references/millie/DESIGN.md +533 -0
- package/web/references/money-forward/DESIGN.md +401 -0
- package/web/references/myrealtrip/DESIGN.md +445 -0
- package/web/references/naverwebtoon/DESIGN.md +429 -0
- package/web/references/note/DESIGN.md +318 -0
- package/web/references/publy/DESIGN.md +511 -0
- package/web/references/smarthr/DESIGN.md +404 -0
- package/web/references/smartnews/DESIGN.md +331 -0
- package/web/references/spoon/DESIGN.md +446 -0
- package/web/references/tada/DESIGN.md +528 -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/watcha/DESIGN.md +425 -0
- package/web/references/wavve/DESIGN.md +438 -0
- package/web/references/wconcept/DESIGN.md +511 -0
- package/web/references/xiaohongshu/DESIGN.md +423 -0
- package/web/references/yogiyo/DESIGN.md +465 -0
|
@@ -0,0 +1,434 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: triple
|
|
3
|
+
name: Triple
|
|
4
|
+
country: KR
|
|
5
|
+
category: travel
|
|
6
|
+
homepage: "https://triple.guide"
|
|
7
|
+
primary_color: "#368FFF"
|
|
8
|
+
logo:
|
|
9
|
+
type: favicon
|
|
10
|
+
slug: "https://www.google.com/s2/favicons?domain=triple.guide&sz=128"
|
|
11
|
+
verified: "2026-05-19"
|
|
12
|
+
omd: "0.1"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Design System Inspiration of Triple (트리플)
|
|
16
|
+
|
|
17
|
+
## 1. Visual Theme & Atmosphere
|
|
18
|
+
|
|
19
|
+
Triple is Korea's personal travel-planning app — "나를 아는 여행 앱, 트리플" (the travel app that knows me). Where most travel products are booking marketplaces, Triple's core is the *itinerary*: a friendly companion that helps you plan a trip day by day, recommends places that fit your taste, and gets richer the more you plan with friends. The interface reflects that companion role — bright, clean, approachable, with a single cheerful sky-blue carrying the entire interactive system and lots of soft, rounded, pill-shaped geometry that feels more like a chat app than a corporate OTA.
|
|
20
|
+
|
|
21
|
+
The signature is a vivid friendly blue, observed live as `#368FFF`, used everywhere a user acts: the primary "일정 살펴보기" CTA, active states, links, and selection. It's a brighter, more optimistic blue than fintech-trust blues — closer to a clear-sky travel-day blue. It's reinforced by a very light blue tint (`#F1F7FF`) for informational cards and an even subtler `rgba(54,143,255,0.07)` wash for selected/highlighted regions, so the blue family quietly tints the whole surface without ever overwhelming the white canvas. The CTA's most distinctive trait is its **pill radius (36px)** at a tall 56px height — a soft, tappable, friendly button that signals "this is easy."
|
|
22
|
+
|
|
23
|
+
Typography rides the platform's native system sans (`-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, ...`) — Triple is mobile-app-first, and the web mirrors the app's native-font feel — rendered in black-to-gray on white. Geometry is the brand's tactile language: pill buttons (36px), rounded cards (20px), and soft tinted blocks. The atmosphere is "your cheerful travel buddy with a map" — light, personal, collaborative, and a little playful.
|
|
24
|
+
|
|
25
|
+
**Key Characteristics:**
|
|
26
|
+
- Friendly sky-blue (`#368FFF`) as the single interactive accent — CTAs, active, links, selection
|
|
27
|
+
- Pill-radius CTAs (`36px` radius at 56px height) — soft, tappable, "easy" geometry
|
|
28
|
+
- Light blue tint family (`#F1F7FF`, `rgba(54,143,255,0.07)`) washing info/selected surfaces
|
|
29
|
+
- Clean white canvas with rounded cards (`20px`)
|
|
30
|
+
- Native system-sans type stack (mobile-app-first), black→gray on white
|
|
31
|
+
- Personal, collaborative, slightly playful — a travel companion, not a marketplace
|
|
32
|
+
- Itinerary-first: the day-by-day plan is the product
|
|
33
|
+
|
|
34
|
+
## 2. Color Palette & Roles
|
|
35
|
+
|
|
36
|
+
Colors below are extracted from live computed styles on triple.guide/intro (2026-05-19). Triple does not publish a public token layer; values are observed.
|
|
37
|
+
|
|
38
|
+
### Brand / Interactive
|
|
39
|
+
- **Triple Blue** (`#368FFF`): Primary interactive — CTA background, active states, links, selection. Observed `rgb(54, 143, 255)`, the most-frequent saturated color (39 occurrences). *(Brief-provided value was `#2EA6FF`; live observed `#368FFF` — use the live value.)*
|
|
40
|
+
- **Triple Blue Pressed** (`#1A85E8`): Hover/pressed darkening of Triple Blue.
|
|
41
|
+
- **Sky Accent** (`#1AADF6`): A lighter cyan-blue seen in secondary accents/illustration. Observed `rgb(26, 173, 246)`.
|
|
42
|
+
|
|
43
|
+
### Tints (Blue Family)
|
|
44
|
+
- **Blue Tint Card** (`#F1F7FF`): Light blue card/info-block background. Observed `rgb(241, 247, 255)`.
|
|
45
|
+
- **Blue Wash** (`rgba(54,143,255,0.07)`): Selected/highlighted region wash. Observed directly.
|
|
46
|
+
|
|
47
|
+
### Surfaces
|
|
48
|
+
- **Canvas White** (`#FFFFFF`): Page background, card surfaces.
|
|
49
|
+
- **Surface Gray** (`#F5F6F7`): Section bands, subtle grouping.
|
|
50
|
+
|
|
51
|
+
### Text
|
|
52
|
+
- **Text Primary** (`#1B1D1F`): Headings, primary labels.
|
|
53
|
+
- **Text Body** (`#3A3E41`): Body copy, card titles.
|
|
54
|
+
- **Text Secondary** (`#7E848A`): Metadata, captions, secondary labels.
|
|
55
|
+
- **Text Tertiary** (`#ADB1B5`): Placeholder, disabled, fine print.
|
|
56
|
+
|
|
57
|
+
### Borders & Dividers
|
|
58
|
+
- **Border Default** (`#E8EAEC`): Card borders, dividers, input outlines.
|
|
59
|
+
- **Border Strong** (`#D5D8DB`): Active/emphasized borders.
|
|
60
|
+
|
|
61
|
+
### Semantic
|
|
62
|
+
- **Success** (`#22C55E`): Saved, confirmed, completed.
|
|
63
|
+
- **Highlight Teal** (`#0ECEDB`): Special accent / map highlight. Observed `rgb(14, 206, 219)`.
|
|
64
|
+
- **Error** (`#FF3B30`): Errors, destructive.
|
|
65
|
+
- **Warning** (`#FAAD14`): Pending, attention.
|
|
66
|
+
|
|
67
|
+
## 3. Typography Rules
|
|
68
|
+
|
|
69
|
+
### Font Stack
|
|
70
|
+
```
|
|
71
|
+
-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Triple is mobile-app-first; the web mirrors the app by using the platform native sans (San Francisco / Roboto via the system stack). On Korean devices this resolves to Apple SD Gothic Neo / system Korean faces. All rendering is black-to-gray on white.
|
|
75
|
+
|
|
76
|
+
### Type Scale (observed intro + planning surfaces)
|
|
77
|
+
|
|
78
|
+
| Role | Size | Weight | Line Height | Use |
|
|
79
|
+
|---|---|---|---|---|
|
|
80
|
+
| Hero | 28–36px | 700 | 1.3 | Intro hero, feature headlines |
|
|
81
|
+
| Section Heading | 20–22px | 700 | 1.35 | Itinerary day headers, section titles |
|
|
82
|
+
| Card Title | 16px | 600 | 1.4 | Place/itinerary card titles |
|
|
83
|
+
| CTA | 18px | 700 | 1.4 | Primary buttons (observed 18px/700 on the 56px CTA) |
|
|
84
|
+
| Body | 16px | 400 | 1.5 | Descriptions, tip copy (observed 16px/400) |
|
|
85
|
+
| Meta | 14px | 400 | 1.4 | Place metadata, distance, hours |
|
|
86
|
+
| Caption | 12px | 400 | 1.4 | Badges, fine print |
|
|
87
|
+
|
|
88
|
+
### Conventions
|
|
89
|
+
- **700 for headlines and CTAs, 600 for card titles, 400 for body** — the bold CTA weight (700) makes the friendly pill feel confident.
|
|
90
|
+
- **Black headline, gray meta** — `#1B1D1F` → `#3A3E41` → `#7E848A`.
|
|
91
|
+
- **16px base body** — comfortable reading for trip tips and place descriptions.
|
|
92
|
+
- **Korean-primary** — Korean is first-class; English used in place names and the app stores.
|
|
93
|
+
|
|
94
|
+
## 4. Component Stylings
|
|
95
|
+
|
|
96
|
+
### Buttons
|
|
97
|
+
|
|
98
|
+
**Primary CTA (일정 살펴보기 / 함께 일정 만들기)**
|
|
99
|
+
- Background: `#368FFF`
|
|
100
|
+
- Text: `#FFFFFF`
|
|
101
|
+
- Border: none
|
|
102
|
+
- Radius: 36px (pill)
|
|
103
|
+
- Padding: 0 28px
|
|
104
|
+
- Font: 18px / 700 / system-sans
|
|
105
|
+
- Hover: background `#1A85E8`
|
|
106
|
+
- Use: Primary action — observed 56px tall, pill-shaped friendly button
|
|
107
|
+
|
|
108
|
+
**Secondary / Outline**
|
|
109
|
+
- Background: `#FFFFFF`
|
|
110
|
+
- Text: `#368FFF`
|
|
111
|
+
- Border: 1px solid `#368FFF`
|
|
112
|
+
- Radius: 36px (pill)
|
|
113
|
+
- Padding: 0 28px
|
|
114
|
+
- Font: 18px / 700 / system-sans
|
|
115
|
+
- Use: Secondary action paired with the filled primary
|
|
116
|
+
|
|
117
|
+
**Soft / Tinted**
|
|
118
|
+
- Background: `#F1F7FF`
|
|
119
|
+
- Text: `#368FFF`
|
|
120
|
+
- Border: none
|
|
121
|
+
- Radius: 36px (pill)
|
|
122
|
+
- Padding: 0 24px
|
|
123
|
+
- Font: 16px / 600 / system-sans
|
|
124
|
+
- Use: Low-emphasis action, "다시 보기", inline suggestions
|
|
125
|
+
|
|
126
|
+
**Ghost / Text**
|
|
127
|
+
- Background: transparent
|
|
128
|
+
- Text: `#3A3E41`
|
|
129
|
+
- Border: none
|
|
130
|
+
- Font: 16px / 600 / system-sans
|
|
131
|
+
- Use: Tertiary nav, "더보기"
|
|
132
|
+
|
|
133
|
+
### Inputs
|
|
134
|
+
|
|
135
|
+
**Search / Text Field**
|
|
136
|
+
- Background: `#F5F6F7`
|
|
137
|
+
- Text: `#1B1D1F`
|
|
138
|
+
- Border: none (filled) — or 1px solid `#E8EAEC` on white
|
|
139
|
+
- Radius: 12px
|
|
140
|
+
- Padding: 12px 16px
|
|
141
|
+
- Font: 16px / 400 / system-sans
|
|
142
|
+
- Placeholder: `#ADB1B5`
|
|
143
|
+
- Focus: border `#368FFF`
|
|
144
|
+
- Use: Destination/place search
|
|
145
|
+
|
|
146
|
+
### Cards
|
|
147
|
+
|
|
148
|
+
**Place / Itinerary Card**
|
|
149
|
+
- Background: `#FFFFFF`
|
|
150
|
+
- Border: 1px solid `#E8EAEC` (or shadowless on bands)
|
|
151
|
+
- Radius: 20px
|
|
152
|
+
- Padding: 16px (text region) + image
|
|
153
|
+
- Use: The planning atom — place photo + name + tip/metadata
|
|
154
|
+
|
|
155
|
+
**Info / Tip Card**
|
|
156
|
+
- Background: `#F1F7FF`
|
|
157
|
+
- Border: none
|
|
158
|
+
- Radius: 20px
|
|
159
|
+
- Padding: 20px
|
|
160
|
+
- Font: 16px / 400 / system-sans, `#3A3E41`
|
|
161
|
+
- Use: Travel tips, contextual info, "랜드마크를 사랑한 여행자" style editorial blocks (observed `rgb(241,247,255)` bg, 20px radius)
|
|
162
|
+
|
|
163
|
+
### Badges / Chips
|
|
164
|
+
|
|
165
|
+
**Category / Filter Chip**
|
|
166
|
+
- Background: `#F5F6F7`
|
|
167
|
+
- Text: `#3A3E41`
|
|
168
|
+
- Border: none
|
|
169
|
+
- Radius: 999px
|
|
170
|
+
- Padding: 6px 14px
|
|
171
|
+
- Font: 13px / 500 / system-sans
|
|
172
|
+
- Active: bg `rgba(54,143,255,0.07)`, text `#368FFF`
|
|
173
|
+
- Use: Place-type filters (관광 / 맛집 / 카페 / 숙소)
|
|
174
|
+
|
|
175
|
+
**Selected Region**
|
|
176
|
+
- Background: `rgba(54,143,255,0.07)`
|
|
177
|
+
- Text: `#368FFF`
|
|
178
|
+
- Border: 1px solid `#368FFF`
|
|
179
|
+
- Radius: 12px
|
|
180
|
+
- Use: Selected itinerary item, chosen place on map
|
|
181
|
+
|
|
182
|
+
### Tabs / Nav
|
|
183
|
+
|
|
184
|
+
**Bottom Tab (app) / Top Nav (web)**
|
|
185
|
+
- Active: `#368FFF` (icon + label)
|
|
186
|
+
- Inactive: `#7E848A`
|
|
187
|
+
- Font: 12px (tab) / 14px (web nav) / 500 / system-sans
|
|
188
|
+
- Use: 일정 / 가이드 / 예약 / 내 여행 switcher
|
|
189
|
+
|
|
190
|
+
### Toasts
|
|
191
|
+
|
|
192
|
+
**Snackbar**
|
|
193
|
+
- Background: `#1B1D1F`
|
|
194
|
+
- Text: `#FFFFFF`
|
|
195
|
+
- Radius: 12px
|
|
196
|
+
- Padding: 12px 16px
|
|
197
|
+
- Use: "일정에 추가했어요" transient feedback
|
|
198
|
+
|
|
199
|
+
### Dialogs
|
|
200
|
+
|
|
201
|
+
**Modal / Bottom Sheet**
|
|
202
|
+
- Background: `#FFFFFF`
|
|
203
|
+
- Text: `#1B1D1F`
|
|
204
|
+
- Radius: 20px (top corners on sheet)
|
|
205
|
+
- Padding: 24px
|
|
206
|
+
- Backdrop: `rgba(0,0,0,0.5)`
|
|
207
|
+
- Use: Place detail, add-to-itinerary, collaborator invite
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
**Verified:** 2026-05-19
|
|
212
|
+
**Tier 1 sources:** triple.guide/intro (live computed styles via Playwright — primary CTA `#368FFF` (rgb 54,143,255) / 36px pill radius / 18px·700 / 56px tall, the most-frequent saturated color (39×); info card `#F1F7FF` (rgb 241,247,255) / 20px radius; selected wash `rgba(54,143,255,0.07)` (17×); sky accent `#1AADF6` (rgb 26,173,246); highlight teal `#0ECEDB` (rgb 14,206,219); white bg; font `-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, ...`).
|
|
213
|
+
**Tier 2 sources:** getdesign.md/triple — not checked; styles.refero.design — not checked.
|
|
214
|
+
**Conflicts unresolved:** Brief-provided `#2EA6FF` vs live observed `#368FFF` — live adopted as canonical primary (39 occurrences on CTAs/active). No internal conflicts.
|
|
215
|
+
|
|
216
|
+
## 5. Layout Principles
|
|
217
|
+
|
|
218
|
+
### Page Structure
|
|
219
|
+
- Mobile-app-first; web intro/marketing is a vertical scroll of feature sections with rounded cards.
|
|
220
|
+
- In-app: a day-by-day itinerary timeline with place cards, a map view, and bottom-tab navigation.
|
|
221
|
+
|
|
222
|
+
### Spacing
|
|
223
|
+
- Base unit 8px; common values 4 / 8 / 12 / 16 / 20 / 24 / 32.
|
|
224
|
+
- Card gutter ~12–16px; section vertical gap ~32px.
|
|
225
|
+
- Page horizontal padding ~20px mobile, ~24px desktop.
|
|
226
|
+
|
|
227
|
+
### Density
|
|
228
|
+
**Comfortable, companion-density.** The itinerary is meant to be glanceable — generous spacing around place cards, soft tinted info blocks, lots of rounded breathing room. Not a data-dense table; a friendly planning canvas.
|
|
229
|
+
|
|
230
|
+
### Border Radius Scale
|
|
231
|
+
- Standard (12px): inputs, selected regions, snackbars
|
|
232
|
+
- Comfortable (20px): cards, info blocks, sheets
|
|
233
|
+
- Pill (36px): primary/secondary CTAs
|
|
234
|
+
- Pill (999px): chips
|
|
235
|
+
|
|
236
|
+
## 6. Depth & Elevation
|
|
237
|
+
|
|
238
|
+
| Level | Treatment | Use |
|
|
239
|
+
|---|---|---|
|
|
240
|
+
| Flat | no shadow | Page bg, inline, cards at rest on bands |
|
|
241
|
+
| Subtle | `0 1px 3px rgba(0,0,0,0.04)` | Resting place cards |
|
|
242
|
+
| Hover/Active | `0 4px 12px rgba(0,0,0,0.08)` | Lifted card, floating add button |
|
|
243
|
+
| Floating | `0 6px 20px rgba(0,0,0,0.12)` | Map pins popover, sticky CTA |
|
|
244
|
+
| Modal | `0 8px 24px rgba(0,0,0,0.16)` | Sheets, dialogs |
|
|
245
|
+
|
|
246
|
+
Depth is gentle and soft-edged, matching the rounded geometry. The blue-tint family does as much separating work as shadows — a `#F1F7FF` block reads as "set apart" without any elevation. The signature lift is the floating add-to-itinerary button (pill, blue, soft shadow) that follows the planning flow.
|
|
247
|
+
|
|
248
|
+
## 7. Do's and Don'ts
|
|
249
|
+
|
|
250
|
+
### Do
|
|
251
|
+
- Use `#368FFF` for every interactive element — it's the single accent.
|
|
252
|
+
- Use pill radius (36px) on primary CTAs — the soft "easy" geometry is the brand.
|
|
253
|
+
- Use the blue-tint family (`#F1F7FF`, `rgba(54,143,255,0.07)`) to separate info/selected surfaces.
|
|
254
|
+
- Use 20px rounded cards — companion-app softness.
|
|
255
|
+
- Keep the itinerary glanceable with generous spacing.
|
|
256
|
+
|
|
257
|
+
### Don't
|
|
258
|
+
- Don't introduce a second saturated accent; let blue own interaction.
|
|
259
|
+
- Don't use sharp or small radii on CTAs — pill is the brand signature.
|
|
260
|
+
- Don't pack the itinerary into a dense table; this is a friendly canvas.
|
|
261
|
+
- Don't fight the white canvas with heavy chrome; tints do the separating.
|
|
262
|
+
- Don't use a darker fintech-trust blue; Triple's blue is bright and cheerful.
|
|
263
|
+
|
|
264
|
+
## 8. Responsive Behavior
|
|
265
|
+
|
|
266
|
+
### Breakpoints
|
|
267
|
+
| Name | Width | Key Changes |
|
|
268
|
+
|---|---|---|
|
|
269
|
+
| Mobile (primary) | <768px | App-native: itinerary timeline + bottom tabs + map toggle; full-width pill CTA |
|
|
270
|
+
| Tablet | 768–1024px | Two-pane (itinerary + map), condensed nav |
|
|
271
|
+
| Desktop (web) | >1024px | Centered marketing column for intro; in-app web mirrors mobile in a column |
|
|
272
|
+
|
|
273
|
+
### Touch & Media
|
|
274
|
+
- Pill CTAs are large (56px) — generous tap targets.
|
|
275
|
+
- Place cards swipeable; map pins tappable to popover.
|
|
276
|
+
- Sticky bottom add/save CTA with safe-area inset.
|
|
277
|
+
|
|
278
|
+
### Image Behavior
|
|
279
|
+
- Place photos 4:3 or 1:1, `object-fit: cover`, rounded 20px (matching cards).
|
|
280
|
+
- Maps full-bleed with rounded container and blue pins.
|
|
281
|
+
|
|
282
|
+
## 9. Agent Prompt Guide
|
|
283
|
+
|
|
284
|
+
### Quick Color Reference
|
|
285
|
+
- Primary/active/link: Triple Blue `#368FFF` (pressed `#1A85E8`)
|
|
286
|
+
- Tints: card `#F1F7FF`; wash `rgba(54,143,255,0.07)`
|
|
287
|
+
- Canvas: White `#FFFFFF`; band `#F5F6F7`
|
|
288
|
+
- Text: `#1B1D1F` → `#3A3E41` → `#7E848A` → `#ADB1B5`
|
|
289
|
+
- Border: `#E8EAEC`; focus `#368FFF`
|
|
290
|
+
- Success `#22C55E`; highlight teal `#0ECEDB`; error `#FF3B30`
|
|
291
|
+
|
|
292
|
+
### Example Component Prompts
|
|
293
|
+
- "Build a Triple primary CTA: bg `#368FFF`, white text 18px weight 700, 36px pill radius, 56px tall, padding 0 28px. Hover bg `#1A85E8`."
|
|
294
|
+
- "Create a Triple place card: white bg, 1px border `#E8EAEC`, 20px radius. Place photo top (4:3, cover, rounded 20px top). Below: name (16px weight 600 `#1B1D1F`), tip/meta (14px `#7E848A`), category chip (bg `#F5F6F7`, 999px). Selected: bg `rgba(54,143,255,0.07)`, 1px border `#368FFF`."
|
|
295
|
+
- "Design a Triple info/tip card: bg `#F1F7FF`, 20px radius, 20px padding, body 16px `#3A3E41`, optional blue `#368FFF` highlight."
|
|
296
|
+
- "Create a Triple soft button: bg `#F1F7FF`, text `#368FFF` 16px weight 600, 36px pill radius — low-emphasis action."
|
|
297
|
+
|
|
298
|
+
### Iteration Guide
|
|
299
|
+
1. One blue `#368FFF` owns all interaction.
|
|
300
|
+
2. Pill radius (36px) on CTAs — the soft "easy" signature.
|
|
301
|
+
3. Blue-tint family separates info/selected surfaces.
|
|
302
|
+
4. 20px rounded cards; 16px base body.
|
|
303
|
+
5. System-sans stack first (mobile-app native feel).
|
|
304
|
+
6. Gentle soft-edged shadows; tints do separating work.
|
|
305
|
+
7. Keep the itinerary glanceable and generous, never dense.
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 10. Voice & Tone
|
|
310
|
+
|
|
311
|
+
Triple speaks like a cheerful travel buddy who already knows your taste — warm, light, second-person, a little playful. The register is friendly Korean with `~요`/`~어요` endings (`일정에 추가했어요`, `이런 곳은 어때요?`), the companion voice, never stiff `~습니다` except in policy. The brand line — "나를 아는 여행 앱" (the app that knows me) — sets the tone: copy is personal and anticipatory, surfacing places that fit *you* and getting more useful as you plan together. Korean is primary; place names and stores in English.
|
|
312
|
+
|
|
313
|
+
| Context | Tone |
|
|
314
|
+
|---|---|
|
|
315
|
+
| CTAs | Light Korean verb form (`일정 살펴보기`, `함께 일정 만들기`, `추가하기`, `둘러보기`). |
|
|
316
|
+
| Recommendations | Personal, anticipatory (`이런 곳은 어때요?`, `나를 아는 여행 앱`). |
|
|
317
|
+
| Success toasts | Past-tense soft ending (`일정에 추가했어요`). No emoji on chrome. |
|
|
318
|
+
| Error messages | Blameless, specific, one action (`정보를 불러올 수 없어요. 잠시 후 다시 시도해 주세요`). Never `오류가 발생했습니다`. |
|
|
319
|
+
| Empty states | Warm + one action (`아직 일정이 없어요. 첫 여행을 만들어볼까요?`). |
|
|
320
|
+
| Collaboration | Inviting, plural-friendly (`함께 할수록, 더 풍성해지는 여행`). |
|
|
321
|
+
| Legal / booking | Formal `~합니다` register — the exception. |
|
|
322
|
+
|
|
323
|
+
**Forbidden phrases.** `오류가 발생했습니다` (generic error), `죄송하지만` on non-destructive failures, pressure CTAs (`지금 예약하세요!` → `예약하기`), superlatives on UI chrome, English-first strings on Korean surfaces, emoji on system toasts (emoji belongs to user trip notes).
|
|
324
|
+
|
|
325
|
+
**Voice samples.**
|
|
326
|
+
- `일정 살펴보기` — primary CTA, observed live on the `#368FFF` pill button. <!-- verified: triple.guide/intro via Playwright 2026-05-19 -->
|
|
327
|
+
- `나를 아는 여행 앱, 트리플` — brand line (page title `나를 아는 여행 앱, 트리플`). <!-- verified: page title via Playwright 2026-05-19 -->
|
|
328
|
+
- `함께 할수록, 더 풍성해지는 여행` — collaboration headline, observed live. <!-- verified: triple.guide/intro via WebFetch 2026-05-19 -->
|
|
329
|
+
- `이런 곳은 어때요?` — illustrative recommendation line, soft `~요`. <!-- illustrative: not verified verbatim -->
|
|
330
|
+
|
|
331
|
+
## 11. Brand Narrative
|
|
332
|
+
|
|
333
|
+
Triple (트리플) is a Korean travel-planning app operated by **Triple Corporation**, which became part of the **Interpark Triple** group (and the broader Yanolja ecosystem after consolidation in the Korean travel-tech sector). Its founding insight was the opposite of the OTA marketplace: most travel products help you *book*, but few help you *plan* — and planning is where the anxiety and the joy of a trip actually live. Triple built an app around the **day-by-day itinerary**: pick a destination, get taste-fit recommendations, drag places onto a timeline, see them on a map, and plan together with the people you're traveling with. The tagline — "나를 아는 여행 앱" — promises a planner that learns your preferences and anticipates them. ([triple.guide](https://triple.guide/) — product; [triple.guide/intro](https://triple.guide/intro))
|
|
334
|
+
|
|
335
|
+
The design is the form of "companion, not marketplace." The cheerful sky-blue, the soft pill CTAs, the rounded tinted cards, and the light personal copy all push toward a feeling of *planning with a friend* rather than *transacting with a vendor*. Collaboration is first-class — "함께 할수록, 더 풍성해지는 여행" — so the app is built to be shared, and the warm, anticipatory tone scales naturally to a group planning a trip together.
|
|
336
|
+
|
|
337
|
+
What Triple refuses: the banner-heavy, discount-shouting density of booking OTAs (Triple is calm and glanceable), the impersonal inventory feed (every surface centers *your* taste and *your* plan), and the corporate-trust blue of fintech (Triple's blue is a clear-sky travel blue, optimistic and light). Triple is a travel buddy with a map — personal, collaborative, and gently delightful.
|
|
338
|
+
|
|
339
|
+
## 12. Principles
|
|
340
|
+
|
|
341
|
+
1. **Plan, don't just book.** The itinerary is the product; booking serves the plan. *UI implication:* The day-by-day timeline is primary; recommendations and bookings flow into it. Don't bury planning under a storefront.
|
|
342
|
+
|
|
343
|
+
2. **One cheerful blue owns interaction.** `#368FFF` is everywhere a user acts; nothing else competes. *UI implication:* No second saturated accent. The blue-tint family extends it for info/selected states.
|
|
344
|
+
|
|
345
|
+
3. **Soft is the signature.** Pill CTAs (36px) and 20px cards make planning feel easy and friendly. *UI implication:* Don't use sharp/small radii on actions. Roundness is brand identity, not decoration.
|
|
346
|
+
|
|
347
|
+
4. **It knows you, so it speaks to you.** Copy is personal and anticipatory. *UI implication:* `이런 곳은 어때요?`, `나를 아는 여행 앱` — second person, taste-fit framing. Lead with the traveler.
|
|
348
|
+
|
|
349
|
+
5. **Better together.** Collaboration is built in, and the tone scales to a group. *UI implication:* Invite, share, and co-edit affordances are first-class; plural-friendly copy (`함께`) throughout.
|
|
350
|
+
|
|
351
|
+
## 13. Personas
|
|
352
|
+
|
|
353
|
+
*Personas are fictional archetypes informed by publicly described Triple user segments (Korean leisure travelers and trip-planners), not individual people.*
|
|
354
|
+
|
|
355
|
+
**유진 (Yu-jin), 28, Seoul.** Plans every trip in detail. Uses Triple to build a day-by-day itinerary before departure, dragging recommended places onto the timeline and checking them on the map. Loves that the app learns her taste (cafes, viewpoints) and pre-fills suggestions.
|
|
356
|
+
|
|
357
|
+
**민서 (Min-seo), 25, Suwon.** Travels with friends. Triple's collaboration is why she uses it — the whole group edits one shared itinerary, so nobody's left out of planning. Picks places by the friendly recommendation cards and group votes.
|
|
358
|
+
|
|
359
|
+
**태현 (Tae-hyun), 35, Daejeon.** Family trips. Wants a low-stress, glanceable plan — what to do each day, how far apart places are. Distrusts dense booking apps; Triple's calm, rounded, companion feel keeps him in it. Books hotels and tickets directly from the plan.
|
|
360
|
+
|
|
361
|
+
## 14. States
|
|
362
|
+
|
|
363
|
+
| State | Treatment |
|
|
364
|
+
|---|---|
|
|
365
|
+
| **Empty (no itinerary)** | Warm line `#7E848A` (`아직 일정이 없어요`) + blue pill CTA (`첫 여행 만들기`). |
|
|
366
|
+
| **Empty (search no results)** | `#7E848A` caption (`검색 결과가 없어요. 다른 장소를 찾아보세요`) + suggested places. |
|
|
367
|
+
| **Loading (feed/itinerary first paint)** | Card-shaped skeletons at `#F5F6F7` matching layout, subtle shimmer. |
|
|
368
|
+
| **Loading (place detail)** | Inline ring spinner in `#368FFF`; content stays. |
|
|
369
|
+
| **Error (inline field)** | Input border `#FF3B30`, caption below in red, one actionable sentence. |
|
|
370
|
+
| **Error (toast)** | `#1B1D1F` bg, white 14px text, 3s dismiss, one sentence, no icon. |
|
|
371
|
+
| **Error (data load)** | Centered line `#1B1D1F` + retry pill `#368FFF`. Never blames the user. |
|
|
372
|
+
| **Success (added to itinerary)** | Snackbar `#1B1D1F` + white text (`일정에 추가했어요`), 3s dismiss; the place card gets a blue check. |
|
|
373
|
+
| **Success (trip saved/shared)** | Inline confirmation — green `#22C55E` check + share link affordance. |
|
|
374
|
+
| **Skeleton** | `#F5F6F7` blocks at exact card dimensions, 20px radius, ~1.2s shimmer. |
|
|
375
|
+
| **Disabled (button)** | Pill drops to `rgba(54,143,255,0.4)`, white text; geometry stable. |
|
|
376
|
+
|
|
377
|
+
## 15. Motion & Easing
|
|
378
|
+
|
|
379
|
+
Triple's motion is light and friendly — gentle slides, soft pops, map-pin reveals. Playful at small moments, calm overall.
|
|
380
|
+
|
|
381
|
+
**Durations:**
|
|
382
|
+
|
|
383
|
+
| Token | Value | Use |
|
|
384
|
+
|---|---|---|
|
|
385
|
+
| `motion-instant` | 0ms | Toggle/checkbox, chip select |
|
|
386
|
+
| `motion-fast` | 150ms | Hover, press, add-to-itinerary check |
|
|
387
|
+
| `motion-standard` | 250ms | Card lift, sheet open, tab switch, map pin drop |
|
|
388
|
+
| `motion-slow` | 350ms | Page-to-detail, itinerary reorder settle |
|
|
389
|
+
|
|
390
|
+
**Easings:**
|
|
391
|
+
|
|
392
|
+
| Token | Curve | Use |
|
|
393
|
+
|---|---|---|
|
|
394
|
+
| `ease-standard` | `cubic-bezier(0.4, 0, 0.2, 1)` | Default — most motion |
|
|
395
|
+
| `ease-enter` | `cubic-bezier(0.0, 0.0, 0.2, 1)` | Sheets, modals, toasts, map pins appearing |
|
|
396
|
+
| `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
|
|
397
|
+
| `ease-spring` | `cubic-bezier(0.34, 1.56, 0.64, 1)` | Add-to-itinerary pop, map-pin drop |
|
|
398
|
+
|
|
399
|
+
**Spring stance.** Spring is licensed for the small delight moments that make planning fun — the add-to-itinerary pop and the map-pin drop. Navigation and sheets use standard easing. The companion should feel playful when you add a place, calm when you move around.
|
|
400
|
+
|
|
401
|
+
**Signature motions.**
|
|
402
|
+
1. **Add to itinerary.** On tap, the place chip pops to ~1.15 and the item slides into the timeline over `motion-fast / ease-spring`, with a snackbar confirm. The signature delight.
|
|
403
|
+
2. **Map-pin drop.** Pins drop onto the map with a brief overshoot `motion-standard / ease-spring`, sequenced ~40ms apart for multiple places.
|
|
404
|
+
3. **Itinerary reorder.** Dragging a place reflows the timeline with `motion-standard / ease-standard`; the dropped item settles softly.
|
|
405
|
+
4. **Reduce motion.** Under `prefers-reduced-motion: reduce`, pops/drops/slides collapse to instant opacity; skeletons go static `#F5F6F7`. No exceptions.
|
|
406
|
+
|
|
407
|
+
<!--
|
|
408
|
+
OmD v0.1 Sources — Philosophy Layer (sections 10–15)
|
|
409
|
+
|
|
410
|
+
Tier 1 (UI tokens, §1–9): triple.guide/intro live computed styles via
|
|
411
|
+
Playwright MCP, 2026-05-19. Confirmed: primary CTA `#368FFF` (rgb 54,143,255)
|
|
412
|
+
36px pill radius 18px·700 56px tall, the most-frequent saturated color (39×);
|
|
413
|
+
info card `#F1F7FF` (rgb 241,247,255) 20px radius; selected wash
|
|
414
|
+
`rgba(54,143,255,0.07)` (17×); sky accent `#1AADF6` (rgb 26,173,246); highlight
|
|
415
|
+
teal `#0ECEDB` (rgb 14,206,219); white bg; system-sans font stack
|
|
416
|
+
`-apple-system, "system-ui", "Segoe UI", Helvetica, Arial, ...`. Page title
|
|
417
|
+
`나를 아는 여행 앱, 트리플`.
|
|
418
|
+
|
|
419
|
+
Brief `#2EA6FF` vs live `#368FFF` — live adopted (verified on CTAs/active).
|
|
420
|
+
|
|
421
|
+
Tier 2 (narrative): triple.guide / triple.guide/intro for product positioning
|
|
422
|
+
(itinerary-first, collaboration). Corporate ownership (Triple Corporation /
|
|
423
|
+
Interpark Triple / Yanolja ecosystem) is general industry knowledge from
|
|
424
|
+
Korean travel-tech consolidation; not re-verified against primary press in
|
|
425
|
+
this pass — treat ownership detail as background, not load-bearing.
|
|
426
|
+
|
|
427
|
+
Voice samples: `일정 살펴보기`, `함께 할수록, 더 풍성해지는 여행`, and
|
|
428
|
+
`나를 아는 여행 앱, 트리플` verified live (button / headline / page title).
|
|
429
|
+
`이런 곳은 어때요?`, `일정에 추가했어요`, empty/error copy are ILLUSTRATIVE
|
|
430
|
+
patterns following Triple's light `~요` companion register; not verbatim.
|
|
431
|
+
|
|
432
|
+
Personas (§13) are fictional archetypes. Any resemblance to specific users is
|
|
433
|
+
unintended.
|
|
434
|
+
-->
|