@neuronection/assistant-ui 0.8.0 → 0.9.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/CHANGELOG.md +19 -0
- package/README.md +45 -53
- package/dist/Logo-D8DEBUoL.d.ts +11 -0
- package/dist/about.d.ts +124 -0
- package/dist/about.js +3 -0
- package/dist/about.js.map +1 -0
- package/dist/badge.d.ts +1 -1
- package/dist/badge.js +1 -1
- package/dist/card.js +1 -1
- package/dist/chip-list.js +1 -1
- package/dist/chunk-3QGVWTBU.js +475 -0
- package/dist/chunk-3QGVWTBU.js.map +1 -0
- package/dist/chunk-7EG3AUTS.js +3 -0
- package/dist/chunk-7EG3AUTS.js.map +1 -0
- package/dist/chunk-A6RXCBJY.js +3 -0
- package/dist/chunk-A6RXCBJY.js.map +1 -0
- package/dist/chunk-CE7JZP67.js +3 -0
- package/dist/chunk-CE7JZP67.js.map +1 -0
- package/dist/{chunk-ERK53RFJ.js → chunk-CR42EAF4.js} +3 -3
- package/dist/chunk-CR42EAF4.js.map +1 -0
- package/dist/{chunk-SKTLC2XY.js → chunk-F4DP4PIM.js} +2 -2
- package/dist/{chunk-SKTLC2XY.js.map → chunk-F4DP4PIM.js.map} +1 -1
- package/dist/{chunk-TJLELOAW.js → chunk-GVOC3ARM.js} +3 -3
- package/dist/{chunk-TJLELOAW.js.map → chunk-GVOC3ARM.js.map} +1 -1
- package/dist/chunk-Q2JMEAKN.js +340 -0
- package/dist/chunk-Q2JMEAKN.js.map +1 -0
- package/dist/{chunk-BN3YHYYL.js → chunk-QUPGIPTT.js} +2 -2
- package/dist/{chunk-BN3YHYYL.js.map → chunk-QUPGIPTT.js.map} +1 -1
- package/dist/{chunk-HSWSYEFQ.js → chunk-RYE5YCFF.js} +2 -2
- package/dist/{chunk-HSWSYEFQ.js.map → chunk-RYE5YCFF.js.map} +1 -1
- package/dist/chunk-VPLCX2A5.js +3 -0
- package/dist/chunk-VPLCX2A5.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +17 -15
- package/dist/index.js.map +1 -1
- package/dist/logo.d.ts +18 -0
- package/dist/logo.js +3 -0
- package/dist/logo.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/time-list.js +1 -1
- package/dist/time-picker.js +1 -1
- package/package.json +11 -1
- package/dist/chunk-ERK53RFJ.js.map +0 -1
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
import { NeuronectionMark, NeuronectionWordmark, StudyMark, CareerMark, HealthMark } from './chunk-Q2JMEAKN.js';
|
|
2
|
+
import { Card, CardHeader, CardContent } from './chunk-RYE5YCFF.js';
|
|
3
|
+
import { ChipList } from './chunk-QUPGIPTT.js';
|
|
4
|
+
import { Badge } from './chunk-F4DP4PIM.js';
|
|
5
|
+
import { cn } from './chunk-BLJWR4ZV.js';
|
|
6
|
+
import * as React2 from 'react';
|
|
7
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
8
|
+
import { Link2, ArrowUpRight, Globe, Check, Copy } from 'lucide-react';
|
|
9
|
+
import { cva } from 'class-variance-authority';
|
|
10
|
+
|
|
11
|
+
var AboutCard = React2.forwardRef(
|
|
12
|
+
function AboutCard2({ icon, title, description, heading = "h2", className, children, ...props }, ref) {
|
|
13
|
+
const Title = heading;
|
|
14
|
+
return /* @__PURE__ */ jsxs(Card, { ref, "data-as": "about-card", className: cn("h-fit", className), ...props, children: [
|
|
15
|
+
/* @__PURE__ */ jsxs(CardHeader, { className: "flex-row items-center gap-3", children: [
|
|
16
|
+
icon ? /* @__PURE__ */ jsx(
|
|
17
|
+
"span",
|
|
18
|
+
{
|
|
19
|
+
"aria-hidden": true,
|
|
20
|
+
className: "flex size-10 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-secondary)] text-[var(--as-secondary-fg)] [&_svg]:size-5",
|
|
21
|
+
children: icon
|
|
22
|
+
}
|
|
23
|
+
) : null,
|
|
24
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1", children: [
|
|
25
|
+
/* @__PURE__ */ jsx(
|
|
26
|
+
Title,
|
|
27
|
+
{
|
|
28
|
+
"data-as": "card-title",
|
|
29
|
+
className: "font-semibold leading-none tracking-tight",
|
|
30
|
+
children: title
|
|
31
|
+
}
|
|
32
|
+
),
|
|
33
|
+
description ? /* @__PURE__ */ jsx("p", { className: "text-sm text-[var(--as-muted-fg)]", children: description }) : null
|
|
34
|
+
] })
|
|
35
|
+
] }),
|
|
36
|
+
children ? /* @__PURE__ */ jsx(CardContent, { children }) : null
|
|
37
|
+
] });
|
|
38
|
+
}
|
|
39
|
+
);
|
|
40
|
+
var rowClass = "group flex w-full items-center gap-3 rounded-[var(--as-radius)] p-2 text-left transition-colors hover:bg-[var(--as-muted)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]";
|
|
41
|
+
var tileClass = "flex size-10 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-secondary)] text-[var(--as-secondary-fg)] transition-colors group-hover:bg-[color-mix(in_srgb,var(--as-secondary-fg)_14%,transparent)] [&_svg]:size-5";
|
|
42
|
+
var CopyRow = ({
|
|
43
|
+
value,
|
|
44
|
+
icon: Icon = Link2,
|
|
45
|
+
label,
|
|
46
|
+
subtitle,
|
|
47
|
+
copyLabel = "Copy to clipboard",
|
|
48
|
+
copiedLabel = "Copied!"
|
|
49
|
+
}) => {
|
|
50
|
+
const [copied, setCopied] = React2.useState(false);
|
|
51
|
+
React2.useEffect(() => {
|
|
52
|
+
if (!copied) return;
|
|
53
|
+
const timeout = setTimeout(() => setCopied(false), 2e3);
|
|
54
|
+
return () => clearTimeout(timeout);
|
|
55
|
+
}, [copied]);
|
|
56
|
+
const onCopy = () => {
|
|
57
|
+
void navigator.clipboard?.writeText(value).then(() => setCopied(true));
|
|
58
|
+
};
|
|
59
|
+
return /* @__PURE__ */ jsxs(
|
|
60
|
+
"button",
|
|
61
|
+
{
|
|
62
|
+
type: "button",
|
|
63
|
+
onClick: onCopy,
|
|
64
|
+
"data-as": "about-copy-row",
|
|
65
|
+
"aria-label": `${typeof label === "string" ? label : copyLabel} \u2014 ${copyLabel}`,
|
|
66
|
+
className: rowClass,
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: tileClass, children: /* @__PURE__ */ jsx(Icon, { className: "size-5" }) }),
|
|
69
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
70
|
+
/* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-semibold text-[var(--as-fg)] transition-colors group-hover:text-[var(--as-primary)]", children: label }),
|
|
71
|
+
/* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-[var(--as-muted-fg)]", children: copied ? copiedLabel : subtitle })
|
|
72
|
+
] }),
|
|
73
|
+
copied ? /* @__PURE__ */ jsx(Check, { "aria-hidden": true, className: "size-4 shrink-0 text-[var(--as-success)]" }) : /* @__PURE__ */ jsx(
|
|
74
|
+
Copy,
|
|
75
|
+
{
|
|
76
|
+
"aria-hidden": true,
|
|
77
|
+
className: "size-4 shrink-0 text-[var(--as-muted-fg)] opacity-0 transition-opacity group-hover:opacity-100"
|
|
78
|
+
}
|
|
79
|
+
)
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
};
|
|
84
|
+
var AboutLinkList = React2.forwardRef(
|
|
85
|
+
function AboutLinkList2({ links, className, ...props }, ref) {
|
|
86
|
+
let lastGroup;
|
|
87
|
+
return /* @__PURE__ */ jsx(
|
|
88
|
+
"ul",
|
|
89
|
+
{
|
|
90
|
+
ref,
|
|
91
|
+
"data-as": "about-link-list",
|
|
92
|
+
className: cn("flex flex-col gap-0.5", className),
|
|
93
|
+
...props,
|
|
94
|
+
children: links.map((link, index) => {
|
|
95
|
+
const Icon = link.icon ?? Link2;
|
|
96
|
+
const external = link.external !== false;
|
|
97
|
+
const heading = link.group !== void 0 && link.group !== lastGroup ? link.group : null;
|
|
98
|
+
lastGroup = link.group;
|
|
99
|
+
return /* @__PURE__ */ jsxs("li", { children: [
|
|
100
|
+
heading !== null ? /* @__PURE__ */ jsx(
|
|
101
|
+
"p",
|
|
102
|
+
{
|
|
103
|
+
className: cn(
|
|
104
|
+
"mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-[var(--as-muted-fg)]",
|
|
105
|
+
index > 0 && "mt-4"
|
|
106
|
+
),
|
|
107
|
+
children: heading
|
|
108
|
+
}
|
|
109
|
+
) : null,
|
|
110
|
+
link.copyValue && !link.href ? /* @__PURE__ */ jsx(
|
|
111
|
+
CopyRow,
|
|
112
|
+
{
|
|
113
|
+
value: link.copyValue,
|
|
114
|
+
icon: link.icon,
|
|
115
|
+
label: link.label,
|
|
116
|
+
subtitle: link.subtitle,
|
|
117
|
+
copyLabel: link.copyLabel,
|
|
118
|
+
copiedLabel: link.copiedLabel
|
|
119
|
+
}
|
|
120
|
+
) : /* @__PURE__ */ jsxs(
|
|
121
|
+
"a",
|
|
122
|
+
{
|
|
123
|
+
href: link.href,
|
|
124
|
+
...external ? { target: "_blank", rel: "noreferrer" } : {},
|
|
125
|
+
className: rowClass,
|
|
126
|
+
children: [
|
|
127
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: tileClass, children: /* @__PURE__ */ jsx(Icon, { className: "size-5" }) }),
|
|
128
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
129
|
+
/* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-semibold text-[var(--as-fg)] transition-colors group-hover:text-[var(--as-primary)]", children: link.label }),
|
|
130
|
+
link.subtitle ? /* @__PURE__ */ jsx("span", { className: "block truncate text-xs text-[var(--as-muted-fg)]", children: link.subtitle }) : null
|
|
131
|
+
] }),
|
|
132
|
+
external ? /* @__PURE__ */ jsx(
|
|
133
|
+
ArrowUpRight,
|
|
134
|
+
{
|
|
135
|
+
"aria-hidden": true,
|
|
136
|
+
className: "size-4 shrink-0 text-[var(--as-muted-fg)] opacity-60 transition-opacity group-hover:opacity-100"
|
|
137
|
+
}
|
|
138
|
+
) : null
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
)
|
|
142
|
+
] }, index);
|
|
143
|
+
})
|
|
144
|
+
}
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
);
|
|
148
|
+
var noteStyles = cva(
|
|
149
|
+
"rounded-[var(--as-radius-lg)] border p-5 text-sm leading-relaxed",
|
|
150
|
+
{
|
|
151
|
+
variants: {
|
|
152
|
+
tone: {
|
|
153
|
+
info: "border-[color-mix(in_srgb,var(--as-primary)_25%,transparent)] bg-[color-mix(in_srgb,var(--as-primary)_8%,transparent)] text-[var(--as-fg)]",
|
|
154
|
+
warning: "border-[color-mix(in_srgb,var(--as-warning)_35%,transparent)] bg-[color-mix(in_srgb,var(--as-warning)_12%,transparent)] text-[color-mix(in_srgb,var(--as-warning)_72%,var(--as-fg))]"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
defaultVariants: {
|
|
158
|
+
tone: "info"
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
var AboutNote = React2.forwardRef(
|
|
163
|
+
function AboutNote2({ tone, title, className, children, ...props }, ref) {
|
|
164
|
+
return /* @__PURE__ */ jsxs("div", { ref, "data-as": "about-note", "data-as-tone": tone, className: cn(noteStyles({ tone }), className), ...props, children: [
|
|
165
|
+
title ? /* @__PURE__ */ jsx("p", { className: "mb-1.5 font-semibold uppercase tracking-wider", children: title }) : null,
|
|
166
|
+
children
|
|
167
|
+
] });
|
|
168
|
+
}
|
|
169
|
+
);
|
|
170
|
+
var AboutFooterLine = React2.forwardRef(function AboutFooterLine2({ version, copyright, className, children, ...props }, ref) {
|
|
171
|
+
return /* @__PURE__ */ jsxs(
|
|
172
|
+
"p",
|
|
173
|
+
{
|
|
174
|
+
ref,
|
|
175
|
+
"data-as": "about-footer-line",
|
|
176
|
+
className: cn("text-center text-xs text-[var(--as-muted-fg)]", className),
|
|
177
|
+
...props,
|
|
178
|
+
children: [
|
|
179
|
+
version ? /* @__PURE__ */ jsx("span", { children: version }) : null,
|
|
180
|
+
version && (copyright || children) ? /* @__PURE__ */ jsx("br", {}) : null,
|
|
181
|
+
copyright ?? children
|
|
182
|
+
]
|
|
183
|
+
}
|
|
184
|
+
);
|
|
185
|
+
});
|
|
186
|
+
var GitHubGlyph = ({ className }) => /* @__PURE__ */ jsx("svg", { viewBox: "0 0 24 24", fill: "currentColor", "aria-hidden": true, className, children: /* @__PURE__ */ jsx("path", { d: "M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.55 0-.27-.01-1.17-.02-2.12-3.2.7-3.88-1.36-3.88-1.36-.52-1.33-1.28-1.68-1.28-1.68-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.19 1.76 1.19 1.03 1.75 2.69 1.25 3.35.95.1-.74.4-1.25.72-1.53-2.55-.29-5.24-1.28-5.24-5.68 0-1.26.45-2.28 1.19-3.09-.12-.29-.52-1.46.11-3.05 0 0 .97-.31 3.18 1.18a11.1 11.1 0 0 1 5.8 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.23 2.76.12 3.05.74.81 1.18 1.83 1.18 3.09 0 4.42-2.69 5.39-5.25 5.67.41.35.77 1.05.77 2.12 0 1.53-.01 2.76-.01 3.14 0 .3.2.67.8.55A11.51 11.51 0 0 0 23.5 12C23.5 5.65 18.35.5 12 .5Z" }) });
|
|
187
|
+
var marks = {
|
|
188
|
+
health: HealthMark,
|
|
189
|
+
career: CareerMark,
|
|
190
|
+
study: StudyMark
|
|
191
|
+
};
|
|
192
|
+
var defaultMembers = {
|
|
193
|
+
health: {
|
|
194
|
+
name: "Health Assistant",
|
|
195
|
+
tagline: "Self-hosted, privacy-first health records with AI insights",
|
|
196
|
+
href: "https://neuronection.com/en/health/",
|
|
197
|
+
github: "https://github.com/health-assistant-io/health-assistant",
|
|
198
|
+
website: "https://health-assistant.io"
|
|
199
|
+
},
|
|
200
|
+
career: {
|
|
201
|
+
name: "Career Assistant",
|
|
202
|
+
tagline: "Open-source career explorer with transparent AI matching",
|
|
203
|
+
href: "https://neuronection.com/en/career/",
|
|
204
|
+
github: "https://github.com/neuronection/career-assistant"
|
|
205
|
+
},
|
|
206
|
+
study: {
|
|
207
|
+
name: "Study Assistant",
|
|
208
|
+
tagline: "Local-first study workbench that runs in your browser",
|
|
209
|
+
href: "https://neuronection.com/en/study/",
|
|
210
|
+
github: "https://github.com/neuronection/study-assistant"
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
var defaultOrder = ["health", "career", "study"];
|
|
214
|
+
var defaultBlurb = "Neuronection is a family of open-source, self-hosted AI assistants \u2014 one connected ecosystem for life\u2019s important choices. Every assistant in the family shares the same principles: deeply structured data instead of text dumps, AI that explains its reasoning, and you in control of your information.";
|
|
215
|
+
var FamilyBadge = React2.forwardRef(
|
|
216
|
+
function FamilyBadge2({
|
|
217
|
+
current,
|
|
218
|
+
members,
|
|
219
|
+
creator,
|
|
220
|
+
creatorLabel = "Created by",
|
|
221
|
+
hubUrl = "https://neuronection.com",
|
|
222
|
+
label = "Part of the Neuronection family",
|
|
223
|
+
blurb = defaultBlurb,
|
|
224
|
+
ctaLabel = "Visit neuronection.com",
|
|
225
|
+
currentLabel = "Current app",
|
|
226
|
+
githubLabel = "GitHub",
|
|
227
|
+
websiteLabel = "Website",
|
|
228
|
+
theme = "light",
|
|
229
|
+
className,
|
|
230
|
+
...props
|
|
231
|
+
}, ref) {
|
|
232
|
+
const list = members ?? defaultOrder.map((app) => ({ app, ...defaultMembers[app] }));
|
|
233
|
+
return /* @__PURE__ */ jsxs(
|
|
234
|
+
"section",
|
|
235
|
+
{
|
|
236
|
+
ref,
|
|
237
|
+
"data-as": "family-badge",
|
|
238
|
+
"aria-label": label,
|
|
239
|
+
className: cn(
|
|
240
|
+
"flex flex-col gap-5 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface)] p-6 shadow-[var(--as-shadow-1)] sm:p-8",
|
|
241
|
+
className
|
|
242
|
+
),
|
|
243
|
+
...props,
|
|
244
|
+
children: [
|
|
245
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-between gap-x-6 gap-y-4", children: [
|
|
246
|
+
/* @__PURE__ */ jsxs(
|
|
247
|
+
"a",
|
|
248
|
+
{
|
|
249
|
+
href: hubUrl,
|
|
250
|
+
target: "_blank",
|
|
251
|
+
rel: "noreferrer",
|
|
252
|
+
"aria-label": label,
|
|
253
|
+
className: "flex items-center gap-3 rounded-[var(--as-radius)] p-1 transition-opacity hover:opacity-85 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]",
|
|
254
|
+
children: [
|
|
255
|
+
/* @__PURE__ */ jsx(NeuronectionMark, { size: 44, theme }),
|
|
256
|
+
/* @__PURE__ */ jsx(NeuronectionWordmark, { size: 24, theme })
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
),
|
|
260
|
+
/* @__PURE__ */ jsxs(
|
|
261
|
+
"a",
|
|
262
|
+
{
|
|
263
|
+
href: hubUrl,
|
|
264
|
+
target: "_blank",
|
|
265
|
+
rel: "noreferrer",
|
|
266
|
+
"data-as": "family-cta",
|
|
267
|
+
className: "group inline-flex items-center gap-2.5 rounded-full bg-[var(--as-primary)] py-2 pl-5 pr-2 text-sm font-semibold text-[var(--as-primary-fg)] shadow-[var(--as-shadow-2)] transition-shadow hover:shadow-[var(--as-shadow-3)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]",
|
|
268
|
+
children: [
|
|
269
|
+
ctaLabel,
|
|
270
|
+
/* @__PURE__ */ jsx(
|
|
271
|
+
"span",
|
|
272
|
+
{
|
|
273
|
+
"aria-hidden": true,
|
|
274
|
+
className: "flex size-7 items-center justify-center rounded-full bg-[color-mix(in_srgb,var(--as-primary-fg)_20%,transparent)] transition-colors group-hover:bg-[color-mix(in_srgb,var(--as-primary-fg)_32%,transparent)]",
|
|
275
|
+
children: /* @__PURE__ */ jsx(ArrowUpRight, { className: "size-4" })
|
|
276
|
+
}
|
|
277
|
+
)
|
|
278
|
+
]
|
|
279
|
+
}
|
|
280
|
+
)
|
|
281
|
+
] }),
|
|
282
|
+
blurb ? /* @__PURE__ */ jsx("p", { className: "max-w-2xl text-base leading-relaxed text-[var(--as-muted-fg)]", children: blurb }) : null,
|
|
283
|
+
/* @__PURE__ */ jsx("ul", { className: "grid grid-cols-1 gap-x-3 gap-y-4 sm:grid-cols-3", children: list.map((member) => {
|
|
284
|
+
const Mark = marks[member.app];
|
|
285
|
+
const isCurrent = member.app === current;
|
|
286
|
+
const card = cn(
|
|
287
|
+
"group flex h-full flex-col rounded-[var(--as-radius)] border p-5 pt-6 text-center transition-[color,box-shadow] hover:shadow-[var(--as-shadow-2)]",
|
|
288
|
+
isCurrent ? "border-[var(--as-primary)] bg-[color-mix(in_srgb,var(--as-primary)_7%,transparent)] ring-2 ring-[var(--as-primary)]" : "border-[var(--as-border)] bg-[var(--as-muted)] hover:border-[var(--as-primary)]"
|
|
289
|
+
);
|
|
290
|
+
const linkExtras = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]";
|
|
291
|
+
const header = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
292
|
+
/* @__PURE__ */ jsx(Mark, { size: 56, theme }),
|
|
293
|
+
member.href && !isCurrent ? /* @__PURE__ */ jsx("span", { className: "text-base font-bold leading-snug text-[var(--as-primary)] underline decoration-transparent underline-offset-4 transition-colors group-hover:decoration-current", children: member.name }) : /* @__PURE__ */ jsx("span", { className: "text-base font-bold leading-snug text-[var(--as-fg)]", children: member.name }),
|
|
294
|
+
member.tagline ? /* @__PURE__ */ jsx("span", { className: "text-sm leading-relaxed text-[var(--as-muted-fg)]", children: member.tagline }) : null,
|
|
295
|
+
isCurrent ? /* @__PURE__ */ jsx("span", { className: "mt-1 rounded-full bg-[var(--as-primary)] px-2.5 py-1 text-[11px] font-semibold uppercase tracking-wide text-[var(--as-primary-fg)]", children: currentLabel }) : null
|
|
296
|
+
] });
|
|
297
|
+
return /* @__PURE__ */ jsx("li", { "data-current": isCurrent ? "true" : void 0, className: "flex", children: /* @__PURE__ */ jsxs("div", { className: cn(card, "w-full"), children: [
|
|
298
|
+
member.href && !isCurrent ? /* @__PURE__ */ jsx(
|
|
299
|
+
"a",
|
|
300
|
+
{
|
|
301
|
+
href: member.href,
|
|
302
|
+
target: "_blank",
|
|
303
|
+
rel: "noreferrer",
|
|
304
|
+
className: cn("flex flex-1 flex-col items-center gap-2.5", linkExtras),
|
|
305
|
+
children: header
|
|
306
|
+
}
|
|
307
|
+
) : /* @__PURE__ */ jsx("div", { className: "flex flex-1 flex-col items-center gap-2.5", children: header }),
|
|
308
|
+
member.github || member.website ? /* @__PURE__ */ jsxs("div", { className: "mt-5 flex items-center justify-center gap-2 border-t border-[var(--as-border)] pt-4", children: [
|
|
309
|
+
member.github ? /* @__PURE__ */ jsxs(
|
|
310
|
+
"a",
|
|
311
|
+
{
|
|
312
|
+
href: member.github,
|
|
313
|
+
target: "_blank",
|
|
314
|
+
rel: "noreferrer",
|
|
315
|
+
"aria-label": `${member.name} on GitHub`,
|
|
316
|
+
className: "inline-flex items-center gap-1.5 rounded-full border border-[var(--as-border)] bg-[var(--as-surface)] px-3.5 py-2 text-xs font-semibold text-[var(--as-muted-fg)] transition-colors hover:border-[var(--as-primary)] hover:text-[var(--as-primary)] focus-visible:border-[var(--as-primary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]",
|
|
317
|
+
children: [
|
|
318
|
+
/* @__PURE__ */ jsx(GitHubGlyph, { className: "size-4" }),
|
|
319
|
+
githubLabel
|
|
320
|
+
]
|
|
321
|
+
}
|
|
322
|
+
) : null,
|
|
323
|
+
member.website ? /* @__PURE__ */ jsxs(
|
|
324
|
+
"a",
|
|
325
|
+
{
|
|
326
|
+
href: member.website,
|
|
327
|
+
target: "_blank",
|
|
328
|
+
rel: "noreferrer",
|
|
329
|
+
"aria-label": `${member.name} website`,
|
|
330
|
+
className: "inline-flex items-center gap-1.5 rounded-full border border-[var(--as-border)] bg-[var(--as-surface)] px-3.5 py-2 text-xs font-semibold text-[var(--as-muted-fg)] transition-colors hover:border-[var(--as-primary)] hover:text-[var(--as-primary)] focus-visible:border-[var(--as-primary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]",
|
|
331
|
+
children: [
|
|
332
|
+
/* @__PURE__ */ jsx(Globe, { "aria-hidden": true, className: "size-4" }),
|
|
333
|
+
websiteLabel
|
|
334
|
+
]
|
|
335
|
+
}
|
|
336
|
+
) : null
|
|
337
|
+
] }) : null
|
|
338
|
+
] }) }, member.app);
|
|
339
|
+
}) }),
|
|
340
|
+
creator ? /* @__PURE__ */ jsxs("p", { className: "flex flex-wrap items-center justify-center gap-x-1.5 gap-y-1 border-t border-[var(--as-border)] pt-4 text-xs text-[var(--as-muted-fg)]", children: [
|
|
341
|
+
/* @__PURE__ */ jsx("span", { children: creatorLabel }),
|
|
342
|
+
creator.href ? /* @__PURE__ */ jsx(
|
|
343
|
+
"a",
|
|
344
|
+
{
|
|
345
|
+
href: creator.href,
|
|
346
|
+
target: "_blank",
|
|
347
|
+
rel: "noreferrer",
|
|
348
|
+
className: "rounded font-semibold text-[var(--as-fg)] transition-colors hover:text-[var(--as-primary)] hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]",
|
|
349
|
+
children: creator.name
|
|
350
|
+
}
|
|
351
|
+
) : /* @__PURE__ */ jsx("span", { className: "font-semibold text-[var(--as-fg)]", children: creator.name }),
|
|
352
|
+
creator.role ? /* @__PURE__ */ jsxs("span", { children: [
|
|
353
|
+
"\xB7 ",
|
|
354
|
+
creator.role
|
|
355
|
+
] }) : null
|
|
356
|
+
] }) : null
|
|
357
|
+
]
|
|
358
|
+
}
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
);
|
|
362
|
+
var TechChips = React2.forwardRef(
|
|
363
|
+
function TechChips2({ items, className, ...props }, ref) {
|
|
364
|
+
const cleaned = items.filter((item) => Boolean(item));
|
|
365
|
+
if (cleaned.length === 0) return null;
|
|
366
|
+
return /* @__PURE__ */ jsx("div", { ref, "data-as": "tech-chips", className: cn(className), ...props, children: /* @__PURE__ */ jsx(ChipList, { items: cleaned, variant: "neutral" }) });
|
|
367
|
+
}
|
|
368
|
+
);
|
|
369
|
+
var marks2 = {
|
|
370
|
+
health: HealthMark,
|
|
371
|
+
career: CareerMark,
|
|
372
|
+
study: StudyMark
|
|
373
|
+
};
|
|
374
|
+
var AboutPanel = React2.forwardRef(
|
|
375
|
+
function AboutPanel2({
|
|
376
|
+
appName,
|
|
377
|
+
familyCurrent,
|
|
378
|
+
logo,
|
|
379
|
+
tagline,
|
|
380
|
+
description,
|
|
381
|
+
version,
|
|
382
|
+
license,
|
|
383
|
+
licenseTitle = "License & open source",
|
|
384
|
+
licenseLinkLabel = "Read license",
|
|
385
|
+
links,
|
|
386
|
+
linksTitle = "Links",
|
|
387
|
+
creator,
|
|
388
|
+
creatorTitle = "Created by",
|
|
389
|
+
tech,
|
|
390
|
+
techTitle = "Built with",
|
|
391
|
+
note,
|
|
392
|
+
familyMembers,
|
|
393
|
+
hubUrl,
|
|
394
|
+
familyLabel,
|
|
395
|
+
familyBlurb,
|
|
396
|
+
familyCtaLabel,
|
|
397
|
+
familyCurrentLabel,
|
|
398
|
+
theme = "light",
|
|
399
|
+
copyright,
|
|
400
|
+
className,
|
|
401
|
+
children,
|
|
402
|
+
...props
|
|
403
|
+
}, ref) {
|
|
404
|
+
const DefaultMark = familyCurrent ? marks2[familyCurrent] : null;
|
|
405
|
+
return /* @__PURE__ */ jsxs(
|
|
406
|
+
"div",
|
|
407
|
+
{
|
|
408
|
+
ref,
|
|
409
|
+
"data-as": "about-panel",
|
|
410
|
+
className: cn("flex w-full flex-col gap-6", className),
|
|
411
|
+
...props,
|
|
412
|
+
children: [
|
|
413
|
+
/* @__PURE__ */ jsxs("section", { className: "flex items-start gap-5", children: [
|
|
414
|
+
logo ?? (DefaultMark ? /* @__PURE__ */ jsx(DefaultMark, { size: 72, theme }) : null),
|
|
415
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5 pt-1", children: [
|
|
416
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-2.5", children: [
|
|
417
|
+
/* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold tracking-tight text-[var(--as-fg)]", children: appName }),
|
|
418
|
+
version ? /* @__PURE__ */ jsxs(Badge, { variant: "outline", "data-as": "about-version", children: [
|
|
419
|
+
"v",
|
|
420
|
+
version
|
|
421
|
+
] }) : null
|
|
422
|
+
] }),
|
|
423
|
+
tagline ? /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-[var(--as-muted-fg)]", children: tagline }) : null,
|
|
424
|
+
description ? /* @__PURE__ */ jsx("p", { className: "max-w-2xl text-sm leading-relaxed text-[var(--as-muted-fg)]", children: description }) : null
|
|
425
|
+
] })
|
|
426
|
+
] }),
|
|
427
|
+
creator || license || links?.length ? /* @__PURE__ */ jsxs("section", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [
|
|
428
|
+
creator && !familyCurrent ? /* @__PURE__ */ jsxs(AboutCard, { title: creatorTitle, children: [
|
|
429
|
+
/* @__PURE__ */ jsx("p", { className: "font-semibold text-[var(--as-fg)]", children: creator.name }),
|
|
430
|
+
creator.role ? /* @__PURE__ */ jsx("p", { className: "mb-3 text-sm text-[var(--as-muted-fg)]", children: creator.role }) : null,
|
|
431
|
+
creator.links?.length ? /* @__PURE__ */ jsx(AboutLinkList, { links: creator.links }) : null
|
|
432
|
+
] }) : null,
|
|
433
|
+
license ? /* @__PURE__ */ jsx(AboutCard, { title: licenseTitle, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-3 rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-muted)] px-4 py-3", children: [
|
|
434
|
+
/* @__PURE__ */ jsx("span", { className: "font-semibold text-[var(--as-fg)]", children: license.name }),
|
|
435
|
+
license.href ? /* @__PURE__ */ jsx(
|
|
436
|
+
"a",
|
|
437
|
+
{
|
|
438
|
+
href: license.href,
|
|
439
|
+
target: "_blank",
|
|
440
|
+
rel: "noreferrer",
|
|
441
|
+
className: "text-xs font-bold text-[var(--as-primary)] hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]",
|
|
442
|
+
children: licenseLinkLabel
|
|
443
|
+
}
|
|
444
|
+
) : null
|
|
445
|
+
] }) }) : null,
|
|
446
|
+
links?.length ? /* @__PURE__ */ jsx(AboutCard, { title: linksTitle, children: /* @__PURE__ */ jsx(AboutLinkList, { links }) }) : null
|
|
447
|
+
] }) : null,
|
|
448
|
+
tech?.length ? /* @__PURE__ */ jsx(AboutCard, { title: techTitle, children: /* @__PURE__ */ jsx(TechChips, { items: tech }) }) : null,
|
|
449
|
+
note ? /* @__PURE__ */ jsx(AboutNote, { tone: note.tone, title: note.title, children: note.children }) : null,
|
|
450
|
+
familyCurrent ? /* @__PURE__ */ jsx(
|
|
451
|
+
FamilyBadge,
|
|
452
|
+
{
|
|
453
|
+
current: familyCurrent,
|
|
454
|
+
members: familyMembers,
|
|
455
|
+
creator: creator ? { name: creator.name, role: creator.role, href: creator.href } : void 0,
|
|
456
|
+
creatorLabel: creatorTitle,
|
|
457
|
+
hubUrl,
|
|
458
|
+
label: familyLabel,
|
|
459
|
+
blurb: familyBlurb,
|
|
460
|
+
ctaLabel: familyCtaLabel,
|
|
461
|
+
currentLabel: familyCurrentLabel,
|
|
462
|
+
theme
|
|
463
|
+
}
|
|
464
|
+
) : null,
|
|
465
|
+
version || copyright ? /* @__PURE__ */ jsx(AboutFooterLine, { version, copyright }) : null,
|
|
466
|
+
children
|
|
467
|
+
]
|
|
468
|
+
}
|
|
469
|
+
);
|
|
470
|
+
}
|
|
471
|
+
);
|
|
472
|
+
|
|
473
|
+
export { AboutCard, AboutFooterLine, AboutLinkList, AboutNote, AboutPanel, FamilyBadge, TechChips };
|
|
474
|
+
//# sourceMappingURL=chunk-3QGVWTBU.js.map
|
|
475
|
+
//# sourceMappingURL=chunk-3QGVWTBU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/about/AboutCard.tsx","../src/components/about/AboutLinkList.tsx","../src/components/about/AboutNote.tsx","../src/components/about/AboutFooterLine.tsx","../src/components/about/FamilyBadge.tsx","../src/components/about/TechChips.tsx","../src/components/about/AboutPanel.tsx"],"names":["React","AboutCard","jsxs","jsx","AboutLinkList","React3","AboutNote","React4","AboutFooterLine","React5","FamilyBadge","ArrowUpRight","React6","TechChips","marks","React7","AboutPanel"],"mappings":"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","file":"chunk-3QGVWTBU.js","sourcesContent":["import * as React from 'react'\nimport { cn } from '../../lib/utils'\nimport { Card, CardContent, CardHeader } from '../card/Card'\n\nexport interface AboutCardProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n icon?: React.ReactNode\n title: React.ReactNode\n description?: React.ReactNode\n heading?: 'h2' | 'h3' | 'h4'\n}\n\nexport const AboutCard = React.forwardRef<HTMLDivElement, AboutCardProps>(\n function AboutCard({ icon, title, description, heading = 'h2', className, children, ...props }, ref) {\n const Title = heading\n return (\n <Card ref={ref} data-as=\"about-card\" className={cn('h-fit', className)} {...props}>\n <CardHeader className=\"flex-row items-center gap-3\">\n {icon ? (\n <span\n aria-hidden\n className=\"flex size-10 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-secondary)] text-[var(--as-secondary-fg)] [&_svg]:size-5\"\n >\n {icon}\n </span>\n ) : null}\n <div className=\"flex flex-col gap-1\">\n <Title\n data-as=\"card-title\"\n className=\"font-semibold leading-none tracking-tight\"\n >\n {title}\n </Title>\n {description ? (\n <p className=\"text-sm text-[var(--as-muted-fg)]\">{description}</p>\n ) : null}\n </div>\n </CardHeader>\n {children ? <CardContent>{children}</CardContent> : null}\n </Card>\n )\n },\n)\n","import * as React from 'react'\nimport { ArrowUpRight, Check, Copy, Link2 } from 'lucide-react'\nimport { cn } from '../../lib/utils'\n\nexport interface AboutLinkItem {\n href?: string\n label: React.ReactNode\n subtitle?: React.ReactNode\n icon?: React.ComponentType<{ className?: string }>\n external?: boolean\n group?: React.ReactNode\n copyValue?: string\n copyLabel?: string\n copiedLabel?: string\n}\n\nexport interface AboutLinkListProps extends React.ComponentProps<'ul'> {\n links: ReadonlyArray<AboutLinkItem>\n}\n\nconst rowClass =\n 'group flex w-full items-center gap-3 rounded-[var(--as-radius)] p-2 text-left transition-colors hover:bg-[var(--as-muted)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]'\n\nconst tileClass =\n 'flex size-10 shrink-0 items-center justify-center rounded-[var(--as-radius)] bg-[var(--as-secondary)] text-[var(--as-secondary-fg)] transition-colors group-hover:bg-[color-mix(in_srgb,var(--as-secondary-fg)_14%,transparent)] [&_svg]:size-5'\n\ninterface CopyRowProps {\n value: string\n icon?: React.ComponentType<{ className?: string }>\n label?: React.ReactNode\n subtitle?: React.ReactNode\n copyLabel?: string\n copiedLabel?: string\n}\n\nconst CopyRow = ({\n value,\n icon: Icon = Link2,\n label,\n subtitle,\n copyLabel = 'Copy to clipboard',\n copiedLabel = 'Copied!',\n}: CopyRowProps) => {\n const [copied, setCopied] = React.useState(false)\n React.useEffect(() => {\n if (!copied) return\n const timeout = setTimeout(() => setCopied(false), 2000)\n return () => clearTimeout(timeout)\n }, [copied])\n const onCopy = () => {\n void navigator.clipboard?.writeText(value).then(() => setCopied(true))\n }\n return (\n <button\n type=\"button\"\n onClick={onCopy}\n data-as=\"about-copy-row\"\n aria-label={`${typeof label === 'string' ? label : copyLabel} — ${copyLabel}`}\n className={rowClass}\n >\n <span aria-hidden className={tileClass}>\n <Icon className=\"size-5\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-sm font-semibold text-[var(--as-fg)] transition-colors group-hover:text-[var(--as-primary)]\">\n {label}\n </span>\n <span className=\"block truncate text-xs text-[var(--as-muted-fg)]\">\n {copied ? copiedLabel : subtitle}\n </span>\n </span>\n {copied ? (\n <Check aria-hidden className=\"size-4 shrink-0 text-[var(--as-success)]\" />\n ) : (\n <Copy\n aria-hidden\n className=\"size-4 shrink-0 text-[var(--as-muted-fg)] opacity-0 transition-opacity group-hover:opacity-100\"\n />\n )}\n </button>\n )\n}\n\nexport const AboutLinkList = React.forwardRef<HTMLUListElement, AboutLinkListProps>(\n function AboutLinkList({ links, className, ...props }, ref) {\n let lastGroup: React.ReactNode | undefined\n return (\n <ul\n ref={ref}\n data-as=\"about-link-list\"\n className={cn('flex flex-col gap-0.5', className)}\n {...props}\n >\n {links.map((link, index) => {\n const Icon = link.icon ?? Link2\n const external = link.external !== false\n const heading =\n link.group !== undefined && link.group !== lastGroup ? link.group : null\n lastGroup = link.group\n return (\n <li key={index}>\n {heading !== null ? (\n <p\n className={cn(\n 'mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-[var(--as-muted-fg)]',\n index > 0 && 'mt-4',\n )}\n >\n {heading}\n </p>\n ) : null}\n {link.copyValue && !link.href ? (\n <CopyRow\n value={link.copyValue}\n icon={link.icon}\n label={link.label}\n subtitle={link.subtitle}\n copyLabel={link.copyLabel}\n copiedLabel={link.copiedLabel}\n />\n ) : (\n <a\n href={link.href}\n {...(external ? { target: '_blank', rel: 'noreferrer' } : {})}\n className={rowClass}\n >\n <span aria-hidden className={tileClass}>\n <Icon className=\"size-5\" />\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-sm font-semibold text-[var(--as-fg)] transition-colors group-hover:text-[var(--as-primary)]\">\n {link.label}\n </span>\n {link.subtitle ? (\n <span className=\"block truncate text-xs text-[var(--as-muted-fg)]\">\n {link.subtitle}\n </span>\n ) : null}\n </span>\n {external ? (\n <ArrowUpRight\n aria-hidden\n className=\"size-4 shrink-0 text-[var(--as-muted-fg)] opacity-60 transition-opacity group-hover:opacity-100\"\n />\n ) : null}\n </a>\n )}\n </li>\n )\n })}\n </ul>\n )\n },\n)\n","import * as React from 'react'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { cn } from '../../lib/utils'\n\nconst noteStyles = cva(\n 'rounded-[var(--as-radius-lg)] border p-5 text-sm leading-relaxed',\n {\n variants: {\n tone: {\n info: 'border-[color-mix(in_srgb,var(--as-primary)_25%,transparent)] bg-[color-mix(in_srgb,var(--as-primary)_8%,transparent)] text-[var(--as-fg)]',\n warning:\n 'border-[color-mix(in_srgb,var(--as-warning)_35%,transparent)] bg-[color-mix(in_srgb,var(--as-warning)_12%,transparent)] text-[color-mix(in_srgb,var(--as-warning)_72%,var(--as-fg))]',\n },\n },\n defaultVariants: {\n tone: 'info',\n },\n },\n)\n\nexport interface AboutNoteProps\n extends Omit<React.ComponentProps<'div'>, 'title'>,\n VariantProps<typeof noteStyles> {\n title?: React.ReactNode\n}\n\nexport const AboutNote = React.forwardRef<HTMLDivElement, AboutNoteProps>(\n function AboutNote({ tone, title, className, children, ...props }, ref) {\n return (\n <div ref={ref} data-as=\"about-note\" data-as-tone={tone} className={cn(noteStyles({ tone }), className)} {...props}>\n {title ? <p className=\"mb-1.5 font-semibold uppercase tracking-wider\">{title}</p> : null}\n {children}\n </div>\n )\n },\n)\n","import * as React from 'react'\nimport { cn } from '../../lib/utils'\n\nexport interface AboutFooterLineProps extends React.ComponentProps<'p'> {\n version?: string\n copyright?: React.ReactNode\n}\n\nexport const AboutFooterLine = React.forwardRef<\n HTMLParagraphElement,\n AboutFooterLineProps\n>(function AboutFooterLine({ version, copyright, className, children, ...props }, ref) {\n return (\n <p\n ref={ref}\n data-as=\"about-footer-line\"\n className={cn('text-center text-xs text-[var(--as-muted-fg)]', className)}\n {...props}\n >\n {version ? <span>{version}</span> : null}\n {version && (copyright || children) ? <br /> : null}\n {copyright ?? children}\n </p>\n )\n})\n","import * as React from 'react'\nimport { ArrowUpRight, Globe } from 'lucide-react'\nimport { cn } from '../../lib/utils'\nimport type { LogoTheme } from '../logo/Logo'\nimport { NeuronectionMark } from '../logo/NeuronectionMark'\nimport { NeuronectionWordmark } from '../logo/NeuronectionWordmark'\nimport { CareerMark } from '../logo/CareerMark'\nimport { HealthMark } from '../logo/HealthMark'\nimport { StudyMark } from '../logo/StudyMark'\n\nconst GitHubGlyph = ({ className }: { className?: string }) => (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden className={className}>\n <path d=\"M12 .5C5.65.5.5 5.65.5 12c0 5.08 3.29 9.39 7.86 10.91.58.11.79-.25.79-.55 0-.27-.01-1.17-.02-2.12-3.2.7-3.88-1.36-3.88-1.36-.52-1.33-1.28-1.68-1.28-1.68-1.04-.71.08-.7.08-.7 1.15.08 1.76 1.19 1.76 1.19 1.03 1.75 2.69 1.25 3.35.95.1-.74.4-1.25.72-1.53-2.55-.29-5.24-1.28-5.24-5.68 0-1.26.45-2.28 1.19-3.09-.12-.29-.52-1.46.11-3.05 0 0 .97-.31 3.18 1.18a11.1 11.1 0 0 1 5.8 0c2.2-1.49 3.17-1.18 3.17-1.18.63 1.59.23 2.76.12 3.05.74.81 1.18 1.83 1.18 3.09 0 4.42-2.69 5.39-5.25 5.67.41.35.77 1.05.77 2.12 0 1.53-.01 2.76-.01 3.14 0 .3.2.67.8.55A11.51 11.51 0 0 0 23.5 12C23.5 5.65 18.35.5 12 .5Z\" />\n </svg>\n)\n\nexport type FamilyApp = 'health' | 'career' | 'study'\n\nexport interface FamilyMember {\n app: FamilyApp\n name: string\n tagline?: string\n href?: string\n github?: string\n website?: string\n}\n\nexport interface FamilyCreator {\n name: React.ReactNode\n role?: React.ReactNode\n href?: string\n}\n\nexport interface FamilyBadgeProps extends Omit<React.ComponentProps<'div'>, 'title'> {\n current: FamilyApp\n members?: ReadonlyArray<FamilyMember>\n creator?: FamilyCreator\n creatorLabel?: string\n hubUrl?: string\n label?: string\n blurb?: React.ReactNode\n ctaLabel?: string\n currentLabel?: string\n githubLabel?: string\n websiteLabel?: string\n theme?: LogoTheme\n}\n\nconst marks = {\n health: HealthMark,\n career: CareerMark,\n study: StudyMark,\n} as const\n\nconst defaultMembers: Record<FamilyApp, { name: string; tagline: string; href: string; github: string; website?: string }> = {\n health: {\n name: 'Health Assistant',\n tagline: 'Self-hosted, privacy-first health records with AI insights',\n href: 'https://neuronection.com/en/health/',\n github: 'https://github.com/health-assistant-io/health-assistant',\n website: 'https://health-assistant.io',\n },\n career: {\n name: 'Career Assistant',\n tagline: 'Open-source career explorer with transparent AI matching',\n href: 'https://neuronection.com/en/career/',\n github: 'https://github.com/neuronection/career-assistant',\n },\n study: {\n name: 'Study Assistant',\n tagline: 'Local-first study workbench that runs in your browser',\n href: 'https://neuronection.com/en/study/',\n github: 'https://github.com/neuronection/study-assistant',\n },\n}\n\nconst defaultOrder: FamilyApp[] = ['health', 'career', 'study']\n\nconst defaultBlurb =\n 'Neuronection is a family of open-source, self-hosted AI assistants — one connected ecosystem for life\\u2019s important choices. Every assistant in the family shares the same principles: deeply structured data instead of text dumps, AI that explains its reasoning, and you in control of your information.'\n\nexport const FamilyBadge = React.forwardRef<HTMLDivElement, FamilyBadgeProps>(\n function FamilyBadge(\n {\n current,\n members,\n creator,\n creatorLabel = 'Created by',\n hubUrl = 'https://neuronection.com',\n label = 'Part of the Neuronection family',\n blurb = defaultBlurb,\n ctaLabel = 'Visit neuronection.com',\n currentLabel = 'Current app',\n githubLabel = 'GitHub',\n websiteLabel = 'Website',\n theme = 'light',\n className,\n ...props\n },\n ref,\n ) {\n const list = members ?? defaultOrder.map((app) => ({ app, ...defaultMembers[app] }))\n return (\n <section\n ref={ref}\n data-as=\"family-badge\"\n aria-label={label}\n className={cn(\n 'flex flex-col gap-5 rounded-[var(--as-radius-lg)] border border-[var(--as-border)] bg-[var(--as-surface)] p-6 shadow-[var(--as-shadow-1)] sm:p-8',\n className,\n )}\n {...props}\n >\n <div className=\"flex flex-wrap items-center justify-between gap-x-6 gap-y-4\">\n <a\n href={hubUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label={label}\n className=\"flex items-center gap-3 rounded-[var(--as-radius)] p-1 transition-opacity hover:opacity-85 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]\"\n >\n <NeuronectionMark size={44} theme={theme} />\n <NeuronectionWordmark size={24} theme={theme} />\n </a>\n <a\n href={hubUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n data-as=\"family-cta\"\n className=\"group inline-flex items-center gap-2.5 rounded-full bg-[var(--as-primary)] py-2 pl-5 pr-2 text-sm font-semibold text-[var(--as-primary-fg)] shadow-[var(--as-shadow-2)] transition-shadow hover:shadow-[var(--as-shadow-3)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]\"\n >\n {ctaLabel}\n <span\n aria-hidden\n className=\"flex size-7 items-center justify-center rounded-full bg-[color-mix(in_srgb,var(--as-primary-fg)_20%,transparent)] transition-colors group-hover:bg-[color-mix(in_srgb,var(--as-primary-fg)_32%,transparent)]\"\n >\n <ArrowUpRight className=\"size-4\" />\n </span>\n </a>\n </div>\n\n {blurb ? (\n <p className=\"max-w-2xl text-base leading-relaxed text-[var(--as-muted-fg)]\">\n {blurb}\n </p>\n ) : null}\n\n <ul className=\"grid grid-cols-1 gap-x-3 gap-y-4 sm:grid-cols-3\">\n {list.map((member) => {\n const Mark = marks[member.app]\n const isCurrent = member.app === current\n const card = cn(\n 'group flex h-full flex-col rounded-[var(--as-radius)] border p-5 pt-6 text-center transition-[color,box-shadow] hover:shadow-[var(--as-shadow-2)]',\n isCurrent\n ? 'border-[var(--as-primary)] bg-[color-mix(in_srgb,var(--as-primary)_7%,transparent)] ring-2 ring-[var(--as-primary)]'\n : 'border-[var(--as-border)] bg-[var(--as-muted)] hover:border-[var(--as-primary)]',\n )\n const linkExtras =\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]'\n const header = (\n <>\n <Mark size={56} theme={theme} />\n {member.href && !isCurrent ? (\n <span className=\"text-base font-bold leading-snug text-[var(--as-primary)] underline decoration-transparent underline-offset-4 transition-colors group-hover:decoration-current\">\n {member.name}\n </span>\n ) : (\n <span className=\"text-base font-bold leading-snug text-[var(--as-fg)]\">\n {member.name}\n </span>\n )}\n {member.tagline ? (\n <span className=\"text-sm leading-relaxed text-[var(--as-muted-fg)]\">\n {member.tagline}\n </span>\n ) : null}\n {isCurrent ? (\n <span className=\"mt-1 rounded-full bg-[var(--as-primary)] px-2.5 py-1 text-[11px] font-semibold uppercase tracking-wide text-[var(--as-primary-fg)]\">\n {currentLabel}\n </span>\n ) : null}\n </>\n )\n return (\n <li key={member.app} data-current={isCurrent ? 'true' : undefined} className=\"flex\">\n <div className={cn(card, 'w-full')}>\n {member.href && !isCurrent ? (\n <a\n href={member.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n className={cn('flex flex-1 flex-col items-center gap-2.5', linkExtras)}\n >\n {header}\n </a>\n ) : (\n <div className=\"flex flex-1 flex-col items-center gap-2.5\">{header}</div>\n )}\n {member.github || member.website ? (\n <div className=\"mt-5 flex items-center justify-center gap-2 border-t border-[var(--as-border)] pt-4\">\n {member.github ? (\n <a\n href={member.github}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label={`${member.name} on GitHub`}\n className=\"inline-flex items-center gap-1.5 rounded-full border border-[var(--as-border)] bg-[var(--as-surface)] px-3.5 py-2 text-xs font-semibold text-[var(--as-muted-fg)] transition-colors hover:border-[var(--as-primary)] hover:text-[var(--as-primary)] focus-visible:border-[var(--as-primary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]\"\n >\n <GitHubGlyph className=\"size-4\" />\n {githubLabel}\n </a>\n ) : null}\n {member.website ? (\n <a\n href={member.website}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label={`${member.name} website`}\n className=\"inline-flex items-center gap-1.5 rounded-full border border-[var(--as-border)] bg-[var(--as-surface)] px-3.5 py-2 text-xs font-semibold text-[var(--as-muted-fg)] transition-colors hover:border-[var(--as-primary)] hover:text-[var(--as-primary)] focus-visible:border-[var(--as-primary)] focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]\"\n >\n <Globe aria-hidden className=\"size-4\" />\n {websiteLabel}\n </a>\n ) : null}\n </div>\n ) : null}\n </div>\n </li>\n )\n })}\n </ul>\n\n {creator ? (\n <p className=\"flex flex-wrap items-center justify-center gap-x-1.5 gap-y-1 border-t border-[var(--as-border)] pt-4 text-xs text-[var(--as-muted-fg)]\">\n <span>{creatorLabel}</span>\n {creator.href ? (\n <a\n href={creator.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"rounded font-semibold text-[var(--as-fg)] transition-colors hover:text-[var(--as-primary)] hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]\"\n >\n {creator.name}\n </a>\n ) : (\n <span className=\"font-semibold text-[var(--as-fg)]\">{creator.name}</span>\n )}\n {creator.role ? <span>· {creator.role}</span> : null}\n </p>\n ) : null}\n </section>\n )\n },\n)\n","import * as React from 'react'\nimport { cn } from '../../lib/utils'\nimport { ChipList } from '../chip-list/ChipList'\n\nexport interface TechChipsProps extends React.ComponentProps<'div'> {\n items: ReadonlyArray<string | null | undefined>\n}\n\nexport const TechChips = React.forwardRef<HTMLDivElement, TechChipsProps>(\n function TechChips({ items, className, ...props }, ref) {\n const cleaned = items.filter((item): item is string => Boolean(item))\n if (cleaned.length === 0) return null\n return (\n <div ref={ref} data-as=\"tech-chips\" className={cn(className)} {...props}>\n <ChipList items={cleaned} variant=\"neutral\" />\n </div>\n )\n },\n)\n","import * as React from 'react'\nimport { cn } from '../../lib/utils'\nimport { Badge } from '../badge/Badge'\nimport { CareerMark } from '../logo/CareerMark'\nimport { HealthMark } from '../logo/HealthMark'\nimport { StudyMark } from '../logo/StudyMark'\nimport type { LogoTheme } from '../logo/Logo'\nimport { AboutCard } from './AboutCard'\nimport { AboutFooterLine } from './AboutFooterLine'\nimport { AboutLinkList, type AboutLinkItem } from './AboutLinkList'\nimport { AboutNote } from './AboutNote'\nimport { FamilyBadge, type FamilyApp, type FamilyMember } from './FamilyBadge'\nimport { TechChips } from './TechChips'\n\nexport interface AboutCreator {\n name: React.ReactNode\n role?: React.ReactNode\n href?: string\n links?: ReadonlyArray<AboutLinkItem>\n}\n\nexport interface AboutLicense {\n name: string\n href?: string\n}\n\nexport interface AboutNoteContent {\n tone?: 'info' | 'warning'\n title?: React.ReactNode\n children: React.ReactNode\n}\n\nexport interface AboutPanelProps extends React.ComponentProps<'div'> {\n appName: string\n familyCurrent?: FamilyApp\n logo?: React.ReactNode\n tagline?: React.ReactNode\n description?: React.ReactNode\n version?: string\n license?: AboutLicense\n licenseTitle?: string\n licenseLinkLabel?: string\n links?: ReadonlyArray<AboutLinkItem>\n linksTitle?: string\n creator?: AboutCreator\n creatorTitle?: string\n tech?: ReadonlyArray<string>\n techTitle?: string\n note?: AboutNoteContent\n familyMembers?: ReadonlyArray<FamilyMember>\n hubUrl?: string\n familyLabel?: string\n familyBlurb?: React.ReactNode\n familyCtaLabel?: string\n familyCurrentLabel?: string\n theme?: LogoTheme\n copyright?: React.ReactNode\n}\n\nconst marks = {\n health: HealthMark,\n career: CareerMark,\n study: StudyMark,\n} as const\n\nexport const AboutPanel = React.forwardRef<HTMLDivElement, AboutPanelProps>(\n function AboutPanel(\n {\n appName,\n familyCurrent,\n logo,\n tagline,\n description,\n version,\n license,\n licenseTitle = 'License & open source',\n licenseLinkLabel = 'Read license',\n links,\n linksTitle = 'Links',\n creator,\n creatorTitle = 'Created by',\n tech,\n techTitle = 'Built with',\n note,\n familyMembers,\n hubUrl,\n familyLabel,\n familyBlurb,\n familyCtaLabel,\n familyCurrentLabel,\n theme = 'light',\n copyright,\n className,\n children,\n ...props\n },\n ref,\n ) {\n const DefaultMark = familyCurrent ? marks[familyCurrent] : null\n return (\n <div\n ref={ref}\n data-as=\"about-panel\"\n className={cn('flex w-full flex-col gap-6', className)}\n {...props}\n >\n <section className=\"flex items-start gap-5\">\n {logo ?? (DefaultMark ? <DefaultMark size={72} theme={theme} /> : null)}\n <div className=\"flex flex-col gap-1.5 pt-1\">\n <div className=\"flex flex-wrap items-center gap-2.5\">\n <h1 className=\"text-2xl font-bold tracking-tight text-[var(--as-fg)]\">\n {appName}\n </h1>\n {version ? (\n <Badge variant=\"outline\" data-as=\"about-version\">\n v{version}\n </Badge>\n ) : null}\n </div>\n {tagline ? (\n <p className=\"text-sm font-medium text-[var(--as-muted-fg)]\">{tagline}</p>\n ) : null}\n {description ? (\n <p className=\"max-w-2xl text-sm leading-relaxed text-[var(--as-muted-fg)]\">\n {description}\n </p>\n ) : null}\n </div>\n </section>\n\n {creator || license || links?.length ? (\n <section className=\"grid grid-cols-1 gap-4 md:grid-cols-2\">\n {creator && !familyCurrent ? (\n <AboutCard title={creatorTitle}>\n <p className=\"font-semibold text-[var(--as-fg)]\">{creator.name}</p>\n {creator.role ? (\n <p className=\"mb-3 text-sm text-[var(--as-muted-fg)]\">{creator.role}</p>\n ) : null}\n {creator.links?.length ? <AboutLinkList links={creator.links} /> : null}\n </AboutCard>\n ) : null}\n {license ? (\n <AboutCard title={licenseTitle}>\n <div className=\"flex items-center justify-between gap-3 rounded-[var(--as-radius)] border border-[var(--as-border)] bg-[var(--as-muted)] px-4 py-3\">\n <span className=\"font-semibold text-[var(--as-fg)]\">{license.name}</span>\n {license.href ? (\n <a\n href={license.href}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"text-xs font-bold text-[var(--as-primary)] hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--as-primary)]\"\n >\n {licenseLinkLabel}\n </a>\n ) : null}\n </div>\n </AboutCard>\n ) : null}\n {links?.length ? (\n <AboutCard title={linksTitle}>\n <AboutLinkList links={links} />\n </AboutCard>\n ) : null}\n </section>\n ) : null}\n\n {tech?.length ? (\n <AboutCard title={techTitle}>\n <TechChips items={tech} />\n </AboutCard>\n ) : null}\n\n {note ? (\n <AboutNote tone={note.tone} title={note.title}>\n {note.children}\n </AboutNote>\n ) : null}\n\n {familyCurrent ? (\n <FamilyBadge\n current={familyCurrent}\n members={familyMembers}\n creator={\n creator\n ? { name: creator.name, role: creator.role, href: creator.href }\n : undefined\n }\n creatorLabel={creatorTitle}\n hubUrl={hubUrl}\n label={familyLabel}\n blurb={familyBlurb}\n ctaLabel={familyCtaLabel}\n currentLabel={familyCurrentLabel}\n theme={theme}\n />\n ) : null}\n\n {version || copyright ? (\n <AboutFooterLine version={version} copyright={copyright} />\n ) : null}\n\n {children}\n </div>\n )\n },\n)\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-7EG3AUTS.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-A6RXCBJY.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-CE7JZP67.js"}
|
|
@@ -213,7 +213,7 @@ var TimeInput = ({
|
|
|
213
213
|
onFocus();
|
|
214
214
|
requestAnimationFrame(() => {
|
|
215
215
|
const el = document.activeElement;
|
|
216
|
-
if (el) el.select();
|
|
216
|
+
if (el && typeof el.select === "function") el.select();
|
|
217
217
|
});
|
|
218
218
|
},
|
|
219
219
|
onBlur: () => {
|
|
@@ -459,5 +459,5 @@ var TimePicker = React.forwardRef(
|
|
|
459
459
|
);
|
|
460
460
|
|
|
461
461
|
export { TimePicker, TimePickerContent };
|
|
462
|
-
//# sourceMappingURL=chunk-
|
|
463
|
-
//# sourceMappingURL=chunk-
|
|
462
|
+
//# sourceMappingURL=chunk-CR42EAF4.js.map
|
|
463
|
+
//# sourceMappingURL=chunk-CR42EAF4.js.map
|