@prosophia/personal-portfolio 0.0.4 → 0.1.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/dist/index.js +102 -124
- package/dist/index.mjs +102 -124
- package/package.json +1 -1
- package/dist/index.css +0 -795
package/dist/index.mjs
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
|
-
// src/components/Divider.module.css
|
|
2
|
-
var Divider_default = {};
|
|
3
|
-
|
|
4
1
|
// src/components/Divider.tsx
|
|
2
|
+
import styles from "./Divider.module.css";
|
|
5
3
|
import { jsx } from "react/jsx-runtime";
|
|
6
4
|
function Divider() {
|
|
7
|
-
return /* @__PURE__ */ jsx("hr", { className:
|
|
5
|
+
return /* @__PURE__ */ jsx("hr", { className: styles.divider });
|
|
8
6
|
}
|
|
9
7
|
|
|
10
8
|
// src/components/Experience.tsx
|
|
11
9
|
import { motion } from "framer-motion";
|
|
12
|
-
|
|
13
|
-
// src/components/Experience.module.css
|
|
14
|
-
var Experience_default = {};
|
|
10
|
+
import styles2 from "./Experience.module.css";
|
|
15
11
|
|
|
16
12
|
// src/styles/motion.ts
|
|
17
13
|
var easeOutExpo = [0.16, 1, 0.3, 1];
|
|
@@ -486,19 +482,19 @@ function ExperienceSection({ experiences }) {
|
|
|
486
482
|
motion.section,
|
|
487
483
|
{
|
|
488
484
|
id: "cv",
|
|
489
|
-
className:
|
|
485
|
+
className: styles2.section,
|
|
490
486
|
initial: "hidden",
|
|
491
487
|
whileInView: "visible",
|
|
492
488
|
viewport: { once: true, amount: 0.1 },
|
|
493
489
|
variants: staggerContainer,
|
|
494
490
|
children: [
|
|
495
|
-
/* @__PURE__ */ jsxs(motion.div, { className:
|
|
496
|
-
/* @__PURE__ */ jsx4("h2", { className:
|
|
491
|
+
/* @__PURE__ */ jsxs(motion.div, { className: styles2.header, variants: fadeInUp, children: [
|
|
492
|
+
/* @__PURE__ */ jsx4("h2", { className: styles2.title, children: "Experience & Education" }),
|
|
497
493
|
/* @__PURE__ */ jsxs(
|
|
498
494
|
motion.a,
|
|
499
495
|
{
|
|
500
496
|
href: settings?.resumeUrl || "#",
|
|
501
|
-
className:
|
|
497
|
+
className: styles2.downloadButton,
|
|
502
498
|
whileHover: hoverLift,
|
|
503
499
|
whileTap: tapScale,
|
|
504
500
|
children: [
|
|
@@ -508,24 +504,24 @@ function ExperienceSection({ experiences }) {
|
|
|
508
504
|
}
|
|
509
505
|
)
|
|
510
506
|
] }),
|
|
511
|
-
/* @__PURE__ */ jsx4("div", { className:
|
|
507
|
+
/* @__PURE__ */ jsx4("div", { className: styles2.timeline, children: displayExperiences.map((exp) => /* @__PURE__ */ jsxs(
|
|
512
508
|
motion.div,
|
|
513
509
|
{
|
|
514
|
-
className:
|
|
510
|
+
className: styles2.timelineItem,
|
|
515
511
|
variants: fadeInUp,
|
|
516
512
|
children: [
|
|
517
513
|
/* @__PURE__ */ jsx4(
|
|
518
514
|
"div",
|
|
519
515
|
{
|
|
520
|
-
className: `${
|
|
516
|
+
className: `${styles2.timelineDot} ${exp.isCurrent ? styles2.timelineDotCurrent : ""}`
|
|
521
517
|
}
|
|
522
518
|
),
|
|
523
|
-
/* @__PURE__ */ jsxs("div", { className:
|
|
524
|
-
/* @__PURE__ */ jsx4("h3", { className:
|
|
525
|
-
/* @__PURE__ */ jsx4("span", { className:
|
|
519
|
+
/* @__PURE__ */ jsxs("div", { className: styles2.timelineHeader, children: [
|
|
520
|
+
/* @__PURE__ */ jsx4("h3", { className: styles2.timelineTitle, children: exp.title }),
|
|
521
|
+
/* @__PURE__ */ jsx4("span", { className: styles2.timelinePeriod, children: exp.period })
|
|
526
522
|
] }),
|
|
527
|
-
/* @__PURE__ */ jsx4("p", { className:
|
|
528
|
-
exp.description && /* @__PURE__ */ jsx4("p", { className:
|
|
523
|
+
/* @__PURE__ */ jsx4("p", { className: styles2.timelineOrg, children: exp.organization }),
|
|
524
|
+
exp.description && /* @__PURE__ */ jsx4("p", { className: styles2.timelineDescription, children: exp.description })
|
|
529
525
|
]
|
|
530
526
|
},
|
|
531
527
|
exp._id
|
|
@@ -537,24 +533,20 @@ function ExperienceSection({ experiences }) {
|
|
|
537
533
|
|
|
538
534
|
// src/components/Footer.tsx
|
|
539
535
|
import { motion as motion2 } from "framer-motion";
|
|
540
|
-
|
|
541
|
-
// src/components/Footer.module.css
|
|
542
|
-
var Footer_default = {};
|
|
543
|
-
|
|
544
|
-
// src/components/Footer.tsx
|
|
536
|
+
import styles3 from "./Footer.module.css";
|
|
545
537
|
import { jsxs as jsxs2 } from "react/jsx-runtime";
|
|
546
538
|
function Footer() {
|
|
547
539
|
const { settings, profile } = useSiteSettings();
|
|
548
540
|
return /* @__PURE__ */ jsxs2(
|
|
549
541
|
motion2.footer,
|
|
550
542
|
{
|
|
551
|
-
className:
|
|
543
|
+
className: styles3.footer,
|
|
552
544
|
initial: "hidden",
|
|
553
545
|
whileInView: "visible",
|
|
554
546
|
viewport: { once: true },
|
|
555
547
|
variants: fadeInUp,
|
|
556
548
|
children: [
|
|
557
|
-
/* @__PURE__ */ jsxs2("p", { className:
|
|
549
|
+
/* @__PURE__ */ jsxs2("p", { className: styles3.copyright, children: [
|
|
558
550
|
"\xA9 ",
|
|
559
551
|
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
560
552
|
" ",
|
|
@@ -563,7 +555,7 @@ function Footer() {
|
|
|
563
555
|
" ",
|
|
564
556
|
settings?.footerText || "Built with Passion."
|
|
565
557
|
] }),
|
|
566
|
-
/* @__PURE__ */ jsxs2("p", { className:
|
|
558
|
+
/* @__PURE__ */ jsxs2("p", { className: styles3.updated, children: [
|
|
567
559
|
"Last updated: ",
|
|
568
560
|
(/* @__PURE__ */ new Date()).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" })
|
|
569
561
|
] })
|
|
@@ -576,11 +568,7 @@ function Footer() {
|
|
|
576
568
|
import { useState as useState2 } from "react";
|
|
577
569
|
import Link from "next/link";
|
|
578
570
|
import { motion as motion3, AnimatePresence } from "framer-motion";
|
|
579
|
-
|
|
580
|
-
// src/components/Header.module.css
|
|
581
|
-
var Header_default = {};
|
|
582
|
-
|
|
583
|
-
// src/components/Header.tsx
|
|
571
|
+
import styles4 from "./Header.module.css";
|
|
584
572
|
import { Fragment, jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
585
573
|
var navLinks = [
|
|
586
574
|
{ href: "#about", label: "About" },
|
|
@@ -594,25 +582,25 @@ function Header() {
|
|
|
594
582
|
const [mobileMenuOpen, setMobileMenuOpen] = useState2(false);
|
|
595
583
|
const socialLinks = settings?.socialLinks;
|
|
596
584
|
const contactEmail = settings?.contactEmail;
|
|
597
|
-
return /* @__PURE__ */ jsxs3("header", { className:
|
|
598
|
-
/* @__PURE__ */ jsxs3("div", { className:
|
|
599
|
-
/* @__PURE__ */ jsxs3(Link, { href: "/", className:
|
|
600
|
-
/* @__PURE__ */ jsx5("span", { className:
|
|
601
|
-
/* @__PURE__ */ jsx5("span", { className:
|
|
585
|
+
return /* @__PURE__ */ jsxs3("header", { className: styles4.header, children: [
|
|
586
|
+
/* @__PURE__ */ jsxs3("div", { className: styles4.container, children: [
|
|
587
|
+
/* @__PURE__ */ jsxs3(Link, { href: "/", className: styles4.logo, children: [
|
|
588
|
+
/* @__PURE__ */ jsx5("span", { className: styles4.logoName, children: profile?.name || "David" }),
|
|
589
|
+
/* @__PURE__ */ jsx5("span", { className: styles4.logoTitle, children: profile?.title || "PhD Candidate" })
|
|
602
590
|
] }),
|
|
603
|
-
/* @__PURE__ */ jsx5("nav", { className:
|
|
591
|
+
/* @__PURE__ */ jsx5("nav", { className: styles4.nav, children: navLinks.map((link) => /* @__PURE__ */ jsxs3(Link, { href: link.href, className: styles4.navLink, children: [
|
|
604
592
|
link.label,
|
|
605
|
-
/* @__PURE__ */ jsx5("span", { className:
|
|
593
|
+
/* @__PURE__ */ jsx5("span", { className: styles4.navLinkUnderline })
|
|
606
594
|
] }, link.href)) }),
|
|
607
|
-
/* @__PURE__ */ jsxs3("div", { className:
|
|
608
|
-
/* @__PURE__ */ jsxs3("div", { className:
|
|
595
|
+
/* @__PURE__ */ jsxs3("div", { className: styles4.actions, children: [
|
|
596
|
+
/* @__PURE__ */ jsxs3("div", { className: styles4.socialLinks, children: [
|
|
609
597
|
(socialLinks?.twitter || !settings) && /* @__PURE__ */ jsx5(
|
|
610
598
|
"a",
|
|
611
599
|
{
|
|
612
600
|
href: socialLinks?.twitter || "https://twitter.com",
|
|
613
601
|
target: "_blank",
|
|
614
602
|
rel: "noopener noreferrer",
|
|
615
|
-
className:
|
|
603
|
+
className: styles4.socialLink,
|
|
616
604
|
"aria-label": "Twitter",
|
|
617
605
|
children: /* @__PURE__ */ jsx5("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx5("path", { d: "M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" }) })
|
|
618
606
|
}
|
|
@@ -623,7 +611,7 @@ function Header() {
|
|
|
623
611
|
href: socialLinks?.github || "https://github.com",
|
|
624
612
|
target: "_blank",
|
|
625
613
|
rel: "noopener noreferrer",
|
|
626
|
-
className:
|
|
614
|
+
className: styles4.socialLink,
|
|
627
615
|
"aria-label": "GitHub",
|
|
628
616
|
children: /* @__PURE__ */ jsx5("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx5(
|
|
629
617
|
"path",
|
|
@@ -641,7 +629,7 @@ function Header() {
|
|
|
641
629
|
href: socialLinks?.linkedin || "https://linkedin.com",
|
|
642
630
|
target: "_blank",
|
|
643
631
|
rel: "noopener noreferrer",
|
|
644
|
-
className:
|
|
632
|
+
className: styles4.socialLink,
|
|
645
633
|
"aria-label": "LinkedIn",
|
|
646
634
|
children: /* @__PURE__ */ jsx5("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsx5(
|
|
647
635
|
"path",
|
|
@@ -657,7 +645,7 @@ function Header() {
|
|
|
657
645
|
/* @__PURE__ */ jsx5(
|
|
658
646
|
motion3.button,
|
|
659
647
|
{
|
|
660
|
-
className:
|
|
648
|
+
className: styles4.themeToggle,
|
|
661
649
|
onClick: toggleTheme,
|
|
662
650
|
whileHover: hoverLift,
|
|
663
651
|
whileTap: tapScale,
|
|
@@ -707,19 +695,19 @@ function Header() {
|
|
|
707
695
|
motion3.a,
|
|
708
696
|
{
|
|
709
697
|
href: contactEmail ? `mailto:${contactEmail}` : "mailto:contact@example.com",
|
|
710
|
-
className:
|
|
698
|
+
className: styles4.contactButton,
|
|
711
699
|
whileHover: hoverLift,
|
|
712
700
|
whileTap: tapScale,
|
|
713
701
|
children: [
|
|
714
|
-
/* @__PURE__ */ jsx5("span", { className: `material-symbols-outlined ${
|
|
715
|
-
/* @__PURE__ */ jsx5("span", { className:
|
|
702
|
+
/* @__PURE__ */ jsx5("span", { className: `material-symbols-outlined ${styles4.contactButtonIcon}`, children: "mail" }),
|
|
703
|
+
/* @__PURE__ */ jsx5("span", { className: styles4.contactButtonText, children: "Contact" })
|
|
716
704
|
]
|
|
717
705
|
}
|
|
718
706
|
),
|
|
719
707
|
/* @__PURE__ */ jsx5(
|
|
720
708
|
"button",
|
|
721
709
|
{
|
|
722
|
-
className:
|
|
710
|
+
className: styles4.mobileMenuButton,
|
|
723
711
|
onClick: () => setMobileMenuOpen(!mobileMenuOpen),
|
|
724
712
|
"aria-label": "Toggle menu",
|
|
725
713
|
children: /* @__PURE__ */ jsx5(
|
|
@@ -751,7 +739,7 @@ function Header() {
|
|
|
751
739
|
/* @__PURE__ */ jsx5(AnimatePresence, { children: mobileMenuOpen && /* @__PURE__ */ jsx5(
|
|
752
740
|
motion3.nav,
|
|
753
741
|
{
|
|
754
|
-
className:
|
|
742
|
+
className: styles4.mobileNav,
|
|
755
743
|
initial: { opacity: 0, y: -10 },
|
|
756
744
|
animate: { opacity: 1, y: 0 },
|
|
757
745
|
exit: { opacity: 0, y: -10 },
|
|
@@ -760,7 +748,7 @@ function Header() {
|
|
|
760
748
|
Link,
|
|
761
749
|
{
|
|
762
750
|
href: link.href,
|
|
763
|
-
className:
|
|
751
|
+
className: styles4.mobileNavLink,
|
|
764
752
|
onClick: () => setMobileMenuOpen(false),
|
|
765
753
|
children: link.label
|
|
766
754
|
},
|
|
@@ -774,9 +762,7 @@ function Header() {
|
|
|
774
762
|
// src/components/Hero.tsx
|
|
775
763
|
import { motion as motion4 } from "framer-motion";
|
|
776
764
|
import { PortableText } from "@portabletext/react";
|
|
777
|
-
|
|
778
|
-
// src/components/Hero.module.css
|
|
779
|
-
var Hero_default = {};
|
|
765
|
+
import styles5 from "./Hero.module.css";
|
|
780
766
|
|
|
781
767
|
// src/lib/sanity.ts
|
|
782
768
|
import imageUrlBuilder from "@sanity/image-url";
|
|
@@ -833,7 +819,7 @@ var portableTextComponents = {
|
|
|
833
819
|
strong: ({ children }) => /* @__PURE__ */ jsx6("strong", { children }),
|
|
834
820
|
highlight: ({ children, value }) => {
|
|
835
821
|
if (value?.style === "underline") {
|
|
836
|
-
return /* @__PURE__ */ jsx6("span", { className:
|
|
822
|
+
return /* @__PURE__ */ jsx6("span", { className: styles5.underline, children });
|
|
837
823
|
}
|
|
838
824
|
return /* @__PURE__ */ jsx6("strong", { children });
|
|
839
825
|
}
|
|
@@ -851,51 +837,51 @@ function Hero({ updates }) {
|
|
|
851
837
|
motion4.section,
|
|
852
838
|
{
|
|
853
839
|
id: "about",
|
|
854
|
-
className:
|
|
840
|
+
className: styles5.hero,
|
|
855
841
|
initial: "hidden",
|
|
856
842
|
whileInView: "visible",
|
|
857
843
|
viewport: { once: true, amount: 0.1 },
|
|
858
844
|
variants: staggerContainer,
|
|
859
845
|
children: [
|
|
860
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
861
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
846
|
+
/* @__PURE__ */ jsxs4("div", { className: styles5.content, children: [
|
|
847
|
+
/* @__PURE__ */ jsxs4("div", { className: styles5.imageWrapper, children: [
|
|
862
848
|
/* @__PURE__ */ jsx6(
|
|
863
849
|
motion4.div,
|
|
864
850
|
{
|
|
865
|
-
className:
|
|
851
|
+
className: styles5.profileImage,
|
|
866
852
|
style: {
|
|
867
853
|
backgroundImage: `url("${profileImageUrl}")`
|
|
868
854
|
},
|
|
869
855
|
variants: blurFade
|
|
870
856
|
}
|
|
871
857
|
),
|
|
872
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
873
|
-
/* @__PURE__ */ jsx6("h1", { className:
|
|
874
|
-
/* @__PURE__ */ jsxs4("p", { className:
|
|
858
|
+
/* @__PURE__ */ jsxs4("div", { className: styles5.mobileInfo, children: [
|
|
859
|
+
/* @__PURE__ */ jsx6("h1", { className: styles5.mobileInfoName, children: profile?.name || "David" }),
|
|
860
|
+
/* @__PURE__ */ jsxs4("p", { className: styles5.mobileInfoTitle, children: [
|
|
875
861
|
profile?.title || "PhD Candidate",
|
|
876
862
|
" ",
|
|
877
863
|
profile?.institution && `at ${profile.institution}`
|
|
878
864
|
] })
|
|
879
865
|
] })
|
|
880
866
|
] }),
|
|
881
|
-
/* @__PURE__ */ jsxs4(motion4.div, { className:
|
|
867
|
+
/* @__PURE__ */ jsxs4(motion4.div, { className: styles5.textContent, variants: staggerContainer, children: [
|
|
882
868
|
/* @__PURE__ */ jsxs4("div", { children: [
|
|
883
|
-
profile?.availabilityBadge && /* @__PURE__ */ jsx6(motion4.span, { className:
|
|
884
|
-
!profile?.availabilityBadge && /* @__PURE__ */ jsx6(motion4.span, { className:
|
|
885
|
-
/* @__PURE__ */ jsx6(motion4.h2, { className:
|
|
869
|
+
profile?.availabilityBadge && /* @__PURE__ */ jsx6(motion4.span, { className: styles5.badge, variants: fadeInUp, children: profile.availabilityBadge }),
|
|
870
|
+
!profile?.availabilityBadge && /* @__PURE__ */ jsx6(motion4.span, { className: styles5.badge, variants: fadeInUp, children: "Available for 2024 Roles" }),
|
|
871
|
+
/* @__PURE__ */ jsx6(motion4.h2, { className: styles5.headline, variants: fadeInUp, children: profile?.headline ? /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
886
872
|
profile.headline.beforeHighlight,
|
|
887
873
|
" ",
|
|
888
|
-
/* @__PURE__ */ jsx6("span", { className:
|
|
874
|
+
/* @__PURE__ */ jsx6("span", { className: styles5.highlight, children: profile.headline.highlight }),
|
|
889
875
|
" ",
|
|
890
876
|
profile.headline.afterHighlight
|
|
891
877
|
] }) : /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
892
878
|
"Building the ",
|
|
893
|
-
/* @__PURE__ */ jsx6("span", { className:
|
|
879
|
+
/* @__PURE__ */ jsx6("span", { className: styles5.highlight, children: "future of AI" }),
|
|
894
880
|
" ",
|
|
895
881
|
"with robust & scalable vision systems."
|
|
896
882
|
] }) })
|
|
897
883
|
] }),
|
|
898
|
-
/* @__PURE__ */ jsx6(motion4.div, { className:
|
|
884
|
+
/* @__PURE__ */ jsx6(motion4.div, { className: styles5.description, variants: fadeInUp, children: profile?.bio ? /* @__PURE__ */ jsx6(PortableText, { value: profile.bio, components: portableTextComponents }) : /* @__PURE__ */ jsxs4(Fragment2, { children: [
|
|
899
885
|
/* @__PURE__ */ jsxs4("p", { children: [
|
|
900
886
|
"I am a PhD candidate specializing in",
|
|
901
887
|
" ",
|
|
@@ -908,20 +894,20 @@ function Hero({ updates }) {
|
|
|
908
894
|
/* @__PURE__ */ jsxs4("p", { children: [
|
|
909
895
|
"Previously, I interned at",
|
|
910
896
|
" ",
|
|
911
|
-
/* @__PURE__ */ jsx6("span", { className:
|
|
897
|
+
/* @__PURE__ */ jsx6("span", { className: styles5.underline, children: "Google DeepMind" }),
|
|
912
898
|
" and",
|
|
913
899
|
" ",
|
|
914
|
-
/* @__PURE__ */ jsx6("span", { className:
|
|
900
|
+
/* @__PURE__ */ jsx6("span", { className: styles5.underline, children: "Meta AI" }),
|
|
915
901
|
". I am passionate about open-source and making AI accessible to everyone."
|
|
916
902
|
] })
|
|
917
903
|
] }) }),
|
|
918
|
-
/* @__PURE__ */ jsxs4(motion4.div, { className:
|
|
919
|
-
/* @__PURE__ */ jsxs4("a", { href: settings?.resumeUrl || "#", className:
|
|
920
|
-
/* @__PURE__ */ jsx6("span", { className: `material-symbols-outlined ${
|
|
904
|
+
/* @__PURE__ */ jsxs4(motion4.div, { className: styles5.links, variants: fadeInUp, children: [
|
|
905
|
+
/* @__PURE__ */ jsxs4("a", { href: settings?.resumeUrl || "#", className: styles5.link, children: [
|
|
906
|
+
/* @__PURE__ */ jsx6("span", { className: `material-symbols-outlined ${styles5.linkIcon}`, children: "download" }),
|
|
921
907
|
"Download CV"
|
|
922
908
|
] }),
|
|
923
|
-
/* @__PURE__ */ jsxs4("a", { href: settings?.socialLinks?.googleScholar || "#", className:
|
|
924
|
-
/* @__PURE__ */ jsx6("span", { className: `material-symbols-outlined ${
|
|
909
|
+
/* @__PURE__ */ jsxs4("a", { href: settings?.socialLinks?.googleScholar || "#", className: styles5.link, children: [
|
|
910
|
+
/* @__PURE__ */ jsx6("span", { className: `material-symbols-outlined ${styles5.linkIcon}`, children: "school" }),
|
|
925
911
|
"Google Scholar"
|
|
926
912
|
] })
|
|
927
913
|
] })
|
|
@@ -930,21 +916,21 @@ function Hero({ updates }) {
|
|
|
930
916
|
/* @__PURE__ */ jsxs4(
|
|
931
917
|
motion4.div,
|
|
932
918
|
{
|
|
933
|
-
className: `glass-panel ${
|
|
919
|
+
className: `glass-panel ${styles5.updates}`,
|
|
934
920
|
variants: fadeInUp,
|
|
935
921
|
children: [
|
|
936
|
-
/* @__PURE__ */ jsxs4("h3", { className:
|
|
937
|
-
/* @__PURE__ */ jsx6("span", { className: `material-symbols-outlined ${
|
|
922
|
+
/* @__PURE__ */ jsxs4("h3", { className: styles5.updatesHeader, children: [
|
|
923
|
+
/* @__PURE__ */ jsx6("span", { className: `material-symbols-outlined ${styles5.updatesIcon}`, children: "campaign" }),
|
|
938
924
|
"Latest Updates"
|
|
939
925
|
] }),
|
|
940
|
-
/* @__PURE__ */ jsx6("div", { className:
|
|
926
|
+
/* @__PURE__ */ jsx6("div", { className: styles5.updatesList, children: displayUpdates.map((update) => /* @__PURE__ */ jsxs4(
|
|
941
927
|
motion4.div,
|
|
942
928
|
{
|
|
943
|
-
className:
|
|
929
|
+
className: styles5.updateItem,
|
|
944
930
|
variants: fadeInUp,
|
|
945
931
|
children: [
|
|
946
|
-
/* @__PURE__ */ jsx6("div", { className:
|
|
947
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
932
|
+
/* @__PURE__ */ jsx6("div", { className: styles5.updateDate, children: formatDate(update.date) }),
|
|
933
|
+
/* @__PURE__ */ jsxs4("div", { className: styles5.updateContent, children: [
|
|
948
934
|
/* @__PURE__ */ jsx6("h4", { children: update.title }),
|
|
949
935
|
/* @__PURE__ */ jsx6("p", { children: update.description })
|
|
950
936
|
] })
|
|
@@ -963,11 +949,7 @@ function Hero({ updates }) {
|
|
|
963
949
|
// src/components/Projects.tsx
|
|
964
950
|
import Link2 from "next/link";
|
|
965
951
|
import { motion as motion5 } from "framer-motion";
|
|
966
|
-
|
|
967
|
-
// src/components/Projects.module.css
|
|
968
|
-
var Projects_default = {};
|
|
969
|
-
|
|
970
|
-
// src/components/Projects.tsx
|
|
952
|
+
import styles6 from "./Projects.module.css";
|
|
971
953
|
import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
972
954
|
var defaultProjects = [
|
|
973
955
|
{
|
|
@@ -1001,29 +983,29 @@ function Projects({ projects }) {
|
|
|
1001
983
|
motion5.section,
|
|
1002
984
|
{
|
|
1003
985
|
id: "projects",
|
|
1004
|
-
className:
|
|
986
|
+
className: styles6.section,
|
|
1005
987
|
initial: "hidden",
|
|
1006
988
|
whileInView: "visible",
|
|
1007
989
|
viewport: { once: true, amount: 0.1 },
|
|
1008
990
|
variants: staggerContainer,
|
|
1009
991
|
children: [
|
|
1010
|
-
/* @__PURE__ */ jsx7(motion5.h2, { className:
|
|
1011
|
-
/* @__PURE__ */ jsx7("div", { className:
|
|
992
|
+
/* @__PURE__ */ jsx7(motion5.h2, { className: styles6.title, variants: fadeInUp, children: "Selected Projects" }),
|
|
993
|
+
/* @__PURE__ */ jsx7("div", { className: styles6.grid, children: displayProjects.map((project, index) => /* @__PURE__ */ jsx7(motion5.div, { variants: fadeInUp, children: /* @__PURE__ */ jsxs5(Link2, { href: `/projects/${project.slug}`, className: styles6.card, children: [
|
|
1012
994
|
/* @__PURE__ */ jsx7(
|
|
1013
995
|
"div",
|
|
1014
996
|
{
|
|
1015
|
-
className:
|
|
997
|
+
className: styles6.cardImage,
|
|
1016
998
|
style: { backgroundImage: `url('${getProjectImage(project, index)}')` },
|
|
1017
|
-
children: /* @__PURE__ */ jsx7("div", { className:
|
|
999
|
+
children: /* @__PURE__ */ jsx7("div", { className: styles6.cardImageOverlay })
|
|
1018
1000
|
}
|
|
1019
1001
|
),
|
|
1020
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1021
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1022
|
-
/* @__PURE__ */ jsx7("h3", { className:
|
|
1023
|
-
/* @__PURE__ */ jsx7("span", { className:
|
|
1002
|
+
/* @__PURE__ */ jsxs5("div", { className: styles6.cardContent, children: [
|
|
1003
|
+
/* @__PURE__ */ jsxs5("div", { className: styles6.cardHeader, children: [
|
|
1004
|
+
/* @__PURE__ */ jsx7("h3", { className: styles6.cardTitle, children: project.title }),
|
|
1005
|
+
/* @__PURE__ */ jsx7("span", { className: styles6.cardLink, children: /* @__PURE__ */ jsx7("span", { className: "material-symbols-outlined", children: "open_in_new" }) })
|
|
1024
1006
|
] }),
|
|
1025
|
-
/* @__PURE__ */ jsx7("p", { className:
|
|
1026
|
-
/* @__PURE__ */ jsx7("div", { className:
|
|
1007
|
+
/* @__PURE__ */ jsx7("p", { className: styles6.cardDescription, children: project.shortDescription }),
|
|
1008
|
+
/* @__PURE__ */ jsx7("div", { className: styles6.cardTags, children: project.tags?.map((tag) => /* @__PURE__ */ jsx7("span", { className: styles6.tag, children: tag }, tag)) })
|
|
1027
1009
|
] })
|
|
1028
1010
|
] }) }, project._id)) })
|
|
1029
1011
|
]
|
|
@@ -1033,11 +1015,7 @@ function Projects({ projects }) {
|
|
|
1033
1015
|
|
|
1034
1016
|
// src/components/Publications.tsx
|
|
1035
1017
|
import { motion as motion6 } from "framer-motion";
|
|
1036
|
-
|
|
1037
|
-
// src/components/Publications.module.css
|
|
1038
|
-
var Publications_default = {};
|
|
1039
|
-
|
|
1040
|
-
// src/components/Publications.tsx
|
|
1018
|
+
import styles7 from "./Publications.module.css";
|
|
1041
1019
|
import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
1042
1020
|
var defaultPublications = [
|
|
1043
1021
|
{
|
|
@@ -1083,7 +1061,7 @@ function Publications({ publications }) {
|
|
|
1083
1061
|
const displayPublications = publications.length > 0 ? publications : defaultPublications;
|
|
1084
1062
|
const renderAuthors = (authors) => {
|
|
1085
1063
|
return authors.map((author, index) => /* @__PURE__ */ jsxs6("span", { children: [
|
|
1086
|
-
author.isMe ? /* @__PURE__ */ jsx8("span", { className:
|
|
1064
|
+
author.isMe ? /* @__PURE__ */ jsx8("span", { className: styles7.cardAuthorHighlight, children: author.name }) : author.name,
|
|
1087
1065
|
index < authors.length - 1 && ", "
|
|
1088
1066
|
] }, index));
|
|
1089
1067
|
};
|
|
@@ -1091,34 +1069,34 @@ function Publications({ publications }) {
|
|
|
1091
1069
|
motion6.section,
|
|
1092
1070
|
{
|
|
1093
1071
|
id: "publications",
|
|
1094
|
-
className:
|
|
1072
|
+
className: styles7.section,
|
|
1095
1073
|
initial: "hidden",
|
|
1096
1074
|
whileInView: "visible",
|
|
1097
1075
|
viewport: { once: true, amount: 0.1 },
|
|
1098
1076
|
variants: staggerContainer,
|
|
1099
1077
|
children: [
|
|
1100
|
-
/* @__PURE__ */ jsxs6(motion6.div, { className:
|
|
1101
|
-
/* @__PURE__ */ jsx8("h2", { className:
|
|
1102
|
-
/* @__PURE__ */ jsx8("a", { href: settings?.socialLinks?.googleScholar || "#", className:
|
|
1078
|
+
/* @__PURE__ */ jsxs6(motion6.div, { className: styles7.header, variants: fadeInUp, children: [
|
|
1079
|
+
/* @__PURE__ */ jsx8("h2", { className: styles7.title, children: "Publications" }),
|
|
1080
|
+
/* @__PURE__ */ jsx8("a", { href: settings?.socialLinks?.googleScholar || "#", className: styles7.scholarLink, children: "View Google Scholar ->" })
|
|
1103
1081
|
] }),
|
|
1104
|
-
/* @__PURE__ */ jsx8("div", { className:
|
|
1082
|
+
/* @__PURE__ */ jsx8("div", { className: styles7.list, children: displayPublications.map((pub) => /* @__PURE__ */ jsx8(
|
|
1105
1083
|
motion6.div,
|
|
1106
1084
|
{
|
|
1107
|
-
className:
|
|
1085
|
+
className: styles7.card,
|
|
1108
1086
|
variants: fadeInUp,
|
|
1109
1087
|
whileHover: { y: -2 },
|
|
1110
1088
|
transition: { duration: 0.2 },
|
|
1111
|
-
children: /* @__PURE__ */ jsxs6("div", { className:
|
|
1112
|
-
/* @__PURE__ */ jsxs6("div", { className:
|
|
1113
|
-
/* @__PURE__ */ jsx8("h3", { className:
|
|
1114
|
-
/* @__PURE__ */ jsx8("p", { className:
|
|
1115
|
-
/* @__PURE__ */ jsxs6("div", { className:
|
|
1116
|
-
/* @__PURE__ */ jsx8("span", { className:
|
|
1117
|
-
pub.highlight && /* @__PURE__ */ jsxs6("span", { className:
|
|
1089
|
+
children: /* @__PURE__ */ jsxs6("div", { className: styles7.cardContent, children: [
|
|
1090
|
+
/* @__PURE__ */ jsxs6("div", { className: styles7.cardInfo, children: [
|
|
1091
|
+
/* @__PURE__ */ jsx8("h3", { className: styles7.cardTitle, children: pub.title }),
|
|
1092
|
+
/* @__PURE__ */ jsx8("p", { className: styles7.cardAuthors, children: renderAuthors(pub.authors) }),
|
|
1093
|
+
/* @__PURE__ */ jsxs6("div", { className: styles7.cardMeta, children: [
|
|
1094
|
+
/* @__PURE__ */ jsx8("span", { className: styles7.cardVenue, children: pub.venue }),
|
|
1095
|
+
pub.highlight && /* @__PURE__ */ jsxs6("span", { className: styles7.cardHighlight, children: [
|
|
1118
1096
|
/* @__PURE__ */ jsx8(
|
|
1119
1097
|
"span",
|
|
1120
1098
|
{
|
|
1121
|
-
className: `material-symbols-outlined ${
|
|
1099
|
+
className: `material-symbols-outlined ${styles7.cardHighlightIcon}`,
|
|
1122
1100
|
children: "star"
|
|
1123
1101
|
}
|
|
1124
1102
|
),
|
|
@@ -1126,22 +1104,22 @@ function Publications({ publications }) {
|
|
|
1126
1104
|
] })
|
|
1127
1105
|
] })
|
|
1128
1106
|
] }),
|
|
1129
|
-
/* @__PURE__ */ jsxs6("div", { className:
|
|
1130
|
-
(pub.pdfUrl || pub.pdfFileUrl) && /* @__PURE__ */ jsxs6("a", { href: pub.pdfUrl || pub.pdfFileUrl, className:
|
|
1107
|
+
/* @__PURE__ */ jsxs6("div", { className: styles7.cardActions, children: [
|
|
1108
|
+
(pub.pdfUrl || pub.pdfFileUrl) && /* @__PURE__ */ jsxs6("a", { href: pub.pdfUrl || pub.pdfFileUrl, className: styles7.actionButton, children: [
|
|
1131
1109
|
/* @__PURE__ */ jsx8(
|
|
1132
1110
|
"span",
|
|
1133
1111
|
{
|
|
1134
|
-
className: `material-symbols-outlined ${
|
|
1112
|
+
className: `material-symbols-outlined ${styles7.actionIcon}`,
|
|
1135
1113
|
children: "picture_as_pdf"
|
|
1136
1114
|
}
|
|
1137
1115
|
),
|
|
1138
1116
|
"PDF"
|
|
1139
1117
|
] }),
|
|
1140
|
-
pub.codeUrl && /* @__PURE__ */ jsxs6("a", { href: pub.codeUrl, className:
|
|
1118
|
+
pub.codeUrl && /* @__PURE__ */ jsxs6("a", { href: pub.codeUrl, className: styles7.actionButton, children: [
|
|
1141
1119
|
/* @__PURE__ */ jsx8(
|
|
1142
1120
|
"span",
|
|
1143
1121
|
{
|
|
1144
|
-
className: `material-symbols-outlined ${
|
|
1122
|
+
className: `material-symbols-outlined ${styles7.actionIcon}`,
|
|
1145
1123
|
children: "code"
|
|
1146
1124
|
}
|
|
1147
1125
|
),
|