oh-my-design-cli 0.1.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/LICENSE +21 -0
- package/README.ja.md +145 -0
- package/README.ko.md +245 -0
- package/README.md +245 -0
- package/README.zh-TW.md +145 -0
- package/data/reference-tags.md +104 -0
- package/data/synonyms.json +79 -0
- package/data/vocabulary.json +516 -0
- package/dist/bin/oh-my-design.js +858 -0
- package/dist/bin/oh-my-design.js.map +1 -0
- package/dist/chunk-6YNSV3VY.js +35 -0
- package/dist/chunk-6YNSV3VY.js.map +1 -0
- package/dist/chunk-MHFYGZSO.js +337 -0
- package/dist/chunk-MHFYGZSO.js.map +1 -0
- package/dist/chunk-N2JG6N4Q.js +264 -0
- package/dist/chunk-N2JG6N4Q.js.map +1 -0
- package/dist/chunk-OOQQEUGX.js +46 -0
- package/dist/chunk-OOQQEUGX.js.map +1 -0
- package/dist/chunk-OR5DHENY.js +250 -0
- package/dist/chunk-OR5DHENY.js.map +1 -0
- package/dist/customizer-CM76752R.js +8 -0
- package/dist/customizer-CM76752R.js.map +1 -0
- package/dist/index.d.ts +559 -0
- package/dist/index.js +3113 -0
- package/dist/index.js.map +1 -0
- package/dist/init-STACB7E5.js +635 -0
- package/dist/init-STACB7E5.js.map +1 -0
- package/dist/install-skills-CM6VXFZJ.js +152 -0
- package/dist/install-skills-CM6VXFZJ.js.map +1 -0
- package/dist/learn-33LHKEJA.js +140 -0
- package/dist/learn-33LHKEJA.js.map +1 -0
- package/dist/reference-YMNAOXJQ.js +47 -0
- package/dist/reference-YMNAOXJQ.js.map +1 -0
- package/dist/reference-parser-TM3CJPNE.js +10 -0
- package/dist/reference-parser-TM3CJPNE.js.map +1 -0
- package/dist/remember-UAFA5B2O.js +78 -0
- package/dist/remember-UAFA5B2O.js.map +1 -0
- package/dist/sync-P7X4S2DK.js +404 -0
- package/dist/sync-P7X4S2DK.js.map +1 -0
- package/dist/templates/templates/design-md.hbs +44 -0
- package/dist/templates/templates/partials/agent-prompt-guide.hbs +28 -0
- package/dist/templates/templates/partials/color-palette.hbs +49 -0
- package/dist/templates/templates/partials/component-stylings.hbs +28 -0
- package/dist/templates/templates/partials/depth-elevation.hbs +31 -0
- package/dist/templates/templates/partials/dos-donts.hbs +13 -0
- package/dist/templates/templates/partials/layout.hbs +30 -0
- package/dist/templates/templates/partials/responsive.hbs +25 -0
- package/dist/templates/templates/partials/shadcn-tokens.hbs +64 -0
- package/dist/templates/templates/partials/typography.hbs +43 -0
- package/dist/templates/templates/partials/visual-theme.hbs +26 -0
- package/package.json +68 -0
- package/references/Claude-Design-Sys-Prompt.txt +421 -0
- package/references/airbnb/DESIGN.md +427 -0
- package/references/airbnb/README.md +23 -0
- package/references/airbnb/preview-dark.html +234 -0
- package/references/airbnb/preview.html +233 -0
- package/references/airtable/DESIGN.md +107 -0
- package/references/airtable/README.md +23 -0
- package/references/airtable/preview-dark.html +165 -0
- package/references/airtable/preview.html +164 -0
- package/references/apple/DESIGN.md +496 -0
- package/references/apple/README.md +24 -0
- package/references/apple/preview-dark.html +420 -0
- package/references/apple/preview.html +414 -0
- package/references/baemin/DESIGN.md +260 -0
- package/references/baemin/README.md +19 -0
- package/references/bmw/DESIGN.md +180 -0
- package/references/bmw/README.md +23 -0
- package/references/bmw/preview-dark.html +211 -0
- package/references/bmw/preview.html +210 -0
- package/references/cal/DESIGN.md +259 -0
- package/references/cal/README.md +23 -0
- package/references/cal/preview-dark.html +449 -0
- package/references/cal/preview.html +575 -0
- package/references/claude/DESIGN.md +455 -0
- package/references/claude/README.md +24 -0
- package/references/claude/preview-dark.html +803 -0
- package/references/claude/preview.html +826 -0
- package/references/clay/DESIGN.md +304 -0
- package/references/clay/README.md +23 -0
- package/references/clay/preview-dark.html +316 -0
- package/references/clay/preview.html +315 -0
- package/references/clickhouse/DESIGN.md +281 -0
- package/references/clickhouse/README.md +24 -0
- package/references/clickhouse/preview-dark.html +834 -0
- package/references/clickhouse/preview.html +786 -0
- package/references/cohere/DESIGN.md +266 -0
- package/references/cohere/README.md +24 -0
- package/references/cohere/preview-dark.html +803 -0
- package/references/cohere/preview.html +807 -0
- package/references/coinbase/DESIGN.md +129 -0
- package/references/coinbase/README.md +23 -0
- package/references/coinbase/preview-dark.html +164 -0
- package/references/coinbase/preview.html +163 -0
- package/references/composio/DESIGN.md +307 -0
- package/references/composio/README.md +24 -0
- package/references/composio/preview-dark.html +958 -0
- package/references/composio/preview.html +933 -0
- package/references/cursor/DESIGN.md +322 -0
- package/references/cursor/README.md +24 -0
- package/references/cursor/preview-dark.html +393 -0
- package/references/cursor/preview.html +383 -0
- package/references/dcard/DESIGN.md +302 -0
- package/references/dcard/README.md +12 -0
- package/references/dcard/_research/forum-1440px.png +0 -0
- package/references/dcard/_research.md +77 -0
- package/references/elevenlabs/DESIGN.md +265 -0
- package/references/elevenlabs/README.md +23 -0
- package/references/elevenlabs/preview-dark.html +252 -0
- package/references/elevenlabs/preview.html +251 -0
- package/references/expo/DESIGN.md +281 -0
- package/references/expo/README.md +24 -0
- package/references/expo/preview-dark.html +533 -0
- package/references/expo/preview.html +533 -0
- package/references/ferrari/DESIGN.md +314 -0
- package/references/ferrari/README.md +23 -0
- package/references/ferrari/preview-dark.html +1162 -0
- package/references/ferrari/preview.html +1122 -0
- package/references/figma/DESIGN.md +399 -0
- package/references/figma/README.md +24 -0
- package/references/figma/preview-dark.html +822 -0
- package/references/figma/preview.html +832 -0
- package/references/framer/DESIGN.md +246 -0
- package/references/framer/README.md +23 -0
- package/references/framer/preview-dark.html +902 -0
- package/references/framer/preview.html +883 -0
- package/references/freee/DESIGN.md +308 -0
- package/references/freee/README.md +12 -0
- package/references/freee/_research/vibes-storybook-1440px.png +0 -0
- package/references/freee/_research.md +77 -0
- package/references/hashicorp/DESIGN.md +278 -0
- package/references/hashicorp/README.md +24 -0
- package/references/hashicorp/preview-dark.html +1202 -0
- package/references/hashicorp/preview.html +1193 -0
- package/references/ibm/DESIGN.md +332 -0
- package/references/ibm/README.md +24 -0
- package/references/ibm/preview-dark.html +443 -0
- package/references/ibm/preview.html +428 -0
- package/references/intercom/DESIGN.md +146 -0
- package/references/intercom/README.md +23 -0
- package/references/intercom/preview-dark.html +185 -0
- package/references/intercom/preview.html +184 -0
- package/references/kakao/DESIGN.md +261 -0
- package/references/kakao/README.md +18 -0
- package/references/karrot/DESIGN.md +252 -0
- package/references/karrot/README.md +18 -0
- package/references/kraken/DESIGN.md +146 -0
- package/references/kraken/README.md +23 -0
- package/references/kraken/preview-dark.html +169 -0
- package/references/kraken/preview.html +168 -0
- package/references/lamborghini/DESIGN.md +288 -0
- package/references/lamborghini/README.md +23 -0
- package/references/lamborghini/preview-dark.html +303 -0
- package/references/lamborghini/preview.html +381 -0
- package/references/line/DESIGN.md +375 -0
- package/references/line/README.md +12 -0
- package/references/line/_research/home-1440px.png +0 -0
- package/references/line/_research.md +65 -0
- package/references/linear.app/DESIGN.md +526 -0
- package/references/linear.app/README.md +24 -0
- package/references/linear.app/preview-dark.html +383 -0
- package/references/linear.app/preview.html +373 -0
- package/references/lovable/DESIGN.md +298 -0
- package/references/lovable/README.md +24 -0
- package/references/lovable/preview-dark.html +349 -0
- package/references/lovable/preview.html +348 -0
- package/references/mercari/DESIGN.md +294 -0
- package/references/mercari/README.md +12 -0
- package/references/mercari/_research/home-1440px.png +0 -0
- package/references/mercari/_research.md +77 -0
- package/references/minimax/DESIGN.md +257 -0
- package/references/minimax/README.md +24 -0
- package/references/minimax/preview-dark.html +1262 -0
- package/references/minimax/preview.html +1248 -0
- package/references/mintlify/DESIGN.md +341 -0
- package/references/mintlify/README.md +24 -0
- package/references/mintlify/preview-dark.html +409 -0
- package/references/mintlify/preview.html +398 -0
- package/references/miro/DESIGN.md +108 -0
- package/references/miro/README.md +23 -0
- package/references/miro/preview-dark.html +174 -0
- package/references/miro/preview.html +173 -0
- package/references/mistral.ai/DESIGN.md +261 -0
- package/references/mistral.ai/README.md +24 -0
- package/references/mistral.ai/preview-dark.html +806 -0
- package/references/mistral.ai/preview.html +805 -0
- package/references/mongodb/DESIGN.md +266 -0
- package/references/mongodb/README.md +23 -0
- package/references/mongodb/preview-dark.html +260 -0
- package/references/mongodb/preview.html +259 -0
- package/references/notion/DESIGN.md +492 -0
- package/references/notion/README.md +24 -0
- package/references/notion/preview-dark.html +372 -0
- package/references/notion/preview.html +364 -0
- package/references/nvidia/DESIGN.md +308 -0
- package/references/nvidia/README.md +24 -0
- package/references/nvidia/preview-dark.html +374 -0
- package/references/nvidia/preview.html +366 -0
- package/references/ollama/DESIGN.md +267 -0
- package/references/ollama/README.md +24 -0
- package/references/ollama/preview-dark.html +678 -0
- package/references/ollama/preview.html +678 -0
- package/references/opencode.ai/DESIGN.md +295 -0
- package/references/opencode.ai/README.md +24 -0
- package/references/opencode.ai/preview-dark.html +366 -0
- package/references/opencode.ai/preview.html +357 -0
- package/references/pinkoi/DESIGN.md +309 -0
- package/references/pinkoi/README.md +12 -0
- package/references/pinkoi/_research/browse-1440px.png +0 -0
- package/references/pinkoi/_research.md +115 -0
- package/references/pinterest/DESIGN.md +230 -0
- package/references/pinterest/README.md +23 -0
- package/references/pinterest/preview-dark.html +233 -0
- package/references/pinterest/preview.html +232 -0
- package/references/posthog/DESIGN.md +256 -0
- package/references/posthog/README.md +23 -0
- package/references/posthog/preview-dark.html +699 -0
- package/references/posthog/preview.html +749 -0
- package/references/raycast/DESIGN.md +268 -0
- package/references/raycast/README.md +23 -0
- package/references/raycast/preview-dark.html +606 -0
- package/references/raycast/preview.html +688 -0
- package/references/renault/DESIGN.md +311 -0
- package/references/renault/README.md +23 -0
- package/references/renault/preview-dark.html +406 -0
- package/references/renault/preview.html +606 -0
- package/references/replicate/DESIGN.md +261 -0
- package/references/replicate/README.md +24 -0
- package/references/replicate/preview-dark.html +828 -0
- package/references/replicate/preview.html +831 -0
- package/references/resend/DESIGN.md +303 -0
- package/references/resend/README.md +23 -0
- package/references/resend/preview-dark.html +355 -0
- package/references/resend/preview.html +354 -0
- package/references/revolut/DESIGN.md +185 -0
- package/references/revolut/README.md +23 -0
- package/references/revolut/preview-dark.html +234 -0
- package/references/revolut/preview.html +233 -0
- package/references/runwayml/DESIGN.md +244 -0
- package/references/runwayml/README.md +24 -0
- package/references/runwayml/preview-dark.html +664 -0
- package/references/runwayml/preview.html +665 -0
- package/references/sanity/DESIGN.md +357 -0
- package/references/sanity/README.md +24 -0
- package/references/sanity/preview-dark.html +990 -0
- package/references/sanity/preview.html +1135 -0
- package/references/sentry/DESIGN.md +262 -0
- package/references/sentry/README.md +24 -0
- package/references/sentry/preview-dark.html +626 -0
- package/references/sentry/preview.html +951 -0
- package/references/spacex/DESIGN.md +205 -0
- package/references/spacex/README.md +23 -0
- package/references/spacex/preview-dark.html +221 -0
- package/references/spacex/preview.html +220 -0
- package/references/spotify/DESIGN.md +246 -0
- package/references/spotify/README.md +23 -0
- package/references/spotify/preview-dark.html +231 -0
- package/references/spotify/preview.html +230 -0
- package/references/stripe/DESIGN.md +473 -0
- package/references/stripe/README.md +24 -0
- package/references/stripe/preview-dark.html +428 -0
- package/references/stripe/preview.html +419 -0
- package/references/supabase/DESIGN.md +255 -0
- package/references/supabase/README.md +24 -0
- package/references/supabase/preview-dark.html +977 -0
- package/references/supabase/preview.html +955 -0
- package/references/superhuman/DESIGN.md +252 -0
- package/references/superhuman/README.md +23 -0
- package/references/superhuman/preview-dark.html +973 -0
- package/references/superhuman/preview.html +951 -0
- package/references/tesla/DESIGN.md +286 -0
- package/references/tesla/README.md +23 -0
- package/references/tesla/preview-dark.html +947 -0
- package/references/tesla/preview.html +925 -0
- package/references/together.ai/DESIGN.md +263 -0
- package/references/together.ai/README.md +24 -0
- package/references/together.ai/preview-dark.html +892 -0
- package/references/together.ai/preview.html +897 -0
- package/references/toss/DESIGN.md +387 -0
- package/references/toss/README.md +19 -0
- package/references/uber/DESIGN.md +295 -0
- package/references/uber/README.md +24 -0
- package/references/uber/preview-dark.html +1120 -0
- package/references/uber/preview.html +1119 -0
- package/references/vercel/DESIGN.md +456 -0
- package/references/vercel/README.md +24 -0
- package/references/vercel/preview-dark.html +368 -0
- package/references/vercel/preview.html +367 -0
- package/references/voltagent/DESIGN.md +323 -0
- package/references/voltagent/README.md +24 -0
- package/references/voltagent/preview-dark.html +487 -0
- package/references/voltagent/preview.html +766 -0
- package/references/warp/DESIGN.md +253 -0
- package/references/warp/README.md +23 -0
- package/references/warp/preview-dark.html +500 -0
- package/references/warp/preview.html +533 -0
- package/references/webflow/DESIGN.md +109 -0
- package/references/webflow/README.md +23 -0
- package/references/webflow/preview-dark.html +147 -0
- package/references/webflow/preview.html +146 -0
- package/references/wise/DESIGN.md +173 -0
- package/references/wise/README.md +23 -0
- package/references/wise/preview-dark.html +230 -0
- package/references/wise/preview.html +229 -0
- package/references/x.ai/DESIGN.md +267 -0
- package/references/x.ai/README.md +24 -0
- package/references/x.ai/preview-dark.html +356 -0
- package/references/x.ai/preview.html +407 -0
- package/references/zapier/DESIGN.md +328 -0
- package/references/zapier/README.md +24 -0
- package/references/zapier/preview-dark.html +380 -0
- package/references/zapier/preview.html +372 -0
- package/skills/omd-apply/SKILL.md +85 -0
- package/skills/omd-init/SKILL.md +167 -0
- package/skills/omd-learn/SKILL.md +81 -0
- package/skills/omd-remember/SKILL.md +44 -0
- package/skills/omd-sync/SKILL.md +38 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# Design System Inspiration of Pinkoi
|
|
2
|
+
|
|
3
|
+
## 1. Visual Theme & Atmosphere
|
|
4
|
+
|
|
5
|
+
Pinkoi is Asia's cross-border design marketplace, and its system reflects exactly that — a busy, multi-cultural commerce surface that prioritizes density, legibility, and conversion over minimalist whitespace. The page opens on a near-white canvas (`#f7f7f8` for grouped sections, `#ffffff` for primary surfaces) with dark slate text (`#39393e`) and a confident **teal-navy primary** (`#10567b`) that anchors actions like Login and primary CTAs. This isn't a "designer-chic" pastel palette as the brand name might suggest — the actual product surface is engineered for high-density browsing across Taiwan, Japan, Hong Kong, mainland China, and Thailand.
|
|
6
|
+
|
|
7
|
+
Typography is **bold-heavy**, with weight 700 dominating across headlines, badges, and key CTAs (37 occurrences in core CSS vs. 16 of weight 400). There is no custom brand typeface; instead, Pinkoi runs a sophisticated locale-aware system stack — `Helvetica Neue, Helvetica, Arial` followed by `PingFang TC, Heiti TC, Microsoft JhengHei` for Traditional Chinese, `PingFang SC, Heiti SC, Microsoft YaHei` for Simplified, `ヒラギノ角ゴ Pro W3, Meiryo` for Japanese, and `Thonburi, Noto Sans Thai` for Thai. Every character renders in the user's native font infrastructure. This is design-as-localization, not design-as-decoration.
|
|
8
|
+
|
|
9
|
+
What gives Pinkoi its quietly distinctive feel is its **flat semantic button system** with seven named variants. Every button — `--primary`, `--secondary`, `--purchase`, `--danger`, `--green`, `--login`, plus `*-plain` ghost variants — uses the same recipe: `background: <color>; border: 1px solid <same-color>; color: #fff;`. The matched border-and-background gives buttons a crisp "solid block" appearance without any shadow, while the explicit `1px` border ensures visual integrity even on high-DPI displays where pure-fill buttons can look fuzzy. Coral (`#f16c5d`) is reserved for the `--purchase` variant alone — the highest-conversion moment on every product page.
|
|
10
|
+
|
|
11
|
+
**Key Characteristics:**
|
|
12
|
+
- Locale-aware system font stacks — no custom typeface, but explicit per-language fallbacks (TC/SC/JP/TH)
|
|
13
|
+
- Weight 700 dominant for headlines, CTAs, and emphasis (verified in CSS: 37x vs. 16x weight 400)
|
|
14
|
+
- Conservative `border-radius` — `4px` is the workhorse on buttons and cards, `2px` on badges, `50%` on avatars
|
|
15
|
+
- **Flat button system** — every variant uses `border: 1px solid <bg-color>`, giving a crisp solid-block look without shadow
|
|
16
|
+
- 7-tier semantic button variants (`primary`, `secondary`, `danger`, `purchase`, `green`, `login`, `*-plain`) with full hover/active state matrices
|
|
17
|
+
- Cool teal-navy (`#10567b`) as primary action color — overrides the warm "Pinkoi" naming
|
|
18
|
+
- Coral (`#f16c5d`) reserved exclusively for the `--purchase` variant — the highest-conversion CTA
|
|
19
|
+
- Skeuomorphic colored shadows reserved for **legacy specialty controls** only (`.m-button-{pink,gray,green,unfav}` — favorite hearts, follow-shop buttons), never on the primary `.m-br-button` system
|
|
20
|
+
- High-density grid: 6-column product layout (`16.66%` each) with `12px` total horizontal margin per card
|
|
21
|
+
- 12-step neutral gray scale from `#f7f7f8` → `#202026` for surfaces, borders, and text hierarchy
|
|
22
|
+
|
|
23
|
+
## 2. Color Palette & Roles
|
|
24
|
+
|
|
25
|
+
### Primary
|
|
26
|
+
- **Mid Teal** (`#10567b`): `--primary` and `--login` button **base** background. The default brand action color.
|
|
27
|
+
- **Deep Teal** (`#064162`): `--primary` and `--login` **hover** state. Darker for visual press feedback.
|
|
28
|
+
- **Darkest Navy** (`#003354`): `--primary` and `--login` **active/pressed** state. The deepest brand blue.
|
|
29
|
+
- **Bright Teal** (`#2e90b7`): Link color, `--*-plain` visited state, secondary brand accent (used 22x in core CSS).
|
|
30
|
+
- **Pure White** (`#ffffff`): Card surfaces, modal backgrounds, button text on filled buttons, `--secondary` button background.
|
|
31
|
+
|
|
32
|
+
### Surface & Background
|
|
33
|
+
- **Surface Soft** (`#f7f7f8`): Default page background tint, `--secondary` button hover, grouped section background (20x in core).
|
|
34
|
+
- **Surface Hover** (`#eeeeef`): `--secondary` button active state, slightly heavier muted surface.
|
|
35
|
+
- **Border Light** (`#e5e5e6`): Default thin dividers between rows.
|
|
36
|
+
- **Border Mid** (`#d3d3d5`): Standard component border (cards, inputs, button outlines for non-filled variants — used 32x in core).
|
|
37
|
+
|
|
38
|
+
### Neutral Scale (Text & Iconography)
|
|
39
|
+
- **Text Primary** (`#39393e`): Default body and heading color (41 uses in CSS — the dominant text color).
|
|
40
|
+
- **Text Secondary** (`#515156`): Slightly lighter for secondary headings and labels (10x).
|
|
41
|
+
- **Text Muted** (`#66666a`): Captions, timestamps, descriptive text (26x).
|
|
42
|
+
- **Text Subtle** (`#7c7c80`): Disabled-looking tertiary text.
|
|
43
|
+
- **Text Faint** (`#929295`): Hints, placeholder, very low-emphasis labels.
|
|
44
|
+
- **Text Disabled** (`#a8a8ab`): Disabled states, line-through original prices (`.oprice`), `--secondary` button border.
|
|
45
|
+
- **Text Ghost** (`#bfbfc1`): Decorative or low-priority dividers, alternative line-through price color.
|
|
46
|
+
- **Text Black** (`#202026`): Reserved for maximum-emphasis moments (overlays, modal titles).
|
|
47
|
+
|
|
48
|
+
### Purchase (CTA-exclusive)
|
|
49
|
+
- **Coral Base** (`#f16c5d`): `--purchase` button **base** background. Used **only** on the most important conversion moment per page (Add to Cart, Buy Now).
|
|
50
|
+
- **Coral Hover** (`#e56051`): `--purchase` hover state. Confirmed CSS-exclusive: appears in only 2 places — the `--purchase` button and one decorative bold text rule.
|
|
51
|
+
- **Coral Active** (`#da5648`): `--purchase` pressed state.
|
|
52
|
+
|
|
53
|
+
### Error / Danger
|
|
54
|
+
- **Error Red** (`#e63349`): The system's error/danger color (25 uses in core CSS). Used as: `--danger` button base, form validation error label/border/icon, required-field asterisk (`.s-required:after`), warning info text (`.g-info.g-warn b`), `--danger-plain` text hover. **Not** a promotional sale color — it's the validation/destructive red.
|
|
55
|
+
- **Error Red Hover** (`#d72136`): `--danger` button hover.
|
|
56
|
+
- **Error Red Active** (`#c41428`): `--danger` button pressed.
|
|
57
|
+
- **Pink Visited** (`#f86173`): `--danger-plain` visited link state.
|
|
58
|
+
|
|
59
|
+
### Success
|
|
60
|
+
- **Success Green Base** (`#2cac97`): `--green` button base background. Teal-leaning green, not pure forest.
|
|
61
|
+
- **Success Green Hover** (`#289c8a`): `--green` hover and active state.
|
|
62
|
+
|
|
63
|
+
### Decorative / Legacy
|
|
64
|
+
- **Brand Pink** (`#c83166`): Used inside the legacy skeuomorphic shadow recipe for pink-themed buttons (`.m-button-pink`). Also appears as accent in promotional decoration.
|
|
65
|
+
- **Hot Pink** (`#ff6299`): `.m-button-pink:hover` background — legacy favorite/heart button.
|
|
66
|
+
- **Lime Green** (`#7ec527` / `#65a40e` / `#4d9200`): `.m-button-green` legacy palette — applies to specialty controls only.
|
|
67
|
+
|
|
68
|
+
### Shadow Tints (Layered Shadow Components)
|
|
69
|
+
- **Shadow Soft** (`rgba(32,32,38,.12)`): The default soft drop shadow base.
|
|
70
|
+
- **Shadow Edge** (`rgba(32,32,38,.2)`): Used in `0 1px 1px 0 rgba(32,32,38,.2)` for subtle row dividers and `.card-discount-badge`.
|
|
71
|
+
- **Shadow Modal** (`rgba(32,32,38,.4)`): Stronger overlay shadow for modals and popovers.
|
|
72
|
+
- **Shadow Tooltip** (`hsla(240,2%,41%,.8)`): Tooltip outer glow.
|
|
73
|
+
|
|
74
|
+
## 3. Typography Rules
|
|
75
|
+
|
|
76
|
+
### Font Stack (Locale-Aware)
|
|
77
|
+
Pinkoi runs **per-language font stacks**. Always lead with `Helvetica Neue, Helvetica, Arial`, then append the user's locale stack:
|
|
78
|
+
|
|
79
|
+
| Locale | Font Stack |
|
|
80
|
+
|---|---|
|
|
81
|
+
| Default (en) | `Helvetica Neue, Helvetica, Arial, Verdana, sans-serif` |
|
|
82
|
+
| Traditional Chinese | `Helvetica Neue, Helvetica, Arial, PingFang TC, Heiti TC, Microsoft JhengHei, sans-serif` |
|
|
83
|
+
| Simplified Chinese | `Helvetica Neue, Helvetica, Arial, PingFang SC, Heiti SC, Microsoft YaHei, sans-serif` |
|
|
84
|
+
| Japanese | `Helvetica Neue, Helvetica, Arial, ヒラギノ角ゴ Pro W3, Hiragino Kaku Gothic Pro, メイリオ, Meiryo, PingFang TC, sans-serif` |
|
|
85
|
+
| Thai | `Helvetica Neue, Helvetica, Arial, Thonburi, Noto Sans Thai, Droid Sans Thai, sans-serif` |
|
|
86
|
+
|
|
87
|
+
### Weights
|
|
88
|
+
- **700**: Headings (H1–H4 verified weight 700 on `/browse`), prices, discount badge children, emphasis spans. Bold-heavy is the brand's typographic posture **for hierarchy and emphasis**.
|
|
89
|
+
- **500**: Secondary emphasis — subheads, semi-bold UI labels.
|
|
90
|
+
- **400**: Body text, long-form descriptions, **button text** (verified: `.m-br-button .text` renders at weight 400 on product pages — buttons rely on color and border for prominence, not weight), card badges (`s-card-badge`).
|
|
91
|
+
- **600**: Reserved for narrow contexts; rarely used (only 2 occurrences in core CSS).
|
|
92
|
+
|
|
93
|
+
> **Note on buttons**: Despite the bold-heavy headline posture, button labels themselves are weight 400. Visual prominence comes from the colored bg + matched border (e.g., coral `#f16c5d` for purchase) — not from text weight.
|
|
94
|
+
|
|
95
|
+
### Size Scale (px)
|
|
96
|
+
| Use | Size |
|
|
97
|
+
|---|---|
|
|
98
|
+
| Captions, timestamps | `9–11px` |
|
|
99
|
+
| Badge text, small labels, breadcrumbs | `12px` |
|
|
100
|
+
| Inline metadata, secondary text | `13px` |
|
|
101
|
+
| **Body, button text default, breadcrumbs `g-breadcrumb`** | `14px` |
|
|
102
|
+
| Subheadings, stronger labels | `15–16px` |
|
|
103
|
+
| Card titles, mid headings | `18–20px` |
|
|
104
|
+
| Section headings | `21–22px` |
|
|
105
|
+
|
|
106
|
+
The scale stays compact — there is no extreme-large display type. Hero headlines on landing surfaces use 22px or scale up via percentage (`100%`, `2.2em`) rather than fixed large pixels.
|
|
107
|
+
|
|
108
|
+
### Hierarchy is Weight-Driven, Not Size-Driven (verified via Playwright on `/browse`)
|
|
109
|
+
Pinkoi's heading hierarchy is unusual: most `<h1>`, `<h2>`, `<h3>` render at **14–16px** — close to body size. The visual hierarchy comes from **weight 700** combined with **color shifts** (e.g., `#39393e` for primary headings, `#66666a` for secondary, `#2cac97` for special emphasis like "Flagship Shops"). This is the opposite of the SaaS convention of using 32–48px headlines. It reflects Pinkoi's commerce-density priority: every pixel of vertical space saved means more browsable inventory above the fold.
|
|
110
|
+
|
|
111
|
+
### Special Conventions
|
|
112
|
+
- **No letter-spacing customization** in the modern core CSS — system defaults are trusted (legacy `.g-breadcrumb` uses `letter-spacing: 1px`; `.g-breadcrumb-v2` removes it).
|
|
113
|
+
- **`font-style: italic`** is reserved for testimonials and quoted content.
|
|
114
|
+
- **`text-decoration: none`** on `:hover` for `.m-br-button` — buttons never look like links.
|
|
115
|
+
- **`text-decoration: line-through`** for `.oprice` (original price before discount), in muted gray (`#a8a8ab` or `#bfbfc1`).
|
|
116
|
+
- **Numerals are not tabularized** by default — Pinkoi's product prices flow with prose.
|
|
117
|
+
|
|
118
|
+
## 4. Component Stylings
|
|
119
|
+
|
|
120
|
+
### Buttons (`.m-br-button`)
|
|
121
|
+
Base: `border-radius: 4px`, `transition: border .1s, color .1s, background .1s`, `outline: 0`, `cursor: pointer`, `text-align: center`, default text size `14px`. Icon `margin-right: 6px`. **Every filled variant uses `border: 1px solid <same-as-bg>` for a crisp solid block.**
|
|
122
|
+
|
|
123
|
+
Verified state matrices from production CSS:
|
|
124
|
+
|
|
125
|
+
| Variant | Base | Hover | Active | Use Case |
|
|
126
|
+
|---|---|---|---|---|
|
|
127
|
+
| `--primary` | bg `#10567b`, border `#10567b`, text `#fff` | bg/border `#064162` | bg/border `#003354` | Primary CTAs |
|
|
128
|
+
| `--login` | bg `#10567b`, border `#10567b`, text `#fff` | bg/border `#064162` | (matches primary) | Auth flows |
|
|
129
|
+
| `--secondary` | bg `#fff`, border `1px solid #a8a8ab`, text `#39393e` | bg `#f7f7f8` | bg `#eeeeef` | Cancel, dismiss, neutral CTAs |
|
|
130
|
+
| `--purchase` | bg `#f16c5d`, border `#f16c5d`, text `#fff` | bg/border `#e56051` | bg/border `#da5648` | Add to Cart, Buy Now (coral, exclusive) |
|
|
131
|
+
| `--danger` | bg `#e63349`, border `#e63349`, text `#fff` | bg/border `#d72136` | bg/border `#c41428` | Destructive actions |
|
|
132
|
+
| `--green` | bg `#2cac97`, border `#2cac97`, text `#fff` | bg/border `#289c8a` | bg/border `#289c8a` | Confirmations, follow |
|
|
133
|
+
| `--*-plain` | transparent, text-only color | text color hover only | bg `#f7f7f8` | Ghost variants |
|
|
134
|
+
|
|
135
|
+
Buttons sit horizontally with `+ .m-br-button { margin-left: 10px }` for chained CTAs.
|
|
136
|
+
|
|
137
|
+
### Cards (`.m-card-product`)
|
|
138
|
+
- `box-sizing: border-box`, `display: inline-block`, `vertical-align: top`
|
|
139
|
+
- `max-width: 190px`, width `calc(16.66667% - 12px)` → 6-column responsive grid
|
|
140
|
+
- Horizontal margins: `0 6px` per card → `12px` total gap
|
|
141
|
+
- Container `.m-card-container { margin: 0 -6px }` to negate edge gaps
|
|
142
|
+
- Cards rely on the product image as the primary visual; chrome around them is minimal
|
|
143
|
+
|
|
144
|
+
### Card Badges (`.s-card-badge`)
|
|
145
|
+
- `border-radius: 2px` (smaller than buttons — sits inside a busy product card)
|
|
146
|
+
- `font-size: 12px`, `font-weight: 400`
|
|
147
|
+
- `padding: 1px 4px` (very tight)
|
|
148
|
+
- `display: inline`, `position: relative`, `top: -1px` for optical alignment
|
|
149
|
+
|
|
150
|
+
### Discount Badges (`.card-discount-badge`)
|
|
151
|
+
- `border-radius: 2px 0 2px 0` — **asymmetric** corners create a folded-ribbon effect (top-right and bottom-left squared)
|
|
152
|
+
- `box-shadow: 1px 1px 2px 0 rgba(32,32,38,.2)` — subtle lift to separate from product image
|
|
153
|
+
- `position: absolute; top: 0; left: 0` — anchored to product image corner
|
|
154
|
+
- Numeric content uses `font-weight: 700` (`.g-item-badge-discount span`)
|
|
155
|
+
- Companion `.oprice` shows the original price line-through in muted gray (`#a8a8ab` / `#bfbfc1`)
|
|
156
|
+
|
|
157
|
+
### Navigation
|
|
158
|
+
- Sticky horizontal header on desktop with category dropdowns
|
|
159
|
+
- Default text color `#39393e`, link/active state `#2e90b7`
|
|
160
|
+
- Logo references `pinkoi_logo_2019.svg` — circular arcs + acute angles per brand identity refresh
|
|
161
|
+
- Navigation links remain weight 400 (lighter than headlines) for scannability
|
|
162
|
+
|
|
163
|
+
### Inputs
|
|
164
|
+
- Border-color follows the neutral scale (`#d3d3d5` default, `#bfbfc1` on focus, `#e63349` on error)
|
|
165
|
+
- Error state uses `box-shadow: inset 0 0 0 1px #e63349` for emphasized error borders
|
|
166
|
+
- Border-radius `4px` to match buttons
|
|
167
|
+
- Padding patterns from CSS: common `5px 10px`, `8px 12px`, `9px 14px` depending on size
|
|
168
|
+
- Required-field asterisk: `.s-required:after { color: #e63349; content: "*"; margin-left: 4px }`
|
|
169
|
+
- No floating-label or pill-shaped inputs — bordered rectangle is the convention
|
|
170
|
+
|
|
171
|
+
### Tables
|
|
172
|
+
- Used sparingly; commerce content is card-grid first
|
|
173
|
+
- When used, row dividers via `0 1px 1px 0 rgba(32,32,38,.2)` shadow or `1px solid #e5e5e6` border
|
|
174
|
+
|
|
175
|
+
## 5. Layout Principles
|
|
176
|
+
|
|
177
|
+
### Spacing Scale
|
|
178
|
+
Pinkoi works in a **5–10px micro-scale** for component padding and a coarser **24px+ rhythm** for section spacing:
|
|
179
|
+
|
|
180
|
+
| Common Padding Values | Use |
|
|
181
|
+
|---|---|
|
|
182
|
+
| `0` (15 uses) | Reset, tight columns |
|
|
183
|
+
| `2px`, `3px` | Badge insets, icon padding |
|
|
184
|
+
| `5px 10px` | Default tight button/cell |
|
|
185
|
+
| `4px 10px`, `6px 10px`, `8px 12px`, `9px 14px` | Button size variants S → M → L |
|
|
186
|
+
| `14px 0`, `64px 0` | Vertical section rhythm |
|
|
187
|
+
|
|
188
|
+
### Grid
|
|
189
|
+
- 6-column product grid is the dominant pattern (`16.66667%` per card)
|
|
190
|
+
- Container max-widths via media queries — content centers on wider viewports
|
|
191
|
+
- Negative margins on container (`margin: 0 -6px`) to pull edge cards flush
|
|
192
|
+
|
|
193
|
+
### Density
|
|
194
|
+
Pinkoi is a **high-density** system. Whitespace is rationed; products, prices, badges, and CTAs are stacked tightly to maximize browsable inventory. Don't space components like a SaaS dashboard.
|
|
195
|
+
|
|
196
|
+
## 6. Depth & Elevation
|
|
197
|
+
|
|
198
|
+
Pinkoi has a **two-track shadow philosophy**: the modern button/card system stays mostly flat, while a small set of legacy specialty controls retain a skeuomorphic colored-underglow recipe.
|
|
199
|
+
|
|
200
|
+
### Modern Surface Shadows (the default)
|
|
201
|
+
- **Card discount badge** — `1px 1px 2px 0 rgba(32,32,38,.2)` (subtle lift over product image)
|
|
202
|
+
- **Outline focus** — `box-shadow: 0 0 0 1px #d3d3d5` (border-as-shadow, often on focused inputs)
|
|
203
|
+
- **Inline error** — `box-shadow: inset 0 0 0 1px #e63349` (red inset for invalid form fields)
|
|
204
|
+
- **Single-pixel solid bottom** — `0 1px #515156` ("button depth"), `0 1px #d3d3d5` (subtle bottom edge)
|
|
205
|
+
- **Tooltip glow** — `0 0 2px hsla(240,2%,41%,.8)`
|
|
206
|
+
- **Modal/dialog** — `0 0 4px rgba(32,32,38,.4)`
|
|
207
|
+
- **Row divider** — `0 1px 1px 0 rgba(32,32,38,.2)`
|
|
208
|
+
|
|
209
|
+
The primary `.m-br-button` system has **no shadow at all** — its visual weight comes from the matched bg+border combo, not elevation.
|
|
210
|
+
|
|
211
|
+
### Legacy Skeuomorphic Shadows (specialty controls only)
|
|
212
|
+
A small set of older button classes — `.m-button-pink`, `.m-button-gray`, `.m-button-green`, `.m-button-unfav` — apply a layered colored shadow on `:hover`. These are typically used for favorite/follow-shop heart buttons, not primary CTAs.
|
|
213
|
+
|
|
214
|
+
Pattern: `0 .2em .2em -.1em <BRAND_MID>, 0 .3em <BRAND_DARK>, 0 .5em .5em -.1em rgba(32,32,38,.12)`
|
|
215
|
+
|
|
216
|
+
| Class | Hover bg | Mid shadow | Dark shadow |
|
|
217
|
+
|---|---|---|---|
|
|
218
|
+
| `.m-button-pink` | `#ff6299` | `#c83166` | `#a32252` |
|
|
219
|
+
| `.m-button-green` | `#7ec527` | `#65a40e` | `#4d9200` |
|
|
220
|
+
| `.m-button-gray` | `#8e9a9f` | `#66666a` | `#535c5f` |
|
|
221
|
+
| `.m-button-unfav` | (transparent) | `#d3d3d5` | `#d3d3d5` |
|
|
222
|
+
|
|
223
|
+
Treat this as a **legacy accent**, not a system-wide pattern. Don't generalize it to the main button system.
|
|
224
|
+
|
|
225
|
+
### Z-Index Hierarchy
|
|
226
|
+
- Sticky header sits above content
|
|
227
|
+
- Dropdown menus above sticky header
|
|
228
|
+
- Modal overlay above all chrome
|
|
229
|
+
- Toast notifications above modals
|
|
230
|
+
|
|
231
|
+
## 7. Do's and Don'ts
|
|
232
|
+
|
|
233
|
+
- **DO** use weight 700 for headlines, CTAs, prices, and badges. Bold is the brand's voice.
|
|
234
|
+
- **DON'T** apply weight 300 — Pinkoi never goes "airy thin." Headlines are confident and dense.
|
|
235
|
+
- **DO** reserve coral (`#f16c5d` / `#e56051` on hover) for the single most important purchase moment per page.
|
|
236
|
+
- **DON'T** use coral for navigation, generic CTAs, or info accents — it dilutes the conversion signal.
|
|
237
|
+
- **DO** use the locale-aware font stack with the user's language fallback as the second priority.
|
|
238
|
+
- **DON'T** load custom web fonts — system fonts respect each market's reading habits and reduce LCP across slow APAC connections.
|
|
239
|
+
- **DO** keep the modern button system flat — `border: 1px solid <same-as-bg>` and no shadow. Visual weight comes from color, not elevation.
|
|
240
|
+
- **DON'T** apply skeuomorphic shadows to primary CTAs — that recipe is reserved for legacy specialty controls (favorite, follow-shop buttons).
|
|
241
|
+
- **DO** keep border-radius in the `2px–8px` range (badges 2px, buttons/cards 4px, occasional 6–8px on featured surfaces).
|
|
242
|
+
- **DON'T** use pill-shaped or fully rounded buttons — they break the high-density commerce aesthetic.
|
|
243
|
+
- **DO** pack product cards tightly with `12px` total gutters and 6-column grids on desktop.
|
|
244
|
+
- **DON'T** overspace on landing pages — Pinkoi users browse a lot of inventory at once.
|
|
245
|
+
- **DO** treat `#e63349` (and its hover/active siblings) as the **error/destructive red** — use it for form validation, danger buttons, required-field asterisks, and warnings.
|
|
246
|
+
- **DON'T** confuse the error red with a sale-price color — discount badges use the asymmetric-corner ribbon style, not red text.
|
|
247
|
+
|
|
248
|
+
## 8. Responsive Behavior
|
|
249
|
+
|
|
250
|
+
### Breakpoints
|
|
251
|
+
| Name | Range | Key Changes |
|
|
252
|
+
|---|---|---|
|
|
253
|
+
| Mobile | `<767px` | 2-column product grid, stacked nav, full-width CTAs |
|
|
254
|
+
| Mobile (alt) | `<768px` | Some surfaces use 768px as the cutoff |
|
|
255
|
+
| Tablet | `768px–1037px` | 3–4 column product grid, condensed nav |
|
|
256
|
+
| Desktop | `1037px–1200px` | 5–6 column product grid, full nav |
|
|
257
|
+
| Wide | `>1200px` | 6-column grid with side margins |
|
|
258
|
+
| Extra Wide | `>1248px` | Centered max-width container |
|
|
259
|
+
|
|
260
|
+
### Touch Targets
|
|
261
|
+
- Buttons use `5px 10px` to `9px 14px` padding scale — adequate but compact
|
|
262
|
+
- Card tap targets cover the entire `.m-card-product` area
|
|
263
|
+
- Mobile nav typically expands to a full-screen drawer
|
|
264
|
+
|
|
265
|
+
### Collapsing Strategy
|
|
266
|
+
- 6-column product grid → 4 → 3 → 2 columns on shrinking width
|
|
267
|
+
- Horizontal sticky nav → hamburger drawer below 768px
|
|
268
|
+
- Multi-column footer → stacked sections below 768px
|
|
269
|
+
- Filter sidebar → bottom sheet on mobile
|
|
270
|
+
- Inline price + action → stacked below thumbnail on mobile
|
|
271
|
+
|
|
272
|
+
### Image Behavior
|
|
273
|
+
- Product images dominate cards — minimum 190px square
|
|
274
|
+
- Hover states may swap to alternate angle on desktop only (no hover on mobile)
|
|
275
|
+
- WebP/lazy-load standard practice (CDN: `cdn02.pinkoi.com`)
|
|
276
|
+
- Card aspect ratio preserved across breakpoints
|
|
277
|
+
|
|
278
|
+
## 9. Agent Prompt Guide
|
|
279
|
+
|
|
280
|
+
### Quick Color Reference
|
|
281
|
+
- Primary CTA bg: Mid Teal (`#10567b`); hover `#064162`; active `#003354`
|
|
282
|
+
- Purchase CTA bg: Coral (`#f16c5d`); hover `#e56051`; active `#da5648` — **buy actions only**
|
|
283
|
+
- Danger/Error: Red (`#e63349`); hover `#d72136`; active `#c41428` — destructive AND form validation
|
|
284
|
+
- Success: Teal Green (`#2cac97`); hover `#289c8a`
|
|
285
|
+
- Secondary button: white bg, `1px solid #a8a8ab` border, `#39393e` text
|
|
286
|
+
- Default text: Slate Dark (`#39393e`)
|
|
287
|
+
- Muted text: Slate Mid (`#66666a`)
|
|
288
|
+
- Link / mid-brand: Bright Teal (`#2e90b7`)
|
|
289
|
+
- Border default: Light Gray (`#d3d3d5`)
|
|
290
|
+
- Surface tint: Cool White (`#f7f7f8`)
|
|
291
|
+
|
|
292
|
+
### Example Component Prompts
|
|
293
|
+
- "Create a Pinkoi-style product card: white background, 1px solid #d3d3d5 border, 4px radius, max-width 190px. Image fills the top 75% of the card. Below: title in 14px weight 700 #39393e (2-line clamp), price in 16px weight 700 #39393e, optional discount badge with `border-radius: 2px 0 2px 0` (asymmetric ribbon corners), `1px 1px 2px 0 rgba(32,32,38,.2)` shadow, absolute top-left."
|
|
294
|
+
- "Build a Pinkoi primary button: 4px radius, 14px text weight 400, white text, #10567b background, `1px solid #10567b` border, 8px 12px padding. Hover: bg + border to #064162. Active: bg + border to #003354. No shadow — the matched bg+border combo gives the solid-block feel. Transition: `border .1s, color .1s, background .1s`. Note: button labels are weight 400, not 700 — visual weight comes from color + border, not text weight."
|
|
295
|
+
- "Design a 'Add to Cart' purchase button: 4px radius, 14px weight 400 white text, #f16c5d background, `1px solid #f16c5d` border, 9px 14px padding. Hover: #e56051. Active: #da5648. This button must be the most visually weighted element on the product page — coral is finite and reserved for this moment only. Verified live: `.m-br-button--purchase` on product detail page exactly matches these values."
|
|
296
|
+
- "Create a Pinkoi navigation header: white sticky bar, 14px weight 400 #39393e nav links with #2e90b7 hover, dropdown menus with 4px radius and `0 0 4px rgba(32,32,38,.4)` shadow. Logo (`pinkoi_logo_2019.svg`) on the left, search input center (border #d3d3d5, 4px radius), Login button (`--login` variant: #10567b bg + matched border + white text) on the right."
|
|
297
|
+
- "Build a form input with error state: 1px solid #d3d3d5 border default, 4px radius, 8px 12px padding. On error, set border to #e63349 and add `box-shadow: inset 0 0 0 1px #e63349` for a doubled-up red border effect. Helper text below in #e63349 weight 400 12px. Required-field labels get an asterisk via `.s-required:after { color: #e63349; content: '*'; margin-left: 4px }`."
|
|
298
|
+
|
|
299
|
+
### Iteration Guide
|
|
300
|
+
1. **Use weight 700 for headings, prices, and emphasis spans** — but **button labels stay at weight 400**. Visual weight on buttons comes from color + matched border, not text weight.
|
|
301
|
+
2. **Use the locale-aware font stack** — never hardcode a single font family. Lead with `Helvetica Neue, Helvetica, Arial`, append the user's language fallback.
|
|
302
|
+
3. **`border-radius: 4px`** is the workhorse. `2px` for badges. Discount badges use asymmetric `2px 0 2px 0`. Never go above `10px` except on rare hero overlays.
|
|
303
|
+
4. **Filled buttons get `border: 1px solid <same-as-bg>`** — this matched border gives the crisp solid look. Never add a shadow to the modern button system.
|
|
304
|
+
5. **Reserve coral (`#f16c5d`) exclusively for the `--purchase` variant**. Using it elsewhere weakens conversion.
|
|
305
|
+
6. **Treat `#e63349` as the error red across ALL contexts** — `--danger` button, form validation borders, required-field asterisks, warning text. It's not a sale-price color.
|
|
306
|
+
7. **High-density spacing** — micro-padding (`5px 10px` to `9px 14px`) on controls, generous (`24px+`, `64px 0`) only between full sections.
|
|
307
|
+
8. **6-column product grid** is the desktop default. Cards are `calc(16.66667% - 12px)` wide with `0 6px` horizontal margins.
|
|
308
|
+
9. **Use `#39393e` for body text**, never pure black. The slightly warm dark-gray reads better against the soft `#f7f7f8` surface tint.
|
|
309
|
+
10. **Skeuomorphic colored shadows are LEGACY** — only apply them to favorite/follow-shop accent buttons (`.m-button-{pink,gray,green,unfav}`), never to the main `.m-br-button` system.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Pinkoi Inspired Design System
|
|
2
|
+
|
|
3
|
+
[DESIGN.md](./DESIGN.md) extracted from the public [Pinkoi](https://en.pinkoi.com) website. Pinkoi does not publish an official design system or brand kit, so this reference is **reverse-engineered from the live production CSS** as of 2026-04-17. Colors, fonts, button variants, and shadow recipes are extracted directly from Pinkoi's CSS bundles served via `cdn02.pinkoi.com`. See [_research.md](./_research.md) for source detail and confidence per item.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| File | Description |
|
|
8
|
+
|------|-------------|
|
|
9
|
+
| `DESIGN.md` | Complete design system documentation (9 sections) |
|
|
10
|
+
| `_research.md` | Sources used, extraction methodology, and confidence per item |
|
|
11
|
+
|
|
12
|
+
Use [DESIGN.md](./DESIGN.md) as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the Pinkoi design language — Asia's cross-border design marketplace with bold-700 typography, locale-aware font stacks, conservative 4px radii, and the signature skeuomorphic colored button shadows.
|
|
Binary file
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Research Sources for Pinkoi
|
|
2
|
+
|
|
3
|
+
추출 일자: 2026-04-17
|
|
4
|
+
스킬: `omd:add-reference` (5-tier methodology)
|
|
5
|
+
입력 URL: `https://en.pinkoi.com`
|
|
6
|
+
|
|
7
|
+
## Tier 1 — Official Design System
|
|
8
|
+
|
|
9
|
+
**Status: NOT FOUND**
|
|
10
|
+
|
|
11
|
+
Checked patterns (HEAD requests + content verification):
|
|
12
|
+
- `https://pinkoi.design` — DNS not resolving
|
|
13
|
+
- `https://design.pinkoi.com` — DNS not resolving
|
|
14
|
+
- `https://pinkoi.com/design`, `/design-system`, `/styleguide`, `/brand` — All return 200 due to SPA catch-all routing, but content is the homepage (no DS docs)
|
|
15
|
+
- `https://en.pinkoi.com/about/brand` — redirects to /about, brand storytelling page only
|
|
16
|
+
|
|
17
|
+
GitHub search: no official `pinkoi/*` org. All repos are third-party scrapers, clones, or unrelated. No public design tokens repository.
|
|
18
|
+
|
|
19
|
+
WebSearch (`"Pinkoi" "design system" site:pinkoi.com`): no DS documentation surfaces.
|
|
20
|
+
|
|
21
|
+
## Tier 2 — Brand / Press Kit
|
|
22
|
+
|
|
23
|
+
**Status: NOT FOUND**
|
|
24
|
+
|
|
25
|
+
`/about` page contains company storytelling, mission ("Design the way you are"), milestones (founded Taipei 2011, expanded to JP/HK/Bangkok). No color codes, font specs, logo guidelines, or token files.
|
|
26
|
+
|
|
27
|
+
## Tier 3 — Engineering / Design Blog
|
|
28
|
+
|
|
29
|
+
**Status: REFERENCED for context, no DS-specific articles**
|
|
30
|
+
|
|
31
|
+
- `medium.com/pinkoi-engineering` — publication exists, but archive listing (verified via WebFetch) shows no design-system, design-tokens, Storybook, or component-library articles. Topics covered: Pinzap e-commerce, design patterns (software), Android, Jetpack Compose, Python CSV, Socket.IO, team efficiency.
|
|
32
|
+
- General references to internal DS work appeared in tech career talks, but no public token publication.
|
|
33
|
+
|
|
34
|
+
## Tier 4 — Live Site Recon
|
|
35
|
+
|
|
36
|
+
**Status: PRIMARY SOURCE for this reference (Tier 1-3 yielded nothing tokenizable)**
|
|
37
|
+
|
|
38
|
+
Pages inspected:
|
|
39
|
+
- `https://en.pinkoi.com` (English homepage)
|
|
40
|
+
|
|
41
|
+
CSS bundles fetched directly from CDN (`cdn02.pinkoi.com/media/dist/`):
|
|
42
|
+
- `core-53a12ed32ae4ca90fb40.css` (193 KB) — primary tokens, button system, components
|
|
43
|
+
- `utilities-393a3cafa4749e418720.css` (13 KB) — utility classes
|
|
44
|
+
- `react-common-modules-51d0e94fa5fc0b1616a1.css` (6 KB) — shared React components
|
|
45
|
+
- `postinit-04a59acb1b98b69099c4.css` (64 KB) — late-loaded styles
|
|
46
|
+
|
|
47
|
+
Extraction method: `curl` + `grep` for `font-family`, hex colors, `border-radius`, `box-shadow`, `font-size`, `font-weight`, `padding`, media queries, button class definitions.
|
|
48
|
+
|
|
49
|
+
### Extracted Artifacts (high confidence)
|
|
50
|
+
- **Color palette** — hex frequency analysis across 4 CSS bundles (top 30 captured), full neutral scale derived
|
|
51
|
+
- **Semantic button variants** — `.m-br-button--{primary,secondary,danger,purchase,green,login,*-plain}` confirmed with full state matrices (hover/active/visited)
|
|
52
|
+
- **Skeuomorphic button shadow recipe** — directly extracted from production CSS
|
|
53
|
+
- **Locale font stacks** — 5 distinct stacks confirmed (default, TC, SC, JP, TH)
|
|
54
|
+
- **Border-radius scale** — frequency: 4px (21x), 2px (18x), 50% (15x), 5px (11x), 3-10px (rare)
|
|
55
|
+
- **Font-weight distribution** — 700 (37x), 400 (16x), 500 (12x), 600 (2x) → bold-heavy verdict
|
|
56
|
+
- **Card grid system** — `.m-card-product` class confirms 6-column layout (`calc(16.66667% - 12px)`)
|
|
57
|
+
- **Breakpoints** — 767/768, 1037, 1200, 1248 (from media queries)
|
|
58
|
+
|
|
59
|
+
## Confidence
|
|
60
|
+
|
|
61
|
+
### High Confidence (extracted from production CSS, exact values)
|
|
62
|
+
- All hex colors in §2 Color Palette
|
|
63
|
+
- Button variants and state matrices in §4
|
|
64
|
+
- Skeuomorphic shadow recipes in §6
|
|
65
|
+
- Locale font stacks in §3
|
|
66
|
+
- Border-radius and font-weight scales
|
|
67
|
+
- Breakpoints in §8
|
|
68
|
+
|
|
69
|
+
### Medium Confidence (inferred from extracted patterns + general e-commerce conventions)
|
|
70
|
+
- Z-index hierarchy in §6 (logical inference, not directly extracted)
|
|
71
|
+
- "Coral reserved for purchase" rule in §7 (inferred from semantic variant naming `--purchase`, not stated by Pinkoi)
|
|
72
|
+
- Image hover/swap behavior in §8 (typical e-commerce pattern, not verified)
|
|
73
|
+
- Touch target sizing — extracted padding values, but no explicit accessibility guideline confirmed
|
|
74
|
+
|
|
75
|
+
### Low / Inferred (verify if used in production)
|
|
76
|
+
- "Bold-heavy is the brand's voice" framing in §1 — derived from CSS frequency, not from official brand voice docs
|
|
77
|
+
- Promotional red (`#e63349`) vs danger red (`#d72136`) distinction — both exist in CSS but the "sale tag" use case is inferred
|
|
78
|
+
|
|
79
|
+
## Notes
|
|
80
|
+
- Pinkoi's design system is **internal-only**, with no public documentation. This reference is reverse-engineered from the live English site as of 2026-04-17.
|
|
81
|
+
- Site serves locale-specific subdomains (`en.`, `jp.`, `tw.`, `hk.`, `th.`). CSS bundles are shared across locales — extracted tokens apply universally.
|
|
82
|
+
- No dark mode detected in core CSS bundles.
|
|
83
|
+
- Brand identity refresh dated 2019 (logo file `pinkoi_logo_2019.svg`) — current system reflects post-refresh design language.
|
|
84
|
+
- This reference may drift if Pinkoi ships a CSS rewrite. Recommend re-running `omd:add-reference https://en.pinkoi.com` annually.
|
|
85
|
+
|
|
86
|
+
## Playwright MCP Verification (2026-04-17, after Self-Review)
|
|
87
|
+
|
|
88
|
+
After fixing the 3 errors via Self-Review (using only static CSS extraction), Playwright MCP was installed and used to verify computed styles on the live site at 1440px viewport. **All major claims confirmed:**
|
|
89
|
+
|
|
90
|
+
- Body: `rgb(255,255,255)` bg, `rgb(57,57,62)` text (`#39393e`), Helvetica Neue stack ✓
|
|
91
|
+
- Headings: H1/H2/H3 all weight 700 ✓
|
|
92
|
+
- Heading colors: H1 `#39393e`, secondary H2 `#66666a`, accent H2 `#2cac97` ✓ — confirms semantic color usage
|
|
93
|
+
- `--purchase` button base bg: `rgb(241,108,93)` = `#f16c5d` ✓ (matches corrected value)
|
|
94
|
+
- `.m-card-product` confirmed exists; cards have transparent bg, no border, no radius, no shadow ✓
|
|
95
|
+
- Nav links: 13px weight 400 `#39393e` ✓
|
|
96
|
+
- Link color: `rgb(46,144,183)` = `#2e90b7` ✓
|
|
97
|
+
|
|
98
|
+
**Additional insight discovered via Playwright (added to §3):**
|
|
99
|
+
Pinkoi's heading hierarchy is **weight-driven, not size-driven**. Most headings render at 14–16px (same as body) and rely on weight 700 + color shifts for hierarchy. This is the opposite of SaaS convention (32–48px headlines). Reflects commerce-density priority.
|
|
100
|
+
|
|
101
|
+
Screenshot saved: `_research/browse-1440px.png` (full-page at 1440px on `/browse`).
|
|
102
|
+
|
|
103
|
+
## Self-Review Corrections (2026-04-17, post-initial-draft)
|
|
104
|
+
|
|
105
|
+
The first DESIGN.md draft contained 3 substantive errors caught during browser-verification self-review. All fixed in the current file:
|
|
106
|
+
|
|
107
|
+
1. **Button base/hover/active colors were swapped.** Initial draft listed hover values as the "primary" base color. Correct mapping (verified from full CSS rules):
|
|
108
|
+
- `--primary` base `#10567b`, hover `#064162`, active `#003354`
|
|
109
|
+
- `--purchase` base `#f16c5d`, hover `#e56051`, active `#da5648`
|
|
110
|
+
- `--green` base `#2cac97`, hover `#289c8a`
|
|
111
|
+
- `--danger` base `#e63349`, hover `#d72136`, active `#c41428`
|
|
112
|
+
|
|
113
|
+
2. **Skeuomorphic shadows misattributed to the primary button system.** They actually appear only on legacy `.m-button-{pink,gray,green,unfav}` classes (favorite hearts, follow-shop type CTAs). The modern `.m-br-button--*` system is **flat with `1px solid <same-as-bg>` borders** and no shadow. §1, §6, §7, §9 rewritten accordingly.
|
|
114
|
+
|
|
115
|
+
3. **`#e63349` was framed as "promotional sale red".** It is actually the **error/danger red** — used in form validation (label, textarea border, input icon, error note), required-field asterisk (`.s-required:after`), `--danger` button base, `.g-info.g-warn` text, and Weibo button bg. There is no separate "sale color" in the CSS — discount badges (`.card-discount-badge`) use shape (asymmetric `border-radius: 2px 0 2px 0`) and shadow, not a dedicated red.
|