@moltenagentic/human-elements 0.1.5 → 1.0.7
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/assets/molten-icon-lava.svg +71 -9
- package/assets/molten-icon-neon.svg +21 -0
- package/assets/molten-icon.svg +8 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +48 -14
- package/dist/index.js.map +1 -1
- package/dist/styles/tokens.css +7 -0
- package/dist/styles/utilities.css +72 -0
- package/package.json +22 -15
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1621.53 984.5">
|
|
3
|
+
<defs>
|
|
4
|
+
<style>
|
|
5
|
+
.cls-1 {
|
|
6
|
+
fill: #e32557;
|
|
7
|
+
}
|
|
8
|
+
</style>
|
|
9
|
+
</defs>
|
|
10
|
+
<g id="Layer_1" data-name="Layer 1">
|
|
11
|
+
<g id="Layer_3" data-name="Layer 3">
|
|
12
|
+
<path class="cls-1" d="M489.62,419.14H163.21L0,701.82l163.21,282.68h326.41l163.21-282.68-163.21-282.68ZM405.22,838.33h-157.63l-78.81-136.51,78.81-136.51,72.97-145.97,84.65,145.97,78.81,136.51-78.81,136.51Z"/>
|
|
13
|
+
</g>
|
|
14
|
+
<path class="cls-1" d="M574.41,565.32l-11.29.04h-158l-163.21-282.68L405.11,0h326.41l163.21,282.68-84.24,145.9-84.18-145.9-.54.31.18-.31-78.81-136.51h-157.63l-78.81,136.51,78.81,136.51h.14l84.76,146.13Z"/>
|
|
15
|
+
<polygon class="cls-1" points="1458.32 419.14 1300.34 419.14 1452.74 701.82 1373.93 838.33 1216.3 838.33 1137.49 701.82 1216.3 565.31 1300.34 419.14 1131.91 419.14 968.71 701.82 1131.91 984.5 1458.32 984.5 1621.53 701.82 1458.32 419.14"/>
|
|
16
|
+
<path class="cls-1" d="M1215.92,0h-326.41l-163.21,282.68,163.21,282.68h326.41l163.21-282.68L1215.92,0ZM1131.53,419.19l-78.54,136.82-79.09-136.82-78.81-136.51,78.81-136.51h157.63l78.81,136.51-78.81,136.51Z"/>
|
|
17
|
+
</g>
|
|
18
|
+
<g id="Layer_4" data-name="Layer 4">
|
|
19
|
+
<polyline class="cls-1" points="889.41 838.33 731.78 838.33 652.97 701.82 731.78 565.31 805.09 419.35 889.41 565.31 967.09 699.85 967.16 699.72 1045.56 832.89 1076.78 782.63 1083.56 794.4 1137.01 701.82 973.8 419.14 647.39 419.14 484.19 701.82 647.39 984.5 963.21 984.5 1047.63 838.53"/>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
package/assets/molten-icon.svg
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1621.53 984.5">
|
|
3
|
+
<path d="M489.62,419.14H163.21L0,701.82l163.21,282.68h326.41l163.21-282.68-163.21-282.68ZM405.22,838.33h-157.63l-78.81-136.51,78.81-136.51,72.97-145.97,84.65,145.97,78.81,136.51-78.81,136.51Z"/>
|
|
4
|
+
<path d="M574.41,565.32l-11.29.04h-158l-163.21-282.68L405.11,0h326.41l163.21,282.68-84.24,145.9-84.18-145.9-.54.31.18-.31-78.81-136.51h-157.63l-78.81,136.51,78.81,136.51h.14l84.76,146.13Z"/>
|
|
5
|
+
<polygon points="1458.32 419.14 1300.34 419.14 1452.74 701.82 1373.93 838.33 1216.3 838.33 1137.49 701.82 1216.3 565.31 1300.34 419.14 1131.91 419.14 968.71 701.82 1131.91 984.5 1458.32 984.5 1621.53 701.82 1458.32 419.14"/>
|
|
6
|
+
<path d="M1215.92,0h-326.41l-163.21,282.68,163.21,282.68h326.41l163.21-282.68L1215.92,0ZM1131.53,419.19l-78.54,136.82-79.09-136.82-78.81-136.51,78.81-136.51h157.63l78.81,136.51-78.81,136.51Z"/>
|
|
7
|
+
<polyline points="889.41 838.33 731.78 838.33 652.97 701.82 731.78 565.31 805.09 419.35 889.41 565.31 967.09 699.85 967.16 699.72 1045.56 832.89 1076.78 782.63 1083.56 794.4 1137.01 701.82 973.8 419.14 647.39 419.14 484.19 701.82 647.39 984.5 963.21 984.5 1047.63 838.53"/>
|
|
8
|
+
</svg>
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { ButtonHTMLAttributes, ReactNode, HTMLAttributes, RefObject } from 'react';
|
|
3
3
|
|
|
4
|
-
type TechGridTone = 'molten' | 'dark';
|
|
4
|
+
type TechGridTone = 'molten' | 'dark' | 'neon';
|
|
5
5
|
interface TechGridProps {
|
|
6
6
|
className?: string;
|
|
7
7
|
zIndex?: number;
|
|
@@ -25,7 +25,7 @@ interface LavaSceneProps {
|
|
|
25
25
|
}
|
|
26
26
|
declare function LavaScene({ centered }: LavaSceneProps): react_jsx_runtime.JSX.Element;
|
|
27
27
|
|
|
28
|
-
type EmberTone = 'molten' | 'dark';
|
|
28
|
+
type EmberTone = 'molten' | 'dark' | 'neon-pink';
|
|
29
29
|
interface EmberFieldProps {
|
|
30
30
|
tone?: EmberTone;
|
|
31
31
|
count?: number;
|
|
@@ -99,6 +99,8 @@ interface NavAction {
|
|
|
99
99
|
onClick?: () => void;
|
|
100
100
|
href?: string;
|
|
101
101
|
label?: string;
|
|
102
|
+
connected?: boolean;
|
|
103
|
+
connectedLabel?: string;
|
|
102
104
|
}
|
|
103
105
|
interface ProductNavProps {
|
|
104
106
|
logo?: ReactNode;
|
|
@@ -156,7 +158,7 @@ interface HeroCardProps {
|
|
|
156
158
|
}
|
|
157
159
|
declare function HeroCard({ label, title, code, description, accentColor, actionText, onClick, children, }: HeroCardProps): react_jsx_runtime.JSX.Element;
|
|
158
160
|
|
|
159
|
-
type MoltenTheme = 'day' | 'night';
|
|
161
|
+
type MoltenTheme = 'day' | 'night' | 'neon';
|
|
160
162
|
interface MoltenThemeContextValue {
|
|
161
163
|
theme: MoltenTheme;
|
|
162
164
|
setTheme: (theme: MoltenTheme) => void;
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,11 @@ var TONES = {
|
|
|
15
15
|
line: "rgba(0,0,0,0.18)",
|
|
16
16
|
cross: "rgba(0,0,0,0.4)",
|
|
17
17
|
dot: "rgba(0,0,0,0.22)"
|
|
18
|
+
},
|
|
19
|
+
neon: {
|
|
20
|
+
line: "rgba(255,51,102,0.14)",
|
|
21
|
+
cross: "rgba(255,51,102,0.35)",
|
|
22
|
+
dot: "rgba(255,51,102,0.2)"
|
|
18
23
|
}
|
|
19
24
|
};
|
|
20
25
|
function TechGrid({
|
|
@@ -395,6 +400,12 @@ var COLORS = {
|
|
|
395
400
|
[20, 8, 2],
|
|
396
401
|
[40, 16, 4],
|
|
397
402
|
[10, 4, 1]
|
|
403
|
+
],
|
|
404
|
+
"neon-pink": [
|
|
405
|
+
[255, 51, 102],
|
|
406
|
+
[220, 40, 80],
|
|
407
|
+
[255, 80, 130],
|
|
408
|
+
[200, 30, 70]
|
|
398
409
|
]
|
|
399
410
|
};
|
|
400
411
|
function randomColor(tone) {
|
|
@@ -639,20 +650,33 @@ var BTN_BG = "rgba(24, 24, 27, 0.9)";
|
|
|
639
650
|
function NavIconButton({
|
|
640
651
|
children,
|
|
641
652
|
onClick,
|
|
642
|
-
className = ""
|
|
653
|
+
className = "",
|
|
654
|
+
connected,
|
|
655
|
+
connectedLabel
|
|
643
656
|
}) {
|
|
644
|
-
return /* @__PURE__ */
|
|
657
|
+
return /* @__PURE__ */ jsxs4(
|
|
645
658
|
"button",
|
|
646
659
|
{
|
|
647
660
|
onClick,
|
|
648
|
-
className: `relative flex items-center justify-center rounded-xl transition-all cursor-pointer rainbow-border-button text-white ${className}`,
|
|
661
|
+
className: `group relative flex items-center justify-center rounded-xl transition-all cursor-pointer rainbow-border-button text-white ${className}`,
|
|
649
662
|
style: {
|
|
650
663
|
width: BTN_SIZE,
|
|
651
664
|
height: Math.round(BTN_SIZE * 1.1),
|
|
652
665
|
background: BTN_BG,
|
|
653
666
|
backdropFilter: "blur(24px)"
|
|
654
667
|
},
|
|
655
|
-
children
|
|
668
|
+
children: [
|
|
669
|
+
children,
|
|
670
|
+
connected && /* @__PURE__ */ jsx11("div", { style: { position: "absolute", top: 4, right: 4, width: 6, height: 6, borderRadius: "50%", background: "#00ff88" } }),
|
|
671
|
+
connectedLabel && /* @__PURE__ */ jsx11(
|
|
672
|
+
"div",
|
|
673
|
+
{
|
|
674
|
+
className: "pointer-events-none absolute -bottom-8 left-1/2 -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity duration-200 whitespace-nowrap px-2 py-1 rounded-md text-[10px] font-medium text-white",
|
|
675
|
+
style: { background: "rgba(24, 24, 27, 0.95)", border: "1px solid rgba(255,255,255,0.08)" },
|
|
676
|
+
children: connectedLabel
|
|
677
|
+
}
|
|
678
|
+
)
|
|
679
|
+
]
|
|
656
680
|
}
|
|
657
681
|
);
|
|
658
682
|
}
|
|
@@ -859,7 +883,7 @@ function ProductNav({
|
|
|
859
883
|
/* @__PURE__ */ jsx11("div", { className: "nav-content", style: { width: "56px" } }),
|
|
860
884
|
/* @__PURE__ */ jsx11("div", { className: "nav-content absolute left-1/2 -translate-x-1/2", children: /* @__PURE__ */ jsx11("a", { href: logoHref, className: "block hover:opacity-80 transition-opacity", children: logo ?? /* @__PURE__ */ jsx11("span", { style: { fontSize: "18px", fontWeight: 900, color: "#fff" }, children: "M" }) }) }),
|
|
861
885
|
/* @__PURE__ */ jsxs4("div", { className: "nav-content", style: { display: "flex", alignItems: "center", gap: "20px" }, children: [
|
|
862
|
-
rightAction && (rightAction.href ? /* @__PURE__ */ jsx11("a", { href: rightAction.href, title: rightAction.label, children: /* @__PURE__ */ jsx11(NavIconButton, { children: rightAction.icon }) }) : /* @__PURE__ */ jsx11(NavIconButton, { onClick: rightAction.onClick, children: rightAction.icon })),
|
|
886
|
+
rightAction && (rightAction.href ? /* @__PURE__ */ jsx11("a", { href: rightAction.href, title: rightAction.label, children: /* @__PURE__ */ jsx11(NavIconButton, { connected: rightAction.connected, connectedLabel: rightAction.connectedLabel, children: rightAction.icon }) }) : /* @__PURE__ */ jsx11(NavIconButton, { onClick: rightAction.onClick, connected: rightAction.connected, connectedLabel: rightAction.connectedLabel, children: rightAction.icon })),
|
|
863
887
|
rightExtra
|
|
864
888
|
] })
|
|
865
889
|
]
|
|
@@ -903,6 +927,7 @@ function ProductNav({
|
|
|
903
927
|
// src/theme/MoltenThemeProvider.tsx
|
|
904
928
|
import { createContext, useContext, useState as useState3, useEffect as useEffect6, useCallback as useCallback2 } from "react";
|
|
905
929
|
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
930
|
+
var THEMES = ["day", "night", "neon"];
|
|
906
931
|
var MoltenThemeContext = createContext({
|
|
907
932
|
theme: "day",
|
|
908
933
|
setTheme: () => {
|
|
@@ -911,11 +936,14 @@ var MoltenThemeContext = createContext({
|
|
|
911
936
|
}
|
|
912
937
|
});
|
|
913
938
|
var STORAGE_KEY = "molten-theme";
|
|
939
|
+
function isValidTheme(v) {
|
|
940
|
+
return v === "day" || v === "night" || v === "neon";
|
|
941
|
+
}
|
|
914
942
|
function MoltenThemeProvider({ children, defaultTheme = "day" }) {
|
|
915
943
|
const [theme, setThemeState] = useState3(defaultTheme);
|
|
916
944
|
useEffect6(() => {
|
|
917
945
|
const stored = localStorage.getItem(STORAGE_KEY);
|
|
918
|
-
if (stored
|
|
946
|
+
if (isValidTheme(stored)) {
|
|
919
947
|
setThemeState(stored);
|
|
920
948
|
document.documentElement.dataset.theme = stored;
|
|
921
949
|
} else {
|
|
@@ -928,7 +956,8 @@ function MoltenThemeProvider({ children, defaultTheme = "day" }) {
|
|
|
928
956
|
localStorage.setItem(STORAGE_KEY, next);
|
|
929
957
|
}, []);
|
|
930
958
|
const toggle = useCallback2(() => {
|
|
931
|
-
|
|
959
|
+
const idx = THEMES.indexOf(theme);
|
|
960
|
+
setTheme(THEMES[(idx + 1) % THEMES.length]);
|
|
932
961
|
}, [theme, setTheme]);
|
|
933
962
|
return /* @__PURE__ */ jsx12(MoltenThemeContext.Provider, { value: { theme, setTheme, toggle }, children });
|
|
934
963
|
}
|
|
@@ -955,14 +984,17 @@ function HalfHero({
|
|
|
955
984
|
showGrid = true
|
|
956
985
|
}) {
|
|
957
986
|
const { theme } = useMoltenTheme();
|
|
987
|
+
const isNeon = theme === "neon";
|
|
958
988
|
const isNight = theme === "night";
|
|
959
|
-
const gridTone = isNight ? "molten" : "dark";
|
|
960
|
-
const emberTone = isNight ? "molten" : "dark";
|
|
989
|
+
const gridTone = isNeon ? "neon" : isNight ? "molten" : "dark";
|
|
990
|
+
const emberTone = isNeon ? "neon-pink" : isNight ? "molten" : "dark";
|
|
991
|
+
const textColor = isNight ? "#fff" : "#000";
|
|
992
|
+
const neonBg = "radial-gradient(ellipse at 50% 40%, #00ff88 0%, #00dd77 30%, #00aa55 65%, #006633 100%)";
|
|
961
993
|
return /* @__PURE__ */ jsxs5(
|
|
962
994
|
"div",
|
|
963
995
|
{
|
|
964
|
-
className: `relative overflow-hidden flex flex-col ${fieldClasses[fieldVariant]} ${className}`,
|
|
965
|
-
style: { minHeight: height, color:
|
|
996
|
+
className: `relative overflow-hidden flex flex-col ${isNeon ? "" : fieldClasses[fieldVariant]} ${className}`,
|
|
997
|
+
style: { minHeight: height, color: textColor, ...isNeon ? { background: neonBg } : {} },
|
|
966
998
|
children: [
|
|
967
999
|
showGrid && /* @__PURE__ */ jsx13(TechGrid, { tone: gridTone, id: "hero", className: "absolute inset-0 w-full h-full", style: { zIndex: 3 } }),
|
|
968
1000
|
showEmbers && /* @__PURE__ */ jsx13(EmberField, { tone: emberTone, count: emberCount, style: { zIndex: 5 } }),
|
|
@@ -990,8 +1022,7 @@ function ProductShell({
|
|
|
990
1022
|
import { jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
991
1023
|
function ThemeToggle() {
|
|
992
1024
|
const { theme, toggle } = useMoltenTheme();
|
|
993
|
-
const
|
|
994
|
-
const color = isNight ? "#71717a" : "#fff";
|
|
1025
|
+
const color = theme === "neon" ? "#00ff88" : theme === "night" ? "#71717a" : "#fff";
|
|
995
1026
|
return /* @__PURE__ */ jsx15(
|
|
996
1027
|
"button",
|
|
997
1028
|
{
|
|
@@ -1003,7 +1034,10 @@ function ThemeToggle() {
|
|
|
1003
1034
|
background: "rgba(24, 24, 27, 0.9)",
|
|
1004
1035
|
backdropFilter: "blur(24px)"
|
|
1005
1036
|
},
|
|
1006
|
-
children:
|
|
1037
|
+
children: theme === "neon" ? (
|
|
1038
|
+
/* 60s comic-book lightning bolt — thick top, sharp point at bottom */
|
|
1039
|
+
/* @__PURE__ */ jsx15("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: color, children: /* @__PURE__ */ jsx15("path", { d: "M15 2L8 13h4l-3 9 10-13h-5z" }) })
|
|
1040
|
+
) : theme === "night" ? /* @__PURE__ */ jsx15("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "1.5", strokeLinecap: "round", children: /* @__PURE__ */ jsx15("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }) : /* @__PURE__ */ jsxs6("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: color, strokeWidth: "1.5", strokeLinecap: "round", children: [
|
|
1007
1041
|
/* @__PURE__ */ jsx15("circle", { cx: "12", cy: "12", r: "4" }),
|
|
1008
1042
|
/* @__PURE__ */ jsx15("path", { d: "M12 2v3M12 19v3M4.22 4.22l2.12 2.12M17.66 17.66l2.12 2.12M2 12h3M19 12h3M4.22 19.78l2.12-2.12M17.66 6.34l2.12-2.12" })
|
|
1009
1043
|
] })
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/TechGrid.tsx","../src/components/GridMesh.tsx","../src/components/LavaScene.tsx","../src/components/EmberField.tsx","../src/components/Vignette.tsx","../src/components/SphereGlow.tsx","../src/components/MoltenButton.tsx","../src/components/GlassCard.tsx","../src/components/MoltenText.tsx","../src/components/Page.tsx","../src/components/ProductNav.tsx","../src/theme/MoltenThemeProvider.tsx","../src/components/HalfHero.tsx","../src/components/ProductShell.tsx","../src/components/ThemeToggle.tsx","../src/components/LangButton.tsx","../src/components/HeroCard.tsx","../src/hooks/usePulseLabels.ts"],"sourcesContent":["'use client';\n\nconst GRID = 160;\nconst HALF = GRID / 2;\nconst ARM = 10;\n\nexport type TechGridTone = 'molten' | 'dark';\n\nconst TONES = {\n molten: {\n line: 'rgba(200,70,35,0.14)',\n cross: 'rgba(200,70,35,0.45)',\n dot: 'rgba(200,70,35,0.25)',\n },\n dark: {\n line: 'rgba(0,0,0,0.18)',\n cross: 'rgba(0,0,0,0.4)',\n dot: 'rgba(0,0,0,0.22)',\n },\n} as const;\n\nexport interface TechGridProps {\n className?: string;\n zIndex?: number;\n tone?: TechGridTone;\n /** Unique id suffix — required when rendering multiple grids on the same page */\n id?: string;\n style?: React.CSSProperties;\n}\n\nexport function TechGrid({\n className = '',\n zIndex = 3,\n tone = 'molten',\n id = '',\n style,\n}: TechGridProps) {\n const { line, cross, dot } = TONES[tone];\n const gridId = `tech-grid${id ? `-${id}` : ''}`;\n const crossId = `crosshairs${id ? `-${id}` : ''}`;\n\n return (\n <svg\n className={`pointer-events-none ${className}`}\n style={{ zIndex, ...style }}\n >\n <defs>\n <pattern\n id={gridId}\n width={GRID}\n height={GRID}\n patternUnits=\"userSpaceOnUse\"\n >\n <line x1=\"0\" y1=\"0\" x2={GRID} y2=\"0\" stroke={line} strokeWidth=\"0.5\" />\n <line x1=\"0\" y1=\"0\" x2=\"0\" y2={GRID} stroke={line} strokeWidth=\"0.5\" />\n <circle cx={HALF} cy={0} r=\"1.5\" fill={dot} />\n <circle cx={0} cy={HALF} r=\"1.5\" fill={dot} />\n <circle cx={HALF} cy={HALF} r=\"1.5\" fill={dot} />\n </pattern>\n\n <pattern\n id={crossId}\n width={GRID}\n height={GRID}\n patternUnits=\"userSpaceOnUse\"\n patternTransform={`translate(${-HALF},${-HALF})`}\n >\n <line\n x1={HALF - ARM} y1={HALF} x2={HALF + ARM} y2={HALF}\n stroke={cross} strokeWidth=\"1\"\n />\n <line\n x1={HALF} y1={HALF - ARM} x2={HALF} y2={HALF + ARM}\n stroke={cross} strokeWidth=\"1\"\n />\n </pattern>\n </defs>\n\n <rect width=\"100%\" height=\"100%\" fill={`url(#${gridId})`} />\n <rect width=\"100%\" height=\"100%\" fill={`url(#${crossId})`} />\n </svg>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nexport interface GridMeshProps {\n className?: string;\n opacity?: number;\n gridSize?: number;\n strokeColor?: string;\n}\n\nexport function GridMesh({\n className = '',\n opacity = 0.6,\n gridSize = 50,\n strokeColor = 'rgba(255, 255, 255, 0.03)',\n}: GridMeshProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n let animationFrameId: number;\n let time = 0;\n\n const resize = () => {\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n };\n\n resize();\n window.addEventListener('resize', resize);\n\n const draw = () => {\n if (!ctx || !canvas) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const cols = Math.ceil(canvas.width / gridSize) + 1;\n const rows = Math.ceil(canvas.height / gridSize) + 1;\n\n time += 0.005;\n\n ctx.strokeStyle = strokeColor;\n ctx.lineWidth = 1;\n\n for (let i = 0; i < rows; i++) {\n ctx.beginPath();\n for (let j = 0; j < cols; j++) {\n const x = j * gridSize;\n const y =\n i * gridSize +\n Math.sin(time + j * 0.1) * 10 +\n Math.cos(time * 0.5 + i * 0.1) * 8;\n\n if (j === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.stroke();\n }\n\n for (let j = 0; j < cols; j++) {\n ctx.beginPath();\n for (let i = 0; i < rows; i++) {\n const x =\n j * gridSize +\n Math.sin(time + i * 0.1) * 10 +\n Math.cos(time * 0.7 + j * 0.1) * 8;\n const y = i * gridSize;\n\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.stroke();\n }\n\n animationFrameId = requestAnimationFrame(draw);\n };\n\n draw();\n\n return () => {\n window.removeEventListener('resize', resize);\n cancelAnimationFrame(animationFrameId);\n };\n }, [gridSize, strokeColor]);\n\n return (\n <canvas\n ref={canvasRef}\n className={`absolute inset-0 w-full h-full pointer-events-none ${className}`}\n style={{ opacity }}\n />\n );\n}\n","'use client';\n\nimport { useRef, useMemo, useEffect } from 'react';\nimport { Canvas, useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nconst noiseGLSL = /* glsl */ `\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}\nvec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}\nvec4 permute(vec4 x){return mod289(((x*34.0)+10.0)*x);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}\n\nfloat snoise(vec3 v){\n const vec2 C=vec2(1.0/6.0,1.0/3.0);\n const vec4 D=vec4(0.0,0.5,1.0,2.0);\n vec3 i=floor(v+dot(v,C.yyy));\n vec3 x0=v-i+dot(i,C.xxx);\n vec3 g=step(x0.yzx,x0.xyz);\n vec3 l=1.0-g;\n vec3 i1=min(g.xyz,l.zxy);\n vec3 i2=max(g.xyz,l.zxy);\n vec3 x1=x0-i1+C.xxx;\n vec3 x2=x0-i2+C.yyy;\n vec3 x3=x0-D.yyy;\n i=mod289(i);\n vec4 p=permute(permute(permute(\n i.z+vec4(0.0,i1.z,i2.z,1.0))\n +i.y+vec4(0.0,i1.y,i2.y,1.0))\n +i.x+vec4(0.0,i1.x,i2.x,1.0));\n float n_=0.142857142857;\n vec3 ns=n_*D.wyz-D.xzx;\n vec4 j=p-49.0*floor(p*ns.z*ns.z);\n vec4 x_=floor(j*ns.z);\n vec4 y_=floor(j-7.0*x_);\n vec4 x=x_*ns.x+ns.yyyy;\n vec4 y=y_*ns.x+ns.yyyy;\n vec4 h=1.0-abs(x)-abs(y);\n vec4 b0=vec4(x.xy,y.xy);\n vec4 b1=vec4(x.zw,y.zw);\n vec4 s0=floor(b0)*2.0+1.0;\n vec4 s1=floor(b1)*2.0+1.0;\n vec4 sh=-step(h,vec4(0.0));\n vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;\n vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;\n vec3 p0=vec3(a0.xy,h.x);\n vec3 p1=vec3(a0.zw,h.y);\n vec3 p2=vec3(a1.xy,h.z);\n vec3 p3=vec3(a1.zw,h.w);\n vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));\n p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;\n vec4 m=max(0.5-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);\n m=m*m;\n return 105.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));\n}\n`;\n\nconst vertexShader = /* glsl */ `\nuniform float uTime;\n${noiseGLSL}\nvarying float vDisplacement;\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\n\nvoid main() {\n float n1 = snoise(position * 1.5 + uTime * 0.15) * 0.4;\n float n2 = snoise(position * 3.0 + uTime * 0.3) * 0.2;\n float n3 = snoise(position * 6.0 - uTime * 0.2) * 0.1;\n float displacement = n1 + n2 + n3;\n\n vec3 newPos = position + normal * displacement;\n vDisplacement = displacement;\n vNormal = normalize(normalMatrix * normal);\n vWorldPosition = (modelMatrix * vec4(newPos, 1.0)).xyz;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(newPos, 1.0);\n}\n`;\n\nconst fragmentShader = /* glsl */ `\nuniform float uTime;\nvarying float vDisplacement;\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\n\nvoid main() {\n float d = smoothstep(-0.5, 0.7, vDisplacement);\n\n vec3 c0 = vec3(0.337, 0.055, 0.141);\n vec3 c1 = vec3(0.671, 0.106, 0.114);\n vec3 c2 = vec3(0.855, 0.220, 0.086);\n vec3 c3 = vec3(0.969, 0.500, 0.055);\n vec3 c4 = vec3(0.984, 0.624, 0.051);\n vec3 c5 = vec3(1.0, 0.95, 0.85);\n\n vec3 color;\n if (d < 0.15) color = mix(c0, c1, d / 0.15);\n else if (d < 0.35) color = mix(c1, c2, (d - 0.15) / 0.2);\n else if (d < 0.55) color = mix(c2, c3, (d - 0.35) / 0.2);\n else if (d < 0.75) color = mix(c3, c4, (d - 0.55) / 0.2);\n else color = mix(c4, c5, (d - 0.75) / 0.25);\n\n vec3 viewDir = normalize(cameraPosition - vWorldPosition);\n float fresnel = pow(1.0 - max(dot(vNormal, viewDir), 0.0), 3.0);\n color += c4 * fresnel * 0.5;\n\n color *= 1.0 + 0.06 * sin(uTime * 0.7);\n\n gl_FragColor = vec4(color, 1.0);\n}\n`;\n\nfunction LavaSphere({ yOffset = 0.6 }: { yOffset?: number }) {\n const meshRef = useRef<THREE.Mesh>(null);\n const matRef = useRef<THREE.ShaderMaterial>(null);\n const mouse = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n const onMove = (e: MouseEvent) => {\n mouse.current.x = (e.clientX / window.innerWidth - 0.5) * 2;\n mouse.current.y = -(e.clientY / window.innerHeight - 0.5) * 2;\n };\n window.addEventListener('mousemove', onMove);\n return () => window.removeEventListener('mousemove', onMove);\n }, []);\n\n const uniforms = useMemo(() => ({ uTime: { value: 0 } }), []);\n\n useFrame(({ clock }) => {\n if (matRef.current) matRef.current.uniforms.uTime.value = clock.elapsedTime;\n if (meshRef.current) {\n const m = meshRef.current;\n m.rotation.x = THREE.MathUtils.lerp(m.rotation.x, mouse.current.y * 0.15, 0.02);\n m.rotation.y = THREE.MathUtils.lerp(\n m.rotation.y,\n mouse.current.x * 0.25 + clock.elapsedTime * 0.06,\n 0.02,\n );\n }\n });\n\n return (\n <mesh ref={meshRef} position={[0, yOffset, 0]}>\n <icosahedronGeometry args={[1.5, 64]} />\n <shaderMaterial\n ref={matRef}\n vertexShader={vertexShader}\n fragmentShader={fragmentShader}\n uniforms={uniforms}\n />\n </mesh>\n );\n}\n\nfunction EmberParticles() {\n const ref = useRef<THREE.Points>(null);\n const count = 180;\n\n const { positions, velocities } = useMemo(() => {\n const pos = new Float32Array(count * 3);\n const vel = new Float32Array(count * 3);\n for (let i = 0; i < count; i++) {\n const i3 = i * 3;\n pos[i3] = (Math.random() - 0.5) * 10;\n pos[i3 + 1] = Math.random() * 8 - 4;\n pos[i3 + 2] = (Math.random() - 0.5) * 6;\n vel[i3] = (Math.random() - 0.5) * 0.003;\n vel[i3 + 1] = Math.random() * 0.006 + 0.002;\n vel[i3 + 2] = (Math.random() - 0.5) * 0.002;\n }\n return { positions: pos, velocities: vel };\n }, []);\n\n const sizes = useMemo(() => {\n const s = new Float32Array(count);\n for (let i = 0; i < count; i++) s[i] = Math.random() * 0.04 + 0.01;\n return s;\n }, []);\n\n useFrame(() => {\n if (!ref.current) return;\n const arr = ref.current.geometry.attributes.position.array as Float32Array;\n for (let i = 0; i < count; i++) {\n const i3 = i * 3;\n arr[i3] += velocities[i3];\n arr[i3 + 1] += velocities[i3 + 1];\n arr[i3 + 2] += velocities[i3 + 2];\n if (arr[i3 + 1] > 5) {\n arr[i3] = (Math.random() - 0.5) * 10;\n arr[i3 + 1] = -5;\n arr[i3 + 2] = (Math.random() - 0.5) * 6;\n }\n }\n ref.current.geometry.attributes.position.needsUpdate = true;\n });\n\n return (\n <points ref={ref}>\n <bufferGeometry>\n <bufferAttribute attach=\"attributes-position\" args={[positions, 3]} />\n <bufferAttribute attach=\"attributes-size\" args={[sizes, 1]} />\n </bufferGeometry>\n <pointsMaterial size={0.035} color=\"#fb9f0d\" transparent opacity={0.5} sizeAttenuation />\n </points>\n );\n}\n\nexport interface LavaSceneProps {\n centered?: boolean;\n}\n\nexport function LavaScene({ centered = false }: LavaSceneProps) {\n const yOffset = centered ? 0 : 0.6;\n\n return (\n <Canvas\n camera={{ position: [0, 0, 5], fov: 45 }}\n gl={{ antialias: true, alpha: true }}\n style={{ background: 'transparent' }}\n >\n <ambientLight intensity={0.08} />\n <pointLight position={[5, 5, 5]} intensity={0.5} color=\"#fb9f0d\" />\n <pointLight position={[-5, -3, 3]} intensity={0.3} color=\"#ab1b1d\" />\n <LavaSphere yOffset={yOffset} />\n <EmberParticles />\n </Canvas>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nexport type EmberTone = 'molten' | 'dark';\n\nexport interface EmberFieldProps {\n tone?: EmberTone;\n count?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface Particle {\n x: number;\n y: number;\n vx: number;\n vy: number;\n size: number;\n opacity: number;\n drift: number;\n}\n\nconst COLORS = {\n molten: [\n [251, 159, 13],\n [247, 128, 14],\n [237, 99, 20],\n [218, 56, 22],\n ],\n dark: [\n [0, 0, 0],\n [20, 8, 2],\n [40, 16, 4],\n [10, 4, 1],\n ],\n} as const;\n\nfunction randomColor(tone: EmberTone): [number, number, number] {\n const palette = COLORS[tone];\n return [...palette[Math.floor(Math.random() * palette.length)]] as [number, number, number];\n}\n\nfunction createParticle(w: number, h: number, tone: EmberTone, fromBottom = false): Particle {\n return {\n x: Math.random() * w,\n y: fromBottom ? h + Math.random() * 40 : Math.random() * h,\n vx: (Math.random() - 0.5) * 0.3,\n vy: -(Math.random() * 0.6 + 0.2),\n size: Math.random() * 2.5 + 0.8,\n opacity: Math.random() * 0.5 + 0.2,\n drift: (Math.random() - 0.5) * 0.002,\n };\n}\n\nexport function EmberField({\n tone = 'molten',\n count = 60,\n className = '',\n style,\n}: EmberFieldProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n let animId: number;\n let particles: (Particle & { color: [number, number, number] })[] = [];\n\n const resize = () => {\n canvas.width = canvas.offsetWidth * window.devicePixelRatio;\n canvas.height = canvas.offsetHeight * window.devicePixelRatio;\n ctx.scale(window.devicePixelRatio, window.devicePixelRatio);\n };\n\n const init = () => {\n resize();\n const w = canvas.offsetWidth;\n const h = canvas.offsetHeight;\n particles = Array.from({ length: count }, () => ({\n ...createParticle(w, h, tone),\n color: randomColor(tone),\n }));\n };\n\n init();\n window.addEventListener('resize', init);\n\n const draw = () => {\n const w = canvas.offsetWidth;\n const h = canvas.offsetHeight;\n ctx.clearRect(0, 0, w, h);\n\n for (const p of particles) {\n p.x += p.vx;\n p.y += p.vy;\n p.vx += p.drift;\n\n if (p.y < -10 || p.x < -10 || p.x > w + 10) {\n Object.assign(p, createParticle(w, h, tone, true));\n p.color = randomColor(tone);\n }\n\n const [r, g, b] = p.color;\n ctx.beginPath();\n ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\n ctx.fillStyle = `rgba(${r},${g},${b},${p.opacity})`;\n ctx.fill();\n }\n\n animId = requestAnimationFrame(draw);\n };\n\n draw();\n\n return () => {\n window.removeEventListener('resize', init);\n cancelAnimationFrame(animId);\n };\n }, [tone, count]);\n\n return (\n <canvas\n ref={canvasRef}\n className={`absolute inset-0 w-full h-full pointer-events-none ${className}`}\n style={style}\n />\n );\n}\n","'use client';\n\nexport interface VignetteProps {\n className?: string;\n zIndex?: number;\n}\n\nexport function Vignette({ className = '', zIndex = 2 }: VignetteProps) {\n return (\n <div\n className={`fixed inset-0 pointer-events-none vignette ${className}`}\n style={{ zIndex }}\n />\n );\n}\n","'use client';\n\nexport interface SphereGlowProps {\n className?: string;\n zIndex?: number;\n}\n\nexport function SphereGlow({ className = '', zIndex = 1 }: SphereGlowProps) {\n return (\n <div\n className={`fixed inset-0 pointer-events-none ${className}`}\n style={{ zIndex }}\n >\n <div className=\"sphere-glow\" />\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode, ButtonHTMLAttributes } from 'react';\n\nexport interface MoltenButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n href?: string;\n variant?: 'molten' | 'outline' | 'ghost';\n size?: 'xs' | 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n}\n\nconst sizeClasses = {\n xs: 'px-2.5 py-1 text-[10px]',\n sm: 'px-3 py-1.5 text-xs',\n md: 'px-4 py-2 text-sm',\n lg: 'px-8 py-4 text-sm',\n} as const;\n\nconst variantClasses = {\n molten: 'bg-black text-white hover:bg-zinc-900 rainbow-border-button',\n outline: 'bg-transparent border border-zinc-700 text-white hover:bg-zinc-800',\n ghost: 'bg-transparent text-white hover:bg-zinc-800/50',\n} as const;\n\nexport function MoltenButton({\n children,\n href,\n variant = 'molten',\n size = 'sm',\n fullWidth = false,\n disabled = false,\n className = '',\n ...props\n}: MoltenButtonProps) {\n const classes = [\n 'relative inline-flex items-center justify-center gap-1.5',\n 'rounded-lg font-medium transition-all cursor-pointer',\n sizeClasses[size],\n fullWidth ? 'w-full' : '',\n disabled\n ? 'bg-zinc-800 text-zinc-500 cursor-not-allowed'\n : variantClasses[variant],\n className,\n ].filter(Boolean).join(' ');\n\n if (href && !disabled) {\n return (\n <a href={href} className={classes}>\n {children}\n </a>\n );\n }\n\n return (\n <button disabled={disabled} className={classes} {...props}>\n {children}\n </button>\n );\n}\n","'use client';\n\nimport type { ReactNode, HTMLAttributes } from 'react';\n\nexport interface GlassCardProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n variant?: 'default' | 'subtle' | 'minimal';\n glow?: boolean;\n wave?: boolean;\n cornerFrame?: boolean;\n}\n\nconst variantClasses = {\n default: 'glass-card',\n subtle: 'glass-card-subtle',\n minimal: 'glass-card-minimal',\n} as const;\n\nexport function GlassCard({\n children,\n variant = 'default',\n glow = false,\n wave = false,\n cornerFrame = false,\n className = '',\n ...props\n}: GlassCardProps) {\n const classes = [\n variantClasses[variant],\n 'rounded-2xl',\n glow ? 'molten-card-glow' : '',\n wave ? 'molten-wave-card' : '',\n cornerFrame ? 'corner-frame' : '',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode, HTMLAttributes } from 'react';\n\nexport interface MoltenTextProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n as?: 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'p';\n animated?: boolean;\n}\n\nexport function MoltenText({\n children,\n as: Tag = 'span',\n animated = false,\n className = '',\n ...props\n}: MoltenTextProps) {\n const classes = [\n animated ? 'rainbow-text-animated' : 'molten-text',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <Tag className={classes} {...props}>\n {children}\n </Tag>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { GridMesh } from './GridMesh';\n\nexport interface PageProps {\n children: ReactNode;\n ptMobile?: number;\n ptDesktop?: number;\n pb?: number;\n px?: number;\n maxWidth?: string;\n centered?: boolean;\n showGrid?: boolean;\n nav?: ReactNode;\n overlay?: ReactNode;\n}\n\nexport function Page({\n children,\n ptMobile = 20,\n ptDesktop = 24,\n pb = 6,\n px = 6,\n maxWidth = 'max-w-6xl',\n centered = true,\n showGrid = true,\n nav,\n overlay,\n}: PageProps) {\n const [isDesktop, setIsDesktop] = useState(false);\n\n useEffect(() => {\n const handleResize = () => setIsDesktop(window.innerWidth >= 1024);\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const toRem = (units: number) => `${(units * 4) / 16}rem`;\n const paddingTop = isDesktop ? toRem(ptDesktop) : toRem(ptMobile);\n\n return (\n <main className=\"relative min-h-screen bg-black overflow-hidden\">\n {showGrid && (\n <div className=\"fixed inset-0 z-0\">\n <GridMesh />\n </div>\n )}\n\n <div className=\"relative z-10\">\n {nav}\n\n <div\n style={{\n paddingTop,\n paddingBottom: toRem(pb),\n paddingLeft: toRem(px),\n paddingRight: toRem(px),\n }}\n className={`min-h-screen ${centered ? 'flex flex-col justify-center' : ''}`}\n >\n <div className={`${maxWidth} mx-auto w-full`}>\n {children}\n </div>\n </div>\n </div>\n\n {overlay}\n\n <div className=\"fixed inset-0 pointer-events-none bg-gradient-radial from-transparent via-transparent to-black/40\" />\n </main>\n );\n}\n","'use client';\n\nimport { useState, useRef, useEffect, useCallback, forwardRef, type ReactNode } from 'react';\nimport gsap from 'gsap';\n\nexport interface NavLink {\n label: string;\n href: string;\n external?: boolean;\n}\n\nexport interface NavLinkGroup {\n title: string;\n links: NavLink[];\n}\n\nexport interface NavAction {\n icon: ReactNode;\n onClick?: () => void;\n href?: string;\n label?: string;\n}\n\nexport interface ProductNavProps {\n logo?: ReactNode;\n logoHref?: string;\n menuGroups?: NavLinkGroup[];\n leftExtra?: ReactNode;\n leftPanel?: ReactNode | ((onClose: () => void) => ReactNode);\n leftPanelOpen?: boolean;\n onLeftPanelChange?: (open: boolean) => void;\n rightAction?: NavAction;\n rightExtra?: ReactNode;\n xUrl?: string;\n communityLabel?: string;\n menuFooter?: ReactNode;\n className?: string;\n}\n\nconst BTN_SIZE = 40;\nconst BTN_BG = 'rgba(24, 24, 27, 0.9)';\n\nfunction NavIconButton({\n children,\n onClick,\n className = '',\n}: {\n children: ReactNode;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n}) {\n return (\n <button\n onClick={onClick}\n className={`relative flex items-center justify-center rounded-xl transition-all cursor-pointer rainbow-border-button text-white ${className}`}\n style={{\n width: BTN_SIZE,\n height: Math.round(BTN_SIZE * 1.1),\n background: BTN_BG,\n backdropFilter: 'blur(24px)',\n }}\n >\n {children}\n </button>\n );\n}\n\ninterface ExpandedMenuProps {\n menuGroups: NavLinkGroup[];\n xUrl: string;\n communityLabel: string;\n menuFooter?: ReactNode;\n onClose: () => void;\n}\n\nconst ExpandedMenu = forwardRef<HTMLDivElement, ExpandedMenuProps>(\n ({ menuGroups, xUrl, communityLabel, menuFooter, onClose }, ref) => {\n const colCount = menuGroups.length;\n\n return (\n <div\n ref={ref}\n className=\"fixed top-0 left-0 right-0 backdrop-blur-xl\"\n style={{ transform: 'translateY(-100%)', visibility: 'hidden', zIndex: 40, background: 'rgba(0, 0, 0, 0.95)' }}\n >\n <div className=\"menu-content p-8 pt-20 mx-auto\" style={{ maxWidth: colCount >= 3 ? '48rem' : '42rem' }}>\n <div\n className=\"grid gap-8\"\n style={{ gridTemplateColumns: `repeat(${colCount}, 1fr)` }}\n >\n {menuGroups.map((group) => (\n <div key={group.title} className=\"space-y-1\">\n <span className=\"text-[10px] tracking-[0.2em] text-zinc-500 uppercase font-medium block mb-4\">\n {group.title}\n </span>\n {group.links.map((link) => (\n <a\n key={link.href}\n href={link.href}\n target={link.external ? '_blank' : undefined}\n rel={link.external ? 'noopener noreferrer' : undefined}\n onClick={onClose}\n className=\"block text-2xl font-light text-white hover:text-zinc-300 transition-colors py-1\"\n >\n {link.label}\n </a>\n ))}\n </div>\n ))}\n\n </div>\n <div className=\"mt-6 pt-6 flex items-center justify-between\" style={{ borderTop: '1px solid rgba(255,255,255,0.06)' }}>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] tracking-[0.2em] text-zinc-500 uppercase font-medium\">\n {communityLabel}\n </span>\n <a\n href={xUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"w-8 h-8 rounded-full bg-zinc-800 flex items-center justify-center text-white hover:bg-zinc-700 transition-colors\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n </a>\n </div>\n {menuFooter && (\n <div>{menuFooter}</div>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nExpandedMenu.displayName = 'ExpandedMenu';\n\nexport function ProductNav({\n logo,\n logoHref = '/',\n menuGroups = [],\n leftExtra,\n leftPanel,\n leftPanelOpen = false,\n onLeftPanelChange,\n rightAction,\n rightExtra,\n xUrl = 'https://x.com/moltenagentic',\n communityLabel = 'Community',\n menuFooter,\n className = '',\n}: ProductNavProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [leftPanelVisible, setLeftPanelVisible] = useState(false);\n const isLeftOpen = leftPanelOpen;\n const setIsLeftOpen = useCallback((v: boolean | ((prev: boolean) => boolean)) => {\n const next = typeof v === 'function' ? v(leftPanelOpen) : v;\n onLeftPanelChange?.(next);\n }, [leftPanelOpen, onLeftPanelChange]);\n const navBarRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const leftPanelRef = useRef<HTMLDivElement>(null);\n const isAnimating = useRef(false);\n\n const hasMenu = menuGroups.length > 0;\n\n const slideOpen = useCallback((panelRef: React.RefObject<HTMLDivElement | null>) => {\n if (isAnimating.current || !navBarRef.current || !panelRef.current) return;\n isAnimating.current = true;\n\n const tl = gsap.timeline({\n onComplete: () => { isAnimating.current = false; },\n });\n\n gsap.set(panelRef.current, { visibility: 'visible' });\n\n tl.to(navBarRef.current.querySelectorAll('.nav-content'), {\n opacity: 0, duration: 0.15,\n });\n\n tl.to(panelRef.current, {\n y: 0, duration: 0.4, ease: 'power3.out',\n }, '-=0.1');\n\n tl.to(panelRef.current.querySelectorAll('.menu-content > div'), {\n opacity: 1, y: 0, duration: 0.3, stagger: 0.05,\n }, '-=0.2');\n }, []);\n\n const slideClose = useCallback((panelRef: React.RefObject<HTMLDivElement | null>, onDone?: () => void) => {\n if (isAnimating.current || !navBarRef.current || !panelRef.current) return;\n isAnimating.current = true;\n\n const panel = panelRef.current;\n const tl = gsap.timeline({\n onComplete: () => {\n isAnimating.current = false;\n gsap.set(panel, { visibility: 'hidden', y: '-100%' });\n onDone?.();\n },\n });\n\n tl.to(panel.querySelectorAll('.menu-content > div'), {\n opacity: 0, y: -10, duration: 0.2, stagger: 0.03,\n });\n\n tl.to(panel, {\n y: '-100%', duration: 0.35, ease: 'power3.in',\n }, '-=0.1');\n\n tl.to(navBarRef.current.querySelectorAll('.nav-content'), {\n opacity: 1, duration: 0.2,\n }, '-=0.15');\n }, []);\n\n useEffect(() => {\n if (isOpen) slideOpen(menuRef);\n else slideClose(menuRef);\n }, [isOpen, slideOpen, slideClose]);\n\n useEffect(() => {\n if (isLeftOpen) {\n setLeftPanelVisible(true);\n if (isOpen) setIsOpen(false);\n slideOpen(leftPanelRef);\n } else {\n slideClose(leftPanelRef, () => setLeftPanelVisible(false));\n }\n }, [isLeftOpen, slideOpen, slideClose]);\n\n const toggleMenu = useCallback(() => {\n if (isLeftOpen) setIsLeftOpen(false);\n setIsOpen(v => !v);\n }, [isLeftOpen]);\n\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n if (isOpen) setIsOpen(false);\n if (isLeftOpen) setIsLeftOpen(false);\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, isLeftOpen]);\n\n const anyOpen = isOpen || isLeftOpen;\n\n return (\n <nav className={`relative z-50 w-full max-w-2xl mx-auto px-4 ${className}`}>\n <div className=\"relative\">\n <div style={{ position: 'absolute', left: '8px', top: '50%', transform: 'translateY(-50%)', display: 'flex', alignItems: 'center', gap: '20px', zIndex: leftPanelVisible ? 30 : 60 }}>\n {leftExtra}\n {hasMenu && (\n <NavIconButton onClick={toggleMenu}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '5px' }}>\n <span style={{\n display: 'block', width: '16px', height: '2px', background: 'currentColor',\n transition: 'all 0.2s', transformOrigin: 'center',\n transform: isOpen ? 'translateY(7px) rotate(45deg)' : 'none',\n }} />\n <span style={{\n display: 'block', width: '16px', height: '2px', background: 'currentColor',\n transition: 'all 0.2s',\n opacity: isOpen ? 0 : 1,\n }} />\n <span style={{\n display: 'block', width: '16px', height: '2px', background: 'currentColor',\n transition: 'all 0.2s', transformOrigin: 'center',\n transform: isOpen ? 'translateY(-7px) rotate(-45deg)' : 'none',\n }} />\n </div>\n </NavIconButton>\n )}\n </div>\n\n <div\n ref={navBarRef}\n className=\"relative px-2 flex items-center justify-between\"\n >\n <div className=\"nav-content\" style={{ width: '56px' }} />\n\n <div className=\"nav-content absolute left-1/2 -translate-x-1/2\">\n <a href={logoHref} className=\"block hover:opacity-80 transition-opacity\">\n {logo ?? (\n <span style={{ fontSize: '18px', fontWeight: 900, color: '#fff' }}>M</span>\n )}\n </a>\n </div>\n\n <div className=\"nav-content\" style={{ display: 'flex', alignItems: 'center', gap: '20px' }}>\n {rightAction && (\n rightAction.href ? (\n <a href={rightAction.href} title={rightAction.label}>\n <NavIconButton>\n {rightAction.icon}\n </NavIconButton>\n </a>\n ) : (\n <NavIconButton onClick={rightAction.onClick}>\n {rightAction.icon}\n </NavIconButton>\n )\n )}\n {rightExtra}\n </div>\n </div>\n\n {hasMenu && (\n <ExpandedMenu\n ref={menuRef}\n menuGroups={menuGroups}\n xUrl={xUrl}\n communityLabel={communityLabel}\n menuFooter={menuFooter}\n onClose={() => setIsOpen(false)}\n />\n )}\n\n {leftPanel && (\n <div\n ref={leftPanelRef}\n className=\"fixed top-0 left-0 right-0 backdrop-blur-xl\"\n style={{ transform: 'translateY(-100%)', visibility: 'hidden', zIndex: 40, background: 'rgba(0, 0, 0, 0.95)' }}\n >\n <div className=\"menu-content p-8 pt-20 max-w-2xl mx-auto\">\n {typeof leftPanel === 'function' ? leftPanel(() => setIsLeftOpen(false)) : leftPanel}\n </div>\n </div>\n )}\n </div>\n\n {anyOpen && (\n <div\n className=\"fixed inset-0\"\n style={{ background: 'rgba(0, 0, 0, 0.5)', zIndex: 30 }}\n onClick={() => { setIsOpen(false); setIsLeftOpen(false); }}\n />\n )}\n </nav>\n );\n}\n","'use client';\n\nimport { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from 'react';\n\nexport type MoltenTheme = 'day' | 'night';\n\ninterface MoltenThemeContextValue {\n theme: MoltenTheme;\n setTheme: (theme: MoltenTheme) => void;\n toggle: () => void;\n}\n\nconst MoltenThemeContext = createContext<MoltenThemeContextValue>({\n theme: 'day',\n setTheme: () => {},\n toggle: () => {},\n});\n\nconst STORAGE_KEY = 'molten-theme';\n\nexport function MoltenThemeProvider({ children, defaultTheme = 'day' }: { children: ReactNode; defaultTheme?: MoltenTheme }) {\n const [theme, setThemeState] = useState<MoltenTheme>(defaultTheme);\n\n useEffect(() => {\n const stored = localStorage.getItem(STORAGE_KEY) as MoltenTheme | null;\n if (stored === 'day' || stored === 'night') {\n setThemeState(stored);\n document.documentElement.dataset.theme = stored;\n } else {\n document.documentElement.dataset.theme = defaultTheme;\n }\n }, [defaultTheme]);\n\n const setTheme = useCallback((next: MoltenTheme) => {\n setThemeState(next);\n document.documentElement.dataset.theme = next;\n localStorage.setItem(STORAGE_KEY, next);\n }, []);\n\n const toggle = useCallback(() => {\n setTheme(theme === 'day' ? 'night' : 'day');\n }, [theme, setTheme]);\n\n return (\n <MoltenThemeContext.Provider value={{ theme, setTheme, toggle }}>\n {children}\n </MoltenThemeContext.Provider>\n );\n}\n\nexport function useMoltenTheme() {\n return useContext(MoltenThemeContext);\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { TechGrid } from './TechGrid';\nimport { EmberField } from './EmberField';\nimport { useMoltenTheme } from '../theme';\n\nexport interface HalfHeroProps {\n children: ReactNode;\n nav?: ReactNode;\n className?: string;\n height?: string;\n fieldVariant?: 'default' | 'intense' | 'subtle' | 'vignette';\n showEmbers?: boolean;\n emberCount?: number;\n showGrid?: boolean;\n}\n\nconst fieldClasses = {\n default: 'molten-field',\n intense: 'molten-field-intense',\n subtle: 'molten-field-subtle',\n vignette: 'molten-field-vignette',\n} as const;\n\nexport function HalfHero({\n children,\n nav,\n className = '',\n height = '50vh',\n fieldVariant = 'default',\n showEmbers = true,\n emberCount = 40,\n showGrid = true,\n}: HalfHeroProps) {\n const { theme } = useMoltenTheme();\n const isNight = theme === 'night';\n const gridTone = isNight ? 'molten' : 'dark';\n const emberTone = isNight ? 'molten' : 'dark';\n\n return (\n <div\n className={`relative overflow-hidden flex flex-col ${fieldClasses[fieldVariant]} ${className}`}\n style={{ minHeight: height, color: isNight ? '#fff' : '#000' }}\n >\n {showGrid && (\n <TechGrid tone={gridTone} id=\"hero\" className=\"absolute inset-0 w-full h-full\" style={{ zIndex: 3 }} />\n )}\n {showEmbers && (\n <EmberField tone={emberTone} count={emberCount} style={{ zIndex: 5 }} />\n )}\n\n {nav && <div className=\"relative pt-4 he-nav-spacing\" style={{ zIndex: 30 }}>{nav}</div>}\n\n <div className=\"relative flex-1 flex flex-col items-center px-4 he-content-spacing\" style={{ zIndex: 10 }}>\n <div style={{ flex: 1 }} />\n {children}\n <div style={{ flex: 1 }} />\n </div>\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\nexport interface ProductShellProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function ProductShell({\n children,\n className = '',\n}: ProductShellProps) {\n return (\n <main className={`relative min-h-screen bg-black text-white ${className}`}>\n {children}\n </main>\n );\n}\n","'use client';\n\nimport { useMoltenTheme } from '../theme';\n\nexport function ThemeToggle() {\n const { theme, toggle } = useMoltenTheme();\n const isNight = theme === 'night';\n const color = isNight ? '#71717a' : '#fff';\n\n return (\n <button\n onClick={toggle}\n className=\"relative flex items-center justify-center rounded-xl cursor-pointer rainbow-border-button text-white\"\n style={{\n width: 40,\n height: 44,\n background: 'rgba(24, 24, 27, 0.9)',\n backdropFilter: 'blur(24px)',\n }}\n >\n {isNight ? (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n ) : (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v3M12 19v3M4.22 4.22l2.12 2.12M17.66 17.66l2.12 2.12M2 12h3M19 12h3M4.22 19.78l2.12-2.12M17.66 6.34l2.12-2.12\" />\n </svg>\n )}\n </button>\n );\n}\n","'use client';\n\nimport { useMoltenTheme } from '../theme';\n\nexport interface LangButtonProps {\n locale: string;\n onClick?: () => void;\n isOpen?: boolean;\n}\n\nexport function LangButton({ locale, onClick, isOpen = false }: LangButtonProps) {\n const { theme } = useMoltenTheme();\n const color = theme === 'night' ? '#71717a' : '#fff';\n\n return (\n <button\n onClick={onClick}\n className=\"relative flex items-center justify-center rounded-xl cursor-pointer rainbow-border-button text-white\"\n style={{\n width: 40,\n height: 44,\n background: 'rgba(24, 24, 27, 0.9)',\n backdropFilter: 'blur(24px)',\n }}\n >\n {isOpen ? (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '5px' }}>\n <span style={{ display: 'block', width: '16px', height: '2px', background: color, transformOrigin: 'center', transform: 'translateY(7px) rotate(45deg)' }} />\n <span style={{ display: 'block', width: '16px', height: '2px', background: color, opacity: 0 }} />\n <span style={{ display: 'block', width: '16px', height: '2px', background: color, transformOrigin: 'center', transform: 'translateY(-7px) rotate(-45deg)' }} />\n </div>\n ) : (\n <span style={{ fontSize: '13px', fontWeight: 700, color, letterSpacing: '0.05em' }}>\n {locale === 'zh' ? 'CN' : locale.toUpperCase()}\n </span>\n )}\n </button>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\nexport interface HeroCardProps {\n label: string;\n title: string;\n code?: string;\n description?: string;\n accentColor?: string;\n actionText?: string;\n onClick?: () => void;\n children?: ReactNode;\n}\n\nexport function HeroCard({\n label,\n title,\n code,\n description,\n accentColor = '#00e5ff',\n actionText,\n onClick,\n children,\n}: HeroCardProps) {\n return (\n <div\n onClick={onClick}\n className={`group relative p-5 sm:p-6 rounded-2xl glass-card molten-wave-card corner-frame w-full max-w-lg ${onClick ? 'cursor-pointer' : ''}`}\n >\n <span className=\"portal-label font-mono text-[11px] tracking-widest\" style={{ color: accentColor }}>\n // {label}\n </span>\n <h2 className=\"text-xl sm:text-2xl font-bold mt-2 text-white molten-wave-text\">\n {title}\n </h2>\n {code && (\n <div\n className=\"mt-4 rounded-lg p-3\"\n style={{\n background: 'rgba(0, 0, 0, 0.4)',\n border: '1px solid rgba(255, 255, 255, 0.06)',\n }}\n >\n <code className=\"text-xs sm:text-sm font-mono break-all\" style={{ color: accentColor }}>\n {code}\n </code>\n </div>\n )}\n {description && (\n <p className=\"text-xs text-zinc-500 mt-3 font-light leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n {actionText && (\n <div className=\"mt-4 flex items-center justify-between\">\n <span className=\"text-xs text-zinc-500 molten-wave-text transition-all duration-300\">\n {actionText}\n </span>\n <span className=\"text-zinc-600 group-hover:translate-x-1.5 transition-all duration-300 text-lg molten-wave-text\">\n →\n </span>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, type RefObject } from 'react';\nimport gsap from 'gsap';\n\nexport function usePulseLabels(ref: RefObject<HTMLElement | null>, selector = '.portal-label', delay = 2.2) {\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const labels = el.querySelectorAll(selector);\n if (!labels.length) return;\n\n const pulse = gsap.timeline({ repeat: -1, delay });\n labels.forEach((label) => {\n pulse\n .to(label, { opacity: 0.15, duration: 0.8, ease: 'power1.inOut' })\n .to(label, { opacity: 1, duration: 0.8, ease: 'power1.inOut' });\n });\n\n return () => { pulse.kill(); };\n }, [ref, selector, delay]);\n}\n"],"mappings":"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","names":["jsx","useRef","useEffect","jsx","jsxs","useEffect","useRef","jsx","jsx","jsx","jsx","jsx","variantClasses","jsx","useEffect","jsx","jsxs","useEffect","useState","useRef","useEffect","jsx","jsxs","useState","useEffect","useCallback","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","useEffect","gsap"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/TechGrid.tsx","../src/components/GridMesh.tsx","../src/components/LavaScene.tsx","../src/components/EmberField.tsx","../src/components/Vignette.tsx","../src/components/SphereGlow.tsx","../src/components/MoltenButton.tsx","../src/components/GlassCard.tsx","../src/components/MoltenText.tsx","../src/components/Page.tsx","../src/components/ProductNav.tsx","../src/theme/MoltenThemeProvider.tsx","../src/components/HalfHero.tsx","../src/components/ProductShell.tsx","../src/components/ThemeToggle.tsx","../src/components/LangButton.tsx","../src/components/HeroCard.tsx","../src/hooks/usePulseLabels.ts"],"sourcesContent":["'use client';\n\nconst GRID = 160;\nconst HALF = GRID / 2;\nconst ARM = 10;\n\nexport type TechGridTone = 'molten' | 'dark' | 'neon';\n\nconst TONES = {\n molten: {\n line: 'rgba(200,70,35,0.14)',\n cross: 'rgba(200,70,35,0.45)',\n dot: 'rgba(200,70,35,0.25)',\n },\n dark: {\n line: 'rgba(0,0,0,0.18)',\n cross: 'rgba(0,0,0,0.4)',\n dot: 'rgba(0,0,0,0.22)',\n },\n neon: {\n line: 'rgba(255,51,102,0.14)',\n cross: 'rgba(255,51,102,0.35)',\n dot: 'rgba(255,51,102,0.2)',\n },\n} as const;\n\nexport interface TechGridProps {\n className?: string;\n zIndex?: number;\n tone?: TechGridTone;\n /** Unique id suffix — required when rendering multiple grids on the same page */\n id?: string;\n style?: React.CSSProperties;\n}\n\nexport function TechGrid({\n className = '',\n zIndex = 3,\n tone = 'molten',\n id = '',\n style,\n}: TechGridProps) {\n const { line, cross, dot } = TONES[tone];\n const gridId = `tech-grid${id ? `-${id}` : ''}`;\n const crossId = `crosshairs${id ? `-${id}` : ''}`;\n\n return (\n <svg\n className={`pointer-events-none ${className}`}\n style={{ zIndex, ...style }}\n >\n <defs>\n <pattern\n id={gridId}\n width={GRID}\n height={GRID}\n patternUnits=\"userSpaceOnUse\"\n >\n <line x1=\"0\" y1=\"0\" x2={GRID} y2=\"0\" stroke={line} strokeWidth=\"0.5\" />\n <line x1=\"0\" y1=\"0\" x2=\"0\" y2={GRID} stroke={line} strokeWidth=\"0.5\" />\n <circle cx={HALF} cy={0} r=\"1.5\" fill={dot} />\n <circle cx={0} cy={HALF} r=\"1.5\" fill={dot} />\n <circle cx={HALF} cy={HALF} r=\"1.5\" fill={dot} />\n </pattern>\n\n <pattern\n id={crossId}\n width={GRID}\n height={GRID}\n patternUnits=\"userSpaceOnUse\"\n patternTransform={`translate(${-HALF},${-HALF})`}\n >\n <line\n x1={HALF - ARM} y1={HALF} x2={HALF + ARM} y2={HALF}\n stroke={cross} strokeWidth=\"1\"\n />\n <line\n x1={HALF} y1={HALF - ARM} x2={HALF} y2={HALF + ARM}\n stroke={cross} strokeWidth=\"1\"\n />\n </pattern>\n </defs>\n\n <rect width=\"100%\" height=\"100%\" fill={`url(#${gridId})`} />\n <rect width=\"100%\" height=\"100%\" fill={`url(#${crossId})`} />\n </svg>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nexport interface GridMeshProps {\n className?: string;\n opacity?: number;\n gridSize?: number;\n strokeColor?: string;\n}\n\nexport function GridMesh({\n className = '',\n opacity = 0.6,\n gridSize = 50,\n strokeColor = 'rgba(255, 255, 255, 0.03)',\n}: GridMeshProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n let animationFrameId: number;\n let time = 0;\n\n const resize = () => {\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n };\n\n resize();\n window.addEventListener('resize', resize);\n\n const draw = () => {\n if (!ctx || !canvas) return;\n\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n const cols = Math.ceil(canvas.width / gridSize) + 1;\n const rows = Math.ceil(canvas.height / gridSize) + 1;\n\n time += 0.005;\n\n ctx.strokeStyle = strokeColor;\n ctx.lineWidth = 1;\n\n for (let i = 0; i < rows; i++) {\n ctx.beginPath();\n for (let j = 0; j < cols; j++) {\n const x = j * gridSize;\n const y =\n i * gridSize +\n Math.sin(time + j * 0.1) * 10 +\n Math.cos(time * 0.5 + i * 0.1) * 8;\n\n if (j === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.stroke();\n }\n\n for (let j = 0; j < cols; j++) {\n ctx.beginPath();\n for (let i = 0; i < rows; i++) {\n const x =\n j * gridSize +\n Math.sin(time + i * 0.1) * 10 +\n Math.cos(time * 0.7 + j * 0.1) * 8;\n const y = i * gridSize;\n\n if (i === 0) ctx.moveTo(x, y);\n else ctx.lineTo(x, y);\n }\n ctx.stroke();\n }\n\n animationFrameId = requestAnimationFrame(draw);\n };\n\n draw();\n\n return () => {\n window.removeEventListener('resize', resize);\n cancelAnimationFrame(animationFrameId);\n };\n }, [gridSize, strokeColor]);\n\n return (\n <canvas\n ref={canvasRef}\n className={`absolute inset-0 w-full h-full pointer-events-none ${className}`}\n style={{ opacity }}\n />\n );\n}\n","'use client';\n\nimport { useRef, useMemo, useEffect } from 'react';\nimport { Canvas, useFrame } from '@react-three/fiber';\nimport * as THREE from 'three';\n\nconst noiseGLSL = /* glsl */ `\nvec3 mod289(vec3 x){return x-floor(x*(1.0/289.0))*289.0;}\nvec4 mod289(vec4 x){return x-floor(x*(1.0/289.0))*289.0;}\nvec4 permute(vec4 x){return mod289(((x*34.0)+10.0)*x);}\nvec4 taylorInvSqrt(vec4 r){return 1.79284291400159-0.85373472095314*r;}\n\nfloat snoise(vec3 v){\n const vec2 C=vec2(1.0/6.0,1.0/3.0);\n const vec4 D=vec4(0.0,0.5,1.0,2.0);\n vec3 i=floor(v+dot(v,C.yyy));\n vec3 x0=v-i+dot(i,C.xxx);\n vec3 g=step(x0.yzx,x0.xyz);\n vec3 l=1.0-g;\n vec3 i1=min(g.xyz,l.zxy);\n vec3 i2=max(g.xyz,l.zxy);\n vec3 x1=x0-i1+C.xxx;\n vec3 x2=x0-i2+C.yyy;\n vec3 x3=x0-D.yyy;\n i=mod289(i);\n vec4 p=permute(permute(permute(\n i.z+vec4(0.0,i1.z,i2.z,1.0))\n +i.y+vec4(0.0,i1.y,i2.y,1.0))\n +i.x+vec4(0.0,i1.x,i2.x,1.0));\n float n_=0.142857142857;\n vec3 ns=n_*D.wyz-D.xzx;\n vec4 j=p-49.0*floor(p*ns.z*ns.z);\n vec4 x_=floor(j*ns.z);\n vec4 y_=floor(j-7.0*x_);\n vec4 x=x_*ns.x+ns.yyyy;\n vec4 y=y_*ns.x+ns.yyyy;\n vec4 h=1.0-abs(x)-abs(y);\n vec4 b0=vec4(x.xy,y.xy);\n vec4 b1=vec4(x.zw,y.zw);\n vec4 s0=floor(b0)*2.0+1.0;\n vec4 s1=floor(b1)*2.0+1.0;\n vec4 sh=-step(h,vec4(0.0));\n vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;\n vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;\n vec3 p0=vec3(a0.xy,h.x);\n vec3 p1=vec3(a0.zw,h.y);\n vec3 p2=vec3(a1.xy,h.z);\n vec3 p3=vec3(a1.zw,h.w);\n vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));\n p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;\n vec4 m=max(0.5-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);\n m=m*m;\n return 105.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));\n}\n`;\n\nconst vertexShader = /* glsl */ `\nuniform float uTime;\n${noiseGLSL}\nvarying float vDisplacement;\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\n\nvoid main() {\n float n1 = snoise(position * 1.5 + uTime * 0.15) * 0.4;\n float n2 = snoise(position * 3.0 + uTime * 0.3) * 0.2;\n float n3 = snoise(position * 6.0 - uTime * 0.2) * 0.1;\n float displacement = n1 + n2 + n3;\n\n vec3 newPos = position + normal * displacement;\n vDisplacement = displacement;\n vNormal = normalize(normalMatrix * normal);\n vWorldPosition = (modelMatrix * vec4(newPos, 1.0)).xyz;\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4(newPos, 1.0);\n}\n`;\n\nconst fragmentShader = /* glsl */ `\nuniform float uTime;\nvarying float vDisplacement;\nvarying vec3 vNormal;\nvarying vec3 vWorldPosition;\n\nvoid main() {\n float d = smoothstep(-0.5, 0.7, vDisplacement);\n\n vec3 c0 = vec3(0.337, 0.055, 0.141);\n vec3 c1 = vec3(0.671, 0.106, 0.114);\n vec3 c2 = vec3(0.855, 0.220, 0.086);\n vec3 c3 = vec3(0.969, 0.500, 0.055);\n vec3 c4 = vec3(0.984, 0.624, 0.051);\n vec3 c5 = vec3(1.0, 0.95, 0.85);\n\n vec3 color;\n if (d < 0.15) color = mix(c0, c1, d / 0.15);\n else if (d < 0.35) color = mix(c1, c2, (d - 0.15) / 0.2);\n else if (d < 0.55) color = mix(c2, c3, (d - 0.35) / 0.2);\n else if (d < 0.75) color = mix(c3, c4, (d - 0.55) / 0.2);\n else color = mix(c4, c5, (d - 0.75) / 0.25);\n\n vec3 viewDir = normalize(cameraPosition - vWorldPosition);\n float fresnel = pow(1.0 - max(dot(vNormal, viewDir), 0.0), 3.0);\n color += c4 * fresnel * 0.5;\n\n color *= 1.0 + 0.06 * sin(uTime * 0.7);\n\n gl_FragColor = vec4(color, 1.0);\n}\n`;\n\nfunction LavaSphere({ yOffset = 0.6 }: { yOffset?: number }) {\n const meshRef = useRef<THREE.Mesh>(null);\n const matRef = useRef<THREE.ShaderMaterial>(null);\n const mouse = useRef({ x: 0, y: 0 });\n\n useEffect(() => {\n const onMove = (e: MouseEvent) => {\n mouse.current.x = (e.clientX / window.innerWidth - 0.5) * 2;\n mouse.current.y = -(e.clientY / window.innerHeight - 0.5) * 2;\n };\n window.addEventListener('mousemove', onMove);\n return () => window.removeEventListener('mousemove', onMove);\n }, []);\n\n const uniforms = useMemo(() => ({ uTime: { value: 0 } }), []);\n\n useFrame(({ clock }) => {\n if (matRef.current) matRef.current.uniforms.uTime.value = clock.elapsedTime;\n if (meshRef.current) {\n const m = meshRef.current;\n m.rotation.x = THREE.MathUtils.lerp(m.rotation.x, mouse.current.y * 0.15, 0.02);\n m.rotation.y = THREE.MathUtils.lerp(\n m.rotation.y,\n mouse.current.x * 0.25 + clock.elapsedTime * 0.06,\n 0.02,\n );\n }\n });\n\n return (\n <mesh ref={meshRef} position={[0, yOffset, 0]}>\n <icosahedronGeometry args={[1.5, 64]} />\n <shaderMaterial\n ref={matRef}\n vertexShader={vertexShader}\n fragmentShader={fragmentShader}\n uniforms={uniforms}\n />\n </mesh>\n );\n}\n\nfunction EmberParticles() {\n const ref = useRef<THREE.Points>(null);\n const count = 180;\n\n const { positions, velocities } = useMemo(() => {\n const pos = new Float32Array(count * 3);\n const vel = new Float32Array(count * 3);\n for (let i = 0; i < count; i++) {\n const i3 = i * 3;\n pos[i3] = (Math.random() - 0.5) * 10;\n pos[i3 + 1] = Math.random() * 8 - 4;\n pos[i3 + 2] = (Math.random() - 0.5) * 6;\n vel[i3] = (Math.random() - 0.5) * 0.003;\n vel[i3 + 1] = Math.random() * 0.006 + 0.002;\n vel[i3 + 2] = (Math.random() - 0.5) * 0.002;\n }\n return { positions: pos, velocities: vel };\n }, []);\n\n const sizes = useMemo(() => {\n const s = new Float32Array(count);\n for (let i = 0; i < count; i++) s[i] = Math.random() * 0.04 + 0.01;\n return s;\n }, []);\n\n useFrame(() => {\n if (!ref.current) return;\n const arr = ref.current.geometry.attributes.position.array as Float32Array;\n for (let i = 0; i < count; i++) {\n const i3 = i * 3;\n arr[i3] += velocities[i3];\n arr[i3 + 1] += velocities[i3 + 1];\n arr[i3 + 2] += velocities[i3 + 2];\n if (arr[i3 + 1] > 5) {\n arr[i3] = (Math.random() - 0.5) * 10;\n arr[i3 + 1] = -5;\n arr[i3 + 2] = (Math.random() - 0.5) * 6;\n }\n }\n ref.current.geometry.attributes.position.needsUpdate = true;\n });\n\n return (\n <points ref={ref}>\n <bufferGeometry>\n <bufferAttribute attach=\"attributes-position\" args={[positions, 3]} />\n <bufferAttribute attach=\"attributes-size\" args={[sizes, 1]} />\n </bufferGeometry>\n <pointsMaterial size={0.035} color=\"#fb9f0d\" transparent opacity={0.5} sizeAttenuation />\n </points>\n );\n}\n\nexport interface LavaSceneProps {\n centered?: boolean;\n}\n\nexport function LavaScene({ centered = false }: LavaSceneProps) {\n const yOffset = centered ? 0 : 0.6;\n\n return (\n <Canvas\n camera={{ position: [0, 0, 5], fov: 45 }}\n gl={{ antialias: true, alpha: true }}\n style={{ background: 'transparent' }}\n >\n <ambientLight intensity={0.08} />\n <pointLight position={[5, 5, 5]} intensity={0.5} color=\"#fb9f0d\" />\n <pointLight position={[-5, -3, 3]} intensity={0.3} color=\"#ab1b1d\" />\n <LavaSphere yOffset={yOffset} />\n <EmberParticles />\n </Canvas>\n );\n}\n","'use client';\n\nimport { useEffect, useRef } from 'react';\n\nexport type EmberTone = 'molten' | 'dark' | 'neon-pink';\n\nexport interface EmberFieldProps {\n tone?: EmberTone;\n count?: number;\n className?: string;\n style?: React.CSSProperties;\n}\n\ninterface Particle {\n x: number;\n y: number;\n vx: number;\n vy: number;\n size: number;\n opacity: number;\n drift: number;\n}\n\nconst COLORS = {\n molten: [\n [251, 159, 13],\n [247, 128, 14],\n [237, 99, 20],\n [218, 56, 22],\n ],\n dark: [\n [0, 0, 0],\n [20, 8, 2],\n [40, 16, 4],\n [10, 4, 1],\n ],\n 'neon-pink': [\n [255, 51, 102],\n [220, 40, 80],\n [255, 80, 130],\n [200, 30, 70],\n ],\n} as const;\n\nfunction randomColor(tone: EmberTone): [number, number, number] {\n const palette = COLORS[tone];\n return [...palette[Math.floor(Math.random() * palette.length)]] as [number, number, number];\n}\n\nfunction createParticle(w: number, h: number, tone: EmberTone, fromBottom = false): Particle {\n return {\n x: Math.random() * w,\n y: fromBottom ? h + Math.random() * 40 : Math.random() * h,\n vx: (Math.random() - 0.5) * 0.3,\n vy: -(Math.random() * 0.6 + 0.2),\n size: Math.random() * 2.5 + 0.8,\n opacity: Math.random() * 0.5 + 0.2,\n drift: (Math.random() - 0.5) * 0.002,\n };\n}\n\nexport function EmberField({\n tone = 'molten',\n count = 60,\n className = '',\n style,\n}: EmberFieldProps) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n let animId: number;\n let particles: (Particle & { color: [number, number, number] })[] = [];\n\n const resize = () => {\n canvas.width = canvas.offsetWidth * window.devicePixelRatio;\n canvas.height = canvas.offsetHeight * window.devicePixelRatio;\n ctx.scale(window.devicePixelRatio, window.devicePixelRatio);\n };\n\n const init = () => {\n resize();\n const w = canvas.offsetWidth;\n const h = canvas.offsetHeight;\n particles = Array.from({ length: count }, () => ({\n ...createParticle(w, h, tone),\n color: randomColor(tone),\n }));\n };\n\n init();\n window.addEventListener('resize', init);\n\n const draw = () => {\n const w = canvas.offsetWidth;\n const h = canvas.offsetHeight;\n ctx.clearRect(0, 0, w, h);\n\n for (const p of particles) {\n p.x += p.vx;\n p.y += p.vy;\n p.vx += p.drift;\n\n if (p.y < -10 || p.x < -10 || p.x > w + 10) {\n Object.assign(p, createParticle(w, h, tone, true));\n p.color = randomColor(tone);\n }\n\n const [r, g, b] = p.color;\n ctx.beginPath();\n ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\n ctx.fillStyle = `rgba(${r},${g},${b},${p.opacity})`;\n ctx.fill();\n }\n\n animId = requestAnimationFrame(draw);\n };\n\n draw();\n\n return () => {\n window.removeEventListener('resize', init);\n cancelAnimationFrame(animId);\n };\n }, [tone, count]);\n\n return (\n <canvas\n ref={canvasRef}\n className={`absolute inset-0 w-full h-full pointer-events-none ${className}`}\n style={style}\n />\n );\n}\n","'use client';\n\nexport interface VignetteProps {\n className?: string;\n zIndex?: number;\n}\n\nexport function Vignette({ className = '', zIndex = 2 }: VignetteProps) {\n return (\n <div\n className={`fixed inset-0 pointer-events-none vignette ${className}`}\n style={{ zIndex }}\n />\n );\n}\n","'use client';\n\nexport interface SphereGlowProps {\n className?: string;\n zIndex?: number;\n}\n\nexport function SphereGlow({ className = '', zIndex = 1 }: SphereGlowProps) {\n return (\n <div\n className={`fixed inset-0 pointer-events-none ${className}`}\n style={{ zIndex }}\n >\n <div className=\"sphere-glow\" />\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode, ButtonHTMLAttributes } from 'react';\n\nexport interface MoltenButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n children: ReactNode;\n href?: string;\n variant?: 'molten' | 'outline' | 'ghost';\n size?: 'xs' | 'sm' | 'md' | 'lg';\n fullWidth?: boolean;\n}\n\nconst sizeClasses = {\n xs: 'px-2.5 py-1 text-[10px]',\n sm: 'px-3 py-1.5 text-xs',\n md: 'px-4 py-2 text-sm',\n lg: 'px-8 py-4 text-sm',\n} as const;\n\nconst variantClasses = {\n molten: 'bg-black text-white hover:bg-zinc-900 rainbow-border-button',\n outline: 'bg-transparent border border-zinc-700 text-white hover:bg-zinc-800',\n ghost: 'bg-transparent text-white hover:bg-zinc-800/50',\n} as const;\n\nexport function MoltenButton({\n children,\n href,\n variant = 'molten',\n size = 'sm',\n fullWidth = false,\n disabled = false,\n className = '',\n ...props\n}: MoltenButtonProps) {\n const classes = [\n 'relative inline-flex items-center justify-center gap-1.5',\n 'rounded-lg font-medium transition-all cursor-pointer',\n sizeClasses[size],\n fullWidth ? 'w-full' : '',\n disabled\n ? 'bg-zinc-800 text-zinc-500 cursor-not-allowed'\n : variantClasses[variant],\n className,\n ].filter(Boolean).join(' ');\n\n if (href && !disabled) {\n return (\n <a href={href} className={classes}>\n {children}\n </a>\n );\n }\n\n return (\n <button disabled={disabled} className={classes} {...props}>\n {children}\n </button>\n );\n}\n","'use client';\n\nimport type { ReactNode, HTMLAttributes } from 'react';\n\nexport interface GlassCardProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n variant?: 'default' | 'subtle' | 'minimal';\n glow?: boolean;\n wave?: boolean;\n cornerFrame?: boolean;\n}\n\nconst variantClasses = {\n default: 'glass-card',\n subtle: 'glass-card-subtle',\n minimal: 'glass-card-minimal',\n} as const;\n\nexport function GlassCard({\n children,\n variant = 'default',\n glow = false,\n wave = false,\n cornerFrame = false,\n className = '',\n ...props\n}: GlassCardProps) {\n const classes = [\n variantClasses[variant],\n 'rounded-2xl',\n glow ? 'molten-card-glow' : '',\n wave ? 'molten-wave-card' : '',\n cornerFrame ? 'corner-frame' : '',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode, HTMLAttributes } from 'react';\n\nexport interface MoltenTextProps extends HTMLAttributes<HTMLSpanElement> {\n children: ReactNode;\n as?: 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'p';\n animated?: boolean;\n}\n\nexport function MoltenText({\n children,\n as: Tag = 'span',\n animated = false,\n className = '',\n ...props\n}: MoltenTextProps) {\n const classes = [\n animated ? 'rainbow-text-animated' : 'molten-text',\n className,\n ].filter(Boolean).join(' ');\n\n return (\n <Tag className={classes} {...props}>\n {children}\n </Tag>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { GridMesh } from './GridMesh';\n\nexport interface PageProps {\n children: ReactNode;\n ptMobile?: number;\n ptDesktop?: number;\n pb?: number;\n px?: number;\n maxWidth?: string;\n centered?: boolean;\n showGrid?: boolean;\n nav?: ReactNode;\n overlay?: ReactNode;\n}\n\nexport function Page({\n children,\n ptMobile = 20,\n ptDesktop = 24,\n pb = 6,\n px = 6,\n maxWidth = 'max-w-6xl',\n centered = true,\n showGrid = true,\n nav,\n overlay,\n}: PageProps) {\n const [isDesktop, setIsDesktop] = useState(false);\n\n useEffect(() => {\n const handleResize = () => setIsDesktop(window.innerWidth >= 1024);\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n const toRem = (units: number) => `${(units * 4) / 16}rem`;\n const paddingTop = isDesktop ? toRem(ptDesktop) : toRem(ptMobile);\n\n return (\n <main className=\"relative min-h-screen bg-black overflow-hidden\">\n {showGrid && (\n <div className=\"fixed inset-0 z-0\">\n <GridMesh />\n </div>\n )}\n\n <div className=\"relative z-10\">\n {nav}\n\n <div\n style={{\n paddingTop,\n paddingBottom: toRem(pb),\n paddingLeft: toRem(px),\n paddingRight: toRem(px),\n }}\n className={`min-h-screen ${centered ? 'flex flex-col justify-center' : ''}`}\n >\n <div className={`${maxWidth} mx-auto w-full`}>\n {children}\n </div>\n </div>\n </div>\n\n {overlay}\n\n <div className=\"fixed inset-0 pointer-events-none bg-gradient-radial from-transparent via-transparent to-black/40\" />\n </main>\n );\n}\n","'use client';\n\nimport { useState, useRef, useEffect, useCallback, forwardRef, type ReactNode } from 'react';\nimport gsap from 'gsap';\n\nexport interface NavLink {\n label: string;\n href: string;\n external?: boolean;\n}\n\nexport interface NavLinkGroup {\n title: string;\n links: NavLink[];\n}\n\nexport interface NavAction {\n icon: ReactNode;\n onClick?: () => void;\n href?: string;\n label?: string;\n connected?: boolean;\n connectedLabel?: string;\n}\n\nexport interface ProductNavProps {\n logo?: ReactNode;\n logoHref?: string;\n menuGroups?: NavLinkGroup[];\n leftExtra?: ReactNode;\n leftPanel?: ReactNode | ((onClose: () => void) => ReactNode);\n leftPanelOpen?: boolean;\n onLeftPanelChange?: (open: boolean) => void;\n rightAction?: NavAction;\n rightExtra?: ReactNode;\n xUrl?: string;\n communityLabel?: string;\n menuFooter?: ReactNode;\n className?: string;\n}\n\nconst BTN_SIZE = 40;\nconst BTN_BG = 'rgba(24, 24, 27, 0.9)';\n\nfunction NavIconButton({\n children,\n onClick,\n className = '',\n connected,\n connectedLabel,\n}: {\n children: ReactNode;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n connected?: boolean;\n connectedLabel?: string;\n}) {\n return (\n <button\n onClick={onClick}\n className={`group relative flex items-center justify-center rounded-xl transition-all cursor-pointer rainbow-border-button text-white ${className}`}\n style={{\n width: BTN_SIZE,\n height: Math.round(BTN_SIZE * 1.1),\n background: BTN_BG,\n backdropFilter: 'blur(24px)',\n }}\n >\n {children}\n {connected && (\n <div style={{ position: 'absolute', top: 4, right: 4, width: 6, height: 6, borderRadius: '50%', background: '#00ff88' }} />\n )}\n {connectedLabel && (\n <div\n className=\"pointer-events-none absolute -bottom-8 left-1/2 -translate-x-1/2 opacity-0 group-hover:opacity-100 transition-opacity duration-200 whitespace-nowrap px-2 py-1 rounded-md text-[10px] font-medium text-white\"\n style={{ background: 'rgba(24, 24, 27, 0.95)', border: '1px solid rgba(255,255,255,0.08)' }}\n >\n {connectedLabel}\n </div>\n )}\n </button>\n );\n}\n\ninterface ExpandedMenuProps {\n menuGroups: NavLinkGroup[];\n xUrl: string;\n communityLabel: string;\n menuFooter?: ReactNode;\n onClose: () => void;\n}\n\nconst ExpandedMenu = forwardRef<HTMLDivElement, ExpandedMenuProps>(\n ({ menuGroups, xUrl, communityLabel, menuFooter, onClose }, ref) => {\n const colCount = menuGroups.length;\n\n return (\n <div\n ref={ref}\n className=\"fixed top-0 left-0 right-0 backdrop-blur-xl\"\n style={{ transform: 'translateY(-100%)', visibility: 'hidden', zIndex: 40, background: 'rgba(0, 0, 0, 0.95)' }}\n >\n <div className=\"menu-content p-8 pt-20 mx-auto\" style={{ maxWidth: colCount >= 3 ? '48rem' : '42rem' }}>\n <div\n className=\"grid gap-8\"\n style={{ gridTemplateColumns: `repeat(${colCount}, 1fr)` }}\n >\n {menuGroups.map((group) => (\n <div key={group.title} className=\"space-y-1\">\n <span className=\"text-[10px] tracking-[0.2em] text-zinc-500 uppercase font-medium block mb-4\">\n {group.title}\n </span>\n {group.links.map((link) => (\n <a\n key={link.href}\n href={link.href}\n target={link.external ? '_blank' : undefined}\n rel={link.external ? 'noopener noreferrer' : undefined}\n onClick={onClose}\n className=\"block text-2xl font-light text-white hover:text-zinc-300 transition-colors py-1\"\n >\n {link.label}\n </a>\n ))}\n </div>\n ))}\n\n </div>\n <div className=\"mt-6 pt-6 flex items-center justify-between\" style={{ borderTop: '1px solid rgba(255,255,255,0.06)' }}>\n <div className=\"flex items-center gap-3\">\n <span className=\"text-[10px] tracking-[0.2em] text-zinc-500 uppercase font-medium\">\n {communityLabel}\n </span>\n <a\n href={xUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"w-8 h-8 rounded-full bg-zinc-800 flex items-center justify-center text-white hover:bg-zinc-700 transition-colors\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\" />\n </svg>\n </a>\n </div>\n {menuFooter && (\n <div>{menuFooter}</div>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nExpandedMenu.displayName = 'ExpandedMenu';\n\nexport function ProductNav({\n logo,\n logoHref = '/',\n menuGroups = [],\n leftExtra,\n leftPanel,\n leftPanelOpen = false,\n onLeftPanelChange,\n rightAction,\n rightExtra,\n xUrl = 'https://x.com/moltenagentic',\n communityLabel = 'Community',\n menuFooter,\n className = '',\n}: ProductNavProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [leftPanelVisible, setLeftPanelVisible] = useState(false);\n const isLeftOpen = leftPanelOpen;\n const setIsLeftOpen = useCallback((v: boolean | ((prev: boolean) => boolean)) => {\n const next = typeof v === 'function' ? v(leftPanelOpen) : v;\n onLeftPanelChange?.(next);\n }, [leftPanelOpen, onLeftPanelChange]);\n const navBarRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const leftPanelRef = useRef<HTMLDivElement>(null);\n const isAnimating = useRef(false);\n\n const hasMenu = menuGroups.length > 0;\n\n const slideOpen = useCallback((panelRef: React.RefObject<HTMLDivElement | null>) => {\n if (isAnimating.current || !navBarRef.current || !panelRef.current) return;\n isAnimating.current = true;\n\n const tl = gsap.timeline({\n onComplete: () => { isAnimating.current = false; },\n });\n\n gsap.set(panelRef.current, { visibility: 'visible' });\n\n tl.to(navBarRef.current.querySelectorAll('.nav-content'), {\n opacity: 0, duration: 0.15,\n });\n\n tl.to(panelRef.current, {\n y: 0, duration: 0.4, ease: 'power3.out',\n }, '-=0.1');\n\n tl.to(panelRef.current.querySelectorAll('.menu-content > div'), {\n opacity: 1, y: 0, duration: 0.3, stagger: 0.05,\n }, '-=0.2');\n }, []);\n\n const slideClose = useCallback((panelRef: React.RefObject<HTMLDivElement | null>, onDone?: () => void) => {\n if (isAnimating.current || !navBarRef.current || !panelRef.current) return;\n isAnimating.current = true;\n\n const panel = panelRef.current;\n const tl = gsap.timeline({\n onComplete: () => {\n isAnimating.current = false;\n gsap.set(panel, { visibility: 'hidden', y: '-100%' });\n onDone?.();\n },\n });\n\n tl.to(panel.querySelectorAll('.menu-content > div'), {\n opacity: 0, y: -10, duration: 0.2, stagger: 0.03,\n });\n\n tl.to(panel, {\n y: '-100%', duration: 0.35, ease: 'power3.in',\n }, '-=0.1');\n\n tl.to(navBarRef.current.querySelectorAll('.nav-content'), {\n opacity: 1, duration: 0.2,\n }, '-=0.15');\n }, []);\n\n useEffect(() => {\n if (isOpen) slideOpen(menuRef);\n else slideClose(menuRef);\n }, [isOpen, slideOpen, slideClose]);\n\n useEffect(() => {\n if (isLeftOpen) {\n setLeftPanelVisible(true);\n if (isOpen) setIsOpen(false);\n slideOpen(leftPanelRef);\n } else {\n slideClose(leftPanelRef, () => setLeftPanelVisible(false));\n }\n }, [isLeftOpen, slideOpen, slideClose]);\n\n const toggleMenu = useCallback(() => {\n if (isLeftOpen) setIsLeftOpen(false);\n setIsOpen(v => !v);\n }, [isLeftOpen]);\n\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n if (isOpen) setIsOpen(false);\n if (isLeftOpen) setIsLeftOpen(false);\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [isOpen, isLeftOpen]);\n\n const anyOpen = isOpen || isLeftOpen;\n\n return (\n <nav className={`relative z-50 w-full max-w-2xl mx-auto px-4 ${className}`}>\n <div className=\"relative\">\n <div style={{ position: 'absolute', left: '8px', top: '50%', transform: 'translateY(-50%)', display: 'flex', alignItems: 'center', gap: '20px', zIndex: leftPanelVisible ? 30 : 60 }}>\n {leftExtra}\n {hasMenu && (\n <NavIconButton onClick={toggleMenu}>\n <div style={{ display: 'flex', flexDirection: 'column', gap: '5px' }}>\n <span style={{\n display: 'block', width: '16px', height: '2px', background: 'currentColor',\n transition: 'all 0.2s', transformOrigin: 'center',\n transform: isOpen ? 'translateY(7px) rotate(45deg)' : 'none',\n }} />\n <span style={{\n display: 'block', width: '16px', height: '2px', background: 'currentColor',\n transition: 'all 0.2s',\n opacity: isOpen ? 0 : 1,\n }} />\n <span style={{\n display: 'block', width: '16px', height: '2px', background: 'currentColor',\n transition: 'all 0.2s', transformOrigin: 'center',\n transform: isOpen ? 'translateY(-7px) rotate(-45deg)' : 'none',\n }} />\n </div>\n </NavIconButton>\n )}\n </div>\n\n <div\n ref={navBarRef}\n className=\"relative px-2 flex items-center justify-between\"\n >\n <div className=\"nav-content\" style={{ width: '56px' }} />\n\n <div className=\"nav-content absolute left-1/2 -translate-x-1/2\">\n <a href={logoHref} className=\"block hover:opacity-80 transition-opacity\">\n {logo ?? (\n <span style={{ fontSize: '18px', fontWeight: 900, color: '#fff' }}>M</span>\n )}\n </a>\n </div>\n\n <div className=\"nav-content\" style={{ display: 'flex', alignItems: 'center', gap: '20px' }}>\n {rightAction && (\n rightAction.href ? (\n <a href={rightAction.href} title={rightAction.label}>\n <NavIconButton connected={rightAction.connected} connectedLabel={rightAction.connectedLabel}>\n {rightAction.icon}\n </NavIconButton>\n </a>\n ) : (\n <NavIconButton onClick={rightAction.onClick} connected={rightAction.connected} connectedLabel={rightAction.connectedLabel}>\n {rightAction.icon}\n </NavIconButton>\n )\n )}\n {rightExtra}\n </div>\n </div>\n\n {hasMenu && (\n <ExpandedMenu\n ref={menuRef}\n menuGroups={menuGroups}\n xUrl={xUrl}\n communityLabel={communityLabel}\n menuFooter={menuFooter}\n onClose={() => setIsOpen(false)}\n />\n )}\n\n {leftPanel && (\n <div\n ref={leftPanelRef}\n className=\"fixed top-0 left-0 right-0 backdrop-blur-xl\"\n style={{ transform: 'translateY(-100%)', visibility: 'hidden', zIndex: 40, background: 'rgba(0, 0, 0, 0.95)' }}\n >\n <div className=\"menu-content p-8 pt-20 max-w-2xl mx-auto\">\n {typeof leftPanel === 'function' ? leftPanel(() => setIsLeftOpen(false)) : leftPanel}\n </div>\n </div>\n )}\n </div>\n\n {anyOpen && (\n <div\n className=\"fixed inset-0\"\n style={{ background: 'rgba(0, 0, 0, 0.5)', zIndex: 30 }}\n onClick={() => { setIsOpen(false); setIsLeftOpen(false); }}\n />\n )}\n </nav>\n );\n}\n","'use client';\n\nimport { createContext, useContext, useState, useEffect, useCallback, type ReactNode } from 'react';\n\nexport type MoltenTheme = 'day' | 'night' | 'neon';\n\nconst THEMES: MoltenTheme[] = ['day', 'night', 'neon'];\n\ninterface MoltenThemeContextValue {\n theme: MoltenTheme;\n setTheme: (theme: MoltenTheme) => void;\n toggle: () => void;\n}\n\nconst MoltenThemeContext = createContext<MoltenThemeContextValue>({\n theme: 'day',\n setTheme: () => {},\n toggle: () => {},\n});\n\nconst STORAGE_KEY = 'molten-theme';\n\nfunction isValidTheme(v: string | null): v is MoltenTheme {\n return v === 'day' || v === 'night' || v === 'neon';\n}\n\nexport function MoltenThemeProvider({ children, defaultTheme = 'day' }: { children: ReactNode; defaultTheme?: MoltenTheme }) {\n const [theme, setThemeState] = useState<MoltenTheme>(defaultTheme);\n\n useEffect(() => {\n const stored = localStorage.getItem(STORAGE_KEY);\n if (isValidTheme(stored)) {\n setThemeState(stored);\n document.documentElement.dataset.theme = stored;\n } else {\n document.documentElement.dataset.theme = defaultTheme;\n }\n }, [defaultTheme]);\n\n const setTheme = useCallback((next: MoltenTheme) => {\n setThemeState(next);\n document.documentElement.dataset.theme = next;\n localStorage.setItem(STORAGE_KEY, next);\n }, []);\n\n const toggle = useCallback(() => {\n const idx = THEMES.indexOf(theme);\n setTheme(THEMES[(idx + 1) % THEMES.length]);\n }, [theme, setTheme]);\n\n return (\n <MoltenThemeContext.Provider value={{ theme, setTheme, toggle }}>\n {children}\n </MoltenThemeContext.Provider>\n );\n}\n\nexport function useMoltenTheme() {\n return useContext(MoltenThemeContext);\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\nimport { TechGrid } from './TechGrid';\nimport { EmberField } from './EmberField';\nimport { useMoltenTheme } from '../theme';\n\nexport interface HalfHeroProps {\n children: ReactNode;\n nav?: ReactNode;\n className?: string;\n height?: string;\n fieldVariant?: 'default' | 'intense' | 'subtle' | 'vignette';\n showEmbers?: boolean;\n emberCount?: number;\n showGrid?: boolean;\n}\n\nconst fieldClasses = {\n default: 'molten-field',\n intense: 'molten-field-intense',\n subtle: 'molten-field-subtle',\n vignette: 'molten-field-vignette',\n} as const;\n\nexport function HalfHero({\n children,\n nav,\n className = '',\n height = '50vh',\n fieldVariant = 'default',\n showEmbers = true,\n emberCount = 40,\n showGrid = true,\n}: HalfHeroProps) {\n const { theme } = useMoltenTheme();\n const isNeon = theme === 'neon';\n const isNight = theme === 'night';\n\n const gridTone = isNeon ? 'neon' : isNight ? 'molten' : 'dark';\n const emberTone = isNeon ? 'neon-pink' : isNight ? 'molten' : 'dark';\n const textColor = isNight ? '#fff' : '#000';\n\n const neonBg = 'radial-gradient(ellipse at 50% 40%, #00ff88 0%, #00dd77 30%, #00aa55 65%, #006633 100%)';\n\n return (\n <div\n className={`relative overflow-hidden flex flex-col ${isNeon ? '' : fieldClasses[fieldVariant]} ${className}`}\n style={{ minHeight: height, color: textColor, ...(isNeon ? { background: neonBg } : {}) }}\n >\n {showGrid && (\n <TechGrid tone={gridTone} id=\"hero\" className=\"absolute inset-0 w-full h-full\" style={{ zIndex: 3 }} />\n )}\n {showEmbers && (\n <EmberField tone={emberTone} count={emberCount} style={{ zIndex: 5 }} />\n )}\n\n {nav && <div className=\"relative pt-4 he-nav-spacing\" style={{ zIndex: 30 }}>{nav}</div>}\n\n <div className=\"relative flex-1 flex flex-col items-center px-4 he-content-spacing\" style={{ zIndex: 10 }}>\n <div style={{ flex: 1 }} />\n {children}\n <div style={{ flex: 1 }} />\n </div>\n </div>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\nexport interface ProductShellProps {\n children: ReactNode;\n className?: string;\n}\n\nexport function ProductShell({\n children,\n className = '',\n}: ProductShellProps) {\n return (\n <main className={`relative min-h-screen bg-black text-white ${className}`}>\n {children}\n </main>\n );\n}\n","'use client';\n\nimport { useMoltenTheme } from '../theme';\n\nexport function ThemeToggle() {\n const { theme, toggle } = useMoltenTheme();\n\n const color =\n theme === 'neon' ? '#00ff88' :\n theme === 'night' ? '#71717a' : '#fff';\n\n return (\n <button\n onClick={toggle}\n className=\"relative flex items-center justify-center rounded-xl cursor-pointer rainbow-border-button text-white\"\n style={{\n width: 40,\n height: 44,\n background: 'rgba(24, 24, 27, 0.9)',\n backdropFilter: 'blur(24px)',\n }}\n >\n {theme === 'neon' ? (\n /* 60s comic-book lightning bolt — thick top, sharp point at bottom */\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill={color}>\n <path d=\"M15 2L8 13h4l-3 9 10-13h-5z\" />\n </svg>\n ) : theme === 'night' ? (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <path d=\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\" />\n </svg>\n ) : (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke={color} strokeWidth=\"1.5\" strokeLinecap=\"round\">\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v3M12 19v3M4.22 4.22l2.12 2.12M17.66 17.66l2.12 2.12M2 12h3M19 12h3M4.22 19.78l2.12-2.12M17.66 6.34l2.12-2.12\" />\n </svg>\n )}\n </button>\n );\n}\n","'use client';\n\nimport { useMoltenTheme } from '../theme';\n\nexport interface LangButtonProps {\n locale: string;\n onClick?: () => void;\n isOpen?: boolean;\n}\n\nexport function LangButton({ locale, onClick, isOpen = false }: LangButtonProps) {\n const { theme } = useMoltenTheme();\n const color = theme === 'night' ? '#71717a' : '#fff';\n\n return (\n <button\n onClick={onClick}\n className=\"relative flex items-center justify-center rounded-xl cursor-pointer rainbow-border-button text-white\"\n style={{\n width: 40,\n height: 44,\n background: 'rgba(24, 24, 27, 0.9)',\n backdropFilter: 'blur(24px)',\n }}\n >\n {isOpen ? (\n <div style={{ display: 'flex', flexDirection: 'column', gap: '5px' }}>\n <span style={{ display: 'block', width: '16px', height: '2px', background: color, transformOrigin: 'center', transform: 'translateY(7px) rotate(45deg)' }} />\n <span style={{ display: 'block', width: '16px', height: '2px', background: color, opacity: 0 }} />\n <span style={{ display: 'block', width: '16px', height: '2px', background: color, transformOrigin: 'center', transform: 'translateY(-7px) rotate(-45deg)' }} />\n </div>\n ) : (\n <span style={{ fontSize: '13px', fontWeight: 700, color, letterSpacing: '0.05em' }}>\n {locale === 'zh' ? 'CN' : locale.toUpperCase()}\n </span>\n )}\n </button>\n );\n}\n","'use client';\n\nimport type { ReactNode } from 'react';\n\nexport interface HeroCardProps {\n label: string;\n title: string;\n code?: string;\n description?: string;\n accentColor?: string;\n actionText?: string;\n onClick?: () => void;\n children?: ReactNode;\n}\n\nexport function HeroCard({\n label,\n title,\n code,\n description,\n accentColor = '#00e5ff',\n actionText,\n onClick,\n children,\n}: HeroCardProps) {\n return (\n <div\n onClick={onClick}\n className={`group relative p-5 sm:p-6 rounded-2xl glass-card molten-wave-card corner-frame w-full max-w-lg ${onClick ? 'cursor-pointer' : ''}`}\n >\n <span className=\"portal-label font-mono text-[11px] tracking-widest\" style={{ color: accentColor }}>\n // {label}\n </span>\n <h2 className=\"text-xl sm:text-2xl font-bold mt-2 text-white molten-wave-text\">\n {title}\n </h2>\n {code && (\n <div\n className=\"mt-4 rounded-lg p-3\"\n style={{\n background: 'rgba(0, 0, 0, 0.4)',\n border: '1px solid rgba(255, 255, 255, 0.06)',\n }}\n >\n <code className=\"text-xs sm:text-sm font-mono break-all\" style={{ color: accentColor }}>\n {code}\n </code>\n </div>\n )}\n {description && (\n <p className=\"text-xs text-zinc-500 mt-3 font-light leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n {actionText && (\n <div className=\"mt-4 flex items-center justify-between\">\n <span className=\"text-xs text-zinc-500 molten-wave-text transition-all duration-300\">\n {actionText}\n </span>\n <span className=\"text-zinc-600 group-hover:translate-x-1.5 transition-all duration-300 text-lg molten-wave-text\">\n →\n </span>\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport { useEffect, type RefObject } from 'react';\nimport gsap from 'gsap';\n\nexport function usePulseLabels(ref: RefObject<HTMLElement | null>, selector = '.portal-label', delay = 2.2) {\n useEffect(() => {\n const el = ref.current;\n if (!el) return;\n\n const labels = el.querySelectorAll(selector);\n if (!labels.length) return;\n\n const pulse = gsap.timeline({ repeat: -1, delay });\n labels.forEach((label) => {\n pulse\n .to(label, { opacity: 0.15, duration: 0.8, ease: 'power1.inOut' })\n .to(label, { opacity: 1, duration: 0.8, ease: 'power1.inOut' });\n });\n\n return () => { pulse.kill(); };\n }, [ref, selector, delay]);\n}\n"],"mappings":"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","names":["jsx","useRef","useEffect","jsx","jsxs","useEffect","useRef","jsx","jsx","jsx","jsx","jsx","variantClasses","jsx","useEffect","jsx","jsxs","useEffect","useState","useRef","useEffect","jsx","jsxs","useState","useEffect","useCallback","jsx","jsx","jsxs","jsx","jsx","jsxs","jsx","jsxs","jsx","jsxs","useEffect","gsap"]}
|