@struq/skill 0.4.3 → 0.5.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 +1 -1
- package/package.json +2 -2
- package/skills/struq/SKILL.md +145 -89
- package/skills/struq/blocks/CATALOG.md +74 -22
- package/skills/struq/blocks/backgrounds/background-aurora.tsx +34 -12
- package/skills/struq/blocks/backgrounds/background-facets.tsx +14 -6
- package/skills/struq/blocks/backgrounds/background-silk.tsx +40 -15
- package/skills/struq/blocks/catalog.json +697 -16
- package/skills/struq/blocks/film.json +426 -0
- package/skills/struq/blocks/footers/footer-contact.tsx +81 -55
- package/skills/struq/blocks/footers/footer-reveal.tsx +1 -1
- package/skills/struq/blocks/headers/header-bar.tsx +24 -13
- package/skills/struq/blocks/headers/menu-curtain.tsx +24 -11
- package/skills/struq/blocks/heroes/hero-framed.tsx +33 -20
- package/skills/struq/blocks/heroes/hero-index.tsx +32 -11
- package/skills/struq/blocks/heroes/hero-poster.tsx +68 -35
- package/skills/struq/blocks/heroes/hero-split.tsx +22 -9
- package/skills/struq/blocks/heroes/hero-still.tsx +80 -74
- package/skills/struq/blocks/kit/accent.ts +82 -0
- package/skills/struq/blocks/kit/blocks.css +78 -35
- package/skills/struq/blocks/kit/quiet/Close.tsx +73 -0
- package/skills/struq/blocks/kit/quiet/PhotoText.tsx +79 -0
- package/skills/struq/blocks/kit/quiet/Rows.tsx +81 -0
- package/skills/struq/blocks/kit/quiet/Statement.tsx +157 -0
- package/skills/struq/blocks/kit/quiet/index.ts +7 -0
- package/skills/struq/blocks/kit/quiet/sheet.ts +12 -0
- package/skills/struq/blocks/page-transitions/page-transition-gate.tsx +87 -36
- package/skills/struq/blocks/preloaders/preloader-gate.tsx +116 -46
- package/skills/struq/blocks/preloaders/preloader-stack.tsx +10 -7
- package/skills/struq/blocks/sections/contact-form.tsx +1 -1
- package/skills/struq/blocks/sections/cta-closing.tsx +3 -2
- package/skills/struq/blocks/sections/fanned-cards.tsx +14 -10
- package/skills/struq/blocks/sections/film-strip.tsx +18 -14
- package/skills/struq/blocks/sections/grid-assembly.tsx +16 -11
- package/skills/struq/blocks/sections/manifesto.tsx +3 -2
- package/skills/struq/blocks/sections/panel-accordion.tsx +3 -2
- package/skills/struq/blocks/sections/split-pair.tsx +4 -3
- package/skills/struq/blocks/showpieces/hero-opener.tsx +76 -17
- package/skills/struq/blocks/showpieces/wordmark-finale.tsx +3 -1
- package/skills/struq/blocks/transitions/zoom-through.tsx +9 -10
- package/skills/struq/canon/canon.json +1 -1
- package/skills/struq/references/craft.md +4 -0
- package/skills/struq/references/film.md +158 -0
- package/skills/struq/references/triage.md +3 -0
- package/skills/struq/scripts/blocks.mjs +89 -7
- package/skills/struq/scripts/canon.mjs +8 -1
- package/skills/struq/scripts/check.mjs +94 -11
- package/skills/struq/scripts/film-check.mjs +997 -0
- package/skills/struq/scripts/gate.mjs +146 -0
- package/skills/struq/scripts/packs.mjs +73 -12
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"source": {
|
|
3
3
|
"repo": "Struq blocks/",
|
|
4
4
|
"ref": "origin/main",
|
|
5
|
-
"commit": "
|
|
5
|
+
"commit": "95e54a2"
|
|
6
6
|
},
|
|
7
7
|
"blocks": [
|
|
8
8
|
{
|
|
@@ -28,6 +28,24 @@
|
|
|
28
28
|
"does": "The cover lifts while the name shrinks and travels into the header's wordmark, which takes over in the same frame."
|
|
29
29
|
}
|
|
30
30
|
],
|
|
31
|
+
"role": "frame",
|
|
32
|
+
"home": "curtain",
|
|
33
|
+
"motif": "word",
|
|
34
|
+
"metaphor": null,
|
|
35
|
+
"energy": 2,
|
|
36
|
+
"pins": false,
|
|
37
|
+
"scroll": 0,
|
|
38
|
+
"fullBleed": false,
|
|
39
|
+
"interactions": [],
|
|
40
|
+
"clockProp": null,
|
|
41
|
+
"byVariant": {
|
|
42
|
+
"drop": {
|
|
43
|
+
"home": "cut"
|
|
44
|
+
},
|
|
45
|
+
"settle": {
|
|
46
|
+
"home": "weight"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
31
49
|
"packages": [
|
|
32
50
|
"@gsap/react",
|
|
33
51
|
"gsap"
|
|
@@ -47,9 +65,22 @@
|
|
|
47
65
|
"slug": "preloader-stack",
|
|
48
66
|
"kind": "preloader",
|
|
49
67
|
"title": "Preloader: the stack",
|
|
50
|
-
"does": "The first paint is the page's ground with the client's name, a quiet count and the first print in a small portrait frame; five or six prints cut inside that frame, each held shorter than the last, ending on the hero's own photo, and the frame then grows to the hero image's exact place and crop (the page marks it data-stack-target) so the cover becomes the hero with no seam, within 2.4 seconds of the first paint, once per session
|
|
68
|
+
"does": "The first paint is the page's ground with the client's name, a quiet count and the first print in a small portrait frame; five or six prints cut inside that frame, each held shorter than the last, ending on the hero's own photo, and the frame then grows to the hero image's exact place and crop (the page marks it data-stack-target) so the cover becomes the hero with no seam, within 2.4 seconds of the first paint, once per session.",
|
|
51
69
|
"reference": "Kinetic Studio and Lowlight for pacing and the counter (v4vision/projects/kinetic-studio/index.html, Opus55/build/template.html); the grow follows image-to-fullbleed's numeric clip.",
|
|
52
70
|
"variants": [],
|
|
71
|
+
"role": "frame",
|
|
72
|
+
"home": "weight",
|
|
73
|
+
"motif": "frame",
|
|
74
|
+
"metaphor": null,
|
|
75
|
+
"energy": 2,
|
|
76
|
+
"pins": false,
|
|
77
|
+
"scroll": 0,
|
|
78
|
+
"fullBleed": false,
|
|
79
|
+
"interactions": [
|
|
80
|
+
"counter"
|
|
81
|
+
],
|
|
82
|
+
"clockProp": null,
|
|
83
|
+
"byVariant": {},
|
|
53
84
|
"packages": [
|
|
54
85
|
"@gsap/react",
|
|
55
86
|
"gsap"
|
|
@@ -70,9 +101,22 @@
|
|
|
70
101
|
"slug": "preloader-slices",
|
|
71
102
|
"kind": "preloader",
|
|
72
103
|
"title": "Preloader: the slices",
|
|
73
|
-
"does": "The first paint is a dark cover cut into four vertical slices (three on phones), already composed: the client's name large, a caption, a hairline and the count at 000; the count runs to 100 in one move, then the slices drop away left to right, each carrying its strip of the name and count down and off behind a 5px accent edge, uncovering the page from the top onto its own entrance, within 2.4 seconds of the first paint, once per session
|
|
104
|
+
"does": "The first paint is a dark cover cut into four vertical slices (three on phones), already composed: the client's name large, a caption, a hairline and the count at 000; the count runs to 100 in one move, then the slices drop away left to right, each carrying its strip of the name and count down and off behind a 5px accent edge, uncovering the page from the top onto its own entrance, within 2.4 seconds of the first paint, once per session.",
|
|
74
105
|
"reference": "Kinetic Studio, the counter preloader whose four slices lift away (v4vision/projects/kinetic-studio/index.html, script near line 879).",
|
|
75
106
|
"variants": [],
|
|
107
|
+
"role": "frame",
|
|
108
|
+
"home": "cut",
|
|
109
|
+
"motif": "cut",
|
|
110
|
+
"metaphor": null,
|
|
111
|
+
"energy": 2,
|
|
112
|
+
"pins": false,
|
|
113
|
+
"scroll": 0,
|
|
114
|
+
"fullBleed": false,
|
|
115
|
+
"interactions": [
|
|
116
|
+
"counter"
|
|
117
|
+
],
|
|
118
|
+
"clockProp": null,
|
|
119
|
+
"byVariant": {},
|
|
76
120
|
"packages": [
|
|
77
121
|
"@gsap/react",
|
|
78
122
|
"gsap"
|
|
@@ -92,9 +136,22 @@
|
|
|
92
136
|
"slug": "preloader-gate",
|
|
93
137
|
"kind": "preloader",
|
|
94
138
|
"title": "Preloader: the gate",
|
|
95
|
-
"does": "The first paint is a shut gate with a
|
|
139
|
+
"does": "The first paint is a shut gate with a hairline ring on its middle line; an accent arc fills the ring on an eased count that waits for the fonts and the hero image (cutting through the client's own marks, one per beat, when given), then the line through the middle lights and the two bars open top and bottom onto the hero, by 2.4 seconds from the first paint, once per session (helper: preloaders/preloader-slices-uncovered.ts).",
|
|
96
140
|
"reference": "Lowlight (Opus55/build/template.html): the leader countdown and the bars that open as a gate onto the hero (CSS line 143, markup line 600, initLoader line 1024).",
|
|
97
141
|
"variants": [],
|
|
142
|
+
"role": "frame",
|
|
143
|
+
"home": "curtain",
|
|
144
|
+
"motif": "aperture",
|
|
145
|
+
"metaphor": null,
|
|
146
|
+
"energy": 2,
|
|
147
|
+
"pins": false,
|
|
148
|
+
"scroll": 0,
|
|
149
|
+
"fullBleed": false,
|
|
150
|
+
"interactions": [
|
|
151
|
+
"counter"
|
|
152
|
+
],
|
|
153
|
+
"clockProp": null,
|
|
154
|
+
"byVariant": {},
|
|
98
155
|
"packages": [
|
|
99
156
|
"@gsap/react",
|
|
100
157
|
"gsap"
|
|
@@ -106,7 +163,8 @@
|
|
|
106
163
|
"files": [
|
|
107
164
|
"kit/blocks.css",
|
|
108
165
|
"kit/gsap.ts",
|
|
109
|
-
"preloaders/preloader-gate.tsx"
|
|
166
|
+
"preloaders/preloader-gate.tsx",
|
|
167
|
+
"preloaders/preloader-slices-uncovered.ts"
|
|
110
168
|
]
|
|
111
169
|
},
|
|
112
170
|
{
|
|
@@ -116,6 +174,17 @@
|
|
|
116
174
|
"does": "On every link click and on back and forward, a small portrait print of the destination's own hero photo appears where the pointer is (centred for keys and history) and grows to fill the screen while the route loads under it, then settles into the new page's hero at its exact place and crop, so arriving is the preloader's own landing, under 0.9 seconds door to door; a print not decoded in time becomes the destination's name on the page ground and the cover lifts away instead (helper: preloaders/preloader-slices-uncovered.ts).",
|
|
117
175
|
"reference": "preloader-stack's grow-into-the-hero, run per navigation; the navigation engine is page-transition-slices' (click hold, popstate hold-and-replay, scroll, hash, focus).",
|
|
118
176
|
"variants": [],
|
|
177
|
+
"role": "frame",
|
|
178
|
+
"home": "weight",
|
|
179
|
+
"motif": "frame",
|
|
180
|
+
"metaphor": null,
|
|
181
|
+
"energy": 2,
|
|
182
|
+
"pins": false,
|
|
183
|
+
"scroll": 0,
|
|
184
|
+
"fullBleed": true,
|
|
185
|
+
"interactions": [],
|
|
186
|
+
"clockProp": null,
|
|
187
|
+
"byVariant": {},
|
|
119
188
|
"packages": [
|
|
120
189
|
"@gsap/react",
|
|
121
190
|
"gsap",
|
|
@@ -140,6 +209,17 @@
|
|
|
140
209
|
"does": "On every link click and on back and forward, the slices of preloader-slices come in from above and close over the page with the destination's name and a running hairline, the route loads under them, and they carry on down and off, uncovering the new page from the top onto its entrance, about 0.65 seconds door to door, with focus, hashes and scroll restored (helper: preloaders/preloader-slices-uncovered.ts).",
|
|
141
210
|
"reference": "Kinetic Studio's slice lift (v4vision/projects/kinetic-studio/index.html, script near line 879), run on navigation.",
|
|
142
211
|
"variants": [],
|
|
212
|
+
"role": "frame",
|
|
213
|
+
"home": "cut",
|
|
214
|
+
"motif": "cut",
|
|
215
|
+
"metaphor": null,
|
|
216
|
+
"energy": 2,
|
|
217
|
+
"pins": false,
|
|
218
|
+
"scroll": 0,
|
|
219
|
+
"fullBleed": false,
|
|
220
|
+
"interactions": [],
|
|
221
|
+
"clockProp": null,
|
|
222
|
+
"byVariant": {},
|
|
143
223
|
"packages": [
|
|
144
224
|
"@gsap/react",
|
|
145
225
|
"gsap",
|
|
@@ -161,9 +241,20 @@
|
|
|
161
241
|
"slug": "page-transition-gate",
|
|
162
242
|
"kind": "page-transition",
|
|
163
243
|
"title": "Page transition: the gate",
|
|
164
|
-
"does": "On every navigation, back button included, the preloader's bars close carrying the two halves of a
|
|
244
|
+
"does": "On every navigation, back button included, the preloader's bars close carrying the two halves of a frame (a hairline ring and the destination's name), lock into one as the line and the ring light, hold while the route changes, then split the name and open onto the finished page, 0.9 seconds door to door (helper: preloaders/preloader-slices-uncovered.ts).",
|
|
165
245
|
"reference": "Lowlight (Opus55/build/template.html): the gate of its loader, carried over to navigation so the site arrives and moves in one voice.",
|
|
166
246
|
"variants": [],
|
|
247
|
+
"role": "frame",
|
|
248
|
+
"home": "curtain",
|
|
249
|
+
"motif": "aperture",
|
|
250
|
+
"metaphor": null,
|
|
251
|
+
"energy": 2,
|
|
252
|
+
"pins": false,
|
|
253
|
+
"scroll": 0,
|
|
254
|
+
"fullBleed": false,
|
|
255
|
+
"interactions": [],
|
|
256
|
+
"clockProp": null,
|
|
257
|
+
"byVariant": {},
|
|
167
258
|
"packages": [
|
|
168
259
|
"@gsap/react",
|
|
169
260
|
"gsap",
|
|
@@ -179,14 +270,15 @@
|
|
|
179
270
|
"kit/SmoothScroll.tsx",
|
|
180
271
|
"kit/blocks.css",
|
|
181
272
|
"kit/gsap.ts",
|
|
182
|
-
"page-transitions/page-transition-gate.tsx"
|
|
273
|
+
"page-transitions/page-transition-gate.tsx",
|
|
274
|
+
"preloaders/preloader-slices-uncovered.ts"
|
|
183
275
|
]
|
|
184
276
|
},
|
|
185
277
|
{
|
|
186
278
|
"slug": "header-bar",
|
|
187
279
|
"kind": "header",
|
|
188
280
|
"title": "Header: the bar",
|
|
189
|
-
"does": "A fixed bar with the wordmark Noord, four links and one quiet text action, its ink changing per pixel at the edges of the sections under it, taking the ground once the page scrolls and keeping the hero's type clear; it hides and returns with the scroll and rolls each label, lands a large hero wordmark in the bar, or carries centred links,
|
|
281
|
+
"does": "A fixed bar with the wordmark Noord, four links and one quiet text action, its ink changing per pixel at the edges of the sections under it, taking the ground once the page scrolls and keeping the hero's type clear; it hides and returns with the scroll and rolls each label, lands a large hero wordmark in the bar, or carries centred links, the studio's place (its live time only with clock) and a progress rule; on phones it collapses to the wordmark and one Menu link.",
|
|
190
282
|
"reference": "Lowlight's header (Opus55/build/template.html: the three-part header grid with its time near line 170, the roll mask near line 131), Kinetic Studio's nav-link underline (kinetic-studio/index.html near line 95), and the menu curtain's ink split on data-bar-tone.",
|
|
191
283
|
"variants": [
|
|
192
284
|
{
|
|
@@ -202,9 +294,34 @@
|
|
|
202
294
|
{
|
|
203
295
|
"id": "split",
|
|
204
296
|
"title": "De gedeelde balk",
|
|
205
|
-
"does": "Wordmark left, links centred with a line gliding under the hovered one,
|
|
297
|
+
"does": "Wordmark left, links centred with a line gliding under the hovered one, the studio's place (its live time only with clock) and the action right, and a thin rule filling with the page's progress."
|
|
206
298
|
}
|
|
207
299
|
],
|
|
300
|
+
"role": "frame",
|
|
301
|
+
"home": null,
|
|
302
|
+
"motif": "neutral",
|
|
303
|
+
"metaphor": null,
|
|
304
|
+
"energy": 1,
|
|
305
|
+
"pins": false,
|
|
306
|
+
"scroll": 0,
|
|
307
|
+
"fullBleed": false,
|
|
308
|
+
"interactions": [
|
|
309
|
+
"hover"
|
|
310
|
+
],
|
|
311
|
+
"clockProp": "clock",
|
|
312
|
+
"byVariant": {
|
|
313
|
+
"settle": {
|
|
314
|
+
"motif": "word",
|
|
315
|
+
"energy": 2
|
|
316
|
+
},
|
|
317
|
+
"split": {
|
|
318
|
+
"motif": "line",
|
|
319
|
+
"interactions": [
|
|
320
|
+
"hover",
|
|
321
|
+
"clock"
|
|
322
|
+
]
|
|
323
|
+
}
|
|
324
|
+
},
|
|
208
325
|
"packages": [
|
|
209
326
|
"@gsap/react",
|
|
210
327
|
"gsap"
|
|
@@ -223,7 +340,7 @@
|
|
|
223
340
|
"slug": "menu-curtain",
|
|
224
341
|
"kind": "header",
|
|
225
342
|
"title": "Menu: the curtain",
|
|
226
|
-
"does": "A minimal bar (wordmark Noord, one button that rolls Menu to Sluiten) whose ink changes exactly at the edge of the section under it, opening a full-screen menu as a curtain in the gate, slices or stack language: five large links rise through masks, the hovered or focused link shows its decoded photo on the calm side, and a foot line carries the contact address and
|
|
343
|
+
"does": "A minimal bar (wordmark Noord, one button that rolls Menu to Sluiten) whose ink changes exactly at the edge of the section under it, opening a full-screen menu as a curtain in the gate, slices or stack language: five large links rise through masks, the hovered or focused link shows its decoded photo on the calm side, and a foot line carries the contact address and the place of the studio (its live local time only with clock); it closes the same way reversed, a close overtaken by an open turns round, and the page under it is held still and inert while it is open.",
|
|
227
344
|
"reference": "Lowlight's menu curtain (Opus55/build/template.html: .menu CSS near line 210, initMenu near line 1606), carried into the gate, slices and stack page transitions, with the bar's ink split exactly at section edges.",
|
|
228
345
|
"variants": [
|
|
229
346
|
{
|
|
@@ -242,6 +359,29 @@
|
|
|
242
359
|
"does": "Three panels grow one after another from the button; a small portrait frame flips through a few prints, then cuts to the hovered link's photo."
|
|
243
360
|
}
|
|
244
361
|
],
|
|
362
|
+
"role": "frame",
|
|
363
|
+
"home": "curtain",
|
|
364
|
+
"motif": "aperture",
|
|
365
|
+
"metaphor": null,
|
|
366
|
+
"energy": 1,
|
|
367
|
+
"pins": false,
|
|
368
|
+
"scroll": 0,
|
|
369
|
+
"fullBleed": false,
|
|
370
|
+
"interactions": [
|
|
371
|
+
"clock",
|
|
372
|
+
"hover"
|
|
373
|
+
],
|
|
374
|
+
"clockProp": "clock",
|
|
375
|
+
"byVariant": {
|
|
376
|
+
"slices": {
|
|
377
|
+
"home": "cut",
|
|
378
|
+
"motif": "cut"
|
|
379
|
+
},
|
|
380
|
+
"stack": {
|
|
381
|
+
"home": "weight",
|
|
382
|
+
"motif": "frame"
|
|
383
|
+
}
|
|
384
|
+
},
|
|
245
385
|
"packages": [
|
|
246
386
|
"@gsap/react",
|
|
247
387
|
"gsap",
|
|
@@ -282,6 +422,21 @@
|
|
|
282
422
|
"does": "A print that nearly fills the screen inside a thin mat; the first scroll steps back to a small portrait at the left with the line on the wall beside it."
|
|
283
423
|
}
|
|
284
424
|
],
|
|
425
|
+
"role": "opening",
|
|
426
|
+
"home": null,
|
|
427
|
+
"motif": "frame",
|
|
428
|
+
"metaphor": "gallery-print",
|
|
429
|
+
"energy": 3,
|
|
430
|
+
"pins": true,
|
|
431
|
+
"scroll": 1.5,
|
|
432
|
+
"fullBleed": true,
|
|
433
|
+
"interactions": [],
|
|
434
|
+
"clockProp": null,
|
|
435
|
+
"byVariant": {
|
|
436
|
+
"passe": {
|
|
437
|
+
"fullBleed": false
|
|
438
|
+
}
|
|
439
|
+
},
|
|
285
440
|
"packages": [
|
|
286
441
|
"@gsap/react",
|
|
287
442
|
"gsap"
|
|
@@ -292,6 +447,7 @@
|
|
|
292
447
|
"file": "heroes/hero-framed.tsx",
|
|
293
448
|
"files": [
|
|
294
449
|
"heroes/hero-framed.tsx",
|
|
450
|
+
"kit/accent.ts",
|
|
295
451
|
"kit/blocks.css",
|
|
296
452
|
"kit/gsap.ts",
|
|
297
453
|
"kit/images.ts",
|
|
@@ -322,6 +478,23 @@
|
|
|
322
478
|
"does": "At rest the ground fills the screen and the photo is a strip at the edge; the first scroll opens it to the split while the headline turns to the photo ink as the edge passes."
|
|
323
479
|
}
|
|
324
480
|
],
|
|
481
|
+
"role": "opening",
|
|
482
|
+
"home": null,
|
|
483
|
+
"motif": "cut",
|
|
484
|
+
"metaphor": null,
|
|
485
|
+
"energy": 1,
|
|
486
|
+
"pins": false,
|
|
487
|
+
"scroll": 0,
|
|
488
|
+
"fullBleed": false,
|
|
489
|
+
"interactions": [],
|
|
490
|
+
"clockProp": null,
|
|
491
|
+
"byVariant": {
|
|
492
|
+
"opening": {
|
|
493
|
+
"energy": 2,
|
|
494
|
+
"pins": true,
|
|
495
|
+
"scroll": 0.9
|
|
496
|
+
}
|
|
497
|
+
},
|
|
325
498
|
"packages": [
|
|
326
499
|
"@gsap/react",
|
|
327
500
|
"gsap"
|
|
@@ -332,6 +505,7 @@
|
|
|
332
505
|
"file": "heroes/hero-split.tsx",
|
|
333
506
|
"files": [
|
|
334
507
|
"heroes/hero-split.tsx",
|
|
508
|
+
"kit/accent.ts",
|
|
335
509
|
"kit/blocks.css",
|
|
336
510
|
"kit/gsap.ts",
|
|
337
511
|
"kit/images.ts",
|
|
@@ -362,6 +536,26 @@
|
|
|
362
536
|
"does": "The list centred over the photograph while the hero holds; each stretch of the first scroll raises the next project and steps its name forward."
|
|
363
537
|
}
|
|
364
538
|
],
|
|
539
|
+
"role": "opening",
|
|
540
|
+
"home": null,
|
|
541
|
+
"motif": "neutral",
|
|
542
|
+
"metaphor": null,
|
|
543
|
+
"energy": 1,
|
|
544
|
+
"pins": false,
|
|
545
|
+
"scroll": 0,
|
|
546
|
+
"fullBleed": false,
|
|
547
|
+
"interactions": [
|
|
548
|
+
"hover"
|
|
549
|
+
],
|
|
550
|
+
"clockProp": null,
|
|
551
|
+
"byVariant": {
|
|
552
|
+
"doorlopen": {
|
|
553
|
+
"energy": 3,
|
|
554
|
+
"pins": true,
|
|
555
|
+
"scroll": 2.4,
|
|
556
|
+
"interactions": []
|
|
557
|
+
}
|
|
558
|
+
},
|
|
365
559
|
"packages": [
|
|
366
560
|
"@gsap/react",
|
|
367
561
|
"gsap"
|
|
@@ -372,6 +566,7 @@
|
|
|
372
566
|
"file": "heroes/hero-index.tsx",
|
|
373
567
|
"files": [
|
|
374
568
|
"heroes/hero-index.tsx",
|
|
569
|
+
"kit/accent.ts",
|
|
375
570
|
"kit/blocks.css",
|
|
376
571
|
"kit/gsap.ts",
|
|
377
572
|
"kit/images.ts",
|
|
@@ -383,7 +578,7 @@
|
|
|
383
578
|
"slug": "hero-still",
|
|
384
579
|
"kind": "hero",
|
|
385
580
|
"title": "Hero: full-bleed still",
|
|
386
|
-
"does": "One photograph with a title in three compositions: full bleed with a slow push-in and the headline on its measured calm side, held in a frame of page ground opening to full bleed by registration on the first scroll, or the headline split across the photo's horizon;
|
|
581
|
+
"does": "One photograph with a title in three compositions: full bleed with a slow push-in and the headline on its measured calm side, held in a frame of page ground opening to full bleed by registration on the first scroll, or the headline split across the photo's horizon; a caption strip with the place, one fact in the client's words (or, with clock, the live time) and one link under all three, and preloaders land on its photo box.",
|
|
387
582
|
"reference": "Lowlight's hero (Opus55/build/template.html, the hero frame and content near lines 240 to 290): a film still with a title and a caption line.",
|
|
388
583
|
"variants": [
|
|
389
584
|
{
|
|
@@ -402,6 +597,30 @@
|
|
|
402
597
|
"does": "The headline split at the photo's horizon, each half in the ink its side measures for, the halves closing on the horizon."
|
|
403
598
|
}
|
|
404
599
|
],
|
|
600
|
+
"role": "opening",
|
|
601
|
+
"home": null,
|
|
602
|
+
"motif": "neutral",
|
|
603
|
+
"metaphor": null,
|
|
604
|
+
"energy": 1,
|
|
605
|
+
"pins": false,
|
|
606
|
+
"scroll": 0,
|
|
607
|
+
"fullBleed": false,
|
|
608
|
+
"interactions": [
|
|
609
|
+
"clock"
|
|
610
|
+
],
|
|
611
|
+
"clockProp": "clock",
|
|
612
|
+
"byVariant": {
|
|
613
|
+
"frame": {
|
|
614
|
+
"motif": "frame",
|
|
615
|
+
"energy": 2,
|
|
616
|
+
"pins": true,
|
|
617
|
+
"scroll": 1,
|
|
618
|
+
"fullBleed": true
|
|
619
|
+
},
|
|
620
|
+
"horizon": {
|
|
621
|
+
"motif": "cut"
|
|
622
|
+
}
|
|
623
|
+
},
|
|
405
624
|
"packages": [
|
|
406
625
|
"@gsap/react",
|
|
407
626
|
"gsap"
|
|
@@ -412,6 +631,7 @@
|
|
|
412
631
|
"file": "heroes/hero-still.tsx",
|
|
413
632
|
"files": [
|
|
414
633
|
"heroes/hero-still.tsx",
|
|
634
|
+
"kit/accent.ts",
|
|
415
635
|
"kit/blocks.css",
|
|
416
636
|
"kit/gsap.ts",
|
|
417
637
|
"kit/images.ts",
|
|
@@ -442,6 +662,17 @@
|
|
|
442
662
|
"does": "One word per row with a window of a different crop between each pair; on scroll the rows part and the crops slide into one photograph."
|
|
443
663
|
}
|
|
444
664
|
],
|
|
665
|
+
"role": "opening",
|
|
666
|
+
"home": null,
|
|
667
|
+
"motif": "aperture",
|
|
668
|
+
"metaphor": null,
|
|
669
|
+
"energy": 3,
|
|
670
|
+
"pins": true,
|
|
671
|
+
"scroll": 1.5,
|
|
672
|
+
"fullBleed": true,
|
|
673
|
+
"interactions": [],
|
|
674
|
+
"clockProp": null,
|
|
675
|
+
"byVariant": {},
|
|
445
676
|
"packages": [
|
|
446
677
|
"@gsap/react",
|
|
447
678
|
"gsap"
|
|
@@ -453,6 +684,7 @@
|
|
|
453
684
|
"files": [
|
|
454
685
|
"heroes/hero-poster.tsx",
|
|
455
686
|
"heroes/hero-still.tsx",
|
|
687
|
+
"kit/accent.ts",
|
|
456
688
|
"kit/blocks.css",
|
|
457
689
|
"kit/gsap.ts",
|
|
458
690
|
"kit/images.ts",
|
|
@@ -483,6 +715,23 @@
|
|
|
483
715
|
"does": "Curtains across the upper half, drifting slowly sideways and bending away from the pointer."
|
|
484
716
|
}
|
|
485
717
|
],
|
|
718
|
+
"role": "opening",
|
|
719
|
+
"home": null,
|
|
720
|
+
"motif": "field",
|
|
721
|
+
"metaphor": null,
|
|
722
|
+
"energy": 2,
|
|
723
|
+
"pins": false,
|
|
724
|
+
"scroll": 0,
|
|
725
|
+
"fullBleed": false,
|
|
726
|
+
"interactions": [],
|
|
727
|
+
"clockProp": null,
|
|
728
|
+
"byVariant": {
|
|
729
|
+
"drift": {
|
|
730
|
+
"interactions": [
|
|
731
|
+
"cursor"
|
|
732
|
+
]
|
|
733
|
+
}
|
|
734
|
+
},
|
|
486
735
|
"packages": [
|
|
487
736
|
"@gsap/react",
|
|
488
737
|
"gsap"
|
|
@@ -493,8 +742,10 @@
|
|
|
493
742
|
"file": "backgrounds/background-aurora.tsx",
|
|
494
743
|
"files": [
|
|
495
744
|
"backgrounds/background-aurora.tsx",
|
|
745
|
+
"kit/accent.ts",
|
|
496
746
|
"kit/blocks.css",
|
|
497
|
-
"kit/gsap.ts"
|
|
747
|
+
"kit/gsap.ts",
|
|
748
|
+
"preloaders/preloader-slices-uncovered.ts"
|
|
498
749
|
]
|
|
499
750
|
},
|
|
500
751
|
{
|
|
@@ -520,6 +771,23 @@
|
|
|
520
771
|
"does": "The cloth hangs from the top edge in rounded pleats down to a wavy hem; scrolling the hero away draws the hem down and stretches the pleats."
|
|
521
772
|
}
|
|
522
773
|
],
|
|
774
|
+
"role": "opening",
|
|
775
|
+
"home": null,
|
|
776
|
+
"motif": "field",
|
|
777
|
+
"metaphor": null,
|
|
778
|
+
"energy": 2,
|
|
779
|
+
"pins": false,
|
|
780
|
+
"scroll": 0,
|
|
781
|
+
"fullBleed": false,
|
|
782
|
+
"interactions": [
|
|
783
|
+
"cursor"
|
|
784
|
+
],
|
|
785
|
+
"clockProp": null,
|
|
786
|
+
"byVariant": {
|
|
787
|
+
"drape": {
|
|
788
|
+
"interactions": []
|
|
789
|
+
}
|
|
790
|
+
},
|
|
523
791
|
"packages": [
|
|
524
792
|
"@gsap/react",
|
|
525
793
|
"gsap"
|
|
@@ -530,8 +798,10 @@
|
|
|
530
798
|
"file": "backgrounds/background-silk.tsx",
|
|
531
799
|
"files": [
|
|
532
800
|
"backgrounds/background-silk.tsx",
|
|
801
|
+
"kit/accent.ts",
|
|
533
802
|
"kit/blocks.css",
|
|
534
|
-
"kit/gsap.ts"
|
|
803
|
+
"kit/gsap.ts",
|
|
804
|
+
"preloaders/preloader-slices-uncovered.ts"
|
|
535
805
|
]
|
|
536
806
|
},
|
|
537
807
|
{
|
|
@@ -557,6 +827,23 @@
|
|
|
557
827
|
"does": "Diagonal pleats in the upper left cut into planes; the light turns across them as the hero scrolls away and leans toward the pointer."
|
|
558
828
|
}
|
|
559
829
|
],
|
|
830
|
+
"role": "opening",
|
|
831
|
+
"home": null,
|
|
832
|
+
"motif": "field",
|
|
833
|
+
"metaphor": null,
|
|
834
|
+
"energy": 2,
|
|
835
|
+
"pins": false,
|
|
836
|
+
"scroll": 0,
|
|
837
|
+
"fullBleed": false,
|
|
838
|
+
"interactions": [],
|
|
839
|
+
"clockProp": null,
|
|
840
|
+
"byVariant": {
|
|
841
|
+
"turn": {
|
|
842
|
+
"interactions": [
|
|
843
|
+
"cursor"
|
|
844
|
+
]
|
|
845
|
+
}
|
|
846
|
+
},
|
|
560
847
|
"packages": [
|
|
561
848
|
"@gsap/react",
|
|
562
849
|
"gsap"
|
|
@@ -567,6 +854,7 @@
|
|
|
567
854
|
"file": "backgrounds/background-facets.tsx",
|
|
568
855
|
"files": [
|
|
569
856
|
"backgrounds/background-facets.tsx",
|
|
857
|
+
"kit/accent.ts",
|
|
570
858
|
"kit/blocks.css",
|
|
571
859
|
"kit/gsap.ts",
|
|
572
860
|
"preloaders/preloader-slices-uncovered.ts"
|
|
@@ -579,6 +867,19 @@
|
|
|
579
867
|
"does": "A full-bleed photo (or the WebGL scene over it) with the display line at 14 to 20vw across it; on scroll it pins, scales down and darkens while the next section slides over.",
|
|
580
868
|
"reference": null,
|
|
581
869
|
"variants": [],
|
|
870
|
+
"role": "opening",
|
|
871
|
+
"home": null,
|
|
872
|
+
"motif": "word",
|
|
873
|
+
"metaphor": null,
|
|
874
|
+
"energy": 2,
|
|
875
|
+
"pins": true,
|
|
876
|
+
"scroll": 1,
|
|
877
|
+
"fullBleed": false,
|
|
878
|
+
"interactions": [
|
|
879
|
+
"magnetic"
|
|
880
|
+
],
|
|
881
|
+
"clockProp": null,
|
|
882
|
+
"byVariant": {},
|
|
582
883
|
"packages": [
|
|
583
884
|
"@gsap/react",
|
|
584
885
|
"@types/three",
|
|
@@ -592,7 +893,7 @@
|
|
|
592
893
|
"files": [
|
|
593
894
|
"kit/HeroCanvas.tsx",
|
|
594
895
|
"kit/MagneticButton.tsx",
|
|
595
|
-
"kit/
|
|
896
|
+
"kit/accent.ts",
|
|
596
897
|
"kit/blocks.css",
|
|
597
898
|
"kit/gsap.ts",
|
|
598
899
|
"kit/images.ts",
|
|
@@ -600,6 +901,7 @@
|
|
|
600
901
|
"kit/scenes/dots.ts",
|
|
601
902
|
"kit/scenes/ripple.ts",
|
|
602
903
|
"kit/scenes/types.ts",
|
|
904
|
+
"preloaders/preloader-slices-uncovered.ts",
|
|
603
905
|
"showpieces/hero-opener.tsx"
|
|
604
906
|
]
|
|
605
907
|
},
|
|
@@ -610,6 +912,17 @@
|
|
|
610
912
|
"does": "A small image between the two halves of a name unclips to the full screen as the words travel off the edges.",
|
|
611
913
|
"reference": null,
|
|
612
914
|
"variants": [],
|
|
915
|
+
"role": "centerpiece",
|
|
916
|
+
"home": null,
|
|
917
|
+
"motif": "frame",
|
|
918
|
+
"metaphor": null,
|
|
919
|
+
"energy": 3,
|
|
920
|
+
"pins": true,
|
|
921
|
+
"scroll": 2.2,
|
|
922
|
+
"fullBleed": true,
|
|
923
|
+
"interactions": [],
|
|
924
|
+
"clockProp": null,
|
|
925
|
+
"byVariant": {},
|
|
613
926
|
"packages": [
|
|
614
927
|
"@gsap/react",
|
|
615
928
|
"gsap"
|
|
@@ -632,6 +945,17 @@
|
|
|
632
945
|
"does": "Two panels carrying one word each slide apart to reveal a photo, and close again.",
|
|
633
946
|
"reference": null,
|
|
634
947
|
"variants": [],
|
|
948
|
+
"role": "centerpiece",
|
|
949
|
+
"home": null,
|
|
950
|
+
"motif": "aperture",
|
|
951
|
+
"metaphor": null,
|
|
952
|
+
"energy": 3,
|
|
953
|
+
"pins": true,
|
|
954
|
+
"scroll": 1.7,
|
|
955
|
+
"fullBleed": true,
|
|
956
|
+
"interactions": [],
|
|
957
|
+
"clockProp": null,
|
|
958
|
+
"byVariant": {},
|
|
635
959
|
"packages": [
|
|
636
960
|
"@gsap/react",
|
|
637
961
|
"gsap"
|
|
@@ -654,6 +978,17 @@
|
|
|
654
978
|
"does": "Two words far apart with a tall slab of ink between them; the slab swings into one thick slash through both words (their letters knocked out where it crosses), then carries the words in on its two ends, turning to the accent as it travels, and seats long and rising between them; the joined pair holds and scrolls away whole.",
|
|
655
979
|
"reference": null,
|
|
656
980
|
"variants": [],
|
|
981
|
+
"role": "centerpiece",
|
|
982
|
+
"home": null,
|
|
983
|
+
"motif": "line",
|
|
984
|
+
"metaphor": null,
|
|
985
|
+
"energy": 3,
|
|
986
|
+
"pins": true,
|
|
987
|
+
"scroll": 3,
|
|
988
|
+
"fullBleed": false,
|
|
989
|
+
"interactions": [],
|
|
990
|
+
"clockProp": null,
|
|
991
|
+
"byVariant": {},
|
|
657
992
|
"packages": [
|
|
658
993
|
"@gsap/react",
|
|
659
994
|
"gsap"
|
|
@@ -675,6 +1010,17 @@
|
|
|
675
1010
|
"does": "One project per screen; each slides up full bleed over the last while the one beneath recedes.",
|
|
676
1011
|
"reference": null,
|
|
677
1012
|
"variants": [],
|
|
1013
|
+
"role": "centerpiece",
|
|
1014
|
+
"home": null,
|
|
1015
|
+
"motif": "neutral",
|
|
1016
|
+
"metaphor": null,
|
|
1017
|
+
"energy": 3,
|
|
1018
|
+
"pins": true,
|
|
1019
|
+
"scroll": 3.3,
|
|
1020
|
+
"fullBleed": false,
|
|
1021
|
+
"interactions": [],
|
|
1022
|
+
"clockProp": null,
|
|
1023
|
+
"byVariant": {},
|
|
678
1024
|
"packages": [
|
|
679
1025
|
"@gsap/react",
|
|
680
1026
|
"gsap"
|
|
@@ -697,6 +1043,17 @@
|
|
|
697
1043
|
"does": "One large statement that fills word by word, from a faint ink to full ink, as it scrolls through the screen.",
|
|
698
1044
|
"reference": null,
|
|
699
1045
|
"variants": [],
|
|
1046
|
+
"role": "centerpiece",
|
|
1047
|
+
"home": null,
|
|
1048
|
+
"motif": "word",
|
|
1049
|
+
"metaphor": null,
|
|
1050
|
+
"energy": 3,
|
|
1051
|
+
"pins": true,
|
|
1052
|
+
"scroll": 2,
|
|
1053
|
+
"fullBleed": false,
|
|
1054
|
+
"interactions": [],
|
|
1055
|
+
"clockProp": null,
|
|
1056
|
+
"byVariant": {},
|
|
700
1057
|
"packages": [
|
|
701
1058
|
"@gsap/react",
|
|
702
1059
|
"gsap"
|
|
@@ -718,6 +1075,19 @@
|
|
|
718
1075
|
"does": "Large hairline rows; on hover or focus a row floods with the accent from below and its detail slides in.",
|
|
719
1076
|
"reference": null,
|
|
720
1077
|
"variants": [],
|
|
1078
|
+
"role": "pattern",
|
|
1079
|
+
"home": null,
|
|
1080
|
+
"motif": "neutral",
|
|
1081
|
+
"metaphor": null,
|
|
1082
|
+
"energy": 1,
|
|
1083
|
+
"pins": false,
|
|
1084
|
+
"scroll": 0,
|
|
1085
|
+
"fullBleed": false,
|
|
1086
|
+
"interactions": [
|
|
1087
|
+
"hover"
|
|
1088
|
+
],
|
|
1089
|
+
"clockProp": null,
|
|
1090
|
+
"byVariant": {},
|
|
721
1091
|
"packages": [
|
|
722
1092
|
"@gsap/react",
|
|
723
1093
|
"gsap"
|
|
@@ -739,6 +1109,17 @@
|
|
|
739
1109
|
"does": "A photo that arrives as coarse pixels and resolves to full sharpness.",
|
|
740
1110
|
"reference": null,
|
|
741
1111
|
"variants": [],
|
|
1112
|
+
"role": "pattern",
|
|
1113
|
+
"home": null,
|
|
1114
|
+
"motif": "neutral",
|
|
1115
|
+
"metaphor": null,
|
|
1116
|
+
"energy": 1,
|
|
1117
|
+
"pins": false,
|
|
1118
|
+
"scroll": 0,
|
|
1119
|
+
"fullBleed": false,
|
|
1120
|
+
"interactions": [],
|
|
1121
|
+
"clockProp": null,
|
|
1122
|
+
"byVariant": {},
|
|
742
1123
|
"packages": [
|
|
743
1124
|
"@gsap/react",
|
|
744
1125
|
"gsap"
|
|
@@ -760,6 +1141,19 @@
|
|
|
760
1141
|
"does": "The footer as a finale: the name fitted edge to edge, rising out of a mask, with a closing line and a live local clock.",
|
|
761
1142
|
"reference": null,
|
|
762
1143
|
"variants": [],
|
|
1144
|
+
"role": "frame",
|
|
1145
|
+
"home": null,
|
|
1146
|
+
"motif": "word",
|
|
1147
|
+
"metaphor": null,
|
|
1148
|
+
"energy": 1,
|
|
1149
|
+
"pins": false,
|
|
1150
|
+
"scroll": 0,
|
|
1151
|
+
"fullBleed": false,
|
|
1152
|
+
"interactions": [
|
|
1153
|
+
"clock"
|
|
1154
|
+
],
|
|
1155
|
+
"clockProp": "timeZone",
|
|
1156
|
+
"byVariant": {},
|
|
763
1157
|
"packages": [
|
|
764
1158
|
"@gsap/react",
|
|
765
1159
|
"gsap"
|
|
@@ -781,6 +1175,17 @@
|
|
|
781
1175
|
"does": "A pinned composed frame (the display line and a lead on the ground, the photo in an upright window with its caption and corner marks) holds; then the camera pushes into the window: the type, nearer the lens, scales away past the edges, the window opens until all four edges leave the screen together, and the photo, deeper than the window, settles out of its push-in to full bleed with its subject held in place; a strip of the ground rises from the bottom edge with the line and caption, and the next section's heading, at the display size of the frame it left, rises out of masks in the photo where its pixels allow a light or dark ink at 4.5:1 (the calm side first, then the window's side), or on bands of ground stepped up from the strip where they do not (or cannot be read), holds, and the pin lets go with the photo drifting slower than the page.",
|
|
782
1176
|
"reference": "The award sheets' zoom-through (struq-assets/references/award-tier-2026-11/README.md, \"Motion\": the camera pushes into an image until it becomes the next section's background), with Lowlight's gate registration and corner marks (Opus55/build/template.html, gateShift line 1233, hero frame CSS line 252).",
|
|
783
1177
|
"variants": [],
|
|
1178
|
+
"role": "centerpiece",
|
|
1179
|
+
"home": null,
|
|
1180
|
+
"motif": "aperture",
|
|
1181
|
+
"metaphor": null,
|
|
1182
|
+
"energy": 3,
|
|
1183
|
+
"pins": true,
|
|
1184
|
+
"scroll": 3,
|
|
1185
|
+
"fullBleed": true,
|
|
1186
|
+
"interactions": [],
|
|
1187
|
+
"clockProp": null,
|
|
1188
|
+
"byVariant": {},
|
|
784
1189
|
"packages": [
|
|
785
1190
|
"@gsap/react",
|
|
786
1191
|
"gsap"
|
|
@@ -820,6 +1225,29 @@
|
|
|
820
1225
|
"does": "On a short pin a slit of photograph between the statement's two halves opens into a window and pushes them apart."
|
|
821
1226
|
}
|
|
822
1227
|
],
|
|
1228
|
+
"role": "pattern",
|
|
1229
|
+
"home": null,
|
|
1230
|
+
"motif": "frame",
|
|
1231
|
+
"metaphor": null,
|
|
1232
|
+
"energy": 2,
|
|
1233
|
+
"pins": false,
|
|
1234
|
+
"scroll": 0,
|
|
1235
|
+
"fullBleed": true,
|
|
1236
|
+
"interactions": [],
|
|
1237
|
+
"clockProp": null,
|
|
1238
|
+
"byVariant": {
|
|
1239
|
+
"wandeling": {
|
|
1240
|
+
"motif": "neutral",
|
|
1241
|
+
"fullBleed": false
|
|
1242
|
+
},
|
|
1243
|
+
"doorkijk": {
|
|
1244
|
+
"motif": "aperture",
|
|
1245
|
+
"energy": 3,
|
|
1246
|
+
"pins": true,
|
|
1247
|
+
"scroll": 1.3,
|
|
1248
|
+
"fullBleed": false
|
|
1249
|
+
}
|
|
1250
|
+
},
|
|
823
1251
|
"packages": [
|
|
824
1252
|
"@gsap/react",
|
|
825
1253
|
"gsap"
|
|
@@ -858,6 +1286,30 @@
|
|
|
858
1286
|
"does": "An index you scrub by dragging the rule, clicking a stage or using the arrow keys, the photographs wiping across in register while the copy swaps beside them."
|
|
859
1287
|
}
|
|
860
1288
|
],
|
|
1289
|
+
"role": "pattern",
|
|
1290
|
+
"home": null,
|
|
1291
|
+
"motif": "line",
|
|
1292
|
+
"metaphor": "thread",
|
|
1293
|
+
"energy": 2,
|
|
1294
|
+
"pins": false,
|
|
1295
|
+
"scroll": 0,
|
|
1296
|
+
"fullBleed": false,
|
|
1297
|
+
"interactions": [],
|
|
1298
|
+
"clockProp": null,
|
|
1299
|
+
"byVariant": {
|
|
1300
|
+
"zin": {
|
|
1301
|
+
"motif": "neutral",
|
|
1302
|
+
"metaphor": null,
|
|
1303
|
+
"energy": 3,
|
|
1304
|
+
"pins": true,
|
|
1305
|
+
"scroll": 2.4
|
|
1306
|
+
},
|
|
1307
|
+
"schuif": {
|
|
1308
|
+
"motif": "neutral",
|
|
1309
|
+
"metaphor": null,
|
|
1310
|
+
"energy": 1
|
|
1311
|
+
}
|
|
1312
|
+
},
|
|
861
1313
|
"packages": [
|
|
862
1314
|
"@gsap/react",
|
|
863
1315
|
"gsap"
|
|
@@ -896,6 +1348,30 @@
|
|
|
896
1348
|
"does": "A short pin: the first half stands large on the left while the second half arrives on the right one sentence at a time, each rising under the one before, ending on the whole statement in two columns."
|
|
897
1349
|
}
|
|
898
1350
|
],
|
|
1351
|
+
"role": "pattern",
|
|
1352
|
+
"home": null,
|
|
1353
|
+
"motif": "line",
|
|
1354
|
+
"metaphor": "typewriter",
|
|
1355
|
+
"energy": 3,
|
|
1356
|
+
"pins": true,
|
|
1357
|
+
"scroll": 2,
|
|
1358
|
+
"fullBleed": false,
|
|
1359
|
+
"interactions": [],
|
|
1360
|
+
"clockProp": null,
|
|
1361
|
+
"byVariant": {
|
|
1362
|
+
"quote": {
|
|
1363
|
+
"motif": "neutral",
|
|
1364
|
+
"metaphor": null,
|
|
1365
|
+
"energy": 2,
|
|
1366
|
+
"pins": false,
|
|
1367
|
+
"scroll": 0
|
|
1368
|
+
},
|
|
1369
|
+
"split": {
|
|
1370
|
+
"motif": "neutral",
|
|
1371
|
+
"metaphor": null,
|
|
1372
|
+
"scroll": 1.5
|
|
1373
|
+
}
|
|
1374
|
+
},
|
|
899
1375
|
"packages": [
|
|
900
1376
|
"@gsap/react",
|
|
901
1377
|
"gsap"
|
|
@@ -935,6 +1411,24 @@
|
|
|
935
1411
|
"does": "One question at a time at display size; Enter or Volgende moves on, Terug goes back, the answers so far stay small above, and a thin rule fills."
|
|
936
1412
|
}
|
|
937
1413
|
],
|
|
1414
|
+
"role": "pattern",
|
|
1415
|
+
"home": null,
|
|
1416
|
+
"motif": "line",
|
|
1417
|
+
"metaphor": null,
|
|
1418
|
+
"energy": 1,
|
|
1419
|
+
"pins": false,
|
|
1420
|
+
"scroll": 0,
|
|
1421
|
+
"fullBleed": false,
|
|
1422
|
+
"interactions": [],
|
|
1423
|
+
"clockProp": null,
|
|
1424
|
+
"byVariant": {
|
|
1425
|
+
"sentence": {
|
|
1426
|
+
"motif": "neutral"
|
|
1427
|
+
},
|
|
1428
|
+
"steps": {
|
|
1429
|
+
"motif": "neutral"
|
|
1430
|
+
}
|
|
1431
|
+
},
|
|
938
1432
|
"packages": [],
|
|
939
1433
|
"exports": [
|
|
940
1434
|
"ContactForm"
|
|
@@ -968,6 +1462,34 @@
|
|
|
968
1462
|
"does": "Plain ground, the line large and still; hovering the link brings a small project frame that follows the pointer while the link's line draws."
|
|
969
1463
|
}
|
|
970
1464
|
],
|
|
1465
|
+
"role": "pattern",
|
|
1466
|
+
"home": null,
|
|
1467
|
+
"motif": "aperture",
|
|
1468
|
+
"metaphor": null,
|
|
1469
|
+
"energy": 2,
|
|
1470
|
+
"pins": false,
|
|
1471
|
+
"scroll": 0,
|
|
1472
|
+
"fullBleed": true,
|
|
1473
|
+
"interactions": [],
|
|
1474
|
+
"clockProp": null,
|
|
1475
|
+
"byVariant": {
|
|
1476
|
+
"marquee": {
|
|
1477
|
+
"motif": "word",
|
|
1478
|
+
"fullBleed": false,
|
|
1479
|
+
"interactions": [
|
|
1480
|
+
"marquee"
|
|
1481
|
+
]
|
|
1482
|
+
},
|
|
1483
|
+
"pointer": {
|
|
1484
|
+
"motif": "neutral",
|
|
1485
|
+
"energy": 1,
|
|
1486
|
+
"fullBleed": false,
|
|
1487
|
+
"interactions": [
|
|
1488
|
+
"cursor",
|
|
1489
|
+
"hover"
|
|
1490
|
+
]
|
|
1491
|
+
}
|
|
1492
|
+
},
|
|
971
1493
|
"packages": [
|
|
972
1494
|
"@gsap/react",
|
|
973
1495
|
"gsap"
|
|
@@ -1007,6 +1529,21 @@
|
|
|
1007
1529
|
"does": "The whole section slides up over the previous one with a hairline shadow on its top edge; the covered section dims and falls behind as the content settles."
|
|
1008
1530
|
}
|
|
1009
1531
|
],
|
|
1532
|
+
"role": "pattern",
|
|
1533
|
+
"home": null,
|
|
1534
|
+
"motif": "neutral",
|
|
1535
|
+
"metaphor": null,
|
|
1536
|
+
"energy": 1,
|
|
1537
|
+
"pins": false,
|
|
1538
|
+
"scroll": 0,
|
|
1539
|
+
"fullBleed": false,
|
|
1540
|
+
"interactions": [],
|
|
1541
|
+
"clockProp": null,
|
|
1542
|
+
"byVariant": {
|
|
1543
|
+
"clip": {
|
|
1544
|
+
"motif": "aperture"
|
|
1545
|
+
}
|
|
1546
|
+
},
|
|
1010
1547
|
"packages": [
|
|
1011
1548
|
"@gsap/react",
|
|
1012
1549
|
"gsap"
|
|
@@ -1029,6 +1566,20 @@
|
|
|
1029
1566
|
"does": "A list of work at display size; moving the pointer over a row deals that project's photograph at the pointer each time it has travelled a set distance, turned a little with the hand and settling as it lands, while older prints hold, shrink and fade behind it, six at most; a fast hand leaves a longer, wider trail and a still one leaves nothing new; keyboard focus and reduced motion show one print beside the row, and touch and phones show each photograph inline.",
|
|
1030
1567
|
"reference": "The award sheets' image trail (struq-assets/references/award-tier-2026-11/README.md), with the restraint of Lowlight's pointer-led still over its rows (Opus55/build/template.html, .make__preview near line 394).",
|
|
1031
1568
|
"variants": [],
|
|
1569
|
+
"role": "pattern",
|
|
1570
|
+
"home": null,
|
|
1571
|
+
"motif": "neutral",
|
|
1572
|
+
"metaphor": null,
|
|
1573
|
+
"energy": 1,
|
|
1574
|
+
"pins": false,
|
|
1575
|
+
"scroll": 0,
|
|
1576
|
+
"fullBleed": false,
|
|
1577
|
+
"interactions": [
|
|
1578
|
+
"cursor",
|
|
1579
|
+
"hover"
|
|
1580
|
+
],
|
|
1581
|
+
"clockProp": null,
|
|
1582
|
+
"byVariant": {},
|
|
1032
1583
|
"packages": [
|
|
1033
1584
|
"@gsap/react",
|
|
1034
1585
|
"gsap"
|
|
@@ -1051,6 +1602,19 @@
|
|
|
1051
1602
|
"does": "A full-height row of five tall photo panels like gallery shutters: hover or focus opens one wide while the others narrow, the photograph already full size behind a widening window, its name rising in through a mask; on scroll into view the panels rise from their bottom edge one after another and the first opens on its own; phones stack them as rows that open on tap.",
|
|
1052
1603
|
"reference": "The award sheets' panel and shutter moves (struq-assets/references/award-tier-2026-11/README.md) and Kinetic Studio's capabilities rhythm (v4vision/projects/kinetic-studio/index.html, near line 447).",
|
|
1053
1604
|
"variants": [],
|
|
1605
|
+
"role": "pattern",
|
|
1606
|
+
"home": null,
|
|
1607
|
+
"motif": "aperture",
|
|
1608
|
+
"metaphor": null,
|
|
1609
|
+
"energy": 1,
|
|
1610
|
+
"pins": false,
|
|
1611
|
+
"scroll": 0,
|
|
1612
|
+
"fullBleed": false,
|
|
1613
|
+
"interactions": [
|
|
1614
|
+
"hover"
|
|
1615
|
+
],
|
|
1616
|
+
"clockProp": null,
|
|
1617
|
+
"byVariant": {},
|
|
1054
1618
|
"packages": [
|
|
1055
1619
|
"@gsap/react",
|
|
1056
1620
|
"gsap"
|
|
@@ -1073,6 +1637,17 @@
|
|
|
1073
1637
|
"does": "A pinned section (250%) opens on nine photos lying at angles in a composed pile, a few past the screen edges, that travel one after another into an editorial grid with exact gaps as the section's line rises in its type cell; the grid holds, then the hero print, a window onto its photo at full size, opens to the full screen while the others are pushed out, the photo never changing scale, and the next line rises on the photo's calmer side, holds, and the photo drifts slower than the page as the pin lets go. Phones open the grid tile by tile; reduced motion and pages without scripts show the grid, then the full-bleed photo with its line.",
|
|
1074
1638
|
"reference": "The award sheets' \"grid assembly\" and \"image grows to full bleed\" moves (struq-assets/references/award-tier-2026-11/README.md, showpieces 1 and Motion), with Lowlight's restraint (Opus55/build/template.html): one grade, holds as long as the moves, a hand-over into the next scene.",
|
|
1075
1639
|
"variants": [],
|
|
1640
|
+
"role": "centerpiece",
|
|
1641
|
+
"home": null,
|
|
1642
|
+
"motif": "frame",
|
|
1643
|
+
"metaphor": "print-table",
|
|
1644
|
+
"energy": 3,
|
|
1645
|
+
"pins": true,
|
|
1646
|
+
"scroll": 2.5,
|
|
1647
|
+
"fullBleed": true,
|
|
1648
|
+
"interactions": [],
|
|
1649
|
+
"clockProp": null,
|
|
1650
|
+
"byVariant": {},
|
|
1076
1651
|
"packages": [
|
|
1077
1652
|
"@gsap/react",
|
|
1078
1653
|
"gsap"
|
|
@@ -1096,6 +1671,19 @@
|
|
|
1096
1671
|
"does": "Two lines of display type at 15vw run sideways in opposite directions as you scroll, run ahead with its speed, lean back and stretch slightly as if dragged, and settle upright within about 0.4 seconds of stopping, with small photographs sitting between the phrases as their own frames; the belt loops without a seam, and reduced motion and pages without scripts leave the lines at rest.",
|
|
1097
1672
|
"reference": "The award sheets' velocity type (struq-assets/references/award-tier-2026-11/README.md, \"Motion\"), with the feel of Kinetic Studio's marquee (v4vision/projects/kinetic-studio/index.html).",
|
|
1098
1673
|
"variants": [],
|
|
1674
|
+
"role": "pattern",
|
|
1675
|
+
"home": null,
|
|
1676
|
+
"motif": "word",
|
|
1677
|
+
"metaphor": null,
|
|
1678
|
+
"energy": 2,
|
|
1679
|
+
"pins": false,
|
|
1680
|
+
"scroll": 0,
|
|
1681
|
+
"fullBleed": false,
|
|
1682
|
+
"interactions": [
|
|
1683
|
+
"marquee"
|
|
1684
|
+
],
|
|
1685
|
+
"clockProp": null,
|
|
1686
|
+
"byVariant": {},
|
|
1099
1687
|
"packages": [
|
|
1100
1688
|
"@gsap/react",
|
|
1101
1689
|
"gsap"
|
|
@@ -1118,6 +1706,17 @@
|
|
|
1118
1706
|
"does": "A process or story in chapters: one large photograph holds still on the left (plain position sticky) while the chapters scroll past on the right; as each reaches the middle its photograph rises over the last from the bottom edge (from the top when scrolling back) out of a push-in, that chapter comes forward while the others step back, and a hairline beside the frame fills as you read; phones and pages without scripts show each photograph inline, reduced motion keeps the frame with hard cuts.",
|
|
1119
1707
|
"reference": "Lowlight's pinned process (Opus55/build/template.html, .process CSS near line 401): copy that holds while a photograph changes beside it.",
|
|
1120
1708
|
"variants": [],
|
|
1709
|
+
"role": "pattern",
|
|
1710
|
+
"home": null,
|
|
1711
|
+
"motif": "neutral",
|
|
1712
|
+
"metaphor": null,
|
|
1713
|
+
"energy": 2,
|
|
1714
|
+
"pins": false,
|
|
1715
|
+
"scroll": 0,
|
|
1716
|
+
"fullBleed": false,
|
|
1717
|
+
"interactions": [],
|
|
1718
|
+
"clockProp": null,
|
|
1719
|
+
"byVariant": {},
|
|
1121
1720
|
"packages": [
|
|
1122
1721
|
"@gsap/react",
|
|
1123
1722
|
"gsap"
|
|
@@ -1140,6 +1739,17 @@
|
|
|
1140
1739
|
"does": "A pinned reel between two rows of sprocket holes opens on the section's display line beside the first project in the gate; the scroll advances it one frame at a time, portrait frames high and landscape low, each seating at the gate as its photo settles out of a push-in while the title swaps through its mask and a hairline progress line fills; the last stop is the closing frame with the call to action, and on release the strip runs on to the left. Phones swipe a snap row between sprocket rows with titles under the frames; reduced motion and pages without scripts get the same still row.",
|
|
1141
1740
|
"reference": "Lowlight's pinned reel (Opus55/build/template.html: reel CSS lines 312 to 372 with the sprocket rows and progress line, initReel near line 1320), turned from a 1:1 glide into frame-by-frame advances with a title mask.",
|
|
1142
1741
|
"variants": [],
|
|
1742
|
+
"role": "centerpiece",
|
|
1743
|
+
"home": null,
|
|
1744
|
+
"motif": "frame",
|
|
1745
|
+
"metaphor": "film-reel",
|
|
1746
|
+
"energy": 3,
|
|
1747
|
+
"pins": true,
|
|
1748
|
+
"scroll": 3,
|
|
1749
|
+
"fullBleed": false,
|
|
1750
|
+
"interactions": [],
|
|
1751
|
+
"clockProp": null,
|
|
1752
|
+
"byVariant": {},
|
|
1143
1753
|
"packages": [
|
|
1144
1754
|
"@gsap/react",
|
|
1145
1755
|
"gsap"
|
|
@@ -1162,6 +1772,20 @@
|
|
|
1162
1772
|
"does": "A list of work at display size, each name with a quiet line of place and year; hovering a row shows its photograph in an upright frame that follows the pointer closely and leans with its speed while the other rows step back, row to row the photograph wipes in the way the pointer travels, and leaving the list folds the frame shut; keyboard focus and reduced motion stand the frame beside the row, and touch and phones show each photograph inline.",
|
|
1163
1773
|
"reference": "Lowlight's still that follows the pointer over the \"What we make\" rows (Opus55/build/template.html, .make__preview CSS near line 394, initMake near line 1371), with Kinetic Studio's pointer-speed tilt (v4vision/projects/kinetic-studio/index.html, tilt near line 859).",
|
|
1164
1774
|
"variants": [],
|
|
1775
|
+
"role": "pattern",
|
|
1776
|
+
"home": null,
|
|
1777
|
+
"motif": "neutral",
|
|
1778
|
+
"metaphor": null,
|
|
1779
|
+
"energy": 1,
|
|
1780
|
+
"pins": false,
|
|
1781
|
+
"scroll": 0,
|
|
1782
|
+
"fullBleed": false,
|
|
1783
|
+
"interactions": [
|
|
1784
|
+
"cursor",
|
|
1785
|
+
"hover"
|
|
1786
|
+
],
|
|
1787
|
+
"clockProp": null,
|
|
1788
|
+
"byVariant": {},
|
|
1165
1789
|
"packages": [
|
|
1166
1790
|
"@gsap/react",
|
|
1167
1791
|
"gsap"
|
|
@@ -1184,6 +1808,17 @@
|
|
|
1184
1808
|
"does": "A pinned pair of tall photos that meet at a hard seam: the word stands whole in ink on the ground with the seam through it; the first photo rises in on the left, turning its half of the letters to the photo's own ink, and holds half and half; the second comes down on the right against it and the pair holds whole, the two photos running against each other at different speeds the whole time, and on release the halves leave at their own speeds so the word shears along the seam.",
|
|
1185
1809
|
"reference": "Voyeur Verite's split-screen pair (\"The Symphony of Dance / Stand Up\", struq-assets/references/award-tier-2026-11/voyeur-verite-sheet.png, rows 3 to 5): two photos arriving from opposite directions, oversized serif words across both.",
|
|
1186
1810
|
"variants": [],
|
|
1811
|
+
"role": "centerpiece",
|
|
1812
|
+
"home": null,
|
|
1813
|
+
"motif": "cut",
|
|
1814
|
+
"metaphor": null,
|
|
1815
|
+
"energy": 3,
|
|
1816
|
+
"pins": true,
|
|
1817
|
+
"scroll": 3,
|
|
1818
|
+
"fullBleed": false,
|
|
1819
|
+
"interactions": [],
|
|
1820
|
+
"clockProp": null,
|
|
1821
|
+
"byVariant": {},
|
|
1187
1822
|
"packages": [
|
|
1188
1823
|
"@gsap/react",
|
|
1189
1824
|
"gsap"
|
|
@@ -1207,6 +1842,19 @@
|
|
|
1207
1842
|
"does": "Services or cases as a hand of photographs played onto the table: a poster heading set on the diagonal, the hand rising into the frame and fanning open large in 3D between its two lines; it holds, then the hand is played from the back, each card flying along an arc toward the lens and turning as it goes, and laid down at its own scale into a spread (the lead card large in front, each card behind it smaller and partly under the one before, all crossing the first line), each title rising from its mask as its card lands; the spread holds, and on release the cards are picked up off the table at their own speeds. Phones get the hand as a still fan; reduced motion gets the spread. Cards lift slightly on hover.",
|
|
1208
1843
|
"reference": "VANTA/LOOP, \"Your flexible creative department\": the offers fanned in 3D beside the heading (struq-assets/references/award-tier-2026-11/vanta-loop-sheet.png, row 4), with Kinetic Studio's staggered card rhythm and pointer tilt (v4vision/projects/kinetic-studio/index.html, capabilities near line 447, tilt near line 859).",
|
|
1209
1844
|
"variants": [],
|
|
1845
|
+
"role": "centerpiece",
|
|
1846
|
+
"home": null,
|
|
1847
|
+
"motif": "neutral",
|
|
1848
|
+
"metaphor": "card-hand",
|
|
1849
|
+
"energy": 3,
|
|
1850
|
+
"pins": true,
|
|
1851
|
+
"scroll": 3,
|
|
1852
|
+
"fullBleed": false,
|
|
1853
|
+
"interactions": [
|
|
1854
|
+
"hover"
|
|
1855
|
+
],
|
|
1856
|
+
"clockProp": null,
|
|
1857
|
+
"byVariant": {},
|
|
1210
1858
|
"packages": [
|
|
1211
1859
|
"@gsap/react",
|
|
1212
1860
|
"gsap"
|
|
@@ -1245,6 +1893,21 @@
|
|
|
1245
1893
|
"does": "The footer is uncovered through an opening that grows from a thin slit at the bottom of the screen to full, the name rising inside it."
|
|
1246
1894
|
}
|
|
1247
1895
|
],
|
|
1896
|
+
"role": "frame",
|
|
1897
|
+
"home": null,
|
|
1898
|
+
"motif": "neutral",
|
|
1899
|
+
"metaphor": null,
|
|
1900
|
+
"energy": 2,
|
|
1901
|
+
"pins": false,
|
|
1902
|
+
"scroll": 0,
|
|
1903
|
+
"fullBleed": false,
|
|
1904
|
+
"interactions": [],
|
|
1905
|
+
"clockProp": null,
|
|
1906
|
+
"byVariant": {
|
|
1907
|
+
"iris": {
|
|
1908
|
+
"motif": "aperture"
|
|
1909
|
+
}
|
|
1910
|
+
},
|
|
1248
1911
|
"packages": [
|
|
1249
1912
|
"@gsap/react",
|
|
1250
1913
|
"gsap",
|
|
@@ -1265,7 +1928,7 @@
|
|
|
1265
1928
|
"slug": "footer-contact",
|
|
1266
1929
|
"kind": "footer",
|
|
1267
1930
|
"title": "Footer: contact",
|
|
1268
|
-
"does": "The page ends on the way to reach the studio: the mail address as a real link at display size (or
|
|
1931
|
+
"does": "The page ends on the way to reach the studio: the mail address as a real link at display size (or the city at display size, or a quiet three-column grid), the city and its opening hours, a phone line, the address and a few plain links, entering scrubbed to the scroll; with clock the city keeps its live local time with an honest open marker computed from it.",
|
|
1269
1932
|
"reference": "Lowlight's contact footer and roll-host labels (Opus55/build/template.html), Kinetic Studio's footer mailto, and the slot-text roll from the FWA studio footers.",
|
|
1270
1933
|
"variants": [
|
|
1271
1934
|
{
|
|
@@ -1276,7 +1939,7 @@
|
|
|
1276
1939
|
{
|
|
1277
1940
|
"id": "clock",
|
|
1278
1941
|
"title": "Klok",
|
|
1279
|
-
"does": "
|
|
1942
|
+
"does": "The city at display size is the centre (with clock, a live clock whose colon breathes once a second); mail, phone, address and hours stand around it like a timetable."
|
|
1280
1943
|
},
|
|
1281
1944
|
{
|
|
1282
1945
|
"id": "columns",
|
|
@@ -1284,6 +1947,24 @@
|
|
|
1284
1947
|
"does": "A closing line at display size, then three columns (Contact, Studio, Volg ons) with links whose underline draws from the pointer's side."
|
|
1285
1948
|
}
|
|
1286
1949
|
],
|
|
1950
|
+
"role": "frame",
|
|
1951
|
+
"home": null,
|
|
1952
|
+
"motif": "word",
|
|
1953
|
+
"metaphor": null,
|
|
1954
|
+
"energy": 1,
|
|
1955
|
+
"pins": false,
|
|
1956
|
+
"scroll": 0,
|
|
1957
|
+
"fullBleed": false,
|
|
1958
|
+
"interactions": [
|
|
1959
|
+
"clock",
|
|
1960
|
+
"hover"
|
|
1961
|
+
],
|
|
1962
|
+
"clockProp": "clock",
|
|
1963
|
+
"byVariant": {
|
|
1964
|
+
"columns": {
|
|
1965
|
+
"motif": "neutral"
|
|
1966
|
+
}
|
|
1967
|
+
},
|
|
1287
1968
|
"packages": [
|
|
1288
1969
|
"@gsap/react",
|
|
1289
1970
|
"gsap"
|