@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.
Files changed (226) hide show
  1. package/dist/audio/index.js +1145 -5
  2. package/dist/audio/index.js.map +1 -1
  3. package/dist/components/index.js +3187 -10
  4. package/dist/components/index.js.map +1 -1
  5. package/dist/core.js +19714 -12
  6. package/dist/core.js.map +1 -1
  7. package/dist/emotion/index.js +1 -1
  8. package/dist/emotion/index.js.map +1 -1
  9. package/dist/hooks/index.js +941 -6
  10. package/dist/hooks/index.js.map +1 -1
  11. package/dist/index.js +31841 -183
  12. package/dist/index.js.map +1 -1
  13. package/dist/primitives/index.js +21111 -57
  14. package/dist/primitives/index.js.map +1 -1
  15. package/dist/protocol/index.js +360 -2
  16. package/dist/protocol/index.js.map +1 -1
  17. package/dist/speakeasy/index.js +2786 -38
  18. package/dist/speakeasy/index.js.map +1 -1
  19. package/dist/styles.css +1 -1
  20. package/dist/theme/index.js +1150 -3
  21. package/dist/theme/index.js.map +1 -1
  22. package/dist/vision/index.js +370 -2
  23. package/dist/vision/index.js.map +1 -1
  24. package/dist/workspace/index.js +16824 -2
  25. package/dist/workspace/index.js.map +1 -1
  26. package/package.json +16 -10
  27. package/dist/AuroraBackground-AP6ZHVFA.js +0 -6
  28. package/dist/AuroraBackground-AP6ZHVFA.js.map +0 -1
  29. package/dist/BentoGrid-CDARICNM.js +0 -6
  30. package/dist/BentoGrid-CDARICNM.js.map +0 -1
  31. package/dist/CommandPalette-JCWJKRBY.js +0 -6
  32. package/dist/CommandPalette-JCWJKRBY.js.map +0 -1
  33. package/dist/Glass-H4X4ZI4P.js +0 -7
  34. package/dist/Glass-H4X4ZI4P.js.map +0 -1
  35. package/dist/GlitchText-KLQ57PPY.js +0 -6
  36. package/dist/GlitchText-KLQ57PPY.js.map +0 -1
  37. package/dist/GlowButton-VGBPMZO7.js +0 -6
  38. package/dist/GlowButton-VGBPMZO7.js.map +0 -1
  39. package/dist/Graph3D-GO7N2EZQ.js +0 -540
  40. package/dist/Graph3D-GO7N2EZQ.js.map +0 -1
  41. package/dist/HUDProgressRing-N6C5NAEV.js +0 -6
  42. package/dist/HUDProgressRing-N6C5NAEV.js.map +0 -1
  43. package/dist/KPIStat-PBQK27ZB.js +0 -6
  44. package/dist/KPIStat-PBQK27ZB.js.map +0 -1
  45. package/dist/NeonToast-W5F7MU3U.js +0 -6
  46. package/dist/NeonToast-W5F7MU3U.js.map +0 -1
  47. package/dist/ParticleField-WK6CNHWU.js +0 -51
  48. package/dist/ParticleField-WK6CNHWU.js.map +0 -1
  49. package/dist/TextGenerateEffect-EUCEIIUJ.js +0 -6
  50. package/dist/TextGenerateEffect-EUCEIIUJ.js.map +0 -1
  51. package/dist/ThreeDCard-VH5I3SSY.js +0 -6
  52. package/dist/ThreeDCard-VH5I3SSY.js.map +0 -1
  53. package/dist/TypingAnimation-GIWOHPIX.js +0 -6
  54. package/dist/TypingAnimation-GIWOHPIX.js.map +0 -1
  55. package/dist/alert-dialog-QOSYBIIE.js +0 -19
  56. package/dist/alert-dialog-QOSYBIIE.js.map +0 -1
  57. package/dist/avatar-N5R37PCU.js +0 -10
  58. package/dist/avatar-N5R37PCU.js.map +0 -1
  59. package/dist/badge-GTVIIGPY.js +0 -8
  60. package/dist/badge-GTVIIGPY.js.map +0 -1
  61. package/dist/button-D7IMSV2D.js +0 -8
  62. package/dist/button-D7IMSV2D.js.map +0 -1
  63. package/dist/chunk-3CMPQOMY.js +0 -69
  64. package/dist/chunk-3CMPQOMY.js.map +0 -1
  65. package/dist/chunk-3OQT6IYR.js +0 -41
  66. package/dist/chunk-3OQT6IYR.js.map +0 -1
  67. package/dist/chunk-43B2WVLS.js +0 -85
  68. package/dist/chunk-43B2WVLS.js.map +0 -1
  69. package/dist/chunk-4SRFO5W3.js +0 -121
  70. package/dist/chunk-4SRFO5W3.js.map +0 -1
  71. package/dist/chunk-5IZELOOU.js +0 -362
  72. package/dist/chunk-5IZELOOU.js.map +0 -1
  73. package/dist/chunk-6DM4ACSS.js +0 -154
  74. package/dist/chunk-6DM4ACSS.js.map +0 -1
  75. package/dist/chunk-6IGT34PC.js +0 -50
  76. package/dist/chunk-6IGT34PC.js.map +0 -1
  77. package/dist/chunk-6RKBCJHN.js +0 -194
  78. package/dist/chunk-6RKBCJHN.js.map +0 -1
  79. package/dist/chunk-6RX2WGCO.js +0 -108
  80. package/dist/chunk-6RX2WGCO.js.map +0 -1
  81. package/dist/chunk-7K4WZM3U.js +0 -189
  82. package/dist/chunk-7K4WZM3U.js.map +0 -1
  83. package/dist/chunk-7MDBHJPT.js +0 -407
  84. package/dist/chunk-7MDBHJPT.js.map +0 -1
  85. package/dist/chunk-7UQD6ROV.js +0 -9
  86. package/dist/chunk-7UQD6ROV.js.map +0 -1
  87. package/dist/chunk-AFNIVLZP.js +0 -1069
  88. package/dist/chunk-AFNIVLZP.js.map +0 -1
  89. package/dist/chunk-ANWYRO6A.js +0 -407
  90. package/dist/chunk-ANWYRO6A.js.map +0 -1
  91. package/dist/chunk-DIXPOHDO.js +0 -71
  92. package/dist/chunk-DIXPOHDO.js.map +0 -1
  93. package/dist/chunk-DWYMKYPI.js +0 -3
  94. package/dist/chunk-DWYMKYPI.js.map +0 -1
  95. package/dist/chunk-E3NVDCZG.js +0 -280
  96. package/dist/chunk-E3NVDCZG.js.map +0 -1
  97. package/dist/chunk-EBM7YBKL.js +0 -399
  98. package/dist/chunk-EBM7YBKL.js.map +0 -1
  99. package/dist/chunk-EPAM7IWW.js +0 -294
  100. package/dist/chunk-EPAM7IWW.js.map +0 -1
  101. package/dist/chunk-EXQ7GYRS.js +0 -134
  102. package/dist/chunk-EXQ7GYRS.js.map +0 -1
  103. package/dist/chunk-F4QTUZ3C.js +0 -136
  104. package/dist/chunk-F4QTUZ3C.js.map +0 -1
  105. package/dist/chunk-FEW533R2.js +0 -105
  106. package/dist/chunk-FEW533R2.js.map +0 -1
  107. package/dist/chunk-FFZLJKC7.js +0 -270
  108. package/dist/chunk-FFZLJKC7.js.map +0 -1
  109. package/dist/chunk-GEAMOBF7.js +0 -8486
  110. package/dist/chunk-GEAMOBF7.js.map +0 -1
  111. package/dist/chunk-GRTRSCTD.js +0 -74
  112. package/dist/chunk-GRTRSCTD.js.map +0 -1
  113. package/dist/chunk-IKGYOGLK.js +0 -16
  114. package/dist/chunk-IKGYOGLK.js.map +0 -1
  115. package/dist/chunk-IQ7WYWVJ.js +0 -73
  116. package/dist/chunk-IQ7WYWVJ.js.map +0 -1
  117. package/dist/chunk-IXIVWQLF.js +0 -543
  118. package/dist/chunk-IXIVWQLF.js.map +0 -1
  119. package/dist/chunk-JCJU57RC.js +0 -115
  120. package/dist/chunk-JCJU57RC.js.map +0 -1
  121. package/dist/chunk-KORSTBU4.js +0 -117
  122. package/dist/chunk-KORSTBU4.js.map +0 -1
  123. package/dist/chunk-KSEZ6UM2.js +0 -235
  124. package/dist/chunk-KSEZ6UM2.js.map +0 -1
  125. package/dist/chunk-MHPF7R3O.js +0 -1376
  126. package/dist/chunk-MHPF7R3O.js.map +0 -1
  127. package/dist/chunk-MPC5IH7E.js +0 -81
  128. package/dist/chunk-MPC5IH7E.js.map +0 -1
  129. package/dist/chunk-MQIU2NYA.js +0 -114
  130. package/dist/chunk-MQIU2NYA.js.map +0 -1
  131. package/dist/chunk-NYMBJOGR.js +0 -2192
  132. package/dist/chunk-NYMBJOGR.js.map +0 -1
  133. package/dist/chunk-OBZD2M3C.js +0 -169
  134. package/dist/chunk-OBZD2M3C.js.map +0 -1
  135. package/dist/chunk-ODM2AG6G.js +0 -176
  136. package/dist/chunk-ODM2AG6G.js.map +0 -1
  137. package/dist/chunk-ONDKF5LP.js +0 -53
  138. package/dist/chunk-ONDKF5LP.js.map +0 -1
  139. package/dist/chunk-P25YCWQB.js +0 -41
  140. package/dist/chunk-P25YCWQB.js.map +0 -1
  141. package/dist/chunk-PFYVNM6H.js +0 -14
  142. package/dist/chunk-PFYVNM6H.js.map +0 -1
  143. package/dist/chunk-PWNNSGFL.js +0 -20
  144. package/dist/chunk-PWNNSGFL.js.map +0 -1
  145. package/dist/chunk-Q2PGZVOT.js +0 -36
  146. package/dist/chunk-Q2PGZVOT.js.map +0 -1
  147. package/dist/chunk-Q2XDMV7U.js +0 -76
  148. package/dist/chunk-Q2XDMV7U.js.map +0 -1
  149. package/dist/chunk-QG7FH2FI.js +0 -45
  150. package/dist/chunk-QG7FH2FI.js.map +0 -1
  151. package/dist/chunk-R7HUOK2D.js +0 -1914
  152. package/dist/chunk-R7HUOK2D.js.map +0 -1
  153. package/dist/chunk-REUYY7G5.js +0 -773
  154. package/dist/chunk-REUYY7G5.js.map +0 -1
  155. package/dist/chunk-RHC2Z2HT.js +0 -199
  156. package/dist/chunk-RHC2Z2HT.js.map +0 -1
  157. package/dist/chunk-RMCVLIFE.js +0 -23
  158. package/dist/chunk-RMCVLIFE.js.map +0 -1
  159. package/dist/chunk-ROZLTXGR.js +0 -234
  160. package/dist/chunk-ROZLTXGR.js.map +0 -1
  161. package/dist/chunk-RSS2C2O3.js +0 -17
  162. package/dist/chunk-RSS2C2O3.js.map +0 -1
  163. package/dist/chunk-SAGCG5SH.js +0 -355
  164. package/dist/chunk-SAGCG5SH.js.map +0 -1
  165. package/dist/chunk-TM6AOUSD.js +0 -40
  166. package/dist/chunk-TM6AOUSD.js.map +0 -1
  167. package/dist/chunk-TPK4BYCO.js +0 -970
  168. package/dist/chunk-TPK4BYCO.js.map +0 -1
  169. package/dist/chunk-UNQIL4K2.js +0 -34
  170. package/dist/chunk-UNQIL4K2.js.map +0 -1
  171. package/dist/chunk-UUG6L75Y.js +0 -47
  172. package/dist/chunk-UUG6L75Y.js.map +0 -1
  173. package/dist/chunk-V2SYMV4W.js +0 -114
  174. package/dist/chunk-V2SYMV4W.js.map +0 -1
  175. package/dist/chunk-V7EN5CTH.js +0 -130
  176. package/dist/chunk-V7EN5CTH.js.map +0 -1
  177. package/dist/chunk-VITKG2HL.js +0 -1125
  178. package/dist/chunk-VITKG2HL.js.map +0 -1
  179. package/dist/chunk-VYEWU5LO.js +0 -2631
  180. package/dist/chunk-VYEWU5LO.js.map +0 -1
  181. package/dist/chunk-W67QAGSH.js +0 -178
  182. package/dist/chunk-W67QAGSH.js.map +0 -1
  183. package/dist/chunk-WWBIN6KV.js +0 -1353
  184. package/dist/chunk-WWBIN6KV.js.map +0 -1
  185. package/dist/chunk-X77Z4PFB.js +0 -224
  186. package/dist/chunk-X77Z4PFB.js.map +0 -1
  187. package/dist/chunk-X7VG7OTT.js +0 -8
  188. package/dist/chunk-X7VG7OTT.js.map +0 -1
  189. package/dist/chunk-XE4K2SGI.js +0 -74
  190. package/dist/chunk-XE4K2SGI.js.map +0 -1
  191. package/dist/chunk-YIUG7IJK.js +0 -628
  192. package/dist/chunk-YIUG7IJK.js.map +0 -1
  193. package/dist/chunk-YNVN3V4Y.js +0 -13
  194. package/dist/chunk-YNVN3V4Y.js.map +0 -1
  195. package/dist/chunk-Z2S54IZX.js +0 -198
  196. package/dist/chunk-Z2S54IZX.js.map +0 -1
  197. package/dist/chunk-ZR6AH25Z.js +0 -17
  198. package/dist/chunk-ZR6AH25Z.js.map +0 -1
  199. package/dist/dialog-SPM3DTTI.js +0 -17
  200. package/dist/dialog-SPM3DTTI.js.map +0 -1
  201. package/dist/dropdown-menu-HMTWKWGK.js +0 -21
  202. package/dist/dropdown-menu-HMTWKWGK.js.map +0 -1
  203. package/dist/input-BH4P4S26.js +0 -6
  204. package/dist/input-BH4P4S26.js.map +0 -1
  205. package/dist/label-5Z4Q6VER.js +0 -8
  206. package/dist/label-5Z4Q6VER.js.map +0 -1
  207. package/dist/popover-IFOUXYLI.js +0 -18
  208. package/dist/popover-IFOUXYLI.js.map +0 -1
  209. package/dist/scroll-area-DJXNW6QX.js +0 -14
  210. package/dist/scroll-area-DJXNW6QX.js.map +0 -1
  211. package/dist/select-FZ277C3G.js +0 -22
  212. package/dist/select-FZ277C3G.js.map +0 -1
  213. package/dist/separator-BTMLN4NB.js +0 -8
  214. package/dist/separator-BTMLN4NB.js.map +0 -1
  215. package/dist/skeleton-DXIWBH4W.js +0 -6
  216. package/dist/skeleton-DXIWBH4W.js.map +0 -1
  217. package/dist/switch-4MCXIZBY.js +0 -13
  218. package/dist/switch-4MCXIZBY.js.map +0 -1
  219. package/dist/tabs-O7AW3APK.js +0 -17
  220. package/dist/tabs-O7AW3APK.js.map +0 -1
  221. package/dist/textarea-IB5WAFDO.js +0 -6
  222. package/dist/textarea-IB5WAFDO.js.map +0 -1
  223. package/dist/toggle-XVPPG6P4.js +0 -10
  224. package/dist/toggle-XVPPG6P4.js.map +0 -1
  225. package/dist/tooltip-JICZTD4F.js +0 -18
  226. package/dist/tooltip-JICZTD4F.js.map +0 -1
@@ -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