glyph-ai 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/README.md +69 -0
- package/bundled/overlay/overlay.js +63 -0
- package/bundled/server/context/brand-references.d.ts +7 -0
- package/bundled/server/context/brand-references.d.ts.map +1 -0
- package/bundled/server/context/brand-references.js +20 -0
- package/bundled/server/context/brand-references.js.map +1 -0
- package/bundled/server/context/design-philosophy.d.ts +6 -0
- package/bundled/server/context/design-philosophy.d.ts.map +1 -0
- package/bundled/server/context/design-philosophy.js +82 -0
- package/bundled/server/context/design-philosophy.js.map +1 -0
- package/bundled/server/context/design-system-loader.d.ts +11 -0
- package/bundled/server/context/design-system-loader.d.ts.map +1 -0
- package/bundled/server/context/design-system-loader.js +169 -0
- package/bundled/server/context/design-system-loader.js.map +1 -0
- package/bundled/server/context/design-system.d.ts +7 -0
- package/bundled/server/context/design-system.d.ts.map +1 -0
- package/bundled/server/context/design-system.js +75 -0
- package/bundled/server/context/design-system.js.map +1 -0
- package/bundled/server/context/prompt-builder.d.ts +15 -0
- package/bundled/server/context/prompt-builder.d.ts.map +1 -0
- package/bundled/server/context/prompt-builder.js +123 -0
- package/bundled/server/context/prompt-builder.js.map +1 -0
- package/bundled/server/context/token-template.d.ts +36 -0
- package/bundled/server/context/token-template.d.ts.map +1 -0
- package/bundled/server/context/token-template.js +226 -0
- package/bundled/server/context/token-template.js.map +1 -0
- package/bundled/server/data/design-systems/apple-design-system.md +474 -0
- package/bundled/server/data/design-systems/arc-design-system.md +922 -0
- package/bundled/server/data/design-systems/claude-ai-design-system.md +1443 -0
- package/bundled/server/data/design-systems/elevenlabs-design-system.md +669 -0
- package/bundled/server/data/design-systems/generating_design.md +9 -0
- package/bundled/server/data/design-systems/linear-design-system.md +607 -0
- package/bundled/server/data/design-systems/notion-design-system.md +866 -0
- package/bundled/server/data/design-systems/raycast-design-system.md +709 -0
- package/bundled/server/data/design-systems/stripe-design-system.md +592 -0
- package/bundled/server/data/design-systems/vercel-design-system.md +824 -0
- package/bundled/server/data/design.md +971 -0
- package/bundled/server/index.d.ts +2 -0
- package/bundled/server/index.d.ts.map +1 -0
- package/bundled/server/index.js +310 -0
- package/bundled/server/index.js.map +1 -0
- package/bundled/server/mcp/tools/apply-variation.d.ts +3 -0
- package/bundled/server/mcp/tools/apply-variation.d.ts.map +1 -0
- package/bundled/server/mcp/tools/apply-variation.js +43 -0
- package/bundled/server/mcp/tools/apply-variation.js.map +1 -0
- package/bundled/server/mcp/tools/generate-variations.d.ts +3 -0
- package/bundled/server/mcp/tools/generate-variations.d.ts.map +1 -0
- package/bundled/server/mcp/tools/generate-variations.js +58 -0
- package/bundled/server/mcp/tools/generate-variations.js.map +1 -0
- package/bundled/server/mcp/tools/index.d.ts +3 -0
- package/bundled/server/mcp/tools/index.d.ts.map +1 -0
- package/bundled/server/mcp/tools/index.js +11 -0
- package/bundled/server/mcp/tools/index.js.map +1 -0
- package/bundled/server/mcp/tools/scan-design-system.d.ts +3 -0
- package/bundled/server/mcp/tools/scan-design-system.d.ts.map +1 -0
- package/bundled/server/mcp/tools/scan-design-system.js +27 -0
- package/bundled/server/mcp/tools/scan-design-system.js.map +1 -0
- package/bundled/server/mcp/tools/submit-variations.d.ts +3 -0
- package/bundled/server/mcp/tools/submit-variations.d.ts.map +1 -0
- package/bundled/server/mcp/tools/submit-variations.js +50 -0
- package/bundled/server/mcp/tools/submit-variations.js.map +1 -0
- package/bundled/server/mcp-entry.d.ts +2 -0
- package/bundled/server/mcp-entry.d.ts.map +1 -0
- package/bundled/server/mcp-entry.js +56 -0
- package/bundled/server/mcp-entry.js.map +1 -0
- package/bundled/server/preview/css-resolver.d.ts +6 -0
- package/bundled/server/preview/css-resolver.d.ts.map +1 -0
- package/bundled/server/preview/css-resolver.js +57 -0
- package/bundled/server/preview/css-resolver.js.map +1 -0
- package/bundled/server/preview/html-builder.d.ts +6 -0
- package/bundled/server/preview/html-builder.d.ts.map +1 -0
- package/bundled/server/preview/html-builder.js +85 -0
- package/bundled/server/preview/html-builder.js.map +1 -0
- package/bundled/server/telemetry.d.ts +4 -0
- package/bundled/server/telemetry.d.ts.map +1 -0
- package/bundled/server/telemetry.js +71 -0
- package/bundled/server/telemetry.js.map +1 -0
- package/bundled/server/types.d.ts +69 -0
- package/bundled/server/types.d.ts.map +1 -0
- package/bundled/server/types.js +2 -0
- package/bundled/server/types.js.map +1 -0
- package/bundled/server/variations/file-writer.d.ts +5 -0
- package/bundled/server/variations/file-writer.d.ts.map +1 -0
- package/bundled/server/variations/file-writer.js +29 -0
- package/bundled/server/variations/file-writer.js.map +1 -0
- package/bundled/server/variations/git-utils.d.ts +3 -0
- package/bundled/server/variations/git-utils.d.ts.map +1 -0
- package/bundled/server/variations/git-utils.js +23 -0
- package/bundled/server/variations/git-utils.js.map +1 -0
- package/bundled/server/variations/store.d.ts +11 -0
- package/bundled/server/variations/store.d.ts.map +1 -0
- package/bundled/server/variations/store.js +52 -0
- package/bundled/server/variations/store.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +299 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/stop.d.ts +2 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +32 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,607 @@
|
|
|
1
|
+
# Linear.app Design System
|
|
2
|
+
|
|
3
|
+
> Source: [https://linear.app](https://linear.app)
|
|
4
|
+
> Date scraped: 2026-03-23
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Design System
|
|
9
|
+
|
|
10
|
+
### Colors
|
|
11
|
+
|
|
12
|
+
| Role | Value | Description |
|
|
13
|
+
|------|-------|-------------|
|
|
14
|
+
| **Background (Primary)** | `rgb(8, 9, 10)` / `#08090A` | Near-black page background |
|
|
15
|
+
| **Background (Elevated)** | `rgb(40, 40, 44)` / `#28282C` | Cards, secondary buttons, dropdown panels |
|
|
16
|
+
| **Background (Surface)** | `rgba(255, 255, 255, 0.05)` | Subtle surface overlays |
|
|
17
|
+
| **Border (Default)** | `rgb(35, 37, 42)` / `#23252A` | Section dividers, footer border-top |
|
|
18
|
+
| **Border (Elevated)** | `rgb(62, 62, 68)` / `#3E3E44` | Secondary button borders |
|
|
19
|
+
| **Text (Primary)** | `rgb(247, 248, 248)` / `#F7F8F8` | Headings, primary body text |
|
|
20
|
+
| **Text (Secondary)** | `rgb(138, 143, 152)` / `#8A8F98` | Subtitles, descriptions, nav links |
|
|
21
|
+
| **Text (Feature Heading)** | `rgb(208, 214, 224)` / `#D0D6E0` | Sub-headings within feature cards |
|
|
22
|
+
| **Primary CTA** | `rgb(230, 230, 230)` / `#E6E6E6` | Primary button background (light on dark) |
|
|
23
|
+
| **Primary CTA Text** | `rgb(8, 9, 10)` / `#08090A` | Dark text on light buttons |
|
|
24
|
+
| **Accent** | `rgb(94, 106, 210)` / `#5E6AD2` | Skip-to-content link, brand purple (subtle) |
|
|
25
|
+
|
|
26
|
+
### Typography
|
|
27
|
+
|
|
28
|
+
| Role | Font Family | Size | Weight | Line Height | Letter Spacing |
|
|
29
|
+
|------|-------------|------|--------|-------------|----------------|
|
|
30
|
+
| **Font Stack** | `"Inter Variable", "SF Pro Display", -apple-system, system-ui, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif` | | | | |
|
|
31
|
+
| **H1 (Hero)** | Inter Variable | `64px` | `510` | `64px` (1.0) | `-1.408px` (-2.2%) |
|
|
32
|
+
| **H1 (Page)** | Inter Variable | `48px` | `510` | `48px` (1.0) | `-1.056px` (-2.2%) |
|
|
33
|
+
| **H2 (Section)** | Inter Variable | `40px` | `510` | `44px` (1.1) | `-0.88px` (-2.2%) |
|
|
34
|
+
| **H3 (Card Title)** | Inter Variable | `24px` | `590` | — | — |
|
|
35
|
+
| **H3 (Feature Title)** | Inter Variable | `20px` | `590` | `26.6px` (1.33) | `-0.24px` |
|
|
36
|
+
| **H3 (Footer Column)** | Inter Variable | `13px` | `510` | `19.5px` (1.5) | `-0.13px` |
|
|
37
|
+
| **Body (Large)** | Inter Variable | `15px` | `400` | `24px` (1.6) | — |
|
|
38
|
+
| **Body (Default)** | Inter Variable | `14px` | `400` | `21px` (1.5) | — |
|
|
39
|
+
| **Label / Nav** | Inter Variable | `13px` | `400` | `19.5px` (1.5) | — |
|
|
40
|
+
| **Label (Emphasized)** | Inter Variable | `13px` | `510` | — | — |
|
|
41
|
+
|
|
42
|
+
**Notes:**
|
|
43
|
+
- Linear uses `Inter Variable` exclusively with variable font weights (510 = medium, 590 = semi-bold)
|
|
44
|
+
- Letter spacing is consistently negative on headings (~-2.2%) for tight, modern feel
|
|
45
|
+
- Line height on hero/page headings is 1.0 (equal to font size) for extremely tight leading
|
|
46
|
+
|
|
47
|
+
### Button Styling
|
|
48
|
+
|
|
49
|
+
#### Primary Button (Invert)
|
|
50
|
+
```
|
|
51
|
+
Background: rgb(230, 230, 230) / #E6E6E6
|
|
52
|
+
Text: rgb(8, 9, 10) / #08090A
|
|
53
|
+
Border: 1px solid rgb(230, 230, 230)
|
|
54
|
+
Border Radius: 4px
|
|
55
|
+
Font Size: 13px (nav) / 15px (CTA)
|
|
56
|
+
Font Weight: 510
|
|
57
|
+
Height: 32px (nav) / 40px (CTA)
|
|
58
|
+
Padding: 0 12px (nav) / 0 16px (CTA)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### Secondary Button
|
|
62
|
+
```
|
|
63
|
+
Background: rgb(40, 40, 44) / #28282C
|
|
64
|
+
Text: rgb(247, 248, 248) / #F7F8F8
|
|
65
|
+
Border: 0.5px solid rgb(62, 62, 68) / #3E3E44
|
|
66
|
+
Border Radius: 4px
|
|
67
|
+
Font Size: 15px
|
|
68
|
+
Font Weight: 510
|
|
69
|
+
Height: 40px
|
|
70
|
+
Padding: 0 16px
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Ghost / Text Button
|
|
74
|
+
```
|
|
75
|
+
Background: transparent
|
|
76
|
+
Text: rgb(138, 143, 152) / #8A8F98
|
|
77
|
+
Border: none
|
|
78
|
+
Border Radius: 4px
|
|
79
|
+
Padding: 0 12px
|
|
80
|
+
Font Size: 13px
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Input Fields
|
|
84
|
+
|
|
85
|
+
Linear's marketing site uses minimal form inputs. Toggle switches appear on the pricing page:
|
|
86
|
+
```
|
|
87
|
+
Toggle (Checked): Blue/purple fill
|
|
88
|
+
Toggle Label: 13px, weight 400, secondary text color
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Spacing System
|
|
92
|
+
|
|
93
|
+
| Token | Value | Usage |
|
|
94
|
+
|-------|-------|-------|
|
|
95
|
+
| **Container Max Width** | `1364px` | Primary content container |
|
|
96
|
+
| **Container Padding** | `0 32px` | Horizontal page gutters |
|
|
97
|
+
| **Section Padding** | `96px 0 128px` | Vertical rhythm between feature sections |
|
|
98
|
+
| **CTA Section Margin** | `224px 0` | Extra breathing room around final CTA |
|
|
99
|
+
| **Main Top Padding** | `72px` | Space below fixed nav |
|
|
100
|
+
| **Footer Column Gap** | `32px` padding per column | Footer section horizontal spacing |
|
|
101
|
+
| **Footer Title Margin** | `0 0 24px` | Space below footer column headings |
|
|
102
|
+
| **Button Gap (CTA)** | `12px` | Gap between side-by-side CTA buttons |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Section Boilerplate
|
|
107
|
+
|
|
108
|
+
### Navigation
|
|
109
|
+
|
|
110
|
+
**Structure:**
|
|
111
|
+
```
|
|
112
|
+
<header> (banner)
|
|
113
|
+
<nav aria-label="Main">
|
|
114
|
+
<ul aria-label="Site navigation">
|
|
115
|
+
<!-- Logo (left) -->
|
|
116
|
+
<li>
|
|
117
|
+
<a href="/homepage">
|
|
118
|
+
<img alt="Linear" /> <!-- SVG logo mark + wordmark -->
|
|
119
|
+
</a>
|
|
120
|
+
</li>
|
|
121
|
+
|
|
122
|
+
<!-- Center links -->
|
|
123
|
+
<div>
|
|
124
|
+
<div> <!-- left group -->
|
|
125
|
+
<li><a>Product</a></li> <!-- has dropdown -->
|
|
126
|
+
<li><a>Resources</a></li> <!-- has dropdown -->
|
|
127
|
+
<li><a>Customers</a></li>
|
|
128
|
+
<li><a>Pricing</a></li>
|
|
129
|
+
<li><a>Now</a></li>
|
|
130
|
+
<li><a>Contact</a></li>
|
|
131
|
+
</div>
|
|
132
|
+
<div> <!-- right group -->
|
|
133
|
+
<li><a>Log in</a></li>
|
|
134
|
+
<li><a>Sign up</a></li> <!-- primary button style -->
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
</ul>
|
|
138
|
+
</nav>
|
|
139
|
+
</header>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Styling:**
|
|
143
|
+
- Full-width, transparent background (`rgba(0,0,0,0)`)
|
|
144
|
+
- Inner wrapper: `max-width: 1364px`, centered
|
|
145
|
+
- Nav height: ~72px (implied from main top padding)
|
|
146
|
+
- Logo: left-aligned, SVG mark + wordmark
|
|
147
|
+
- Links: `13px`, weight `400`, color `rgb(138, 143, 152)` (secondary)
|
|
148
|
+
- Active nav link text becomes `rgb(247, 248, 248)` (primary white)
|
|
149
|
+
- Sign up button: primary invert style (light bg, dark text, `border-radius: 4px`)
|
|
150
|
+
- Vertical divider `|` separates nav links from auth links
|
|
151
|
+
- Nav is sticky/fixed on scroll
|
|
152
|
+
|
|
153
|
+
**Interactions - Product Dropdown:**
|
|
154
|
+
- Trigger: hover on "Product" link
|
|
155
|
+
- Panel appears below with 3-column grid of links
|
|
156
|
+
- Each item: title (white, weight 510) + description (secondary gray, 2 lines)
|
|
157
|
+
- Items: Intake, Build, Monitor, Plan, Diffs, Integrations
|
|
158
|
+
- Bottom bar: "New: UI refresh" link (left) + "Changelog" link (right)
|
|
159
|
+
- Panel has dark elevated background, subtle border, rounded corners
|
|
160
|
+
- Smooth fade-in/slide-down animation
|
|
161
|
+
|
|
162
|
+
**Interactions - Resources Dropdown:**
|
|
163
|
+
- Same trigger/animation pattern as Product
|
|
164
|
+
- Contains: About, Blog, Docs, Changelog, etc.
|
|
165
|
+
|
|
166
|
+
**Interactions - General:**
|
|
167
|
+
- Links have subtle opacity/color transition on hover (secondary -> primary white)
|
|
168
|
+
- No underlines on hover
|
|
169
|
+
- Sign up button has subtle hover brightness increase
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
### Hero
|
|
174
|
+
|
|
175
|
+
**Structure:**
|
|
176
|
+
```
|
|
177
|
+
<section>
|
|
178
|
+
<div class="container" style="max-width: 1364px; padding: 0 32px;">
|
|
179
|
+
<!-- Title -->
|
|
180
|
+
<h1>The product development system for teams and agents</h1>
|
|
181
|
+
|
|
182
|
+
<!-- Description row -->
|
|
183
|
+
<div style="display: flex; justify-content: space-between; align-items: end;">
|
|
184
|
+
<p>Purpose-built for planning and building products.<br/>Designed for the AI era.</p>
|
|
185
|
+
<a>New Linear Diffs (Beta) -></a> <!-- announcement badge, right-aligned -->
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<!-- Product screenshot / interactive demo -->
|
|
189
|
+
<div> <!-- full-width app screenshot with 3-pane layout --> </div>
|
|
190
|
+
</div>
|
|
191
|
+
</section>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Styling:**
|
|
195
|
+
- H1: `64px`, weight `510`, line-height `64px`, letter-spacing `-1.408px`, white
|
|
196
|
+
- Subtitle: `15px`, weight `400`, line-height `24px`, color `rgb(138, 143, 152)`
|
|
197
|
+
- Announcement link: right-aligned, secondary color with arrow, "New" badge
|
|
198
|
+
- Product screenshot: full container width, rounded corners, dark UI with subtle borders
|
|
199
|
+
- No traditional hero CTA buttons (the app screenshot IS the hero visual)
|
|
200
|
+
- Generous vertical spacing between title, subtitle, and screenshot
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Features (Repeating Section Pattern)
|
|
205
|
+
|
|
206
|
+
Linear's homepage uses 5 feature sections with a consistent pattern:
|
|
207
|
+
|
|
208
|
+
**Structure:**
|
|
209
|
+
```
|
|
210
|
+
<section style="padding: 96px 0 128px;">
|
|
211
|
+
<div class="container" style="max-width: 1364px; padding: 0 32px;">
|
|
212
|
+
<!-- Header row: 2-column -->
|
|
213
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: ~40px;">
|
|
214
|
+
<h2>Make product<br/>operations self-driving</h2>
|
|
215
|
+
<div>
|
|
216
|
+
<p>Description text explaining the feature in 2-3 lines.</p>
|
|
217
|
+
<a>1.0 Intake -></a> <!-- numbered link with arrow -->
|
|
218
|
+
</div>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<!-- Visual: full-width product screenshot or interactive demo -->
|
|
222
|
+
<div> <!-- app UI screenshot --> </div>
|
|
223
|
+
</div>
|
|
224
|
+
</section>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**Sections on homepage:**
|
|
228
|
+
1. "Make product operations self-driving" (Intake)
|
|
229
|
+
2. "Define the product direction" (Plan)
|
|
230
|
+
3. "Move work forward across teams and agents" (Build)
|
|
231
|
+
4. "Review PRs and agent output" (Diffs)
|
|
232
|
+
5. "Understand progress at scale" (Monitor)
|
|
233
|
+
|
|
234
|
+
**Styling:**
|
|
235
|
+
- H2: `40px`, weight `510`, line-height `44px`, letter-spacing `-0.88px`, white
|
|
236
|
+
- Description: `15px`, weight `400`, line-height `24px`, secondary gray
|
|
237
|
+
- Section link: numbered prefix (e.g., "1.0"), product name, right arrow `->`, secondary color
|
|
238
|
+
- 2-column header layout: heading left, description + link right
|
|
239
|
+
- Full-width visuals below the header
|
|
240
|
+
- Sections separated by `96px` top + `128px` bottom padding
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
### Social Proof (Logo Bar)
|
|
245
|
+
|
|
246
|
+
**Structure (Homepage):**
|
|
247
|
+
```
|
|
248
|
+
<div class="container">
|
|
249
|
+
<p>Linear powers over <strong>25,000</strong> product teams. From ambitious startups to major enterprises.</p>
|
|
250
|
+
<a href="/customers">Customer stories -></a>
|
|
251
|
+
</div>
|
|
252
|
+
<!-- Horizontal scrolling logo bar -->
|
|
253
|
+
<div> <!-- row of grayscale company logos --> </div>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Structure (Customers Page):**
|
|
257
|
+
```
|
|
258
|
+
<section>
|
|
259
|
+
<!-- Stats -->
|
|
260
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr;">
|
|
261
|
+
<div>
|
|
262
|
+
<p class="stat">2x</p>
|
|
263
|
+
<p>Increase in filed issues</p>
|
|
264
|
+
</div>
|
|
265
|
+
<div>
|
|
266
|
+
<p class="stat">1.6x</p>
|
|
267
|
+
<p>Faster issue resolution</p>
|
|
268
|
+
</div>
|
|
269
|
+
</div>
|
|
270
|
+
<p>Teams that switch to Linear create more issues and close them faster</p>
|
|
271
|
+
</section>
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Styling:**
|
|
275
|
+
- Stats: large bold numbers, secondary description text
|
|
276
|
+
- Logos: grayscale, evenly spaced, horizontal scroll on mobile
|
|
277
|
+
- Company count bolded: `<strong>25,000</strong>`
|
|
278
|
+
- "Customer stories" link with right arrow
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
### Showcase (Customer Stories Grid)
|
|
283
|
+
|
|
284
|
+
**Structure (Customers Page):**
|
|
285
|
+
```
|
|
286
|
+
<section>
|
|
287
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: ~24px;">
|
|
288
|
+
<!-- Featured story card -->
|
|
289
|
+
<a href="/customers/openai">
|
|
290
|
+
<div class="card" style="border-radius: 8px; overflow: hidden;">
|
|
291
|
+
<img alt="OpenAI" /> <!-- company logo -->
|
|
292
|
+
<div>
|
|
293
|
+
<p class="title">Why OpenAI chose Linear and scaled to 3,000 users</p>
|
|
294
|
+
<span>Read story <img alt="arrow" /></span>
|
|
295
|
+
</div>
|
|
296
|
+
</div>
|
|
297
|
+
</a>
|
|
298
|
+
<!-- Repeat for each story -->
|
|
299
|
+
</div>
|
|
300
|
+
</section>
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
**Customer Logo Grid:**
|
|
304
|
+
```
|
|
305
|
+
<section>
|
|
306
|
+
<h2>Powering 25,000+ ambitious product teams of all shapes and sizes</h2>
|
|
307
|
+
<!-- Tab filters -->
|
|
308
|
+
<div role="tablist">
|
|
309
|
+
<button role="tab" aria-selected="true">Featured</button>
|
|
310
|
+
<button role="tab">SaaS</button>
|
|
311
|
+
<button role="tab">AI</button>
|
|
312
|
+
<button role="tab">Fintech</button>
|
|
313
|
+
<button role="tab">Consumer</button>
|
|
314
|
+
<button role="tab">Hardware</button>
|
|
315
|
+
<button role="tab">Health</button>
|
|
316
|
+
<button role="tab">Enterprise</button>
|
|
317
|
+
</div>
|
|
318
|
+
<!-- Logo list -->
|
|
319
|
+
<div style="display: grid; grid-template-columns: repeat(auto-fill, ~200px);">
|
|
320
|
+
<a href="/customers/openai">
|
|
321
|
+
<img alt="OpenAI logo" />
|
|
322
|
+
<span>OpenAI</span>
|
|
323
|
+
<span class="tags">AI, Enterprise</span>
|
|
324
|
+
<span>Read story -></span>
|
|
325
|
+
</a>
|
|
326
|
+
<!-- Repeat -->
|
|
327
|
+
</div>
|
|
328
|
+
</section>
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
**Styling:**
|
|
332
|
+
- Story cards: dark background with subtle geometric pattern overlay, rounded corners (`8px`)
|
|
333
|
+
- Card padding: ~28px
|
|
334
|
+
- Company logo: top-left of card
|
|
335
|
+
- Title: white, ~20px, weight 510
|
|
336
|
+
- "Read story" link: secondary gray with arrow icon
|
|
337
|
+
- 2-column grid for featured stories
|
|
338
|
+
- Logo grid: multi-column with company logo, name, category tags, and action link
|
|
339
|
+
- Tab filters: horizontal row, selected tab has active state
|
|
340
|
+
|
|
341
|
+
---
|
|
342
|
+
|
|
343
|
+
### Stats
|
|
344
|
+
|
|
345
|
+
**Structure:**
|
|
346
|
+
```
|
|
347
|
+
<div style="display: grid; grid-template-columns: 1fr 1fr;">
|
|
348
|
+
<div>
|
|
349
|
+
<p style="font-size: ~40px; font-weight: 510;">2x</p>
|
|
350
|
+
<p style="font-size: 15px; color: rgb(138,143,152);">Increase in filed issues</p>
|
|
351
|
+
</div>
|
|
352
|
+
<div>
|
|
353
|
+
<p style="font-size: ~40px; font-weight: 510;">1.6x</p>
|
|
354
|
+
<p style="font-size: 15px; color: rgb(138,143,152);">Faster issue resolution</p>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
<p>Teams that switch to Linear create more issues and close them faster</p>
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
**Styling:**
|
|
361
|
+
- Stat number: large (~40px), weight 510, white
|
|
362
|
+
- Stat label: `15px`, secondary gray
|
|
363
|
+
- 2-column grid layout
|
|
364
|
+
- Supporting caption below stats in secondary gray
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
### Pricing
|
|
369
|
+
|
|
370
|
+
**Structure:**
|
|
371
|
+
```
|
|
372
|
+
<section>
|
|
373
|
+
<div class="container">
|
|
374
|
+
<h1>Pricing</h1>
|
|
375
|
+
|
|
376
|
+
<!-- 4-column pricing grid -->
|
|
377
|
+
<div style="display: grid; grid-template-columns: repeat(4, 1fr); gap: ~24px;">
|
|
378
|
+
<!-- Tier card (repeated 4x) -->
|
|
379
|
+
<div>
|
|
380
|
+
<h3>Free</h3>
|
|
381
|
+
<div class="price">$0</div>
|
|
382
|
+
<p class="billing-note">Free for everyone</p>
|
|
383
|
+
|
|
384
|
+
<ul>
|
|
385
|
+
<li><img alt="check" /> Unlimited members</li>
|
|
386
|
+
<li><img alt="check" /> 2 teams</li>
|
|
387
|
+
<li><img alt="check" /> 250 issues</li>
|
|
388
|
+
<!-- ... -->
|
|
389
|
+
</ul>
|
|
390
|
+
|
|
391
|
+
<a class="btn-primary" href="/signup">Get started</a>
|
|
392
|
+
</div>
|
|
393
|
+
|
|
394
|
+
<!-- Basic -->
|
|
395
|
+
<div>
|
|
396
|
+
<h3>Basic</h3>
|
|
397
|
+
<div class="price">$10 <span>per user/month</span></div>
|
|
398
|
+
<label><input type="checkbox" checked /> Billed yearly</label>
|
|
399
|
+
<ul><!-- features --></ul>
|
|
400
|
+
<a href="/signup">Get started</a>
|
|
401
|
+
</div>
|
|
402
|
+
|
|
403
|
+
<!-- Business -->
|
|
404
|
+
<div>
|
|
405
|
+
<h3>Business</h3>
|
|
406
|
+
<div class="price">$16 <span>per user/month</span></div>
|
|
407
|
+
<label><input type="checkbox" checked /> Billed yearly</label>
|
|
408
|
+
<ul><!-- features --></ul>
|
|
409
|
+
<div>
|
|
410
|
+
<a href="/signup">Get started</a>
|
|
411
|
+
<a href="/contact/sales">Contact sales</a>
|
|
412
|
+
</div>
|
|
413
|
+
</div>
|
|
414
|
+
|
|
415
|
+
<!-- Enterprise -->
|
|
416
|
+
<div>
|
|
417
|
+
<h3>Enterprise</h3>
|
|
418
|
+
<div class="price">Custom</div>
|
|
419
|
+
<p>Annual billing only</p>
|
|
420
|
+
<ul><!-- features --></ul>
|
|
421
|
+
<a href="/contact/sales">Contact sales</a>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
|
|
425
|
+
<!-- Social proof -->
|
|
426
|
+
<p>Trusted by more than <strong>25,000</strong> companies</p>
|
|
427
|
+
<!-- Logo row -->
|
|
428
|
+
|
|
429
|
+
<!-- Feature comparison table -->
|
|
430
|
+
<a>Customer stories -></a>
|
|
431
|
+
<table>
|
|
432
|
+
<thead>
|
|
433
|
+
<tr>
|
|
434
|
+
<th>Features</th>
|
|
435
|
+
<th>Free</th>
|
|
436
|
+
<th>Basic</th>
|
|
437
|
+
<th>Business</th>
|
|
438
|
+
<th>Enterprise</th>
|
|
439
|
+
</tr>
|
|
440
|
+
</thead>
|
|
441
|
+
<tbody>
|
|
442
|
+
<!-- Category headers as row groups: Core, AI and agent workflows, Integrations, etc. -->
|
|
443
|
+
<tr><td colspan="5" class="category">Core</td></tr>
|
|
444
|
+
<tr>
|
|
445
|
+
<td>Issues, projects, cycles, initiatives</td>
|
|
446
|
+
<td><img alt="check" /></td>
|
|
447
|
+
<td><img alt="check" /></td>
|
|
448
|
+
<td><img alt="check" /></td>
|
|
449
|
+
<td><img alt="check" /></td>
|
|
450
|
+
</tr>
|
|
451
|
+
<!-- ... rows ... -->
|
|
452
|
+
</tbody>
|
|
453
|
+
</table>
|
|
454
|
+
</div>
|
|
455
|
+
</section>
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**Styling:**
|
|
459
|
+
- H1 (page title): `48px`, weight `510`, letter-spacing `-1.056px`
|
|
460
|
+
- Tier name (H3): `24px`, weight `590`, white
|
|
461
|
+
- Price: large number, "per user/month" in smaller secondary text
|
|
462
|
+
- Feature list: checkmark icons (SVG, green/teal tint), `16px` text, white
|
|
463
|
+
- Billing toggle: checkbox-style toggle with label
|
|
464
|
+
- 4-column grid, equal width
|
|
465
|
+
- No visible card borders or backgrounds (cards are implied by column spacing)
|
|
466
|
+
- Comparison table: full-width, alternating category headers, checkmark/dash icons
|
|
467
|
+
- Category headers in table are non-row dividers (styled differently)
|
|
468
|
+
|
|
469
|
+
---
|
|
470
|
+
|
|
471
|
+
### CTA (Pre-footer)
|
|
472
|
+
|
|
473
|
+
**Structure:**
|
|
474
|
+
```
|
|
475
|
+
<section style="margin: 224px 0; text-align: center;">
|
|
476
|
+
<h2 style="max-width: 16ch;">Built for the future. Available today.</h2>
|
|
477
|
+
<div style="display: flex; gap: 12px; justify-content: center;">
|
|
478
|
+
<a class="btn-primary" href="/signup">Get started</a>
|
|
479
|
+
<a class="btn-secondary" href="/contact/sales">Contact sales</a>
|
|
480
|
+
</div>
|
|
481
|
+
</section>
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
**Styling:**
|
|
485
|
+
- H2: `40px`, weight `510`, centered, constrained to `max-width: 16ch`
|
|
486
|
+
- Two buttons side by side with `12px` gap
|
|
487
|
+
- Primary: light bg (`#E6E6E6`), dark text, `15px`, `40px` height, `border-radius: 4px`
|
|
488
|
+
- Secondary: dark bg (`#28282C`), light text, `0.5px` border `#3E3E44`, same size
|
|
489
|
+
- Massive vertical margin (`224px`) for breathing room
|
|
490
|
+
- No background color or decorative elements — pure typography + buttons
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
### Footer
|
|
495
|
+
|
|
496
|
+
**Structure:**
|
|
497
|
+
```
|
|
498
|
+
<footer style="border-top: 1px solid rgb(35, 37, 42);">
|
|
499
|
+
<div style="max-width: 1364px; margin: 0 auto;">
|
|
500
|
+
<!-- Logo -->
|
|
501
|
+
<a href="/"><img alt="Linear Logo" /></a>
|
|
502
|
+
|
|
503
|
+
<!-- 6-column link grid -->
|
|
504
|
+
<div style="display: grid; grid-template-columns: repeat(6, 1fr);">
|
|
505
|
+
<!-- Column -->
|
|
506
|
+
<div style="padding: 0 32px;">
|
|
507
|
+
<h3>Product</h3>
|
|
508
|
+
<ul>
|
|
509
|
+
<li><a href="/intake">Intake</a></li>
|
|
510
|
+
<li><a href="/plan">Plan</a></li>
|
|
511
|
+
<li><a href="/build">Build</a></li>
|
|
512
|
+
<li><a href="/diffs">Diffs</a></li>
|
|
513
|
+
<li><a href="/monitor">Monitor</a></li>
|
|
514
|
+
<li><a href="/pricing">Pricing</a></li>
|
|
515
|
+
<li><a href="/security">Security</a></li>
|
|
516
|
+
</ul>
|
|
517
|
+
</div>
|
|
518
|
+
|
|
519
|
+
<div style="padding: 0 32px;">
|
|
520
|
+
<h3>Features</h3>
|
|
521
|
+
<ul>
|
|
522
|
+
<li><a>Asks</a></li>
|
|
523
|
+
<li><a>Agents</a></li>
|
|
524
|
+
<li><a>Customer Requests</a></li>
|
|
525
|
+
<li><a>Insights</a></li>
|
|
526
|
+
<li><a>Mobile</a></li>
|
|
527
|
+
<li><a>Integrations</a></li>
|
|
528
|
+
<li><a>Changelog</a></li>
|
|
529
|
+
</ul>
|
|
530
|
+
</div>
|
|
531
|
+
|
|
532
|
+
<div style="padding: 0 32px;">
|
|
533
|
+
<h3>Company</h3>
|
|
534
|
+
<ul>
|
|
535
|
+
<li><a>About</a></li>
|
|
536
|
+
<li><a>Customers</a></li>
|
|
537
|
+
<li><a>Careers</a></li>
|
|
538
|
+
<li><a>Blog</a></li>
|
|
539
|
+
<li><a>Method</a></li>
|
|
540
|
+
<li><a>Quality</a></li>
|
|
541
|
+
<li><a>Brand</a></li>
|
|
542
|
+
</ul>
|
|
543
|
+
</div>
|
|
544
|
+
|
|
545
|
+
<div style="padding: 0 32px;">
|
|
546
|
+
<h3>Resources</h3>
|
|
547
|
+
<ul>
|
|
548
|
+
<li><a>Switch</a></li>
|
|
549
|
+
<li><a>Download</a></li>
|
|
550
|
+
<li><a>Documentation</a></li>
|
|
551
|
+
<li><a>Developers</a></li>
|
|
552
|
+
<li><a>Status</a></li>
|
|
553
|
+
<li><a>Enterprise</a></li>
|
|
554
|
+
<li><a>Startups</a></li>
|
|
555
|
+
</ul>
|
|
556
|
+
</div>
|
|
557
|
+
|
|
558
|
+
<div style="padding: 0 32px;">
|
|
559
|
+
<h3>Connect</h3>
|
|
560
|
+
<ul>
|
|
561
|
+
<li><a>Contact us</a></li>
|
|
562
|
+
<li><a>Community</a></li>
|
|
563
|
+
<li><a>X (Twitter)</a></li>
|
|
564
|
+
<li><a>GitHub</a></li>
|
|
565
|
+
<li><a>YouTube</a></li>
|
|
566
|
+
</ul>
|
|
567
|
+
</div>
|
|
568
|
+
</div>
|
|
569
|
+
|
|
570
|
+
<!-- Legal links -->
|
|
571
|
+
<div>
|
|
572
|
+
<a href="/privacy">Privacy</a>
|
|
573
|
+
<a href="/terms">Terms</a>
|
|
574
|
+
<a href="/dpa">DPA</a>
|
|
575
|
+
</div>
|
|
576
|
+
</div>
|
|
577
|
+
</footer>
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
**Styling:**
|
|
581
|
+
- Background: same as page (`#08090A`)
|
|
582
|
+
- Top border: `1px solid rgb(35, 37, 42)` (subtle separator)
|
|
583
|
+
- Inner container: `max-width: 1364px`, centered
|
|
584
|
+
- Column headers (H3): `13px`, weight `510`, white, `margin-bottom: 24px`
|
|
585
|
+
- Links: `13px`, secondary gray color, no underline
|
|
586
|
+
- Links hover: transition to white
|
|
587
|
+
- Column padding: `0 32px`
|
|
588
|
+
- Legal links: bottom row, same secondary styling
|
|
589
|
+
- Logo: Linear mark only (no wordmark), top-left
|
|
590
|
+
|
|
591
|
+
---
|
|
592
|
+
|
|
593
|
+
### Sections NOT present on linear.app:
|
|
594
|
+
|
|
595
|
+
The following sections from the requested list are **not present** on Linear's marketing site:
|
|
596
|
+
|
|
597
|
+
| Section | Status |
|
|
598
|
+
|---------|--------|
|
|
599
|
+
| **About** | Exists at `/about` but follows the same feature section pattern (H1 + body text + visuals) |
|
|
600
|
+
| **Blog** | Exists at `/blog` — standard blog listing with card grid |
|
|
601
|
+
| **Comparison** | Not present as a dedicated section |
|
|
602
|
+
| **Contact** | Exists at `/contact` — minimal form page |
|
|
603
|
+
| **Downloads** | Exists at `/download` — simple app download links |
|
|
604
|
+
| **FAQ** | Not present on marketing pages |
|
|
605
|
+
| **How It Works** | Handled by the feature sections pattern above |
|
|
606
|
+
| **Newsletter** | Not present |
|
|
607
|
+
| **Store** | Not present |
|