@backbay/glia 0.2.0-alpha.6 → 0.2.0-alpha.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/audio/index.js +1145 -5
- package/dist/audio/index.js.map +1 -1
- package/dist/components/index.js +3187 -10
- package/dist/components/index.js.map +1 -1
- package/dist/core.js +19714 -12
- package/dist/core.js.map +1 -1
- package/dist/emotion/index.js +1 -1
- package/dist/emotion/index.js.map +1 -1
- package/dist/hooks/index.js +941 -6
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.js +31841 -183
- package/dist/index.js.map +1 -1
- package/dist/primitives/index.js +21111 -57
- package/dist/primitives/index.js.map +1 -1
- package/dist/protocol/index.js +360 -2
- package/dist/protocol/index.js.map +1 -1
- package/dist/speakeasy/index.js +2786 -38
- package/dist/speakeasy/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/theme/index.js +1150 -3
- package/dist/theme/index.js.map +1 -1
- package/dist/vision/index.js +370 -2
- package/dist/vision/index.js.map +1 -1
- package/dist/workspace/index.js +16824 -2
- package/dist/workspace/index.js.map +1 -1
- package/package.json +16 -10
- package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
- package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
- package/dist/BentoGrid-CDARICNM.js +0 -6
- package/dist/BentoGrid-CDARICNM.js.map +0 -1
- package/dist/CommandPalette-JCWJKRBY.js +0 -6
- package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
- package/dist/Glass-H4X4ZI4P.js +0 -7
- package/dist/Glass-H4X4ZI4P.js.map +0 -1
- package/dist/GlitchText-KLQ57PPY.js +0 -6
- package/dist/GlitchText-KLQ57PPY.js.map +0 -1
- package/dist/GlowButton-VGBPMZO7.js +0 -6
- package/dist/GlowButton-VGBPMZO7.js.map +0 -1
- package/dist/Graph3D-GO7N2EZQ.js +0 -540
- package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
- package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
- package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
- package/dist/KPIStat-PBQK27ZB.js +0 -6
- package/dist/KPIStat-PBQK27ZB.js.map +0 -1
- package/dist/NeonToast-W5F7MU3U.js +0 -6
- package/dist/NeonToast-W5F7MU3U.js.map +0 -1
- package/dist/ParticleField-WK6CNHWU.js +0 -51
- package/dist/ParticleField-WK6CNHWU.js.map +0 -1
- package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
- package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
- package/dist/ThreeDCard-VH5I3SSY.js +0 -6
- package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
- package/dist/TypingAnimation-GIWOHPIX.js +0 -6
- package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
- package/dist/alert-dialog-QOSYBIIE.js +0 -19
- package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
- package/dist/avatar-N5R37PCU.js +0 -10
- package/dist/avatar-N5R37PCU.js.map +0 -1
- package/dist/badge-GTVIIGPY.js +0 -8
- package/dist/badge-GTVIIGPY.js.map +0 -1
- package/dist/button-D7IMSV2D.js +0 -8
- package/dist/button-D7IMSV2D.js.map +0 -1
- package/dist/chunk-3CMPQOMY.js +0 -69
- package/dist/chunk-3CMPQOMY.js.map +0 -1
- package/dist/chunk-3OQT6IYR.js +0 -41
- package/dist/chunk-3OQT6IYR.js.map +0 -1
- package/dist/chunk-43B2WVLS.js +0 -85
- package/dist/chunk-43B2WVLS.js.map +0 -1
- package/dist/chunk-4SRFO5W3.js +0 -121
- package/dist/chunk-4SRFO5W3.js.map +0 -1
- package/dist/chunk-5IZELOOU.js +0 -362
- package/dist/chunk-5IZELOOU.js.map +0 -1
- package/dist/chunk-6DM4ACSS.js +0 -154
- package/dist/chunk-6DM4ACSS.js.map +0 -1
- package/dist/chunk-6IGT34PC.js +0 -50
- package/dist/chunk-6IGT34PC.js.map +0 -1
- package/dist/chunk-6RKBCJHN.js +0 -194
- package/dist/chunk-6RKBCJHN.js.map +0 -1
- package/dist/chunk-6RX2WGCO.js +0 -108
- package/dist/chunk-6RX2WGCO.js.map +0 -1
- package/dist/chunk-7K4WZM3U.js +0 -189
- package/dist/chunk-7K4WZM3U.js.map +0 -1
- package/dist/chunk-7MDBHJPT.js +0 -407
- package/dist/chunk-7MDBHJPT.js.map +0 -1
- package/dist/chunk-7UQD6ROV.js +0 -9
- package/dist/chunk-7UQD6ROV.js.map +0 -1
- package/dist/chunk-AFNIVLZP.js +0 -1069
- package/dist/chunk-AFNIVLZP.js.map +0 -1
- package/dist/chunk-ANWYRO6A.js +0 -407
- package/dist/chunk-ANWYRO6A.js.map +0 -1
- package/dist/chunk-DIXPOHDO.js +0 -71
- package/dist/chunk-DIXPOHDO.js.map +0 -1
- package/dist/chunk-DWYMKYPI.js +0 -3
- package/dist/chunk-DWYMKYPI.js.map +0 -1
- package/dist/chunk-E3NVDCZG.js +0 -280
- package/dist/chunk-E3NVDCZG.js.map +0 -1
- package/dist/chunk-EBM7YBKL.js +0 -399
- package/dist/chunk-EBM7YBKL.js.map +0 -1
- package/dist/chunk-EPAM7IWW.js +0 -294
- package/dist/chunk-EPAM7IWW.js.map +0 -1
- package/dist/chunk-EXQ7GYRS.js +0 -134
- package/dist/chunk-EXQ7GYRS.js.map +0 -1
- package/dist/chunk-F4QTUZ3C.js +0 -136
- package/dist/chunk-F4QTUZ3C.js.map +0 -1
- package/dist/chunk-FEW533R2.js +0 -105
- package/dist/chunk-FEW533R2.js.map +0 -1
- package/dist/chunk-FFZLJKC7.js +0 -270
- package/dist/chunk-FFZLJKC7.js.map +0 -1
- package/dist/chunk-GEAMOBF7.js +0 -8486
- package/dist/chunk-GEAMOBF7.js.map +0 -1
- package/dist/chunk-GRTRSCTD.js +0 -74
- package/dist/chunk-GRTRSCTD.js.map +0 -1
- package/dist/chunk-IKGYOGLK.js +0 -16
- package/dist/chunk-IKGYOGLK.js.map +0 -1
- package/dist/chunk-IQ7WYWVJ.js +0 -73
- package/dist/chunk-IQ7WYWVJ.js.map +0 -1
- package/dist/chunk-IXIVWQLF.js +0 -543
- package/dist/chunk-IXIVWQLF.js.map +0 -1
- package/dist/chunk-JCJU57RC.js +0 -115
- package/dist/chunk-JCJU57RC.js.map +0 -1
- package/dist/chunk-KORSTBU4.js +0 -117
- package/dist/chunk-KORSTBU4.js.map +0 -1
- package/dist/chunk-KSEZ6UM2.js +0 -235
- package/dist/chunk-KSEZ6UM2.js.map +0 -1
- package/dist/chunk-MHPF7R3O.js +0 -1376
- package/dist/chunk-MHPF7R3O.js.map +0 -1
- package/dist/chunk-MPC5IH7E.js +0 -81
- package/dist/chunk-MPC5IH7E.js.map +0 -1
- package/dist/chunk-MQIU2NYA.js +0 -114
- package/dist/chunk-MQIU2NYA.js.map +0 -1
- package/dist/chunk-NYMBJOGR.js +0 -2192
- package/dist/chunk-NYMBJOGR.js.map +0 -1
- package/dist/chunk-OBZD2M3C.js +0 -169
- package/dist/chunk-OBZD2M3C.js.map +0 -1
- package/dist/chunk-ODM2AG6G.js +0 -176
- package/dist/chunk-ODM2AG6G.js.map +0 -1
- package/dist/chunk-ONDKF5LP.js +0 -53
- package/dist/chunk-ONDKF5LP.js.map +0 -1
- package/dist/chunk-P25YCWQB.js +0 -41
- package/dist/chunk-P25YCWQB.js.map +0 -1
- package/dist/chunk-PFYVNM6H.js +0 -14
- package/dist/chunk-PFYVNM6H.js.map +0 -1
- package/dist/chunk-PWNNSGFL.js +0 -20
- package/dist/chunk-PWNNSGFL.js.map +0 -1
- package/dist/chunk-Q2PGZVOT.js +0 -36
- package/dist/chunk-Q2PGZVOT.js.map +0 -1
- package/dist/chunk-Q2XDMV7U.js +0 -76
- package/dist/chunk-Q2XDMV7U.js.map +0 -1
- package/dist/chunk-QG7FH2FI.js +0 -45
- package/dist/chunk-QG7FH2FI.js.map +0 -1
- package/dist/chunk-R7HUOK2D.js +0 -1914
- package/dist/chunk-R7HUOK2D.js.map +0 -1
- package/dist/chunk-REUYY7G5.js +0 -773
- package/dist/chunk-REUYY7G5.js.map +0 -1
- package/dist/chunk-RHC2Z2HT.js +0 -199
- package/dist/chunk-RHC2Z2HT.js.map +0 -1
- package/dist/chunk-RMCVLIFE.js +0 -23
- package/dist/chunk-RMCVLIFE.js.map +0 -1
- package/dist/chunk-ROZLTXGR.js +0 -234
- package/dist/chunk-ROZLTXGR.js.map +0 -1
- package/dist/chunk-RSS2C2O3.js +0 -17
- package/dist/chunk-RSS2C2O3.js.map +0 -1
- package/dist/chunk-SAGCG5SH.js +0 -355
- package/dist/chunk-SAGCG5SH.js.map +0 -1
- package/dist/chunk-TM6AOUSD.js +0 -40
- package/dist/chunk-TM6AOUSD.js.map +0 -1
- package/dist/chunk-TPK4BYCO.js +0 -970
- package/dist/chunk-TPK4BYCO.js.map +0 -1
- package/dist/chunk-UNQIL4K2.js +0 -34
- package/dist/chunk-UNQIL4K2.js.map +0 -1
- package/dist/chunk-UUG6L75Y.js +0 -47
- package/dist/chunk-UUG6L75Y.js.map +0 -1
- package/dist/chunk-V2SYMV4W.js +0 -114
- package/dist/chunk-V2SYMV4W.js.map +0 -1
- package/dist/chunk-V7EN5CTH.js +0 -130
- package/dist/chunk-V7EN5CTH.js.map +0 -1
- package/dist/chunk-VITKG2HL.js +0 -1125
- package/dist/chunk-VITKG2HL.js.map +0 -1
- package/dist/chunk-VYEWU5LO.js +0 -2631
- package/dist/chunk-VYEWU5LO.js.map +0 -1
- package/dist/chunk-W67QAGSH.js +0 -178
- package/dist/chunk-W67QAGSH.js.map +0 -1
- package/dist/chunk-WWBIN6KV.js +0 -1353
- package/dist/chunk-WWBIN6KV.js.map +0 -1
- package/dist/chunk-X77Z4PFB.js +0 -224
- package/dist/chunk-X77Z4PFB.js.map +0 -1
- package/dist/chunk-X7VG7OTT.js +0 -8
- package/dist/chunk-X7VG7OTT.js.map +0 -1
- package/dist/chunk-XE4K2SGI.js +0 -74
- package/dist/chunk-XE4K2SGI.js.map +0 -1
- package/dist/chunk-YIUG7IJK.js +0 -628
- package/dist/chunk-YIUG7IJK.js.map +0 -1
- package/dist/chunk-YNVN3V4Y.js +0 -13
- package/dist/chunk-YNVN3V4Y.js.map +0 -1
- package/dist/chunk-Z2S54IZX.js +0 -198
- package/dist/chunk-Z2S54IZX.js.map +0 -1
- package/dist/chunk-ZR6AH25Z.js +0 -17
- package/dist/chunk-ZR6AH25Z.js.map +0 -1
- package/dist/dialog-SPM3DTTI.js +0 -17
- package/dist/dialog-SPM3DTTI.js.map +0 -1
- package/dist/dropdown-menu-HMTWKWGK.js +0 -21
- package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
- package/dist/input-BH4P4S26.js +0 -6
- package/dist/input-BH4P4S26.js.map +0 -1
- package/dist/label-5Z4Q6VER.js +0 -8
- package/dist/label-5Z4Q6VER.js.map +0 -1
- package/dist/popover-IFOUXYLI.js +0 -18
- package/dist/popover-IFOUXYLI.js.map +0 -1
- package/dist/scroll-area-DJXNW6QX.js +0 -14
- package/dist/scroll-area-DJXNW6QX.js.map +0 -1
- package/dist/select-FZ277C3G.js +0 -22
- package/dist/select-FZ277C3G.js.map +0 -1
- package/dist/separator-BTMLN4NB.js +0 -8
- package/dist/separator-BTMLN4NB.js.map +0 -1
- package/dist/skeleton-DXIWBH4W.js +0 -6
- package/dist/skeleton-DXIWBH4W.js.map +0 -1
- package/dist/switch-4MCXIZBY.js +0 -13
- package/dist/switch-4MCXIZBY.js.map +0 -1
- package/dist/tabs-O7AW3APK.js +0 -17
- package/dist/tabs-O7AW3APK.js.map +0 -1
- package/dist/textarea-IB5WAFDO.js +0 -6
- package/dist/textarea-IB5WAFDO.js.map +0 -1
- package/dist/toggle-XVPPG6P4.js +0 -10
- package/dist/toggle-XVPPG6P4.js.map +0 -1
- package/dist/tooltip-JICZTD4F.js +0 -18
- package/dist/tooltip-JICZTD4F.js.map +0 -1
package/dist/chunk-R7HUOK2D.js
DELETED
|
@@ -1,1914 +0,0 @@
|
|
|
1
|
-
import { DustMotesLayer } from './chunk-F4QTUZ3C.js';
|
|
2
|
-
import { cn } from './chunk-6RX2WGCO.js';
|
|
3
|
-
import * as React from 'react';
|
|
4
|
-
import { useRef, useState, useEffect, useCallback, useId, useMemo } from 'react';
|
|
5
|
-
import { useScroll, useTransform, motion, AnimatePresence, useMotionValue, useSpring, useReducedMotion } from 'framer-motion';
|
|
6
|
-
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
7
|
-
import { Trophy, Vote, Zap, FileText, ArrowRight } from 'lucide-react';
|
|
8
|
-
|
|
9
|
-
// src/components/ClusterHero/config.ts
|
|
10
|
-
var CLUSTER_DEV_PORTS = {
|
|
11
|
-
alexandria: 3001,
|
|
12
|
-
alpha: 3002,
|
|
13
|
-
opus: 3003,
|
|
14
|
-
baia: 3004,
|
|
15
|
-
kdot: 3005,
|
|
16
|
-
aegis: 3006,
|
|
17
|
-
providence: 3007
|
|
18
|
-
};
|
|
19
|
-
function getClusterDocsUrl(clusterId) {
|
|
20
|
-
if (typeof window !== "undefined" && window.location.hostname === "localhost") {
|
|
21
|
-
return `http://localhost:${CLUSTER_DEV_PORTS[clusterId]}`;
|
|
22
|
-
}
|
|
23
|
-
return `https://${clusterId}.backbay.io`;
|
|
24
|
-
}
|
|
25
|
-
var CLUSTER_CONFIGS = {
|
|
26
|
-
alexandria: {
|
|
27
|
-
id: "alexandria",
|
|
28
|
-
name: "Alexandria",
|
|
29
|
-
tagline: "Where knowledge compounds",
|
|
30
|
-
latinMotto: "SEQUERE FILUM",
|
|
31
|
-
sigilSrc: "/sigils/alexandria.svg",
|
|
32
|
-
videoSrc: "/videos/clusters/alexandria.mp4",
|
|
33
|
-
videoPoster: "/videos/clusters/alexandria-poster.jpg",
|
|
34
|
-
accentColor: "#C9A227",
|
|
35
|
-
accentColorRGB: "201, 162, 39",
|
|
36
|
-
atmosphere: {
|
|
37
|
-
dustMotes: {
|
|
38
|
-
colors: ["#C9A227", "#E8D5A3", "#8B7355"],
|
|
39
|
-
density: 0.6,
|
|
40
|
-
speed: 0.3
|
|
41
|
-
},
|
|
42
|
-
light: {
|
|
43
|
-
type: "godrays",
|
|
44
|
-
color: "#C9A227",
|
|
45
|
-
intensity: 0.7,
|
|
46
|
-
source: { x: 0.8, y: 0.1 }
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
buttons: [
|
|
50
|
-
{ label: "Launch", href: "/clusters/alexandria", variant: "primary" },
|
|
51
|
-
{ label: "Docs", href: "https://alexandria.backbay.io", variant: "secondary", external: true },
|
|
52
|
-
{ label: "Governance", href: "/governance/alexandria", variant: "ghost" }
|
|
53
|
-
],
|
|
54
|
-
// Briefing
|
|
55
|
-
description: "The decentralized knowledge marketplace. Publish, lease, and compound intelligence artifacts.",
|
|
56
|
-
capabilities: ["PUBLISH", "LEASE", "COMPOUND"],
|
|
57
|
-
fastPath: { label: "Start a Knowledge Compound", href: "/clusters/alexandria/compound/new" },
|
|
58
|
-
status: { network: "STABLE", verification: "ON", fees: "2%" },
|
|
59
|
-
// Live
|
|
60
|
-
liveModule: "market",
|
|
61
|
-
liveContent: "3 new blueprints published today",
|
|
62
|
-
// Metrics
|
|
63
|
-
metrics: { realms: 847, output24h: "2.4M", rank: 12 }
|
|
64
|
-
},
|
|
65
|
-
alpha: {
|
|
66
|
-
id: "alpha",
|
|
67
|
-
name: "Alpha",
|
|
68
|
-
tagline: "Where signals become strategy",
|
|
69
|
-
latinMotto: "ALPHA IN MOTU",
|
|
70
|
-
sigilSrc: "/sigils/alpha.svg",
|
|
71
|
-
videoSrc: "/videos/clusters/alpha.mp4",
|
|
72
|
-
videoPoster: "/videos/clusters/alpha-poster.jpg",
|
|
73
|
-
accentColor: "#E8E8E8",
|
|
74
|
-
accentColorRGB: "232, 232, 232",
|
|
75
|
-
atmosphere: {
|
|
76
|
-
fog: {
|
|
77
|
-
type: "volumetric",
|
|
78
|
-
color: "#E8E8E8",
|
|
79
|
-
intensity: 0.5
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
buttons: [
|
|
83
|
-
{ label: "Launch", href: "/clusters/alpha", variant: "primary" },
|
|
84
|
-
{ label: "Docs", href: "https://alpha.backbay.io", variant: "secondary", external: true },
|
|
85
|
-
{ label: "Governance", href: "/governance/alpha", variant: "ghost" }
|
|
86
|
-
],
|
|
87
|
-
// Briefing
|
|
88
|
-
description: "A social exchange for research-grade finance. Models, signals, and playbooks\u2014shared, challenged, and refined in public.",
|
|
89
|
-
capabilities: ["BACKTEST", "PRICE", "EXECUTE"],
|
|
90
|
-
fastPath: { label: "Explore strategy marketplace", href: "/clusters/alpha/market" },
|
|
91
|
-
status: { network: "STABLE", verification: "ON", fees: "1.5%" },
|
|
92
|
-
// Live
|
|
93
|
-
liveModule: "live",
|
|
94
|
-
liveContent: "Live: 218 strategies \u2022 24h volume $3.1B",
|
|
95
|
-
// Metrics
|
|
96
|
-
metrics: { realms: 234, output24h: "4.8M", rank: 3 }
|
|
97
|
-
},
|
|
98
|
-
opus: {
|
|
99
|
-
id: "opus",
|
|
100
|
-
name: "Opus",
|
|
101
|
-
tagline: "Where care meets code",
|
|
102
|
-
latinMotto: "SALUS PER MACHINAM",
|
|
103
|
-
sigilSrc: "/sigils/opus.svg",
|
|
104
|
-
videoSrc: "/videos/clusters/opus.mp4",
|
|
105
|
-
videoPoster: "/videos/clusters/opus-poster.jpg",
|
|
106
|
-
accentColor: "#B87333",
|
|
107
|
-
accentColorRGB: "184, 115, 51",
|
|
108
|
-
atmosphere: {
|
|
109
|
-
dustMotes: {
|
|
110
|
-
colors: ["#B87333", "#D4956A", "#8B5A2B"],
|
|
111
|
-
density: 0.8,
|
|
112
|
-
speed: 0.2
|
|
113
|
-
},
|
|
114
|
-
light: {
|
|
115
|
-
type: "bloom",
|
|
116
|
-
color: "#B87333",
|
|
117
|
-
intensity: 0.6
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
buttons: [
|
|
121
|
-
{ label: "Launch", href: "/clusters/opus", variant: "primary" },
|
|
122
|
-
{ label: "Docs", href: "https://opus.backbay.io", variant: "secondary", external: true },
|
|
123
|
-
{ label: "Governance", href: "/governance/opus", variant: "ghost" }
|
|
124
|
-
],
|
|
125
|
-
// Briefing
|
|
126
|
-
description: "The clinic-to-code commons. Practical health systems, shared and iterated together.",
|
|
127
|
-
capabilities: ["DIAGNOSE", "COORDINATE", "PRODUCE"],
|
|
128
|
-
fastPath: { label: "Explore the Exchange", href: "/clusters/opus/exchange" },
|
|
129
|
-
status: { network: "STABLE", verification: "HIPAA", fees: "2%" },
|
|
130
|
-
// Live
|
|
131
|
-
liveModule: "live",
|
|
132
|
-
liveContent: "New: Autonomous diagnostic pipeline \u2022 12 protocols deployed",
|
|
133
|
-
// Metrics
|
|
134
|
-
metrics: { realms: 156, output24h: "892K" }
|
|
135
|
-
},
|
|
136
|
-
baia: {
|
|
137
|
-
id: "baia",
|
|
138
|
-
name: "Baia",
|
|
139
|
-
tagline: "Where imagination renders",
|
|
140
|
-
latinMotto: "ARS EX MACHINA",
|
|
141
|
-
sigilSrc: "/sigils/baia.svg",
|
|
142
|
-
videoSrc: "/videos/clusters/baia.mp4",
|
|
143
|
-
videoPoster: "/videos/clusters/baia-poster.jpg",
|
|
144
|
-
accentColor: "#D4AF37",
|
|
145
|
-
accentColorRGB: "212, 175, 55",
|
|
146
|
-
atmosphere: {
|
|
147
|
-
light: {
|
|
148
|
-
type: "godrays",
|
|
149
|
-
color: "#D4AF37",
|
|
150
|
-
intensity: 0.8,
|
|
151
|
-
source: { x: 0.5, y: 0 }
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
buttons: [
|
|
155
|
-
{ label: "Launch", href: "/clusters/baia", variant: "primary" },
|
|
156
|
-
{ label: "Docs", href: "https://baia.backbay.io", variant: "secondary", external: true },
|
|
157
|
-
{ label: "Governance", href: "/governance/baia", variant: "ghost" }
|
|
158
|
-
],
|
|
159
|
-
// Briefing
|
|
160
|
-
description: "A social market for generative culture. Artists and builders publish, collaborate, and curate evolving collections.",
|
|
161
|
-
capabilities: ["GENERATE", "COMPOSE", "RENDER"],
|
|
162
|
-
fastPath: { label: "Open the Studio", href: "/clusters/baia/studio" },
|
|
163
|
-
status: { network: "STABLE", verification: "ON", fees: "2.5%" },
|
|
164
|
-
// Live
|
|
165
|
-
liveModule: "market",
|
|
166
|
-
liveContent: "Trending: Neural symphony generator \u2022 847 works minted today",
|
|
167
|
-
// Metrics
|
|
168
|
-
metrics: { realms: 89, output24h: "124K", rank: 47 }
|
|
169
|
-
},
|
|
170
|
-
kdot: {
|
|
171
|
-
id: "kdot",
|
|
172
|
-
name: "KDoT",
|
|
173
|
-
tagline: "Kernel design of thought",
|
|
174
|
-
latinMotto: "MENS \u2022 MACHINA \u2022 DEUS",
|
|
175
|
-
sigilSrc: "/sigils/kdot.svg",
|
|
176
|
-
videoSrc: "/videos/clusters/kdot.mp4",
|
|
177
|
-
videoPoster: "/videos/clusters/kdot-poster.jpg",
|
|
178
|
-
accentColor: "#00D4AA",
|
|
179
|
-
accentColorRGB: "0, 212, 170",
|
|
180
|
-
atmosphere: {
|
|
181
|
-
fog: {
|
|
182
|
-
type: "mist",
|
|
183
|
-
color: "#00D4AA",
|
|
184
|
-
intensity: 0.4
|
|
185
|
-
}
|
|
186
|
-
},
|
|
187
|
-
buttons: [
|
|
188
|
-
{ label: "Launch", href: "/clusters/kdot", variant: "primary" },
|
|
189
|
-
{ label: "Docs", href: "https://kdot.backbay.io", variant: "secondary", external: true },
|
|
190
|
-
{ label: "Status", href: "/status/kdot", variant: "ghost" }
|
|
191
|
-
],
|
|
192
|
-
// Briefing
|
|
193
|
-
description: "Compile thought into territory. Ship verifiable services. Forge living culture. Spin up economies.\nKernel Design of Thought: where creativity becomes industry.",
|
|
194
|
-
capabilities: ["DESIGN", "SYNTHESIZE", "ALIGN"],
|
|
195
|
-
fastPath: { label: "Open the Kernel", href: "/clusters/kdot/topology" },
|
|
196
|
-
status: { network: "OPTIMAL", verification: "ON", fees: "0.1%" },
|
|
197
|
-
// Live
|
|
198
|
-
liveModule: "live",
|
|
199
|
-
liveContent: "The Cathedral awakens \u2022 12 kernels compiled today",
|
|
200
|
-
// Metrics
|
|
201
|
-
metrics: { realms: 1247, output24h: "8.4PB", rank: 1 }
|
|
202
|
-
},
|
|
203
|
-
aegis: {
|
|
204
|
-
id: "aegis",
|
|
205
|
-
name: "Aegis",
|
|
206
|
-
tagline: "Shield of the realm",
|
|
207
|
-
latinMotto: "TUTELA PERPETUA",
|
|
208
|
-
sigilSrc: "/sigils/aegis.svg",
|
|
209
|
-
videoSrc: "/videos/clusters/aegis.mp4",
|
|
210
|
-
videoPoster: "/videos/clusters/aegis-poster.jpg",
|
|
211
|
-
accentColor: "#4A7BF7",
|
|
212
|
-
accentColorRGB: "74, 123, 247",
|
|
213
|
-
atmosphere: {
|
|
214
|
-
light: {
|
|
215
|
-
type: "bloom",
|
|
216
|
-
color: "#4A7BF7",
|
|
217
|
-
intensity: 0.5
|
|
218
|
-
}
|
|
219
|
-
},
|
|
220
|
-
buttons: [
|
|
221
|
-
{ label: "Launch", href: "/clusters/aegis", variant: "primary" },
|
|
222
|
-
{ label: "Docs", href: "https://aegis.backbay.io", variant: "secondary", external: true },
|
|
223
|
-
{ label: "Audit", href: "/audit/aegis", variant: "ghost" }
|
|
224
|
-
],
|
|
225
|
-
// Briefing
|
|
226
|
-
description: "The EDR layer for agent economies. Aegis is a trust-minimized distributed security mesh to enable autonomous production at scale.",
|
|
227
|
-
capabilities: ["PROTECT", "DETECT", "RESPOND"],
|
|
228
|
-
fastPath: { label: "View threat dashboard", href: "/clusters/aegis/threats" },
|
|
229
|
-
status: { network: "SECURE", verification: "ENFORCED", fees: "1%" },
|
|
230
|
-
// Live
|
|
231
|
-
liveModule: "governance",
|
|
232
|
-
liveContent: "Security Proposal #7 \u2014 Policy update pending review",
|
|
233
|
-
// Metrics
|
|
234
|
-
metrics: { realms: 312, output24h: "2.1B threats blocked", rank: 2 }
|
|
235
|
-
},
|
|
236
|
-
providence: {
|
|
237
|
-
id: "providence",
|
|
238
|
-
name: "Providence",
|
|
239
|
-
tagline: "Foresight is defense",
|
|
240
|
-
latinMotto: "PRAEVIDEO ERGO PROTEGO",
|
|
241
|
-
sigilSrc: "/sigils/providence.svg",
|
|
242
|
-
videoSrc: "/videos/clusters/providence.mp4",
|
|
243
|
-
videoPoster: "/videos/clusters/providence-poster.jpg",
|
|
244
|
-
accentColor: "#00D4AA",
|
|
245
|
-
accentColorRGB: "0, 212, 170",
|
|
246
|
-
atmosphere: {
|
|
247
|
-
light: {
|
|
248
|
-
type: "godrays",
|
|
249
|
-
color: "#00D4AA",
|
|
250
|
-
intensity: 0.5,
|
|
251
|
-
source: { x: 0.55, y: 0.05 }
|
|
252
|
-
},
|
|
253
|
-
fog: {
|
|
254
|
-
type: "mist",
|
|
255
|
-
color: "#00D4AA",
|
|
256
|
-
intensity: 0.25
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
buttons: [
|
|
260
|
-
{ label: "Launch", href: "/clusters/providence", variant: "primary" },
|
|
261
|
-
{ label: "Docs", href: "https://providence.backbay.io", variant: "secondary", external: true },
|
|
262
|
-
{ label: "Threat Intel", href: "/providence/threats", variant: "ghost" }
|
|
263
|
-
],
|
|
264
|
-
description: "The EDR layer for agent economies. Aegis is a trust-minimized security distributed security for autonomous production.",
|
|
265
|
-
capabilities: ["PREDICT", "RESPOND", "DEFEND"],
|
|
266
|
-
fastPath: { label: "View threat dashboard", href: "/clusters/providence/threats" },
|
|
267
|
-
status: { network: "SECURE", verification: "ENFORCED", fees: "1%" },
|
|
268
|
-
liveModule: "live",
|
|
269
|
-
liveContent: "24/7 monitoring active \u2022 847K threats analyzed today",
|
|
270
|
-
metrics: { realms: 96, output24h: "38K", rank: 19 }
|
|
271
|
-
}
|
|
272
|
-
};
|
|
273
|
-
function getClusterConfig(clusterId) {
|
|
274
|
-
return CLUSTER_CONFIGS[clusterId];
|
|
275
|
-
}
|
|
276
|
-
function getClusterConfigWithResolvedUrls(clusterId) {
|
|
277
|
-
const config = CLUSTER_CONFIGS[clusterId];
|
|
278
|
-
const docsUrl = getClusterDocsUrl(clusterId);
|
|
279
|
-
return {
|
|
280
|
-
...config,
|
|
281
|
-
buttons: config.buttons.map(
|
|
282
|
-
(button) => button.label === "Docs" ? { ...button, href: docsUrl } : button
|
|
283
|
-
)
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
// src/primitives/environment/shared/types.ts
|
|
288
|
-
var PERFORMANCE_PRESETS = {
|
|
289
|
-
high: { tier: "high", maxParticles: 2e3, useShaders: true, targetFPS: 60 },
|
|
290
|
-
medium: { tier: "medium", maxParticles: 800, useShaders: true, targetFPS: 60 },
|
|
291
|
-
low: { tier: "low", maxParticles: 300, useShaders: false, targetFPS: 30 },
|
|
292
|
-
minimal: { tier: "minimal", maxParticles: 0, useShaders: false, targetFPS: 0 }
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
// src/primitives/environment/shared/performance.ts
|
|
296
|
-
function detectPerformanceTier() {
|
|
297
|
-
if (typeof window === "undefined") return "medium";
|
|
298
|
-
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
|
|
299
|
-
return "minimal";
|
|
300
|
-
}
|
|
301
|
-
const nav = navigator;
|
|
302
|
-
if (nav.deviceMemory && nav.deviceMemory < 4) {
|
|
303
|
-
return "low";
|
|
304
|
-
}
|
|
305
|
-
if (navigator.hardwareConcurrency && navigator.hardwareConcurrency < 4) {
|
|
306
|
-
return "low";
|
|
307
|
-
}
|
|
308
|
-
const isMobile = /Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
|
|
309
|
-
if (isMobile) return "low";
|
|
310
|
-
return "medium";
|
|
311
|
-
}
|
|
312
|
-
function getPerformanceConfig(tier) {
|
|
313
|
-
const detected = detectPerformanceTier();
|
|
314
|
-
return PERFORMANCE_PRESETS[detected];
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
// src/primitives/environment/shared/noise.ts
|
|
318
|
-
var NOISE_SVG = `<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200">
|
|
319
|
-
<filter id="n">
|
|
320
|
-
<feTurbulence type="fractalNoise" baseFrequency="0.9" numOctaves="3" seed="2" stitchTiles="stitch" />
|
|
321
|
-
<feColorMatrix type="saturate" values="0" />
|
|
322
|
-
</filter>
|
|
323
|
-
<rect width="200" height="200" filter="url(#n)" opacity="0.55" />
|
|
324
|
-
</svg>`;
|
|
325
|
-
var NOISE_DATA_URL = `data:image/svg+xml,${encodeURIComponent(NOISE_SVG)}`;
|
|
326
|
-
|
|
327
|
-
// src/primitives/environment/VolumetricLight/types.ts
|
|
328
|
-
var LIGHT_CONFIGS = {
|
|
329
|
-
godrays: { defaultColor: "#fffbe6", defaultIntensity: 0.6, animated: true, blendMode: "screen" },
|
|
330
|
-
shaft: { defaultColor: "#ffffff", defaultIntensity: 0.5, animated: false, blendMode: "screen" },
|
|
331
|
-
bloom: { defaultColor: "#ffffff", defaultIntensity: 0.4, animated: false, blendMode: "screen" },
|
|
332
|
-
flare: { defaultColor: "#ffe4b5", defaultIntensity: 0.7, animated: true, blendMode: "screen" },
|
|
333
|
-
caustics: { defaultColor: "#00d4ff", defaultIntensity: 0.4, animated: true, blendMode: "overlay" },
|
|
334
|
-
scanner: { defaultColor: "#00ff00", defaultIntensity: 0.6, animated: true, blendMode: "screen" },
|
|
335
|
-
neon: { defaultColor: "#ff00ff", defaultIntensity: 0.8, animated: true, blendMode: "screen" },
|
|
336
|
-
spotlight: { defaultColor: "#ffffff", defaultIntensity: 0.7, animated: false, blendMode: "screen" },
|
|
337
|
-
rim: { defaultColor: "#00f0ff", defaultIntensity: 0.5, animated: false, blendMode: "screen" },
|
|
338
|
-
laser: { defaultColor: "#ff0000", defaultIntensity: 0.9, animated: true, blendMode: "screen" }
|
|
339
|
-
};
|
|
340
|
-
function VolumetricLight({
|
|
341
|
-
type,
|
|
342
|
-
source = { x: 0.5, y: 0 },
|
|
343
|
-
color: propColor,
|
|
344
|
-
intensity = 0.5,
|
|
345
|
-
decay = 0.5,
|
|
346
|
-
angle = 0,
|
|
347
|
-
width = 0.3,
|
|
348
|
-
animated: propAnimated,
|
|
349
|
-
stylePreset = "ui",
|
|
350
|
-
enabled = true,
|
|
351
|
-
className,
|
|
352
|
-
style
|
|
353
|
-
}) {
|
|
354
|
-
const reducedMotion = useReducedMotion();
|
|
355
|
-
const perfConfig = getPerformanceConfig();
|
|
356
|
-
const [time, setTime] = React.useState(0);
|
|
357
|
-
const config = LIGHT_CONFIGS[type];
|
|
358
|
-
const color = propColor ?? config.defaultColor;
|
|
359
|
-
const shouldAnimate = (propAnimated ?? config.animated) && !reducedMotion && perfConfig.tier !== "minimal";
|
|
360
|
-
React.useEffect(() => {
|
|
361
|
-
if (!shouldAnimate || !enabled) return;
|
|
362
|
-
let frame;
|
|
363
|
-
const animate = () => {
|
|
364
|
-
setTime((prev) => prev + 0.016);
|
|
365
|
-
frame = requestAnimationFrame(animate);
|
|
366
|
-
};
|
|
367
|
-
frame = requestAnimationFrame(animate);
|
|
368
|
-
return () => cancelAnimationFrame(frame);
|
|
369
|
-
}, [shouldAnimate, enabled]);
|
|
370
|
-
if (!enabled) return null;
|
|
371
|
-
const lightStyle = React.useMemo(() => {
|
|
372
|
-
const opacity = intensity * config.defaultIntensity;
|
|
373
|
-
const d = Math.max(0, Math.min(1, decay));
|
|
374
|
-
switch (type) {
|
|
375
|
-
case "godrays":
|
|
376
|
-
return {
|
|
377
|
-
background: `conic-gradient(from ${angle}deg at ${source.x * 100}% ${source.y * 100}%,
|
|
378
|
-
${color}${Math.round(opacity * 0.4 * 255).toString(16).padStart(2, "0")} 0deg,
|
|
379
|
-
transparent 15deg,
|
|
380
|
-
${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, "0")} 30deg,
|
|
381
|
-
transparent 45deg,
|
|
382
|
-
${color}${Math.round(opacity * 0.35 * 255).toString(16).padStart(2, "0")} 60deg,
|
|
383
|
-
transparent 75deg,
|
|
384
|
-
${color}${Math.round(opacity * 0.25 * 255).toString(16).padStart(2, "0")} 90deg,
|
|
385
|
-
transparent 105deg
|
|
386
|
-
)`,
|
|
387
|
-
mixBlendMode: config.blendMode
|
|
388
|
-
};
|
|
389
|
-
case "shaft":
|
|
390
|
-
return {
|
|
391
|
-
background: `linear-gradient(${angle}deg,
|
|
392
|
-
transparent ${(source.x - width / 2) * 100}%,
|
|
393
|
-
${color}${Math.round(opacity * 0.5 * 255).toString(16).padStart(2, "0")} ${source.x * 100}%,
|
|
394
|
-
transparent ${(source.x + width / 2) * 100}%
|
|
395
|
-
)`,
|
|
396
|
-
mixBlendMode: config.blendMode
|
|
397
|
-
};
|
|
398
|
-
case "bloom": {
|
|
399
|
-
const bloomInner = 18 + d * 22;
|
|
400
|
-
const bloomMid = 42 + d * 24;
|
|
401
|
-
return {
|
|
402
|
-
background: `radial-gradient(circle at ${source.x * 100}% ${source.y * 100}%,
|
|
403
|
-
${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, "0")},
|
|
404
|
-
${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, "0")} ${bloomInner}%,
|
|
405
|
-
transparent ${bloomMid}%
|
|
406
|
-
)`,
|
|
407
|
-
mixBlendMode: config.blendMode,
|
|
408
|
-
filter: "blur(20px)"
|
|
409
|
-
};
|
|
410
|
-
}
|
|
411
|
-
case "flare":
|
|
412
|
-
const flareOffset = Math.sin(time * 2) * 5;
|
|
413
|
-
return {
|
|
414
|
-
background: `
|
|
415
|
-
radial-gradient(ellipse 20% 5% at ${source.x * 100}% ${source.y * 100 + flareOffset}%, ${color}${Math.round(opacity * 0.8 * 255).toString(16).padStart(2, "0")}, transparent),
|
|
416
|
-
radial-gradient(ellipse 5% 20% at ${source.x * 100}% ${source.y * 100}%, ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, "0")}, transparent),
|
|
417
|
-
radial-gradient(circle at ${source.x * 100}% ${source.y * 100}%, ${color}${Math.round(opacity * 0.4 * 255).toString(16).padStart(2, "0")}, transparent 20%)
|
|
418
|
-
`,
|
|
419
|
-
mixBlendMode: config.blendMode
|
|
420
|
-
};
|
|
421
|
-
case "caustics":
|
|
422
|
-
const causticPhase = time * 0.5;
|
|
423
|
-
return {
|
|
424
|
-
background: `
|
|
425
|
-
radial-gradient(ellipse at ${50 + Math.sin(causticPhase) * 20}% ${50 + Math.cos(causticPhase * 1.3) * 20}%, ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, "0")}, transparent 40%),
|
|
426
|
-
radial-gradient(ellipse at ${50 + Math.cos(causticPhase * 0.7) * 25}% ${50 + Math.sin(causticPhase * 1.1) * 25}%, ${color}${Math.round(opacity * 0.25 * 255).toString(16).padStart(2, "0")}, transparent 35%)
|
|
427
|
-
`,
|
|
428
|
-
mixBlendMode: config.blendMode
|
|
429
|
-
};
|
|
430
|
-
case "scanner":
|
|
431
|
-
const scanAngle = time * 60 % 360;
|
|
432
|
-
return {
|
|
433
|
-
background: `conic-gradient(from ${scanAngle}deg at ${source.x * 100}% ${source.y * 100}%,
|
|
434
|
-
${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, "0")} 0deg,
|
|
435
|
-
transparent 30deg,
|
|
436
|
-
transparent 360deg
|
|
437
|
-
)`,
|
|
438
|
-
mixBlendMode: config.blendMode
|
|
439
|
-
};
|
|
440
|
-
case "neon":
|
|
441
|
-
const flickerIntensity = 0.9 + Math.sin(time * 20) * 0.1;
|
|
442
|
-
return {
|
|
443
|
-
background: `linear-gradient(${angle}deg, transparent 40%, ${color}${Math.round(opacity * flickerIntensity * 0.8 * 255).toString(16).padStart(2, "0")} 50%, transparent 60%)`,
|
|
444
|
-
boxShadow: `0 0 30px ${color}${Math.round(opacity * flickerIntensity * 0.5 * 255).toString(16).padStart(2, "0")}, 0 0 60px ${color}${Math.round(opacity * flickerIntensity * 0.3 * 255).toString(16).padStart(2, "0")}`,
|
|
445
|
-
mixBlendMode: config.blendMode
|
|
446
|
-
};
|
|
447
|
-
case "spotlight": {
|
|
448
|
-
const spotMid = 40 + d * 35;
|
|
449
|
-
return {
|
|
450
|
-
background: `radial-gradient(ellipse ${width * 100}% ${width * 150}% at ${source.x * 100}% ${source.y * 100}%,
|
|
451
|
-
${color}${Math.round(opacity * 0.7 * 255).toString(16).padStart(2, "0")},
|
|
452
|
-
${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, "0")} ${spotMid}%,
|
|
453
|
-
transparent 100%
|
|
454
|
-
)`,
|
|
455
|
-
mixBlendMode: config.blendMode
|
|
456
|
-
};
|
|
457
|
-
}
|
|
458
|
-
case "rim":
|
|
459
|
-
return {
|
|
460
|
-
boxShadow: `inset 0 0 ${60 * intensity}px ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, "0")}`,
|
|
461
|
-
mixBlendMode: config.blendMode
|
|
462
|
-
};
|
|
463
|
-
case "laser":
|
|
464
|
-
const laserOffset = Math.sin(time * 3) * 10;
|
|
465
|
-
return {
|
|
466
|
-
background: `linear-gradient(${angle + laserOffset}deg,
|
|
467
|
-
transparent 49%,
|
|
468
|
-
${color}${Math.round(opacity * 255).toString(16).padStart(2, "0")} 49.5%,
|
|
469
|
-
${color}${Math.round(opacity * 255).toString(16).padStart(2, "0")} 50.5%,
|
|
470
|
-
transparent 51%
|
|
471
|
-
)`,
|
|
472
|
-
mixBlendMode: config.blendMode
|
|
473
|
-
};
|
|
474
|
-
default:
|
|
475
|
-
return {};
|
|
476
|
-
}
|
|
477
|
-
}, [type, source, color, intensity, decay, angle, width, time, config]);
|
|
478
|
-
return /* @__PURE__ */ jsx(
|
|
479
|
-
"div",
|
|
480
|
-
{
|
|
481
|
-
className: cn("pointer-events-none absolute inset-0", className),
|
|
482
|
-
style: { ...lightStyle, ...style },
|
|
483
|
-
"aria-hidden": "true",
|
|
484
|
-
children: stylePreset === "cinematic" && /* @__PURE__ */ jsx(
|
|
485
|
-
"div",
|
|
486
|
-
{
|
|
487
|
-
className: "absolute inset-0",
|
|
488
|
-
style: {
|
|
489
|
-
backgroundImage: `url("${NOISE_DATA_URL}")`,
|
|
490
|
-
backgroundRepeat: "repeat",
|
|
491
|
-
backgroundSize: "240px 240px",
|
|
492
|
-
backgroundPosition: `${time * 160}px ${time * 110}px`,
|
|
493
|
-
opacity: Math.min(0.12, 0.03 + intensity * 0.06),
|
|
494
|
-
mixBlendMode: "overlay",
|
|
495
|
-
filter: "blur(0.4px) contrast(1.25)"
|
|
496
|
-
},
|
|
497
|
-
"aria-hidden": "true"
|
|
498
|
-
}
|
|
499
|
-
)
|
|
500
|
-
}
|
|
501
|
-
);
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
// src/primitives/environment/FogLayer/types.ts
|
|
505
|
-
var FOG_CONFIGS = {
|
|
506
|
-
depth: {
|
|
507
|
-
defaultColor: "#0a0a0f",
|
|
508
|
-
defaultDensity: 0.5,
|
|
509
|
-
animationSpeed: 0,
|
|
510
|
-
gradientStops: 2
|
|
511
|
-
},
|
|
512
|
-
ground: {
|
|
513
|
-
defaultColor: "#ffffff",
|
|
514
|
-
defaultDensity: 0.7,
|
|
515
|
-
animationSpeed: 0.02,
|
|
516
|
-
gradientStops: 3
|
|
517
|
-
},
|
|
518
|
-
volumetric: {
|
|
519
|
-
defaultColor: "#e8e8ff",
|
|
520
|
-
defaultDensity: 0.4,
|
|
521
|
-
animationSpeed: 0.01,
|
|
522
|
-
gradientStops: 4
|
|
523
|
-
},
|
|
524
|
-
mist: {
|
|
525
|
-
defaultColor: "#f0f0ff",
|
|
526
|
-
defaultDensity: 0.3,
|
|
527
|
-
animationSpeed: 0.015,
|
|
528
|
-
gradientStops: 5
|
|
529
|
-
}
|
|
530
|
-
};
|
|
531
|
-
function FogLayer({
|
|
532
|
-
type,
|
|
533
|
-
density: propDensity,
|
|
534
|
-
color: propColor,
|
|
535
|
-
height = 0.4,
|
|
536
|
-
animated = true,
|
|
537
|
-
intensity = 1,
|
|
538
|
-
stylePreset = "ui",
|
|
539
|
-
enabled = true,
|
|
540
|
-
className,
|
|
541
|
-
style
|
|
542
|
-
}) {
|
|
543
|
-
const reducedMotion = useReducedMotion();
|
|
544
|
-
const perfConfig = getPerformanceConfig();
|
|
545
|
-
const [offset, setOffset] = React.useState(0);
|
|
546
|
-
const config = FOG_CONFIGS[type];
|
|
547
|
-
const density = propDensity ?? config.defaultDensity;
|
|
548
|
-
const color = propColor ?? config.defaultColor;
|
|
549
|
-
const shouldAnimate = animated && !reducedMotion && perfConfig.tier !== "minimal";
|
|
550
|
-
React.useEffect(() => {
|
|
551
|
-
if (!shouldAnimate || !enabled || config.animationSpeed === 0) return;
|
|
552
|
-
let frame;
|
|
553
|
-
const animate = () => {
|
|
554
|
-
setOffset((prev) => (prev + config.animationSpeed) % 100);
|
|
555
|
-
frame = requestAnimationFrame(animate);
|
|
556
|
-
};
|
|
557
|
-
frame = requestAnimationFrame(animate);
|
|
558
|
-
return () => cancelAnimationFrame(frame);
|
|
559
|
-
}, [shouldAnimate, enabled, config.animationSpeed]);
|
|
560
|
-
if (!enabled) return null;
|
|
561
|
-
const gradientStyle = React.useMemo(() => {
|
|
562
|
-
const opacity = density * intensity;
|
|
563
|
-
switch (type) {
|
|
564
|
-
case "depth":
|
|
565
|
-
return {
|
|
566
|
-
background: `linear-gradient(to top, ${color}${Math.round(opacity * 255).toString(16).padStart(2, "0")}, transparent)`
|
|
567
|
-
};
|
|
568
|
-
case "ground":
|
|
569
|
-
return {
|
|
570
|
-
background: `linear-gradient(to top,
|
|
571
|
-
${color}${Math.round(opacity * 255).toString(16).padStart(2, "0")} 0%,
|
|
572
|
-
${color}${Math.round(opacity * 0.5 * 255).toString(16).padStart(2, "0")} ${height * 50}%,
|
|
573
|
-
transparent ${height * 100}%)`
|
|
574
|
-
};
|
|
575
|
-
case "volumetric":
|
|
576
|
-
return {
|
|
577
|
-
background: `
|
|
578
|
-
radial-gradient(ellipse 120% 60% at 50% ${100 - offset}%, ${color}${Math.round(opacity * 0.6 * 255).toString(16).padStart(2, "0")}, transparent),
|
|
579
|
-
radial-gradient(ellipse 100% 40% at ${30 + offset * 0.2}% 80%, ${color}${Math.round(opacity * 0.4 * 255).toString(16).padStart(2, "0")}, transparent),
|
|
580
|
-
radial-gradient(ellipse 80% 50% at ${70 - offset * 0.15}% 90%, ${color}${Math.round(opacity * 0.5 * 255).toString(16).padStart(2, "0")}, transparent)
|
|
581
|
-
`
|
|
582
|
-
};
|
|
583
|
-
case "mist":
|
|
584
|
-
return {
|
|
585
|
-
background: `
|
|
586
|
-
radial-gradient(ellipse 150% 80% at ${40 + Math.sin(offset * 0.1) * 20}% ${60 + Math.cos(offset * 0.08) * 10}%, ${color}${Math.round(opacity * 0.3 * 255).toString(16).padStart(2, "0")}, transparent),
|
|
587
|
-
radial-gradient(ellipse 120% 60% at ${60 + Math.cos(offset * 0.12) * 15}% ${40 + Math.sin(offset * 0.09) * 15}%, ${color}${Math.round(opacity * 0.25 * 255).toString(16).padStart(2, "0")}, transparent),
|
|
588
|
-
linear-gradient(to top, ${color}${Math.round(opacity * 0.15 * 255).toString(16).padStart(2, "0")}, transparent 50%)
|
|
589
|
-
`
|
|
590
|
-
};
|
|
591
|
-
default:
|
|
592
|
-
return {};
|
|
593
|
-
}
|
|
594
|
-
}, [type, color, density, intensity, height, offset]);
|
|
595
|
-
return /* @__PURE__ */ jsx(
|
|
596
|
-
"div",
|
|
597
|
-
{
|
|
598
|
-
className: cn(
|
|
599
|
-
"pointer-events-none absolute inset-0",
|
|
600
|
-
className
|
|
601
|
-
),
|
|
602
|
-
style: {
|
|
603
|
-
...gradientStyle,
|
|
604
|
-
...style
|
|
605
|
-
},
|
|
606
|
-
"aria-hidden": "true",
|
|
607
|
-
children: stylePreset === "cinematic" && /* @__PURE__ */ jsx(
|
|
608
|
-
"div",
|
|
609
|
-
{
|
|
610
|
-
className: "absolute inset-0",
|
|
611
|
-
style: {
|
|
612
|
-
backgroundImage: `url("${NOISE_DATA_URL}")`,
|
|
613
|
-
backgroundRepeat: "repeat",
|
|
614
|
-
backgroundSize: `${260 - Math.round(density * 80)}px ${260 - Math.round(density * 80)}px`,
|
|
615
|
-
backgroundPosition: `${offset * 30}px ${offset * 20}px`,
|
|
616
|
-
opacity: Math.min(0.18, 0.04 + density * intensity * 0.12),
|
|
617
|
-
mixBlendMode: "soft-light",
|
|
618
|
-
filter: "blur(0.6px) contrast(1.2)"
|
|
619
|
-
},
|
|
620
|
-
"aria-hidden": "true"
|
|
621
|
-
}
|
|
622
|
-
)
|
|
623
|
-
}
|
|
624
|
-
);
|
|
625
|
-
}
|
|
626
|
-
function ClusterAtmosphere({
|
|
627
|
-
config,
|
|
628
|
-
accentColor,
|
|
629
|
-
className
|
|
630
|
-
}) {
|
|
631
|
-
return /* @__PURE__ */ jsxs(
|
|
632
|
-
"div",
|
|
633
|
-
{
|
|
634
|
-
className: cn("pointer-events-none absolute inset-0", className),
|
|
635
|
-
"aria-hidden": "true",
|
|
636
|
-
children: [
|
|
637
|
-
config.dustMotes && /* @__PURE__ */ jsx(
|
|
638
|
-
DustMotesLayer,
|
|
639
|
-
{
|
|
640
|
-
colors: config.dustMotes.colors,
|
|
641
|
-
density: config.dustMotes.density,
|
|
642
|
-
speed: config.dustMotes.speed
|
|
643
|
-
}
|
|
644
|
-
),
|
|
645
|
-
config.fog && /* @__PURE__ */ jsx(
|
|
646
|
-
FogLayer,
|
|
647
|
-
{
|
|
648
|
-
type: config.fog.type,
|
|
649
|
-
color: config.fog.color,
|
|
650
|
-
intensity: config.fog.intensity
|
|
651
|
-
}
|
|
652
|
-
),
|
|
653
|
-
config.light && /* @__PURE__ */ jsx(
|
|
654
|
-
VolumetricLight,
|
|
655
|
-
{
|
|
656
|
-
type: config.light.type,
|
|
657
|
-
color: config.light.color,
|
|
658
|
-
intensity: config.light.intensity,
|
|
659
|
-
source: config.light.source
|
|
660
|
-
}
|
|
661
|
-
)
|
|
662
|
-
]
|
|
663
|
-
}
|
|
664
|
-
);
|
|
665
|
-
}
|
|
666
|
-
function GradientVeil({ className, intensity = 1 }) {
|
|
667
|
-
const a1 = (0.85 * intensity).toFixed(2);
|
|
668
|
-
const a2 = (0.5 * intensity).toFixed(2);
|
|
669
|
-
const a3 = (0.2 * intensity).toFixed(2);
|
|
670
|
-
return /* @__PURE__ */ jsx(
|
|
671
|
-
"div",
|
|
672
|
-
{
|
|
673
|
-
className: cn("absolute inset-0 pointer-events-none", className),
|
|
674
|
-
style: {
|
|
675
|
-
background: `linear-gradient(
|
|
676
|
-
to top,
|
|
677
|
-
rgba(0, 0, 0, ${a1}) 0%,
|
|
678
|
-
rgba(0, 0, 0, ${a2}) 30%,
|
|
679
|
-
rgba(0, 0, 0, ${a3}) 50%,
|
|
680
|
-
transparent 70%
|
|
681
|
-
)`
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
);
|
|
685
|
-
}
|
|
686
|
-
function StructuralElements({
|
|
687
|
-
accentColor,
|
|
688
|
-
className
|
|
689
|
-
}) {
|
|
690
|
-
return /* @__PURE__ */ jsxs(
|
|
691
|
-
"div",
|
|
692
|
-
{
|
|
693
|
-
className: cn("pointer-events-none absolute inset-0 overflow-hidden", className),
|
|
694
|
-
"aria-hidden": "true",
|
|
695
|
-
children: [
|
|
696
|
-
/* @__PURE__ */ jsx(CornerBrackets, { accentColor }),
|
|
697
|
-
/* @__PURE__ */ jsx(
|
|
698
|
-
"div",
|
|
699
|
-
{
|
|
700
|
-
className: "absolute inset-0",
|
|
701
|
-
style: {
|
|
702
|
-
background: `radial-gradient(ellipse 60% 80% at 85% 50%, ${accentColor}1A 0%, transparent 70%)`
|
|
703
|
-
}
|
|
704
|
-
}
|
|
705
|
-
),
|
|
706
|
-
/* @__PURE__ */ jsx(DotGrid, {})
|
|
707
|
-
]
|
|
708
|
-
}
|
|
709
|
-
);
|
|
710
|
-
}
|
|
711
|
-
function CornerBrackets({ accentColor }) {
|
|
712
|
-
const bracketLength = 40;
|
|
713
|
-
const thickness = 2;
|
|
714
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
715
|
-
/* @__PURE__ */ jsxs(
|
|
716
|
-
motion.div,
|
|
717
|
-
{
|
|
718
|
-
className: "absolute top-6 left-6",
|
|
719
|
-
initial: { opacity: 0 },
|
|
720
|
-
animate: { opacity: 1 },
|
|
721
|
-
transition: { duration: 0.8, delay: 0.2 },
|
|
722
|
-
children: [
|
|
723
|
-
/* @__PURE__ */ jsx(
|
|
724
|
-
"div",
|
|
725
|
-
{
|
|
726
|
-
className: "absolute top-0 left-0",
|
|
727
|
-
style: {
|
|
728
|
-
width: bracketLength,
|
|
729
|
-
height: thickness,
|
|
730
|
-
backgroundColor: accentColor
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
),
|
|
734
|
-
/* @__PURE__ */ jsx(
|
|
735
|
-
"div",
|
|
736
|
-
{
|
|
737
|
-
className: "absolute top-0 left-0",
|
|
738
|
-
style: {
|
|
739
|
-
width: thickness,
|
|
740
|
-
height: bracketLength,
|
|
741
|
-
backgroundColor: accentColor
|
|
742
|
-
}
|
|
743
|
-
}
|
|
744
|
-
)
|
|
745
|
-
]
|
|
746
|
-
}
|
|
747
|
-
),
|
|
748
|
-
/* @__PURE__ */ jsxs(
|
|
749
|
-
motion.div,
|
|
750
|
-
{
|
|
751
|
-
className: "absolute bottom-6 right-6",
|
|
752
|
-
initial: { opacity: 0 },
|
|
753
|
-
animate: { opacity: 1 },
|
|
754
|
-
transition: { duration: 0.8, delay: 0.3 },
|
|
755
|
-
children: [
|
|
756
|
-
/* @__PURE__ */ jsx(
|
|
757
|
-
"div",
|
|
758
|
-
{
|
|
759
|
-
className: "absolute bottom-0 right-0",
|
|
760
|
-
style: {
|
|
761
|
-
width: bracketLength,
|
|
762
|
-
height: thickness,
|
|
763
|
-
backgroundColor: accentColor
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
),
|
|
767
|
-
/* @__PURE__ */ jsx(
|
|
768
|
-
"div",
|
|
769
|
-
{
|
|
770
|
-
className: "absolute bottom-0 right-0",
|
|
771
|
-
style: {
|
|
772
|
-
width: thickness,
|
|
773
|
-
height: bracketLength,
|
|
774
|
-
backgroundColor: accentColor
|
|
775
|
-
}
|
|
776
|
-
}
|
|
777
|
-
)
|
|
778
|
-
]
|
|
779
|
-
}
|
|
780
|
-
)
|
|
781
|
-
] });
|
|
782
|
-
}
|
|
783
|
-
function DotGrid() {
|
|
784
|
-
return /* @__PURE__ */ jsx(
|
|
785
|
-
"div",
|
|
786
|
-
{
|
|
787
|
-
className: "absolute inset-0",
|
|
788
|
-
style: {
|
|
789
|
-
opacity: 0.04,
|
|
790
|
-
backgroundImage: `radial-gradient(circle at center, currentColor 1px, transparent 1px)`,
|
|
791
|
-
backgroundSize: "24px 24px"
|
|
792
|
-
}
|
|
793
|
-
}
|
|
794
|
-
);
|
|
795
|
-
}
|
|
796
|
-
function VideoBackground({
|
|
797
|
-
videoSrc,
|
|
798
|
-
webmSrc,
|
|
799
|
-
posterSrc,
|
|
800
|
-
fallbackBackground,
|
|
801
|
-
className,
|
|
802
|
-
crossfadeDuration = 0.8,
|
|
803
|
-
preload = true,
|
|
804
|
-
playbackRate = 0.75,
|
|
805
|
-
onLoad,
|
|
806
|
-
onError
|
|
807
|
-
}) {
|
|
808
|
-
const [isVideoReady, setIsVideoReady] = useState(false);
|
|
809
|
-
const [hasError, setHasError] = useState(false);
|
|
810
|
-
const videoRef = useRef(null);
|
|
811
|
-
const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);
|
|
812
|
-
useEffect(() => {
|
|
813
|
-
if (typeof window === "undefined") return;
|
|
814
|
-
const mediaQuery = window.matchMedia("(prefers-reduced-motion: reduce)");
|
|
815
|
-
setPrefersReducedMotion(mediaQuery.matches);
|
|
816
|
-
const handleChange = (e) => {
|
|
817
|
-
setPrefersReducedMotion(e.matches);
|
|
818
|
-
};
|
|
819
|
-
mediaQuery.addEventListener("change", handleChange);
|
|
820
|
-
return () => mediaQuery.removeEventListener("change", handleChange);
|
|
821
|
-
}, []);
|
|
822
|
-
const handleCanPlayThrough = useCallback(() => {
|
|
823
|
-
setIsVideoReady(true);
|
|
824
|
-
onLoad?.();
|
|
825
|
-
}, [onLoad]);
|
|
826
|
-
const handleError = useCallback(
|
|
827
|
-
(e) => {
|
|
828
|
-
setHasError(true);
|
|
829
|
-
setIsVideoReady(false);
|
|
830
|
-
onError?.(e.nativeEvent);
|
|
831
|
-
},
|
|
832
|
-
[onError]
|
|
833
|
-
);
|
|
834
|
-
useEffect(() => {
|
|
835
|
-
const video = videoRef.current;
|
|
836
|
-
if (!video || hasError || prefersReducedMotion) return;
|
|
837
|
-
video.playbackRate = playbackRate;
|
|
838
|
-
const playPromise = video.play();
|
|
839
|
-
if (playPromise !== void 0) {
|
|
840
|
-
playPromise.catch(() => {
|
|
841
|
-
});
|
|
842
|
-
}
|
|
843
|
-
}, [hasError, prefersReducedMotion, playbackRate]);
|
|
844
|
-
useEffect(() => {
|
|
845
|
-
if (!preload || typeof document === "undefined") return;
|
|
846
|
-
const links = [];
|
|
847
|
-
if (posterSrc) {
|
|
848
|
-
const posterLink = document.createElement("link");
|
|
849
|
-
posterLink.rel = "preload";
|
|
850
|
-
posterLink.as = "image";
|
|
851
|
-
posterLink.href = posterSrc;
|
|
852
|
-
document.head.appendChild(posterLink);
|
|
853
|
-
links.push(posterLink);
|
|
854
|
-
}
|
|
855
|
-
if (videoSrc) {
|
|
856
|
-
const videoLink = document.createElement("link");
|
|
857
|
-
videoLink.rel = "preload";
|
|
858
|
-
videoLink.as = "video";
|
|
859
|
-
videoLink.href = videoSrc;
|
|
860
|
-
if (videoSrc.endsWith(".mp4")) {
|
|
861
|
-
videoLink.type = "video/mp4";
|
|
862
|
-
} else if (videoSrc.endsWith(".webm")) {
|
|
863
|
-
videoLink.type = "video/webm";
|
|
864
|
-
}
|
|
865
|
-
document.head.appendChild(videoLink);
|
|
866
|
-
links.push(videoLink);
|
|
867
|
-
}
|
|
868
|
-
if (webmSrc) {
|
|
869
|
-
const webmLink = document.createElement("link");
|
|
870
|
-
webmLink.rel = "preload";
|
|
871
|
-
webmLink.as = "video";
|
|
872
|
-
webmLink.href = webmSrc;
|
|
873
|
-
webmLink.type = "video/webm";
|
|
874
|
-
document.head.appendChild(webmLink);
|
|
875
|
-
links.push(webmLink);
|
|
876
|
-
}
|
|
877
|
-
return () => {
|
|
878
|
-
links.forEach((link) => {
|
|
879
|
-
if (link.parentNode === document.head) {
|
|
880
|
-
document.head.removeChild(link);
|
|
881
|
-
}
|
|
882
|
-
});
|
|
883
|
-
};
|
|
884
|
-
}, [preload, videoSrc, webmSrc, posterSrc]);
|
|
885
|
-
const mediaStyles = cn(
|
|
886
|
-
"absolute inset-0 w-full h-full object-cover",
|
|
887
|
-
className
|
|
888
|
-
);
|
|
889
|
-
const fallbackBg = fallbackBackground ?? "radial-gradient(1200px 700px at 50% 30%, rgba(255,255,255,0.10), rgba(0,0,0,0) 60%), linear-gradient(180deg, rgba(255,255,255,0.06), rgba(0,0,0,0) 40%), #000";
|
|
890
|
-
const posterBackgroundImage = posterSrc ? `url(${posterSrc}), ${fallbackBg}` : fallbackBg;
|
|
891
|
-
const posterBackgroundSize = posterSrc ? "cover, cover" : "cover";
|
|
892
|
-
const posterBackgroundPosition = posterSrc ? "center, center" : "center";
|
|
893
|
-
if (prefersReducedMotion) {
|
|
894
|
-
return /* @__PURE__ */ jsx(
|
|
895
|
-
"div",
|
|
896
|
-
{
|
|
897
|
-
className: mediaStyles,
|
|
898
|
-
style: {
|
|
899
|
-
backgroundImage: posterBackgroundImage,
|
|
900
|
-
backgroundSize: posterBackgroundSize,
|
|
901
|
-
backgroundPosition: posterBackgroundPosition
|
|
902
|
-
},
|
|
903
|
-
role: "img",
|
|
904
|
-
"aria-label": "Background image"
|
|
905
|
-
}
|
|
906
|
-
);
|
|
907
|
-
}
|
|
908
|
-
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
909
|
-
/* @__PURE__ */ jsx(
|
|
910
|
-
"div",
|
|
911
|
-
{
|
|
912
|
-
className: cn(mediaStyles, "z-0"),
|
|
913
|
-
style: {
|
|
914
|
-
backgroundImage: posterBackgroundImage,
|
|
915
|
-
backgroundSize: posterBackgroundSize,
|
|
916
|
-
backgroundPosition: posterBackgroundPosition
|
|
917
|
-
},
|
|
918
|
-
role: "img",
|
|
919
|
-
"aria-hidden": isVideoReady && !hasError
|
|
920
|
-
}
|
|
921
|
-
),
|
|
922
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: !hasError && /* @__PURE__ */ jsxs(
|
|
923
|
-
motion.video,
|
|
924
|
-
{
|
|
925
|
-
ref: videoRef,
|
|
926
|
-
className: cn(mediaStyles, "z-10"),
|
|
927
|
-
poster: posterSrc,
|
|
928
|
-
autoPlay: true,
|
|
929
|
-
muted: true,
|
|
930
|
-
loop: true,
|
|
931
|
-
playsInline: true,
|
|
932
|
-
disablePictureInPicture: true,
|
|
933
|
-
disableRemotePlayback: true,
|
|
934
|
-
onCanPlayThrough: handleCanPlayThrough,
|
|
935
|
-
onError: handleError,
|
|
936
|
-
initial: { opacity: 0 },
|
|
937
|
-
animate: { opacity: isVideoReady ? 1 : 0 },
|
|
938
|
-
exit: { opacity: 0 },
|
|
939
|
-
transition: {
|
|
940
|
-
opacity: {
|
|
941
|
-
duration: crossfadeDuration,
|
|
942
|
-
ease: [0.4, 0, 0.2, 1]
|
|
943
|
-
// ease-out cubic
|
|
944
|
-
}
|
|
945
|
-
},
|
|
946
|
-
"aria-hidden": "true",
|
|
947
|
-
children: [
|
|
948
|
-
webmSrc && /* @__PURE__ */ jsx("source", { src: webmSrc, type: "video/webm" }),
|
|
949
|
-
/* @__PURE__ */ jsx("source", { src: videoSrc, type: "video/mp4" })
|
|
950
|
-
]
|
|
951
|
-
},
|
|
952
|
-
videoSrc
|
|
953
|
-
) })
|
|
954
|
-
] });
|
|
955
|
-
}
|
|
956
|
-
var fadeUpVariants = {
|
|
957
|
-
hidden: { opacity: 0, y: 20 },
|
|
958
|
-
visible: { opacity: 1, y: 0 }
|
|
959
|
-
};
|
|
960
|
-
var staggerContainer = {
|
|
961
|
-
hidden: { opacity: 0 },
|
|
962
|
-
visible: {
|
|
963
|
-
opacity: 1,
|
|
964
|
-
transition: {
|
|
965
|
-
staggerChildren: 0.12,
|
|
966
|
-
delayChildren: 0.1
|
|
967
|
-
}
|
|
968
|
-
}
|
|
969
|
-
};
|
|
970
|
-
function ClusterName({ name }) {
|
|
971
|
-
return /* @__PURE__ */ jsx(
|
|
972
|
-
motion.h2,
|
|
973
|
-
{
|
|
974
|
-
variants: fadeUpVariants,
|
|
975
|
-
className: "text-4xl md:text-5xl lg:text-6xl font-semibold uppercase text-white",
|
|
976
|
-
style: {
|
|
977
|
-
fontVariant: "small-caps",
|
|
978
|
-
letterSpacing: "0.12em"
|
|
979
|
-
},
|
|
980
|
-
children: name
|
|
981
|
-
}
|
|
982
|
-
);
|
|
983
|
-
}
|
|
984
|
-
function Tagline({ text }) {
|
|
985
|
-
return /* @__PURE__ */ jsx(
|
|
986
|
-
motion.p,
|
|
987
|
-
{
|
|
988
|
-
variants: fadeUpVariants,
|
|
989
|
-
className: "text-lg md:text-xl text-white/70 font-light italic leading-relaxed mt-3",
|
|
990
|
-
children: text
|
|
991
|
-
}
|
|
992
|
-
);
|
|
993
|
-
}
|
|
994
|
-
function MetricsRow({
|
|
995
|
-
metrics
|
|
996
|
-
}) {
|
|
997
|
-
const formattedRealms = metrics.realms.toLocaleString();
|
|
998
|
-
return /* @__PURE__ */ jsxs(
|
|
999
|
-
motion.div,
|
|
1000
|
-
{
|
|
1001
|
-
variants: fadeUpVariants,
|
|
1002
|
-
className: "flex items-center gap-2 font-mono text-xs text-white/50 mt-4 tracking-wide",
|
|
1003
|
-
children: [
|
|
1004
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
1005
|
-
formattedRealms,
|
|
1006
|
-
" realms"
|
|
1007
|
-
] }),
|
|
1008
|
-
/* @__PURE__ */ jsx("span", { className: "text-white/30", children: "\u2022" }),
|
|
1009
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
1010
|
-
metrics.output24h,
|
|
1011
|
-
" output"
|
|
1012
|
-
] }),
|
|
1013
|
-
metrics.rank !== void 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1014
|
-
/* @__PURE__ */ jsx("span", { className: "text-white/30", children: "\u2022" }),
|
|
1015
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
1016
|
-
"Rank #",
|
|
1017
|
-
metrics.rank
|
|
1018
|
-
] })
|
|
1019
|
-
] })
|
|
1020
|
-
]
|
|
1021
|
-
}
|
|
1022
|
-
);
|
|
1023
|
-
}
|
|
1024
|
-
function RailButton({ button }) {
|
|
1025
|
-
const baseClasses = "w-full px-6 py-3 text-sm font-medium tracking-wider uppercase transition-all duration-300 text-center";
|
|
1026
|
-
const variantClasses = {
|
|
1027
|
-
primary: "text-neutral-900 hover:brightness-110 hover:scale-[1.02]",
|
|
1028
|
-
secondary: "bg-transparent border hover:bg-[var(--cluster-accent)]/10",
|
|
1029
|
-
ghost: "bg-transparent border-none text-white/50 hover:text-white/80"
|
|
1030
|
-
};
|
|
1031
|
-
const variantStyles = {
|
|
1032
|
-
primary: {
|
|
1033
|
-
backgroundColor: "var(--cluster-accent)"
|
|
1034
|
-
},
|
|
1035
|
-
secondary: {
|
|
1036
|
-
borderColor: "var(--cluster-accent)",
|
|
1037
|
-
color: "var(--cluster-accent)"
|
|
1038
|
-
},
|
|
1039
|
-
ghost: {}
|
|
1040
|
-
};
|
|
1041
|
-
return /* @__PURE__ */ jsx(
|
|
1042
|
-
motion.a,
|
|
1043
|
-
{
|
|
1044
|
-
variants: fadeUpVariants,
|
|
1045
|
-
href: button.href,
|
|
1046
|
-
className: cn(baseClasses, variantClasses[button.variant]),
|
|
1047
|
-
style: variantStyles[button.variant],
|
|
1048
|
-
...button.external && {
|
|
1049
|
-
target: "_blank",
|
|
1050
|
-
rel: "noopener noreferrer"
|
|
1051
|
-
},
|
|
1052
|
-
children: button.label
|
|
1053
|
-
}
|
|
1054
|
-
);
|
|
1055
|
-
}
|
|
1056
|
-
function ButtonStack({ buttons }) {
|
|
1057
|
-
return /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3 mt-8 w-full max-w-xs", children: buttons.map((button) => /* @__PURE__ */ jsx(RailButton, { button }, button.label)) });
|
|
1058
|
-
}
|
|
1059
|
-
function ClusterRail({
|
|
1060
|
-
name,
|
|
1061
|
-
tagline,
|
|
1062
|
-
metrics,
|
|
1063
|
-
buttons,
|
|
1064
|
-
accentColor,
|
|
1065
|
-
className
|
|
1066
|
-
}) {
|
|
1067
|
-
return /* @__PURE__ */ jsxs(
|
|
1068
|
-
motion.aside,
|
|
1069
|
-
{
|
|
1070
|
-
variants: staggerContainer,
|
|
1071
|
-
initial: "hidden",
|
|
1072
|
-
animate: "visible",
|
|
1073
|
-
className: cn("flex flex-col items-start", className),
|
|
1074
|
-
style: {
|
|
1075
|
-
"--cluster-accent": accentColor
|
|
1076
|
-
},
|
|
1077
|
-
children: [
|
|
1078
|
-
/* @__PURE__ */ jsx(ClusterName, { name }),
|
|
1079
|
-
/* @__PURE__ */ jsx(Tagline, { text: tagline }),
|
|
1080
|
-
/* @__PURE__ */ jsx(MetricsRow, { metrics }),
|
|
1081
|
-
/* @__PURE__ */ jsx(ButtonStack, { buttons })
|
|
1082
|
-
]
|
|
1083
|
-
}
|
|
1084
|
-
);
|
|
1085
|
-
}
|
|
1086
|
-
var containerVariants = {
|
|
1087
|
-
hidden: { opacity: 0 },
|
|
1088
|
-
visible: {
|
|
1089
|
-
opacity: 1,
|
|
1090
|
-
transition: {
|
|
1091
|
-
staggerChildren: 0.12,
|
|
1092
|
-
delayChildren: 0.1
|
|
1093
|
-
}
|
|
1094
|
-
}
|
|
1095
|
-
};
|
|
1096
|
-
var itemVariants = {
|
|
1097
|
-
hidden: { opacity: 0, y: 12 },
|
|
1098
|
-
visible: {
|
|
1099
|
-
opacity: 1,
|
|
1100
|
-
y: 0,
|
|
1101
|
-
transition: {
|
|
1102
|
-
duration: 0.5,
|
|
1103
|
-
ease: [0.22, 1, 0.36, 1]
|
|
1104
|
-
}
|
|
1105
|
-
}
|
|
1106
|
-
};
|
|
1107
|
-
function Description({ text }) {
|
|
1108
|
-
return /* @__PURE__ */ jsx(
|
|
1109
|
-
motion.p,
|
|
1110
|
-
{
|
|
1111
|
-
variants: itemVariants,
|
|
1112
|
-
className: "text-sm text-white/70 leading-relaxed max-w-xs whitespace-pre-line",
|
|
1113
|
-
children: text
|
|
1114
|
-
}
|
|
1115
|
-
);
|
|
1116
|
-
}
|
|
1117
|
-
function CapabilityChips({
|
|
1118
|
-
capabilities,
|
|
1119
|
-
accentColor
|
|
1120
|
-
}) {
|
|
1121
|
-
return /* @__PURE__ */ jsx(motion.div, { variants: itemVariants, className: "flex flex-wrap gap-2", children: capabilities.map((capability) => /* @__PURE__ */ jsx(
|
|
1122
|
-
"span",
|
|
1123
|
-
{
|
|
1124
|
-
className: "px-2.5 py-1 text-[10px] uppercase tracking-widest text-white/80 rounded-sm",
|
|
1125
|
-
style: {
|
|
1126
|
-
backgroundColor: `color-mix(in srgb, ${accentColor} 15%, transparent)`
|
|
1127
|
-
},
|
|
1128
|
-
children: capability
|
|
1129
|
-
},
|
|
1130
|
-
capability
|
|
1131
|
-
)) });
|
|
1132
|
-
}
|
|
1133
|
-
function FastPath({
|
|
1134
|
-
fastPath,
|
|
1135
|
-
accentColor
|
|
1136
|
-
}) {
|
|
1137
|
-
return /* @__PURE__ */ jsxs(
|
|
1138
|
-
motion.a,
|
|
1139
|
-
{
|
|
1140
|
-
variants: itemVariants,
|
|
1141
|
-
href: fastPath.href,
|
|
1142
|
-
className: "group inline-flex items-center gap-2 text-sm transition-colors duration-200 hover:brightness-125",
|
|
1143
|
-
style: { color: accentColor },
|
|
1144
|
-
children: [
|
|
1145
|
-
/* @__PURE__ */ jsx("span", { children: fastPath.label }),
|
|
1146
|
-
/* @__PURE__ */ jsx(
|
|
1147
|
-
"svg",
|
|
1148
|
-
{
|
|
1149
|
-
width: "16",
|
|
1150
|
-
height: "16",
|
|
1151
|
-
viewBox: "0 0 16 16",
|
|
1152
|
-
fill: "none",
|
|
1153
|
-
className: "transition-transform duration-200 group-hover:translate-x-1",
|
|
1154
|
-
children: /* @__PURE__ */ jsx(
|
|
1155
|
-
"path",
|
|
1156
|
-
{
|
|
1157
|
-
d: "M6 4L10 8L6 12",
|
|
1158
|
-
stroke: "currentColor",
|
|
1159
|
-
strokeWidth: "1.5",
|
|
1160
|
-
strokeLinecap: "round",
|
|
1161
|
-
strokeLinejoin: "round"
|
|
1162
|
-
}
|
|
1163
|
-
)
|
|
1164
|
-
}
|
|
1165
|
-
)
|
|
1166
|
-
]
|
|
1167
|
-
}
|
|
1168
|
-
);
|
|
1169
|
-
}
|
|
1170
|
-
function StatusLine({
|
|
1171
|
-
status
|
|
1172
|
-
}) {
|
|
1173
|
-
return /* @__PURE__ */ jsxs(
|
|
1174
|
-
motion.div,
|
|
1175
|
-
{
|
|
1176
|
-
variants: itemVariants,
|
|
1177
|
-
className: "font-mono text-[10px] text-white/50 tracking-wide",
|
|
1178
|
-
children: [
|
|
1179
|
-
"Network: ",
|
|
1180
|
-
status.network,
|
|
1181
|
-
/* @__PURE__ */ jsx("span", { className: "mx-2", children: "\u2022" }),
|
|
1182
|
-
"Verification: ",
|
|
1183
|
-
status.verification,
|
|
1184
|
-
/* @__PURE__ */ jsx("span", { className: "mx-2", children: "\u2022" }),
|
|
1185
|
-
"Fees: ",
|
|
1186
|
-
status.fees
|
|
1187
|
-
]
|
|
1188
|
-
}
|
|
1189
|
-
);
|
|
1190
|
-
}
|
|
1191
|
-
function BriefingPanel({
|
|
1192
|
-
description,
|
|
1193
|
-
capabilities,
|
|
1194
|
-
fastPath,
|
|
1195
|
-
status,
|
|
1196
|
-
accentColor,
|
|
1197
|
-
className
|
|
1198
|
-
}) {
|
|
1199
|
-
return /* @__PURE__ */ jsxs(
|
|
1200
|
-
motion.div,
|
|
1201
|
-
{
|
|
1202
|
-
variants: containerVariants,
|
|
1203
|
-
initial: "hidden",
|
|
1204
|
-
animate: "visible",
|
|
1205
|
-
className: cn("flex flex-col gap-4 rounded-xl p-4 backdrop-blur-xl", className),
|
|
1206
|
-
style: {
|
|
1207
|
-
background: "rgba(2,4,10,0.6)",
|
|
1208
|
-
border: "1px solid rgba(255,255,255,0.06)"
|
|
1209
|
-
},
|
|
1210
|
-
children: [
|
|
1211
|
-
/* @__PURE__ */ jsx(Description, { text: description }),
|
|
1212
|
-
/* @__PURE__ */ jsx(CapabilityChips, { capabilities, accentColor }),
|
|
1213
|
-
/* @__PURE__ */ jsx(FastPath, { fastPath, accentColor }),
|
|
1214
|
-
/* @__PURE__ */ jsx(StatusLine, { status })
|
|
1215
|
-
]
|
|
1216
|
-
}
|
|
1217
|
-
);
|
|
1218
|
-
}
|
|
1219
|
-
function SigilMonument({
|
|
1220
|
-
name,
|
|
1221
|
-
tagline,
|
|
1222
|
-
latinMotto,
|
|
1223
|
-
sigilSrc,
|
|
1224
|
-
accentColor,
|
|
1225
|
-
className
|
|
1226
|
-
}) {
|
|
1227
|
-
const containerRef = useRef(null);
|
|
1228
|
-
const styleId = useId();
|
|
1229
|
-
const [sigilFailed, setSigilFailed] = useState(false);
|
|
1230
|
-
const initials = useMemo(() => {
|
|
1231
|
-
const parts = name.trim().split(/\s+/).filter(Boolean);
|
|
1232
|
-
const letters = parts.map((p) => p[0] ?? "").join("");
|
|
1233
|
-
return letters.slice(0, 2).toUpperCase() || name.slice(0, 2).toUpperCase();
|
|
1234
|
-
}, [name]);
|
|
1235
|
-
useEffect(() => {
|
|
1236
|
-
setSigilFailed(false);
|
|
1237
|
-
}, [sigilSrc]);
|
|
1238
|
-
const mouseX = useMotionValue(0);
|
|
1239
|
-
const mouseY = useMotionValue(0);
|
|
1240
|
-
const springConfig = { damping: 25, stiffness: 150 };
|
|
1241
|
-
const parallaxX = useSpring(
|
|
1242
|
-
useTransform(mouseX, [-1, 1], [-4, 4]),
|
|
1243
|
-
springConfig
|
|
1244
|
-
);
|
|
1245
|
-
const parallaxY = useSpring(
|
|
1246
|
-
useTransform(mouseY, [-1, 1], [-4, 4]),
|
|
1247
|
-
springConfig
|
|
1248
|
-
);
|
|
1249
|
-
const handleMouseMove = (e) => {
|
|
1250
|
-
if (!containerRef.current) return;
|
|
1251
|
-
const rect = containerRef.current.getBoundingClientRect();
|
|
1252
|
-
const centerX = rect.left + rect.width / 2;
|
|
1253
|
-
const centerY = rect.top + rect.height / 2;
|
|
1254
|
-
const normalizedX = (e.clientX - centerX) / (rect.width / 2);
|
|
1255
|
-
const normalizedY = (e.clientY - centerY) / (rect.height / 2);
|
|
1256
|
-
mouseX.set(Math.max(-1, Math.min(1, normalizedX)));
|
|
1257
|
-
mouseY.set(Math.max(-1, Math.min(1, normalizedY)));
|
|
1258
|
-
};
|
|
1259
|
-
const handleMouseLeave = () => {
|
|
1260
|
-
mouseX.set(0);
|
|
1261
|
-
mouseY.set(0);
|
|
1262
|
-
};
|
|
1263
|
-
const shimmerClass = `sigil-shimmer-${styleId.replace(/:/g, "")}`;
|
|
1264
|
-
return /* @__PURE__ */ jsxs(
|
|
1265
|
-
"div",
|
|
1266
|
-
{
|
|
1267
|
-
ref: containerRef,
|
|
1268
|
-
onMouseMove: handleMouseMove,
|
|
1269
|
-
onMouseLeave: handleMouseLeave,
|
|
1270
|
-
className: cn(
|
|
1271
|
-
"relative flex flex-col items-center justify-center",
|
|
1272
|
-
className
|
|
1273
|
-
),
|
|
1274
|
-
style: { "--sigil-accent": accentColor },
|
|
1275
|
-
children: [
|
|
1276
|
-
/* @__PURE__ */ jsx(
|
|
1277
|
-
"style",
|
|
1278
|
-
{
|
|
1279
|
-
dangerouslySetInnerHTML: {
|
|
1280
|
-
__html: `
|
|
1281
|
-
@keyframes ${shimmerClass}-anim {
|
|
1282
|
-
0% { background-position: 200% 0; }
|
|
1283
|
-
100% { background-position: -200% 0; }
|
|
1284
|
-
}
|
|
1285
|
-
.${shimmerClass} {
|
|
1286
|
-
animation: ${shimmerClass}-anim 10s ease-in-out infinite;
|
|
1287
|
-
}
|
|
1288
|
-
`
|
|
1289
|
-
}
|
|
1290
|
-
}
|
|
1291
|
-
),
|
|
1292
|
-
/* @__PURE__ */ jsxs(
|
|
1293
|
-
motion.div,
|
|
1294
|
-
{
|
|
1295
|
-
className: "relative",
|
|
1296
|
-
style: {
|
|
1297
|
-
x: parallaxX,
|
|
1298
|
-
y: parallaxY
|
|
1299
|
-
},
|
|
1300
|
-
children: [
|
|
1301
|
-
/* @__PURE__ */ jsx(
|
|
1302
|
-
"div",
|
|
1303
|
-
{
|
|
1304
|
-
className: "absolute inset-0 pointer-events-none overflow-hidden",
|
|
1305
|
-
"aria-hidden": "true",
|
|
1306
|
-
children: /* @__PURE__ */ jsx(
|
|
1307
|
-
"div",
|
|
1308
|
-
{
|
|
1309
|
-
className: `absolute inset-0 ${shimmerClass}`,
|
|
1310
|
-
style: {
|
|
1311
|
-
background: `linear-gradient(
|
|
1312
|
-
105deg,
|
|
1313
|
-
transparent 40%,
|
|
1314
|
-
${accentColor}15 45%,
|
|
1315
|
-
${accentColor}25 50%,
|
|
1316
|
-
${accentColor}15 55%,
|
|
1317
|
-
transparent 60%
|
|
1318
|
-
)`,
|
|
1319
|
-
backgroundSize: "200% 100%"
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
|
-
)
|
|
1323
|
-
}
|
|
1324
|
-
),
|
|
1325
|
-
!sigilFailed && sigilSrc ? /* @__PURE__ */ jsx(
|
|
1326
|
-
"img",
|
|
1327
|
-
{
|
|
1328
|
-
src: sigilSrc,
|
|
1329
|
-
alt: `${name} sigil`,
|
|
1330
|
-
className: "h-[35vh] min-h-[280px] max-h-[45vh] w-auto object-contain drop-shadow-2xl",
|
|
1331
|
-
style: {
|
|
1332
|
-
filter: `drop-shadow(0 0 60px ${accentColor}40)`
|
|
1333
|
-
},
|
|
1334
|
-
onError: () => setSigilFailed(true)
|
|
1335
|
-
}
|
|
1336
|
-
) : /* @__PURE__ */ jsx(
|
|
1337
|
-
"div",
|
|
1338
|
-
{
|
|
1339
|
-
className: "h-[35vh] min-h-[280px] max-h-[45vh] aspect-square rounded-full flex items-center justify-center",
|
|
1340
|
-
style: {
|
|
1341
|
-
background: `radial-gradient(circle at 30% 30%, ${accentColor}35, transparent 65%), radial-gradient(circle at 70% 80%, ${accentColor}18, transparent 60%), rgba(255,255,255,0.02)`,
|
|
1342
|
-
border: `1px solid ${accentColor}40`,
|
|
1343
|
-
boxShadow: `0 0 60px ${accentColor}30, inset 0 0 40px rgba(255,255,255,0.08)`,
|
|
1344
|
-
filter: `drop-shadow(0 0 60px ${accentColor}40)`
|
|
1345
|
-
},
|
|
1346
|
-
"aria-hidden": "true",
|
|
1347
|
-
children: /* @__PURE__ */ jsx(
|
|
1348
|
-
"div",
|
|
1349
|
-
{
|
|
1350
|
-
className: "font-serif text-6xl text-white/70 tracking-[0.18em]",
|
|
1351
|
-
style: { textShadow: `0 0 30px ${accentColor}30` },
|
|
1352
|
-
children: initials
|
|
1353
|
-
}
|
|
1354
|
-
)
|
|
1355
|
-
}
|
|
1356
|
-
)
|
|
1357
|
-
]
|
|
1358
|
-
}
|
|
1359
|
-
),
|
|
1360
|
-
/* @__PURE__ */ jsxs("div", { className: "mt-10 text-center", children: [
|
|
1361
|
-
/* @__PURE__ */ jsx(
|
|
1362
|
-
"h2",
|
|
1363
|
-
{
|
|
1364
|
-
className: "font-serif text-3xl md:text-4xl text-white/95 mb-3",
|
|
1365
|
-
style: {
|
|
1366
|
-
fontVariant: "small-caps",
|
|
1367
|
-
letterSpacing: "0.12em"
|
|
1368
|
-
},
|
|
1369
|
-
children: name
|
|
1370
|
-
}
|
|
1371
|
-
),
|
|
1372
|
-
/* @__PURE__ */ jsx("p", { className: "font-serif text-lg md:text-xl text-white/60 italic max-w-md leading-relaxed", children: tagline }),
|
|
1373
|
-
latinMotto && /* @__PURE__ */ jsx(
|
|
1374
|
-
"p",
|
|
1375
|
-
{
|
|
1376
|
-
className: "mt-4 font-mono text-[10px] uppercase tracking-[0.2em] text-white/30",
|
|
1377
|
-
"aria-label": "Latin motto",
|
|
1378
|
-
children: latinMotto
|
|
1379
|
-
}
|
|
1380
|
-
)
|
|
1381
|
-
] })
|
|
1382
|
-
]
|
|
1383
|
-
}
|
|
1384
|
-
);
|
|
1385
|
-
}
|
|
1386
|
-
var DEFAULT_CONTENT = {
|
|
1387
|
-
market: "3 new blueprints published today",
|
|
1388
|
-
live: "24 active workflows running",
|
|
1389
|
-
governance: "Proposal #18 \u2014 Voting ends in 6h",
|
|
1390
|
-
progress: "You minted 4 verified artifacts this week"
|
|
1391
|
-
};
|
|
1392
|
-
var MODULE_ICONS = {
|
|
1393
|
-
market: FileText,
|
|
1394
|
-
live: Zap,
|
|
1395
|
-
governance: Vote,
|
|
1396
|
-
progress: Trophy
|
|
1397
|
-
};
|
|
1398
|
-
function LiveStrip({
|
|
1399
|
-
moduleType,
|
|
1400
|
-
content,
|
|
1401
|
-
accentColor,
|
|
1402
|
-
className
|
|
1403
|
-
}) {
|
|
1404
|
-
const Icon = MODULE_ICONS[moduleType];
|
|
1405
|
-
const displayContent = content ?? DEFAULT_CONTENT[moduleType];
|
|
1406
|
-
return /* @__PURE__ */ jsxs(
|
|
1407
|
-
"div",
|
|
1408
|
-
{
|
|
1409
|
-
className: cn(
|
|
1410
|
-
"group flex items-center gap-3 px-4 py-2.5 rounded-lg bg-white/[0.05] backdrop-blur-sm",
|
|
1411
|
-
"transition-colors duration-200 hover:bg-white/[0.10] cursor-pointer",
|
|
1412
|
-
className
|
|
1413
|
-
),
|
|
1414
|
-
children: [
|
|
1415
|
-
/* @__PURE__ */ jsx(
|
|
1416
|
-
Icon,
|
|
1417
|
-
{
|
|
1418
|
-
className: "w-4 h-4 shrink-0 transition-colors duration-200",
|
|
1419
|
-
style: { color: accentColor }
|
|
1420
|
-
}
|
|
1421
|
-
),
|
|
1422
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm text-white/80 font-normal flex-1 truncate", children: displayContent }),
|
|
1423
|
-
/* @__PURE__ */ jsx(
|
|
1424
|
-
ArrowRight,
|
|
1425
|
-
{
|
|
1426
|
-
className: cn(
|
|
1427
|
-
"w-4 h-4 shrink-0 text-white/40",
|
|
1428
|
-
"transition-all duration-200 ease-out",
|
|
1429
|
-
"group-hover:translate-x-1 group-hover:text-white/60"
|
|
1430
|
-
)
|
|
1431
|
-
}
|
|
1432
|
-
)
|
|
1433
|
-
]
|
|
1434
|
-
}
|
|
1435
|
-
);
|
|
1436
|
-
}
|
|
1437
|
-
function useVideoPreload({
|
|
1438
|
-
videoSrc,
|
|
1439
|
-
posterSrc,
|
|
1440
|
-
enabled = true
|
|
1441
|
-
}) {
|
|
1442
|
-
const [isPreloaded, setIsPreloaded] = useState(false);
|
|
1443
|
-
useEffect(() => {
|
|
1444
|
-
if (!enabled || typeof document === "undefined") {
|
|
1445
|
-
return;
|
|
1446
|
-
}
|
|
1447
|
-
const links = [];
|
|
1448
|
-
if (posterSrc) {
|
|
1449
|
-
const posterLink = document.createElement("link");
|
|
1450
|
-
posterLink.rel = "preload";
|
|
1451
|
-
posterLink.as = "image";
|
|
1452
|
-
posterLink.href = posterSrc;
|
|
1453
|
-
document.head.appendChild(posterLink);
|
|
1454
|
-
links.push(posterLink);
|
|
1455
|
-
}
|
|
1456
|
-
if (videoSrc) {
|
|
1457
|
-
const videoLink = document.createElement("link");
|
|
1458
|
-
videoLink.rel = "preload";
|
|
1459
|
-
videoLink.as = "video";
|
|
1460
|
-
videoLink.href = videoSrc;
|
|
1461
|
-
if (videoSrc.endsWith(".webm")) {
|
|
1462
|
-
videoLink.type = "video/webm";
|
|
1463
|
-
} else if (videoSrc.endsWith(".mp4")) {
|
|
1464
|
-
videoLink.type = "video/mp4";
|
|
1465
|
-
}
|
|
1466
|
-
document.head.appendChild(videoLink);
|
|
1467
|
-
links.push(videoLink);
|
|
1468
|
-
}
|
|
1469
|
-
setIsPreloaded(true);
|
|
1470
|
-
return () => {
|
|
1471
|
-
links.forEach((link) => {
|
|
1472
|
-
if (link.parentNode === document.head) {
|
|
1473
|
-
document.head.removeChild(link);
|
|
1474
|
-
}
|
|
1475
|
-
});
|
|
1476
|
-
};
|
|
1477
|
-
}, [videoSrc, posterSrc, enabled]);
|
|
1478
|
-
return { isPreloaded };
|
|
1479
|
-
}
|
|
1480
|
-
function ClusterHero({ cluster, className }) {
|
|
1481
|
-
const config = getClusterConfigWithResolvedUrls(cluster);
|
|
1482
|
-
const fallbackBackground = `radial-gradient(900px 600px at 65% 25%, rgba(${config.accentColorRGB}, 0.22), rgba(0,0,0,0) 62%), radial-gradient(700px 520px at 25% 78%, rgba(${config.accentColorRGB}, 0.10), rgba(0,0,0,0) 58%), #000`;
|
|
1483
|
-
useVideoPreload({
|
|
1484
|
-
videoSrc: config.videoSrc,
|
|
1485
|
-
posterSrc: config.videoPoster
|
|
1486
|
-
});
|
|
1487
|
-
return /* @__PURE__ */ jsxs(
|
|
1488
|
-
"section",
|
|
1489
|
-
{
|
|
1490
|
-
className: cn(
|
|
1491
|
-
"relative min-h-screen h-full w-full overflow-hidden bg-black",
|
|
1492
|
-
className
|
|
1493
|
-
),
|
|
1494
|
-
style: { "--cluster-accent": config.accentColor },
|
|
1495
|
-
children: [
|
|
1496
|
-
/* @__PURE__ */ jsx(
|
|
1497
|
-
VideoBackground,
|
|
1498
|
-
{
|
|
1499
|
-
videoSrc: config.videoSrc,
|
|
1500
|
-
posterSrc: config.videoPoster,
|
|
1501
|
-
preload: true,
|
|
1502
|
-
fallbackBackground,
|
|
1503
|
-
className: "z-0"
|
|
1504
|
-
}
|
|
1505
|
-
),
|
|
1506
|
-
/* @__PURE__ */ jsx(
|
|
1507
|
-
StructuralElements,
|
|
1508
|
-
{
|
|
1509
|
-
accentColor: config.accentColor,
|
|
1510
|
-
className: "z-[5]"
|
|
1511
|
-
}
|
|
1512
|
-
),
|
|
1513
|
-
/* @__PURE__ */ jsx(
|
|
1514
|
-
ClusterAtmosphere,
|
|
1515
|
-
{
|
|
1516
|
-
config: config.atmosphere,
|
|
1517
|
-
accentColor: config.accentColor,
|
|
1518
|
-
className: "z-10"
|
|
1519
|
-
}
|
|
1520
|
-
),
|
|
1521
|
-
/* @__PURE__ */ jsx(GradientVeil, { className: "z-20" }),
|
|
1522
|
-
/* @__PURE__ */ jsx(
|
|
1523
|
-
"div",
|
|
1524
|
-
{
|
|
1525
|
-
className: "absolute z-30",
|
|
1526
|
-
style: { top: "80px", left: "48px", maxWidth: "380px" },
|
|
1527
|
-
children: /* @__PURE__ */ jsx(
|
|
1528
|
-
BriefingPanel,
|
|
1529
|
-
{
|
|
1530
|
-
description: config.description,
|
|
1531
|
-
capabilities: config.capabilities,
|
|
1532
|
-
fastPath: config.fastPath,
|
|
1533
|
-
status: config.status,
|
|
1534
|
-
accentColor: config.accentColor
|
|
1535
|
-
}
|
|
1536
|
-
)
|
|
1537
|
-
}
|
|
1538
|
-
),
|
|
1539
|
-
/* @__PURE__ */ jsx(
|
|
1540
|
-
"div",
|
|
1541
|
-
{
|
|
1542
|
-
className: "absolute z-30",
|
|
1543
|
-
style: { top: "50%", right: "80px", transform: "translateY(-50%)" },
|
|
1544
|
-
children: /* @__PURE__ */ jsx(
|
|
1545
|
-
SigilMonument,
|
|
1546
|
-
{
|
|
1547
|
-
name: config.name,
|
|
1548
|
-
tagline: config.tagline,
|
|
1549
|
-
latinMotto: config.latinMotto,
|
|
1550
|
-
sigilSrc: config.sigilSrc,
|
|
1551
|
-
accentColor: config.accentColor
|
|
1552
|
-
}
|
|
1553
|
-
)
|
|
1554
|
-
}
|
|
1555
|
-
),
|
|
1556
|
-
/* @__PURE__ */ jsx(
|
|
1557
|
-
"div",
|
|
1558
|
-
{
|
|
1559
|
-
className: "absolute z-30",
|
|
1560
|
-
style: { bottom: "80px", left: "50%", transform: "translateX(-50%)", maxWidth: "600px", width: "100%" },
|
|
1561
|
-
children: /* @__PURE__ */ jsx(
|
|
1562
|
-
LiveStrip,
|
|
1563
|
-
{
|
|
1564
|
-
moduleType: config.liveModule,
|
|
1565
|
-
content: config.liveContent,
|
|
1566
|
-
accentColor: config.accentColor
|
|
1567
|
-
}
|
|
1568
|
-
)
|
|
1569
|
-
}
|
|
1570
|
-
),
|
|
1571
|
-
/* @__PURE__ */ jsx(
|
|
1572
|
-
"div",
|
|
1573
|
-
{
|
|
1574
|
-
className: "absolute z-40",
|
|
1575
|
-
style: { bottom: "32px", left: "48px", maxWidth: "280px" },
|
|
1576
|
-
children: /* @__PURE__ */ jsx(
|
|
1577
|
-
ClusterRail,
|
|
1578
|
-
{
|
|
1579
|
-
name: config.name,
|
|
1580
|
-
tagline: config.tagline,
|
|
1581
|
-
metrics: config.metrics,
|
|
1582
|
-
buttons: config.buttons,
|
|
1583
|
-
accentColor: config.accentColor
|
|
1584
|
-
}
|
|
1585
|
-
)
|
|
1586
|
-
}
|
|
1587
|
-
)
|
|
1588
|
-
]
|
|
1589
|
-
}
|
|
1590
|
-
);
|
|
1591
|
-
}
|
|
1592
|
-
var FEATURE_DATA = {
|
|
1593
|
-
alexandria: [
|
|
1594
|
-
{ title: "Knowledge Graph", description: "Interconnected data structures that compound understanding over time", icon: "book" },
|
|
1595
|
-
{ title: "Semantic Search", description: "Query across documents with natural language understanding", icon: "search" },
|
|
1596
|
-
{ title: "Version History", description: "Every edit preserved, every branch trackable", icon: "history" }
|
|
1597
|
-
],
|
|
1598
|
-
alpha: [
|
|
1599
|
-
{ title: "Genesis Protocol", description: "The foundational layer from which all clusters derive", icon: "origin" },
|
|
1600
|
-
{ title: "Core APIs", description: "Stable interfaces that power the entire ecosystem", icon: "api" },
|
|
1601
|
-
{ title: "Identity Layer", description: "Sovereign authentication across all surfaces", icon: "key" }
|
|
1602
|
-
],
|
|
1603
|
-
opus: [
|
|
1604
|
-
{ title: "Diagnostic Engines", description: "AI-powered analysis pipelines for medical imaging and patient data", icon: "scan" },
|
|
1605
|
-
{ title: "Care Protocols", description: "Autonomous coordination of treatment workflows and provider networks", icon: "workflow" },
|
|
1606
|
-
{ title: "Compliance Layer", description: "Built-in HIPAA, SOC2, and regulatory framework adherence", icon: "shield" }
|
|
1607
|
-
],
|
|
1608
|
-
baia: [
|
|
1609
|
-
{ title: "Neural Canvas", description: "Generative models that transform prompts into visual masterpieces", icon: "palette" },
|
|
1610
|
-
{ title: "Sound Synthesis", description: "AI composition engines for music, ambience, and audio design", icon: "waveform" },
|
|
1611
|
-
{ title: "Style Transfer", description: "Cross-modal translation between artistic mediums and formats", icon: "layers" }
|
|
1612
|
-
],
|
|
1613
|
-
kdot: [
|
|
1614
|
-
{ title: "Mesh Network", description: "Distributed connectivity that routes around failures", icon: "network" },
|
|
1615
|
-
{ title: "Protocol Layer", description: "Universal translation between disparate systems", icon: "protocol" },
|
|
1616
|
-
{ title: "Node Discovery", description: "Automatic peer detection and topology mapping", icon: "discovery" }
|
|
1617
|
-
],
|
|
1618
|
-
aegis: [
|
|
1619
|
-
{ title: "Threat Detection", description: "Real-time monitoring for anomalous patterns", icon: "shield" },
|
|
1620
|
-
{ title: "Access Control", description: "Fine-grained permissions and authentication flows", icon: "lock" },
|
|
1621
|
-
{ title: "Audit Trail", description: "Immutable logs of every action and decision", icon: "log" }
|
|
1622
|
-
],
|
|
1623
|
-
providence: [
|
|
1624
|
-
{ title: "Threat Intelligence", description: "Predictive analysis and proactive defense postures", icon: "radar" },
|
|
1625
|
-
{ title: "Incident Response", description: "Automated containment and remediation workflows", icon: "alert" },
|
|
1626
|
-
{ title: "Compliance Engine", description: "Continuous verification against security frameworks", icon: "certificate" }
|
|
1627
|
-
]
|
|
1628
|
-
};
|
|
1629
|
-
function FeatureCard({
|
|
1630
|
-
title,
|
|
1631
|
-
description,
|
|
1632
|
-
accentColor,
|
|
1633
|
-
index
|
|
1634
|
-
}) {
|
|
1635
|
-
return /* @__PURE__ */ jsxs(
|
|
1636
|
-
motion.article,
|
|
1637
|
-
{
|
|
1638
|
-
initial: { opacity: 0, y: 40 },
|
|
1639
|
-
whileInView: { opacity: 1, y: 0 },
|
|
1640
|
-
viewport: { once: true, margin: "-100px" },
|
|
1641
|
-
transition: {
|
|
1642
|
-
duration: 0.6,
|
|
1643
|
-
delay: index * 0.15,
|
|
1644
|
-
ease: [0.22, 1, 0.36, 1]
|
|
1645
|
-
},
|
|
1646
|
-
className: "group relative p-8 bg-zinc-900/80 backdrop-blur-sm border border-zinc-800 hover:border-zinc-700 transition-colors duration-300",
|
|
1647
|
-
children: [
|
|
1648
|
-
/* @__PURE__ */ jsx(
|
|
1649
|
-
"div",
|
|
1650
|
-
{
|
|
1651
|
-
className: "absolute top-0 left-0 w-1 h-0 group-hover:h-full transition-all duration-500",
|
|
1652
|
-
style: { backgroundColor: accentColor }
|
|
1653
|
-
}
|
|
1654
|
-
),
|
|
1655
|
-
/* @__PURE__ */ jsx("h3", { className: "font-serif text-2xl text-white mb-3 tracking-wide", children: title }),
|
|
1656
|
-
/* @__PURE__ */ jsx("p", { className: "text-neutral-400 leading-relaxed", children: description })
|
|
1657
|
-
]
|
|
1658
|
-
}
|
|
1659
|
-
);
|
|
1660
|
-
}
|
|
1661
|
-
function FeatureCardsSection({ clusterId, config }) {
|
|
1662
|
-
const features = FEATURE_DATA[clusterId];
|
|
1663
|
-
return /* @__PURE__ */ jsx("section", { className: "relative z-10 bg-zinc-950 py-32 px-16", children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto", children: [
|
|
1664
|
-
/* @__PURE__ */ jsxs(
|
|
1665
|
-
motion.header,
|
|
1666
|
-
{
|
|
1667
|
-
initial: { opacity: 0, y: 20 },
|
|
1668
|
-
whileInView: { opacity: 1, y: 0 },
|
|
1669
|
-
viewport: { once: true },
|
|
1670
|
-
transition: { duration: 0.6 },
|
|
1671
|
-
className: "mb-16",
|
|
1672
|
-
children: [
|
|
1673
|
-
/* @__PURE__ */ jsx(
|
|
1674
|
-
"span",
|
|
1675
|
-
{
|
|
1676
|
-
className: "font-mono text-xs uppercase tracking-[0.2em]",
|
|
1677
|
-
style: { color: config.accentColor },
|
|
1678
|
-
children: "Capabilities"
|
|
1679
|
-
}
|
|
1680
|
-
),
|
|
1681
|
-
/* @__PURE__ */ jsxs("h2", { className: "font-serif text-5xl text-white mt-4 tracking-wide", children: [
|
|
1682
|
-
"What defines ",
|
|
1683
|
-
config.name
|
|
1684
|
-
] })
|
|
1685
|
-
]
|
|
1686
|
-
}
|
|
1687
|
-
),
|
|
1688
|
-
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-6", children: features.map((feature, index) => /* @__PURE__ */ jsx(
|
|
1689
|
-
FeatureCard,
|
|
1690
|
-
{
|
|
1691
|
-
title: feature.title,
|
|
1692
|
-
description: feature.description,
|
|
1693
|
-
accentColor: config.accentColor,
|
|
1694
|
-
index
|
|
1695
|
-
},
|
|
1696
|
-
feature.title
|
|
1697
|
-
)) })
|
|
1698
|
-
] }) });
|
|
1699
|
-
}
|
|
1700
|
-
var STATS_DATA = {
|
|
1701
|
-
alexandria: [
|
|
1702
|
-
{ value: "2.4M", label: "Documents Indexed" },
|
|
1703
|
-
{ value: "847K", label: "Active Queries/Day" },
|
|
1704
|
-
{ value: "99.97%", label: "Uptime" },
|
|
1705
|
-
{ value: "12ms", label: "Avg Response" }
|
|
1706
|
-
],
|
|
1707
|
-
alpha: [
|
|
1708
|
-
{ value: "1.0", label: "Protocol Version" },
|
|
1709
|
-
{ value: "\u221E", label: "Scalability" },
|
|
1710
|
-
{ value: "100%", label: "Backwards Compatible" },
|
|
1711
|
-
{ value: "0", label: "Breaking Changes" }
|
|
1712
|
-
],
|
|
1713
|
-
opus: [
|
|
1714
|
-
{ value: "2.4M", label: "Diagnostics Processed" },
|
|
1715
|
-
{ value: "847", label: "Active Protocols" },
|
|
1716
|
-
{ value: "99.97%", label: "Compliance Rate" },
|
|
1717
|
-
{ value: "< 2s", label: "Analysis Latency" }
|
|
1718
|
-
],
|
|
1719
|
-
baia: [
|
|
1720
|
-
{ value: "4.2M", label: "Works Generated" },
|
|
1721
|
-
{ value: "156K", label: "Active Artists" },
|
|
1722
|
-
{ value: "847K", label: "Daily Renders" },
|
|
1723
|
-
{ value: "12TB", label: "Media Produced" }
|
|
1724
|
-
],
|
|
1725
|
-
kdot: [
|
|
1726
|
-
{ value: "1.2M", label: "Connected Nodes" },
|
|
1727
|
-
{ value: "47ms", label: "Avg Latency" },
|
|
1728
|
-
{ value: "99.99%", label: "Uptime" },
|
|
1729
|
-
{ value: "8.4PB", label: "Daily Throughput" }
|
|
1730
|
-
],
|
|
1731
|
-
aegis: [
|
|
1732
|
-
{ value: "0", label: "Breaches" },
|
|
1733
|
-
{ value: "2.1B", label: "Threats Blocked" },
|
|
1734
|
-
{ value: "99.97%", label: "Detection Rate" },
|
|
1735
|
-
{ value: "< 1s", label: "Response Time" }
|
|
1736
|
-
],
|
|
1737
|
-
providence: [
|
|
1738
|
-
{ value: "24/7", label: "Monitoring" },
|
|
1739
|
-
{ value: "847K", label: "Threats Analyzed" },
|
|
1740
|
-
{ value: "99.99%", label: "Uptime" },
|
|
1741
|
-
{ value: "< 50ms", label: "Alert Latency" }
|
|
1742
|
-
]
|
|
1743
|
-
};
|
|
1744
|
-
function StatBlock({
|
|
1745
|
-
value,
|
|
1746
|
-
label,
|
|
1747
|
-
accentColor,
|
|
1748
|
-
index
|
|
1749
|
-
}) {
|
|
1750
|
-
return /* @__PURE__ */ jsxs(
|
|
1751
|
-
motion.div,
|
|
1752
|
-
{
|
|
1753
|
-
initial: { opacity: 0, scale: 0.9 },
|
|
1754
|
-
whileInView: { opacity: 1, scale: 1 },
|
|
1755
|
-
viewport: { once: true, margin: "-50px" },
|
|
1756
|
-
transition: {
|
|
1757
|
-
duration: 0.5,
|
|
1758
|
-
delay: index * 0.1,
|
|
1759
|
-
ease: [0.22, 1, 0.36, 1]
|
|
1760
|
-
},
|
|
1761
|
-
className: "text-center p-8",
|
|
1762
|
-
children: [
|
|
1763
|
-
/* @__PURE__ */ jsx(
|
|
1764
|
-
"div",
|
|
1765
|
-
{
|
|
1766
|
-
className: "font-mono text-5xl md:text-6xl font-light mb-3",
|
|
1767
|
-
style: { color: accentColor },
|
|
1768
|
-
children: value
|
|
1769
|
-
}
|
|
1770
|
-
),
|
|
1771
|
-
/* @__PURE__ */ jsx("div", { className: "text-neutral-400 uppercase tracking-[0.15em] text-sm", children: label })
|
|
1772
|
-
]
|
|
1773
|
-
}
|
|
1774
|
-
);
|
|
1775
|
-
}
|
|
1776
|
-
function ClusterStatsSection({ clusterId, config }) {
|
|
1777
|
-
const stats = STATS_DATA[clusterId];
|
|
1778
|
-
return /* @__PURE__ */ jsx("section", { className: "relative z-10 bg-black py-32 px-16", children: /* @__PURE__ */ jsxs("div", { className: "max-w-6xl mx-auto", children: [
|
|
1779
|
-
/* @__PURE__ */ jsx(
|
|
1780
|
-
motion.div,
|
|
1781
|
-
{
|
|
1782
|
-
initial: { scaleX: 0 },
|
|
1783
|
-
whileInView: { scaleX: 1 },
|
|
1784
|
-
viewport: { once: true },
|
|
1785
|
-
transition: { duration: 1, ease: [0.22, 1, 0.36, 1] },
|
|
1786
|
-
className: "h-px mb-16 origin-left",
|
|
1787
|
-
style: { backgroundColor: config.accentColor }
|
|
1788
|
-
}
|
|
1789
|
-
),
|
|
1790
|
-
/* @__PURE__ */ jsx("div", { className: "grid grid-cols-2 md:grid-cols-4 gap-8", children: stats.map((stat, index) => /* @__PURE__ */ jsx(
|
|
1791
|
-
StatBlock,
|
|
1792
|
-
{
|
|
1793
|
-
value: stat.value,
|
|
1794
|
-
label: stat.label,
|
|
1795
|
-
accentColor: config.accentColor,
|
|
1796
|
-
index
|
|
1797
|
-
},
|
|
1798
|
-
stat.label
|
|
1799
|
-
)) }),
|
|
1800
|
-
/* @__PURE__ */ jsx(
|
|
1801
|
-
motion.div,
|
|
1802
|
-
{
|
|
1803
|
-
initial: { scaleX: 0 },
|
|
1804
|
-
whileInView: { scaleX: 1 },
|
|
1805
|
-
viewport: { once: true },
|
|
1806
|
-
transition: { duration: 1, ease: [0.22, 1, 0.36, 1] },
|
|
1807
|
-
className: "h-px mt-16 origin-right",
|
|
1808
|
-
style: { backgroundColor: config.accentColor }
|
|
1809
|
-
}
|
|
1810
|
-
)
|
|
1811
|
-
] }) });
|
|
1812
|
-
}
|
|
1813
|
-
var CTA_DATA = {
|
|
1814
|
-
alexandria: {
|
|
1815
|
-
headline: "Begin your research",
|
|
1816
|
-
subtext: "Join thousands of scholars building the world's knowledge commons",
|
|
1817
|
-
buttonLabel: "Enter Alexandria"
|
|
1818
|
-
},
|
|
1819
|
-
alpha: {
|
|
1820
|
-
headline: "Start from the source",
|
|
1821
|
-
subtext: "Everything begins here. Every journey starts with Alpha.",
|
|
1822
|
-
buttonLabel: "Initialize"
|
|
1823
|
-
},
|
|
1824
|
-
opus: {
|
|
1825
|
-
headline: "Healthcare, autonomous",
|
|
1826
|
-
subtext: "Diagnostic pipelines and care protocols that run themselves.",
|
|
1827
|
-
buttonLabel: "Enter Opus"
|
|
1828
|
-
},
|
|
1829
|
-
baia: {
|
|
1830
|
-
headline: "Art from the machine",
|
|
1831
|
-
subtext: "Generative works that blur the line between human and artificial creativity.",
|
|
1832
|
-
buttonLabel: "Open Studio"
|
|
1833
|
-
},
|
|
1834
|
-
kdot: {
|
|
1835
|
-
headline: "Join the mesh",
|
|
1836
|
-
subtext: "Connect to the network that never sleeps.",
|
|
1837
|
-
buttonLabel: "Connect Now"
|
|
1838
|
-
},
|
|
1839
|
-
aegis: {
|
|
1840
|
-
headline: "Secure your realm",
|
|
1841
|
-
subtext: "Protection that scales with your ambition.",
|
|
1842
|
-
buttonLabel: "Activate Shield"
|
|
1843
|
-
},
|
|
1844
|
-
providence: {
|
|
1845
|
-
headline: "Foresee. Prevent. Prevail.",
|
|
1846
|
-
subtext: "Security through foresight. Protection before the threat arrives.",
|
|
1847
|
-
buttonLabel: "Enter Providence"
|
|
1848
|
-
}
|
|
1849
|
-
};
|
|
1850
|
-
function CTASection({ clusterId, config }) {
|
|
1851
|
-
const cta = CTA_DATA[clusterId];
|
|
1852
|
-
return /* @__PURE__ */ jsx("section", { className: "relative z-10 bg-zinc-950 py-48 px-16", children: /* @__PURE__ */ jsxs(
|
|
1853
|
-
motion.div,
|
|
1854
|
-
{
|
|
1855
|
-
initial: { opacity: 0, y: 60 },
|
|
1856
|
-
whileInView: { opacity: 1, y: 0 },
|
|
1857
|
-
viewport: { once: true, margin: "-100px" },
|
|
1858
|
-
transition: { duration: 0.8, ease: [0.22, 1, 0.36, 1] },
|
|
1859
|
-
className: "max-w-4xl mx-auto text-center",
|
|
1860
|
-
children: [
|
|
1861
|
-
/* @__PURE__ */ jsx("h2", { className: "font-serif text-6xl md:text-7xl text-white tracking-wide mb-8 leading-[1.1]", children: cta.headline }),
|
|
1862
|
-
/* @__PURE__ */ jsx("p", { className: "text-xl text-neutral-400 mb-12 max-w-2xl mx-auto leading-relaxed", children: cta.subtext }),
|
|
1863
|
-
/* @__PURE__ */ jsx(
|
|
1864
|
-
"a",
|
|
1865
|
-
{
|
|
1866
|
-
href: `/clusters/${clusterId}`,
|
|
1867
|
-
className: "inline-block px-12 py-5 text-lg font-medium tracking-wider uppercase text-neutral-900 transition-all duration-300 hover:brightness-110 hover:scale-105",
|
|
1868
|
-
style: { backgroundColor: config.accentColor },
|
|
1869
|
-
children: cta.buttonLabel
|
|
1870
|
-
}
|
|
1871
|
-
)
|
|
1872
|
-
]
|
|
1873
|
-
}
|
|
1874
|
-
) });
|
|
1875
|
-
}
|
|
1876
|
-
function ClusterHeroPage({ clusterId, className }) {
|
|
1877
|
-
const containerRef = useRef(null);
|
|
1878
|
-
const config = getClusterConfigWithResolvedUrls(clusterId);
|
|
1879
|
-
const { scrollYProgress } = useScroll({
|
|
1880
|
-
target: containerRef,
|
|
1881
|
-
offset: ["start start", "end start"]
|
|
1882
|
-
});
|
|
1883
|
-
const heroOpacity = useTransform(scrollYProgress, [0, 0.15], [1, 0.3]);
|
|
1884
|
-
const heroY = useTransform(scrollYProgress, [0, 0.3], [0, -100]);
|
|
1885
|
-
return /* @__PURE__ */ jsxs(
|
|
1886
|
-
"main",
|
|
1887
|
-
{
|
|
1888
|
-
ref: containerRef,
|
|
1889
|
-
className: cn(
|
|
1890
|
-
"relative scroll-smooth",
|
|
1891
|
-
className
|
|
1892
|
-
),
|
|
1893
|
-
children: [
|
|
1894
|
-
/* @__PURE__ */ jsx(
|
|
1895
|
-
motion.div,
|
|
1896
|
-
{
|
|
1897
|
-
className: "sticky top-0 h-screen overflow-hidden",
|
|
1898
|
-
style: { opacity: heroOpacity },
|
|
1899
|
-
children: /* @__PURE__ */ jsx(motion.div, { style: { y: heroY }, className: "h-full", children: /* @__PURE__ */ jsx(ClusterHero, { cluster: clusterId, className: "h-full" }) })
|
|
1900
|
-
}
|
|
1901
|
-
),
|
|
1902
|
-
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
1903
|
-
/* @__PURE__ */ jsx(FeatureCardsSection, { clusterId, config }),
|
|
1904
|
-
/* @__PURE__ */ jsx(ClusterStatsSection, { clusterId, config }),
|
|
1905
|
-
/* @__PURE__ */ jsx(CTASection, { clusterId, config })
|
|
1906
|
-
] })
|
|
1907
|
-
]
|
|
1908
|
-
}
|
|
1909
|
-
);
|
|
1910
|
-
}
|
|
1911
|
-
|
|
1912
|
-
export { CLUSTER_CONFIGS, ClusterHero, ClusterHeroPage, getClusterConfig };
|
|
1913
|
-
//# sourceMappingURL=chunk-R7HUOK2D.js.map
|
|
1914
|
-
//# sourceMappingURL=chunk-R7HUOK2D.js.map
|