@prosophia/lab-techy 0.0.2 → 0.0.4

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
@@ -30,16 +30,37 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/index.ts
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
+ ClientLayout: () => ClientLayout,
33
34
  Footer: () => Footer,
34
35
  Header: () => Header,
35
- ThemeToggle: () => ThemeToggle
36
+ ThemeToggle: () => ThemeToggle,
37
+ blurFade: () => blurFade,
38
+ buttonPress: () => buttonPress,
39
+ cardHover: () => cardHover,
40
+ defineConfig: () => defineConfig,
41
+ easeOutExpo: () => easeOutExpo,
42
+ fadeInLeft: () => fadeInLeft,
43
+ fadeInRight: () => fadeInRight,
44
+ fadeInUp: () => fadeInUp,
45
+ imageZoom: () => imageZoom,
46
+ pageTransition: () => pageTransition,
47
+ revealRight: () => revealRight,
48
+ scaleUp: () => scaleUp,
49
+ springStiff: () => springStiff,
50
+ staggerContainer: () => staggerContainer,
51
+ staggerItem: () => staggerItem,
52
+ timing: () => timing
36
53
  });
37
54
  module.exports = __toCommonJS(index_exports);
38
55
 
39
56
  // src/components/Footer.tsx
40
57
  var import_link = __toESM(require("next/link"));
41
58
  var import_framer_motion = require("framer-motion");
42
- var import_Footer = __toESM(require("./Footer.module.css"));
59
+
60
+ // src/components/Footer.module.css
61
+ var Footer_default = {};
62
+
63
+ // src/components/Footer.tsx
43
64
  var import_jsx_runtime = require("react/jsx-runtime");
