@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.cjs
CHANGED
|
@@ -30,6 +30,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var index_exports = {};
|
|
32
32
|
__export(index_exports, {
|
|
33
|
+
CopulaFooter: () => CopulaFooter,
|
|
33
34
|
GitHubNavButton: () => GitHubNavButton,
|
|
34
35
|
MinimalFooter: () => MinimalFooter,
|
|
35
36
|
PhilosophyFooter: () => PhilosophyFooter,
|
|
@@ -41,7 +42,39 @@ module.exports = __toCommonJS(index_exports);
|
|
|
41
42
|
// src/PlatformNav.tsx
|
|
42
43
|
var import_link = __toESM(require("next/link"), 1);
|
|
43
44
|
var import_ui = require("@dataimago/ui");
|
|
45
|
+
|
|
46
|
+
// src/NewTabIndicator.tsx
|
|
44
47
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
48
|
+
var NEW_TAB_SUFFIX = " (opens in a new tab)";
|
|
49
|
+
function NewTabIndicator({ hideText = false }) {
|
|
50
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
51
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
52
|
+
"svg",
|
|
53
|
+
{
|
|
54
|
+
"aria-hidden": "true",
|
|
55
|
+
focusable: "false",
|
|
56
|
+
viewBox: "0 0 24 24",
|
|
57
|
+
width: "0.85em",
|
|
58
|
+
height: "0.85em",
|
|
59
|
+
fill: "none",
|
|
60
|
+
stroke: "currentColor",
|
|
61
|
+
strokeWidth: "2",
|
|
62
|
+
strokeLinecap: "round",
|
|
63
|
+
strokeLinejoin: "round",
|
|
64
|
+
className: "ml-1 inline-block shrink-0 align-baseline",
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M15 3h6v6" }),
|
|
67
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M10 14 21 3" }),
|
|
68
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" })
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
),
|
|
72
|
+
hideText ? null : /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "sr-only", children: NEW_TAB_SUFFIX })
|
|
73
|
+
] });
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// src/PlatformNav.tsx
|
|
77
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
45
78
|
var DEFAULT_LINKS = [
|
|
46
79
|
{ href: "/ecosystem", label: "Ecosystem" },
|
|
47
80
|
{ href: "/philosophy", label: "Philosophy" }
|
|
@@ -53,6 +86,7 @@ function PlatformNav({
|
|
|
53
86
|
brandMark = "dataimago_ai_OVERLAP",
|
|
54
87
|
navbarMark,
|
|
55
88
|
aiMonogram,
|
|
89
|
+
dataimago = "shown",
|
|
56
90
|
brandLabel = "dataimago.ai home",
|
|
57
91
|
links = DEFAULT_LINKS,
|
|
58
92
|
cta = DEFAULT_CTA,
|
|
@@ -60,18 +94,18 @@ function PlatformNav({
|
|
|
60
94
|
navLabel = "Primary",
|
|
61
95
|
homeHref = "/"
|
|
62
96
|
}) {
|
|
63
|
-
const propertyMark = navbarMark ? /* @__PURE__ */ (0,
|
|
97
|
+
const propertyMark = navbarMark ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui.NavbarLogo, { name: navbarMark, "aria-hidden": true, className: MARK_CLASS }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui.Logo, { name: brandMark, variant: "PATH", "aria-hidden": true, className: MARK_CLASS });
|
|
64
98
|
const aiHref = typeof aiMonogram === "object" ? aiMonogram.href : void 0;
|
|
65
99
|
const aiLabel = typeof aiMonogram === "object" ? aiMonogram.label ?? "dataimago" : "dataimago";
|
|
66
|
-
return /* @__PURE__ */ (0,
|
|
100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("header", { className: "sticky top-0 z-40 border-b border-stone-200 bg-stone-100/95 backdrop-blur-sm", children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
67
101
|
"nav",
|
|
68
102
|
{
|
|
69
103
|
className: "mx-auto flex max-w-7xl items-center justify-between px-6 py-4",
|
|
70
104
|
"aria-label": navLabel,
|
|
71
105
|
children: [
|
|
72
|
-
/* @__PURE__ */ (0,
|
|
73
|
-
aiMonogram && (aiHref ? /* @__PURE__ */ (0,
|
|
74
|
-
/* @__PURE__ */ (0,
|
|
106
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex items-center gap-2 sm:gap-3", children: [
|
|
107
|
+
aiMonogram && dataimago === "shown" && (aiHref ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_link.default, { href: aiHref, "aria-label": aiLabel, className: AI_BUTTON_CLASS, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui.NavbarLogo, { name: "ai-monogram", "aria-hidden": true, className: "[&_svg]:h-6 [&_svg]:w-auto" }) }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: AI_BUTTON_CLASS, "aria-hidden": true, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ui.NavbarLogo, { name: "ai-monogram", "aria-hidden": true, className: "[&_svg]:h-6 [&_svg]:w-auto" }) })),
|
|
108
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
75
109
|
import_link.default,
|
|
76
110
|
{
|
|
77
111
|
href: homeHref,
|
|
@@ -81,21 +115,24 @@ function PlatformNav({
|
|
|
81
115
|
}
|
|
82
116
|
)
|
|
83
117
|
] }),
|
|
84
|
-
/* @__PURE__ */ (0,
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: "flex items-center gap-2 sm:gap-6", children: [
|
|
85
119
|
links.map(
|
|
86
|
-
({ href, label, external }) => external ? /* @__PURE__ */ (0,
|
|
120
|
+
({ href, label, external }) => external ? /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
|
|
87
121
|
"a",
|
|
88
122
|
{
|
|
89
123
|
href,
|
|
90
124
|
className: "btn-ghost hidden sm:inline-flex",
|
|
91
125
|
target: "_blank",
|
|
92
126
|
rel: "noreferrer",
|
|
93
|
-
children:
|
|
127
|
+
children: [
|
|
128
|
+
label,
|
|
129
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(NewTabIndicator, {})
|
|
130
|
+
]
|
|
94
131
|
},
|
|
95
132
|
href
|
|
96
|
-
) : /* @__PURE__ */ (0,
|
|
133
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_link.default, { href, className: "btn-ghost hidden sm:inline-flex", children: label }, href)
|
|
97
134
|
),
|
|
98
|
-
cta && /* @__PURE__ */ (0,
|
|
135
|
+
cta && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_link.default, { href: cta.href, className: "btn-primary", children: cta.label }),
|
|
99
136
|
rightSlot
|
|
100
137
|
] })
|
|
101
138
|
]
|
|
@@ -104,14 +141,14 @@ function PlatformNav({
|
|
|
104
141
|
}
|
|
105
142
|
|
|
106
143
|
// src/GitHubNavButton.tsx
|
|
107
|
-
var
|
|
144
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
108
145
|
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";
|
|
109
146
|
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";
|
|
110
147
|
function GithubMark() {
|
|
111
|
-
return /* @__PURE__ */ (0,
|
|
148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", className: "h-5 w-5 shrink-0", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("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" }) });
|
|
112
149
|
}
|
|
113
150
|
function LoginGlyph() {
|
|
114
|
-
return /* @__PURE__ */ (0,
|
|
151
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
115
152
|
"svg",
|
|
116
153
|
{
|
|
117
154
|
viewBox: "0 0 24 24",
|
|
@@ -123,9 +160,9 @@ function LoginGlyph() {
|
|
|
123
160
|
strokeLinecap: "round",
|
|
124
161
|
strokeLinejoin: "round",
|
|
125
162
|
children: [
|
|
126
|
-
/* @__PURE__ */ (0,
|
|
127
|
-
/* @__PURE__ */ (0,
|
|
128
|
-
/* @__PURE__ */ (0,
|
|
163
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("path", { d: "M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4" }),
|
|
164
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("polyline", { points: "10 17 15 12 10 7" }),
|
|
165
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("line", { x1: "15", x2: "3", y1: "12", y2: "12" })
|
|
129
166
|
]
|
|
130
167
|
}
|
|
131
168
|
);
|
|
@@ -142,33 +179,36 @@ function GitHubNavButton({
|
|
|
142
179
|
defaultOpen
|
|
143
180
|
}) {
|
|
144
181
|
if (mode === "link") {
|
|
145
|
-
return /* @__PURE__ */ (0,
|
|
182
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
146
183
|
"a",
|
|
147
184
|
{
|
|
148
185
|
href: orgHref,
|
|
149
186
|
target: "_blank",
|
|
150
187
|
rel: "noreferrer",
|
|
151
188
|
className: SHELL,
|
|
152
|
-
"aria-label":
|
|
153
|
-
children:
|
|
189
|
+
"aria-label": `dataimago on GitHub${NEW_TAB_SUFFIX}`,
|
|
190
|
+
children: [
|
|
191
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(GithubMark, {}),
|
|
192
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(NewTabIndicator, { hideText: true })
|
|
193
|
+
]
|
|
154
194
|
}
|
|
155
195
|
);
|
|
156
196
|
}
|
|
157
197
|
if (status !== "authed") {
|
|
158
|
-
return /* @__PURE__ */ (0,
|
|
159
|
-
/* @__PURE__ */ (0,
|
|
160
|
-
/* @__PURE__ */ (0,
|
|
198
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("a", { href: signInHref, className: SHELL, "aria-label": "Sign in with GitHub", children: [
|
|
199
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(GithubMark, {}),
|
|
200
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(LoginGlyph, {})
|
|
161
201
|
] });
|
|
162
202
|
}
|
|
163
|
-
return /* @__PURE__ */ (0,
|
|
164
|
-
/* @__PURE__ */ (0,
|
|
203
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("details", { className: "relative", open: defaultOpen, children: [
|
|
204
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
165
205
|
"summary",
|
|
166
206
|
{
|
|
167
207
|
className: `${SHELL} cursor-pointer list-none [&::-webkit-details-marker]:hidden`,
|
|
168
208
|
"aria-label": `GitHub account \u2014 signed in as ${login ?? "your account"}`,
|
|
169
209
|
children: [
|
|
170
|
-
/* @__PURE__ */ (0,
|
|
171
|
-
avatarUrl ? /* @__PURE__ */ (0,
|
|
210
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(GithubMark, {}),
|
|
211
|
+
avatarUrl ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
172
212
|
"img",
|
|
173
213
|
{
|
|
174
214
|
src: avatarUrl,
|
|
@@ -177,23 +217,26 @@ function GitHubNavButton({
|
|
|
177
217
|
width: 28,
|
|
178
218
|
height: 28
|
|
179
219
|
}
|
|
180
|
-
) : /* @__PURE__ */ (0,
|
|
220
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "text-sm font-medium", children: [
|
|
181
221
|
"@",
|
|
182
222
|
login
|
|
183
223
|
] })
|
|
184
224
|
]
|
|
185
225
|
}
|
|
186
226
|
),
|
|
187
|
-
/* @__PURE__ */ (0,
|
|
188
|
-
/* @__PURE__ */ (0,
|
|
227
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("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: [
|
|
228
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("p", { className: "px-2 py-1 text-sm text-stone-700", children: [
|
|
189
229
|
"Signed in as ",
|
|
190
|
-
/* @__PURE__ */ (0,
|
|
230
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "font-medium text-stone-900", children: [
|
|
191
231
|
"@",
|
|
192
232
|
login
|
|
193
233
|
] })
|
|
194
234
|
] }),
|
|
195
|
-
profileHref && /* @__PURE__ */ (0,
|
|
196
|
-
|
|
235
|
+
profileHref && /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("a", { href: profileHref, target: "_blank", rel: "noreferrer", className: MENU_ITEM, children: [
|
|
236
|
+
"View your GitHub profile",
|
|
237
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(NewTabIndicator, {})
|
|
238
|
+
] }),
|
|
239
|
+
signOutAction && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("form", { method: "POST", action: signOutAction, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { type: "submit", className: MENU_ITEM, children: "Sign out" }) })
|
|
197
240
|
] })
|
|
198
241
|
] });
|
|
199
242
|
}
|
|
@@ -201,7 +244,7 @@ function GitHubNavButton({
|
|
|
201
244
|
// src/SiteFooter.tsx
|
|
202
245
|
var import_link2 = __toESM(require("next/link"), 1);
|
|
203
246
|
var import_ui2 = require("@dataimago/ui");
|
|
204
|
-
var
|
|
247
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
205
248
|
var DEFAULT_TAGLINE = "A living AI-native application ecosystem.";
|
|
206
249
|
var DEFAULT_COLUMNS = [
|
|
207
250
|
{
|
|
@@ -238,21 +281,21 @@ function SiteFooter({
|
|
|
238
281
|
columns = DEFAULT_COLUMNS,
|
|
239
282
|
closingStatement
|
|
240
283
|
}) {
|
|
241
|
-
return /* @__PURE__ */ (0,
|
|
284
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
242
285
|
"footer",
|
|
243
286
|
{
|
|
244
287
|
className: "border-t border-stone-800 bg-stone-900 text-stone-400",
|
|
245
288
|
"data-bs-theme": "dark",
|
|
246
|
-
children: /* @__PURE__ */ (0,
|
|
247
|
-
/* @__PURE__ */ (0,
|
|
248
|
-
/* @__PURE__ */ (0,
|
|
249
|
-
/* @__PURE__ */ (0,
|
|
289
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "mx-auto max-w-6xl px-6 py-12", children: [
|
|
290
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "grid gap-8 md:grid-cols-4", children: [
|
|
291
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { children: [
|
|
292
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
250
293
|
import_link2.default,
|
|
251
294
|
{
|
|
252
295
|
href: "/",
|
|
253
296
|
className: "inline-flex items-center text-stone-100 transition hover:opacity-80",
|
|
254
297
|
"aria-label": "dataimago",
|
|
255
|
-
children: /* @__PURE__ */ (0,
|
|
298
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
256
299
|
import_ui2.Logo,
|
|
257
300
|
{
|
|
258
301
|
name: "dataimago",
|
|
@@ -263,23 +306,26 @@ function SiteFooter({
|
|
|
263
306
|
)
|
|
264
307
|
}
|
|
265
308
|
),
|
|
266
|
-
/* @__PURE__ */ (0,
|
|
309
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: "mt-3 text-xs text-stone-400", children: tagline })
|
|
267
310
|
] }),
|
|
268
|
-
columns.map((col) => /* @__PURE__ */ (0,
|
|
269
|
-
/* @__PURE__ */ (0,
|
|
270
|
-
/* @__PURE__ */ (0,
|
|
311
|
+
columns.map((col) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { children: [
|
|
312
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h4", { className: "font-mono text-xs uppercase tracking-wider text-accent-300", children: col.heading }),
|
|
313
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("ul", { className: "mt-3 space-y-2 text-sm", children: col.links.map(({ href, label, external }) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("li", { children: !href ? label : external ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
271
314
|
"a",
|
|
272
315
|
{
|
|
273
316
|
href,
|
|
274
317
|
className: "hover:text-paper-100",
|
|
275
318
|
target: "_blank",
|
|
276
319
|
rel: "noreferrer",
|
|
277
|
-
children:
|
|
320
|
+
children: [
|
|
321
|
+
label,
|
|
322
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(NewTabIndicator, {})
|
|
323
|
+
]
|
|
278
324
|
}
|
|
279
|
-
) : /* @__PURE__ */ (0,
|
|
325
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_link2.default, { href, className: "hover:text-paper-100", children: label }) }, label)) })
|
|
280
326
|
] }, col.heading))
|
|
281
327
|
] }),
|
|
282
|
-
closingStatement ? /* @__PURE__ */ (0,
|
|
328
|
+
closingStatement ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "mt-12 border-t border-stone-800 pt-6 text-xs text-stone-400", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { children: closingStatement }) }) : null
|
|
283
329
|
] })
|
|
284
330
|
}
|
|
285
331
|
);
|
|
@@ -288,7 +334,7 @@ function SiteFooter({
|
|
|
288
334
|
// src/MinimalFooter.tsx
|
|
289
335
|
var import_link3 = __toESM(require("next/link"), 1);
|
|
290
336
|
var import_ui3 = require("@dataimago/ui");
|
|
291
|
-
var
|
|
337
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
292
338
|
var DEFAULT_BRAND_HREF = "https://dataimago.ai";
|
|
293
339
|
var DEFAULT_EMBODIMENT = "An embodiment of dataimago";
|
|
294
340
|
function MinimalFooter({
|
|
@@ -297,22 +343,22 @@ function MinimalFooter({
|
|
|
297
343
|
links = [],
|
|
298
344
|
copyright
|
|
299
345
|
}) {
|
|
300
|
-
return /* @__PURE__ */ (0,
|
|
346
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
301
347
|
"footer",
|
|
302
348
|
{
|
|
303
349
|
className: "border-t border-stone-800 bg-stone-900 text-stone-400",
|
|
304
350
|
"data-bs-theme": "dark",
|
|
305
|
-
children: /* @__PURE__ */ (0,
|
|
306
|
-
/* @__PURE__ */ (0,
|
|
351
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "mx-auto flex max-w-6xl flex-col items-center gap-4 px-6 py-10 text-center", children: [
|
|
352
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
307
353
|
"a",
|
|
308
354
|
{
|
|
309
355
|
href: brandHref,
|
|
310
356
|
className: "inline-flex flex-col items-center gap-2 text-stone-100 transition hover:opacity-80",
|
|
311
357
|
target: "_blank",
|
|
312
358
|
rel: "noreferrer",
|
|
313
|
-
"aria-label": `${embodimentLabel} \u2014 visit dataimago.ai`,
|
|
359
|
+
"aria-label": `${embodimentLabel} \u2014 visit dataimago.ai${NEW_TAB_SUFFIX}`,
|
|
314
360
|
children: [
|
|
315
|
-
/* @__PURE__ */ (0,
|
|
361
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
316
362
|
import_ui3.Logo,
|
|
317
363
|
{
|
|
318
364
|
name: "dataimago",
|
|
@@ -321,38 +367,102 @@ function MinimalFooter({
|
|
|
321
367
|
className: "[&_svg]:h-7 [&_svg]:w-auto"
|
|
322
368
|
}
|
|
323
369
|
),
|
|
324
|
-
/* @__PURE__ */ (0,
|
|
370
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "text-sm text-stone-400", children: [
|
|
371
|
+
embodimentLabel,
|
|
372
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(NewTabIndicator, { hideText: true })
|
|
373
|
+
] })
|
|
325
374
|
]
|
|
326
375
|
}
|
|
327
376
|
),
|
|
328
|
-
links.length > 0 ? /* @__PURE__ */ (0,
|
|
377
|
+
links.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
329
378
|
"nav",
|
|
330
379
|
{
|
|
331
380
|
className: "flex flex-wrap items-center justify-center gap-x-6 gap-y-2 text-sm",
|
|
332
381
|
"aria-label": "Footer",
|
|
333
382
|
children: links.map(
|
|
334
|
-
({ href, label, external }) => !href ? /* @__PURE__ */ (0,
|
|
383
|
+
({ href, label, external }) => !href ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "text-stone-400", children: label }, label) : external ? /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
335
384
|
"a",
|
|
336
385
|
{
|
|
337
386
|
href,
|
|
338
387
|
className: "text-stone-300 hover:text-paper-100",
|
|
339
388
|
target: "_blank",
|
|
340
389
|
rel: "noreferrer",
|
|
341
|
-
children:
|
|
390
|
+
children: [
|
|
391
|
+
label,
|
|
392
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(NewTabIndicator, {})
|
|
393
|
+
]
|
|
342
394
|
},
|
|
343
395
|
label
|
|
344
|
-
) : /* @__PURE__ */ (0,
|
|
396
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_link3.default, { href, className: "text-stone-300 hover:text-paper-100", children: label }, label)
|
|
345
397
|
)
|
|
346
398
|
}
|
|
347
399
|
) : null,
|
|
348
|
-
copyright ? /* @__PURE__ */ (0,
|
|
400
|
+
copyright ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("p", { className: "text-xs text-stone-400", children: copyright }) : null
|
|
401
|
+
] })
|
|
402
|
+
}
|
|
403
|
+
);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// src/CopulaFooter.tsx
|
|
407
|
+
var import_link4 = __toESM(require("next/link"), 1);
|
|
408
|
+
var import_ui4 = require("@dataimago/ui");
|
|
409
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
410
|
+
function FooterLink({ href, children, ...props }) {
|
|
411
|
+
return href.startsWith("/") ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_link4.default, { href, ...props, children }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("a", { href, ...props, children });
|
|
412
|
+
}
|
|
413
|
+
function CopulaFooter({
|
|
414
|
+
property,
|
|
415
|
+
propertyLabel,
|
|
416
|
+
propertyHref = "/",
|
|
417
|
+
dataimago = "shown",
|
|
418
|
+
brandHref = "https://dataimago.ai",
|
|
419
|
+
links = [],
|
|
420
|
+
linksLabel = "Legal",
|
|
421
|
+
copyright
|
|
422
|
+
}) {
|
|
423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
424
|
+
"footer",
|
|
425
|
+
{
|
|
426
|
+
className: "border-t border-stone-800 bg-stone-900 text-stone-400",
|
|
427
|
+
"data-bs-theme": "dark",
|
|
428
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("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: [
|
|
429
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
430
|
+
import_ui4.CopulaLockup,
|
|
431
|
+
{
|
|
432
|
+
property,
|
|
433
|
+
propertyLabel,
|
|
434
|
+
propertyHref,
|
|
435
|
+
dataimago,
|
|
436
|
+
brandHref,
|
|
437
|
+
linkClassName: "text-stone-200 transition hover:text-stone-50",
|
|
438
|
+
badgeClassName: "text-stone-200",
|
|
439
|
+
renderLink: FooterLink
|
|
440
|
+
}
|
|
441
|
+
),
|
|
442
|
+
links.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("nav", { "aria-label": linksLabel, className: "flex flex-wrap items-center gap-x-5 gap-y-2 text-sm", children: links.map(
|
|
443
|
+
({ href, label, external }) => !href ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "text-stone-400", children: label }, label) : external ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
444
|
+
"a",
|
|
445
|
+
{
|
|
446
|
+
href,
|
|
447
|
+
className: "text-stone-400 transition hover:text-stone-200",
|
|
448
|
+
target: "_blank",
|
|
449
|
+
rel: "noreferrer",
|
|
450
|
+
children: [
|
|
451
|
+
label,
|
|
452
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(NewTabIndicator, {})
|
|
453
|
+
]
|
|
454
|
+
},
|
|
455
|
+
label
|
|
456
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_link4.default, { href, className: "text-stone-400 transition hover:text-stone-200", children: label }, label)
|
|
457
|
+
) }) : null,
|
|
458
|
+
copyright ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "w-full text-xs text-stone-400", children: copyright }) : null
|
|
349
459
|
] })
|
|
350
460
|
}
|
|
351
461
|
);
|
|
352
462
|
}
|
|
353
463
|
|
|
354
464
|
// src/PhilosophyFooter.tsx
|
|
355
|
-
var
|
|
465
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
356
466
|
var DEFAULT_PAIRS = [
|
|
357
467
|
{
|
|
358
468
|
eyebrow: "our belief",
|
|
@@ -381,17 +491,17 @@ function PhilosophyFooter({
|
|
|
381
491
|
density = "default"
|
|
382
492
|
}) {
|
|
383
493
|
const compact = density === "compact";
|
|
384
|
-
const pullQuote = /* @__PURE__ */ (0,
|
|
494
|
+
const pullQuote = /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
385
495
|
"blockquote",
|
|
386
496
|
{
|
|
387
497
|
className: `border-l-2 border-copper-500 pl-6 font-display italic text-paper-100 ${compact ? "" : "mt-16 max-w-prose-wide"}`,
|
|
388
498
|
children: [
|
|
389
|
-
/* @__PURE__ */ (0,
|
|
390
|
-
/* @__PURE__ */ (0,
|
|
499
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "text-base leading-relaxed", children: quote.text }),
|
|
500
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("footer", { className: "mt-4 text-sm not-italic text-stone-400", children: [
|
|
391
501
|
"\u2014 ",
|
|
392
502
|
quote.attribution,
|
|
393
503
|
", ",
|
|
394
|
-
/* @__PURE__ */ (0,
|
|
504
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("cite", { children: quote.work }),
|
|
395
505
|
" (",
|
|
396
506
|
quote.year,
|
|
397
507
|
")"
|
|
@@ -399,41 +509,41 @@ function PhilosophyFooter({
|
|
|
399
509
|
]
|
|
400
510
|
}
|
|
401
511
|
);
|
|
402
|
-
const closing = /* @__PURE__ */ (0,
|
|
512
|
+
const closing = /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
403
513
|
"p",
|
|
404
514
|
{
|
|
405
515
|
className: `text-stone-400 ${compact ? "text-base leading-relaxed" : "mt-8 max-w-prose-wide text-sm"}`,
|
|
406
516
|
children: closingStatement
|
|
407
517
|
}
|
|
408
518
|
);
|
|
409
|
-
return /* @__PURE__ */ (0,
|
|
519
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
410
520
|
"section",
|
|
411
521
|
{
|
|
412
522
|
"aria-labelledby": "philosophy-heading",
|
|
413
523
|
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"}`,
|
|
414
524
|
"data-bs-theme": "dark",
|
|
415
|
-
children: /* @__PURE__ */ (0,
|
|
416
|
-
/* @__PURE__ */ (0,
|
|
417
|
-
/* @__PURE__ */ (0,
|
|
418
|
-
i === 0 ? /* @__PURE__ */ (0,
|
|
525
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "mx-auto w-full max-w-6xl px-6", children: [
|
|
526
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: `grid lg:grid-cols-3 ${compact ? "gap-8" : "gap-12"}`, children: pairs.map((pair, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
527
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "font-mono text-xs uppercase tracking-wider text-accent-300", children: pair.eyebrow }),
|
|
528
|
+
i === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
419
529
|
"h3",
|
|
420
530
|
{
|
|
421
531
|
id: "philosophy-heading",
|
|
422
532
|
className: "mt-2 font-display text-xl text-paper-100",
|
|
423
533
|
children: pair.body
|
|
424
534
|
}
|
|
425
|
-
) : /* @__PURE__ */ (0,
|
|
535
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "mt-2 font-display text-xl text-paper-100", children: pair.body })
|
|
426
536
|
] }, i)) }),
|
|
427
537
|
compact ? (
|
|
428
538
|
// Critique / answer, side by side — Baudrillard's warning and
|
|
429
539
|
// dataimago's structural answer. Filling the width is what pulls the
|
|
430
540
|
// section down to ~half height (the default stacks these in one column,
|
|
431
541
|
// leaving the right half empty).
|
|
432
|
-
/* @__PURE__ */ (0,
|
|
542
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "mt-10 grid gap-x-12 gap-y-8 lg:grid-cols-2", children: [
|
|
433
543
|
pullQuote,
|
|
434
544
|
closing
|
|
435
545
|
] })
|
|
436
|
-
) : /* @__PURE__ */ (0,
|
|
546
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
437
547
|
pullQuote,
|
|
438
548
|
closing
|
|
439
549
|
] })
|
|
@@ -443,6 +553,7 @@ function PhilosophyFooter({
|
|
|
443
553
|
}
|
|
444
554
|
// Annotate the CommonJS export names for ESM import in node:
|
|
445
555
|
0 && (module.exports = {
|
|
556
|
+
CopulaFooter,
|
|
446
557
|
GitHubNavButton,
|
|
447
558
|
MinimalFooter,
|
|
448
559
|
PhilosophyFooter,
|