@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.
@@ -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>
@@ -1 +1,8 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2000 2000"><g data-name="Layer 1"><path d="M695.3 911.46H368.89l-163.21 282.68 163.21 282.68H695.3l163.21-282.68zm-84.39 419.19H453.28l-78.81-136.51 78.81-136.51 72.97-145.97 84.65 145.97 78.81 136.51-78.81 136.51Z" data-name="Layer 3"/><path d="m780.09 1057.64-11.29.04h-158L447.59 775 610.8 492.32h326.41L1100.42 775l-84.24 145.9L932 775l-.54.31.18-.31-78.81-136.51H695.2L616.39 775l78.81 136.51h.14l84.76 146.13ZM1664.01 911.46h-157.99l152.41 282.68-78.82 136.51h-157.62l-78.82-136.51 78.82-136.51 84.03-146.17h-168.43l-163.2 282.68 163.2 282.68h326.42l163.2-282.68z"/><path d="M1421.61 492.32H1095.2L931.99 775l163.21 282.68h326.41L1584.82 775zm-84.4 419.19-78.54 136.82-79.09-136.82L1100.77 775l78.81-136.51h157.63L1416.02 775z"/></g><path d="M1095.09 1330.65H937.47l-78.82-136.51 78.82-136.51 73.3-145.96 84.32 145.96 77.68 134.54.07-.13 78.4 133.17 31.23-50.26 6.77 11.77 53.45-92.58-163.21-282.68H853.07l-163.2 282.68 163.2 282.68h315.82l84.42-145.97" data-name="Layer 4"/></svg>
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__ */ jsx11(
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 === "day" || stored === "night") {
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
- setTheme(theme === "day" ? "night" : "day");
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: isNight ? "#fff" : "#000" },
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 isNight = theme === "night";
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: isNight ? /* @__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: [
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 &rarr;\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 &rarr;\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"]}
@@ -63,3 +63,10 @@
63
63
  #E84A0F, #f09070, #ffffff, #f09070, #E84A0F, #c43a0a, #E84A0F
64
64
  );
65
65
  }
66
+
67
+ [data-theme="neon"] {
68
+ --molten-gradient: linear-gradient(
69
+ 90deg,
70
+ #00ff88, #00dd77, #ff3366, #dd2255, #00ff88
71
+ );
72
+ }