44
65
  var footerVariants = {
45
66
  hidden: { opacity: 0, y: 20 },
@@ -55,17 +76,17 @@ var footerVariants = {
55
76
  function getSocialIcon(platform) {
56
77
  switch (platform) {
57
78
  case "twitter":
58
- 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" }) });
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" }) });
59
80
  case "github":
60
- 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" }) });
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" }) });
61
82
  case "linkedin":
62
- 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" }) });
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" }) });
63
84
  case "youtube":
64
- 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" }) });
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" }) });
65
86
  case "scholar":
66
- 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" }) });
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" }) });
67
88
  default:
68
- 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: [
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: [
69
90
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
70
91
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)("line", { x1: "2", y1: "12", x2: "22", y2: "12" }),
71
92
  /* @__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" })
@@ -84,24 +105,24 @@ function Footer({ footerData }) {
84
105
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
85
106
  import_framer_motion.motion.footer,
86
107
  {
87
- className: import_Footer.default.footer,
108
+ className: Footer_default.footer,
88
109
  initial: "hidden",
89
110
  whileInView: "visible",
90
111
  viewport: { once: true },
91
112
  variants: footerVariants,
92
- children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.container, children: [
93
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.grid, children: [
94
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.brandSection, children: [
95
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.logo, children: [
96
- /* @__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" }) }),
97
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", { className: import_Footer.default.logoText, children: labName })
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 })
98
119
  ] }),
99
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("p", { className: import_Footer.default.description, children: footerText }),
100
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: import_Footer.default.socialLinks, children: socialLinks.map((social, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
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)(
101
122
  "a",
102
123
  {
103
124
  href: social.url,
104
- className: import_Footer.default.socialLink,
125
+ className: Footer_default.socialLink,
105
126
  "aria-label": social.platform,
106
127
  target: "_blank",
107
128
  rel: "noopener noreferrer",
@@ -110,26 +131,26 @@ function Footer({ footerData }) {
110
131
  index
111
132
  )) })
112
133
  ] }),
113
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.linksSection, children: [
114
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: import_Footer.default.linksSectionTitle, children: "Research" }),
115
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: import_Footer.default.linksList, children: [
116
- /* @__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" }) }),
117
- /* @__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" }) }),
118
- /* @__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" }) }),
119
- /* @__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" }) })
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" }) })
120
141
  ] })
121
142
  ] }),
122
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: import_Footer.default.linksSection, children: [
123
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", { className: import_Footer.default.linksSectionTitle, children: "People" }),
124
- /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("ul", { className: import_Footer.default.linksList, children: [
125
- /* @__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" }) }),
126
- /* @__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" }) }),
127
- /* @__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" }) }),
128
- /* @__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" }) })
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" }) })
129
150
  ] })
130
151
  ] })
131
152
  ] }),
132
- /* @__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: [
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: [
133
154
  "\xA9 ",
134
155
  (/* @__PURE__ */ new Date()).getFullYear(),
135
156
  " ",
@@ -145,24 +166,33 @@ function Footer({ footerData }) {
145
166
  var import_link2 = __toESM(require("next/link"));
146
167
  var import_navigation = require("next/navigation");
147
168
  var import_framer_motion3 = require("framer-motion");
148
- var import_Header = __toESM(require("./Header.module.css"));
169
+
170
+ // src/components/Header.module.css
171
+ var Header_default = {};
149
172
 
150
173
  // src/components/ThemeToggle.tsx
151
174
  var import_framer_motion2 = require("framer-motion");
152
- var import_ThemeContext = require("@/context/ThemeContext");
153
- var import_ThemeToggle = __toESM(require("./ThemeToggle.module.css"));
175
+ var import_next_themes = require("next-themes");
176
+
177
+ // src/components/ThemeToggle.module.css
178
+ var ThemeToggle_default = {};
179
+
180
+ // src/components/ThemeToggle.tsx
154
181
  var import_jsx_runtime2 = require("react/jsx-runtime");
155
182
  function ThemeToggle() {
156
- const { theme, toggleTheme } = (0, import_ThemeContext.useTheme)();
183
+ const { resolvedTheme, setTheme } = (0, import_next_themes.useTheme)();
184
+ const toggleTheme = () => {
185
+ setTheme(resolvedTheme === "light" ? "dark" : "light");
186
+ };
157
187
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
158
188
  import_framer_motion2.motion.button,
159
189
  {
160
- className: import_ThemeToggle.default.toggle,
190
+ className: ThemeToggle_default.toggle,
161
191
  onClick: toggleTheme,
162
192
  whileHover: { scale: 1.05 },
163
193
  whileTap: { scale: 0.95 },
164
- "aria-label": `Switch to ${theme === "light" ? "dark" : "light"} mode`,
165
- children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "material-symbols-outlined", children: theme === "light" ? "dark_mode" : "light_mode" })
194
+ "aria-label": `Switch to ${resolvedTheme === "light" ? "dark" : "light"} mode`,
195
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "material-symbols-outlined", children: resolvedTheme === "light" ? "dark_mode" : "light_mode" })
166
196
  }
167
197
  );
168
198
  }
