@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 +51 -9
- package/dist/index.d.ts +51 -9
- package/dist/index.js +72 -56
- package/dist/index.mjs +71 -56
- package/dist/layouts/index.js +46 -56
- package/dist/layouts/index.mjs +46 -56
- package/package.json +1 -1
- package/dist/index.css +0 -281
- package/dist/layouts/index.css +0 -281
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,
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
114
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className:
|
|
115
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className:
|
|
116
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className:
|
|
117
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className:
|
|
118
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className:
|
|
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:
|
|
121
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className:
|
|
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:
|
|
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:
|
|
135
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className:
|
|
136
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className:
|
|
137
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/research", className:
|
|
138
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className:
|
|
139
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className:
|
|
140
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/publications", className:
|
|
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:
|
|
144
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className:
|
|
145
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className:
|
|
146
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className:
|
|
147
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className:
|
|
148
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/team", className:
|
|
149
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_link.default, { href: "/contact", className:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
222
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_link2.default, { href: "/", className:
|
|
223
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className:
|
|
224
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className:
|
|
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:
|
|
227
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className:
|
|
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: `${
|
|
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:
|
|
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:
|
|
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:
|
|
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,
|