@prosophia/lab-classic 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.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: PicturesPage_default.photosGrid, children: images.map((pic) => /* @__PURE__ */ jsxs("div", { className: PicturesPage_default.photoCard, children: [
235
- /* @__PURE__ */ jsx2("div", { className: PicturesPage_default.photoImageWrapper, children: /* @__PURE__ */ jsx2(
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: PicturesPage_default.photoImage
239
+ className: styles.photoImage
244
240
  }
245
241
  ) }),
246
- pic.caption && /* @__PURE__ */ jsx2("p", { className: PicturesPage_default.photoCaption, children: pic.caption })
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: PicturesPage_default.photosGrid,
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: PicturesPage_default.photoCard,
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: PicturesPage_default.photoImageWrapper, children: /* @__PURE__ */ jsx2(
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: PicturesPage_default.photoImage
290
+ className: styles.photoImage
295
291
  }
296
292
  ) }),
297
- pic.caption && /* @__PURE__ */ jsx2("p", { className: PicturesPage_default.photoCaption, children: pic.caption })
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: HomePage_default.heroSection, ref, children: /* @__PURE__ */ jsxs2("div", { className: HomePage_default.heroContainer, children: [
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: HomePage_default.heroContent,
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: HomePage_default.heroTagline,
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: HomePage_default.heroHeading,
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: HomePage_default.heroHeadingAccent, children: heroData.headingAccent })
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: HomePage_default.heroDescription,
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: HomePage_default.heroCtas,
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: HomePage_default.heroPrimaryCta, children: [
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: HomePage_default.heroSecondaryCta, children: "View Publications" })
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: HomePage_default.heroImageWrapper,
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: HomePage_default.heroImage,
688
+ className: styles2.heroImage,
697
689
  priority: true
698
690
  }
699
691
  ),
700
- /* @__PURE__ */ jsx5("div", { className: HomePage_default.heroImageOverlay })
701
- ] }) : /* @__PURE__ */ jsx5("div", { className: HomePage_default.heroImagePlaceholder, children: /* @__PURE__ */ jsxs2(
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: ThemeToggle_default.togglePlaceholder });
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: ThemeToggle_default.toggle,
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: ThemeToggle_default.track, children: [
765
- /* @__PURE__ */ jsx6("span", { className: `${ThemeToggle_default.icon} ${ThemeToggle_default.sunIcon} ${!isDark ? ThemeToggle_default.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: [
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: ThemeToggle_default.thumb,
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: `${ThemeToggle_default.icon} ${ThemeToggle_default.moonIcon} ${isDark ? ThemeToggle_default.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" }) }) })
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: `${Layout_default.header} ${scrolled ? Layout_default.headerScrolled : ""}`, children: /* @__PURE__ */ jsxs4("div", { className: Layout_default.navContainer, children: [
837
- /* @__PURE__ */ jsxs4(Link2, { href: "/", className: Layout_default.navLogo, "aria-label": "Go to homepage", children: [
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: Layout_default.navLogoAccent, children: [
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: Layout_default.desktopNav, "aria-label": "Main navigation", children: navLinks.map((link) => /* @__PURE__ */ jsx7(
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: `${Layout_default.navLink} ${isActive(link.href) ? Layout_default.navLinkActive : ""}`,
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: Layout_default.navActions, children: [
884
+ /* @__PURE__ */ jsxs4("div", { className: styles4.navActions, children: [
899
885
  /* @__PURE__ */ jsx7(ThemeToggle, {}),
900
- /* @__PURE__ */ jsx7(Link2, { href: "/contact", className: Layout_default.navCta, children: "Contact Us" })
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: Layout_default.menuButton,
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: Layout_default.menuButtonLines, children: [
911
- /* @__PURE__ */ jsx7("span", { className: `${Layout_default.menuLine} ${menuOpen ? Layout_default.menuLineOpen1 : ""}` }),
912
- /* @__PURE__ */ jsx7("span", { className: `${Layout_default.menuLine} ${menuOpen ? Layout_default.menuLineOpen2 : ""}` }),
913
- /* @__PURE__ */ jsx7("span", { className: `${Layout_default.menuLine} ${menuOpen ? Layout_default.menuLineOpen3 : ""}` })
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: `${Layout_default.mobileMenu} ${menuOpen ? Layout_default.mobileMenuOpen : ""}`,
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: Layout_default.mobileMenuOverlay,
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: Layout_default.mobileMenuContent,
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: `${Layout_default.mobileNavLink} ${isActive(link.href) ? Layout_default.mobileNavLinkActive : ""}`,
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: Layout_default.mobileNavCta,
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: Footer_default.socialIcon, children });
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: Footer_default.footerWrapper, children: /* @__PURE__ */ jsxs5("div", { className: Footer_default.footerContainer, children: [
1034
- /* @__PURE__ */ jsxs5("div", { className: Footer_default.mainFooter, children: [
1035
- /* @__PURE__ */ jsxs5("div", { className: Footer_default.footerAbout, children: [
1036
- /* @__PURE__ */ jsxs5(Link3, { href: "/", className: Footer_default.footerLogo, children: [
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: Footer_default.logoAccent, children: settings?.labNameAccent || "Lab" })
1023
+ /* @__PURE__ */ jsx8("span", { className: styles5.logoAccent, children: settings?.labNameAccent || "Lab" })
1040
1024
  ] }),
1041
- /* @__PURE__ */ jsx8("p", { className: Footer_default.footerDescription, children: settings?.labNameDescription || "Advancing the frontiers of physics and our understanding of the universe." }),
1042
- /* @__PURE__ */ jsxs5("div", { className: Footer_default.socials, children: [
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: Footer_default.footerLinksGrid, children: [
1048
- /* @__PURE__ */ jsxs5("div", { className: Footer_default.footerColumn, children: [
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: Footer_default.footerColumn, children: [
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: Footer_default.footerColumn, children: [
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: Footer_default.footerBottomBar, children: [
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: Footer_default.legalLinks, children: [
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: ContactCTA_default.ctaContainer, children: /* @__PURE__ */ jsxs7("div", { className: ContactCTA_default.ctaContent, children: [
1113
- /* @__PURE__ */ jsx10("h2", { className: ContactCTA_default.ctaHeading, children: "Interested in Our Research?" }),
1114
- /* @__PURE__ */ jsx10("p", { className: ContactCTA_default.ctaText, children: "Follow our work, explore our publications, or get in touch to discuss potential collaborations." }),
1115
- /* @__PURE__ */ jsx10(Link4, { href: "/contact", className: ContactCTA_default.ctaButton, children: "Contact Us" })
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