@yojahny/wp-design-library 0.3.0 → 0.5.1
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/.env.example +7 -0
- package/README.md +52 -9
- package/bin/library.mjs +11 -0
- package/entries/ada/entry.md +55 -0
- package/entries/ada/strip.webp +0 -0
- package/entries/air/captures/2/measure.json +325 -0
- package/entries/air/captures/2/strip.webp +0 -0
- package/entries/air/entry.md +62 -0
- package/entries/air/strip.webp +0 -0
- package/entries/ais-community-dark-depth/strip.webp +0 -0
- package/entries/apple-home/captures/2/measure.json +91 -0
- package/entries/apple-home/captures/2/strip.webp +0 -0
- package/entries/apple-home/entry.md +64 -0
- package/entries/apple-home/strip.webp +0 -0
- package/entries/apple-macbook-neo/captures/2/measure.json +570 -0
- package/entries/apple-macbook-neo/captures/2/strip.webp +0 -0
- package/entries/apple-macbook-neo/entry.md +62 -0
- package/entries/apple-macbook-neo/strip.webp +0 -0
- package/entries/apple-watch-ultra-4/entry.md +63 -0
- package/entries/apple-watch-ultra-4/measure.json +481 -0
- package/entries/apple-watch-ultra-4/strip.webp +0 -0
- package/entries/bpco/captures/2/strip.webp +0 -0
- package/entries/bpco/captures/3/strip.webp +0 -0
- package/entries/bpco/entry.md +81 -0
- package/entries/bpco/strip.webp +0 -0
- package/entries/column/captures/2/measure.json +996 -0
- package/entries/column/captures/2/strip.webp +0 -0
- package/entries/column/entry.md +82 -0
- package/entries/column/strip.webp +0 -0
- package/entries/cthdrl/captures/2/measure.json +251 -0
- package/entries/cthdrl/captures/2/strip.webp +0 -0
- package/entries/cthdrl/entry.md +86 -0
- package/entries/cthdrl/strip.webp +0 -0
- package/entries/dala-craftedbygc/entry.md +69 -0
- package/entries/dala-craftedbygc/strip.webp +0 -0
- package/entries/dock/captures/2/measure.json +206 -0
- package/entries/dock/captures/2/strip.webp +0 -0
- package/entries/dock/entry.md +62 -0
- package/entries/dock/strip.webp +0 -0
- package/entries/dub/captures/2/measure.json +37 -0
- package/entries/dub/captures/2/strip.webp +0 -0
- package/entries/dub/entry.md +61 -0
- package/entries/dub/strip.webp +0 -0
- package/entries/duolingo/captures/2/measure.json +138 -0
- package/entries/duolingo/captures/2/strip.webp +0 -0
- package/entries/duolingo/entry.md +65 -0
- package/entries/duolingo/strip.webp +0 -0
- package/entries/elevenlabs/captures/2/measure.json +160 -0
- package/entries/elevenlabs/captures/2/strip.webp +0 -0
- package/entries/elevenlabs/entry.md +62 -0
- package/entries/elevenlabs/strip.webp +0 -0
- package/entries/flying-papers/captures/2/measure.json +291 -0
- package/entries/flying-papers/captures/2/strip.webp +0 -0
- package/entries/flying-papers/entry.md +61 -0
- package/entries/flying-papers/strip.webp +0 -0
- package/entries/gsap/captures/2/measure.json +120 -0
- package/entries/gsap/captures/2/strip.webp +0 -0
- package/entries/gsap/entry.md +62 -0
- package/entries/gsap/strip.webp +0 -0
- package/entries/letters/captures/2/measure.json +20 -0
- package/entries/letters/captures/2/strip.webp +0 -0
- package/entries/letters/entry.md +62 -0
- package/entries/letters/strip.webp +0 -0
- package/entries/micro/captures/2/measure.json +852 -0
- package/entries/micro/captures/2/strip.webp +0 -0
- package/entries/micro/entry.md +61 -0
- package/entries/micro/strip.webp +0 -0
- package/entries/monopo-saigon/captures/2/measure.json +145 -0
- package/entries/monopo-saigon/captures/2/strip.webp +0 -0
- package/entries/monopo-saigon/entry.md +64 -0
- package/entries/monopo-saigon/strip.webp +0 -0
- package/entries/notion/captures/2/measure.json +338 -0
- package/entries/notion/captures/2/strip.webp +0 -0
- package/entries/notion/entry.md +66 -0
- package/entries/notion/strip.webp +0 -0
- package/entries/origin-financial/captures/2/measure.json +169 -0
- package/entries/origin-financial/captures/2/strip.webp +0 -0
- package/entries/origin-financial/entry.md +65 -0
- package/entries/origin-financial/strip.webp +0 -0
- package/entries/oryzo-ai/captures/2/measure.json +39 -0
- package/entries/oryzo-ai/captures/2/strip.webp +0 -0
- package/entries/oryzo-ai/entry.md +76 -0
- package/entries/oryzo-ai/strip.webp +0 -0
- package/entries/silencio/captures/2/strip.webp +0 -0
- package/entries/silencio/entry.md +114 -0
- package/entries/silencio/motion/product-story/frame-0.webp +0 -0
- package/entries/silencio/motion/product-story/frame-1.webp +0 -0
- package/entries/silencio/motion/product-story/frame-2.webp +0 -0
- package/entries/silencio/motion/product-story/frame-3.webp +0 -0
- package/entries/silencio/motion/product-story/frame-4.webp +0 -0
- package/entries/silencio/motion/product-story/frame-5.webp +0 -0
- package/entries/silencio/motion/product-story/frame-6.webp +0 -0
- package/entries/silencio/motion/product-story/frame-7.webp +0 -0
- package/entries/silencio/strip.webp +0 -0
- package/entries/steep/captures/2/measure.json +20 -0
- package/entries/steep/captures/2/strip.webp +0 -0
- package/entries/steep/entry.md +63 -0
- package/entries/steep/strip.webp +0 -0
- package/entries/stripe/captures/2/measure.json +892 -0
- package/entries/stripe/captures/2/strip.webp +0 -0
- package/entries/stripe/entry.md +61 -0
- package/entries/stripe/strip.webp +0 -0
- package/entries/superpower/captures/2/measure.json +179 -0
- package/entries/superpower/captures/2/strip.webp +0 -0
- package/entries/superpower/entry.md +64 -0
- package/entries/superpower/strip.webp +0 -0
- package/entries/superr/entry.md +54 -0
- package/entries/superr/strip.webp +0 -0
- package/entries/svz-weare/captures/2/measure.json +129 -0
- package/entries/svz-weare/captures/2/strip.webp +0 -0
- package/entries/svz-weare/entry.md +147 -0
- package/entries/svz-weare/motion/hero-transition/frame-0.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-1.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-2.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-3.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-4.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-5.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-6.webp +0 -0
- package/entries/svz-weare/motion/hero-transition/frame-7.webp +0 -0
- package/entries/svz-weare/strip.webp +0 -0
- package/entries/thoughtlab/captures/2/measure.json +93 -0
- package/entries/thoughtlab/captures/2/strip.webp +0 -0
- package/entries/thoughtlab/entry.md +62 -0
- package/entries/thoughtlab/strip.webp +0 -0
- package/entries/ventriloc/entry.md +54 -0
- package/entries/ventriloc/strip.webp +0 -0
- package/entries/vivid-and-co/entry.md +58 -0
- package/entries/vivid-and-co/strip.webp +0 -0
- package/package.json +24 -5
- package/src/cli/add.mjs +100 -24
- package/src/cli/motion.mjs +168 -0
- package/src/cli/refresh.mjs +6 -0
- package/src/cli/ui.mjs +2 -1
- package/src/entry.mjs +14 -1
- package/src/index/build.mjs +9 -3
- package/src/index/embed.mjs +1 -1
- package/src/ingest/agreement.mjs +33 -0
- package/src/ingest/attach.mjs +67 -0
- package/src/ingest/draft.mjs +5 -2
- package/src/ingest/frames.mjs +20 -6
- package/src/ingest/measure.mjs +34 -1
- package/src/ingest/observed.mjs +29 -0
- package/src/mcp/http.mjs +1 -1
- package/src/mcp/instructions.mjs +2 -1
- package/src/mcp/prompts.mjs +12 -1
- package/src/mcp/resources.mjs +14 -0
- package/src/mcp/tools.mjs +48 -5
- package/src/motion.mjs +94 -0
- package/src/ui/build.mjs +83 -7
- package/src/ui/serve.mjs +29 -4
- package/src/ui/templates/entry.html +9 -1
- package/entries/ais-community-dark-depth/strip.png +0 -0
- package/tests/README.md +0 -33
- package/tests/checks/cli-check.sh +0 -13
- package/tests/checks/docker.sh +0 -10
- package/tests/checks/entry-detail.sh +0 -52
- package/tests/checks/entry.sh +0 -55
- package/tests/checks/export.sh +0 -16
- package/tests/checks/fetch-on-start.sh +0 -26
- package/tests/checks/frames-dense.sh +0 -27
- package/tests/checks/http.sh +0 -22
- package/tests/checks/hygiene.sh +0 -29
- package/tests/checks/inbox.sh +0 -27
- package/tests/checks/index-degrade.sh +0 -32
- package/tests/checks/index.sh +0 -36
- package/tests/checks/ingest-mp4.sh +0 -47
- package/tests/checks/ingest.sh +0 -39
- package/tests/checks/instructions.sh +0 -31
- package/tests/checks/licence-gate.sh +0 -24
- package/tests/checks/mcp-stdout.sh +0 -31
- package/tests/checks/measure.sh +0 -79
- package/tests/checks/minors.sh +0 -84
- package/tests/checks/optional-deps.sh +0 -55
- package/tests/checks/prompt-add-entry.sh +0 -28
- package/tests/checks/recommend.sh +0 -107
- package/tests/checks/resources.sh +0 -47
- package/tests/checks/rrf.sh +0 -120
- package/tests/checks/seed-sync.sh +0 -22
- package/tests/checks/similar.sh +0 -62
- package/tests/checks/ui-build.sh +0 -59
- package/tests/checks/vocab.sh +0 -30
- package/tests/fixtures/entry-ok/entry.md +0 -41
- package/tests/fixtures/entry-ok/strip.png +0 -0
- package/tests/fixtures/page/index.html +0 -47
- package/tests/fixtures/three-frame.webp +0 -0
- package/tests/run.sh +0 -16
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
{
|
|
2
|
+
"url": "https://dock.us/",
|
|
3
|
+
"at": "2026-09-16",
|
|
4
|
+
"viewport": [
|
|
5
|
+
1440,
|
|
6
|
+
390
|
|
7
|
+
],
|
|
8
|
+
"tokens": {
|
|
9
|
+
"canvas": "#ffffff",
|
|
10
|
+
"ink": "#121722",
|
|
11
|
+
"accent": "#0068f9",
|
|
12
|
+
"fontDisplay": "Roobert, sans-serif",
|
|
13
|
+
"fontBody": "Roobert, sans-serif"
|
|
14
|
+
},
|
|
15
|
+
"sections": [
|
|
16
|
+
{
|
|
17
|
+
"index": 0,
|
|
18
|
+
"tag": "header",
|
|
19
|
+
"id": "",
|
|
20
|
+
"class": "nav--bound",
|
|
21
|
+
"top": 70,
|
|
22
|
+
"height": 0,
|
|
23
|
+
"animations": []
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"index": 1,
|
|
27
|
+
"tag": "section",
|
|
28
|
+
"id": "",
|
|
29
|
+
"class": "section-10",
|
|
30
|
+
"top": 70,
|
|
31
|
+
"height": 850,
|
|
32
|
+
"animations": [
|
|
33
|
+
{
|
|
34
|
+
"target": "span.deal-cur deal-cur--cfo is-click",
|
|
35
|
+
"timeline": "document",
|
|
36
|
+
"range": null,
|
|
37
|
+
"duration": 650
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"target": "span.deal-cur deal-cur--cfo is-click",
|
|
41
|
+
"timeline": "document",
|
|
42
|
+
"range": null,
|
|
43
|
+
"duration": 650
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"target": "span.deal-cur deal-cur--ceo is-on",
|
|
47
|
+
"timeline": "document",
|
|
48
|
+
"range": null,
|
|
49
|
+
"duration": 720
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"target": "div.slack-note slack-in",
|
|
53
|
+
"timeline": "document",
|
|
54
|
+
"range": null,
|
|
55
|
+
"duration": 320
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"index": 2,
|
|
61
|
+
"tag": "section",
|
|
62
|
+
"id": "",
|
|
63
|
+
"class": "_w-full header--bg hide",
|
|
64
|
+
"top": 0,
|
|
65
|
+
"height": 0,
|
|
66
|
+
"animations": []
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"index": 3,
|
|
70
|
+
"tag": "section",
|
|
71
|
+
"id": "",
|
|
72
|
+
"class": "_w-container s-cs--wrapper",
|
|
73
|
+
"top": 960,
|
|
74
|
+
"height": 589,
|
|
75
|
+
"animations": []
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"index": 4,
|
|
79
|
+
"tag": "section",
|
|
80
|
+
"id": "",
|
|
81
|
+
"class": "_w-container",
|
|
82
|
+
"top": 1629,
|
|
83
|
+
"height": 3266,
|
|
84
|
+
"animations": [
|
|
85
|
+
{
|
|
86
|
+
"target": "div.tabs--tab",
|
|
87
|
+
"timeline": "document",
|
|
88
|
+
"range": null,
|
|
89
|
+
"duration": 300
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"target": "div.tabs--tab is--active",
|
|
93
|
+
"timeline": "document",
|
|
94
|
+
"range": null,
|
|
95
|
+
"duration": 300
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"target": "div.feature--documents--sidebar--item",
|
|
99
|
+
"timeline": "document",
|
|
100
|
+
"range": null,
|
|
101
|
+
"duration": 300
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"target": "div.feature--documents--sidebar--item is--active",
|
|
105
|
+
"timeline": "document",
|
|
106
|
+
"range": null,
|
|
107
|
+
"duration": 300
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"target": "svg.[object SVGAnimatedString]",
|
|
111
|
+
"timeline": "document",
|
|
112
|
+
"range": null,
|
|
113
|
+
"duration": 2500
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"target": "div.flicker",
|
|
117
|
+
"timeline": "document",
|
|
118
|
+
"range": null,
|
|
119
|
+
"duration": 1000
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"target": "div.progress--bar--indicator",
|
|
123
|
+
"timeline": "document",
|
|
124
|
+
"range": null,
|
|
125
|
+
"duration": 5000
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"index": 5,
|
|
131
|
+
"tag": "section",
|
|
132
|
+
"id": "",
|
|
133
|
+
"class": "_w-container s-playbook--wrapper",
|
|
134
|
+
"top": 4965,
|
|
135
|
+
"height": 829,
|
|
136
|
+
"animations": []
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"index": 6,
|
|
140
|
+
"tag": "section",
|
|
141
|
+
"id": "",
|
|
142
|
+
"class": "_w-container s-playbook--wrapper",
|
|
143
|
+
"top": 5944,
|
|
144
|
+
"height": 700,
|
|
145
|
+
"animations": []
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"index": 7,
|
|
149
|
+
"tag": "section",
|
|
150
|
+
"id": "",
|
|
151
|
+
"class": "_w-container s-pipeline--wrapper",
|
|
152
|
+
"top": 6724,
|
|
153
|
+
"height": 885,
|
|
154
|
+
"animations": []
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
"index": 8,
|
|
158
|
+
"tag": "section",
|
|
159
|
+
"id": "",
|
|
160
|
+
"class": "_w-container s-integrations--wrapper",
|
|
161
|
+
"top": 9920,
|
|
162
|
+
"height": 793,
|
|
163
|
+
"animations": []
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"index": 9,
|
|
167
|
+
"tag": "section",
|
|
168
|
+
"id": "",
|
|
169
|
+
"class": "_w-container s-security--wrapper",
|
|
170
|
+
"top": 10863,
|
|
171
|
+
"height": 740,
|
|
172
|
+
"animations": []
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"index": 10,
|
|
176
|
+
"tag": "section",
|
|
177
|
+
"id": "",
|
|
178
|
+
"class": "_w-container s-get_started--wrapper",
|
|
179
|
+
"top": 11683,
|
|
180
|
+
"height": 553,
|
|
181
|
+
"animations": []
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"index": 11,
|
|
185
|
+
"tag": "section",
|
|
186
|
+
"id": "",
|
|
187
|
+
"class": "_w-container c-call_to_action",
|
|
188
|
+
"top": 12316,
|
|
189
|
+
"height": 482,
|
|
190
|
+
"animations": []
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"index": 12,
|
|
194
|
+
"tag": "section",
|
|
195
|
+
"id": "",
|
|
196
|
+
"class": "_w-container c-footer",
|
|
197
|
+
"top": 12878,
|
|
198
|
+
"height": 334,
|
|
199
|
+
"animations": []
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"screenshots": {
|
|
203
|
+
"390": "screen-390.png",
|
|
204
|
+
"1440": "screen-1440.png"
|
|
205
|
+
}
|
|
206
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: dock
|
|
3
|
+
title: 'Dock: revenue enablement platform'
|
|
4
|
+
tier: inspiration
|
|
5
|
+
source:
|
|
6
|
+
kind: public-site
|
|
7
|
+
url: https://dock.us/
|
|
8
|
+
license: Captured from a Refero-hosted recording and the live site; description only, no redistribution of the source.
|
|
9
|
+
captured:
|
|
10
|
+
method: both
|
|
11
|
+
at: '2026-09-16'
|
|
12
|
+
tool: wp-design-library@0.4.0
|
|
13
|
+
captures:
|
|
14
|
+
- method: frames
|
|
15
|
+
input: /tmp/dock-refero.mp4
|
|
16
|
+
artifacts:
|
|
17
|
+
- strip.webp
|
|
18
|
+
frames: 36
|
|
19
|
+
duration_ms: 21750
|
|
20
|
+
- method: both
|
|
21
|
+
input: https://dock.us/
|
|
22
|
+
artifacts:
|
|
23
|
+
- captures/2/strip.webp
|
|
24
|
+
- captures/2/measure.json
|
|
25
|
+
- captures/2/screen-1440.png
|
|
26
|
+
- captures/2/screen-390.png
|
|
27
|
+
media:
|
|
28
|
+
frames: 36
|
|
29
|
+
duration_ms: 21750
|
|
30
|
+
roles: [hero, capability, proof, feature]
|
|
31
|
+
feel: [light, saas, premium, depth, cold]
|
|
32
|
+
palette:
|
|
33
|
+
canvas: '#ffffff'
|
|
34
|
+
ink: '#121722'
|
|
35
|
+
accent: '#0068f9'
|
|
36
|
+
type:
|
|
37
|
+
display: Roobert, sans-serif
|
|
38
|
+
body: Roobert, sans-serif
|
|
39
|
+
motion:
|
|
40
|
+
devices: [reveal, pan]
|
|
41
|
+
notes: Eyeballed from 36 sampled frames, not measured. The hero introduces a deal-room interface, then the recording pans through success criteria, next steps, and collaborative message states. Individual interactions are not visible.
|
|
42
|
+
ported_from: null
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What it does
|
|
46
|
+
|
|
47
|
+
Dock presents a revenue-enablement workspace for buyers and sellers to collaborate around a deal.
|
|
48
|
+
|
|
49
|
+
## Section roster
|
|
50
|
+
|
|
51
|
+
1. Hero with the revenue-enablement promise and an active deal room.
|
|
52
|
+
2. Success criteria and next-step interface view.
|
|
53
|
+
3. Customer outcomes and proof metrics.
|
|
54
|
+
4. Collaborative message and content views.
|
|
55
|
+
|
|
56
|
+
## Why it works
|
|
57
|
+
|
|
58
|
+
The page moves from a simple value statement into a specific shared workspace, so the product is understandable before the proof metrics appear. The very light visual system makes the blue edge treatment do much of the brand work.
|
|
59
|
+
|
|
60
|
+
## Sources
|
|
61
|
+
|
|
62
|
+
The Refero MP4 supplies the sampled motion sequence. The live capture at https://dock.us/ supplies the current site URL and layout reference.
|
|
Binary file
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"url": "https://dub.co/",
|
|
3
|
+
"at": "2026-09-16",
|
|
4
|
+
"viewport": [
|
|
5
|
+
1440,
|
|
6
|
+
390
|
|
7
|
+
],
|
|
8
|
+
"tokens": {
|
|
9
|
+
"canvas": "#fafafa",
|
|
10
|
+
"ink": "#0a0a0a",
|
|
11
|
+
"accent": "#737373",
|
|
12
|
+
"fontDisplay": "satoshi, \"satoshi Fallback\", system-ui, sans-serif",
|
|
13
|
+
"fontBody": "Inter, \"Inter Fallback\", system-ui, sans-serif"
|
|
14
|
+
},
|
|
15
|
+
"sections": [
|
|
16
|
+
{
|
|
17
|
+
"index": 0,
|
|
18
|
+
"tag": "footer",
|
|
19
|
+
"id": "",
|
|
20
|
+
"class": "",
|
|
21
|
+
"top": 11719,
|
|
22
|
+
"height": 402,
|
|
23
|
+
"animations": [
|
|
24
|
+
{
|
|
25
|
+
"target": "div.absolute inset-0 m-auto size-2 animate-ping items-center justify-center rounded-full group-hover:animate-none bg-green-500",
|
|
26
|
+
"timeline": "document",
|
|
27
|
+
"range": null,
|
|
28
|
+
"duration": 1000
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
"screenshots": {
|
|
34
|
+
"390": "screen-390.png",
|
|
35
|
+
"1440": "screen-1440.png"
|
|
36
|
+
}
|
|
37
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: dub
|
|
3
|
+
title: 'Dub: affiliate management platform'
|
|
4
|
+
tier: inspiration
|
|
5
|
+
source:
|
|
6
|
+
kind: public-site
|
|
7
|
+
url: https://dub.co/
|
|
8
|
+
license: Captured from a Refero-hosted recording and the live site; description only, no redistribution of the source.
|
|
9
|
+
captured:
|
|
10
|
+
method: both
|
|
11
|
+
at: '2026-09-16'
|
|
12
|
+
tool: wp-design-library@0.4.0
|
|
13
|
+
captures:
|
|
14
|
+
- method: frames
|
|
15
|
+
input: /tmp/dub-refero.mp4
|
|
16
|
+
artifacts:
|
|
17
|
+
- strip.webp
|
|
18
|
+
frames: 36
|
|
19
|
+
duration_ms: 40983
|
|
20
|
+
- method: both
|
|
21
|
+
input: https://dub.co/
|
|
22
|
+
artifacts:
|
|
23
|
+
- captures/2/strip.webp
|
|
24
|
+
- captures/2/measure.json
|
|
25
|
+
- captures/2/screen-1440.png
|
|
26
|
+
- captures/2/screen-390.png
|
|
27
|
+
media:
|
|
28
|
+
frames: 36
|
|
29
|
+
duration_ms: 40983
|
|
30
|
+
roles: [hero, feature, proof]
|
|
31
|
+
feel: [light, saas, minimal, cold, depth]
|
|
32
|
+
palette:
|
|
33
|
+
canvas: '#fafafa'
|
|
34
|
+
ink: '#0a0a0a'
|
|
35
|
+
accent: '#737373'
|
|
36
|
+
type:
|
|
37
|
+
display: satoshi, "satoshi Fallback", system-ui, sans-serif
|
|
38
|
+
body: Inter, "Inter Fallback", system-ui, sans-serif
|
|
39
|
+
motion:
|
|
40
|
+
devices: [reveal, pan]
|
|
41
|
+
notes: Eyeballed from 36 sampled frames, not measured. The partner-program dashboard enters as a central product scene, then the recording changes through overview and payout states while the surrounding hero stays sparse; individual interface triggers are not visible.
|
|
42
|
+
ported_from: null
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What it does
|
|
46
|
+
|
|
47
|
+
Dub presents a platform for affiliate programs, conversion analytics, and short links.
|
|
48
|
+
|
|
49
|
+
## Section roster
|
|
50
|
+
|
|
51
|
+
1. Product-led hero with a central partner-program dashboard.
|
|
52
|
+
2. Overview and payout interface states.
|
|
53
|
+
3. Customer-logo proof field.
|
|
54
|
+
|
|
55
|
+
## Why it works
|
|
56
|
+
|
|
57
|
+
The generous near-white surface puts all attention on the product screen, making a complex administrative interface feel calm and credible. Its sparse composition offers little narrative context until the interface changes.
|
|
58
|
+
|
|
59
|
+
## Sources
|
|
60
|
+
|
|
61
|
+
The Refero MP4 supplies the sampled motion sequence. The live capture at https://dub.co/ supplies the current site URL and layout reference.
|
|
Binary file
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
{
|
|
2
|
+
"url": "https://duolingo.com/",
|
|
3
|
+
"at": "2026-09-16",
|
|
4
|
+
"viewport": [
|
|
5
|
+
1440,
|
|
6
|
+
390
|
|
7
|
+
],
|
|
8
|
+
"tokens": {
|
|
9
|
+
"canvas": "#ffffff",
|
|
10
|
+
"ink": "#3c3c3c",
|
|
11
|
+
"accent": "#a5ed6e",
|
|
12
|
+
"fontDisplay": "duolingo-sans, sans-serif",
|
|
13
|
+
"fontBody": "duolingo-sans, sans-serif"
|
|
14
|
+
},
|
|
15
|
+
"sections": [
|
|
16
|
+
{
|
|
17
|
+
"index": 0,
|
|
18
|
+
"tag": "header",
|
|
19
|
+
"id": "",
|
|
20
|
+
"class": "_39290",
|
|
21
|
+
"top": 0,
|
|
22
|
+
"height": 900,
|
|
23
|
+
"animations": []
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"index": 1,
|
|
27
|
+
"tag": "div",
|
|
28
|
+
"id": "",
|
|
29
|
+
"class": "_2huhH",
|
|
30
|
+
"top": 900,
|
|
31
|
+
"height": 3601,
|
|
32
|
+
"animations": []
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"index": 2,
|
|
36
|
+
"tag": "section",
|
|
37
|
+
"id": "",
|
|
38
|
+
"class": "uU0-M",
|
|
39
|
+
"top": 900,
|
|
40
|
+
"height": 2312,
|
|
41
|
+
"animations": []
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"index": 3,
|
|
45
|
+
"tag": "section",
|
|
46
|
+
"id": "",
|
|
47
|
+
"class": "_3k9io",
|
|
48
|
+
"top": 996,
|
|
49
|
+
"height": 530,
|
|
50
|
+
"animations": []
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"index": 4,
|
|
54
|
+
"tag": "section",
|
|
55
|
+
"id": "",
|
|
56
|
+
"class": "_36L7f _3k9io",
|
|
57
|
+
"top": 1526,
|
|
58
|
+
"height": 530,
|
|
59
|
+
"animations": []
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"index": 5,
|
|
63
|
+
"tag": "section",
|
|
64
|
+
"id": "",
|
|
65
|
+
"class": "_3k9io",
|
|
66
|
+
"top": 2056,
|
|
67
|
+
"height": 530,
|
|
68
|
+
"animations": []
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"index": 6,
|
|
72
|
+
"tag": "section",
|
|
73
|
+
"id": "",
|
|
74
|
+
"class": "_36L7f _3k9io",
|
|
75
|
+
"top": 2586,
|
|
76
|
+
"height": 530,
|
|
77
|
+
"animations": []
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"index": 7,
|
|
81
|
+
"tag": "section",
|
|
82
|
+
"id": "",
|
|
83
|
+
"class": "Gijhh",
|
|
84
|
+
"top": 3212,
|
|
85
|
+
"height": 1289,
|
|
86
|
+
"animations": []
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"index": 8,
|
|
90
|
+
"tag": "section",
|
|
91
|
+
"id": "",
|
|
92
|
+
"class": "LlPOq",
|
|
93
|
+
"top": 4501,
|
|
94
|
+
"height": 900,
|
|
95
|
+
"animations": []
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"index": 9,
|
|
99
|
+
"tag": "section",
|
|
100
|
+
"id": "",
|
|
101
|
+
"class": "_3dG3I",
|
|
102
|
+
"top": 5401,
|
|
103
|
+
"height": 722,
|
|
104
|
+
"animations": []
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"index": 10,
|
|
108
|
+
"tag": "section",
|
|
109
|
+
"id": "",
|
|
110
|
+
"class": "_3k9io",
|
|
111
|
+
"top": 5497,
|
|
112
|
+
"height": 530,
|
|
113
|
+
"animations": []
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"index": 11,
|
|
117
|
+
"tag": "section",
|
|
118
|
+
"id": "",
|
|
119
|
+
"class": "F71XF",
|
|
120
|
+
"top": 6123,
|
|
121
|
+
"height": 853,
|
|
122
|
+
"animations": []
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"index": 12,
|
|
126
|
+
"tag": "footer",
|
|
127
|
+
"id": "",
|
|
128
|
+
"class": "_1nNuk",
|
|
129
|
+
"top": 6976,
|
|
130
|
+
"height": 827,
|
|
131
|
+
"animations": []
|
|
132
|
+
}
|
|
133
|
+
],
|
|
134
|
+
"screenshots": {
|
|
135
|
+
"390": "screen-390.png",
|
|
136
|
+
"1440": "screen-1440.png"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: duolingo
|
|
3
|
+
title: 'Duolingo: playful language-learning landing'
|
|
4
|
+
tier: inspiration
|
|
5
|
+
source:
|
|
6
|
+
kind: public-site
|
|
7
|
+
url: https://duolingo.com/
|
|
8
|
+
license: Captured from a Refero-hosted recording and the live site; description only, no redistribution of the source.
|
|
9
|
+
captured:
|
|
10
|
+
method: both
|
|
11
|
+
at: '2026-09-16'
|
|
12
|
+
tool: wp-design-library@0.4.0
|
|
13
|
+
captures:
|
|
14
|
+
- method: frames
|
|
15
|
+
input: /tmp/duolingo-refero.mp4
|
|
16
|
+
artifacts:
|
|
17
|
+
- strip.webp
|
|
18
|
+
frames: 36
|
|
19
|
+
duration_ms: 37617
|
|
20
|
+
- method: both
|
|
21
|
+
input: https://duolingo.com/
|
|
22
|
+
artifacts:
|
|
23
|
+
- captures/2/strip.webp
|
|
24
|
+
- captures/2/measure.json
|
|
25
|
+
- captures/2/screen-1440.png
|
|
26
|
+
- captures/2/screen-390.png
|
|
27
|
+
media:
|
|
28
|
+
frames: 36
|
|
29
|
+
duration_ms: 37617
|
|
30
|
+
roles: [hero, explainer, capability, feature, offer, closing, footer]
|
|
31
|
+
feel: [light, playful, minimal, warm]
|
|
32
|
+
palette:
|
|
33
|
+
canvas: '#ffffff'
|
|
34
|
+
ink: '#3c3c3c'
|
|
35
|
+
accent: '#a5ed6e'
|
|
36
|
+
type:
|
|
37
|
+
display: duolingo-sans, sans-serif
|
|
38
|
+
body: duolingo-sans, sans-serif
|
|
39
|
+
motion:
|
|
40
|
+
devices: [reveal, pan, drift, stagger]
|
|
41
|
+
notes: 'The Refero recording moves in distinct illustrated chapters: character groups and phones enter as a composition, the light-blue app chapter expands around floating icons and devices, and the deep-indigo Super Duolingo panel resets the pace before the closing offer. Objects appear to drift at different speeds while copy and illustration arrive as staged groups. The live capture confirms the same chapter sequence and composition, but no CSS animation inventory or interaction trigger was exposed.'
|
|
42
|
+
ported_from: null
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## What it does
|
|
46
|
+
|
|
47
|
+
Duolingo introduces language learning through a bright, illustration-led product story. It pairs simple benefits with expressive characters, small device scenes, a premium-plan interruption, test and school offers, then a large green conversion close.
|
|
48
|
+
|
|
49
|
+
## Section roster
|
|
50
|
+
|
|
51
|
+
1. Minimal header, language selector, and a hero with a character cluster, short promise, and two actions.
|
|
52
|
+
2. “Free. fun. effective.” overview with a phone and progress illustration.
|
|
53
|
+
3. Science, motivation, and personalized-learning chapters, each paired with a distinct character vignette.
|
|
54
|
+
4. Pale-blue “learn anytime, anywhere” app/download scene with phones and floating icons.
|
|
55
|
+
5. Deep-indigo Super Duolingo offer break.
|
|
56
|
+
6. English-test, schools, and ABC product offers.
|
|
57
|
+
7. Large green language-learning close and an extensive multi-column footer.
|
|
58
|
+
|
|
59
|
+
## Why it works
|
|
60
|
+
|
|
61
|
+
The page makes an education product feel low-pressure by keeping each idea to a short, friendly headline and one memorable illustration. White space gives the saturated green room to work as the action color, while the pale-blue and indigo chapters make the long page easy to navigate. The repeated mascot world gives many product offers one coherent voice.
|
|
62
|
+
|
|
63
|
+
## Sources
|
|
64
|
+
|
|
65
|
+
The Refero Styles page supplied the 37.62-second MP4 at https://images.refero.design/styles/refero.design/video/b8a0d888-eae3-45f1-9ef1-dc4e56c66aef.mp4. It provides the longer illustrated sequence, chapter hand-offs, and Super Duolingo treatment. The live capture at https://duolingo.com/ records the current desktop and mobile layouts, measured Duolingo Sans stack and color tokens, plus the current navigation and footer. Both sources show the same core marketing structure.
|
|
Binary file
|