@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 CHANGED
@@ -281,11 +281,7 @@ function AnimatedSection({ children, className }) {
281
281
  var import_framer_motion2 = require("framer-motion");
282
282
  var import_image = __toESM(require("next/image"));
283
283
  var import_react = require("react");
284
-
285
- // src/components/PicturesPage.module.css
286
- var PicturesPage_default = {};
287
-
288
- // src/components/AnimatedGallery.tsx
284
+ var import_PicturesPage = __toESM(require("./PicturesPage.module.css"));
289
285
  var import_jsx_runtime2 = require("react/jsx-runtime");
290
286
  function useMounted() {
291
287
  const [mounted, setMounted] = (0, import_react.useState)(false);
@@ -313,8 +309,8 @@ function AnimatedGalleryHeader({ children, className }) {
313
309
  function AnimatedGalleryGrid({ images }) {
314
310
  const mounted = useMounted();
315
311
  if (!mounted) {
316
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: PicturesPage_default.photosGrid, children: images.map((pic) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: PicturesPage_default.photoCard, children: [
317
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: PicturesPage_default.photoImageWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
312
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: import_PicturesPage.default.photosGrid, children: images.map((pic) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)("div", { className: import_PicturesPage.default.photoCard, children: [
313
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: import_PicturesPage.default.photoImageWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
318
314
  import_image.default,
319
315
  {
320
316
  src: pic.imageUrl,
@@ -322,16 +318,16 @@ function AnimatedGalleryGrid({ images }) {
322
318
  width: pic.width,
323
319
  height: pic.height,
324
320
  sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",
325
- className: PicturesPage_default.photoImage
321
+ className: import_PicturesPage.default.photoImage
326
322
  }
327
323
  ) }),
328
- pic.caption && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: PicturesPage_default.photoCaption, children: pic.caption })
324
+ pic.caption && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: import_PicturesPage.default.photoCaption, children: pic.caption })
329
325
  ] }, pic._id)) });
330
326
  }
331
327
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
332
328
  import_framer_motion2.motion.div,
