@prosophia/personal-cv 0.0.4 → 0.0.5
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.d.mts +27 -3
- package/dist/index.d.ts +27 -3
- package/dist/index.js +124 -97
- package/dist/index.mjs +123 -97
- package/package.json +1 -1
- package/dist/index.css +0 -648
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
// src/styles/About.module.css
|
|
2
|
-
var About_default = {};
|
|
3
|
-
|
|
4
1
|
// src/components/About.tsx
|
|
2
|
+
import styles from "./About.module.css";
|
|
5
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
4
|
var socialIcons = {
|
|
7
5
|
scholar: "school",
|
|
@@ -26,11 +24,11 @@ function About({
|
|
|
26
24
|
profileImageUrl,
|
|
27
25
|
socialLinks = []
|
|
28
26
|
}) {
|
|
29
|
-
return /* @__PURE__ */ jsx("section", { className:
|
|
30
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
27
|
+
return /* @__PURE__ */ jsx("section", { className: styles.about, id: "about", children: /* @__PURE__ */ jsxs("div", { className: styles.card, children: [
|
|
28
|
+
/* @__PURE__ */ jsx("div", { className: styles.imageWrapper, children: /* @__PURE__ */ jsx(
|
|
31
29
|
"div",
|
|
32
30
|
{
|
|
33
|
-
className:
|
|
31
|
+
className: styles.profileImage,
|
|
34
32
|
style: {
|
|
35
33
|
backgroundImage: profileImageUrl ? `url("${profileImageUrl}")` : void 0,
|
|
36
34
|
backgroundColor: profileImageUrl ? void 0 : "#e5e7eb"
|
|
@@ -39,19 +37,19 @@ function About({
|
|
|
39
37
|
"aria-label": "Profile photo"
|
|
40
38
|
}
|
|
41
39
|
) }),
|
|
42
|
-
/* @__PURE__ */ jsxs("div", { className:
|
|
40
|
+
/* @__PURE__ */ jsxs("div", { className: styles.content, children: [
|
|
43
41
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
44
|
-
/* @__PURE__ */ jsx("h1", { className:
|
|
45
|
-
/* @__PURE__ */ jsx("p", { className:
|
|
46
|
-
/* @__PURE__ */ jsx("p", { className:
|
|
42
|
+
/* @__PURE__ */ jsx("h1", { className: styles.greeting, children: greeting }),
|
|
43
|
+
/* @__PURE__ */ jsx("p", { className: styles.title, children: title }),
|
|
44
|
+
/* @__PURE__ */ jsx("p", { className: styles.bio, children: bio })
|
|
47
45
|
] }),
|
|
48
|
-
socialLinks.length > 0 && /* @__PURE__ */ jsx("div", { className:
|
|
46
|
+
socialLinks.length > 0 && /* @__PURE__ */ jsx("div", { className: styles.socialLinks, children: socialLinks.map((link) => /* @__PURE__ */ jsx(
|
|
49
47
|
"a",
|
|
50
48
|
{
|
|
51
49
|
href: link.url,
|
|
52
50
|
target: "_blank",
|
|
53
51
|
rel: "noopener noreferrer",
|
|
54
|
-
className:
|
|
52
|
+
className: styles.socialLink,
|
|
55
53
|
"aria-label": socialLabels[link.platform] || link.platform,
|
|
56
54
|
children: /* @__PURE__ */ jsx("span", { className: "material-symbols-outlined", children: socialIcons[link.platform] || "link" })
|
|
57
55
|
},
|
|
@@ -61,10 +59,8 @@ function About({
|
|
|
61
59
|
] }) });
|
|
62
60
|
}
|
|
63
61
|
|
|
64
|
-
// src/styles/CVSection.module.css
|
|
65
|
-
var CVSection_default = {};
|
|
66
|
-
|
|
67
62
|
// src/components/CVSection.tsx
|
|
63
|
+
import styles2 from "./CVSection.module.css";
|
|
68
64
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
69
65
|
function CVSection({
|
|
70
66
|
heading,
|
|
@@ -72,12 +68,12 @@ function CVSection({
|
|
|
72
68
|
buttonText,
|
|
73
69
|
cvFileUrl
|
|
74
70
|
}) {
|
|
75
|
-
return /* @__PURE__ */ jsx2("section", { className:
|
|
76
|
-
/* @__PURE__ */ jsxs2("div", { className:
|
|
77
|
-
/* @__PURE__ */ jsx2("span", { className:
|
|
78
|
-
/* @__PURE__ */ jsxs2("div", { className:
|
|
79
|
-
/* @__PURE__ */ jsx2("h2", { className:
|
|
80
|
-
/* @__PURE__ */ jsx2("p", { className:
|
|
71
|
+
return /* @__PURE__ */ jsx2("section", { className: styles2.cv, id: "cv", children: /* @__PURE__ */ jsxs2("div", { className: styles2.card, children: [
|
|
72
|
+
/* @__PURE__ */ jsxs2("div", { className: styles2.content, children: [
|
|
73
|
+
/* @__PURE__ */ jsx2("span", { className: styles2.iconWrapper, children: /* @__PURE__ */ jsx2("span", { className: "material-symbols-outlined", children: "history_edu" }) }),
|
|
74
|
+
/* @__PURE__ */ jsxs2("div", { className: styles2.textContent, children: [
|
|
75
|
+
/* @__PURE__ */ jsx2("h2", { className: styles2.title, children: heading }),
|
|
76
|
+
/* @__PURE__ */ jsx2("p", { className: styles2.description, children: description })
|
|
81
77
|
] }),
|
|
82
78
|
cvFileUrl ? /* @__PURE__ */ jsxs2(
|
|
83
79
|
"a",
|
|
@@ -85,32 +81,30 @@ function CVSection({
|
|
|
85
81
|
href: cvFileUrl,
|
|
86
82
|
target: "_blank",
|
|
87
83
|
rel: "noopener noreferrer",
|
|
88
|
-
className:
|
|
84
|
+
className: styles2.downloadBtn,
|
|
89
85
|
children: [
|
|
90
86
|
/* @__PURE__ */ jsx2("span", { className: "material-symbols-outlined", children: "download" }),
|
|
91
87
|
buttonText
|
|
92
88
|
]
|
|
93
89
|
}
|
|
94
|
-
) : /* @__PURE__ */ jsxs2("button", { className:
|
|
90
|
+
) : /* @__PURE__ */ jsxs2("button", { className: styles2.downloadBtn, disabled: true, children: [
|
|
95
91
|
/* @__PURE__ */ jsx2("span", { className: "material-symbols-outlined", children: "download" }),
|
|
96
92
|
buttonText
|
|
97
93
|
] })
|
|
98
94
|
] }),
|
|
99
|
-
/* @__PURE__ */ jsx2("div", { className:
|
|
95
|
+
/* @__PURE__ */ jsx2("div", { className: styles2.background })
|
|
100
96
|
] }) });
|
|
101
97
|
}
|
|
102
98
|
|
|
103
|
-
// src/styles/Footer.module.css
|
|
104
|
-
var Footer_default = {};
|
|
105
|
-
|
|
106
99
|
// src/components/Footer.tsx
|
|
100
|
+
import styles3 from "./Footer.module.css";
|
|
107
101
|
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
108
102
|
function Footer({ footerText, email }) {
|
|
109
|
-
return /* @__PURE__ */ jsx3("footer", { className:
|
|
110
|
-
/* @__PURE__ */ jsx3("p", { className:
|
|
111
|
-
email && /* @__PURE__ */ jsxs3("div", { className:
|
|
103
|
+
return /* @__PURE__ */ jsx3("footer", { className: styles3.footer, children: /* @__PURE__ */ jsxs3("div", { className: styles3.content, children: [
|
|
104
|
+
/* @__PURE__ */ jsx3("p", { className: styles3.copyright, children: footerText }),
|
|
105
|
+
email && /* @__PURE__ */ jsxs3("div", { className: styles3.emailWrapper, children: [
|
|
112
106
|
/* @__PURE__ */ jsx3("span", { className: "material-symbols-outlined", children: "mail" }),
|
|
113
|
-
/* @__PURE__ */ jsx3("a", { href: `mailto:${email}`, className:
|
|
107
|
+
/* @__PURE__ */ jsx3("a", { href: `mailto:${email}`, className: styles3.email, children: email })
|
|
114
108
|
] })
|
|
115
109
|
] }) });
|
|
116
110
|
}
|
|
@@ -118,9 +112,7 @@ function Footer({ footerText, email }) {
|
|
|
118
112
|
// src/components/Header.tsx
|
|
119
113
|
import { useState as useState2 } from "react";
|
|
120
114
|
import Link from "next/link";
|
|
121
|
-
|
|
122
|
-
// src/styles/Header.module.css
|
|
123
|
-
var Header_default = {};
|
|
115
|
+
import styles4 from "./Header.module.css";
|
|
124
116
|
|
|
125
117
|
// src/context/ThemeContext.tsx
|
|
126
118
|
import { createContext, useContext, useEffect, useState } from "react";
|
|
@@ -177,17 +169,17 @@ function Header({
|
|
|
177
169
|
setMobileMenuOpen(false);
|
|
178
170
|
};
|
|
179
171
|
return /* @__PURE__ */ jsxs4(Fragment, { children: [
|
|
180
|
-
/* @__PURE__ */ jsx5("header", { className:
|
|
181
|
-
/* @__PURE__ */ jsxs4(Link, { href: "/", className:
|
|
182
|
-
/* @__PURE__ */ jsx5("div", { className:
|
|
183
|
-
/* @__PURE__ */ jsx5("h2", { className:
|
|
172
|
+
/* @__PURE__ */ jsx5("header", { className: styles4.header, children: /* @__PURE__ */ jsxs4("div", { className: styles4.headerInner, children: [
|
|
173
|
+
/* @__PURE__ */ jsxs4(Link, { href: "/", className: styles4.logo, children: [
|
|
174
|
+
/* @__PURE__ */ jsx5("div", { className: styles4.logoIcon, children: /* @__PURE__ */ jsx5("span", { className: "material-symbols-outlined", children: "hexagon" }) }),
|
|
175
|
+
/* @__PURE__ */ jsx5("h2", { className: styles4.siteName, children: siteName })
|
|
184
176
|
] }),
|
|
185
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
186
|
-
/* @__PURE__ */ jsx5("nav", { className:
|
|
177
|
+
/* @__PURE__ */ jsxs4("div", { className: styles4.desktopNav, children: [
|
|
178
|
+
/* @__PURE__ */ jsx5("nav", { className: styles4.navLinks, children: navLinks.map((link) => /* @__PURE__ */ jsx5(
|
|
187
179
|
Link,
|
|
188
180
|
{
|
|
189
181
|
href: link.href,
|
|
190
|
-
className:
|
|
182
|
+
className: styles4.navLink,
|
|
191
183
|
children: link.label
|
|
192
184
|
},
|
|
193
185
|
link.href
|
|
@@ -195,7 +187,7 @@ function Header({
|
|
|
195
187
|
mounted && /* @__PURE__ */ jsx5(
|
|
196
188
|
"button",
|
|
197
189
|
{
|
|
198
|
-
className:
|
|
190
|
+
className: styles4.themeToggle,
|
|
199
191
|
onClick: toggleTheme,
|
|
200
192
|
"aria-label": `Switch to ${theme === "light" ? "dark" : "light"} mode`,
|
|
201
193
|
children: /* @__PURE__ */ jsx5("span", { className: "material-symbols-outlined", children: theme === "light" ? "dark_mode" : "light_mode" })
|
|
@@ -205,16 +197,16 @@ function Header({
|
|
|
205
197
|
"a",
|
|
206
198
|
{
|
|
207
199
|
href: `mailto:${contactEmail}`,
|
|
208
|
-
className:
|
|
200
|
+
className: styles4.contactBtn,
|
|
209
201
|
children: /* @__PURE__ */ jsx5("span", { children: contactButtonText })
|
|
210
202
|
}
|
|
211
203
|
)
|
|
212
204
|
] }),
|
|
213
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
205
|
+
/* @__PURE__ */ jsxs4("div", { className: styles4.mobileActions, children: [
|
|
214
206
|
mounted && /* @__PURE__ */ jsx5(
|
|
215
207
|
"button",
|
|
216
208
|
{
|
|
217
|
-
className:
|
|
209
|
+
className: styles4.mobileThemeToggle,
|
|
218
210
|
onClick: toggleTheme,
|
|
219
211
|
"aria-label": `Switch to ${theme === "light" ? "dark" : "light"} mode`,
|
|
220
212
|
children: /* @__PURE__ */ jsx5("span", { className: "material-symbols-outlined", children: theme === "light" ? "dark_mode" : "light_mode" })
|
|
@@ -223,7 +215,7 @@ function Header({
|
|
|
223
215
|
/* @__PURE__ */ jsx5(
|
|
224
216
|
"button",
|
|
225
217
|
{
|
|
226
|
-
className:
|
|
218
|
+
className: styles4.mobileMenuBtn,
|
|
227
219
|
onClick: toggleMobileMenu,
|
|
228
220
|
"aria-label": "Toggle menu",
|
|
229
221
|
children: /* @__PURE__ */ jsx5("span", { className: "material-symbols-outlined", children: mobileMenuOpen ? "close" : "menu" })
|
|
@@ -231,12 +223,12 @@ function Header({
|
|
|
231
223
|
)
|
|
232
224
|
] })
|
|
233
225
|
] }) }),
|
|
234
|
-
/* @__PURE__ */ jsxs4("div", { className: `${
|
|
235
|
-
/* @__PURE__ */ jsx5("nav", { className:
|
|
226
|
+
/* @__PURE__ */ jsxs4("div", { className: `${styles4.mobileMenu} ${mobileMenuOpen ? styles4.open : ""}`, children: [
|
|
227
|
+
/* @__PURE__ */ jsx5("nav", { className: styles4.mobileNavLinks, children: navLinks.map((link) => /* @__PURE__ */ jsx5(
|
|
236
228
|
Link,
|
|
237
229
|
{
|
|
238
230
|
href: link.href,
|
|
239
|
-
className:
|
|
231
|
+
className: styles4.mobileNavLink,
|
|
240
232
|
onClick: closeMobileMenu,
|
|
241
233
|
children: link.label
|
|
242
234
|
},
|
|
@@ -246,7 +238,7 @@ function Header({
|
|
|
246
238
|
"a",
|
|
247
239
|
{
|
|
248
240
|
href: `mailto:${contactEmail}`,
|
|
249
|
-
className:
|
|
241
|
+
className: styles4.mobileContactBtn,
|
|
250
242
|
children: contactButtonText
|
|
251
243
|
}
|
|
252
244
|
)
|
|
@@ -254,31 +246,66 @@ function Header({
|
|
|
254
246
|
] });
|
|
255
247
|
}
|
|
256
248
|
|
|
257
|
-
// src/components/
|
|
258
|
-
import
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
249
|
+
// src/components/HomePage.tsx
|
|
250
|
+
import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
251
|
+
var defaultNavLinks = [
|
|
252
|
+
{ label: "About", href: "#about" },
|
|
253
|
+
{ label: "Experience", href: "#experience" },
|
|
254
|
+
{ label: "Projects", href: "#projects" },
|
|
255
|
+
{ label: "Publications", href: "#publications" }
|
|
256
|
+
];
|
|
257
|
+
function HomePage({
|
|
258
|
+
children,
|
|
259
|
+
settings = null,
|
|
260
|
+
header,
|
|
261
|
+
footer
|
|
262
|
+
}) {
|
|
263
|
+
const siteName = settings?.siteName || "My CV";
|
|
264
|
+
const navLinks = settings?.navLinks?.length ? settings.navLinks : defaultNavLinks;
|
|
265
|
+
const footerText = settings?.footerText || `\xA9 ${(/* @__PURE__ */ new Date()).getFullYear()} All rights reserved.`;
|
|
266
|
+
return /* @__PURE__ */ jsxs5(Fragment2, { children: [
|
|
267
|
+
header ?? /* @__PURE__ */ jsx6(
|
|
268
|
+
Header,
|
|
269
|
+
{
|
|
270
|
+
siteName,
|
|
271
|
+
navLinks,
|
|
272
|
+
showContactButton: settings?.showContactButton,
|
|
273
|
+
contactButtonText: settings?.contactButtonText,
|
|
274
|
+
contactEmail: settings?.contactEmail
|
|
275
|
+
}
|
|
276
|
+
),
|
|
277
|
+
/* @__PURE__ */ jsx6("main", { children }),
|
|
278
|
+
footer ?? /* @__PURE__ */ jsx6(
|
|
279
|
+
Footer,
|
|
280
|
+
{
|
|
281
|
+
footerText,
|
|
282
|
+
email: settings?.contactEmail
|
|
283
|
+
}
|
|
284
|
+
)
|
|
285
|
+
] });
|
|
286
|
+
}
|
|
262
287
|
|
|
263
288
|
// src/components/Projects.tsx
|
|
264
|
-
import
|
|
289
|
+
import Link2 from "next/link";
|
|
290
|
+
import styles5 from "./Projects.module.css";
|
|
291
|
+
import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
265
292
|
function Projects({
|
|
266
293
|
projects,
|
|
267
294
|
showViewAll = true,
|
|
268
295
|
viewAllUrl = "#"
|
|
269
296
|
}) {
|
|
270
|
-
return /* @__PURE__ */
|
|
271
|
-
/* @__PURE__ */
|
|
272
|
-
/* @__PURE__ */
|
|
273
|
-
showViewAll && /* @__PURE__ */
|
|
297
|
+
return /* @__PURE__ */ jsxs6("section", { className: styles5.projects, id: "projects", children: [
|
|
298
|
+
/* @__PURE__ */ jsxs6("div", { className: styles5.header, children: [
|
|
299
|
+
/* @__PURE__ */ jsx7("h2", { className: styles5.title, children: "Selected Projects" }),
|
|
300
|
+
showViewAll && /* @__PURE__ */ jsx7(Link2, { href: viewAllUrl, className: styles5.viewAllLink, children: "View all projects" })
|
|
274
301
|
] }),
|
|
275
|
-
/* @__PURE__ */
|
|
302
|
+
/* @__PURE__ */ jsx7("div", { className: styles5.grid, children: projects.map((project) => {
|
|
276
303
|
const projectUrl = project.slug?.current ? `/projects/${project.slug.current}` : project.caseStudyUrl;
|
|
277
|
-
const CardContent = /* @__PURE__ */
|
|
278
|
-
/* @__PURE__ */
|
|
304
|
+
const CardContent = /* @__PURE__ */ jsxs6(Fragment3, { children: [
|
|
305
|
+
/* @__PURE__ */ jsx7("div", { className: styles5.imageWrapper, children: /* @__PURE__ */ jsx7(
|
|
279
306
|
"div",
|
|
280
307
|
{
|
|
281
|
-
className:
|
|
308
|
+
className: styles5.image,
|
|
282
309
|
style: {
|
|
283
310
|
backgroundImage: project.imageUrl ? `url("${project.imageUrl}")` : void 0,
|
|
284
311
|
backgroundColor: project.imageUrl ? void 0 : "#e5e7eb"
|
|
@@ -287,94 +314,92 @@ function Projects({
|
|
|
287
314
|
"aria-label": project.imageAlt || project.title
|
|
288
315
|
}
|
|
289
316
|
) }),
|
|
290
|
-
/* @__PURE__ */
|
|
291
|
-
/* @__PURE__ */
|
|
292
|
-
/* @__PURE__ */
|
|
293
|
-
/* @__PURE__ */
|
|
317
|
+
/* @__PURE__ */ jsxs6("div", { className: styles5.content, children: [
|
|
318
|
+
/* @__PURE__ */ jsx7("h3", { className: styles5.projectTitle, children: project.title }),
|
|
319
|
+
/* @__PURE__ */ jsx7("p", { className: styles5.description, children: project.description }),
|
|
320
|
+
/* @__PURE__ */ jsxs6("span", { className: styles5.caseStudyLink, children: [
|
|
294
321
|
"View Project",
|
|
295
322
|
" ",
|
|
296
|
-
/* @__PURE__ */
|
|
323
|
+
/* @__PURE__ */ jsx7("span", { className: "material-symbols-outlined", children: "arrow_forward" })
|
|
297
324
|
] })
|
|
298
325
|
] })
|
|
299
326
|
] });
|
|
300
|
-
return project.slug?.current ? /* @__PURE__ */
|
|
327
|
+
return project.slug?.current ? /* @__PURE__ */ jsx7(
|
|
301
328
|
Link2,
|
|
302
329
|
{
|
|
303
330
|
href: projectUrl,
|
|
304
|
-
className:
|
|
331
|
+
className: styles5.card,
|
|
305
332
|
children: CardContent
|
|
306
333
|
},
|
|
307
334
|
project._id
|
|
308
|
-
) : /* @__PURE__ */
|
|
335
|
+
) : /* @__PURE__ */ jsx7("div", { className: styles5.card, children: CardContent }, project._id);
|
|
309
336
|
}) })
|
|
310
337
|
] });
|
|
311
338
|
}
|
|
312
339
|
|
|
313
|
-
// src/styles/Publications.module.css
|
|
314
|
-
var Publications_default = {};
|
|
315
|
-
|
|
316
340
|
// src/components/Publications.tsx
|
|
317
|
-
import
|
|
341
|
+
import styles6 from "./Publications.module.css";
|
|
342
|
+
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
318
343
|
function Publications({ publications }) {
|
|
319
|
-
return /* @__PURE__ */
|
|
320
|
-
/* @__PURE__ */
|
|
321
|
-
/* @__PURE__ */
|
|
322
|
-
/* @__PURE__ */
|
|
323
|
-
/* @__PURE__ */
|
|
324
|
-
/* @__PURE__ */
|
|
344
|
+
return /* @__PURE__ */ jsxs7("section", { className: styles6.publications, id: "publications", children: [
|
|
345
|
+
/* @__PURE__ */ jsx8("div", { className: styles6.header, children: /* @__PURE__ */ jsx8("h2", { className: styles6.title, children: "Recent Publications" }) }),
|
|
346
|
+
/* @__PURE__ */ jsx8("div", { className: styles6.list, children: publications.map((pub) => /* @__PURE__ */ jsxs7("div", { className: styles6.item, children: [
|
|
347
|
+
/* @__PURE__ */ jsxs7("div", { className: styles6.itemHeader, children: [
|
|
348
|
+
/* @__PURE__ */ jsx8("h3", { className: styles6.pubTitle, children: pub.title }),
|
|
349
|
+
/* @__PURE__ */ jsx8("span", { className: styles6.year, children: pub.year })
|
|
325
350
|
] }),
|
|
326
|
-
/* @__PURE__ */
|
|
327
|
-
/* @__PURE__ */
|
|
328
|
-
/* @__PURE__ */
|
|
329
|
-
pub.pdfUrl && /* @__PURE__ */
|
|
351
|
+
/* @__PURE__ */ jsx8("p", { className: styles6.authors, children: pub.authors }),
|
|
352
|
+
/* @__PURE__ */ jsx8("p", { className: styles6.venue, children: pub.venue }),
|
|
353
|
+
/* @__PURE__ */ jsxs7("div", { className: styles6.links, children: [
|
|
354
|
+
pub.pdfUrl && /* @__PURE__ */ jsxs7(
|
|
330
355
|
"a",
|
|
331
356
|
{
|
|
332
357
|
href: pub.pdfUrl,
|
|
333
358
|
target: "_blank",
|
|
334
359
|
rel: "noopener noreferrer",
|
|
335
|
-
className:
|
|
360
|
+
className: styles6.linkBtn,
|
|
336
361
|
children: [
|
|
337
|
-
/* @__PURE__ */
|
|
362
|
+
/* @__PURE__ */ jsx8("span", { className: "material-symbols-outlined", children: "description" }),
|
|
338
363
|
"PDF"
|
|
339
364
|
]
|
|
340
365
|
}
|
|
341
366
|
),
|
|
342
|
-
pub.codeUrl && /* @__PURE__ */
|
|
367
|
+
pub.codeUrl && /* @__PURE__ */ jsxs7(
|
|
343
368
|
"a",
|
|
344
369
|
{
|
|
345
370
|
href: pub.codeUrl,
|
|
346
371
|
target: "_blank",
|
|
347
372
|
rel: "noopener noreferrer",
|
|
348
|
-
className:
|
|
373
|
+
className: styles6.linkBtn,
|
|
349
374
|
children: [
|
|
350
|
-
/* @__PURE__ */
|
|
375
|
+
/* @__PURE__ */ jsx8("span", { className: "material-symbols-outlined", children: "code" }),
|
|
351
376
|
"Code"
|
|
352
377
|
]
|
|
353
378
|
}
|
|
354
379
|
),
|
|
355
|
-
pub.videoUrl && /* @__PURE__ */
|
|
380
|
+
pub.videoUrl && /* @__PURE__ */ jsxs7(
|
|
356
381
|
"a",
|
|
357
382
|
{
|
|
358
383
|
href: pub.videoUrl,
|
|
359
384
|
target: "_blank",
|
|
360
385
|
rel: "noopener noreferrer",
|
|
361
|
-
className:
|
|
386
|
+
className: styles6.linkBtn,
|
|
362
387
|
children: [
|
|
363
|
-
/* @__PURE__ */
|
|
388
|
+
/* @__PURE__ */ jsx8("span", { className: "material-symbols-outlined", children: "videocam" }),
|
|
364
389
|
"Video"
|
|
365
390
|
]
|
|
366
391
|
}
|
|
367
392
|
),
|
|
368
|
-
pub.bibtex && /* @__PURE__ */
|
|
393
|
+
pub.bibtex && /* @__PURE__ */ jsxs7(
|
|
369
394
|
"button",
|
|
370
395
|
{
|
|
371
396
|
onClick: () => {
|
|
372
397
|
navigator.clipboard.writeText(pub.bibtex || "");
|
|
373
398
|
alert("BibTeX copied to clipboard!");
|
|
374
399
|
},
|
|
375
|
-
className:
|
|
400
|
+
className: styles6.linkBtn,
|
|
376
401
|
children: [
|
|
377
|
-
/* @__PURE__ */
|
|
402
|
+
/* @__PURE__ */ jsx8("span", { className: "material-symbols-outlined", children: "format_quote" }),
|
|
378
403
|
"BibTeX"
|
|
379
404
|
]
|
|
380
405
|
}
|
|
@@ -546,6 +571,7 @@ export {
|
|
|
546
571
|
CVSection,
|
|
547
572
|
Footer,
|
|
548
573
|
Header,
|
|
574
|
+
HomePage,
|
|
549
575
|
Projects,
|
|
550
576
|
Publications,
|
|
551
577
|
ThemeProvider,
|