@prosophia/lab-techy 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.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React from 'react';
3
- import { P as ProsophiaConfig } from './index-CSdV51Jq.mjs';
4
- export { a as SiteConfig, S as SiteSettings, T as ThemeConfig } from './index-CSdV51Jq.mjs';
2
+ import React$1 from 'react';
3
+ import { S as SiteSettings$1, P as ProsophiaConfig } from './index-CSdV51Jq.mjs';
4
+ export { a as SiteConfig, T as ThemeConfig } from './index-CSdV51Jq.mjs';
5
5
 
6
6
  interface FooterLink {
7
7
  label: string;
@@ -11,7 +11,7 @@ interface SocialLink {
11
11
  platform: 'twitter' | 'linkedin' | 'github' | 'scholar' | 'orcid' | 'website' | 'email' | 'youtube' | 'instagram';
12
12
  url: string;
13
13
  }
14
- interface FooterData {
14
+ interface FooterData$1 {
15
15
  labName: string;
16
16
  footerText?: string;
17
17
  socialLinks?: SocialLink[];
@@ -20,7 +20,7 @@ interface FooterData {
20
20
  address?: string;
21
21
  }
22
22
  interface FooterProps {
23
- footerData?: FooterData | null;
23
+ footerData?: FooterData$1 | null;
24
24
  }
25
25
  declare function Footer({ footerData }: FooterProps): react_jsx_runtime.JSX.Element;
26
26
 
@@ -35,13 +35,13 @@ interface SanityImage {
35
35
  _type: 'reference';
36
36
  };
37
37
  }
38
- interface NavigationData {
38
+ interface NavigationData$1 {
39
39
  labName: string;
40
40
  logo?: SanityImage;
41
41
  mainNavigation?: NavItem[];
42
42
  }
43
43
  interface HeaderProps {
44
- navigationData?: NavigationData | null;
44
+ navigationData?: NavigationData$1 | null;
45
45
  }
46
46
  declare function Header({ navigationData }: HeaderProps): react_jsx_runtime.JSX.Element;
47
47
 
@@ -57,11 +57,53 @@ type SiteSettings = {
57
57
  termsUrl?: string;
58
58
  };
59
59
  type ClientLayoutProps = {
60
- children: React.ReactNode;
60
+ children: React$1.ReactNode;
61
61
  settings: SiteSettings;
62
62
  };
63
63
  declare function ClientLayout({ children, settings }: ClientLayoutProps): react_jsx_runtime.JSX.Element;
64
64
 
65
+ interface NavigationData {
66
+ labName: string;
67
+ logo?: {
68
+ _type: 'image';
69
+ asset: {
70
+ _ref: string;
71
+ _type: 'reference';
72
+ };
73
+ };
74
+ mainNavigation?: Array<{
75
+ label: string;
76
+ href: string;
77
+ }>;
78
+ }
79
+ interface FooterData {
80
+ labName: string;
81
+ footerText?: string;
82
+ socialLinks?: Array<{
83
+ platform: 'twitter' | 'linkedin' | 'github' | 'scholar' | 'orcid' | 'website' | 'email' | 'youtube' | 'instagram';
84
+ url: string;
85
+ }>;
86
+ footerLinks?: Array<{
87
+ label: string;
88
+ url: string;
89
+ }>;
90
+ email?: string;
91
+ address?: string;
92
+ }
93
+ interface HomePageProps {
94
+ children?: React.ReactNode;
95
+ settings?: SiteSettings$1 | null;
96
+ navigationData?: NavigationData | null;
97
+ footerData?: FooterData | null;
98
+ header?: React.ReactNode;
99
+ footer?: React.ReactNode;
100
+ }
101
+ /**
102
+ * Main HomePage wrapper for lab-techy template
103
+ * Provides consistent header/footer with customizable main content
104
+ */
105
+ declare function HomePage({ children, settings, navigationData, footerData, header, footer, }: HomePageProps): react_jsx_runtime.JSX.Element;
106
+
65
107
  /**
66
108
  * Define configuration for your lab website
67
109
  * @param config - The site configuration object
@@ -251,4 +293,4 @@ declare const blurFade: {
251
293
  };
252
294
  };
253
295
 
254
- export { ClientLayout, Footer, Header, ProsophiaConfig, ThemeToggle, blurFade, buttonPress, cardHover, defineConfig, easeOutExpo, fadeInLeft, fadeInRight, fadeInUp, imageZoom, pageTransition, revealRight, scaleUp, springStiff, staggerContainer, staggerItem, timing };
296
+ export { ClientLayout, Footer, Header, HomePage, type HomePageProps, ProsophiaConfig, SiteSettings$1 as SiteSettings, ThemeToggle, blurFade, buttonPress, cardHover, defineConfig, easeOutExpo, fadeInLeft, fadeInRight, fadeInUp, imageZoom, pageTransition, revealRight, scaleUp, springStiff, staggerContainer, staggerItem, timing };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import React from 'react';
3
- import { P as ProsophiaConfig } from './index-CSdV51Jq.js';
4
- export { a as SiteConfig, S as SiteSettings, T as ThemeConfig } from './index-CSdV51Jq.js';
2
+ import React$1 from 'react';
3
+ import { S as SiteSettings$1, P as ProsophiaConfig } from './index-CSdV51Jq.js';
4
+ export { a as SiteConfig, T as ThemeConfig } from './index-CSdV51Jq.js';
5
5
 
6
6
  interface FooterLink {
7
7
  label: string;
@@ -11,7 +11,7 @@ interface SocialLink {
11
11
  platform: 'twitter' | 'linkedin' | 'github' | 'scholar' | 'orcid' | 'website' | 'email' | 'youtube' | 'instagram';
12
12
  url: string;
13
13
  }
14
- interface FooterData {
14
+ interface FooterData$1 {
15
15
  labName: string;
16
16
  footerText?: string;
17
17
  socialLinks?: SocialLink[];
@@ -20,7 +20,7 @@ interface FooterData {
20
20
  address?: string;
21
21
  }
22
22
  interface FooterProps {
23
- footerData?: FooterData | null;
23
+ footerData?: FooterData$1 | null;
24
24
  }
25
25
  declare function Footer({ footerData }: FooterProps): react_jsx_runtime.JSX.Element;
26
26
 
@@ -35,13 +35,13 @@ interface SanityImage {
35
35
  _type: 'reference';
36
36
  };
37
37
  }
38
- interface NavigationData {
38
+ interface NavigationData$1 {
39
39
  labName: string;
40
40
  logo?: SanityImage;
41
41
  mainNavigation?: NavItem[];
42
42
  }
43
43
  interface HeaderProps {
44
- navigationData?: NavigationData | null;
44
+ navigationData?: NavigationData$1 | null;
45
45
  }
46
46
  declare function Header({ navigationData }: HeaderProps): react_jsx_runtime.JSX.Element;
47
47
 
@@ -57,11 +57,53 @@ type SiteSettings = {
57
57
  termsUrl?: string;
58
58
  };
59
59
  type ClientLayoutProps = {
60
- children: React.ReactNode;
60
+ children: React$1.ReactNode;
61
61
  settings: SiteSettings;
62
62
  };
63
63
  declare function ClientLayout({ children, settings }: ClientLayoutProps): react_jsx_runtime.JSX.Element;
64
64
 
65
+ interface NavigationData {
66
+ labName: string;
67
+ logo?: {
68
+ _type: 'image';
69
+ asset: {
70
+ _ref: string;
71
+ _type: 'reference';
72
+ };
73
+ };
74
+ mainNavigation?: Array<{
75
+ label: string;
76
+ href: string;
77
+ }>;
78
+ }
79
+ interface FooterData {
80
+ labName: string;
81
+ footerText?: string;
82
+ socialLinks?: Array<{
83
+ platform: 'twitter' | 'linkedin' | 'github' | 'scholar' | 'orcid' | 'website' | 'email' | 'youtube' | 'instagram';
84
+ url: string;
85
+ }>;
86
+ footerLinks?: Array<{
87
+ label: string;
88
+ url: string;
89
+ }>;
90
+ email?: string;
91
+ address?: string;
92
+ }
93
+ interface HomePageProps {
94
+ children?: React.ReactNode;
95
+ settings?: SiteSettings$1 | null;
96
+ navigationData?: NavigationData | null;
97
+ footerData?: FooterData | null;
98
+ header?: React.ReactNode;
99
+ footer?: React.ReactNode;
100
+ }
101
+ /**
102
+ * Main HomePage wrapper for lab-techy template
103
+ * Provides consistent header/footer with customizable main content
104
+ */
105
+ declare function HomePage({ children, settings, navigationData, footerData, header, footer, }: HomePageProps): react_jsx_runtime.JSX.Element;
106
+
65
107
  /**
66
108
  * Define configuration for your lab website
67
109
  * @param config - The site configuration object
@@ -251,4 +293,4 @@ declare const blurFade: {
251
293
  };
252
294
  };
253
295
 
254
- export { ClientLayout, Footer, Header, ProsophiaConfig, ThemeToggle, blurFade, buttonPress, cardHover, defineConfig, easeOutExpo, fadeInLeft, fadeInRight, fadeInUp, imageZoom, pageTransition, revealRight, scaleUp, springStiff, staggerContainer, staggerItem, timing };
296
+ export { ClientLayout, Footer, Header, HomePage, type HomePageProps, ProsophiaConfig, SiteSettings$1 as SiteSettings, ThemeToggle, blurFade, buttonPress, cardHover, defineConfig, easeOutExpo, fadeInLeft, fadeInRight, fadeInUp, imageZoom, pageTransition, revealRight, scaleUp, springStiff, staggerContainer, staggerItem, timing };
package/dist/index.js CHANGED
@@ -33,6 +33,7 @@ __export(index_exports, {
33
33
  ClientLayout: () => ClientLayout,
34
34
  Footer: () => Footer,
35
35
  Header: () => Header,
36
+ HomePage: () => HomePage,
36
37
  ThemeToggle: () => ThemeToggle,
37
38
  blurFade: () => blurFade,
38
39
  buttonPress: () => buttonPress,
@@ -56,11 +57,7 @@ module.exports = __toCommonJS(index_exports);
56
57
  // src/components/Footer.tsx
57
58
  var import_link = __toESM(require("next/link"));
58
59
  var import_framer_motion = require("framer-motion");
59
-
60
- // src/components/Footer.module.css
61
- var Footer_default = {};
62
-
63
- // src/components/Footer.tsx
60
+ var import_Footer = __toESM(require("./Footer.module.css"));
64
61
  var import_jsx_runtime = require("react/jsx-runtime");
65
62
  var footerVariants = {
66
63
  hidden: { opacity: 0, y: 20 },
@@ -76,17 +73,17 @@ var footerVariants = {
76
73
  function getSocialIcon(platform) {
77
74
  switch (platform) {
78
75
  case "twitter":
79
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: Footer_default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.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" }) });
76
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: import_Footer.default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.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" }) });
80
77
  case "github":
81
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: Footer_default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }) });
78
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: import_Footer.default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" }) });
82
79
  case "linkedin":
83
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: Footer_default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", 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" }) });
80
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: import_Footer.default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { fillRule: "evenodd", clipRule: "evenodd", 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" }) });
84
81
  case "youtube":
85
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: Footer_default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }) });
82
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: import_Footer.default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" }) });
86
83
  case "scholar":
87
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: Footer_default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M5.242 13.769L0 9.5 12 0l12 9.5-5.242 4.269C17.548 11.249 14.978 9.5 12 9.5c-2.977 0-5.548 1.748-6.758 4.269zM12 10a7 7 0 1 0 0 14 7 7 0 0 0 0-14z" }) });
84
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("svg", { "aria-hidden": "true", fill: "currentColor", viewBox: "0 0 24 24", className: import_Footer.default.socialIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M5.242 13.769L0 9.5 12 0l12 9.5-5.242 4.269C17.548 11.249 14.978 9.5 12 9.5c-2.977 0-5.548 1.748-6.758 4.269zM12 10a7 7 0 1 0 0 14 7 7 0 0 0 0-14z" }) });
88
85
  default:
89
- return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { "aria-hidden": "true", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", strokeWidth: "2", className: Footer_default.socialIcon, children: [
86
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("svg", { "aria-hidden": "true", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", strokeWidth: "2", className: import_Footer.default.socialIcon, children: [
90
87
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
91
88
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "2", y1: "12", x2: "22", y2: "12" }),
92
89
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("path", { d: "M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" })
@@ -105,24 +102,24 @@ function Footer({ footerData }) {
105
102
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
106
103
  import_framer_motion.motion.footer,
107
104
  {
108
- className: Footer_default.footer,
105
+ className: import_Footer.default.footer,
109
106
  initial: "hidden",
110
107
  whileInView: "visible",
111
108
  viewport: { once: true },
112
109
  variants: footerVariants,
113
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: Footer_default.container, children: [
114
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: Footer_default.grid, children: [
115
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: Footer_default.brandSection, children: [
116
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: Footer_default.logo, children: [
117
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: Footer_default.logoIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "material-symbols-outlined", children: "science" }) }),
118
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: Footer_default.logoText, children: labName })
110
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.container, children: [
111
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.grid, children: [
112
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.brandSection, children: [
113
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.logo, children: [
114
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_Footer.default.logoIcon, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "material-symbols-outlined", children: "science" }) }),
115
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: import_Footer.default.logoText, children: labName })
119
116
  ] }),
120
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: Footer_default.description, children: footerText }),
121
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: Footer_default.socialLinks, children: socialLinks.map((social, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
117
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: import_Footer.default.description, children: footerText }),
118
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_Footer.default.socialLinks, children: socialLinks.map((social, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
122
119
  "a",
123
120
  {
124
121
  href: social.url,
125
- className: Footer_default.socialLink,
122
+ className: import_Footer.default.socialLink,
126
123
  "aria-label": social.platform,
127
124
  target: "_blank",
128
125
  rel: "noopener noreferrer",
@@ -131,26 +128,26 @@ function Footer({ footerData }) {
131
128
  index
132
129
  )) })
133
130
  ] }),
134
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: Footer_default.linksSection, children: [
135
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: Footer_default.linksSectionTitle, children: "Research" }),
136
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: Footer_default.linksList, children: [
137
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/research", className: Footer_default.link, children: "Projects" }) }),
138
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className: Footer_default.link, children: "Publications" }) }),
139
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className: Footer_default.link, children: "Datasets" }) }),
140
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className: Footer_default.link, children: "Code" }) })
131
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.linksSection, children: [
132
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: import_Footer.default.linksSectionTitle, children: "Research" }),
133
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: import_Footer.default.linksList, children: [
134
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/research", className: import_Footer.default.link, children: "Projects" }) }),
135
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className: import_Footer.default.link, children: "Publications" }) }),
136
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className: import_Footer.default.link, children: "Datasets" }) }),
137
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className: import_Footer.default.link, children: "Code" }) })
141
138
  ] })
142
139
  ] }),
143
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: Footer_default.linksSection, children: [
144
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: Footer_default.linksSectionTitle, children: "People" }),
145
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: Footer_default.linksList, children: [
146
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className: Footer_default.link, children: "Faculty" }) }),
147
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className: Footer_default.link, children: "Students" }) }),
148
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className: Footer_default.link, children: "Alumni" }) }),
149
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/contact", className: Footer_default.link, children: "Join Us" }) })
140
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.linksSection, children: [
141
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: import_Footer.default.linksSectionTitle, children: "People" }),
142
+ /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: import_Footer.default.linksList, children: [
143
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className: import_Footer.default.link, children: "Faculty" }) }),
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className: import_Footer.default.link, children: "Students" }) }),
145
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className: import_Footer.default.link, children: "Alumni" }) }),
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/contact", className: import_Footer.default.link, children: "Join Us" }) })
150
147
  ] })
151
148
  ] })
152
149
  ] }),
153
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: Footer_default.bottom, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: Footer_default.copyright, children: [
150
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_Footer.default.bottom, children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { className: import_Footer.default.copyright, children: [
154
151
  "\xA9 ",
155
152
  (/* @__PURE__ */ new Date()).getFullYear(),
156
153
  " ",
@@ -166,18 +163,12 @@ function Footer({ footerData }) {
166
163
  var import_link2 = __toESM(require("next/link"));
167
164
  var import_navigation = require("next/navigation");
168
165
  var import_framer_motion3 = require("framer-motion");
169
-
170
- // src/components/Header.module.css
171
- var Header_default = {};
166
+ var import_Header = __toESM(require("./Header.module.css"));
172
167
 
173
168
  // src/components/ThemeToggle.tsx
174
169
  var import_framer_motion2 = require("framer-motion");
175
170
  var import_next_themes = require("next-themes");
176
-
177
- // src/components/ThemeToggle.module.css
178
- var ThemeToggle_default = {};
179
-
180
- // src/components/ThemeToggle.tsx
171
+ var import_ThemeToggle = __toESM(require("./ThemeToggle.module.css"));
181
172
  var import_jsx_runtime2 = require("react/jsx-runtime");
182
173
  function ThemeToggle() {
183
174
  const { resolvedTheme, setTheme } = (0, import_next_themes.useTheme)();
@@ -187,7 +178,7 @@ function ThemeToggle() {
187
178
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
188
179
  import_framer_motion2.motion.button,
189
180
  {
190
- className: ThemeToggle_default.toggle,
181
+ className: import_ThemeToggle.default.toggle,
191
182
  onClick: toggleTheme,
192
183
  whileHover: { scale: 1.05 },
193
184
  whileTap: { scale: 0.95 },
@@ -214,21 +205,21 @@ function Header({ navigationData }) {
214
205
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
215
206
  import_framer_motion3.motion.header,
216
207
  {
217
- className: Header_default.header,
208
+ className: import_Header.default.header,
218
209
  initial: { y: -100, opacity: 0 },
219
210
  animate: { y: 0, opacity: 1 },
220
211
  transition: { duration: 0.5, ease: [0.16, 1, 0.3, 1] },
221
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: Header_default.container, children: [
222
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_link2.default, { href: "/", className: Header_default.logo, children: [
223
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: Header_default.logoIcon, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "material-symbols-outlined", children: "science" }) }),
224
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: Header_default.logoText, children: labName })
212
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: import_Header.default.container, children: [
213
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_link2.default, { href: "/", className: import_Header.default.logo, children: [
214
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: import_Header.default.logoIcon, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "material-symbols-outlined", children: "science" }) }),
215
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: import_Header.default.logoText, children: labName })
225
216
  ] }),