333
329
  {
334
- className: PicturesPage_default.photosGrid,
330
+ className: import_PicturesPage.default.photosGrid,
335
331
  initial: "hidden",
336
332
  animate: "visible",
337
333
  variants: {
@@ -347,7 +343,7 @@ function AnimatedGalleryGrid({ images }) {
347
343
  children: images.map((pic) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
348
344
  import_framer_motion2.motion.div,
349
345
  {
350
- className: PicturesPage_default.photoCard,
346
+ className: import_PicturesPage.default.photoCard,
351
347
  variants: {
352
348
  hidden: { opacity: 0, y: 40, scale: 0.95 },
353
349
  visible: {
@@ -365,7 +361,7 @@ function AnimatedGalleryGrid({ images }) {
365
361
  transition: { duration: 0.3 }
366
362
  },
367
363
  children: [
368
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: PicturesPage_default.photoImageWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
364
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: import_PicturesPage.default.photoImageWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
369
365
  import_image.default,
370
366
  {
371
367
  src: pic.imageUrl,
@@ -373,10 +369,10 @@ function AnimatedGalleryGrid({ images }) {
373
369
  width: pic.width,
374
370
  height: pic.height,
375
371
  sizes: "(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw",
376
- className: PicturesPage_default.photoImage
372
+ className: import_PicturesPage.default.photoImage
377
373
  }
378
374
  ) }),
379
- pic.caption && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: PicturesPage_default.photoCaption, children: pic.caption })
375
+ pic.caption && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("p", { className: import_PicturesPage.default.photoCaption, children: pic.caption })
380
376
  ]
381
377
  },
382
378
  pic._id
@@ -686,21 +682,17 @@ var import_framer_motion5 = require("framer-motion");
686
682
  var import_react3 = require("react");
687
683
  var import_image2 = __toESM(require("next/image"));
688
684
  var import_link = __toESM(require("next/link"));
689
-
690
- // src/components/HomePage.module.css
691
- var HomePage_default = {};
692
-
693
- // src/components/AnimatedHero.tsx
685
+ var import_HomePage = __toESM(require("./HomePage.module.css"));
694
686
  var import_jsx_runtime5 = require("react/jsx-runtime");
695
687
  function AnimatedHero({ heroData, ArrowRightIcon }) {
696
688
  const ref = (0, import_react3.useRef)(null);
697
689
  const { scrollY } = (0, import_framer_motion5.useScroll)();
698
690
  const y = (0, import_framer_motion5.useTransform)(scrollY, [0, 500], [0, 150]);
699
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { className: HomePage_default.heroSection, ref, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: HomePage_default.heroContainer, children: [
691
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("section", { className: import_HomePage.default.heroSection, ref, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: import_HomePage.default.heroContainer, children: [
700
692
  /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
701
693
  import_framer_motion5.motion.div,
702
694
  {
703
- className: HomePage_default.heroContent,
695
+ className: import_HomePage.default.heroContent,
704
696
  initial: "hidden",
705
697
  animate: "visible",
706
698
  variants: fadeInUp,
@@ -708,7 +700,7 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
708
700
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
709
701
  import_framer_motion5.motion.span,
710
702
  {
711
- className: HomePage_default.heroTagline,
703
+ className: import_HomePage.default.heroTagline,
712
704
  initial: { opacity: 0 },
713
705
  animate: { opacity: 1 },
714
706
  transition: { duration: 0.6, delay: 0.2 },
@@ -718,21 +710,21 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
718
710
  /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
719
711
  import_framer_motion5.motion.h1,
720
712
  {
721
- className: HomePage_default.heroHeading,
713
+ className: import_HomePage.default.heroHeading,
722
714
  initial: { opacity: 0, y: 20 },
723
715
  animate: { opacity: 1, y: 0 },
724
716
  transition: { duration: 0.8, delay: 0.3 },
725
717
  children: [
726
718
  heroData.heading,
727
719
  " ",
728
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: HomePage_default.heroHeadingAccent, children: heroData.headingAccent })
720
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: import_HomePage.default.heroHeadingAccent, children: heroData.headingAccent })
729
721
  ]
730
722
  }
731
723
  ),
732
724
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
733
725
  import_framer_motion5.motion.p,
734
726
  {
735
- className: HomePage_default.heroDescription,
727
+ className: import_HomePage.default.heroDescription,
736
728
  initial: { opacity: 0, y: 20 },
737
729
  animate: { opacity: 1, y: 0 },
738
730
  transition: { duration: 0.8, delay: 0.4 },
@@ -742,16 +734,16 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
742
734
  /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
743
735
  import_framer_motion5.motion.div,
744
736
  {
745
- className: HomePage_default.heroCtas,
737
+ className: import_HomePage.default.heroCtas,
746
738
  initial: { opacity: 0, y: 20 },
747
739
  animate: { opacity: 1, y: 0 },
748
740
  transition: { duration: 0.8, delay: 0.5 },
749
741
  children: [
750
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_link.default, { href: heroData.ctaLink, className: HomePage_default.heroPrimaryCta, children: [
742
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_link.default, { href: heroData.ctaLink, className: import_HomePage.default.heroPrimaryCta, children: [
751
743
  heroData.ctaText,
752
744
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ArrowRightIcon, {})
753
745
  ] }),
754
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_link.default, { href: "/publications", className: HomePage_default.heroSecondaryCta, children: "View Publications" })
746
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_link.default, { href: "/publications", className: import_HomePage.default.heroSecondaryCta, children: "View Publications" })
755
747
  ]
756
748
  }
757
749
  )
@@ -761,7 +753,7 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
761
753
  /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
762
754
  import_framer_motion5.motion.div,
763
755
  {
764
- className: HomePage_default.heroImageWrapper,
756
+ className: import_HomePage.default.heroImageWrapper,
765
757
  style: { y },
766
758
  initial: "hidden",
767
759
  animate: "visible",
@@ -775,12 +767,12 @@ function AnimatedHero({ heroData, ArrowRightIcon }) {
775
767
  alt: "Research lab",
776
768
  width: 800,
777
769
  height: 600,
778
- className: HomePage_default.heroImage,
770
+ className: import_HomePage.default.heroImage,
779
771
  priority: true
780
772
  }
781
773
  ),
782
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: HomePage_default.heroImageOverlay })
783
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: HomePage_default.heroImagePlaceholder, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
774
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: import_HomePage.default.heroImageOverlay })
775
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: import_HomePage.default.heroImagePlaceholder, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
784
776
  "svg",
