@dataimago/hub-chrome 0.2.0-alpha.6 → 0.2.0-alpha.8
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/dist/index.cjs +183 -72
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +42 -3
- package/dist/index.d.ts +42 -3
- package/dist/index.js +183 -73
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.js
CHANGED
|
@@ -1,7 +1,39 @@
|
|
|
1
1
|
// src/PlatformNav.tsx
|
|
2
2
|
import Link from "next/link";
|
|
3
3
|
import { Logo, NavbarLogo } from "@dataimago/ui";
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
// src/NewTabIndicator.tsx
|
|
6
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
var NEW_TAB_SUFFIX = " (opens in a new tab)";
|
|
8
|
+
function NewTabIndicator({ hideText = false }) {
|
|
9
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
10
|
+
/* @__PURE__ */ jsxs(
|
|
11
|
+
"svg",
|
|
12
|
+
{
|
|
13
|
+
"aria-hidden": "true",
|
|
14
|
+
focusable: "false",
|
|
15
|
+
viewBox: "0 0 24 24",
|
|
16
|
+
width: "0.85em",
|
|
17
|
+
height: "0.85em",
|
|
18
|
+
fill: "none",
|
|
19
|
+
stroke: "currentColor",
|
|
20
|
+
strokeWidth: "2",
|
|
21
|
+
strokeLinecap: "round",
|
|
22
|
+
strokeLinejoin: "round",
|
|
23
|
+
className: "ml-1 inline-block shrink-0 align-baseline",
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ jsx("path", { d: "M15 3h6v6" }),
|
|
26
|
+
/* @__PURE__ */ jsx("path", { d: "M10 14 21 3" }),
|
|
27
|
+
/* @__PURE__ */ jsx("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" })
|
|
28
|
+
]
|
|
29
|
+
}
|
|
30
|
+
),
|
|
31
|
+
hideText ? null : /* @__PURE__ */ jsx("span", { className: "sr-only", children: NEW_TAB_SUFFIX })
|
|
32
|
+
] });
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// src/PlatformNav.tsx
|
|
36
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
5
37
|
var DEFAULT_LINKS = [
|
|
6
38
|
{ href: "/ecosystem", label: "Ecosystem" },
|
|
7
39
|
{ href: "/philosophy", label: "Philosophy" }
|
|
@@ -13,6 +45,7 @@ function PlatformNav({
|
|
|
13
45
|
brandMark = "dataimago_ai_OVERLAP",
|
|
14
46
|
navbarMark,
|
|
15
47
|
aiMonogram,
|
|
48
|
+
dataimago = "shown",
|
|
16
49
|
brandLabel = "dataimago.ai home",
|
|
17
50
|
links = DEFAULT_LINKS,
|
|
18
51
|
cta = DEFAULT_CTA,
|
|
@@ -20,18 +53,18 @@ function PlatformNav({
|
|
|
20
53
|
navLabel = "Primary",
|
|
21
54
|
homeHref = "/"
|
|
22
55
|
}) {
|
|
23
|
-
const propertyMark = navbarMark ? /* @__PURE__ */
|
|
56
|
+
const propertyMark = navbarMark ? /* @__PURE__ */ jsx2(NavbarLogo, { name: navbarMark, "aria-hidden": true, className: MARK_CLASS }) : /* @__PURE__ */ jsx2(Logo, { name: brandMark, variant: "PATH", "aria-hidden": true, className: MARK_CLASS });
|
|
24
57
|
const aiHref = typeof aiMonogram === "object" ? aiMonogram.href : void 0;
|
|
25
58
|
const aiLabel = typeof aiMonogram === "object" ? aiMonogram.label ?? "dataimago" : "dataimago";
|
|
26
|
-
return /* @__PURE__ */
|
|
59
|
+
return /* @__PURE__ */ jsx2("header", { className: "sticky top-0 z-40 border-b border-stone-200 bg-stone-100/95 backdrop-blur-sm", children: /* @__PURE__ */ jsxs2(
|
|
27
60
|
"nav",
|
|
28
61
|
{
|
|
29
62
|
className: "mx-auto flex max-w-7xl items-center justify-between px-6 py-4",
|
|
30
63
|
"aria-label": navLabel,
|
|
31
64
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
-
aiMonogram && (aiHref ? /* @__PURE__ */
|
|
34
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 sm:gap-3", children: [
|
|
66
|
+
aiMonogram && dataimago === "shown" && (aiHref ? /* @__PURE__ */ jsx2(Link, { href: aiHref, "aria-label": aiLabel, className: AI_BUTTON_CLASS, children: /* @__PURE__ */ jsx2(NavbarLogo, { name: "ai-monogram", "aria-hidden": true, className: "[&_svg]:h-6 [&_svg]:w-auto" }) }) : /* @__PURE__ */ jsx2("span", { className: AI_BUTTON_CLASS, "aria-hidden": true, children: /* @__PURE__ */ jsx2(NavbarLogo, { name: "ai-monogram", "aria-hidden": true, className: "[&_svg]:h-6 [&_svg]:w-auto" }) })),
|
|
67
|
+
/* @__PURE__ */ jsx2(
|
|
35
68
|
Link,
|
|
36
69
|
{
|
|
37
70
|
href: homeHref,
|
|
@@ -41,21 +74,24 @@ function PlatformNav({
|
|
|
41
74
|
}
|
|
42
75
|
)
|
|
43
76
|
] }),
|
|
44
|
-
/* @__PURE__ */
|
|
77
|
+
/* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 sm:gap-6", children: [
|
|
45
78
|
links.map(
|
|
46
|
-
({ href, label, external }) => external ? /* @__PURE__ */
|
|
79
|
+
({ href, label, external }) => external ? /* @__PURE__ */ jsxs2(
|
|
47
80
|
"a",
|
|
48
81
|
{
|
|
49
82
|
href,
|
|
50
83
|
className: "btn-ghost hidden sm:inline-flex",
|
|
51
84
|
target: "_blank",
|
|
52
85
|
rel: "noreferrer",
|
|
53
|
-
children:
|
|
86
|
+
children: [
|
|
87
|
+
label,
|
|
88
|
+
/* @__PURE__ */ jsx2(NewTabIndicator, {})
|
|
89
|
+
]
|
|
54
90
|
},
|
|
55
91
|
href
|
|
56
|
-
) : /* @__PURE__ */
|
|
92
|
+
) : /* @__PURE__ */ jsx2(Link, { href, className: "btn-ghost hidden sm:inline-flex", children: label }, href)
|
|
57
93
|
),
|
|
58
|
-
cta && /* @__PURE__ */
|
|
94
|
+
cta && /* @__PURE__ */ jsx2(Link, { href: cta.href, className: "btn-primary", children: cta.label }),
|
|
59
95
|
rightSlot
|
|
60
96
|
] })
|
|
61
97
|
]
|
|
@@ -64,14 +100,14 @@ function PlatformNav({
|
|
|
64
100
|
}
|
|
65
101
|
|
|
66
102
|
// src/GitHubNavButton.tsx
|
|
67
|
-
import { jsx as
|
|
103
|
+
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
68
104
|
var SHELL = "inline-flex min-h-[48px] items-center gap-2 rounded-xl border border-stone-200 bg-stone-50 px-3 text-stone-900 transition hover:bg-stone-100";
|
|
69
105
|
var MENU_ITEM = "flex min-h-[48px] w-full items-center rounded px-2 text-left text-sm text-stone-900 transition hover:bg-stone-100";
|
|
70
106
|
function GithubMark() {
|
|
71
|
-
return /* @__PURE__ */
|
|
107
|
+
return /* @__PURE__ */ jsx3("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", className: "h-5 w-5 shrink-0", fill: "currentColor", children: /* @__PURE__ */ jsx3("path", { d: "M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23a11.5 11.5 0 0 1 3.003-.404c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222 0 1.606-.014 2.898-.014 3.293 0 .322.216.694.825.576C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" }) });
|
|
72
108
|
}
|
|
73
109
|
function LoginGlyph() {
|
|
74
|
-
return /* @__PURE__ */
|
|
110
|
+
return /* @__PURE__ */ jsxs3(
|
|
75
111
|
"svg",
|
|
76
112
|
{
|
|
77
113
|
viewBox: "0 0 24 24",
|
|
@@ -83,9 +119,9 @@ function LoginGlyph() {
|
|
|
83
119
|
strokeLinecap: "round",
|
|
84
120
|
strokeLinejoin: "round",
|
|
85
121
|
children: [
|
|
86
|
-
/* @__PURE__ */
|
|
87
|
-
/* @__PURE__ */
|
|
88
|
-
/* @__PURE__ */
|
|
122
|
+
/* @__PURE__ */ jsx3("path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4" }),
|
|
123
|
+
/* @__PURE__ */ jsx3("polyline", { points: "10 17 15 12 10 7" }),
|
|
124
|
+
/* @__PURE__ */ jsx3("line", { x1: "15", x2: "3", y1: "12", y2: "12" })
|
|
89
125
|
]
|
|
90
126
|
}
|
|
91
127
|
);
|
|
@@ -102,33 +138,36 @@ function GitHubNavButton({
|
|
|
102
138
|
defaultOpen
|
|
103
139
|
}) {
|
|
104
140
|
if (mode === "link") {
|
|
105
|
-
return /* @__PURE__ */
|
|
141
|
+
return /* @__PURE__ */ jsxs3(
|
|
106
142
|
"a",
|
|
107
143
|
{
|
|
108
144
|
href: orgHref,
|
|
109
145
|
target: "_blank",
|
|
110
146
|
rel: "noreferrer",
|
|
111
147
|
className: SHELL,
|
|
112
|
-
"aria-label":
|
|
113
|
-
children:
|
|
148
|
+
"aria-label": `dataimago on GitHub${NEW_TAB_SUFFIX}`,
|
|
149
|
+
children: [
|
|
150
|
+
/* @__PURE__ */ jsx3(GithubMark, {}),
|
|
151
|
+
/* @__PURE__ */ jsx3(NewTabIndicator, { hideText: true })
|
|
152
|
+
]
|
|
114
153
|
}
|
|
115
154
|
);
|
|
116
155
|
}
|
|
117
156
|
if (status !== "authed") {
|
|
118
|
-
return /* @__PURE__ */
|
|
119
|
-
/* @__PURE__ */
|
|
120
|
-
/* @__PURE__ */
|
|
157
|
+
return /* @__PURE__ */ jsxs3("a", { href: signInHref, className: SHELL, "aria-label": "Sign in with GitHub", children: [
|
|
158
|
+
/* @__PURE__ */ jsx3(GithubMark, {}),
|
|
159
|
+
/* @__PURE__ */ jsx3(LoginGlyph, {})
|
|
121
160
|
] });
|
|
122
161
|
}
|
|
123
|
-
return /* @__PURE__ */
|
|
124
|
-
/* @__PURE__ */
|
|
162
|
+
return /* @__PURE__ */ jsxs3("details", { className: "relative", open: defaultOpen, children: [
|
|
163
|
+
/* @__PURE__ */ jsxs3(
|
|
125
164
|
"summary",
|
|
126
165
|
{
|
|
127
166
|
className: `${SHELL} cursor-pointer list-none [&::-webkit-details-marker]:hidden`,
|
|
128
167
|
"aria-label": `GitHub account \u2014 signed in as ${login ?? "your account"}`,
|
|
129
168
|
children: [
|
|
130
|
-
/* @__PURE__ */
|
|
131
|
-
avatarUrl ? /* @__PURE__ */
|
|
169
|
+
/* @__PURE__ */ jsx3(GithubMark, {}),
|
|
170
|
+
avatarUrl ? /* @__PURE__ */ jsx3(
|
|
132
171
|
"img",
|
|
133
172
|
{
|
|
134
173
|
src: avatarUrl,
|
|
@@ -137,23 +176,26 @@ function GitHubNavButton({
|
|
|
137
176
|
width: 28,
|
|
138
177
|
height: 28
|
|
139
178
|
}
|
|
140
|
-
) : /* @__PURE__ */
|
|
179
|
+
) : /* @__PURE__ */ jsxs3("span", { className: "text-sm font-medium", children: [
|
|
141
180
|
"@",
|
|
142
181
|
login
|
|
143
182
|
] })
|
|
144
183
|
]
|
|
145
184
|
}
|
|
146
185
|
),
|
|
147
|
-
/* @__PURE__ */
|
|
148
|
-
/* @__PURE__ */
|
|
186
|
+
/* @__PURE__ */ jsxs3("div", { className: "absolute right-0 z-50 mt-2 w-60 rounded-lg border border-stone-200 bg-stone-50 p-2 shadow-lg", children: [
|
|
187
|
+
/* @__PURE__ */ jsxs3("p", { className: "px-2 py-1 text-sm text-stone-700", children: [
|
|
149
188
|
"Signed in as ",
|
|
150
|
-
/* @__PURE__ */
|
|
189
|
+
/* @__PURE__ */ jsxs3("span", { className: "font-medium text-stone-900", children: [
|
|
151
190
|
"@",
|
|
152
191
|
login
|
|
153
192
|
] })
|
|
154
193
|
] }),
|
|
155
|
-
profileHref && /* @__PURE__ */
|
|
156
|
-
|
|
194
|
+
profileHref && /* @__PURE__ */ jsxs3("a", { href: profileHref, target: "_blank", rel: "noreferrer", className: MENU_ITEM, children: [
|
|
195
|
+
"View your GitHub profile",
|
|
196
|
+
/* @__PURE__ */ jsx3(NewTabIndicator, {})
|
|
197
|
+
] }),
|
|
198
|
+
signOutAction && /* @__PURE__ */ jsx3("form", { method: "POST", action: signOutAction, children: /* @__PURE__ */ jsx3("button", { type: "submit", className: MENU_ITEM, children: "Sign out" }) })
|
|
157
199
|
] })
|
|
158
200
|
] });
|
|
159
201
|
}
|
|
@@ -161,7 +203,7 @@ function GitHubNavButton({
|
|
|
161
203
|
// src/SiteFooter.tsx
|
|
162
204
|
import Link2 from "next/link";
|
|
163
205
|
import { Logo as Logo2 } from "@dataimago/ui";
|
|
164
|
-
import { jsx as
|
|
206
|
+
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
165
207
|
var DEFAULT_TAGLINE = "A living AI-native application ecosystem.";
|
|
166
208
|
var DEFAULT_COLUMNS = [
|
|
167
209
|
{
|
|
@@ -198,21 +240,21 @@ function SiteFooter({
|
|
|
198
240
|
columns = DEFAULT_COLUMNS,
|
|
199
241
|
closingStatement
|
|
200
242
|
}) {
|
|
201
|
-
return /* @__PURE__ */
|
|
243
|
+
return /* @__PURE__ */ jsx4(
|
|
202
244
|
"footer",
|
|
203
245
|
{
|
|
204
246
|
className: "border-t border-stone-800 bg-stone-900 text-stone-400",
|
|
205
247
|
"data-bs-theme": "dark",
|
|
206
|
-
children: /* @__PURE__ */
|
|
207
|
-
/* @__PURE__ */
|
|
208
|
-
/* @__PURE__ */
|
|
209
|
-
/* @__PURE__ */
|
|
248
|
+
children: /* @__PURE__ */ jsxs4("div", { className: "mx-auto max-w-6xl px-6 py-12", children: [
|
|
249
|
+
/* @__PURE__ */ jsxs4("div", { className: "grid gap-8 md:grid-cols-4", children: [
|
|
250
|
+
/* @__PURE__ */ jsxs4("div", { children: [
|
|
251
|
+
/* @__PURE__ */ jsx4(
|
|
210
252
|
Link2,
|
|
211
253
|
{
|
|
212
254
|
href: "/",
|
|
213
255
|
className: "inline-flex items-center text-stone-100 transition hover:opacity-80",
|
|
214
256
|
"aria-label": "dataimago",
|
|
215
|
-
children: /* @__PURE__ */
|
|
257
|
+
children: /* @__PURE__ */ jsx4(
|
|
216
258
|
Logo2,
|
|
217
259
|
{
|
|
218
260
|
name: "dataimago",
|
|
@@ -223,23 +265,26 @@ function SiteFooter({
|
|
|
223
265
|
)
|
|
224
266
|
}
|
|
225
267
|
),
|
|
226
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ jsx4("p", { className: "mt-3 text-xs text-stone-400", children: tagline })
|
|
227
269
|
] }),
|
|
228
|
-
columns.map((col) => /* @__PURE__ */
|
|
229
|
-
/* @__PURE__ */
|
|
230
|
-
/* @__PURE__ */
|
|
270
|
+
columns.map((col) => /* @__PURE__ */ jsxs4("div", { children: [
|
|
271
|
+
/* @__PURE__ */ jsx4("h4", { className: "font-mono text-xs uppercase tracking-wider text-accent-300", children: col.heading }),
|
|
272
|
+
/* @__PURE__ */ jsx4("ul", { className: "mt-3 space-y-2 text-sm", children: col.links.map(({ href, label, external }) => /* @__PURE__ */ jsx4("li", { children: !href ? label : external ? /* @__PURE__ */ jsxs4(
|
|
231
273
|
"a",
|
|
232
274
|
{
|
|
233
275
|
href,
|
|
234
276
|
className: "hover:text-paper-100",
|
|
235
277
|
target: "_blank",
|
|
236
278
|
rel: "noreferrer",
|
|
237
|
-
children:
|
|
279
|
+
children: [
|
|
280
|
+
label,
|
|
281
|
+
/* @__PURE__ */ jsx4(NewTabIndicator, {})
|
|
282
|
+
]
|
|
238
283
|
}
|
|
239
|
-
) : /* @__PURE__ */
|
|
284
|
+
) : /* @__PURE__ */ jsx4(Link2, { href, className: "hover:text-paper-100", children: label }) }, label)) })
|
|
240
285
|
] }, col.heading))
|
|
241
286
|
] }),
|
|
242
|
-
closingStatement ? /* @__PURE__ */
|
|
287
|
+
closingStatement ? /* @__PURE__ */ jsx4("div", { className: "mt-12 border-t border-stone-800 pt-6 text-xs text-stone-400", children: /* @__PURE__ */ jsx4("p", { children: closingStatement }) }) : null
|
|
243
288
|
] })
|
|
244
289
|
}
|
|
245
290
|
);
|
|
@@ -248,7 +293,7 @@ function SiteFooter({
|
|
|
248
293
|
// src/MinimalFooter.tsx
|
|
249
294
|
import Link3 from "next/link";
|
|
250
295
|
import { Logo as Logo3 } from "@dataimago/ui";
|
|
251
|
-
import { jsx as
|
|
296
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
252
297
|
var DEFAULT_BRAND_HREF = "https://dataimago.ai";
|
|
253
298
|
var DEFAULT_EMBODIMENT = "An embodiment of dataimago";
|
|
254
299
|
function MinimalFooter({
|
|
@@ -257,22 +302,22 @@ function MinimalFooter({
|
|
|
257
302
|
links = [],
|
|
258
303
|
copyright
|
|
259
304
|
}) {
|
|
260
|
-
return /* @__PURE__ */
|
|
305
|
+
return /* @__PURE__ */ jsx5(
|
|
261
306
|
"footer",
|
|
262
307
|
{
|
|
263
308
|
className: "border-t border-stone-800 bg-stone-900 text-stone-400",
|
|
264
309
|
"data-bs-theme": "dark",
|
|
265
|
-
children: /* @__PURE__ */
|
|
266
|
-
/* @__PURE__ */
|
|
310
|
+
children: /* @__PURE__ */ jsxs5("div", { className: "mx-auto flex max-w-6xl flex-col items-center gap-4 px-6 py-10 text-center", children: [
|
|
311
|
+
/* @__PURE__ */ jsxs5(
|
|
267
312
|
"a",
|
|
268
313
|
{
|
|
269
314
|
href: brandHref,
|
|
270
315
|
className: "inline-flex flex-col items-center gap-2 text-stone-100 transition hover:opacity-80",
|
|
271
316
|
target: "_blank",
|
|
272
317
|
rel: "noreferrer",
|
|
273
|
-
"aria-label": `${embodimentLabel} \u2014 visit dataimago.ai`,
|
|
318
|
+
"aria-label": `${embodimentLabel} \u2014 visit dataimago.ai${NEW_TAB_SUFFIX}`,
|
|
274
319
|
children: [
|
|
275
|
-
/* @__PURE__ */
|
|
320
|
+
/* @__PURE__ */ jsx5(
|
|
276
321
|
Logo3,
|
|
277
322
|
{
|
|
278
323
|
name: "dataimago",
|
|
@@ -281,38 +326,102 @@ function MinimalFooter({
|
|
|
281
326
|
className: "[&_svg]:h-7 [&_svg]:w-auto"
|
|
282
327
|
}
|
|
283
328
|
),
|
|
284
|
-
/* @__PURE__ */
|
|
329
|
+
/* @__PURE__ */ jsxs5("span", { className: "text-sm text-stone-400", children: [
|
|
330
|
+
embodimentLabel,
|
|
331
|
+
/* @__PURE__ */ jsx5(NewTabIndicator, { hideText: true })
|
|
332
|
+
] })
|
|
285
333
|
]
|
|
286
334
|
}
|
|
287
335
|
),
|
|
288
|
-
links.length > 0 ? /* @__PURE__ */
|
|
336
|
+
links.length > 0 ? /* @__PURE__ */ jsx5(
|
|
289
337
|
"nav",
|
|
290
338
|
{
|
|
291
339
|
className: "flex flex-wrap items-center justify-center gap-x-6 gap-y-2 text-sm",
|
|
292
340
|
"aria-label": "Footer",
|
|
293
341
|
children: links.map(
|
|
294
|
-
({ href, label, external }) => !href ? /* @__PURE__ */
|
|
342
|
+
({ href, label, external }) => !href ? /* @__PURE__ */ jsx5("span", { className: "text-stone-400", children: label }, label) : external ? /* @__PURE__ */ jsxs5(
|
|
295
343
|
"a",
|
|
296
344
|
{
|
|
297
345
|
href,
|
|
298
346
|
className: "text-stone-300 hover:text-paper-100",
|
|
299
347
|
target: "_blank",
|
|
300
348
|
rel: "noreferrer",
|
|
301
|
-
children:
|
|
349
|
+
children: [
|
|
350
|
+
label,
|
|
351
|
+
/* @__PURE__ */ jsx5(NewTabIndicator, {})
|
|
352
|
+
]
|
|
302
353
|
},
|
|
303
354
|
label
|
|
304
|
-
) : /* @__PURE__ */
|
|
355
|
+
) : /* @__PURE__ */ jsx5(Link3, { href, className: "text-stone-300 hover:text-paper-100", children: label }, label)
|
|
305
356
|
)
|
|
306
357
|
}
|
|
307
358
|
) : null,
|
|
308
|
-
copyright ? /* @__PURE__ */
|
|
359
|
+
copyright ? /* @__PURE__ */ jsx5("p", { className: "text-xs text-stone-400", children: copyright }) : null
|
|
360
|
+
] })
|
|
361
|
+
}
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
// src/CopulaFooter.tsx
|
|
366
|
+
import Link4 from "next/link";
|
|
367
|
+
import { CopulaLockup } from "@dataimago/ui";
|
|
368
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
369
|
+
function FooterLink({ href, children, ...props }) {
|
|
370
|
+
return href.startsWith("/") ? /* @__PURE__ */ jsx6(Link4, { href, ...props, children }) : /* @__PURE__ */ jsx6("a", { href, ...props, children });
|
|
371
|
+
}
|
|
372
|
+
function CopulaFooter({
|
|
373
|
+
property,
|
|
374
|
+
propertyLabel,
|
|
375
|
+
propertyHref = "/",
|
|
376
|
+
dataimago = "shown",
|
|
377
|
+
brandHref = "https://dataimago.ai",
|
|
378
|
+
links = [],
|
|
379
|
+
linksLabel = "Legal",
|
|
380
|
+
copyright
|
|
381
|
+
}) {
|
|
382
|
+
return /* @__PURE__ */ jsx6(
|
|
383
|
+
"footer",
|
|
384
|
+
{
|
|
385
|
+
className: "border-t border-stone-800 bg-stone-900 text-stone-400",
|
|
386
|
+
"data-bs-theme": "dark",
|
|
387
|
+
children: /* @__PURE__ */ jsxs6("div", { className: "mx-auto flex max-w-6xl flex-wrap items-center justify-between gap-x-6 gap-y-3 px-6 py-4", children: [
|
|
388
|
+
/* @__PURE__ */ jsx6(
|
|
389
|
+
CopulaLockup,
|
|
390
|
+
{
|
|
391
|
+
property,
|
|
392
|
+
propertyLabel,
|
|
393
|
+
propertyHref,
|
|
394
|
+
dataimago,
|
|
395
|
+
brandHref,
|
|
396
|
+
linkClassName: "text-stone-200 transition hover:text-stone-50",
|
|
397
|
+
badgeClassName: "text-stone-200",
|
|
398
|
+
renderLink: FooterLink
|
|
399
|
+
}
|
|
400
|
+
),
|
|
401
|
+
links.length > 0 ? /* @__PURE__ */ jsx6("nav", { "aria-label": linksLabel, className: "flex flex-wrap items-center gap-x-5 gap-y-2 text-sm", children: links.map(
|
|
402
|
+
({ href, label, external }) => !href ? /* @__PURE__ */ jsx6("span", { className: "text-stone-400", children: label }, label) : external ? /* @__PURE__ */ jsxs6(
|
|
403
|
+
"a",
|
|
404
|
+
{
|
|
405
|
+
href,
|
|
406
|
+
className: "text-stone-400 transition hover:text-stone-200",
|
|
407
|
+
target: "_blank",
|
|
408
|
+
rel: "noreferrer",
|
|
409
|
+
children: [
|
|
410
|
+
label,
|
|
411
|
+
/* @__PURE__ */ jsx6(NewTabIndicator, {})
|
|
412
|
+
]
|
|
413
|
+
},
|
|
414
|
+
label
|
|
415
|
+
) : /* @__PURE__ */ jsx6(Link4, { href, className: "text-stone-400 transition hover:text-stone-200", children: label }, label)
|
|
416
|
+
) }) : null,
|
|
417
|
+
copyright ? /* @__PURE__ */ jsx6("p", { className: "w-full text-xs text-stone-400", children: copyright }) : null
|
|
309
418
|
] })
|
|
310
419
|
}
|
|
311
420
|
);
|
|
312
421
|
}
|
|
313
422
|
|
|
314
423
|
// src/PhilosophyFooter.tsx
|
|
315
|
-
import { Fragment, jsx as
|
|
424
|
+
import { Fragment as Fragment2, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
316
425
|
var DEFAULT_PAIRS = [
|
|
317
426
|
{
|
|
318
427
|
eyebrow: "our belief",
|
|
@@ -341,17 +450,17 @@ function PhilosophyFooter({
|
|
|
341
450
|
density = "default"
|
|
342
451
|
}) {
|
|
343
452
|
const compact = density === "compact";
|
|
344
|
-
const pullQuote = /* @__PURE__ */
|
|
453
|
+
const pullQuote = /* @__PURE__ */ jsxs7(
|
|
345
454
|
"blockquote",
|
|
346
455
|
{
|
|
347
456
|
className: `border-l-2 border-copper-500 pl-6 font-display italic text-paper-100 ${compact ? "" : "mt-16 max-w-prose-wide"}`,
|
|
348
457
|
children: [
|
|
349
|
-
/* @__PURE__ */
|
|
350
|
-
/* @__PURE__ */
|
|
458
|
+
/* @__PURE__ */ jsx7("p", { className: "text-base leading-relaxed", children: quote.text }),
|
|
459
|
+
/* @__PURE__ */ jsxs7("footer", { className: "mt-4 text-sm not-italic text-stone-400", children: [
|
|
351
460
|
"\u2014 ",
|
|
352
461
|
quote.attribution,
|
|
353
462
|
", ",
|
|
354
|
-
/* @__PURE__ */
|
|
463
|
+
/* @__PURE__ */ jsx7("cite", { children: quote.work }),
|
|
355
464
|
" (",
|
|
356
465
|
quote.year,
|
|
357
466
|
")"
|
|
@@ -359,41 +468,41 @@ function PhilosophyFooter({
|
|
|
359
468
|
]
|
|
360
469
|
}
|
|
361
470
|
);
|
|
362
|
-
const closing = /* @__PURE__ */
|
|
471
|
+
const closing = /* @__PURE__ */ jsx7(
|
|
363
472
|
"p",
|
|
364
473
|
{
|
|
365
474
|
className: `text-stone-400 ${compact ? "text-base leading-relaxed" : "mt-8 max-w-prose-wide text-sm"}`,
|
|
366
475
|
children: closingStatement
|
|
367
476
|
}
|
|
368
477
|
);
|
|
369
|
-
return /* @__PURE__ */
|
|
478
|
+
return /* @__PURE__ */ jsx7(
|
|
370
479
|
"section",
|
|
371
480
|
{
|
|
372
481
|
"aria-labelledby": "philosophy-heading",
|
|
373
482
|
className: `border-t border-stone-200 bg-stone-900 text-paper-100 ${compact ? "flex flex-col justify-center py-14 sm:py-16 lg:min-h-[50vh]" : "py-20 sm:py-28"}`,
|
|
374
483
|
"data-bs-theme": "dark",
|
|
375
|
-
children: /* @__PURE__ */
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
/* @__PURE__ */
|
|
378
|
-
i === 0 ? /* @__PURE__ */
|
|
484
|
+
children: /* @__PURE__ */ jsxs7("div", { className: "mx-auto w-full max-w-6xl px-6", children: [
|
|
485
|
+
/* @__PURE__ */ jsx7("div", { className: `grid lg:grid-cols-3 ${compact ? "gap-8" : "gap-12"}`, children: pairs.map((pair, i) => /* @__PURE__ */ jsxs7("div", { children: [
|
|
486
|
+
/* @__PURE__ */ jsx7("p", { className: "font-mono text-xs uppercase tracking-wider text-accent-300", children: pair.eyebrow }),
|
|
487
|
+
i === 0 ? /* @__PURE__ */ jsx7(
|
|
379
488
|
"h3",
|
|
380
489
|
{
|
|
381
490
|
id: "philosophy-heading",
|
|
382
491
|
className: "mt-2 font-display text-xl text-paper-100",
|
|
383
492
|
children: pair.body
|
|
384
493
|
}
|
|
385
|
-
) : /* @__PURE__ */
|
|
494
|
+
) : /* @__PURE__ */ jsx7("p", { className: "mt-2 font-display text-xl text-paper-100", children: pair.body })
|
|
386
495
|
] }, i)) }),
|
|
387
496
|
compact ? (
|
|
388
497
|
// Critique / answer, side by side — Baudrillard's warning and
|
|
389
498
|
// dataimago's structural answer. Filling the width is what pulls the
|
|
390
499
|
// section down to ~half height (the default stacks these in one column,
|
|
391
500
|
// leaving the right half empty).
|
|
392
|
-
/* @__PURE__ */
|
|
501
|
+
/* @__PURE__ */ jsxs7("div", { className: "mt-10 grid gap-x-12 gap-y-8 lg:grid-cols-2", children: [
|
|
393
502
|
pullQuote,
|
|
394
503
|
closing
|
|
395
504
|
] })
|
|
396
|
-
) : /* @__PURE__ */
|
|
505
|
+
) : /* @__PURE__ */ jsxs7(Fragment2, { children: [
|
|
397
506
|
pullQuote,
|
|
398
507
|
closing
|
|
399
508
|
] })
|
|
@@ -402,6 +511,7 @@ function PhilosophyFooter({
|
|
|
402
511
|
);
|
|
403
512
|
}
|
|
404
513
|
export {
|
|
514
|
+
CopulaFooter,
|
|
405
515
|
GitHubNavButton,
|
|
406
516
|
MinimalFooter,
|
|
407
517
|
PhilosophyFooter,
|