heraspec 0.1.13 → 0.1.14

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.
Files changed (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -119
  3. package/bin/heraspec.js +4800 -1126
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -151
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. package/package.json +75 -72
@@ -0,0 +1,230 @@
1
+ # Design System: Pinterest
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Pinterest's website is a warm, inspiration-driven canvas that treats visual discovery like a lifestyle magazine. The design operates on a soft, slightly warm white background with Pinterest Red (`#e60023`) as the singular, bold brand accent. Unlike the cool blues of most tech platforms, Pinterest's neutral scale has a distinctly warm undertone — grays lean toward olive/sand (`#91918c`, `#62625b`, `#e5e5e0`) rather than cool steel, creating a cozy, craft-like atmosphere that invites browsing.
6
+
7
+ The typography uses Pin Sans — a custom proprietary font with a broad fallback stack including Japanese fonts, reflecting Pinterest's global reach. At display scale (70px, weight 600), Pin Sans creates large, inviting headlines. At smaller sizes, the system is compact: buttons at 12px, captions at 12–14px. The CSS variable naming system (`--comp-*`, `--sema-*`, `--base-*`) reveals a sophisticated three-tier design token architecture: component-level, semantic-level, and base-level tokens.
8
+
9
+ What distinguishes Pinterest is its generous border-radius system (12px–40px, plus 50% for circles) and warm-tinted button backgrounds. The secondary button (`#e5e5e0`) has a distinctly warm, sand-like tone rather than cold gray. The primary red button uses 16px radius — rounded but not pill-shaped. Combined with warm badge backgrounds (`hsla(60,20%,98%,.5)` — a subtle yellow-warm wash) and photography-dominant layouts, the result is a design that feels handcrafted and personal, not corporate and sterile.
10
+
11
+ **Key Characteristics:**
12
+ - Warm white canvas with olive/sand-toned neutrals — cozy, not clinical
13
+ - Pinterest Red (`#e60023`) as singular bold accent — never subtle, always confident
14
+ - Pin Sans custom font with global fallback stack (including CJK)
15
+ - Three-tier token architecture: `--comp-*` / `--sema-*` / `--base-*`
16
+ - Warm secondary surfaces: sand gray (`#e5e5e0`), warm badge (`hsla(60,20%,98%,.5)`)
17
+ - Generous border-radius: 16px standard, up to 40px for large containers
18
+ - Photography-first content — pins/images are the primary visual element
19
+ - Dark near-purple text (`#211922`) — warm, with a hint of plum
20
+
21
+ ## 2. Color Palette & Roles
22
+
23
+ ### Primary Brand
24
+ - **Pinterest Red** (`#e60023`): Primary CTA, brand accent — bold, confident red
25
+ - **Green 700** (`#103c25`): `--base-color-green-700`, success/nature accent
26
+ - **Green 700 Hover** (`#0b2819`): `--base-color-hover-green-700`, pressed green
27
+
28
+ ### Text
29
+ - **Plum Black** (`#211922`): Primary text — warm near-black with plum undertone
30
+ - **Black** (`#000000`): Secondary text, button text
31
+ - **Olive Gray** (`#62625b`): Secondary descriptions, muted text
32
+ - **Warm Silver** (`#91918c`): `--comp-button-color-text-transparent-disabled`, disabled text, input borders
33
+ - **White** (`#ffffff`): Text on dark/colored surfaces
34
+
35
+ ### Interactive
36
+ - **Focus Blue** (`#435ee5`): `--comp-button-color-border-focus-outer-transparent`, focus rings
37
+ - **Performance Purple** (`#6845ab`): `--sema-color-hover-icon-performance-plus`, performance features
38
+ - **Recommendation Purple** (`#7e238b`): `--sema-color-hover-text-recommendation`, AI recommendation
39
+ - **Link Blue** (`#2b48d4`): Link text color
40
+ - **Facebook Blue** (`#0866ff`): `--facebook-background-color`, social login
41
+ - **Pressed Blue** (`#617bff`): `--base-color-pressed-blue-200`, pressed state
42
+
43
+ ### Surface & Border
44
+ - **Sand Gray** (`#e5e5e0`): Secondary button background — warm, craft-like
45
+ - **Warm Light** (`#e0e0d9`): Circular button backgrounds, badges
46
+ - **Warm Wash** (`hsla(60, 20%, 98%, 0.5)`): `--comp-badge-color-background-wash-light`, subtle warm badge bg
47
+ - **Fog** (`#f6f6f3`): Light surface (at 50% opacity)
48
+ - **Border Disabled** (`#c8c8c1`): `--sema-color-border-disabled`, disabled borders
49
+ - **Hover Gray** (`#bcbcb3`): `--base-color-hover-grayscale-150`, hover border
50
+ - **Dark Surface** (`#33332e`): Dark section backgrounds
51
+
52
+ ### Semantic
53
+ - **Error Red** (`#9e0a0a`): Checkbox/form error states
54
+
55
+ ## 3. Typography Rules
56
+
57
+ ### Font Family
58
+ - **Primary**: `Pin Sans`, fallbacks: `-apple-system, system-ui, Segoe UI, Roboto, Oxygen-Sans, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, ヒラギノ角ゴ Pro W3, メイリオ, Meiryo, MS Pゴシック, Arial`
59
+
60
+ ### Hierarchy
61
+
62
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
63
+ |------|------|------|--------|-------------|----------------|-------|
64
+ | Display Hero | Pin Sans | 70px (4.38rem) | 600 | normal | normal | Maximum impact |
65
+ | Section Heading | Pin Sans | 28px (1.75rem) | 700 | normal | -1.2px | Negative tracking |
66
+ | Body | Pin Sans | 16px (1.00rem) | 400 | 1.40 | normal | Standard reading |
67
+ | Caption Bold | Pin Sans | 14px (0.88rem) | 700 | normal | normal | Strong metadata |
68
+ | Caption | Pin Sans | 12px (0.75rem) | 400–500 | 1.50 | normal | Small text, tags |
69
+ | Button | Pin Sans | 12px (0.75rem) | 400 | normal | normal | Button labels |
70
+
71
+ ### Principles
72
+ - **Compact type scale**: The range is 12px–70px with a dramatic jump — most functional text is 12–16px, creating a dense, app-like information hierarchy.
73
+ - **Warm weight distribution**: 600–700 for headings, 400–500 for body. No ultra-light weights — the type always feels substantial.
74
+ - **Negative tracking on headings**: -1.2px on 28px headings creates cozy, intimate section titles.
75
+ - **Single font family**: Pin Sans handles everything — no secondary display or monospace font detected.
76
+
77
+ ## 4. Component Stylings
78
+
79
+ ### Buttons
80
+
81
+ **Primary Red**
82
+ - Background: `#e60023` (Pinterest Red)
83
+ - Text: `#000000` (black — unusual choice for contrast on red)
84
+ - Padding: 6px 14px
85
+ - Radius: 16px (generously rounded, not pill)
86
+ - Border: `2px solid rgba(255, 255, 255, 0)` (transparent)
87
+ - Focus: semantic border + outline via CSS variables
88
+
89
+ **Secondary Sand**
90
+ - Background: `#e5e5e0` (warm sand gray)
91
+ - Text: `#000000`
92
+ - Padding: 6px 14px
93
+ - Radius: 16px
94
+ - Focus: same semantic border system
95
+
96
+ **Circular Action**
97
+ - Background: `#e0e0d9` (warm light)
98
+ - Text: `#211922` (plum black)
99
+ - Radius: 50% (circle)
100
+ - Use: Pin actions, navigation controls
101
+
102
+ **Ghost / Transparent**
103
+ - Background: transparent
104
+ - Text: `#000000`
105
+ - No border
106
+ - Use: Tertiary actions
107
+
108
+ ### Cards & Containers
109
+ - Photography-first pin cards with generous radius (12px–20px)
110
+ - No traditional box-shadow on most cards
111
+ - White or warm fog backgrounds
112
+ - 8px white thick border on some image containers
113
+
114
+ ### Inputs
115
+ - Email input: white background, `1px solid #91918c` border, 16px radius, 11px 15px padding
116
+ - Focus: semantic border + outline system via CSS variables
117
+
118
+ ### Navigation
119
+ - Clean header on white or warm background
120
+ - Pinterest logo + search bar centered
121
+ - Pin Sans 16px for nav links
122
+ - Pinterest Red accents for active states
123
+
124
+ ### Image Treatment
125
+ - Pin-style masonry grid (signature Pinterest layout)
126
+ - Rounded corners: 12px–20px on images
127
+ - Photography as primary content — every pin is an image
128
+ - Thick white borders (8px) on featured image containers
129
+
130
+ ## 5. Layout Principles
131
+
132
+ ### Spacing System
133
+ - Base unit: 8px
134
+ - Scale: 4px, 6px, 7px, 8px, 10px, 11px, 12px, 16px, 18px, 20px, 22px, 24px, 32px, 80px, 100px
135
+ - Large jumps: 32px → 80px → 100px for section spacing
136
+
137
+ ### Grid & Container
138
+ - Masonry grid for pin content (signature layout)
139
+ - Centered content sections with generous max-width
140
+ - Full-width dark footer
141
+ - Search bar as primary navigation element
142
+
143
+ ### Whitespace Philosophy
144
+ - **Inspiration density**: The masonry grid packs pins tightly — the content density IS the value proposition. Whitespace exists between sections, not within the grid.
145
+ - **Breathing above, density below**: Hero/feature sections get generous padding; the pin grid is compact and immersive.
146
+
147
+ ### Border Radius Scale
148
+ - Standard (12px): Small cards, links
149
+ - Button (16px): Buttons, inputs, medium cards
150
+ - Comfortable (20px): Feature cards
151
+ - Large (28px): Large containers
152
+ - Section (32px): Tab elements, large panels
153
+ - Hero (40px): Hero containers, large feature blocks
154
+ - Circle (50%): Action buttons, tab indicators
155
+
156
+ ## 6. Depth & Elevation
157
+
158
+ | Level | Treatment | Use |
159
+ |-------|-----------|-----|
160
+ | Flat (Level 0) | No shadow | Default — pins rely on content, not shadow |
161
+ | Subtle (Level 1) | Minimal shadow (from tokens) | Elevated overlays, dropdowns |
162
+ | Focus (Accessibility) | `--sema-color-border-focus-outer-default` ring | Focus states |
163
+
164
+ **Shadow Philosophy**: Pinterest uses minimal shadows. The masonry grid relies on content (photography) to create visual interest rather than elevation effects. Depth comes from the warmth of surface colors and the generous rounding of containers.
165
+
166
+ ## 7. Do's and Don'ts
167
+
168
+ ### Do
169
+ - Use warm neutrals (`#e5e5e0`, `#e0e0d9`, `#91918c`) — the warm olive/sand tone is the identity
170
+ - Apply Pinterest Red (`#e60023`) only for primary CTAs — it's bold and singular
171
+ - Use Pin Sans exclusively — one font for everything
172
+ - Apply generous border-radius: 16px for buttons/inputs, 20px+ for cards
173
+ - Keep the masonry grid dense — content density is the value
174
+ - Use warm badge backgrounds (`hsla(60,20%,98%,.5)`) for subtle warm washes
175
+ - Use `#211922` (plum black) for primary text — it's warmer than pure black
176
+
177
+ ### Don't
178
+ - Don't use cool gray neutrals — always warm/olive-toned
179
+ - Don't use pure black (`#000000`) as primary text — use plum black (`#211922`)
180
+ - Don't use pill-shaped buttons — 16px radius is rounded but not pill
181
+ - Don't add heavy shadows — Pinterest is flat by design, depth from content
182
+ - Don't use small border-radius (<12px) on cards — the generous rounding is core
183
+ - Don't introduce additional brand colors — red + warm neutrals is the complete palette
184
+ - Don't use thin font weights — Pin Sans at 400 minimum
185
+
186
+ ## 8. Responsive Behavior
187
+
188
+ ### Breakpoints
189
+ | Name | Width | Key Changes |
190
+ |------|-------|-------------|
191
+ | Mobile | <576px | Single column, compact layout |
192
+ | Mobile Large | 576–768px | 2-column pin grid |
193
+ | Tablet | 768–890px | Expanded grid |
194
+ | Desktop Small | 890–1312px | Standard masonry grid |
195
+ | Desktop | 1312–1440px | Full layout |
196
+ | Large Desktop | 1440–1680px | Expanded grid columns |
197
+ | Ultra-wide | >1680px | Maximum grid density |
198
+
199
+ ### Collapsing Strategy
200
+ - Pin grid: 5+ columns → 3 → 2 → 1
201
+ - Navigation: search bar + icons → simplified mobile nav
202
+ - Feature sections: side-by-side → stacked
203
+ - Hero: 70px → scales down proportionally
204
+ - Footer: dark multi-column → stacked
205
+
206
+ ## 9. Agent Prompt Guide
207
+
208
+ ### Quick Color Reference
209
+ - Brand: Pinterest Red (`#e60023`)
210
+ - Background: White (`#ffffff`)
211
+ - Text: Plum Black (`#211922`)
212
+ - Secondary text: Olive Gray (`#62625b`)
213
+ - Button surface: Sand Gray (`#e5e5e0`)
214
+ - Border: Warm Silver (`#91918c`)
215
+ - Focus: Focus Blue (`#435ee5`)
216
+
217
+ ### Example Component Prompts
218
+ - "Create a hero: white background. Headline at 70px Pin Sans weight 600, plum black (#211922). Red CTA button (#e60023, 16px radius, 6px 14px padding). Secondary sand button (#e5e5e0, 16px radius)."
219
+ - "Design a pin card: white background, 16px radius, no shadow. Photography fills top, 16px Pin Sans weight 400 description below in #62625b."
220
+ - "Build a circular action button: #e0e0d9 background, 50% radius, #211922 icon."
221
+ - "Create an input field: white background, 1px solid #91918c, 16px radius, 11px 15px padding. Focus: blue outline via semantic tokens."
222
+ - "Design the dark footer: #33332e background. Pinterest script logo in white. 12px Pin Sans links in #91918c."
223
+
224
+ ### Iteration Guide
225
+ 1. Warm neutrals everywhere — olive/sand grays, never cool steel
226
+ 2. Pinterest Red for CTAs only — bold and singular
227
+ 3. 16px radius on buttons/inputs, 20px+ on cards — generous but not pill
228
+ 4. Pin Sans is the only font — compact at 12px for UI, 70px for display
229
+ 5. Photography carries the design — the UI stays warm and minimal
230
+ 6. Plum black (#211922) for text — warmer than pure black
@@ -0,0 +1,256 @@
1
+ # Design System: PostHog
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ PostHog's website feels like a startup's internal wiki that escaped into the wild — warm, irreverent, and deliberately anti-corporate. The background isn't the expected crisp white or dark void of developer tools; it's a warm, sage-tinted cream (`#fdfdf8`) that gives every surface a handmade, paper-like quality. Colors lean into earthy olive greens and muted sage rather than the conventional blues and purples of the SaaS world. It's as if someone designed a developer analytics platform inside a cozy garden shed.
6
+
7
+ The personality is the star: hand-drawn hedgehog illustrations, quirky action figures, and playful imagery replace the stock photography and abstract gradients typical of B2B SaaS. IBM Plex Sans Variable serves as the typographic foundation — a font with genuine technical credibility (created by IBM, widely used in developer contexts) deployed here with bold weights (700, 800) on headings and generous line-heights on body text. The typography says "we're serious engineers" while everything around it says "but we don't take ourselves too seriously."
8
+
9
+ The interaction design carries the same spirit: hover states flash PostHog Orange (`#F54E00`) text — a hidden brand color that doesn't appear at rest but surprises on interaction. Dark near-black buttons (`#1e1f23`) use opacity reduction on hover rather than color shifts, and active states scale slightly. The border system uses sage-tinted grays (`#bfc1b7`) that harmonize with the olive text palette. Built on Tailwind CSS with Radix UI and shadcn/ui primitives, the technical foundation is modern and component-driven, but the visual output is stubbornly unique.
10
+
11
+ **Key Characteristics:**
12
+ - Warm sage/olive color palette instead of conventional blues — earthy and approachable
13
+ - IBM Plex Sans Variable font at bold weights (700/800) for headings with generous 1.50+ line-heights
14
+ - Hidden brand orange (`#F54E00`) that only appears on hover interactions — a delightful surprise
15
+ - Hand-drawn hedgehog illustrations and playful imagery — deliberately anti-corporate
16
+ - Sage-tinted borders (`#bfc1b7`) and backgrounds (`#eeefe9`) creating a unified warm-green system
17
+ - Dark near-black CTAs (`#1e1f23`) with opacity-based hover states
18
+ - Content-heavy editorial layout — the site reads like a magazine, not a typical landing page
19
+ - Tailwind CSS + Radix UI + shadcn/ui component architecture
20
+
21
+ ## 2. Color Palette & Roles
22
+
23
+ ### Primary
24
+ - **Olive Ink** (`#4d4f46`): Primary text color — a distinctive olive-gray that gives all text a warm, earthy tone
25
+ - **Deep Olive** (`#23251d`): Link text and high-emphasis headings — near-black with green undertone
26
+ - **PostHog Orange** (`#F54E00`): Hidden brand accent — appears only on hover states, a vibrant orange that surprises
27
+
28
+ ### Secondary & Accent
29
+ - **Amber Gold** (`#F7A501`): Secondary hover accent on dark buttons — warm gold that pairs with the orange
30
+ - **Gold Border** (`#b17816`): Special button borders — an amber-gold for featured CTAs
31
+ - **Focus Blue** (`#3b82f6`): Focus ring color (Tailwind default) — the only blue in the system, reserved for accessibility
32
+
33
+ ### Surface & Background
34
+ - **Warm Parchment** (`#fdfdf8`): Primary page background — warm near-white with yellow-green undertone
35
+ - **Sage Cream** (`#eeefe9`): Input backgrounds, secondary surfaces — light sage tint
36
+ - **Light Sage** (`#e5e7e0`): Button backgrounds, tertiary surfaces — muted sage-green
37
+ - **Warm Tan** (`#d4c9b8`): Featured button backgrounds — warm tan/khaki for emphasis
38
+ - **Hover White** (`#f4f4f4`): Universal hover background state
39
+
40
+ ### Neutrals & Text
41
+ - **Olive Ink** (`#4d4f46`): Primary body and UI text
42
+ - **Muted Olive** (`#65675e`): Secondary text, button labels on light backgrounds
43
+ - **Sage Placeholder** (`#9ea096`): Placeholder text, disabled states — warm sage-green
44
+ - **Sage Border** (`#bfc1b7`): Primary border color — olive-tinted gray for all borders
45
+ - **Light Border** (`#b6b7af`): Secondary border, toolbar borders — slightly darker sage
46
+
47
+ ### Semantic & Accent
48
+ - **PostHog Orange** (`#F54E00`): Hover text accent — signals interactivity and brand personality
49
+ - **Amber Gold** (`#F7A501`): Dark button hover accent — warmth signal
50
+ - **Focus Blue** (`#3b82f6` at 50% opacity): Keyboard focus rings — accessibility-only color
51
+ - **Dark Text** (`#111827`): High-contrast link text — near-black for important links
52
+
53
+ ### Gradient System
54
+ - No gradients on the marketing site — PostHog's visual language is deliberately flat and warm
55
+ - Depth is achieved through layered surfaces and border containment, not color transitions
56
+
57
+ ## 3. Typography Rules
58
+
59
+ ### Font Family
60
+ - **Display & Body**: `IBM Plex Sans Variable` — variable font (100–700+ weight range). Fallbacks: `IBM Plex Sans, -apple-system, system-ui, Avenir Next, Avenir, Segoe UI, Helvetica Neue, Helvetica, Ubuntu, Roboto, Noto, Arial`
61
+ - **Monospace**: `ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New` — system monospace stack
62
+ - **Code Display**: `Source Code Pro` — with fallbacks: `Menlo, Consolas, Monaco`
63
+
64
+ ### Hierarchy
65
+
66
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
67
+ |------|------|------|--------|-------------|----------------|-------|
68
+ | Display Hero | IBM Plex Sans Variable | 30px | 800 | 1.20 | -0.75px | Extra-bold, tight, maximum impact |
69
+ | Section Heading | IBM Plex Sans Variable | 36px | 700 | 1.50 | 0px | Large but generous line-height |
70
+ | Feature Heading | IBM Plex Sans Variable | 24px | 700 | 1.33 | 0px | Feature section titles |
71
+ | Card Heading | IBM Plex Sans Variable | 21.4px | 700 | 1.40 | -0.54px | Slightly unusual size (scaled) |
72
+ | Sub-heading | IBM Plex Sans Variable | 20px | 700 | 1.40 | -0.5px | Content sub-sections |
73
+ | Sub-heading Uppercase | IBM Plex Sans Variable | 20px | 700 | 1.40 | 0px | Uppercase transform for labels |
74
+ | Body Emphasis | IBM Plex Sans Variable | 19.3px | 600 | 1.56 | -0.48px | Semi-bold callout text |
75
+ | Label Uppercase | IBM Plex Sans Variable | 18px | 700 | 1.50 | 0px | Uppercase category labels |
76
+ | Body Semi | IBM Plex Sans Variable | 18px | 600 | 1.56 | 0px | Semi-bold body text |
77
+ | Body | IBM Plex Sans Variable | 16px | 400 | 1.50 | 0px | Standard reading text |
78
+ | Body Medium | IBM Plex Sans Variable | 16px | 500 | 1.50 | 0px | Medium-weight body |
79
+ | Body Relaxed | IBM Plex Sans Variable | 15px | 400 | 1.71 | 0px | Relaxed line-height for long reads |
80
+ | Nav / UI | IBM Plex Sans Variable | 15px | 600 | 1.50 | 0px | Navigation and UI labels |
81
+ | Caption | IBM Plex Sans Variable | 14px | 400–700 | 1.43 | 0px | Small text, various weights |
82
+ | Small Label | IBM Plex Sans Variable | 13px | 500–700 | 1.00–1.50 | 0px | Tags, badges, micro labels |
83
+ | Micro | IBM Plex Sans Variable | 12px | 400–700 | 1.33 | 0px | Smallest text, some uppercase |
84
+ | Code | Source Code Pro | 14px | 500 | 1.43 | 0px | Code snippets and terminal |
85
+
86
+ ### Principles
87
+ - **Bold heading dominance**: Headings use 700–800 weight — PostHog's typography is confident and assertive, not whispery
88
+ - **Generous body line-heights**: Body text at 1.50–1.71 line-height creates extremely comfortable reading — the site is content-heavy and optimized for long sessions
89
+ - **Fractional sizes**: Several sizes (21.4px, 19.3px, 13.7px) suggest a fluid/scaled type system rather than fixed stops — likely computed from Tailwind's rem scale at non-standard base
90
+ - **Uppercase as category signal**: Bold uppercase labels (18px–20px weight 700) are used for product category headings — a magazine-editorial convention
91
+ - **Selective negative tracking**: Letter-spacing tightens on display text (-0.75px at 30px) but relaxes to 0px on body — headlines compress, body breathes
92
+
93
+ ## 4. Component Stylings
94
+
95
+ ### Buttons
96
+ - **Dark Primary**: `#1e1f23` background, white text, 6px radius, `10px 12px` padding. Hover: opacity 0.7 with Amber Gold text. Active: opacity 0.8 with slight scale transform. The main CTA — dark and confident
97
+ - **Sage Light**: `#e5e7e0` background, Olive Ink (`#4d4f46`) text, 4px radius, `4px` padding. Hover: `#f4f4f4` bg with PostHog Orange text. Compact utility button
98
+ - **Warm Tan Featured**: `#d4c9b8` background, black text, no visible radius. Hover: same orange text flash. Featured/premium actions
99
+ - **Input-style**: `#eeefe9` background, Sage Placeholder (`#9ea096`) text, 4px radius, 1px `#b6b7af` border. Looks like a search/filter control
100
+ - **Near-white Ghost**: `#fdfdf8` background, Olive Ink text, 4px radius, transparent 1px border. Minimal presence
101
+ - **Hover pattern**: All buttons flash PostHog Orange (`#F54E00`) or Amber Gold (`#F7A501`) text on hover — the brand's signature interaction surprise
102
+
103
+ ### Cards & Containers
104
+ - **Bordered Card**: Warm Parchment (`#fdfdf8`) or white background, 1px `#bfc1b7` border, 4px–6px radius — clean and minimal
105
+ - **Sage Surface Card**: `#eeefe9` background for secondary content containers
106
+ - **Shadow Card**: `0px 25px 50px -12px rgba(0, 0, 0, 0.25)` — a single deep shadow for elevated content (modals, dropdowns)
107
+ - **Hover**: Orange text flash on interactive cards — consistent with button behavior
108
+
109
+ ### Inputs & Forms
110
+ - **Default**: `#eeefe9` background, `#9ea096` placeholder text, 1px `#b6b7af` border, 4px radius, `2px 0px 2px 8px` padding
111
+ - **Focus**: `#3b82f6` ring at 50% opacity (Tailwind blue focus ring)
112
+ - **Text color**: `#374151` for input values — darker than primary text for readability
113
+ - **Border variations**: Multiple border patterns — some inputs use compound borders (top, left, bottom-only)
114
+
115
+ ### Navigation
116
+ - **Top nav**: Warm background, IBM Plex Sans at 15px weight 600
117
+ - **Dropdown menus**: Rich mega-menu structure with product categories
118
+ - **Link color**: Deep Olive (`#23251d`) for nav links, underline on hover
119
+ - **CTA**: Dark Primary button (#1e1f23) in the nav — "Get started - free"
120
+ - **Mobile**: Collapses to hamburger with simplified menu
121
+
122
+ ### Image Treatment
123
+ - **Hand-drawn illustrations**: Hedgehog mascot and quirky illustrations — the signature visual element
124
+ - **Product screenshots**: UI screenshots embedded in device frames or clean containers
125
+ - **Action figures**: Playful product photography of hedgehog figurines — anti-corporate
126
+ - **Trust logos**: Enterprise logos (Airbus, GOV.UK) displayed in a muted trust bar
127
+ - **Aspect ratios**: Mixed — illustrations are irregular, screenshots are 16:9 or widescreen
128
+
129
+ ### AI Chat Widget
130
+ - Floating PostHog AI assistant with speech bubble — an interactive product demo embedded in the marketing site
131
+
132
+ ## 5. Layout Principles
133
+
134
+ ### Spacing System
135
+ - **Base unit**: 8px
136
+ - **Scale**: 2px, 4px, 6px, 8px, 10px, 12px, 16px, 18px, 24px, 32px, 34px
137
+ - **Section padding**: 32px–48px vertical between sections (compact for a content-heavy site)
138
+ - **Card padding**: 4px–12px internal (notably compact)
139
+ - **Component gaps**: 4px–8px between related elements
140
+
141
+ ### Grid & Container
142
+ - **Max width**: 1536px (largest breakpoint), with content containers likely 1200px–1280px
143
+ - **Column patterns**: Varied — single column for text content, 2-3 column grids for feature cards, asymmetric layouts for product demos
144
+ - **Breakpoints**: 13 defined — 1px, 425px, 482px, 640px, 768px, 767px, 800px, 900px, 1024px, 1076px, 1160px, 1280px, 1536px
145
+
146
+ ### Whitespace Philosophy
147
+ - **Content-dense by design**: PostHog's site is information-rich — whitespace is measured, not lavish
148
+ - **Editorial pacing**: Content sections flow like a magazine with varied layouts keeping the eye moving
149
+ - **Illustrations as breathing room**: Hand-drawn hedgehog art breaks up dense content sections naturally
150
+
151
+ ### Border Radius Scale
152
+ - **2px**: Small inline elements, tags (`span`)
153
+ - **4px**: Primary UI components — buttons, inputs, dropdowns, menu items (`button`, `div`, `combobox`)
154
+ - **6px**: Secondary containers — larger buttons, list items, card variants (`button`, `div`, `li`)
155
+ - **9999px**: Pill shape — badges, status indicators, rounded tags (`span`, `div`)
156
+
157
+ ## 6. Depth & Elevation
158
+
159
+ | Level | Treatment | Use |
160
+ |-------|-----------|-----|
161
+ | Level 0 (Flat) | No shadow, warm parchment background | Page canvas, most surfaces |
162
+ | Level 1 (Border) | `1px solid #bfc1b7` (Sage Border) | Card containment, input borders, section dividers |
163
+ | Level 2 (Compound Border) | Multiple 1px borders on different sides | Input groupings, toolbar elements |
164
+ | Level 3 (Deep Shadow) | `0px 25px 50px -12px rgba(0, 0, 0, 0.25)` | Modals, floating elements, mega-menu dropdowns |
165
+
166
+ ### Shadow Philosophy
167
+ PostHog's elevation system is remarkably minimal — only one shadow definition exists in the entire system. Depth is communicated through:
168
+ - **Border containment**: Sage-tinted borders (`#bfc1b7`) at 1px create gentle warm separation
169
+ - **Surface color shifts**: Moving from `#fdfdf8` to `#eeefe9` to `#e5e7e0` creates layered depth without shadows
170
+ - **The single shadow**: The one defined shadow (`0 25px 50px -12px`) is reserved for floating elements — modals, dropdowns, popovers. It's a deep, dramatic shadow that creates clear separation when needed
171
+
172
+ ### Decorative Depth
173
+ - **Illustration layering**: Hand-drawn hedgehog art creates visual depth naturally
174
+ - **No gradients or glow**: The flat, warm surface system relies entirely on border and surface-color differentiation
175
+ - **No glassmorphism**: Fully opaque surfaces throughout
176
+
177
+ ## 7. Do's and Don'ts
178
+
179
+ ### Do
180
+ - Use the olive/sage color family (#4d4f46, #23251d, #bfc1b7) for text and borders — the warm green undertone is essential to the brand
181
+ - Flash PostHog Orange (#F54E00) on hover states — it's the hidden brand signature
182
+ - Use IBM Plex Sans at bold weights (700/800) for headings — the font carries technical credibility
183
+ - Keep body text at generous line-heights (1.50–1.71) — the content-heavy site demands readability
184
+ - Maintain the warm parchment background (#fdfdf8) — not pure white, never cold
185
+ - Use 4px border-radius for most UI elements — keep corners subtle and functional
186
+ - Include playful, hand-drawn illustration elements — the personality is the differentiator
187
+ - Apply opacity-based hover states (0.7 opacity) on dark buttons rather than color shifts
188
+
189
+ ### Don't
190
+ - Use blue, purple, or typical tech-SaaS colors — PostHog's palette is deliberately olive/sage
191
+ - Add heavy shadows — the system uses one shadow for floating elements only; everything else uses borders
192
+ - Make the design look "polished" or "premium" in a conventional sense — PostHog's charm is its irreverent, scrappy energy
193
+ - Use tight line-heights on body text — the generous 1.50+ spacing is essential for the content-heavy layout
194
+ - Apply large border-radius (12px+) on cards — PostHog uses 4px–6px, keeping things tight and functional
195
+ - Remove the orange hover flash — it's a core interaction pattern, not decoration
196
+ - Replace illustrations with stock photography — the hand-drawn hedgehog art is the brand
197
+ - Use pure white (#ffffff) as page background — the warm sage-cream (#fdfdf8) tint is foundational
198
+
199
+ ## 8. Responsive Behavior
200
+
201
+ ### Breakpoints
202
+ | Name | Width | Key Changes |
203
+ |------|-------|-------------|
204
+ | Mobile Small | <425px | Single column, compact padding, stacked cards |
205
+ | Mobile | 425px–640px | Slight layout adjustments, larger touch targets |
206
+ | Tablet | 640px–768px | 2-column grids begin, nav partially visible |
207
+ | Tablet Large | 768px–1024px | Multi-column layouts, expanded navigation |
208
+ | Desktop | 1024px–1280px | Full layout, 3-column feature grids, expanded mega-menu |
209
+ | Large Desktop | 1280px–1536px | Max-width container, generous margins |
210
+ | Extra Large | >1536px | Centered container at max-width |
211
+
212
+ ### Touch Targets
213
+ - Buttons: 4px–6px radius with `4px–12px` padding — compact but usable
214
+ - Nav links: 15px text at weight 600 with adequate padding
215
+ - Mobile: Hamburger menu with simplified navigation
216
+ - Inputs: Generous vertical padding for thumb-friendly forms
217
+
218
+ ### Collapsing Strategy
219
+ - **Navigation**: Full mega-menu with dropdowns → hamburger menu on mobile
220
+ - **Feature grids**: 3-column → 2-column → single column stacked
221
+ - **Typography**: Display sizes reduce across breakpoints (30px → smaller)
222
+ - **Illustrations**: Scale within containers, some may hide on mobile for space
223
+ - **Section spacing**: Reduces proportionally while maintaining readability
224
+
225
+ ### Image Behavior
226
+ - Illustrations scale responsively within containers
227
+ - Product screenshots maintain aspect ratios
228
+ - Trust logos reflow into multi-row grids on mobile
229
+ - AI chat widget may reposition or simplify on small screens
230
+
231
+ ## 9. Agent Prompt Guide
232
+
233
+ ### Quick Color Reference
234
+ - Primary Text: Olive Ink (`#4d4f46`)
235
+ - Dark Text: Deep Olive (`#23251d`)
236
+ - Hover Accent: PostHog Orange (`#F54E00`)
237
+ - Dark CTA: Near-Black (`#1e1f23`)
238
+ - Button Surface: Light Sage (`#e5e7e0`)
239
+ - Page Background: Warm Parchment (`#fdfdf8`)
240
+ - Border: Sage Border (`#bfc1b7`)
241
+ - Placeholder: Sage Placeholder (`#9ea096`)
242
+
243
+ ### Example Component Prompts
244
+ - "Create a hero section on warm parchment background (#fdfdf8) with 30px IBM Plex Sans heading at weight 800, line-height 1.20, letter-spacing -0.75px, olive ink text (#4d4f46), and a dark CTA button (#1e1f23, 6px radius, white text, opacity 0.7 on hover)"
245
+ - "Design a feature card with #fdfdf8 background, 1px #bfc1b7 border, 4px radius, IBM Plex Sans heading at 20px weight 700, and 16px body text at weight 400 with 1.50 line-height in olive ink (#4d4f46)"
246
+ - "Build a navigation bar with warm background, IBM Plex Sans links at 15px weight 600 in deep olive (#23251d), underline on hover, and a dark CTA button (#1e1f23) at the right"
247
+ - "Create a button group: primary dark (#1e1f23, white text, 6px radius), secondary sage (#e5e7e0, #4d4f46 text, 4px radius), and ghost/text button — all flash #F54E00 orange text on hover"
248
+ - "Design an input field with #eeefe9 background, 1px #b6b7af border, 4px radius, #9ea096 placeholder text, focus ring in #3b82f6 at 50% opacity"
249
+
250
+ ### Iteration Guide
251
+ When refining existing screens generated with this design system:
252
+ 1. Verify the background is warm parchment (#fdfdf8) not pure white — the sage-cream warmth is essential
253
+ 2. Check that all text uses the olive family (#4d4f46, #23251d) not pure black or neutral gray
254
+ 3. Ensure hover states flash PostHog Orange (#F54E00) — if hovering feels bland, you're missing this
255
+ 4. Confirm borders use sage-tinted gray (#bfc1b7) not neutral gray — warmth runs through every element
256
+ 5. The overall tone should feel like a fun, scrappy startup wiki — never corporate-polished or sterile