785
777
  {
786
778
  width: "120",
@@ -809,19 +801,13 @@ var import_next_themes2 = require("next-themes");
809
801
  var import_link2 = __toESM(require("next/link"));
810
802
  var import_react5 = require("react");
811
803
  var import_navigation = require("next/navigation");
812
-
813
- // src/components/Layout.module.css
814
- var Layout_default = {};
804
+ var import_Layout = __toESM(require("./Layout.module.css"));
815
805
 
816
806
  // src/components/ThemeToggle.tsx
817
807
  var import_next_themes = require("next-themes");
818
808
  var import_react4 = require("react");
819
809
  var import_framer_motion6 = require("framer-motion");
820
-
821
- // src/components/ThemeToggle.module.css
822
- var ThemeToggle_default = {};
823
-
824
- // src/components/ThemeToggle.tsx
810
+ var import_ThemeToggle = __toESM(require("./ThemeToggle.module.css"));
825
811
  var import_jsx_runtime6 = require("react/jsx-runtime");
826
812
  function ThemeToggle() {
827
813
  const { theme, setTheme, resolvedTheme } = (0, import_next_themes.useTheme)();
@@ -830,7 +816,7 @@ function ThemeToggle() {
830
816
  setMounted(true);
831
817
  }, []);
832
818
  if (!mounted) {
833
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: ThemeToggle_default.togglePlaceholder });
819
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: import_ThemeToggle.default.togglePlaceholder });
834
820
  }
835
821
  const isDark = resolvedTheme === "dark";
836
822
  const toggleTheme = () => {
@@ -839,12 +825,12 @@ function ThemeToggle() {
839
825
  return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
840
826
  import_framer_motion6.motion.button,
841
827
  {
842
- className: ThemeToggle_default.toggle,
828
+ className: import_ThemeToggle.default.toggle,
843
829
  onClick: toggleTheme,
844
830
  "aria-label": `Switch to ${isDark ? "light" : "dark"} mode`,
845
831
  whileTap: { scale: 0.95 },
846
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: ThemeToggle_default.track, children: [
847
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: `${ThemeToggle_default.icon} ${ThemeToggle_default.sunIcon} ${!isDark ? ThemeToggle_default.iconActive : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
832
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: import_ThemeToggle.default.track, children: [
833
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: `${import_ThemeToggle.default.icon} ${import_ThemeToggle.default.sunIcon} ${!isDark ? import_ThemeToggle.default.iconActive : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
848
834
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("circle", { cx: "12", cy: "12", r: "5" }),
849
835
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", y1: "1", x2: "12", y2: "3" }),
850
836
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", y1: "21", x2: "12", y2: "23" }),
@@ -858,12 +844,12 @@ function ThemeToggle() {
858
844
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
859
845
  import_framer_motion6.motion.span,
860
846
  {
861
- className: ThemeToggle_default.thumb,
847
+ className: import_ThemeToggle.default.thumb,
862
848
  animate: { x: isDark ? 26 : 0 },
863
849
  transition: { type: "spring", stiffness: 500, damping: 30 }
864
850
  }
865
851
  ),
866
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: `${ThemeToggle_default.icon} ${ThemeToggle_default.moonIcon} ${isDark ? ThemeToggle_default.iconActive : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }) })
852
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: `${import_ThemeToggle.default.icon} ${import_ThemeToggle.default.moonIcon} ${isDark ? import_ThemeToggle.default.iconActive : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }) })
867
853
  ] })
868
854
  }
869
855
  );
@@ -915,8 +901,8 @@ function Header({ settings }) {
915
901
  if (href === "/") return pathname === "/";
916
902
  return pathname.startsWith(href);
917
903
  };
