@rizom/site-rizom-ai 0.2.0-alpha.158 → 0.2.0-alpha.160
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/package.json +4 -3
- package/src/foundation.tsx +216 -0
- package/src/growth-diagram.tsx +297 -0
- package/src/home.tsx +369 -0
- package/src/index.ts +3 -1
- package/src/layout.tsx +335 -67
- package/src/routes.ts +90 -14
- package/src/shared.tsx +197 -0
- package/src/site.ts +17 -3
- package/src/work.tsx +432 -0
- package/src/sections/answer/layout.tsx +0 -40
- package/src/sections/answer/scales-diagram.tsx +0 -254
- package/src/sections/answer/schema.ts +0 -7
- package/src/sections/ecosystem.tsx +0 -3
- package/src/sections/hero/layout.tsx +0 -45
- package/src/sections/hero/schema.ts +0 -13
- package/src/sections/mission/layout.tsx +0 -44
- package/src/sections/mission/schema.ts +0 -9
- package/src/sections/ownership/layout.tsx +0 -45
- package/src/sections/ownership/schema.ts +0 -11
- package/src/sections/problem/layout.tsx +0 -56
- package/src/sections/problem/schema.ts +0 -9
- package/src/sections/products/ProductCard.tsx +0 -137
- package/src/sections/products/ProductIllustration.tsx +0 -690
- package/src/sections/products/layout.tsx +0 -21
- package/src/sections/products/schema.ts +0 -15
- package/src/sections/quickstart/layout.tsx +0 -53
- package/src/sections/quickstart/schema.ts +0 -9
- package/src/site-content.ts +0 -190
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rizom/site-rizom-ai",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.160",
|
|
4
4
|
"description": "Rizom AI site package for hosted Rover deployments",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -18,8 +18,9 @@
|
|
|
18
18
|
"prepack": "publish-manifest prepare"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@rizom/site": "0.2.0-alpha.
|
|
22
|
-
"@rizom/site-rizom": "0.2.0-alpha.
|
|
21
|
+
"@rizom/site": "0.2.0-alpha.160",
|
|
22
|
+
"@rizom/site-rizom": "0.2.0-alpha.160",
|
|
23
|
+
"@rizom/site-sections": "0.2.0-alpha.160",
|
|
23
24
|
"preact": "^10.27.2"
|
|
24
25
|
},
|
|
25
26
|
"publishConfig": {
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/** @jsxImportSource preact */
|
|
2
|
+
import type { JSX } from "preact";
|
|
3
|
+
import type { SiteSectionGroup } from "@rizom/site";
|
|
4
|
+
import { defineSection, sectionGroup, z } from "@rizom/site-sections";
|
|
5
|
+
import { Section, renderHighlightedText } from "@rizom/site-rizom";
|
|
6
|
+
import {
|
|
7
|
+
AliveLine,
|
|
8
|
+
Band,
|
|
9
|
+
CtaRow,
|
|
10
|
+
IndexRow,
|
|
11
|
+
SectCap,
|
|
12
|
+
ctaSchema,
|
|
13
|
+
delayClass,
|
|
14
|
+
ROOM_HIGHLIGHT_CLS,
|
|
15
|
+
} from "./shared";
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The /foundation room (previously rizom.foundation) — the research journal: a
|
|
19
|
+
* masthead, essay + city-chapter index sections, a pull-quote band, support
|
|
20
|
+
* options, and a follow line (the shared colophon). Each section is authored
|
|
21
|
+
* from one zod schema; copy is content-driven, stored as markdown in
|
|
22
|
+
* site-content/foundation/<section>.md. The essay/event indexes are static rows
|
|
23
|
+
* here — the live entity-backed list lives at /writing.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/* ============ journal masthead ============ */
|
|
27
|
+
|
|
28
|
+
const heroSchema = z.object({
|
|
29
|
+
volume: z.string(),
|
|
30
|
+
meta: z.string(),
|
|
31
|
+
headline: z.string(),
|
|
32
|
+
standfirst: z.string(),
|
|
33
|
+
primaryCta: ctaSchema,
|
|
34
|
+
secondaryCta: ctaSchema,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
function FoundationHeroSection({
|
|
38
|
+
volume,
|
|
39
|
+
meta,
|
|
40
|
+
headline,
|
|
41
|
+
standfirst,
|
|
42
|
+
primaryCta,
|
|
43
|
+
secondaryCta,
|
|
44
|
+
}: z.infer<typeof heroSchema>): JSX.Element {
|
|
45
|
+
return (
|
|
46
|
+
<Section
|
|
47
|
+
id="foundation-hero"
|
|
48
|
+
className="relative overflow-hidden pt-16 pb-[30px] md:pt-20"
|
|
49
|
+
>
|
|
50
|
+
<div
|
|
51
|
+
aria-hidden="true"
|
|
52
|
+
className="pointer-events-none absolute -inset-x-[10%] -inset-y-[30%] bg-[radial-gradient(680px_360px_at_14%_8%,rgb(from_var(--color-accent)_r_g_b_/_0.14),transparent_66%)]"
|
|
53
|
+
/>
|
|
54
|
+
<div className="relative">
|
|
55
|
+
<SectCap lead={volume} trail={meta} />
|
|
56
|
+
<h1 className="mt-[18px] max-w-[15.5em] font-display text-[clamp(36px,4.6vw,64px)] font-[448] leading-[1.05] tracking-[-0.018em] text-theme [font-variation-settings:'SOFT'_88,'opsz'_110]">
|
|
57
|
+
{renderHighlightedText(headline, ROOM_HIGHLIGHT_CLS)}
|
|
58
|
+
</h1>
|
|
59
|
+
<p className="mt-4 max-w-[50ch] font-body text-[20px] leading-[1.7] text-theme-muted">
|
|
60
|
+
{standfirst}
|
|
61
|
+
</p>
|
|
62
|
+
<CtaRow
|
|
63
|
+
primaryCta={primaryCta}
|
|
64
|
+
secondaryCta={secondaryCta}
|
|
65
|
+
className="mt-[26px] mb-11"
|
|
66
|
+
/>
|
|
67
|
+
</div>
|
|
68
|
+
</Section>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* ============ index sections: research + chapters ============ */
|
|
73
|
+
|
|
74
|
+
const indexRowSchema = z.object({
|
|
75
|
+
no: z.string(),
|
|
76
|
+
kicker: z.string(),
|
|
77
|
+
title: z.string(),
|
|
78
|
+
text: z.string(),
|
|
79
|
+
href: z.string().optional(),
|
|
80
|
+
meta: z.string().optional(),
|
|
81
|
+
metaSub: z.string().optional(),
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const indexSchema = z.object({
|
|
85
|
+
cap: z.string(),
|
|
86
|
+
capNote: z.string(),
|
|
87
|
+
items: z.array(indexRowSchema),
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
function IndexSection({
|
|
91
|
+
id,
|
|
92
|
+
cap,
|
|
93
|
+
capNote,
|
|
94
|
+
items,
|
|
95
|
+
}: z.infer<typeof indexSchema> & { id: string }): JSX.Element {
|
|
96
|
+
return (
|
|
97
|
+
<Section id={id} className="py-14">
|
|
98
|
+
<SectCap lead={cap} trail={capNote} />
|
|
99
|
+
<div className="mt-2">
|
|
100
|
+
{items.map((row, i) => (
|
|
101
|
+
<IndexRow key={row.title} row={row} delayClass={delayClass(i)} />
|
|
102
|
+
))}
|
|
103
|
+
</div>
|
|
104
|
+
</Section>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function FoundationResearchSection(
|
|
109
|
+
content: z.infer<typeof indexSchema>,
|
|
110
|
+
): JSX.Element {
|
|
111
|
+
return <IndexSection id="research" {...content} />;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function FoundationChaptersSection(
|
|
115
|
+
content: z.infer<typeof indexSchema>,
|
|
116
|
+
): JSX.Element {
|
|
117
|
+
return <IndexSection id="events" {...content} />;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* ============ pull-quote band ============ */
|
|
121
|
+
|
|
122
|
+
const pullquoteSchema = z.object({
|
|
123
|
+
quote: z.string(),
|
|
124
|
+
attribution: z.string(),
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
function FoundationPullquoteSection({
|
|
128
|
+
quote,
|
|
129
|
+
attribution,
|
|
130
|
+
}: z.infer<typeof pullquoteSchema>): JSX.Element {
|
|
131
|
+
return (
|
|
132
|
+
<Band quote={quote}>
|
|
133
|
+
<p className="reveal reveal-delay-1 mt-[18px] font-label text-[12px] text-theme-light">
|
|
134
|
+
{attribution}
|
|
135
|
+
</p>
|
|
136
|
+
</Band>
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/* ============ support ============ */
|
|
141
|
+
|
|
142
|
+
const supportSchema = z.object({
|
|
143
|
+
cap: z.string(),
|
|
144
|
+
capNote: z.string(),
|
|
145
|
+
options: z.array(
|
|
146
|
+
z.object({
|
|
147
|
+
kicker: z.string(),
|
|
148
|
+
amount: z.string(),
|
|
149
|
+
text: z.string(),
|
|
150
|
+
}),
|
|
151
|
+
),
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
function FoundationSupportSection({
|
|
155
|
+
cap,
|
|
156
|
+
capNote,
|
|
157
|
+
options,
|
|
158
|
+
}: z.infer<typeof supportSchema>): JSX.Element {
|
|
159
|
+
return (
|
|
160
|
+
<Section id="support" className="py-14">
|
|
161
|
+
<SectCap lead={cap} trail={capNote} />
|
|
162
|
+
<div className="mt-[26px] grid max-w-[900px] gap-13 md:grid-cols-2">
|
|
163
|
+
{options.map((option, i) => (
|
|
164
|
+
<div key={option.kicker} className={`reveal ${delayClass(i + 1)}`}>
|
|
165
|
+
<span className="font-label text-label-xs uppercase tracking-[0.16em] text-accent">
|
|
166
|
+
{option.kicker}
|
|
167
|
+
</span>
|
|
168
|
+
<div className="mt-2 font-display text-[30px] font-[480] text-theme [font-variation-settings:'SOFT'_40]">
|
|
169
|
+
{option.amount}
|
|
170
|
+
</div>
|
|
171
|
+
<p className="mt-2 font-body text-[15.5px] text-theme-light">
|
|
172
|
+
{option.text}
|
|
173
|
+
</p>
|
|
174
|
+
</div>
|
|
175
|
+
))}
|
|
176
|
+
</div>
|
|
177
|
+
</Section>
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* ============ follow line ============ */
|
|
182
|
+
|
|
183
|
+
// Reuses the shared colophon (AliveLine) — an italic claim plus proof links.
|
|
184
|
+
const followSchema = z.object({
|
|
185
|
+
claim: z.string(),
|
|
186
|
+
links: z.array(ctaSchema),
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
/* ============ the foundation section group ============ */
|
|
190
|
+
|
|
191
|
+
export const foundationSections: SiteSectionGroup = sectionGroup("foundation", {
|
|
192
|
+
hero: defineSection(heroSchema, FoundationHeroSection, {
|
|
193
|
+
title: "Hero",
|
|
194
|
+
description: "Foundation journal masthead",
|
|
195
|
+
}),
|
|
196
|
+
research: defineSection(indexSchema, FoundationResearchSection, {
|
|
197
|
+
title: "Research",
|
|
198
|
+
description: "Essay index rows",
|
|
199
|
+
}),
|
|
200
|
+
pullquote: defineSection(pullquoteSchema, FoundationPullquoteSection, {
|
|
201
|
+
title: "Pullquote",
|
|
202
|
+
description: "Pull-quote band",
|
|
203
|
+
}),
|
|
204
|
+
chapters: defineSection(indexSchema, FoundationChaptersSection, {
|
|
205
|
+
title: "Chapters",
|
|
206
|
+
description: "City chapter index rows",
|
|
207
|
+
}),
|
|
208
|
+
support: defineSection(supportSchema, FoundationSupportSection, {
|
|
209
|
+
title: "Support",
|
|
210
|
+
description: "Funding options",
|
|
211
|
+
}),
|
|
212
|
+
follow: defineSection(followSchema, AliveLine, {
|
|
213
|
+
title: "Follow",
|
|
214
|
+
description: "Follow-the-research line (shared colophon component)",
|
|
215
|
+
}),
|
|
216
|
+
});
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/** @jsxImportSource preact */
|
|
2
|
+
import type { JSX } from "preact";
|
|
3
|
+
|
|
4
|
+
/* You → Team → Network drawn as one organism — the rev-5 product
|
|
5
|
+
centerpiece (replaces Rover/Relay/Ranger as separate products).
|
|
6
|
+
Geometry is verbatim from docs/rizom-site-mockups.html; colors and
|
|
7
|
+
draw-in/bloom animation come from theme-rizom-ai's .growth classes.
|
|
8
|
+
The wrapper's `reveal` class lets boot.js trigger the sequence. */
|
|
9
|
+
export function GrowthDiagram(): JSX.Element {
|
|
10
|
+
return (
|
|
11
|
+
<div className="growth reveal reveal-delay-1 mt-5 max-w-[1020px]">
|
|
12
|
+
<svg
|
|
13
|
+
viewBox="0 0 980 290"
|
|
14
|
+
role="img"
|
|
15
|
+
aria-label="One brain growing into a team, then a network"
|
|
16
|
+
>
|
|
17
|
+
<defs>
|
|
18
|
+
<radialGradient id="zw-you" cx="50%" cy="50%" r="50%">
|
|
19
|
+
<stop offset="0%" stop-color="#d4af37" stop-opacity=".1" />
|
|
20
|
+
<stop offset="100%" stop-color="#d4af37" stop-opacity="0" />
|
|
21
|
+
</radialGradient>
|
|
22
|
+
<radialGradient id="zw-team" cx="50%" cy="50%" r="50%">
|
|
23
|
+
<stop offset="0%" stop-color="#e07a6a" stop-opacity=".08" />
|
|
24
|
+
<stop offset="100%" stop-color="#e07a6a" stop-opacity="0" />
|
|
25
|
+
</radialGradient>
|
|
26
|
+
<radialGradient id="zw-net" cx="50%" cy="50%" r="50%">
|
|
27
|
+
<stop offset="0%" stop-color="#9caf88" stop-opacity=".08" />
|
|
28
|
+
<stop offset="100%" stop-color="#9caf88" stop-opacity="0" />
|
|
29
|
+
</radialGradient>
|
|
30
|
+
</defs>
|
|
31
|
+
|
|
32
|
+
{/* zone atmospheres */}
|
|
33
|
+
<ellipse cx="110" cy="130" rx="110" ry="95" fill="url(#zw-you)" />
|
|
34
|
+
<ellipse cx="440" cy="128" rx="160" ry="110" fill="url(#zw-team)" />
|
|
35
|
+
<ellipse cx="790" cy="125" rx="190" ry="120" fill="url(#zw-net)" />
|
|
36
|
+
|
|
37
|
+
{/* rootlet arriving from off-canvas left: you came from somewhere too */}
|
|
38
|
+
<path
|
|
39
|
+
className="fil hair draw"
|
|
40
|
+
pathLength={1}
|
|
41
|
+
style="--d:0s"
|
|
42
|
+
d="M-20,150 C20,146 60,140 96,134"
|
|
43
|
+
/>
|
|
44
|
+
|
|
45
|
+
{/* YOU: the origin */}
|
|
46
|
+
<circle className="gn you" cx="110" cy="130" r="10" style="--d:.1s" />
|
|
47
|
+
|
|
48
|
+
{/* three branches leave You and BECOME the team */}
|
|
49
|
+
<path
|
|
50
|
+
className="fil draw"
|
|
51
|
+
pathLength={1}
|
|
52
|
+
style="--d:.25s"
|
|
53
|
+
d="M121,125 C190,102 260,92 336,96 C360,97 380,99 398,103"
|
|
54
|
+
/>
|
|
55
|
+
<path
|
|
56
|
+
className="fil draw"
|
|
57
|
+
pathLength={1}
|
|
58
|
+
style="--d:.35s"
|
|
59
|
+
d="M122,133 C200,140 280,146 356,152 C372,153 384,156 396,160"
|
|
60
|
+
/>
|
|
61
|
+
<path
|
|
62
|
+
className="fil fine draw"
|
|
63
|
+
pathLength={1}
|
|
64
|
+
style="--d:.45s"
|
|
65
|
+
d="M118,140 C170,175 240,196 320,196 C350,196 380,190 404,180"
|
|
66
|
+
/>
|
|
67
|
+
|
|
68
|
+
{/* TEAM: a cluster with an internal web */}
|
|
69
|
+
<circle className="gn seed" cx="408" cy="104" r="7" style="--d:.55s" />
|
|
70
|
+
<circle className="gn peer" cx="472" cy="80" r="6" style="--d:.65s" />
|
|
71
|
+
<circle
|
|
72
|
+
className="gn peer"
|
|
73
|
+
cx="506"
|
|
74
|
+
cy="132"
|
|
75
|
+
r="6.5"
|
|
76
|
+
style="--d:.72s"
|
|
77
|
+
/>
|
|
78
|
+
<circle className="gn peer" cx="462" cy="182" r="6" style="--d:.8s" />
|
|
79
|
+
<circle
|
|
80
|
+
className="gn peer"
|
|
81
|
+
cx="402"
|
|
82
|
+
cy="163"
|
|
83
|
+
r="5.5"
|
|
84
|
+
style="--d:.87s"
|
|
85
|
+
/>
|
|
86
|
+
<path
|
|
87
|
+
className="fil fine w-team draw"
|
|
88
|
+
pathLength={1}
|
|
89
|
+
style="--d:.7s"
|
|
90
|
+
d="M414,100 C436,90 452,84 466,81"
|
|
91
|
+
/>
|
|
92
|
+
<path
|
|
93
|
+
className="fil fine w-team draw"
|
|
94
|
+
pathLength={1}
|
|
95
|
+
style="--d:.76s"
|
|
96
|
+
d="M477,85 C490,99 498,114 503,126"
|
|
97
|
+
/>
|
|
98
|
+
<path
|
|
99
|
+
className="fil fine w-team draw"
|
|
100
|
+
pathLength={1}
|
|
101
|
+
style="--d:.82s"
|
|
102
|
+
d="M503,138 C492,155 478,170 468,177"
|
|
103
|
+
/>
|
|
104
|
+
<path
|
|
105
|
+
className="fil fine w-team draw"
|
|
106
|
+
pathLength={1}
|
|
107
|
+
style="--d:.88s"
|
|
108
|
+
d="M456,181 C438,177 420,171 408,166"
|
|
109
|
+
/>
|
|
110
|
+
<path
|
|
111
|
+
className="fil fine w-team draw"
|
|
112
|
+
pathLength={1}
|
|
113
|
+
style="--d:.94s"
|
|
114
|
+
d="M404,158 C405,141 406,122 407,111"
|
|
115
|
+
/>
|
|
116
|
+
<path
|
|
117
|
+
className="fil hair w-team draw"
|
|
118
|
+
pathLength={1}
|
|
119
|
+
style="--d:1s"
|
|
120
|
+
d="M413,109 C443,132 470,152 460,177 M470,86 C450,118 430,146 407,160"
|
|
121
|
+
/>
|
|
122
|
+
|
|
123
|
+
{/* the team's outer threads BECOME the network */}
|
|
124
|
+
<path
|
|
125
|
+
className="fil draw"
|
|
126
|
+
pathLength={1}
|
|
127
|
+
style="--d:1.05s"
|
|
128
|
+
d="M512,128 C570,116 630,104 688,96 C700,94 710,93 720,92"
|
|
129
|
+
/>
|
|
130
|
+
<path
|
|
131
|
+
className="fil fine draw"
|
|
132
|
+
pathLength={1}
|
|
133
|
+
style="--d:1.15s"
|
|
134
|
+
d="M478,76 C540,58 610,50 672,56 C690,58 706,62 718,66"
|
|
135
|
+
/>
|
|
136
|
+
<path
|
|
137
|
+
className="fil fine draw"
|
|
138
|
+
pathLength={1}
|
|
139
|
+
style="--d:1.25s"
|
|
140
|
+
d="M468,186 C530,196 600,198 660,188 C680,184 700,178 716,172"
|
|
141
|
+
/>
|
|
142
|
+
|
|
143
|
+
{/* NETWORK: constellation, still growing */}
|
|
144
|
+
<circle className="gn seed" cx="726" cy="90" r="6" style="--d:1.35s" />
|
|
145
|
+
<circle
|
|
146
|
+
className="gn peer"
|
|
147
|
+
cx="782"
|
|
148
|
+
cy="56"
|
|
149
|
+
r="5.5"
|
|
150
|
+
style="--d:1.42s"
|
|
151
|
+
/>
|
|
152
|
+
<circle className="gn peer" cx="838" cy="92" r="6" style="--d:1.5s" />
|
|
153
|
+
<circle
|
|
154
|
+
className="gn peer"
|
|
155
|
+
cx="864"
|
|
156
|
+
cy="150"
|
|
157
|
+
r="5.5"
|
|
158
|
+
style="--d:1.58s"
|
|
159
|
+
/>
|
|
160
|
+
<circle className="gn peer" cx="796" cy="180" r="5" style="--d:1.65s" />
|
|
161
|
+
<circle className="gn peer" cx="726" cy="166" r="5" style="--d:1.72s" />
|
|
162
|
+
<path
|
|
163
|
+
className="fil fine w-net draw"
|
|
164
|
+
pathLength={1}
|
|
165
|
+
style="--d:1.45s"
|
|
166
|
+
d="M731,86 C749,74 764,64 776,59"
|
|
167
|
+
/>
|
|
168
|
+
<path
|
|
169
|
+
className="fil fine w-net draw"
|
|
170
|
+
pathLength={1}
|
|
171
|
+
style="--d:1.52s"
|
|
172
|
+
d="M788,59 C806,68 822,79 832,87"
|
|
173
|
+
/>
|
|
174
|
+
<path
|
|
175
|
+
className="fil fine w-net draw"
|
|
176
|
+
pathLength={1}
|
|
177
|
+
style="--d:1.6s"
|
|
178
|
+
d="M841,98 C851,114 858,132 862,144"
|
|
179
|
+
/>
|
|
180
|
+
<path
|
|
181
|
+
className="fil fine w-net draw"
|
|
182
|
+
pathLength={1}
|
|
183
|
+
style="--d:1.67s"
|
|
184
|
+
d="M858,155 C840,166 820,175 803,178"
|
|
185
|
+
/>
|
|
186
|
+
<path
|
|
187
|
+
className="fil fine w-net draw"
|
|
188
|
+
pathLength={1}
|
|
189
|
+
style="--d:1.74s"
|
|
190
|
+
d="M790,180 C768,177 746,172 732,169"
|
|
191
|
+
/>
|
|
192
|
+
<path
|
|
193
|
+
className="fil hair w-net draw"
|
|
194
|
+
pathLength={1}
|
|
195
|
+
style="--d:1.8s"
|
|
196
|
+
d="M727,161 C727,141 727,116 727,97 M733,93 C766,120 800,146 858,152 M780,62 C788,100 794,140 795,173"
|
|
197
|
+
/>
|
|
198
|
+
|
|
199
|
+
{/* future nodes: dotted, not yet joined */}
|
|
200
|
+
<circle className="gn faint" cx="912" cy="66" r="5" style="--d:1.9s" />
|
|
201
|
+
<circle className="gn faint" cx="936" cy="140" r="4.5" style="--d:2s" />
|
|
202
|
+
<circle className="gn faint" cx="886" cy="205" r="4" style="--d:2.1s" />
|
|
203
|
+
<path
|
|
204
|
+
className="fil hair draw"
|
|
205
|
+
pathLength={1}
|
|
206
|
+
style="--d:1.95s"
|
|
207
|
+
d="M843,88 C868,79 888,72 906,68"
|
|
208
|
+
/>
|
|
209
|
+
<path
|
|
210
|
+
className="fil hair draw"
|
|
211
|
+
pathLength={1}
|
|
212
|
+
style="--d:2.05s"
|
|
213
|
+
d="M869,146 C892,144 912,142 930,140"
|
|
214
|
+
/>
|
|
215
|
+
<path
|
|
216
|
+
className="fil hair draw"
|
|
217
|
+
pathLength={1}
|
|
218
|
+
style="--d:2.15s"
|
|
219
|
+
d="M801,184 C830,193 856,200 880,204"
|
|
220
|
+
/>
|
|
221
|
+
|
|
222
|
+
{/* growth continues past the frame */}
|
|
223
|
+
<path
|
|
224
|
+
className="fil hair draw"
|
|
225
|
+
pathLength={1}
|
|
226
|
+
style="--d:2.2s"
|
|
227
|
+
d="M917,64 C940,60 960,58 990,56"
|
|
228
|
+
/>
|
|
229
|
+
<path
|
|
230
|
+
className="fil hair draw"
|
|
231
|
+
pathLength={1}
|
|
232
|
+
style="--d:2.3s"
|
|
233
|
+
d="M941,141 C958,141 972,140 995,139"
|
|
234
|
+
/>
|
|
235
|
+
|
|
236
|
+
{/* labels along a common baseline */}
|
|
237
|
+
<line className="tick" x1="110" y1="238" x2="110" y2="248" />
|
|
238
|
+
<text
|
|
239
|
+
className="gt-you"
|
|
240
|
+
x="110"
|
|
241
|
+
y="264"
|
|
242
|
+
text-anchor="middle"
|
|
243
|
+
style="--d:.4s"
|
|
244
|
+
>
|
|
245
|
+
You
|
|
246
|
+
</text>
|
|
247
|
+
<text
|
|
248
|
+
className="gt-sub"
|
|
249
|
+
x="110"
|
|
250
|
+
y="281"
|
|
251
|
+
text-anchor="middle"
|
|
252
|
+
style="--d:.5s"
|
|
253
|
+
>
|
|
254
|
+
personal brain · available now
|
|
255
|
+
</text>
|
|
256
|
+
<line className="tick" x1="452" y1="238" x2="452" y2="248" />
|
|
257
|
+
<text
|
|
258
|
+
className="gt-team"
|
|
259
|
+
x="452"
|
|
260
|
+
y="264"
|
|
261
|
+
text-anchor="middle"
|
|
262
|
+
style="--d:1s"
|
|
263
|
+
>
|
|
264
|
+
Team
|
|
265
|
+
</text>
|
|
266
|
+
<text
|
|
267
|
+
className="gt-sub"
|
|
268
|
+
x="452"
|
|
269
|
+
y="281"
|
|
270
|
+
text-anchor="middle"
|
|
271
|
+
style="--d:1.1s"
|
|
272
|
+
>
|
|
273
|
+
shared intelligence · the team bundle
|
|
274
|
+
</text>
|
|
275
|
+
<line className="tick" x1="795" y1="238" x2="795" y2="248" />
|
|
276
|
+
<text
|
|
277
|
+
className="gt-net"
|
|
278
|
+
x="795"
|
|
279
|
+
y="264"
|
|
280
|
+
text-anchor="middle"
|
|
281
|
+
style="--d:1.7s"
|
|
282
|
+
>
|
|
283
|
+
Network
|
|
284
|
+
</text>
|
|
285
|
+
<text
|
|
286
|
+
className="gt-sub"
|
|
287
|
+
x="795"
|
|
288
|
+
y="281"
|
|
289
|
+
text-anchor="middle"
|
|
290
|
+
style="--d:1.8s"
|
|
291
|
+
>
|
|
292
|
+
distributed expertise · emerging
|
|
293
|
+
</text>
|
|
294
|
+
</svg>
|
|
295
|
+
</div>
|
|
296
|
+
);
|
|
297
|
+
}
|