226
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("nav", { className: Header_default.nav, children: [
227
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: Header_default.navLinks, children: navItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
217
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("nav", { className: import_Header.default.nav, children: [
218
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: import_Header.default.navLinks, children: navItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
228
219
  import_link2.default,
229
220
  {
230
221
  href: item.href,
231
- className: `${Header_default.navLink} ${pathname === item.href ? Header_default.navLinkActive : ""}`,
222
+ className: `${import_Header.default.navLink} ${pathname === item.href ? import_Header.default.navLinkActive : ""}`,
232
223
  children: item.label
233
224
  },
234
225
  item.href
@@ -237,16 +228,16 @@ function Header({ navigationData }) {
237
228
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_link2.default, { href: "/contact", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
238
229
  import_framer_motion3.motion.button,
239
230
  {
240
- className: Header_default.ctaButton,
231
+ className: import_Header.default.ctaButton,
241
232
  whileHover: { scale: 1.02 },
242
233
  whileTap: { scale: 0.98 },
243
234
  children: "Join the Lab"
244
235
  }
245
236
  ) })
246
237
  ] }),
247
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: Header_default.mobileActions, children: [
238
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: import_Header.default.mobileActions, children: [
248
239
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ThemeToggle, {}),
249
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { className: Header_default.mobileMenuBtn, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "material-symbols-outlined", children: "menu" }) })
240
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("button", { className: import_Header.default.mobileMenuBtn, children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "material-symbols-outlined", children: "menu" }) })
250
241
  ] })