918
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", { className: `${Layout_default.header} ${scrolled ? Layout_default.headerScrolled : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: Layout_default.navContainer, children: [
919
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_link2.default, { href: "/", className: Layout_default.navLogo, "aria-label": "Go to homepage", children: [
904
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("header", { className: `${import_Layout.default.header} ${scrolled ? import_Layout.default.headerScrolled : ""}`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: import_Layout.default.navContainer, children: [
905
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_link2.default, { href: "/", className: import_Layout.default.navLogo, "aria-label": "Go to homepage", children: [
920
906
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
921
907
  "svg",
922
908
  {
@@ -962,37 +948,37 @@ function Header({ settings }) {
962
948
  ),
963
949
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
964
950
  settings.labName || "Research",
965
- settings.labNameAccent && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: Layout_default.navLogoAccent, children: [
951
+ settings.labNameAccent && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: import_Layout.default.navLogoAccent, children: [
966
952
  " ",
967
953
  settings.labNameAccent
968
954
  ] })
969
955
  ] })
970
956
  ] }),
971
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("nav", { className: Layout_default.desktopNav, "aria-label": "Main navigation", children: navLinks.map((link) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
957
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("nav", { className: import_Layout.default.desktopNav, "aria-label": "Main navigation", children: navLinks.map((link) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
972
958
  import_link2.default,
973
959
  {
974
960
  href: link.href,
975
- className: `${Layout_default.navLink} ${isActive(link.href) ? Layout_default.navLinkActive : ""}`,
961
+ className: `${import_Layout.default.navLink} ${isActive(link.href) ? import_Layout.default.navLinkActive : ""}`,
976
962
  children: link.label
977
963
  },
978
964
  link.href
979
965
  )) }),
980
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: Layout_default.navActions, children: [
966
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: import_Layout.default.navActions, children: [
981
967
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ThemeToggle, {}),
982
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_link2.default, { href: "/contact", className: Layout_default.navCta, children: "Contact Us" })
968
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_link2.default, { href: "/contact", className: import_Layout.default.navCta, children: "Contact Us" })
983
969
  ] }),
984
970
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
985
971
  "button",
986
972
  {
987
- className: Layout_default.menuButton,
973
+ className: import_Layout.default.menuButton,
988
974
  onClick: () => setMenuOpen(!menuOpen),
989
975
  "aria-label": menuOpen ? "Close menu" : "Open menu",
990
976
  "aria-expanded": menuOpen,
991
977
  "aria-controls": "mobile-menu",
992
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: Layout_default.menuButtonLines, children: [
993
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `${Layout_default.menuLine} ${menuOpen ? Layout_default.menuLineOpen1 : ""}` }),
994
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `${Layout_default.menuLine} ${menuOpen ? Layout_default.menuLineOpen2 : ""}` }),
995
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `${Layout_default.menuLine} ${menuOpen ? Layout_default.menuLineOpen3 : ""}` })
978
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: import_Layout.default.menuButtonLines, children: [
979
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `${import_Layout.default.menuLine} ${menuOpen ? import_Layout.default.menuLineOpen1 : ""}` }),
980
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `${import_Layout.default.menuLine} ${menuOpen ? import_Layout.default.menuLineOpen2 : ""}` }),
981
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: `${import_Layout.default.menuLine} ${menuOpen ? import_Layout.default.menuLineOpen3 : ""}` })
996
982
  ] })
997
983
  }
998
984
  ),
