@prosophia/lab-techy 0.0.3 → 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/Footer.module.css +147 -0
- package/dist/Header.module.css +147 -0
- package/dist/ThemeToggle.module.css +34 -0
- package/dist/index-CSdV51Jq.d.mts +26 -0
- package/dist/index-CSdV51Jq.d.ts +26 -0
- package/dist/index.d.mts +296 -0
- package/dist/index.d.ts +296 -0
- package/dist/index.js +269 -6
- package/dist/index.mjs +250 -5
- package/dist/layouts/index.d.mts +13 -0
- package/dist/layouts/index.d.ts +13 -0
- package/dist/layouts/index.js +274 -0
- package/dist/layouts/index.mjs +238 -0
- package/dist/schemas/index.d.mts +461 -0
- package/dist/schemas/index.d.ts +461 -0
- package/dist/schemas/index.js +1318 -0
- package/dist/schemas/index.mjs +1278 -0
- package/package.json +16 -2
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
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
|
+
|
|
6
|
+
interface FooterLink {
|
|
7
|
+
label: string;
|
|
8
|
+
url: string;
|
|
9
|
+
}
|
|
10
|
+
interface SocialLink {
|
|
11
|
+
platform: 'twitter' | 'linkedin' | 'github' | 'scholar' | 'orcid' | 'website' | 'email' | 'youtube' | 'instagram';
|
|
12
|
+
url: string;
|
|
13
|
+
}
|
|
14
|
+
interface FooterData$1 {
|
|
15
|
+
labName: string;
|
|
16
|
+
footerText?: string;
|
|
17
|
+
socialLinks?: SocialLink[];
|
|
18
|
+
footerLinks?: FooterLink[];
|
|
19
|
+
email?: string;
|
|
20
|
+
address?: string;
|
|
21
|
+
}
|
|
22
|
+
interface FooterProps {
|
|
23
|
+
footerData?: FooterData$1 | null;
|
|
24
|
+
}
|
|
25
|
+
declare function Footer({ footerData }: FooterProps): react_jsx_runtime.JSX.Element;
|
|
26
|
+
|
|
27
|
+
interface NavItem {
|
|
28
|
+
label: string;
|
|
29
|
+
href: string;
|
|
30
|
+
}
|
|
31
|
+
interface SanityImage {
|
|
32
|
+
_type: 'image';
|
|
33
|
+
asset: {
|
|
34
|
+
_ref: string;
|
|
35
|
+
_type: 'reference';
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
interface NavigationData$1 {
|
|
39
|
+
labName: string;
|
|
40
|
+
logo?: SanityImage;
|
|
41
|
+
mainNavigation?: NavItem[];
|
|
42
|
+
}
|
|
43
|
+
interface HeaderProps {
|
|
44
|
+
navigationData?: NavigationData$1 | null;
|
|
45
|
+
}
|
|
46
|
+
declare function Header({ navigationData }: HeaderProps): react_jsx_runtime.JSX.Element;
|
|
47
|
+
|
|
48
|
+
declare function ThemeToggle(): react_jsx_runtime.JSX.Element;
|
|
49
|
+
|
|
50
|
+
type SiteSettings = {
|
|
51
|
+
labName?: string;
|
|
52
|
+
labNameAccent?: string;
|
|
53
|
+
footerText?: string;
|
|
54
|
+
showPrivacyPolicy?: boolean;
|
|
55
|
+
privacyPolicyUrl?: string;
|
|
56
|
+
showTerms?: boolean;
|
|
57
|
+
termsUrl?: string;
|
|
58
|
+
};
|
|
59
|
+
type ClientLayoutProps = {
|
|
60
|
+
children: React$1.ReactNode;
|
|
61
|
+
settings: SiteSettings;
|
|
62
|
+
};
|
|
63
|
+
declare function ClientLayout({ children, settings }: ClientLayoutProps): react_jsx_runtime.JSX.Element;
|
|
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
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Define configuration for your lab website
|
|
109
|
+
* @param config - The site configuration object
|
|
110
|
+
* @returns The configuration object (passthrough for type safety)
|
|
111
|
+
*/
|
|
112
|
+
declare function defineConfig(config: ProsophiaConfig): ProsophiaConfig;
|
|
113
|
+
|
|
114
|
+
declare const easeOutExpo: [number, number, number, number];
|
|
115
|
+
declare const springStiff: {
|
|
116
|
+
type: string;
|
|
117
|
+
mass: number;
|
|
118
|
+
stiffness: number;
|
|
119
|
+
damping: number;
|
|
120
|
+
};
|
|
121
|
+
declare const timing: {
|
|
122
|
+
quick: number;
|
|
123
|
+
standard: number;
|
|
124
|
+
ambient: number;
|
|
125
|
+
};
|
|
126
|
+
declare const fadeInUp: {
|
|
127
|
+
hidden: {
|
|
128
|
+
opacity: number;
|
|
129
|
+
y: number;
|
|
130
|
+
};
|
|
131
|
+
visible: {
|
|
132
|
+
opacity: number;
|
|
133
|
+
y: number;
|
|
134
|
+
transition: {
|
|
135
|
+
duration: number;
|
|
136
|
+
ease: [number, number, number, number];
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
};
|
|
140
|
+
declare const fadeInLeft: {
|
|
141
|
+
hidden: {
|
|
142
|
+
opacity: number;
|
|
143
|
+
x: number;
|
|
144
|
+
};
|
|
145
|
+
visible: {
|
|
146
|
+
opacity: number;
|
|
147
|
+
x: number;
|
|
148
|
+
transition: {
|
|
149
|
+
duration: number;
|
|
150
|
+
ease: [number, number, number, number];
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
declare const fadeInRight: {
|
|
155
|
+
hidden: {
|
|
156
|
+
opacity: number;
|
|
157
|
+
x: number;
|
|
158
|
+
};
|
|
159
|
+
visible: {
|
|
160
|
+
opacity: number;
|
|
161
|
+
x: number;
|
|
162
|
+
transition: {
|
|
163
|
+
duration: number;
|
|
164
|
+
ease: [number, number, number, number];
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
declare const scaleUp: {
|
|
169
|
+
hidden: {
|
|
170
|
+
opacity: number;
|
|
171
|
+
scale: number;
|
|
172
|
+
};
|
|
173
|
+
visible: {
|
|
174
|
+
opacity: number;
|
|
175
|
+
scale: number;
|
|
176
|
+
transition: {
|
|
177
|
+
duration: number;
|
|
178
|
+
ease: [number, number, number, number];
|
|
179
|
+
};
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
declare const staggerContainer: {
|
|
183
|
+
hidden: {
|
|
184
|
+
opacity: number;
|
|
185
|
+
};
|
|
186
|
+
visible: {
|
|
187
|
+
opacity: number;
|
|
188
|
+
transition: {
|
|
189
|
+
staggerChildren: number;
|
|
190
|
+
delayChildren: number;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
};
|
|
194
|
+
declare const staggerItem: {
|
|
195
|
+
hidden: {
|
|
196
|
+
opacity: number;
|
|
197
|
+
y: number;
|
|
198
|
+
};
|
|
199
|
+
visible: {
|
|
200
|
+
opacity: number;
|
|
201
|
+
y: number;
|
|
202
|
+
transition: {
|
|
203
|
+
duration: number;
|
|
204
|
+
ease: [number, number, number, number];
|
|
205
|
+
};
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
declare const cardHover: {
|
|
209
|
+
rest: {
|
|
210
|
+
y: number;
|
|
211
|
+
boxShadow: string;
|
|
212
|
+
transition: {
|
|
213
|
+
duration: number;
|
|
214
|
+
ease: [number, number, number, number];
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
hover: {
|
|
218
|
+
y: number;
|
|
219
|
+
boxShadow: string;
|
|
220
|
+
transition: {
|
|
221
|
+
duration: number;
|
|
222
|
+
ease: [number, number, number, number];
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
};
|
|
226
|
+
declare const imageZoom: {
|
|
227
|
+
rest: {
|
|
228
|
+
scale: number;
|
|
229
|
+
transition: {
|
|
230
|
+
duration: number;
|
|
231
|
+
ease: [number, number, number, number];
|
|
232
|
+
};
|
|
233
|
+
};
|
|
234
|
+
hover: {
|
|
235
|
+
scale: number;
|
|
236
|
+
transition: {
|
|
237
|
+
duration: number;
|
|
238
|
+
ease: [number, number, number, number];
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
declare const buttonPress: {
|
|
243
|
+
tap: {
|
|
244
|
+
scale: number;
|
|
245
|
+
};
|
|
246
|
+
hover: {
|
|
247
|
+
scale: number;
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
declare const pageTransition: {
|
|
251
|
+
hidden: {
|
|
252
|
+
opacity: number;
|
|
253
|
+
};
|
|
254
|
+
visible: {
|
|
255
|
+
opacity: number;
|
|
256
|
+
transition: {
|
|
257
|
+
duration: number;
|
|
258
|
+
ease: [number, number, number, number];
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
exit: {
|
|
262
|
+
opacity: number;
|
|
263
|
+
transition: {
|
|
264
|
+
duration: number;
|
|
265
|
+
ease: [number, number, number, number];
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
};
|
|
269
|
+
declare const revealRight: {
|
|
270
|
+
hidden: {
|
|
271
|
+
clipPath: string;
|
|
272
|
+
};
|
|
273
|
+
visible: {
|
|
274
|
+
clipPath: string;
|
|
275
|
+
transition: {
|
|
276
|
+
duration: number;
|
|
277
|
+
ease: [number, number, number, number];
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
};
|
|
281
|
+
declare const blurFade: {
|
|
282
|
+
hidden: {
|
|
283
|
+
opacity: number;
|
|
284
|
+
filter: string;
|
|
285
|
+
};
|
|
286
|
+
visible: {
|
|
287
|
+
opacity: number;
|
|
288
|
+
filter: string;
|
|
289
|
+
transition: {
|
|
290
|
+
duration: number;
|
|
291
|
+
ease: [number, number, number, number];
|
|
292
|
+
};
|
|
293
|
+
};
|
|
294
|
+
};
|
|
295
|
+
|
|
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
|
@@ -30,9 +30,27 @@ 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
|
-
|
|
36
|
+
HomePage: () => HomePage,
|
|
37
|
+
ThemeToggle: () => ThemeToggle,
|
|
38
|
+
blurFade: () => blurFade,
|
|
39
|
+
buttonPress: () => buttonPress,
|
|
40
|
+
cardHover: () => cardHover,
|
|
41
|
+
defineConfig: () => defineConfig,
|
|
42
|
+
easeOutExpo: () => easeOutExpo,
|
|
43
|
+
fadeInLeft: () => fadeInLeft,
|
|
44
|
+
fadeInRight: () => fadeInRight,
|
|
45
|
+
fadeInUp: () => fadeInUp,
|
|
46
|
+
imageZoom: () => imageZoom,
|
|
47
|
+
pageTransition: () => pageTransition,
|
|
48
|
+
revealRight: () => revealRight,
|
|
49
|
+
scaleUp: () => scaleUp,
|
|
50
|
+
springStiff: () => springStiff,
|
|
51
|
+
staggerContainer: () => staggerContainer,
|
|
52
|
+
staggerItem: () => staggerItem,
|
|
53
|
+
timing: () => timing
|
|
36
54
|
});
|
|
37
55
|
module.exports = __toCommonJS(index_exports);
|
|
38
56
|
|
|
@@ -149,11 +167,14 @@ var import_Header = __toESM(require("./Header.module.css"));
|
|
|
149
167
|
|
|
150
168
|
// src/components/ThemeToggle.tsx
|
|
151
169
|
var import_framer_motion2 = require("framer-motion");
|
|
152
|
-
var
|
|
170
|
+
var import_next_themes = require("next-themes");
|
|
153
171
|
var import_ThemeToggle = __toESM(require("./ThemeToggle.module.css"));
|
|
154
172
|
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
155
173
|
function ThemeToggle() {
|
|
156
|
-
const {
|
|
174
|
+
const { resolvedTheme, setTheme } = (0, import_next_themes.useTheme)();
|
|
175
|
+
const toggleTheme = () => {
|
|
176
|
+
setTheme(resolvedTheme === "light" ? "dark" : "light");
|
|
177
|
+
};
|
|
157
178
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
158
179
|
import_framer_motion2.motion.button,
|
|
159
180
|
{
|
|
@@ -161,8 +182,8 @@ function ThemeToggle() {
|
|
|
161
182
|
onClick: toggleTheme,
|
|
162
183
|
whileHover: { scale: 1.05 },
|
|
163
184
|
whileTap: { scale: 0.95 },
|
|
164
|
-
"aria-label": `Switch to ${
|
|
165
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "material-symbols-outlined", children:
|
|
185
|
+
"aria-label": `Switch to ${resolvedTheme === "light" ? "dark" : "light"} mode`,
|
|
186
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "material-symbols-outlined", children: resolvedTheme === "light" ? "dark_mode" : "light_mode" })
|
|
166
187
|
}
|
|
167
188
|
);
|
|
168
189
|
}
|
|
@@ -222,9 +243,251 @@ function Header({ navigationData }) {
|
|
|
222
243
|
}
|
|
223
244
|
);
|
|
224
245
|
}
|
|
246
|
+
|
|
247
|
+
// src/components/ClientLayout.tsx
|
|
248
|
+
var import_react = require("react");
|
|
249
|
+
var import_next_themes2 = require("next-themes");
|
|
250
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
251
|
+
function ThemeBodySync() {
|
|
252
|
+
const { resolvedTheme } = (0, import_next_themes2.useTheme)();
|
|
253
|
+
(0, import_react.useEffect)(() => {
|
|
254
|
+
if (resolvedTheme === "dark") {
|
|
255
|
+
document.body.classList.add("dark-mode");
|
|
256
|
+
document.body.classList.remove("light-mode");
|
|
257
|
+
} else {
|
|
258
|
+
document.body.classList.add("light-mode");
|
|
259
|
+
document.body.classList.remove("dark-mode");
|
|
260
|
+
}
|
|
261
|
+
}, [resolvedTheme]);
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
function ClientLayout({ children, settings }) {
|
|
265
|
+
const navigationData = {
|
|
266
|
+
labName: settings.labName || "Prosophia Research Lab"
|
|
267
|
+
};
|
|
268
|
+
const footerData = {
|
|
269
|
+
labName: settings.labName || "Prosophia Research Lab",
|
|
270
|
+
footerText: settings.footerText
|
|
271
|
+
};
|
|
272
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_next_themes2.ThemeProvider, { attribute: "class", defaultTheme: "light", enableSystem: false, children: [
|
|
273
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(ThemeBodySync, {}),
|
|
274
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: "pageWrapper", children: [
|
|
275
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Header, { navigationData }),
|
|
276
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("main", { children }),
|
|
277
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(Footer, { footerData })
|
|
278
|
+
] })
|
|
279
|
+
] });
|
|
280
|
+
}
|
|
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
|
+
|
|
306
|
+
// src/config.ts
|
|
307
|
+
function defineConfig(config) {
|
|
308
|
+
return config;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// src/lib/motion.ts
|
|
312
|
+
var easeOutExpo = [0.16, 1, 0.3, 1];
|
|
313
|
+
var springStiff = {
|
|
314
|
+
type: "spring",
|
|
315
|
+
mass: 1,
|
|
316
|
+
stiffness: 100,
|
|
317
|
+
damping: 15
|
|
318
|
+
};
|
|
319
|
+
var timing = {
|
|
320
|
+
quick: 0.15,
|
|
321
|
+
standard: 0.35,
|
|
322
|
+
ambient: 0.8
|
|
323
|
+
};
|
|
324
|
+
var fadeInUp = {
|
|
325
|
+
hidden: { opacity: 0, y: 20 },
|
|
326
|
+
visible: {
|
|
327
|
+
opacity: 1,
|
|
328
|
+
y: 0,
|
|
329
|
+
transition: {
|
|
330
|
+
duration: timing.standard,
|
|
331
|
+
ease: easeOutExpo
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
};
|
|
335
|
+
var fadeInLeft = {
|
|
336
|
+
hidden: { opacity: 0, x: -20 },
|
|
337
|
+
visible: {
|
|
338
|
+
opacity: 1,
|
|
339
|
+
x: 0,
|
|
340
|
+
transition: {
|
|
341
|
+
duration: timing.standard,
|
|
342
|
+
ease: easeOutExpo
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
var fadeInRight = {
|
|
347
|
+
hidden: { opacity: 0, x: 20 },
|
|
348
|
+
visible: {
|
|
349
|
+
opacity: 1,
|
|
350
|
+
x: 0,
|
|
351
|
+
transition: {
|
|
352
|
+
duration: timing.standard,
|
|
353
|
+
ease: easeOutExpo
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
var scaleUp = {
|
|
358
|
+
hidden: { opacity: 0, scale: 0.95 },
|
|
359
|
+
visible: {
|
|
360
|
+
opacity: 1,
|
|
361
|
+
scale: 1,
|
|
362
|
+
transition: {
|
|
363
|
+
duration: timing.standard,
|
|
364
|
+
ease: easeOutExpo
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
};
|
|
368
|
+
var staggerContainer = {
|
|
369
|
+
hidden: { opacity: 0 },
|
|
370
|
+
visible: {
|
|
371
|
+
opacity: 1,
|
|
372
|
+
transition: {
|
|
373
|
+
staggerChildren: 0.05,
|
|
374
|
+
delayChildren: 0.1
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
var staggerItem = {
|
|
379
|
+
hidden: { opacity: 0, y: 20 },
|
|
380
|
+
visible: {
|
|
381
|
+
opacity: 1,
|
|
382
|
+
y: 0,
|
|
383
|
+
transition: {
|
|
384
|
+
duration: timing.standard,
|
|
385
|
+
ease: easeOutExpo
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
};
|
|
389
|
+
var cardHover = {
|
|
390
|
+
rest: {
|
|
391
|
+
y: 0,
|
|
392
|
+
boxShadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
|
|
393
|
+
transition: {
|
|
394
|
+
duration: timing.quick,
|
|
395
|
+
ease: easeOutExpo
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
hover: {
|
|
399
|
+
y: -4,
|
|
400
|
+
boxShadow: "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",
|
|
401
|
+
transition: {
|
|
402
|
+
duration: timing.quick,
|
|
403
|
+
ease: easeOutExpo
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
var imageZoom = {
|
|
408
|
+
rest: {
|
|
409
|
+
scale: 1,
|
|
410
|
+
transition: {
|
|
411
|
+
duration: timing.ambient,
|
|
412
|
+
ease: easeOutExpo
|
|
413
|
+
}
|
|
414
|
+
},
|
|
415
|
+
hover: {
|
|
416
|
+
scale: 1.05,
|
|
417
|
+
transition: {
|
|
418
|
+
duration: timing.ambient,
|
|
419
|
+
ease: easeOutExpo
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
};
|
|
423
|
+
var buttonPress = {
|
|
424
|
+
tap: { scale: 0.95 },
|
|
425
|
+
hover: { scale: 1.02 }
|
|
426
|
+
};
|
|
427
|
+
var pageTransition = {
|
|
428
|
+
hidden: { opacity: 0 },
|
|
429
|
+
visible: {
|
|
430
|
+
opacity: 1,
|
|
431
|
+
transition: {
|
|
432
|
+
duration: timing.standard,
|
|
433
|
+
ease: easeOutExpo
|
|
434
|
+
}
|
|
435
|
+
},
|
|
436
|
+
exit: {
|
|
437
|
+
opacity: 0,
|
|
438
|
+
transition: {
|
|
439
|
+
duration: timing.quick,
|
|
440
|
+
ease: easeOutExpo
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
};
|
|
444
|
+
var revealRight = {
|
|
445
|
+
hidden: {
|
|
446
|
+
clipPath: "inset(0 100% 0 0)"
|
|
447
|
+
},
|
|
448
|
+
visible: {
|
|
449
|
+
clipPath: "inset(0 0% 0 0)",
|
|
450
|
+
transition: {
|
|
451
|
+
duration: timing.ambient,
|
|
452
|
+
ease: easeOutExpo
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
var blurFade = {
|
|
457
|
+
hidden: {
|
|
458
|
+
opacity: 0,
|
|
459
|
+
filter: "blur(10px)"
|
|
460
|
+
},
|
|
461
|
+
visible: {
|
|
462
|
+
opacity: 1,
|
|
463
|
+
filter: "blur(0px)",
|
|
464
|
+
transition: {
|
|
465
|
+
duration: timing.standard,
|
|
466
|
+
ease: easeOutExpo
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
};
|
|
225
470
|
// Annotate the CommonJS export names for ESM import in node:
|
|
226
471
|
0 && (module.exports = {
|
|
472
|
+
ClientLayout,
|
|
227
473
|
Footer,
|
|
228
474
|
Header,
|
|
229
|
-
|
|
475
|
+
HomePage,
|
|
476
|
+
ThemeToggle,
|
|
477
|
+
blurFade,
|
|
478
|
+
buttonPress,
|
|
479
|
+
cardHover,
|
|
480
|
+
defineConfig,
|
|
481
|
+
easeOutExpo,
|
|
482
|
+
fadeInLeft,
|
|
483
|
+
fadeInRight,
|
|
484
|
+
fadeInUp,
|
|
485
|
+
imageZoom,
|
|
486
|
+
pageTransition,
|
|
487
|
+
revealRight,
|
|
488
|
+
scaleUp,
|
|
489
|
+
springStiff,
|
|
490
|
+
staggerContainer,
|
|
491
|
+
staggerItem,
|
|
492
|
+
timing
|
|
230
493
|
});
|