251
242
  ] })
252
243
  }
@@ -288,6 +279,30 @@ function ClientLayout({ children, settings }) {
288
279
  ] });
289
280
  }
290
281
 
282
+ // src/components/HomePage.tsx
283
+ var import_jsx_runtime5 = require("react/jsx-runtime");
284
+ function HomePage({
285
+ children,
286
+ settings = null,
287
+ navigationData,
288
+ footerData,
289
+ header,
290
+ footer
291
+ }) {
292
+ const navData = navigationData ?? (settings ? {
293
+ labName: settings.labName || "Research Lab"
294
+ } : void 0);
295
+ const ftData = footerData ?? (settings ? {
296
+ labName: settings.labName || "Research Lab",
297
+ footerText: settings.footerText
298
+ } : void 0);
299
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
300
+ header ?? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Header, { navigationData: navData }),
301
+ /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("main", { children }),
302
+ footer ?? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Footer, { footerData: ftData })
303
+ ] });
304
+ }
305
+
291
306
  // src/config.ts
292
307
  function defineConfig(config) {
293
308
  return config;
@@ -457,6 +472,7 @@ var blurFade = {
457
472
  ClientLayout,
458
473
  Footer,
459
474
  Header,
475
+ HomePage,
460
476
  ThemeToggle,
461
477
  blurFade,
462
478
  buttonPress,