@@ -1000,13 +986,13 @@ function Header({ settings }) {
1000
986
  "div",
1001
987
  {
1002
988
  id: "mobile-menu",
1003
- className: `${Layout_default.mobileMenu} ${menuOpen ? Layout_default.mobileMenuOpen : ""}`,
989
+ className: `${import_Layout.default.mobileMenu} ${menuOpen ? import_Layout.default.mobileMenuOpen : ""}`,
1004
990
  "aria-hidden": !menuOpen,
1005
991
  children: [
1006
992
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1007
993
  "div",
1008
994
  {
1009
- className: Layout_default.mobileMenuOverlay,
995
+ className: import_Layout.default.mobileMenuOverlay,
1010
996
  onClick: () => setMenuOpen(false),
1011
997
  "aria-hidden": "true"
1012
998
  }
@@ -1014,14 +1000,14 @@ function Header({ settings }) {
1014
1000
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
1015
1001
  "nav",
1016
1002
  {
1017
- className: Layout_default.mobileMenuContent,
1003
+ className: import_Layout.default.mobileMenuContent,
1018
1004
  "aria-label": "Mobile navigation",
1019
1005
  children: [
1020
1006
  navLinks.map((link, index) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1021
1007
  import_link2.default,
1022
1008
  {
1023
1009
  href: link.href,
1024
- className: `${Layout_default.mobileNavLink} ${isActive(link.href) ? Layout_default.mobileNavLinkActive : ""}`,
1010
+ className: `${import_Layout.default.mobileNavLink} ${isActive(link.href) ? import_Layout.default.mobileNavLinkActive : ""}`,
1025
1011
  style: { animationDelay: `${index * 50}ms` },
1026
1012
  tabIndex: menuOpen ? 0 : -1,
1027
1013
  children: link.label
@@ -1032,7 +1018,7 @@ function Header({ settings }) {
1032
1018
  import_link2.default,
1033
1019
  {
1034
1020
  href: "/contact",
1035
- className: Layout_default.mobileNavCta,
1021
+ className: import_Layout.default.mobileNavCta,
1036
1022
  style: { animationDelay: `${navLinks.length * 50}ms` },
1037
1023
  tabIndex: menuOpen ? 0 : -1,
1038
1024
  children: "Contact Us"
@@ -1049,9 +1035,7 @@ function Header({ settings }) {
1049
1035
 
1050
1036
  // src/components/Footer.tsx
1051
1037
  var import_link3 = __toESM(require("next/link"));
1052
-
1053
- // src/components/Footer.module.css
1054
- var Footer_default = {};
1038
+ var import_Footer = __toESM(require("./Footer.module.css"));
1055
1039
 
1056
1040
  // src/lib/utils.ts
1057
1041
  function isValidExternalUrl(url) {
@@ -1106,49 +1090,49 @@ function isValidSlug(slug) {
1106
1090
 
1107
1091
  // src/components/Footer.tsx
1108
1092
  var import_jsx_runtime8 = require("react/jsx-runtime");
1109
- var SocialIcon = ({ href, children }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("a", { href, target: "_blank", rel: "noopener noreferrer", className: Footer_default.socialIcon, children });
1093
+ var SocialIcon = ({ href, children }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("a", { href, target: "_blank", rel: "noopener noreferrer", className: import_Footer.default.socialIcon, children });
1110
1094
  function Footer({ settings }) {
1111
1095
  const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
1112
1096
  const showPrivacy = settings?.showPrivacyPolicy !== false;
1113
1097
  const showTerms = settings?.showTerms !== false;
1114
1098
  const hasLegalLinks = showPrivacy || showTerms;
1115
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("footer", { className: Footer_default.footerWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerContainer, children: [
1116
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.mainFooter, children: [
1117
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerAbout, children: [
1118
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_link3.default, { href: "/", className: Footer_default.footerLogo, children: [
1099
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("footer", { className: import_Footer.default.footerWrapper, children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerContainer, children: [
1100
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.mainFooter, children: [
1101
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerAbout, children: [
1102
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_link3.default, { href: "/", className: import_Footer.default.footerLogo, children: [
1119
1103
  settings?.labName || "Cavendish",
1120
1104
  " ",
1121
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: Footer_default.logoAccent, children: settings?.labNameAccent || "Lab" })
1105
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: import_Footer.default.logoAccent, children: settings?.labNameAccent || "Lab" })
1122
1106
  ] }),
1123
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: Footer_default.footerDescription, children: settings?.labNameDescription || "Advancing the frontiers of physics and our understanding of the universe." }),
1124
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.socials, children: [
1107
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: import_Footer.default.footerDescription, children: settings?.labNameDescription || "Advancing the frontiers of physics and our understanding of the universe." }),
1108
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.socials, children: [
1125
1109
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SocialIcon, { href: "#", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("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" }) }) }),
1126
1110
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SocialIcon, { href: "#", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("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" }) }) })
1127
1111
  ] })
1128
1112
  ] }),
1129
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerLinksGrid, children: [
1130
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerColumn, children: [
1113
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerLinksGrid, children: [
1114
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerColumn, children: [
1131
1115
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h4", { children: "Quick Links" }),
1132
1116
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/research", children: "Research" }),
1133
1117
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/publications", children: "Publications" }),
1134
1118
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/pictures", children: "Gallery" })
1135
1119
  ] }),
1136
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerColumn, children: [
1120
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerColumn, children: [
1137
1121
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h4", { children: "About" }),
1138
1122
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/news", children: "News" }),
1139
1123
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/people", children: "Our Team" }),
1140
1124
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/contact", children: "Contact" })
1141
1125
  ] }),
1142
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerColumn, children: [
1126
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerColumn, children: [
1143
1127
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h4", { children: "Resources" }),
1144
1128
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "https://www.cam.ac.uk/", children: "University" }),
1145
1129
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "#", children: "Careers" })
1146
1130
  ] })
1147
1131
  ] })
