@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.js
CHANGED
|
@@ -54,20 +54,16 @@ __export(index_exports, {
|
|
|
54
54
|
});
|
|
55
55
|
module.exports = __toCommonJS(index_exports);
|
|
56
56
|
|
|
57
|
-
// src/components/Divider.module.css
|
|
58
|
-
var Divider_default = {};
|
|
59
|
-
|
|
60
57
|
// src/components/Divider.tsx
|
|
58
|
+
var import_Divider = __toESM(require("./Divider.module.css"));
|
|
61
59
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
62
60
|
function Divider() {
|
|
63
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("hr", { className:
|
|
61
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("hr", { className: import_Divider.default.divider });
|
|
64
62
|
}
|
|
65
63
|
|
|
66
64
|
// src/components/Experience.tsx
|
|
67
65
|
var import_framer_motion = require("framer-motion");
|
|
68
|
-
|
|
69
|
-
// src/components/Experience.module.css
|
|
70
|
-
var Experience_default = {};
|
|
66
|
+
var import_Experience = __toESM(require("./Experience.module.css"));
|
|
71
67
|
|
|
72
68
|
// src/styles/motion.ts
|
|
73
69
|
var easeOutExpo = [0.16, 1, 0.3, 1];
|
|
@@ -542,19 +538,19 @@ function ExperienceSection({ experiences }) {
|
|
|
542
538
|
import_framer_motion.motion.section,
|
|
543
539
|
{
|
|
544
540
|
id: "cv",
|
|
545
|
-
className:
|
|
541
|
+
className: import_Experience.default.section,
|
|
546
542
|
initial: "hidden",
|
|
547
543
|
whileInView: "visible",
|
|
548
544
|
viewport: { once: true, amount: 0.1 },
|
|
549
545
|
variants: staggerContainer,
|
|
550
546
|
children: [
|
|
551
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_framer_motion.motion.div, { className:
|
|
552
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { className:
|
|
547
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_framer_motion.motion.div, { className: import_Experience.default.header, variants: fadeInUp, children: [
|
|
548
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h2", { className: import_Experience.default.title, children: "Experience & Education" }),
|
|
553
549
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
554
550
|
import_framer_motion.motion.a,
|
|
555
551
|
{
|
|
556
552
|
href: settings?.resumeUrl || "#",
|
|
557
|
-
className:
|
|
553
|
+
className: import_Experience.default.downloadButton,
|
|
558
554
|
whileHover: hoverLift,
|
|
559
555
|
whileTap: tapScale,
|
|
560
556
|
children: [
|
|
@@ -564,24 +560,24 @@ function ExperienceSection({ experiences }) {
|
|
|
564
560
|
}
|
|
565
561
|
)
|
|
566
562
|
] }),
|
|
567
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className:
|
|
563
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: import_Experience.default.timeline, children: displayExperiences.map((exp) => /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
568
564
|
import_framer_motion.motion.div,
|
|
569
565
|
{
|
|
570
|
-
className:
|
|
566
|
+
className: import_Experience.default.timelineItem,
|
|
571
567
|
variants: fadeInUp,
|
|
572
568
|
children: [
|
|
573
569
|
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
574
570
|
"div",
|
|
575
571
|
{
|
|
576
|
-
className: `${
|
|
572
|
+
className: `${import_Experience.default.timelineDot} ${exp.isCurrent ? import_Experience.default.timelineDotCurrent : ""}`
|
|
577
573
|
}
|
|
578
574
|
),
|
|
579
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className:
|
|
580
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { className:
|
|
581
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className:
|
|
575
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: import_Experience.default.timelineHeader, children: [
|
|
576
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("h3", { className: import_Experience.default.timelineTitle, children: exp.title }),
|
|
577
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: import_Experience.default.timelinePeriod, children: exp.period })
|
|
582
578
|
] }),
|
|
583
|
-
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className:
|
|
584
|
-
exp.description && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className:
|
|
579
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: import_Experience.default.timelineOrg, children: exp.organization }),
|
|
580
|
+
exp.description && /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("p", { className: import_Experience.default.timelineDescription, children: exp.description })
|
|
585
581
|
]
|
|
586
582
|
},
|
|
587
583
|
exp._id
|
|
@@ -593,24 +589,20 @@ function ExperienceSection({ experiences }) {
|
|
|
593
589
|
|
|
594
590
|
// src/components/Footer.tsx
|
|
595
591
|
var import_framer_motion2 = require("framer-motion");
|
|
596
|
-
|
|
597
|
-
// src/components/Footer.module.css
|
|
598
|
-
var Footer_default = {};
|
|
599
|
-
|
|
600
|
-
// src/components/Footer.tsx
|
|
592
|
+
var import_Footer = __toESM(require("./Footer.module.css"));
|
|
601
593
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
602
594
|
function Footer() {
|
|
603
595
|
const { settings, profile } = useSiteSettings();
|
|
604
596
|
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
605
597
|
import_framer_motion2.motion.footer,
|
|
606
598
|
{
|
|
607
|
-
className:
|
|
599
|
+
className: import_Footer.default.footer,
|
|
608
600
|
initial: "hidden",
|
|
609
601
|
whileInView: "visible",
|
|
610
602
|
viewport: { once: true },
|
|
611
603
|
variants: fadeInUp,
|
|
612
604
|
children: [
|
|
613
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className:
|
|
605
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: import_Footer.default.copyright, children: [
|
|
614
606
|
"\xA9 ",
|
|
615
607
|
(/* @__PURE__ */ new Date()).getFullYear(),
|
|
616
608
|
" ",
|
|
@@ -619,7 +611,7 @@ function Footer() {
|
|
|
619
611
|
" ",
|
|
620
612
|
settings?.footerText || "Built with Passion."
|
|
621
613
|
] }),
|
|
622
|
-
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className:
|
|
614
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("p", { className: import_Footer.default.updated, children: [
|
|
623
615
|
"Last updated: ",
|
|
624
616
|
(/* @__PURE__ */ new Date()).toLocaleDateString("en-US", { month: "long", day: "numeric", year: "numeric" })
|
|
625
617
|
] })
|
|
@@ -632,11 +624,7 @@ function Footer() {
|
|
|
632
624
|
var import_react3 = require("react");
|
|
633
625
|
var import_link = __toESM(require("next/link"));
|
|
634
626
|
var import_framer_motion3 = require("framer-motion");
|
|
635
|
-
|
|
636
|
-
// src/components/Header.module.css
|
|
637
|
-
var Header_default = {};
|
|
638
|
-
|
|
639
|
-
// src/components/Header.tsx
|
|
627
|
+
var import_Header = __toESM(require("./Header.module.css"));
|
|
640
628
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
641
629
|
var navLinks = [
|
|
642
630
|
{ href: "#about", label: "About" },
|
|
@@ -650,25 +638,25 @@ function Header() {
|
|
|
650
638
|
const [mobileMenuOpen, setMobileMenuOpen] = (0, import_react3.useState)(false);
|
|
651
639
|
const socialLinks = settings?.socialLinks;
|
|
652
640
|
const contactEmail = settings?.contactEmail;
|
|
653
|
-
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("header", { className:
|
|
654
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className:
|
|
655
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_link.default, { href: "/", className:
|
|
656
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className:
|
|
657
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className:
|
|
641
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("header", { className: import_Header.default.header, children: [
|
|
642
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: import_Header.default.container, children: [
|
|
643
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_link.default, { href: "/", className: import_Header.default.logo, children: [
|
|
644
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: import_Header.default.logoName, children: profile?.name || "David" }),
|
|
645
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: import_Header.default.logoTitle, children: profile?.title || "PhD Candidate" })
|
|
658
646
|
] }),
|
|
659
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("nav", { className:
|
|
647
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("nav", { className: import_Header.default.nav, children: navLinks.map((link) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_link.default, { href: link.href, className: import_Header.default.navLink, children: [
|
|
660
648
|
link.label,
|
|
661
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className:
|
|
649
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: import_Header.default.navLinkUnderline })
|
|
662
650
|
] }, link.href)) }),
|
|
663
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className:
|
|
664
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className:
|
|
651
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: import_Header.default.actions, children: [
|
|
652
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: import_Header.default.socialLinks, children: [
|
|
665
653
|
(socialLinks?.twitter || !settings) && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
666
654
|
"a",
|
|
667
655
|
{
|
|
668
656
|
href: socialLinks?.twitter || "https://twitter.com",
|
|
669
657
|
target: "_blank",
|
|
670
658
|
rel: "noopener noreferrer",
|
|
671
|
-
className:
|
|
659
|
+
className: import_Header.default.socialLink,
|
|
672
660
|
"aria-label": "Twitter",
|
|
673
661
|
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("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" }) })
|
|
674
662
|
}
|
|
@@ -679,7 +667,7 @@ function Header() {
|
|
|
679
667
|
href: socialLinks?.github || "https://github.com",
|
|
680
668
|
target: "_blank",
|
|
681
669
|
rel: "noopener noreferrer",
|
|
682
|
-
className:
|
|
670
|
+
className: import_Header.default.socialLink,
|
|
683
671
|
"aria-label": "GitHub",
|
|
684
672
|
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
685
673
|
"path",
|
|
@@ -697,7 +685,7 @@ function Header() {
|
|
|
697
685
|
href: socialLinks?.linkedin || "https://linkedin.com",
|
|
698
686
|
target: "_blank",
|
|
699
687
|
rel: "noopener noreferrer",
|
|
700
|
-
className:
|
|
688
|
+
className: import_Header.default.socialLink,
|
|
701
689
|
"aria-label": "LinkedIn",
|
|
702
690
|
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { fill: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
703
691
|
"path",
|
|
@@ -713,7 +701,7 @@ function Header() {
|
|
|
713
701
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
714
702
|
import_framer_motion3.motion.button,
|
|
715
703
|
{
|
|
716
|
-
className:
|
|
704
|
+
className: import_Header.default.themeToggle,
|
|
717
705
|
onClick: toggleTheme,
|
|
718
706
|
whileHover: hoverLift,
|
|
719
707
|
whileTap: tapScale,
|
|
@@ -763,19 +751,19 @@ function Header() {
|
|
|
763
751
|
import_framer_motion3.motion.a,
|
|
764
752
|
{
|
|
765
753
|
href: contactEmail ? `mailto:${contactEmail}` : "mailto:contact@example.com",
|
|
766
|
-
className:
|
|
754
|
+
className: import_Header.default.contactButton,
|
|
767
755
|
whileHover: hoverLift,
|
|
768
756
|
whileTap: tapScale,
|
|
769
757
|
children: [
|
|
770
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: `material-symbols-outlined ${
|
|
771
|
-
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className:
|
|
758
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: `material-symbols-outlined ${import_Header.default.contactButtonIcon}`, children: "mail" }),
|
|
759
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: import_Header.default.contactButtonText, children: "Contact" })
|
|
772
760
|
]
|
|
773
761
|
}
|
|
774
762
|
),
|
|
775
763
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
776
764
|
"button",
|
|
777
765
|
{
|
|
778
|
-
className:
|
|
766
|
+
className: import_Header.default.mobileMenuButton,
|
|
779
767
|
onClick: () => setMobileMenuOpen(!mobileMenuOpen),
|
|
780
768
|
"aria-label": "Toggle menu",
|
|
781
769
|
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
@@ -807,7 +795,7 @@ function Header() {
|
|
|
807
795
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_framer_motion3.AnimatePresence, { children: mobileMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
808
796
|
import_framer_motion3.motion.nav,
|
|
809
797
|
{
|
|
810
|
-
className:
|
|
798
|
+
className: import_Header.default.mobileNav,
|
|
811
799
|
initial: { opacity: 0, y: -10 },
|
|
812
800
|
animate: { opacity: 1, y: 0 },
|
|
813
801
|
exit: { opacity: 0, y: -10 },
|
|
@@ -816,7 +804,7 @@ function Header() {
|
|
|
816
804
|
import_link.default,
|
|
817
805
|
{
|
|
818
806
|
href: link.href,
|
|
819
|
-
className:
|
|
807
|
+
className: import_Header.default.mobileNavLink,
|
|
820
808
|
onClick: () => setMobileMenuOpen(false),
|
|
821
809
|
children: link.label
|
|
822
810
|
},
|
|
@@ -830,9 +818,7 @@ function Header() {
|
|
|
830
818
|
// src/components/Hero.tsx
|
|
831
819
|
var import_framer_motion4 = require("framer-motion");
|
|
832
820
|
var import_react4 = require("@portabletext/react");
|
|
833
|
-
|
|
834
|
-
// src/components/Hero.module.css
|
|
835
|
-
var Hero_default = {};
|
|
821
|
+
var import_Hero = __toESM(require("./Hero.module.css"));
|
|
836
822
|
|
|
837
823
|
// src/lib/sanity.ts
|
|
838
824
|
var import_image_url = __toESM(require("@sanity/image-url"));
|
|
@@ -889,7 +875,7 @@ var portableTextComponents = {
|
|
|
889
875
|
strong: ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("strong", { children }),
|
|
890
876
|
highlight: ({ children, value }) => {
|
|
891
877
|
if (value?.style === "underline") {
|
|
892
|
-
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className:
|
|
878
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: import_Hero.default.underline, children });
|
|
893
879
|
}
|
|
894
880
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("strong", { children });
|
|
895
881
|
}
|
|
@@ -907,51 +893,51 @@ function Hero({ updates }) {
|
|
|
907
893
|
import_framer_motion4.motion.section,
|
|
908
894
|
{
|
|
909
895
|
id: "about",
|
|
910
|
-
className:
|
|
896
|
+
className: import_Hero.default.hero,
|
|
911
897
|
initial: "hidden",
|
|
912
898
|
whileInView: "visible",
|
|
913
899
|
viewport: { once: true, amount: 0.1 },
|
|
914
900
|
variants: staggerContainer,
|
|
915
901
|
children: [
|
|
916
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className:
|
|
917
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className:
|
|
902
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: import_Hero.default.content, children: [
|
|
903
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: import_Hero.default.imageWrapper, children: [
|
|
918
904
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
919
905
|
import_framer_motion4.motion.div,
|
|
920
906
|
{
|
|
921
|
-
className:
|
|
907
|
+
className: import_Hero.default.profileImage,
|
|
922
908
|
style: {
|
|
923
909
|
backgroundImage: `url("${profileImageUrl}")`
|
|
924
910
|
},
|
|
925
911
|
variants: blurFade
|
|
926
912
|
}
|
|
927
913
|
),
|
|
928
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className:
|
|
929
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h1", { className:
|
|
930
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { className:
|
|
914
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: import_Hero.default.mobileInfo, children: [
|
|
915
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h1", { className: import_Hero.default.mobileInfoName, children: profile?.name || "David" }),
|
|
916
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { className: import_Hero.default.mobileInfoTitle, children: [
|
|
931
917
|
profile?.title || "PhD Candidate",
|
|
932
918
|
" ",
|
|
933
919
|
profile?.institution && `at ${profile.institution}`
|
|
934
920
|
] })
|
|
935
921
|
] })
|
|
936
922
|
] }),
|
|
937
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_framer_motion4.motion.div, { className:
|
|
923
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_framer_motion4.motion.div, { className: import_Hero.default.textContent, variants: staggerContainer, children: [
|
|
938
924
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
939
|
-
profile?.availabilityBadge && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.span, { className:
|
|
940
|
-
!profile?.availabilityBadge && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.span, { className:
|
|
941
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.h2, { className:
|
|
925
|
+
profile?.availabilityBadge && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.span, { className: import_Hero.default.badge, variants: fadeInUp, children: profile.availabilityBadge }),
|
|
926
|
+
!profile?.availabilityBadge && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.span, { className: import_Hero.default.badge, variants: fadeInUp, children: "Available for 2024 Roles" }),
|
|
927
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.h2, { className: import_Hero.default.headline, variants: fadeInUp, children: profile?.headline ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
942
928
|
profile.headline.beforeHighlight,
|
|
943
929
|
" ",
|
|
944
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className:
|
|
930
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: import_Hero.default.highlight, children: profile.headline.highlight }),
|
|
945
931
|
" ",
|
|
946
932
|
profile.headline.afterHighlight
|
|
947
933
|
] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
948
934
|
"Building the ",
|
|
949
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className:
|
|
935
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: import_Hero.default.highlight, children: "future of AI" }),
|
|
950
936
|
" ",
|
|
951
937
|
"with robust & scalable vision systems."
|
|
952
938
|
] }) })
|
|
953
939
|
] }),
|
|
954
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.div, { className:
|
|
940
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_framer_motion4.motion.div, { className: import_Hero.default.description, variants: fadeInUp, children: profile?.bio ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_react4.PortableText, { value: profile.bio, components: portableTextComponents }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
955
941
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { children: [
|
|
956
942
|
"I am a PhD candidate specializing in",
|
|
957
943
|
" ",
|
|
@@ -964,20 +950,20 @@ function Hero({ updates }) {
|
|
|
964
950
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { children: [
|
|
965
951
|
"Previously, I interned at",
|
|
966
952
|
" ",
|
|
967
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className:
|
|
953
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: import_Hero.default.underline, children: "Google DeepMind" }),
|
|
968
954
|
" and",
|
|
969
955
|
" ",
|
|
970
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className:
|
|
956
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: import_Hero.default.underline, children: "Meta AI" }),
|
|
971
957
|
". I am passionate about open-source and making AI accessible to everyone."
|
|
972
958
|
] })
|
|
973
959
|
] }) }),
|
|
974
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_framer_motion4.motion.div, { className:
|
|
975
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("a", { href: settings?.resumeUrl || "#", className:
|
|
976
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `material-symbols-outlined ${
|
|
960
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_framer_motion4.motion.div, { className: import_Hero.default.links, variants: fadeInUp, children: [
|
|
961
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("a", { href: settings?.resumeUrl || "#", className: import_Hero.default.link, children: [
|
|
962
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `material-symbols-outlined ${import_Hero.default.linkIcon}`, children: "download" }),
|
|
977
963
|
"Download CV"
|
|
978
964
|
] }),
|
|
979
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("a", { href: settings?.socialLinks?.googleScholar || "#", className:
|
|
980
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `material-symbols-outlined ${
|
|
965
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("a", { href: settings?.socialLinks?.googleScholar || "#", className: import_Hero.default.link, children: [
|
|
966
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `material-symbols-outlined ${import_Hero.default.linkIcon}`, children: "school" }),
|
|
981
967
|
"Google Scholar"
|
|
982
968
|
] })
|
|
983
969
|
] })
|
|
@@ -986,21 +972,21 @@ function Hero({ updates }) {
|
|
|
986
972
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
987
973
|
import_framer_motion4.motion.div,
|
|
988
974
|
{
|
|
989
|
-
className: `glass-panel ${
|
|
975
|
+
className: `glass-panel ${import_Hero.default.updates}`,
|
|
990
976
|
variants: fadeInUp,
|
|
991
977
|
children: [
|
|
992
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("h3", { className:
|
|
993
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `material-symbols-outlined ${
|
|
978
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("h3", { className: import_Hero.default.updatesHeader, children: [
|
|
979
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `material-symbols-outlined ${import_Hero.default.updatesIcon}`, children: "campaign" }),
|
|
994
980
|
"Latest Updates"
|
|
995
981
|
] }),
|
|
996
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className:
|
|
982
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: import_Hero.default.updatesList, children: displayUpdates.map((update) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
997
983
|
import_framer_motion4.motion.div,
|
|
998
984
|
{
|
|
999
|
-
className:
|
|
985
|
+
className: import_Hero.default.updateItem,
|
|
1000
986
|
variants: fadeInUp,
|
|
1001
987
|
children: [
|
|
1002
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className:
|
|
1003
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className:
|
|
988
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: import_Hero.default.updateDate, children: formatDate(update.date) }),
|
|
989
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: import_Hero.default.updateContent, children: [
|
|
1004
990
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("h4", { children: update.title }),
|
|
1005
991
|
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { children: update.description })
|
|
1006
992
|
] })
|
|
@@ -1019,11 +1005,7 @@ function Hero({ updates }) {
|
|
|
1019
1005
|
// src/components/Projects.tsx
|
|
1020
1006
|
var import_link2 = __toESM(require("next/link"));
|
|
1021
1007
|
var import_framer_motion5 = require("framer-motion");
|
|
1022
|
-
|
|
1023
|
-
// src/components/Projects.module.css
|
|
1024
|
-
var Projects_default = {};
|
|
1025
|
-
|
|
1026
|
-
// src/components/Projects.tsx
|
|
1008
|
+
var import_Projects = __toESM(require("./Projects.module.css"));
|
|
1027
1009
|
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
1028
1010
|
var defaultProjects = [
|
|
1029
1011
|
{
|
|
@@ -1057,29 +1039,29 @@ function Projects({ projects }) {
|
|
|
1057
1039
|
import_framer_motion5.motion.section,
|
|
1058
1040
|
{
|
|
1059
1041
|
id: "projects",
|
|
1060
|
-
className:
|
|
1042
|
+
className: import_Projects.default.section,
|
|
1061
1043
|
initial: "hidden",
|
|
1062
1044
|
whileInView: "visible",
|
|
1063
1045
|
viewport: { once: true, amount: 0.1 },
|
|
1064
1046
|
variants: staggerContainer,
|
|
1065
1047
|
children: [
|
|
1066
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_framer_motion5.motion.h2, { className:
|
|
1067
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className:
|
|
1048
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_framer_motion5.motion.h2, { className: import_Projects.default.title, variants: fadeInUp, children: "Selected Projects" }),
|
|
1049
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: import_Projects.default.grid, children: displayProjects.map((project, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_framer_motion5.motion.div, { variants: fadeInUp, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_link2.default, { href: `/projects/${project.slug}`, className: import_Projects.default.card, children: [
|
|
1068
1050
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
1069
1051
|
"div",
|
|
1070
1052
|
{
|
|
1071
|
-
className:
|
|
1053
|
+
className: import_Projects.default.cardImage,
|
|
1072
1054
|
style: { backgroundImage: `url('${getProjectImage(project, index)}')` },
|
|
1073
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className:
|
|
1055
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: import_Projects.default.cardImageOverlay })
|
|
1074
1056
|
}
|
|
1075
1057
|
),
|
|
1076
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className:
|
|
1077
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className:
|
|
1078
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { className:
|
|
1079
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className:
|
|
1058
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Projects.default.cardContent, children: [
|
|
1059
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Projects.default.cardHeader, children: [
|
|
1060
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h3", { className: import_Projects.default.cardTitle, children: project.title }),
|
|
1061
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: import_Projects.default.cardLink, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "material-symbols-outlined", children: "open_in_new" }) })
|
|
1080
1062
|
] }),
|
|
1081
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className:
|
|
1082
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className:
|
|
1063
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: import_Projects.default.cardDescription, children: project.shortDescription }),
|
|
1064
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: import_Projects.default.cardTags, children: project.tags?.map((tag) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: import_Projects.default.tag, children: tag }, tag)) })
|
|
1083
1065
|
] })
|
|
1084
1066
|
] }) }, project._id)) })
|
|
1085
1067
|
]
|
|
@@ -1089,11 +1071,7 @@ function Projects({ projects }) {
|
|
|
1089
1071
|
|
|
1090
1072
|
// src/components/Publications.tsx
|
|
1091
1073
|
var import_framer_motion6 = require("framer-motion");
|
|
1092
|
-
|
|
1093
|
-
// src/components/Publications.module.css
|
|
1094
|
-
var Publications_default = {};
|
|
1095
|
-
|
|
1096
|
-
// src/components/Publications.tsx
|
|
1074
|
+
var import_Publications = __toESM(require("./Publications.module.css"));
|
|
1097
1075
|
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
1098
1076
|
var defaultPublications = [
|
|
1099
1077
|
{
|
|
@@ -1139,7 +1117,7 @@ function Publications({ publications }) {
|
|
|
1139
1117
|
const displayPublications = publications.length > 0 ? publications : defaultPublications;
|
|
1140
1118
|
const renderAuthors = (authors) => {
|
|
1141
1119
|
return authors.map((author, index) => /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { children: [
|
|
1142
|
-
author.isMe ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className:
|
|
1120
|
+
author.isMe ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: import_Publications.default.cardAuthorHighlight, children: author.name }) : author.name,
|
|
1143
1121
|
index < authors.length - 1 && ", "
|
|
1144
1122
|
] }, index));
|
|
1145
1123
|
};
|
|
@@ -1147,34 +1125,34 @@ function Publications({ publications }) {
|
|
|
1147
1125
|
import_framer_motion6.motion.section,
|
|
1148
1126
|
{
|
|
1149
1127
|
id: "publications",
|
|
1150
|
-
className:
|
|
1128
|
+
className: import_Publications.default.section,
|
|
1151
1129
|
initial: "hidden",
|
|
1152
1130
|
whileInView: "visible",
|
|
1153
1131
|
viewport: { once: true, amount: 0.1 },
|
|
1154
1132
|
variants: staggerContainer,
|
|
1155
1133
|
children: [
|
|
1156
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_framer_motion6.motion.div, { className:
|
|
1157
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h2", { className:
|
|
1158
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("a", { href: settings?.socialLinks?.googleScholar || "#", className:
|
|
1134
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_framer_motion6.motion.div, { className: import_Publications.default.header, variants: fadeInUp, children: [
|
|
1135
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h2", { className: import_Publications.default.title, children: "Publications" }),
|
|
1136
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("a", { href: settings?.socialLinks?.googleScholar || "#", className: import_Publications.default.scholarLink, children: "View Google Scholar ->" })
|
|
1159
1137
|
] }),
|
|
1160
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className:
|
|
1138
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: import_Publications.default.list, children: displayPublications.map((pub) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1161
1139
|
import_framer_motion6.motion.div,
|
|
1162
1140
|
{
|
|
1163
|
-
className:
|
|
1141
|
+
className: import_Publications.default.card,
|
|
1164
1142
|
variants: fadeInUp,
|
|
1165
1143
|
whileHover: { y: -2 },
|
|
1166
1144
|
transition: { duration: 0.2 },
|
|
1167
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className:
|
|
1168
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className:
|
|
1169
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className:
|
|
1170
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className:
|
|
1171
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className:
|
|
1172
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className:
|
|
1173
|
-
pub.highlight && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className:
|
|
1145
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: import_Publications.default.cardContent, children: [
|
|
1146
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: import_Publications.default.cardInfo, children: [
|
|
1147
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h3", { className: import_Publications.default.cardTitle, children: pub.title }),
|
|
1148
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: import_Publications.default.cardAuthors, children: renderAuthors(pub.authors) }),
|
|
1149
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: import_Publications.default.cardMeta, children: [
|
|
1150
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: import_Publications.default.cardVenue, children: pub.venue }),
|
|
1151
|
+
pub.highlight && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: import_Publications.default.cardHighlight, children: [
|
|
1174
1152
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1175
1153
|
"span",
|
|
1176
1154
|
{
|
|
1177
|
-
className: `material-symbols-outlined ${
|
|
1155
|
+
className: `material-symbols-outlined ${import_Publications.default.cardHighlightIcon}`,
|
|
1178
1156
|
children: "star"
|
|
1179
1157
|
}
|
|
1180
1158
|
),
|
|
@@ -1182,22 +1160,22 @@ function Publications({ publications }) {
|
|
|
1182
1160
|
] })
|
|
1183
1161
|
] })
|
|
1184
1162
|
] }),
|
|
1185
|
-
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className:
|
|
1186
|
-
(pub.pdfUrl || pub.pdfFileUrl) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("a", { href: pub.pdfUrl || pub.pdfFileUrl, className:
|
|
1163
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: import_Publications.default.cardActions, children: [
|
|
1164
|
+
(pub.pdfUrl || pub.pdfFileUrl) && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("a", { href: pub.pdfUrl || pub.pdfFileUrl, className: import_Publications.default.actionButton, children: [
|
|
1187
1165
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1188
1166
|
"span",
|
|
1189
1167
|
{
|
|
1190
|
-
className: `material-symbols-outlined ${
|
|
1168
|
+
className: `material-symbols-outlined ${import_Publications.default.actionIcon}`,
|
|
1191
1169
|
children: "picture_as_pdf"
|
|
1192
1170
|
}
|
|
1193
1171
|
),
|
|
1194
1172
|
"PDF"
|
|
1195
1173
|
] }),
|
|
1196
|
-
pub.codeUrl && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("a", { href: pub.codeUrl, className:
|
|
1174
|
+
pub.codeUrl && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("a", { href: pub.codeUrl, className: import_Publications.default.actionButton, children: [
|
|
1197
1175
|
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
1198
1176
|
"span",
|
|
1199
1177
|
{
|
|
1200
|
-
className: `material-symbols-outlined ${
|
|
1178
|
+
className: `material-symbols-outlined ${import_Publications.default.actionIcon}`,
|
|
1201
1179
|
children: "code"
|
|
1202
1180
|
}
|
|
1203
1181
|
),
|