@prosophia/lab-classic 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 +69 -89
- package/dist/index.mjs +69 -89
- package/dist/layouts/index.js +40 -48
- package/dist/layouts/index.mjs +40 -48
- package/package.json +1 -1
- package/dist/index.css +0 -1587
- package/dist/layouts/index.css +0 -594
package/dist/index.mjs
CHANGED
|
@@ -199,11 +199,7 @@ function AnimatedSection({ children, className }) {
|
|
|
199
199
|
import { motion as motion2 } from "framer-motion";
|
|
200
200
|
import Image from "next/image";
|
|
201
201
|
import { useState, useEffect } from "react";
|
|
202
|
-
|
|
203
|
-
// src/components/PicturesPage.module.css
|
|
204
|
-
var PicturesPage_default = {};
|
|
205
|
-
|
|
206
|
-
// src/components/AnimatedGallery.tsx
|
|
202
|
+
import styles from "./PicturesPage.module.css";
|
|
207
203
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
208
204
|
function useMounted() {
|
|
209
205
|
const [mounted, setMounted] = useState(false);
|
|
@@ -231,8 +227,8 @@ function AnimatedGalleryHeader({ children, className }) {
|
|
|
231
227
|
function AnimatedGalleryGrid({ images }) {
|
|
232
228
|
const mounted = useMounted();
|
|
233
229
|
if (!mounted) {
|
|
234
|
-
return /* @__PURE__ */ jsx2("div", { className:
|
|
235
|
-
/* @__PURE__ */ jsx2("div", { className:
|
|
230
|
+
return /* @__PURE__ */ jsx2("div", { className: styles.photosGrid, children: images.map((pic) => /* @__PURE__ */ jsxs("div", { className: styles.photoCard, children: [
|
|
231
|
+
/* @__PURE__ */ jsx2("div", { className: styles.photoImageWrapper, children: /* @__PURE__ */ jsx2(
|
|
236
232
|
Image,
|
|
237
233
|
{
|
|
238
234
|
src: pic.imageUrl,
|
|
@@ -240,16 +236,16 @@ function AnimatedGalleryGrid({ images }) {
|
|
|
240
236
|
width: pic.width,
|
|
241
237
|
height: pic.height,
|
|
242
238
|
sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",
|
|
243
|
-
className:
|
|
239
|
+
className: styles.photoImage
|
|
244
240
|
}
|
|
245
241
|
) }),
|
|
246
|
-
pic.caption && /* @__PURE__ */ jsx2("p", { className:
|
|
242
|
+
pic.caption && /* @__PURE__ */ jsx2("p", { className: styles.photoCaption, children: pic.caption })
|
|
247
243
|
] }, pic._id)) });
|
|
248
244
|
}
|
|
249
245
|
return /* @__PURE__ */ jsx2(
|
|
250
246
|
motion2.div,
|
|
251
247
|
{
|
|
252
|
-
className:
|
|
248
|
+
className: styles.photosGrid,
|
|
253
249
|
initial: "hidden",
|
|
254
250
|
animate: "visible",
|
|
255
251
|
variants: {
|
|
@@ -265,7 +261,7 @@ function AnimatedGalleryGrid({ images }) {
|
|
|
265
261
|
children: images.map((pic) => /* @__PURE__ */ jsxs(
|
|
266
262
|
motion2.div,
|
|
267
263
|
{
|
|
268
|
-
className:
|
|
264
|
+
className: styles.photoCard,
|
|
269
265
|
variants: {
|
|
270
266
|
hidden: { opacity: 0, y: 40, scale: 0.95 },
|
|
271
267
|
visible: {
|
|
@@ -283,7 +279,7 @@ function AnimatedGalleryGrid({ images }) {
|
|
|
283
279
|
transition: { duration: 0.3 }
|
|
284
280
|
},
|
|
285
281
|
children: [
|
|
286
|
-
/* @__PURE__ */ jsx2("div", { className:
|
|
282
|
+
/* @__PURE__ */ jsx2("div", { className: styles.photoImageWrapper, children: /* @__PURE__ */ jsx2(
|
|
287
283
|
Image,
|
|
288
284
|
{
|
|
289
285
|
src: pic.imageUrl,
|
|
@@ -291,10 +287,10 @@ function AnimatedGalleryGrid({ images }) {
|
|
|
291
287
|
width: pic.width,
|
|
292
288
|
height: pic.height,
|
|
293
289
|
sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",
|
|
294
|
-
className:
|
|
290
|
+
className: styles.photoImage
|
|
295
291
|
}
|
|
296
292
|
) }),
|
|
297
|
-
pic.caption && /* @__PURE__ */ jsx2("p", { className:
|
|
293
|
+
pic.caption && /* @__PURE__ */ jsx2("p", { className: styles.photoCaption, children: pic.caption })
|
|
298
294
|
]
|
|
299
295
|
},
|
|
300
296
|
pic._id
|
|
@@ -604,21 +600,17 @@ import { motion as motion5, useScroll, useTransform } from "framer-motion";
|
|
|
604
600
|
import { useRef } from "react";
|
|
605
601
|
import Image2 from "next/image";
|
|
606
602
|
import Link from "next/link";
|
|
607
|
-
|
|
608
|
-
// src/components/HomePage.module.css
|
|
609
|
-
var HomePage_default = {};
|
|
610
|
-
|
|
611
|
-
// src/components/AnimatedHero.tsx
|
|
603
|
+
import styles2 from "./HomePage.module.css";
|
|
612
604
|
import { Fragment, jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
613
605
|
function AnimatedHero({ heroData, ArrowRightIcon }) {
|
|
614
606
|
const ref = useRef(null);
|
|
615
607
|
const { scrollY } = useScroll();
|
|
616
608
|
const y = useTransform(scrollY, [0, 500], [0, 150]);
|
|
617
|
-
return /* @__PURE__ */ jsx5("section", { className:
|
|
609
|
+
return /* @__PURE__ */ jsx5("section", { className: styles2.heroSection, ref, children: /* @__PURE__ */ jsxs2("div", { className: styles2.heroContainer, children: [
|
|
618
610
|
/* @__PURE__ */ jsxs2(
|
|
619
611
|
motion5.div,
|
|
620
612
|
{
|
|
621
|
-
className:
|
|
613
|
+
className: styles2.heroContent,
|
|
622
614
|
initial: "hidden",
|
|
623
615
|
animate: "visible",
|
|
624
616
|
variants: fadeInUp,
|
|
@@ -626,7 +618,7 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
|
|
|
626
618
|
/* @__PURE__ */ jsx5(
|
|
627
619
|
motion5.span,
|
|
628
620
|
{
|
|
629
|
-
className:
|
|
621
|
+
className: styles2.heroTagline,
|
|
630
622
|
initial: { opacity: 0 },
|
|
631
623
|
animate: { opacity: 1 },
|
|
632
624
|
transition: { duration: 0.6, delay: 0.2 },
|
|
@@ -636,21 +628,21 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
|
|
|
636
628
|
/* @__PURE__ */ jsxs2(
|
|
637
629
|
motion5.h1,
|
|
638
630
|
{
|
|
639
|
-
className:
|
|
631
|
+
className: styles2.heroHeading,
|
|
640
632
|
initial: { opacity: 0, y: 20 },
|
|
641
633
|
animate: { opacity: 1, y: 0 },
|
|
642
634
|
transition: { duration: 0.8, delay: 0.3 },
|
|
643
635
|
children: [
|
|
644
636
|
heroData.heading,
|
|
645
637
|
" ",
|
|
646
|
-
/* @__PURE__ */ jsx5("span", { className:
|
|
638
|
+
/* @__PURE__ */ jsx5("span", { className: styles2.heroHeadingAccent, children: heroData.headingAccent })
|
|
647
639
|
]
|
|
648
640
|
}
|
|
649
641
|
),
|
|
650
642
|
/* @__PURE__ */ jsx5(
|
|
651
643
|
motion5.p,
|
|
652
644
|
{
|
|
653
|
-
className:
|
|
645
|
+
className: styles2.heroDescription,
|
|
654
646
|
initial: { opacity: 0, y: 20 },
|
|
655
647
|
animate: { opacity: 1, y: 0 },
|
|
656
648
|
transition: { duration: 0.8, delay: 0.4 },
|
|
@@ -660,16 +652,16 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
|
|
|
660
652
|
/* @__PURE__ */ jsxs2(
|
|
661
653
|
motion5.div,
|
|
662
654
|
{
|
|
663
|
-
className:
|
|
655
|
+
className: styles2.heroCtas,
|
|
664
656
|
initial: { opacity: 0, y: 20 },
|
|
665
657
|
animate: { opacity: 1, y: 0 },
|
|
666
658
|
transition: { duration: 0.8, delay: 0.5 },
|
|
667
659
|
children: [
|
|
668
|
-
/* @__PURE__ */ jsxs2(Link, { href: heroData.ctaLink, className:
|
|
660
|
+
/* @__PURE__ */ jsxs2(Link, { href: heroData.ctaLink, className: styles2.heroPrimaryCta, children: [
|
|
669
661
|
heroData.ctaText,
|
|
670
662
|
/* @__PURE__ */ jsx5(ArrowRightIcon, {})
|
|
671
663
|
] }),
|
|
672
|
-
/* @__PURE__ */ jsx5(Link, { href: "/publications", className:
|
|
664
|
+
/* @__PURE__ */ jsx5(Link, { href: "/publications", className: styles2.heroSecondaryCta, children: "View Publications" })
|
|
673
665
|
]
|
|
674
666
|
}
|
|
675
667
|
)
|
|
@@ -679,7 +671,7 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
|
|
|
679
671
|
/* @__PURE__ */ jsx5(
|
|
680
672
|
motion5.div,
|
|
681
673
|
{
|
|
682
|
-
className:
|
|
674
|
+
className: styles2.heroImageWrapper,
|
|
683
675
|
style: { y },
|
|
684
676
|
initial: "hidden",
|
|
685
677
|
animate: "visible",
|
|
@@ -693,12 +685,12 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
|
|
|
693
685
|
alt: "Research lab",
|
|
694
686
|
width: 800,
|
|
695
687
|
height: 600,
|
|
696
|
-
className:
|
|
688
|
+
className: styles2.heroImage,
|
|
697
689
|
priority: true
|
|
698
690
|
}
|
|
699
691
|
),
|
|
700
|
-
/* @__PURE__ */ jsx5("div", { className:
|
|
701
|
-
] }) : /* @__PURE__ */ jsx5("div", { className:
|
|
692
|
+
/* @__PURE__ */ jsx5("div", { className: styles2.heroImageOverlay })
|
|
693
|
+
] }) : /* @__PURE__ */ jsx5("div", { className: styles2.heroImagePlaceholder, children: /* @__PURE__ */ jsxs2(
|
|
702
694
|
"svg",
|
|
703
695
|
{
|
|
704
696
|
width: "120",
|
|
@@ -727,19 +719,13 @@ import { ThemeProvider, useTheme as useTheme2 } from "next-themes";
|
|
|
727
719
|
import Link2 from "next/link";
|
|
728
720
|
import { useState as useState4, useEffect as useEffect4, useCallback } from "react";
|
|
729
721
|
import { usePathname } from "next/navigation";
|
|
730
|
-
|
|
731
|
-
// src/components/Layout.module.css
|
|
732
|
-
var Layout_default = {};
|
|
722
|
+
import styles4 from "./Layout.module.css";
|
|
733
723
|
|
|
734
724
|
// src/components/ThemeToggle.tsx
|
|
735
725
|
import { useTheme } from "next-themes";
|
|
736
726
|
import { useEffect as useEffect3, useState as useState3 } from "react";
|
|
737
727
|
import { motion as motion6 } from "framer-motion";
|
|
738
|
-
|
|
739
|
-
// src/components/ThemeToggle.module.css
|
|
740
|
-
var ThemeToggle_default = {};
|
|
741
|
-
|
|
742
|
-
// src/components/ThemeToggle.tsx
|
|
728
|
+
import styles3 from "./ThemeToggle.module.css";
|
|
743
729
|
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
744
730
|
function ThemeToggle() {
|
|
745
731
|
const { theme, setTheme, resolvedTheme } = useTheme();
|
|
@@ -748,7 +734,7 @@ function ThemeToggle() {
|
|
|
748
734
|
setMounted(true);
|
|
749
735
|
}, []);
|
|
750
736
|
if (!mounted) {
|
|
751
|
-
return /* @__PURE__ */ jsx6("div", { className:
|
|
737
|
+
return /* @__PURE__ */ jsx6("div", { className: styles3.togglePlaceholder });
|
|
752
738
|
}
|
|
753
739
|
const isDark = resolvedTheme === "dark";
|
|
754
740
|
const toggleTheme = () => {
|
|
@@ -757,12 +743,12 @@ function ThemeToggle() {
|
|
|
757
743
|
return /* @__PURE__ */ jsx6(
|
|
758
744
|
motion6.button,
|
|
759
745
|
{
|
|
760
|
-
className:
|
|
746
|
+
className: styles3.toggle,
|
|
761
747
|
onClick: toggleTheme,
|
|
762
748
|
"aria-label": `Switch to ${isDark ? "light" : "dark"} mode`,
|
|
763
749
|
whileTap: { scale: 0.95 },
|
|
764
|
-
children: /* @__PURE__ */ jsxs3("span", { className:
|
|
765
|
-
/* @__PURE__ */ jsx6("span", { className: `${
|
|
750
|
+
children: /* @__PURE__ */ jsxs3("span", { className: styles3.track, children: [
|
|
751
|
+
/* @__PURE__ */ jsx6("span", { className: `${styles3.icon} ${styles3.sunIcon} ${!isDark ? styles3.iconActive : ""}`, children: /* @__PURE__ */ jsxs3("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
766
752
|
/* @__PURE__ */ jsx6("circle", { cx: "12", cy: "12", r: "5" }),
|
|
767
753
|
/* @__PURE__ */ jsx6("line", { x1: "12", y1: "1", x2: "12", y2: "3" }),
|
|
768
754
|
/* @__PURE__ */ jsx6("line", { x1: "12", y1: "21", x2: "12", y2: "23" }),
|
|
@@ -776,12 +762,12 @@ function ThemeToggle() {
|
|
|
776
762
|
/* @__PURE__ */ jsx6(
|
|
777
763
|
motion6.span,
|
|
778
764
|
{
|
|
779
|
-
className:
|
|
765
|
+
className: styles3.thumb,
|
|
780
766
|
animate: { x: isDark ? 26 : 0 },
|
|
781
767
|
transition: { type: "spring", stiffness: 500, damping: 30 }
|
|
782
768
|
}
|
|
783
769
|
),
|
|
784
|
-
/* @__PURE__ */ jsx6("span", { className: `${
|
|
770
|
+
/* @__PURE__ */ jsx6("span", { className: `${styles3.icon} ${styles3.moonIcon} ${isDark ? styles3.iconActive : ""}`, children: /* @__PURE__ */ jsx6("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ jsx6("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }) })
|
|
785
771
|
] })
|
|
786
772
|
}
|
|
787
773
|
);
|
|
@@ -833,8 +819,8 @@ function Header({ settings }) {
|
|
|
833
819
|
if (href === "/") return pathname === "/";
|
|
834
820
|
return pathname.startsWith(href);
|
|
835
821
|
};
|
|
836
|
-
return /* @__PURE__ */ jsx7("header", { className: `${
|
|
837
|
-
/* @__PURE__ */ jsxs4(Link2, { href: "/", className:
|
|
822
|
+
return /* @__PURE__ */ jsx7("header", { className: `${styles4.header} ${scrolled ? styles4.headerScrolled : ""}`, children: /* @__PURE__ */ jsxs4("div", { className: styles4.navContainer, children: [
|
|
823
|
+
/* @__PURE__ */ jsxs4(Link2, { href: "/", className: styles4.navLogo, "aria-label": "Go to homepage", children: [
|
|
838
824
|
/* @__PURE__ */ jsxs4(
|
|
839
825
|
"svg",
|
|
840
826
|
{
|
|
@@ -880,37 +866,37 @@ function Header({ settings }) {
|
|
|
880
866
|
),
|
|
881
867
|
/* @__PURE__ */ jsxs4("span", { children: [
|
|
882
868
|
settings.labName || "Research",
|
|
883
|
-
settings.labNameAccent && /* @__PURE__ */ jsxs4("span", { className:
|
|
869
|
+
settings.labNameAccent && /* @__PURE__ */ jsxs4("span", { className: styles4.navLogoAccent, children: [
|
|
884
870
|
" ",
|
|
885
871
|
settings.labNameAccent
|
|
886
872
|
] })
|
|
887
873
|
] })
|
|
888
874
|
] }),
|
|
889
|
-
/* @__PURE__ */ jsx7("nav", { className:
|
|
875
|
+
/* @__PURE__ */ jsx7("nav", { className: styles4.desktopNav, "aria-label": "Main navigation", children: navLinks.map((link) => /* @__PURE__ */ jsx7(
|
|
890
876
|
Link2,
|
|
891
877
|
{
|
|
892
878
|
href: link.href,
|
|
893
|
-
className: `${
|
|
879
|
+
className: `${styles4.navLink} ${isActive(link.href) ? styles4.navLinkActive : ""}`,
|
|
894
880
|
children: link.label
|
|
895
881
|
},
|
|
896
882
|
link.href
|
|
897
883
|
)) }),
|
|
898
|
-
/* @__PURE__ */ jsxs4("div", { className:
|
|
884
|
+
/* @__PURE__ */ jsxs4("div", { className: styles4.navActions, children: [
|
|
899
885
|
/* @__PURE__ */ jsx7(ThemeToggle, {}),
|
|
900
|
-
/* @__PURE__ */ jsx7(Link2, { href: "/contact", className:
|
|
886
|
+
/* @__PURE__ */ jsx7(Link2, { href: "/contact", className: styles4.navCta, children: "Contact Us" })
|
|
901
887
|
] }),
|
|
902
888
|
/* @__PURE__ */ jsx7(
|
|
903
889
|
"button",
|
|
904
890
|
{
|
|
905
|
-
className:
|
|
891
|
+
className: styles4.menuButton,
|
|
906
892
|
onClick: () => setMenuOpen(!menuOpen),
|
|
907
893
|
"aria-label": menuOpen ? "Close menu" : "Open menu",
|
|
908
894
|
"aria-expanded": menuOpen,
|
|
909
895
|
"aria-controls": "mobile-menu",
|
|
910
|
-
children: /* @__PURE__ */ jsxs4("span", { className:
|
|
911
|
-
/* @__PURE__ */ jsx7("span", { className: `${
|
|
912
|
-
/* @__PURE__ */ jsx7("span", { className: `${
|
|
913
|
-
/* @__PURE__ */ jsx7("span", { className: `${
|
|
896
|
+
children: /* @__PURE__ */ jsxs4("span", { className: styles4.menuButtonLines, children: [
|
|
897
|
+
/* @__PURE__ */ jsx7("span", { className: `${styles4.menuLine} ${menuOpen ? styles4.menuLineOpen1 : ""}` }),
|
|
898
|
+
/* @__PURE__ */ jsx7("span", { className: `${styles4.menuLine} ${menuOpen ? styles4.menuLineOpen2 : ""}` }),
|
|
899
|
+
/* @__PURE__ */ jsx7("span", { className: `${styles4.menuLine} ${menuOpen ? styles4.menuLineOpen3 : ""}` })
|
|
914
900
|
] })
|
|
915
901
|
}
|
|
916
902
|
),
|
|
@@ -918,13 +904,13 @@ function Header({ settings }) {
|
|
|
918
904
|
"div",
|
|
919
905
|
{
|
|
920
906
|
id: "mobile-menu",
|
|
921
|
-
className: `${
|
|
907
|
+
className: `${styles4.mobileMenu} ${menuOpen ? styles4.mobileMenuOpen : ""}`,
|
|
922
908
|
"aria-hidden": !menuOpen,
|
|
923
909
|
children: [
|
|
924
910
|
/* @__PURE__ */ jsx7(
|
|
925
911
|
"div",
|
|
926
912
|
{
|
|
927
|
-
className:
|
|
913
|
+
className: styles4.mobileMenuOverlay,
|
|
928
914
|
onClick: () => setMenuOpen(false),
|
|
929
915
|
"aria-hidden": "true"
|
|
930
916
|
}
|
|
@@ -932,14 +918,14 @@ function Header({ settings }) {
|
|
|
932
918
|
/* @__PURE__ */ jsxs4(
|
|
933
919
|
"nav",
|
|
934
920
|
{
|
|
935
|
-
className:
|
|
921
|
+
className: styles4.mobileMenuContent,
|
|
936
922
|
"aria-label": "Mobile navigation",
|
|
937
923
|
children: [
|
|
938
924
|
navLinks.map((link, index) => /* @__PURE__ */ jsx7(
|
|
939
925
|
Link2,
|
|
940
926
|
{
|
|
941
927
|
href: link.href,
|
|
942
|
-
className: `${
|
|
928
|
+
className: `${styles4.mobileNavLink} ${isActive(link.href) ? styles4.mobileNavLinkActive : ""}`,
|
|
943
929
|
style: { animationDelay: `${index * 50}ms` },
|
|
944
930
|
tabIndex: menuOpen ? 0 : -1,
|
|
945
931
|
children: link.label
|
|
@@ -950,7 +936,7 @@ function Header({ settings }) {
|
|
|
950
936
|
Link2,
|
|
951
937
|
{
|
|
952
938
|
href: "/contact",
|
|
953
|
-
className:
|
|
939
|
+
className: styles4.mobileNavCta,
|
|
954
940
|
style: { animationDelay: `${navLinks.length * 50}ms` },
|
|
955
941
|
tabIndex: menuOpen ? 0 : -1,
|
|
956
942
|
children: "Contact Us"
|
|
@@ -967,9 +953,7 @@ function Header({ settings }) {
|
|
|
967
953
|
|
|
968
954
|
// src/components/Footer.tsx
|
|
969
955
|
import Link3 from "next/link";
|
|
970
|
-
|
|
971
|
-
// src/components/Footer.module.css
|
|
972
|
-
var Footer_default = {};
|
|
956
|
+
import styles5 from "./Footer.module.css";
|
|
973
957
|
|
|
974
958
|
// src/lib/utils.ts
|
|
975
959
|
function isValidExternalUrl(url) {
|
|
@@ -1024,49 +1008,49 @@ function isValidSlug(slug) {
|
|
|
1024
1008
|
|
|
1025
1009
|
// src/components/Footer.tsx
|
|
1026
1010
|
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1027
|
-
var SocialIcon = ({ href, children }) => /* @__PURE__ */ jsx8("a", { href, target: "_blank", rel: "noopener noreferrer", className:
|
|
1011
|
+
var SocialIcon = ({ href, children }) => /* @__PURE__ */ jsx8("a", { href, target: "_blank", rel: "noopener noreferrer", className: styles5.socialIcon, children });
|
|
1028
1012
|
function Footer({ settings }) {
|
|
1029
1013
|
const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
|
|
1030
1014
|
const showPrivacy = settings?.showPrivacyPolicy !== false;
|
|
1031
1015
|
const showTerms = settings?.showTerms !== false;
|
|
1032
1016
|
const hasLegalLinks = showPrivacy || showTerms;
|
|
1033
|
-
return /* @__PURE__ */ jsx8("footer", { className:
|
|
1034
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1035
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1036
|
-
/* @__PURE__ */ jsxs5(Link3, { href: "/", className:
|
|
1017
|
+
return /* @__PURE__ */ jsx8("footer", { className: styles5.footerWrapper, children: /* @__PURE__ */ jsxs5("div", { className: styles5.footerContainer, children: [
|
|
1018
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.mainFooter, children: [
|
|
1019
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.footerAbout, children: [
|
|
1020
|
+
/* @__PURE__ */ jsxs5(Link3, { href: "/", className: styles5.footerLogo, children: [
|
|
1037
1021
|
settings?.labName || "Cavendish",
|
|
1038
1022
|
" ",
|
|
1039
|
-
/* @__PURE__ */ jsx8("span", { className:
|
|
1023
|
+
/* @__PURE__ */ jsx8("span", { className: styles5.logoAccent, children: settings?.labNameAccent || "Lab" })
|
|
1040
1024
|
] }),
|
|
1041
|
-
/* @__PURE__ */ jsx8("p", { className:
|
|
1042
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1025
|
+
/* @__PURE__ */ jsx8("p", { className: styles5.footerDescription, children: settings?.labNameDescription || "Advancing the frontiers of physics and our understanding of the universe." }),
|
|
1026
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.socials, children: [
|
|
1043
1027
|
/* @__PURE__ */ jsx8(SocialIcon, { href: "#", children: /* @__PURE__ */ jsx8("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx8("path", { d: "M19 0h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-11 19h-3v-11h3v11zm-1.5-12.268c-.966 0-1.75-.79-1.75-1.764s.784-1.764 1.75-1.764 1.75.79 1.75 1.764-.783 1.764-1.75 1.764zm13.5 12.268h-3v-5.604c0-3.368-4-3.113-4 0v5.604h-3v-11h3v1.765c1.396-2.586 7-2.777 7 2.476v6.759z" }) }) }),
|
|
1044
1028
|
/* @__PURE__ */ jsx8(SocialIcon, { href: "#", children: /* @__PURE__ */ jsx8("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx8("path", { d: "M18.244 2.25h3.308l-7.227 8.26 8.502 11.24h-6.617l-5.21-6.817-6.044 6.817h-3.308l7.73-8.835-7.73-10.668h6.78l4.522 6.312 5.59-6.312z" }) }) })
|
|
1045
1029
|
] })
|
|
1046
1030
|
] }),
|
|
1047
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1048
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1031
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.footerLinksGrid, children: [
|
|
1032
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.footerColumn, children: [
|
|
1049
1033
|
/* @__PURE__ */ jsx8("h4", { children: "Quick Links" }),
|
|
1050
1034
|
/* @__PURE__ */ jsx8(Link3, { href: "/research", children: "Research" }),
|
|
1051
1035
|
/* @__PURE__ */ jsx8(Link3, { href: "/publications", children: "Publications" }),
|
|
1052
1036
|
/* @__PURE__ */ jsx8(Link3, { href: "/pictures", children: "Gallery" })
|
|
1053
1037
|
] }),
|
|
1054
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1038
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.footerColumn, children: [
|
|
1055
1039
|
/* @__PURE__ */ jsx8("h4", { children: "About" }),
|
|
1056
1040
|
/* @__PURE__ */ jsx8(Link3, { href: "/news", children: "News" }),
|
|
1057
1041
|
/* @__PURE__ */ jsx8(Link3, { href: "/people", children: "Our Team" }),
|
|
1058
1042
|
/* @__PURE__ */ jsx8(Link3, { href: "/contact", children: "Contact" })
|
|
1059
1043
|
] }),
|
|
1060
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1044
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.footerColumn, children: [
|
|
1061
1045
|
/* @__PURE__ */ jsx8("h4", { children: "Resources" }),
|
|
1062
1046
|
/* @__PURE__ */ jsx8(Link3, { href: "https://www.cam.ac.uk/", children: "University" }),
|
|
1063
1047
|
/* @__PURE__ */ jsx8(Link3, { href: "#", children: "Careers" })
|
|
1064
1048
|
] })
|
|
1065
1049
|
] })
|
|
1066
1050
|
] }),
|
|
1067
|
-
/* @__PURE__ */ jsxs5("div", { className:
|
|
1051
|
+
/* @__PURE__ */ jsxs5("div", { className: styles5.footerBottomBar, children: [
|
|
1068
1052
|
/* @__PURE__ */ jsx8("p", { children: settings?.footerText || `\xA9 ${currentYear} The Research Group. All Rights Reserved.` }),
|
|
1069
|
-
hasLegalLinks && /* @__PURE__ */ jsxs5("div", { className:
|
|
1053
|
+
hasLegalLinks && /* @__PURE__ */ jsxs5("div", { className: styles5.legalLinks, children: [
|
|
1070
1054
|
showPrivacy && (settings?.privacyPolicyUrl && isValidExternalUrl(settings.privacyPolicyUrl) ? /* @__PURE__ */ jsx8("a", { href: settings.privacyPolicyUrl, target: "_blank", rel: "noopener noreferrer", children: "Privacy Policy" }) : /* @__PURE__ */ jsx8(Link3, { href: "/privacy", children: "Privacy Policy" })),
|
|
1071
1055
|
showTerms && (settings?.termsUrl && isValidExternalUrl(settings.termsUrl) ? /* @__PURE__ */ jsx8("a", { href: settings.termsUrl, target: "_blank", rel: "noopener noreferrer", children: "Terms & Conditions" }) : /* @__PURE__ */ jsx8(Link3, { href: "/terms", children: "Terms & Conditions" }))
|
|
1072
1056
|
] })
|
|
@@ -1102,17 +1086,13 @@ function ClientLayout({ children, settings }) {
|
|
|
1102
1086
|
|
|
1103
1087
|
// src/components/ContactCTA.tsx
|
|
1104
1088
|
import Link4 from "next/link";
|
|
1105
|
-
|
|
1106
|
-
// src/components/ContactCTA.module.css
|
|
1107
|
-
var ContactCTA_default = {};
|
|
1108
|
-
|
|
1109
|
-
// src/components/ContactCTA.tsx
|
|
1089
|
+
import styles6 from "./ContactCTA.module.css";
|
|
1110
1090
|
import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1111
1091
|
function ContactCTA() {
|
|
1112
|
-
return /* @__PURE__ */ jsx10("section", { className:
|
|
1113
|
-
/* @__PURE__ */ jsx10("h2", { className:
|
|
1114
|
-
/* @__PURE__ */ jsx10("p", { className:
|
|
1115
|
-
/* @__PURE__ */ jsx10(Link4, { href: "/contact", className:
|
|
1092
|
+
return /* @__PURE__ */ jsx10("section", { className: styles6.ctaContainer, children: /* @__PURE__ */ jsxs7("div", { className: styles6.ctaContent, children: [
|
|
1093
|
+
/* @__PURE__ */ jsx10("h2", { className: styles6.ctaHeading, children: "Interested in Our Research?" }),
|
|
1094
|
+
/* @__PURE__ */ jsx10("p", { className: styles6.ctaText, children: "Follow our work, explore our publications, or get in touch to discuss potential collaborations." }),
|
|
1095
|
+
/* @__PURE__ */ jsx10(Link4, { href: "/contact", className: styles6.ctaButton, children: "Contact Us" })
|
|
1116
1096
|
] }) });
|
|
1117
1097
|
}
|
|
1118
1098
|
|