@@ -184,21 +214,21 @@ function Header({ navigationData }) {
184
214
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
185
215
  import_framer_motion3.motion.header,
186
216
  {
187
- className: import_Header.default.header,
217
+ className: Header_default.header,
188
218
  initial: { y: -100, opacity: 0 },
189
219
  animate: { y: 0, opacity: 1 },
190
220
  transition: { duration: 0.5, ease: [0.16, 1, 0.3, 1] },
191
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: import_Header.default.container, children: [
192
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_link2.default, { href: "/", className: import_Header.default.logo, children: [
193
- /* @__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" }) }),
194
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { className: import_Header.default.logoText, children: labName })
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 })
195
225
  ] }),
196
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("nav", { className: import_Header.default.nav, children: [
197
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: import_Header.default.navLinks, children: navItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
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)(
198
228
  import_link2.default,
199
229
  {
200
230
  href: item.href,
201
- className: `${import_Header.default.navLink} ${pathname === item.href ? import_Header.default.navLinkActive : ""}`,
231
+ className: `${Header_default.navLink} ${pathname === item.href ? Header_default.navLinkActive : ""}`,
202
232
  children: item.label
203
233
  },
204
234
  item.href
@@ -207,24 +237,241 @@ function Header({ navigationData }) {
207
237
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_link2.default, { href: "/contact", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
208
238
  import_framer_motion3.motion.button,
209
239
  {
210
- className: import_Header.default.ctaButton,
240
+ className: Header_default.ctaButton,
211
241
  whileHover: { scale: 1.02 },
212
242
  whileTap: { scale: 0.98 },
213
243
  children: "Join the Lab"
214
244
  }
215
245
  ) })
216
246
  ] }),
217
- /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: import_Header.default.mobileActions, children: [
247
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: Header_default.mobileActions, children: [
218
248
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(ThemeToggle, {}),
219
- /* @__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" }) })
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" }) })
220
250
  ] })
221
251
  ] })
222
252
  }
223
253
  );
224
254
  }
255
+
256
+ // src/components/ClientLayout.tsx
257
+ var import_react = require("react");
258
+ var import_next_themes2 = require("next-themes");
259
+ var import_jsx_runtime4 = require("react/jsx-runtime");
260
+ function ThemeBodySync() {
261
+ const { resolvedTheme } = (0, import_next_themes2.useTheme)();
262
+ (0, import_react.useEffect)(() => {
263
+ if (resolvedTheme === "dark") {
264
+ document.body.classList.add("dark-mode");
265
+ document.body.classList.remove("light-mode");
266
+ } else {
267
+ document.body.classList.add("light-mode");
268
+ document.body.classList.remove("dark-mode");
269
+ }
270
+ }, [resolvedTheme]);
271
+ return null;
272
+ }
273
+ function ClientLayout({ children, settings }) {
274
+ const navigationData = {
275
+ labName: settings.labName || "Prosophia Research Lab"
276
+ };
277
+ const footerData = {
278
+ labName: settings.labName || "Prosophia Research Lab",
279
+ footerText: settings.footerText
280
+ };
281
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_next_themes2.ThemeProvider, { attribute: "class", defaultTheme: "light", enableSystem: false, children: [
282
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ThemeBodySync, {}),
283
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "pageWrapper", children: [
284
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Header, { navigationData }),
285
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("main", { children }),
286
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Footer, { footerData })
287
+ ] })
288
+ ] });
289
+ }
290
+
291
+ // src/config.ts
292
+ function defineConfig(config) {
293
+ return config;
294
+ }
295
+
296
+ // src/lib/motion.ts
297
+ var easeOutExpo = [0.16, 1, 0.3, 1];
298
+ var springStiff = {
299
+ type: "spring",
300
+ mass: 1,
301
+ stiffness: 100,
302
+ damping: 15
303
+ };
304
+ var timing = {
305
+ quick: 0.15,
306
+ standard: 0.35,
307
+ ambient: 0.8
308
+ };
309
+ var fadeInUp = {
310
+ hidden: { opacity: 0, y: 20 },
311
+ visible: {
312
+ opacity: 1,
313
+ y: 0,
314
+ transition: {
315
+ duration: timing.standard,
316
+ ease: easeOutExpo
317
+ }
318
+ }
319
+ };
320
+ var fadeInLeft = {
321
+ hidden: { opacity: 0, x: -20 },
322
+ visible: {
323
+ opacity: 1,
324
+ x: 0,
325
+ transition: {
326
+ duration: timing.standard,
327
+ ease: easeOutExpo
328
+ }
329
+ }
330
+ };
331
+ var fadeInRight = {
332
+ hidden: { opacity: 0, x: 20 },
333
+ visible: {
334
+ opacity: 1,
335
+ x: 0,
336
+ transition: {
337
+ duration: timing.standard,
338
+ ease: easeOutExpo
339
+ }
340
+ }
341
+ };
342
+ var scaleUp = {
343
+ hidden: { opacity: 0, scale: 0.95 },
344
+ visible: {
345
+ opacity: 1,
346
+ scale: 1,
347
+ transition: {
348
+ duration: timing.standard,
349
+ ease: easeOutExpo
350
+ }
351
+ }
352
+ };
353
+ var staggerContainer = {
354
+ hidden: { opacity: 0 },
355
+ visible: {
356
+ opacity: 1,
357
+ transition: {
358
+ staggerChildren: 0.05,
359
+ delayChildren: 0.1
360
+ }
361
+ }
362
+ };
363
+ var staggerItem = {
364
+ hidden: { opacity: 0, y: 20 },
365
+ visible: {
366
+ opacity: 1,
367
+ y: 0,
368
+ transition: {
369
+ duration: timing.standard,
370
+ ease: easeOutExpo
371
+ }
372
+ }
373
+ };
374
+ var cardHover = {
375
+ rest: {
376
+ y: 0,
377
+ boxShadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
378
+ transition: {
379
+ duration: timing.quick,
380
+ ease: easeOutExpo
381
+ }
382
+ },
383
+ hover: {
384
+ y: -4,
385
+ boxShadow: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
386
+ transition: {
387
+ duration: timing.quick,
388
+ ease: easeOutExpo
389
+ }
390
+ }
391
+ };
392
+ var imageZoom = {
393
+ rest: {
394
+ scale: 1,
395
+ transition: {
396
+ duration: timing.ambient,
397
+ ease: easeOutExpo
398
+ }
399
+ },
400
+ hover: {
401
+ scale: 1.05,
402
+ transition: {
403
+ duration: timing.ambient,
404
+ ease: easeOutExpo
405
+ }
406
+ }
407
+ };
408
+ var buttonPress = {
409
+ tap: { scale: 0.95 },
410
+ hover: { scale: 1.02 }
411
+ };
412
+ var pageTransition = {
413
+ hidden: { opacity: 0 },
414
+ visible: {
415
+ opacity: 1,
416
+ transition: {
417
+ duration: timing.standard,
418
+ ease: easeOutExpo
419
+ }
420
+ },
421
+ exit: {
422
+ opacity: 0,
423
+ transition: {
424
+ duration: timing.quick,
425
+ ease: easeOutExpo
426
+ }
427
+ }
428
+ };
429
+ var revealRight = {
430
+ hidden: {
431
+ clipPath: "inset(0 100% 0 0)"
432
+ },
433
+ visible: {
434
+ clipPath: "inset(0 0% 0 0)",
435
+ transition: {
436
+ duration: timing.ambient,
437
+ ease: easeOutExpo
438
+ }
439
+ }
440
+ };
441
+ var blurFade = {
442
+ hidden: {
443
+ opacity: 0,
444
+ filter: "blur(10px)"
445
+ },
446
+ visible: {
447
+ opacity: 1,
448
+ filter: "blur(0px)",
449
+ transition: {
450
+ duration: timing.standard,
451
+ ease: easeOutExpo
452
+ }
453
+ }
454
+ };
225
455
  // Annotate the CommonJS export names for ESM import in node:
226
456
  0 && (module.exports = {
457
+ ClientLayout,
227
458
  Footer,
228
459
  Header,
229
- ThemeToggle
460
+ ThemeToggle,
461
+ blurFade,
462
+ buttonPress,
463
+ cardHover,
464
+ defineConfig,
465
+ easeOutExpo,
466
+ fadeInLeft,
467
+ fadeInRight,
468
+ fadeInUp,
469
+ imageZoom,
470
+ pageTransition,
471
+ revealRight,
472
+ scaleUp,
473
+ springStiff,
474
+ staggerContainer,
475
+ staggerItem,
476
+ timing
230
477
  });