1148
1132
  ] }),
1149
- /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.footerBottomBar, children: [
1133
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.footerBottomBar, children: [
1150
1134
  /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: settings?.footerText || `\xA9 ${currentYear} The Research Group. All Rights Reserved.` }),
1151
- hasLegalLinks && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: Footer_default.legalLinks, children: [
1135
+ hasLegalLinks && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: import_Footer.default.legalLinks, children: [
1152
1136
  showPrivacy && (settings?.privacyPolicyUrl && isValidExternalUrl(settings.privacyPolicyUrl) ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("a", { href: settings.privacyPolicyUrl, target: "_blank", rel: "noopener noreferrer", children: "Privacy Policy" }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/privacy", children: "Privacy Policy" })),
1153
1137
  showTerms && (settings?.termsUrl && isValidExternalUrl(settings.termsUrl) ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("a", { href: settings.termsUrl, target: "_blank", rel: "noopener noreferrer", children: "Terms & Conditions" }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_link3.default, { href: "/terms", children: "Terms & Conditions" }))
1154
1138
  ] })
@@ -1184,17 +1168,13 @@ function ClientLayout({ children, settings }) {
1184
1168
 
1185
1169
  // src/components/ContactCTA.tsx
1186
1170
  var import_link4 = __toESM(require("next/link"));
1187
-
1188
- // src/components/ContactCTA.module.css
1189
- var ContactCTA_default = {};
1190
-
1191
- // src/components/ContactCTA.tsx
1171
+ var import_ContactCTA = __toESM(require("./ContactCTA.module.css"));
1192
1172
  var import_jsx_runtime10 = require("react/jsx-runtime");
1193
1173
  function ContactCTA() {
1194
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("section", { className: ContactCTA_default.ctaContainer, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: ContactCTA_default.ctaContent, children: [
1195
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h2", { className: ContactCTA_default.ctaHeading, children: "Interested in Our Research?" }),
1196
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: ContactCTA_default.ctaText, children: "Follow our work, explore our publications, or get in touch to discuss potential collaborations." }),
1197
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_link4.default, { href: "/contact", className: ContactCTA_default.ctaButton, children: "Contact Us" })
1174
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("section", { className: import_ContactCTA.default.ctaContainer, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: import_ContactCTA.default.ctaContent, children: [
1175
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h2", { className: import_ContactCTA.default.ctaHeading, children: "Interested in Our Research?" }),
1176
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { className: import_ContactCTA.default.ctaText, children: "Follow our work, explore our publications, or get in touch to discuss potential collaborations." }),
1177
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_link4.default, { href: "/contact", className: import_ContactCTA.default.ctaButton, children: "Contact Us" })
1198
1178
  ] }) });
1199
1179
  }
1200
1180