@bergetai/ui 0.14.1 → 0.15.0

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 (598) hide show
  1. package/README.md +32 -46
  2. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  3. package/dist/components/alert/Alert.cjs +31 -0
  4. package/dist/components/alert/Alert.cjs.map +1 -0
  5. package/dist/components/alert/Alert.d.cts +14 -0
  6. package/dist/components/alert/Alert.d.cts.map +1 -0
  7. package/dist/components/alert/Alert.d.mts +14 -0
  8. package/dist/components/alert/Alert.d.mts.map +1 -0
  9. package/dist/components/alert/Alert.mjs +27 -0
  10. package/dist/components/alert/Alert.mjs.map +1 -0
  11. package/dist/components/alert/index.d.cts +3 -0
  12. package/dist/components/alert/index.d.mts +3 -0
  13. package/dist/components/alert-dialog/AlertDialog.cjs +95 -0
  14. package/dist/components/alert-dialog/AlertDialog.cjs.map +1 -0
  15. package/dist/components/alert-dialog/AlertDialog.d.cts +46 -0
  16. package/dist/components/alert-dialog/AlertDialog.d.cts.map +1 -0
  17. package/dist/components/alert-dialog/AlertDialog.d.mts +46 -0
  18. package/dist/components/alert-dialog/AlertDialog.d.mts.map +1 -0
  19. package/dist/components/alert-dialog/AlertDialog.mjs +83 -0
  20. package/dist/components/alert-dialog/AlertDialog.mjs.map +1 -0
  21. package/dist/components/alert-dialog/index.d.cts +2 -0
  22. package/dist/components/alert-dialog/index.d.mts +2 -0
  23. package/dist/components/badge/Badge.cjs +57 -0
  24. package/dist/components/badge/Badge.cjs.map +1 -0
  25. package/dist/components/badge/Badge.d.cts +16 -0
  26. package/dist/components/badge/Badge.d.cts.map +1 -0
  27. package/dist/components/badge/Badge.d.mts +16 -0
  28. package/dist/components/badge/Badge.d.mts.map +1 -0
  29. package/dist/components/badge/Badge.mjs +55 -0
  30. package/dist/components/badge/Badge.mjs.map +1 -0
  31. package/dist/components/badge/index.d.cts +2 -0
  32. package/dist/components/badge/index.d.mts +2 -0
  33. package/dist/components/berget-logo/BergetLogo.cjs +87 -0
  34. package/dist/components/berget-logo/BergetLogo.cjs.map +1 -0
  35. package/dist/components/berget-logo/BergetLogo.d.cts +14 -0
  36. package/dist/components/berget-logo/BergetLogo.d.cts.map +1 -0
  37. package/dist/components/berget-logo/BergetLogo.d.mts +14 -0
  38. package/dist/components/berget-logo/BergetLogo.d.mts.map +1 -0
  39. package/dist/components/berget-logo/BergetLogo.mjs +85 -0
  40. package/dist/components/berget-logo/BergetLogo.mjs.map +1 -0
  41. package/dist/components/berget-logo/index.d.cts +2 -0
  42. package/dist/components/berget-logo/index.d.mts +2 -0
  43. package/dist/components/box/Box.cjs +67 -0
  44. package/dist/components/box/Box.cjs.map +1 -0
  45. package/dist/components/box/Box.d.cts +21 -0
  46. package/dist/components/box/Box.d.cts.map +1 -0
  47. package/dist/components/box/Box.d.mts +21 -0
  48. package/dist/components/box/Box.d.mts.map +1 -0
  49. package/dist/components/box/Box.mjs +64 -0
  50. package/dist/components/box/Box.mjs.map +1 -0
  51. package/dist/components/box/index.d.cts +2 -0
  52. package/dist/components/box/index.d.mts +2 -0
  53. package/dist/components/button/Button.cjs +75 -0
  54. package/dist/components/button/Button.cjs.map +1 -0
  55. package/dist/components/button/Button.d.cts +19 -0
  56. package/dist/components/button/Button.d.cts.map +1 -0
  57. package/dist/components/button/Button.d.mts +19 -0
  58. package/dist/components/button/Button.d.mts.map +1 -0
  59. package/dist/components/button/Button.mjs +74 -0
  60. package/dist/components/button/Button.mjs.map +1 -0
  61. package/dist/components/button/index.d.cts +3 -0
  62. package/dist/components/button/index.d.mts +3 -0
  63. package/dist/components/card/Card.cjs +36 -0
  64. package/dist/components/card/Card.cjs.map +1 -0
  65. package/dist/components/card/Card.d.cts +15 -0
  66. package/dist/components/card/Card.d.cts.map +1 -0
  67. package/dist/components/card/Card.d.mts +15 -0
  68. package/dist/components/card/Card.d.mts.map +1 -0
  69. package/dist/components/card/Card.mjs +28 -0
  70. package/dist/components/card/Card.mjs.map +1 -0
  71. package/dist/components/card/index.d.cts +3 -0
  72. package/dist/components/card/index.d.mts +3 -0
  73. package/dist/components/checkbox/Checkbox.cjs +87 -0
  74. package/dist/components/checkbox/Checkbox.cjs.map +1 -0
  75. package/dist/components/checkbox/Checkbox.d.cts +18 -0
  76. package/dist/components/checkbox/Checkbox.d.cts.map +1 -0
  77. package/dist/components/checkbox/Checkbox.d.mts +18 -0
  78. package/dist/components/checkbox/Checkbox.d.mts.map +1 -0
  79. package/dist/components/checkbox/Checkbox.mjs +84 -0
  80. package/dist/components/checkbox/Checkbox.mjs.map +1 -0
  81. package/dist/components/checkbox/index.d.cts +2 -0
  82. package/dist/components/checkbox/index.d.mts +2 -0
  83. package/dist/components/code-block/CodeBlock.cjs +58 -0
  84. package/dist/components/code-block/CodeBlock.cjs.map +1 -0
  85. package/dist/components/code-block/CodeBlock.d.cts +10 -0
  86. package/dist/components/code-block/CodeBlock.d.cts.map +1 -0
  87. package/dist/components/code-block/CodeBlock.d.mts +10 -0
  88. package/dist/components/code-block/CodeBlock.d.mts.map +1 -0
  89. package/dist/components/code-block/CodeBlock.mjs +58 -0
  90. package/dist/components/code-block/CodeBlock.mjs.map +1 -0
  91. package/dist/components/container/Container.cjs +50 -0
  92. package/dist/components/container/Container.cjs.map +1 -0
  93. package/dist/components/container/Container.d.cts +17 -0
  94. package/dist/components/container/Container.d.cts.map +1 -0
  95. package/dist/components/container/Container.d.mts +17 -0
  96. package/dist/components/container/Container.d.mts.map +1 -0
  97. package/dist/components/container/Container.mjs +47 -0
  98. package/dist/components/container/Container.mjs.map +1 -0
  99. package/dist/components/container/index.d.cts +2 -0
  100. package/dist/components/container/index.d.mts +2 -0
  101. package/dist/components/country-select/CountrySelect.cjs +95 -0
  102. package/dist/components/country-select/CountrySelect.cjs.map +1 -0
  103. package/dist/components/country-select/CountrySelect.d.cts +16 -0
  104. package/dist/components/country-select/CountrySelect.d.cts.map +1 -0
  105. package/dist/components/country-select/CountrySelect.d.mts +16 -0
  106. package/dist/components/country-select/CountrySelect.d.mts.map +1 -0
  107. package/dist/components/country-select/CountrySelect.mjs +93 -0
  108. package/dist/components/country-select/CountrySelect.mjs.map +1 -0
  109. package/dist/components/country-select/countries.cjs +409 -0
  110. package/dist/components/country-select/countries.cjs.map +1 -0
  111. package/dist/components/country-select/countries.d.cts +17 -0
  112. package/dist/components/country-select/countries.d.cts.map +1 -0
  113. package/dist/components/country-select/countries.d.mts +17 -0
  114. package/dist/components/country-select/countries.d.mts.map +1 -0
  115. package/dist/components/country-select/countries.mjs +405 -0
  116. package/dist/components/country-select/countries.mjs.map +1 -0
  117. package/dist/components/country-select/index.d.cts +3 -0
  118. package/dist/components/country-select/index.d.mts +3 -0
  119. package/dist/components/dialog/Dialog.cjs +85 -0
  120. package/dist/components/dialog/Dialog.cjs.map +1 -0
  121. package/dist/components/dialog/Dialog.d.cts +35 -0
  122. package/dist/components/dialog/Dialog.d.cts.map +1 -0
  123. package/dist/components/dialog/Dialog.d.mts +35 -0
  124. package/dist/components/dialog/Dialog.d.mts.map +1 -0
  125. package/dist/components/dialog/Dialog.mjs +74 -0
  126. package/dist/components/dialog/Dialog.mjs.map +1 -0
  127. package/dist/components/dialog/index.d.cts +2 -0
  128. package/dist/components/dialog/index.d.mts +2 -0
  129. package/dist/components/divider/Divider.cjs +72 -0
  130. package/dist/components/divider/Divider.cjs.map +1 -0
  131. package/dist/components/divider/Divider.mjs +70 -0
  132. package/dist/components/divider/Divider.mjs.map +1 -0
  133. package/dist/components/dropdown-menu/DropdownMenu.cjs +101 -0
  134. package/dist/components/dropdown-menu/DropdownMenu.cjs.map +1 -0
  135. package/dist/components/dropdown-menu/DropdownMenu.d.cts +62 -0
  136. package/dist/components/dropdown-menu/DropdownMenu.d.cts.map +1 -0
  137. package/dist/components/dropdown-menu/DropdownMenu.d.mts +62 -0
  138. package/dist/components/dropdown-menu/DropdownMenu.d.mts.map +1 -0
  139. package/dist/components/dropdown-menu/DropdownMenu.mjs +85 -0
  140. package/dist/components/dropdown-menu/DropdownMenu.mjs.map +1 -0
  141. package/dist/components/dropdown-menu/index.d.cts +3 -0
  142. package/dist/components/dropdown-menu/index.d.mts +3 -0
  143. package/dist/components/empty/Empty.cjs +51 -0
  144. package/dist/components/empty/Empty.cjs.map +1 -0
  145. package/dist/components/empty/Empty.d.cts +17 -0
  146. package/dist/components/empty/Empty.d.cts.map +1 -0
  147. package/dist/components/empty/Empty.d.mts +17 -0
  148. package/dist/components/empty/Empty.d.mts.map +1 -0
  149. package/dist/components/empty/Empty.mjs +44 -0
  150. package/dist/components/empty/Empty.mjs.map +1 -0
  151. package/dist/components/empty/index.d.cts +3 -0
  152. package/dist/components/empty/index.d.mts +3 -0
  153. package/dist/components/field/index.d.cts +2 -0
  154. package/dist/components/field/index.d.mts +2 -0
  155. package/dist/components/fog-illustration/FogIllustration.cjs +342 -0
  156. package/dist/components/fog-illustration/FogIllustration.cjs.map +1 -0
  157. package/dist/components/fog-illustration/FogIllustration.d.cts +35 -0
  158. package/dist/components/fog-illustration/FogIllustration.d.cts.map +1 -0
  159. package/dist/components/fog-illustration/FogIllustration.d.mts +35 -0
  160. package/dist/components/fog-illustration/FogIllustration.d.mts.map +1 -0
  161. package/dist/components/fog-illustration/FogIllustration.mjs +341 -0
  162. package/dist/components/fog-illustration/FogIllustration.mjs.map +1 -0
  163. package/dist/components/grid/Grid.cjs +51 -0
  164. package/dist/components/grid/Grid.cjs.map +1 -0
  165. package/dist/components/grid/Grid.d.cts +25 -0
  166. package/dist/components/grid/Grid.d.cts.map +1 -0
  167. package/dist/components/grid/Grid.d.mts +25 -0
  168. package/dist/components/grid/Grid.d.mts.map +1 -0
  169. package/dist/components/grid/Grid.mjs +48 -0
  170. package/dist/components/grid/Grid.mjs.map +1 -0
  171. package/dist/components/grid/index.d.cts +2 -0
  172. package/dist/components/grid/index.d.mts +2 -0
  173. package/dist/components/icon/Icon.cjs +30 -0
  174. package/dist/components/icon/Icon.cjs.map +1 -0
  175. package/dist/components/icon/Icon.d.cts +14 -0
  176. package/dist/components/icon/Icon.d.cts.map +1 -0
  177. package/dist/components/icon/Icon.d.mts +14 -0
  178. package/dist/components/icon/Icon.d.mts.map +1 -0
  179. package/dist/components/icon/Icon.mjs +28 -0
  180. package/dist/components/icon/Icon.mjs.map +1 -0
  181. package/dist/components/icon/index.d.cts +2 -0
  182. package/dist/components/icon/index.d.mts +2 -0
  183. package/dist/components/input/index.d.cts +2 -0
  184. package/dist/components/input/index.d.mts +2 -0
  185. package/dist/components/item/Item.cjs +65 -0
  186. package/dist/components/item/Item.cjs.map +1 -0
  187. package/dist/components/item/Item.d.cts +24 -0
  188. package/dist/components/item/Item.d.cts.map +1 -0
  189. package/dist/components/item/Item.d.mts +24 -0
  190. package/dist/components/item/Item.d.mts.map +1 -0
  191. package/dist/components/item/Item.mjs +54 -0
  192. package/dist/components/item/Item.mjs.map +1 -0
  193. package/dist/components/item/index.d.cts +3 -0
  194. package/dist/components/item/index.d.mts +3 -0
  195. package/dist/components/label/index.d.cts +2 -0
  196. package/dist/components/label/index.d.mts +2 -0
  197. package/dist/components/language-select/LanguageSelect.cjs +48 -0
  198. package/dist/components/language-select/LanguageSelect.cjs.map +1 -0
  199. package/dist/components/language-select/LanguageSelect.d.cts +17 -0
  200. package/dist/components/language-select/LanguageSelect.d.cts.map +1 -0
  201. package/dist/components/language-select/LanguageSelect.d.mts +17 -0
  202. package/dist/components/language-select/LanguageSelect.d.mts.map +1 -0
  203. package/dist/components/language-select/LanguageSelect.mjs +46 -0
  204. package/dist/components/language-select/LanguageSelect.mjs.map +1 -0
  205. package/dist/components/language-select/index.d.cts +2 -0
  206. package/dist/components/language-select/index.d.mts +2 -0
  207. package/dist/components/link/Link.cjs +71 -0
  208. package/dist/components/link/Link.cjs.map +1 -0
  209. package/dist/components/link/Link.d.cts +18 -0
  210. package/dist/components/link/Link.d.cts.map +1 -0
  211. package/dist/components/link/Link.d.mts +18 -0
  212. package/dist/components/link/Link.d.mts.map +1 -0
  213. package/dist/components/link/Link.mjs +68 -0
  214. package/dist/components/link/Link.mjs.map +1 -0
  215. package/dist/components/link/index.d.cts +2 -0
  216. package/dist/components/link/index.d.mts +2 -0
  217. package/dist/components/list/List.cjs +71 -0
  218. package/dist/components/list/List.cjs.map +1 -0
  219. package/dist/components/list/List.d.cts +24 -0
  220. package/dist/components/list/List.d.cts.map +1 -0
  221. package/dist/components/list/List.d.mts +24 -0
  222. package/dist/components/list/List.d.mts.map +1 -0
  223. package/dist/components/list/List.mjs +66 -0
  224. package/dist/components/list/List.mjs.map +1 -0
  225. package/dist/components/list/index.d.cts +2 -0
  226. package/dist/components/list/index.d.mts +2 -0
  227. package/dist/components/model-card/ModelCard.cjs +108 -0
  228. package/dist/components/model-card/ModelCard.cjs.map +1 -0
  229. package/dist/components/model-card/ModelCard.d.cts +58 -0
  230. package/dist/components/model-card/ModelCard.d.cts.map +1 -0
  231. package/dist/components/model-card/ModelCard.d.mts +58 -0
  232. package/dist/components/model-card/ModelCard.d.mts.map +1 -0
  233. package/dist/components/model-card/ModelCard.mjs +106 -0
  234. package/dist/components/model-card/ModelCard.mjs.map +1 -0
  235. package/dist/components/model-card/index.d.cts +3 -0
  236. package/dist/components/model-card/index.d.mts +3 -0
  237. package/dist/components/model-logo/ModelLogo.cjs +98 -0
  238. package/dist/components/model-logo/ModelLogo.cjs.map +1 -0
  239. package/dist/components/model-logo/ModelLogo.d.cts +32 -0
  240. package/dist/components/model-logo/ModelLogo.d.cts.map +1 -0
  241. package/dist/components/model-logo/ModelLogo.d.mts +32 -0
  242. package/dist/components/model-logo/ModelLogo.d.mts.map +1 -0
  243. package/dist/components/model-logo/ModelLogo.mjs +95 -0
  244. package/dist/components/model-logo/ModelLogo.mjs.map +1 -0
  245. package/dist/components/model-logo/index.d.cts +2 -0
  246. package/dist/components/model-logo/index.d.mts +2 -0
  247. package/dist/components/navigation-menu/NavigationMenu.cjs +65 -0
  248. package/dist/components/navigation-menu/NavigationMenu.cjs.map +1 -0
  249. package/dist/components/navigation-menu/NavigationMenu.d.cts +11 -0
  250. package/dist/components/navigation-menu/NavigationMenu.d.cts.map +1 -0
  251. package/dist/components/navigation-menu/NavigationMenu.d.mts +11 -0
  252. package/dist/components/navigation-menu/NavigationMenu.d.mts.map +1 -0
  253. package/dist/components/navigation-menu/NavigationMenu.mjs +57 -0
  254. package/dist/components/navigation-menu/NavigationMenu.mjs.map +1 -0
  255. package/dist/components/navigation-menu/index.d.cts +3 -0
  256. package/dist/components/navigation-menu/index.d.mts +3 -0
  257. package/dist/components/neural-flow/NeuralFlow.cjs +1038 -0
  258. package/dist/components/neural-flow/NeuralFlow.cjs.map +1 -0
  259. package/dist/components/neural-flow/NeuralFlow.d.cts +47 -0
  260. package/dist/components/neural-flow/NeuralFlow.d.cts.map +1 -0
  261. package/dist/components/neural-flow/NeuralFlow.d.mts +47 -0
  262. package/dist/components/neural-flow/NeuralFlow.d.mts.map +1 -0
  263. package/dist/components/neural-flow/NeuralFlow.mjs +1032 -0
  264. package/dist/components/neural-flow/NeuralFlow.mjs.map +1 -0
  265. package/dist/components/neural-flow/index.d.cts +2 -0
  266. package/dist/components/neural-flow/index.d.mts +2 -0
  267. package/dist/components/neural-flow/mnist-samples.cjs +73 -0
  268. package/dist/components/neural-flow/mnist-samples.cjs.map +1 -0
  269. package/dist/components/neural-flow/mnist-samples.mjs +73 -0
  270. package/dist/components/neural-flow/mnist-samples.mjs.map +1 -0
  271. package/dist/components/neural-flow/sparse-weights.cjs +21 -0
  272. package/dist/components/neural-flow/sparse-weights.cjs.map +1 -0
  273. package/dist/components/neural-flow/sparse-weights.mjs +21 -0
  274. package/dist/components/neural-flow/sparse-weights.mjs.map +1 -0
  275. package/dist/components/progress/Progress.cjs +25 -0
  276. package/dist/components/progress/Progress.cjs.map +1 -0
  277. package/dist/components/progress/Progress.d.cts +8 -0
  278. package/dist/components/progress/Progress.d.cts.map +1 -0
  279. package/dist/components/progress/Progress.d.mts +8 -0
  280. package/dist/components/progress/Progress.d.mts.map +1 -0
  281. package/dist/components/progress/Progress.mjs +19 -0
  282. package/dist/components/progress/Progress.mjs.map +1 -0
  283. package/dist/components/progress/index.d.cts +3 -0
  284. package/dist/components/progress/index.d.mts +3 -0
  285. package/dist/components/search-input/SearchInput.cjs +28 -0
  286. package/dist/components/search-input/SearchInput.cjs.map +1 -0
  287. package/dist/components/search-input/SearchInput.d.cts +10 -0
  288. package/dist/components/search-input/SearchInput.d.cts.map +1 -0
  289. package/dist/components/search-input/SearchInput.d.mts +10 -0
  290. package/dist/components/search-input/SearchInput.d.mts.map +1 -0
  291. package/dist/components/search-input/SearchInput.mjs +26 -0
  292. package/dist/components/search-input/SearchInput.mjs.map +1 -0
  293. package/dist/components/search-input/index.d.cts +2 -0
  294. package/dist/components/search-input/index.d.mts +2 -0
  295. package/dist/components/select/index.d.cts +2 -0
  296. package/dist/components/select/index.d.mts +2 -0
  297. package/dist/components/sidebar/Sidebar.cjs +203 -0
  298. package/dist/components/sidebar/Sidebar.cjs.map +1 -0
  299. package/dist/components/sidebar/Sidebar.d.cts +69 -0
  300. package/dist/components/sidebar/Sidebar.d.cts.map +1 -0
  301. package/dist/components/sidebar/Sidebar.d.mts +69 -0
  302. package/dist/components/sidebar/Sidebar.d.mts.map +1 -0
  303. package/dist/components/sidebar/Sidebar.mjs +150 -0
  304. package/dist/components/sidebar/Sidebar.mjs.map +1 -0
  305. package/dist/components/sidebar/index.d.cts +3 -0
  306. package/dist/components/sidebar/index.d.mts +3 -0
  307. package/dist/components/skeleton/Skeleton.cjs +20 -0
  308. package/dist/components/skeleton/Skeleton.cjs.map +1 -0
  309. package/dist/components/skeleton/Skeleton.d.cts +7 -0
  310. package/dist/components/skeleton/Skeleton.d.cts.map +1 -0
  311. package/dist/components/skeleton/Skeleton.d.mts +7 -0
  312. package/dist/components/skeleton/Skeleton.d.mts.map +1 -0
  313. package/dist/components/skeleton/Skeleton.mjs +18 -0
  314. package/dist/components/skeleton/Skeleton.mjs.map +1 -0
  315. package/dist/components/skeleton/index.d.cts +2 -0
  316. package/dist/components/skeleton/index.d.mts +2 -0
  317. package/dist/components/switch/Switch.cjs +85 -0
  318. package/dist/components/switch/Switch.cjs.map +1 -0
  319. package/dist/components/switch/Switch.d.cts +21 -0
  320. package/dist/components/switch/Switch.d.cts.map +1 -0
  321. package/dist/components/switch/Switch.d.mts +21 -0
  322. package/dist/components/switch/Switch.d.mts.map +1 -0
  323. package/dist/components/switch/Switch.mjs +81 -0
  324. package/dist/components/switch/Switch.mjs.map +1 -0
  325. package/dist/components/switch/index.d.cts +2 -0
  326. package/dist/components/switch/index.d.mts +2 -0
  327. package/dist/components/table/Table.cjs +67 -0
  328. package/dist/components/table/Table.cjs.map +1 -0
  329. package/dist/components/table/Table.d.cts +13 -0
  330. package/dist/components/table/Table.d.cts.map +1 -0
  331. package/dist/components/table/Table.d.mts +13 -0
  332. package/dist/components/table/Table.d.mts.map +1 -0
  333. package/dist/components/table/Table.mjs +58 -0
  334. package/dist/components/table/Table.mjs.map +1 -0
  335. package/dist/components/table/index.d.cts +2 -0
  336. package/dist/components/table/index.d.mts +2 -0
  337. package/dist/components/text-area/index.d.cts +2 -0
  338. package/dist/components/text-area/index.d.mts +2 -0
  339. package/dist/components/theme-provider/ThemeProvider.cjs +81 -0
  340. package/dist/components/theme-provider/ThemeProvider.cjs.map +1 -0
  341. package/dist/components/theme-provider/ThemeProvider.d.cts +21 -0
  342. package/dist/components/theme-provider/ThemeProvider.d.cts.map +1 -0
  343. package/dist/components/theme-provider/ThemeProvider.d.mts +21 -0
  344. package/dist/components/theme-provider/ThemeProvider.d.mts.map +1 -0
  345. package/dist/components/theme-provider/ThemeProvider.mjs +78 -0
  346. package/dist/components/theme-provider/ThemeProvider.mjs.map +1 -0
  347. package/dist/components/theme-provider/ThemeToggle.cjs +56 -0
  348. package/dist/components/theme-provider/ThemeToggle.cjs.map +1 -0
  349. package/dist/components/theme-provider/ThemeToggle.d.cts +12 -0
  350. package/dist/components/theme-provider/ThemeToggle.d.cts.map +1 -0
  351. package/dist/components/theme-provider/ThemeToggle.d.mts +12 -0
  352. package/dist/components/theme-provider/ThemeToggle.d.mts.map +1 -0
  353. package/dist/components/theme-provider/ThemeToggle.mjs +54 -0
  354. package/dist/components/theme-provider/ThemeToggle.mjs.map +1 -0
  355. package/dist/components/theme-provider/index.d.cts +3 -0
  356. package/dist/components/theme-provider/index.d.mts +3 -0
  357. package/dist/components/tooltip/Tooltip.cjs +28 -0
  358. package/dist/components/tooltip/Tooltip.cjs.map +1 -0
  359. package/dist/components/tooltip/Tooltip.d.cts +14 -0
  360. package/dist/components/tooltip/Tooltip.d.cts.map +1 -0
  361. package/dist/components/tooltip/Tooltip.d.mts +14 -0
  362. package/dist/components/tooltip/Tooltip.d.mts.map +1 -0
  363. package/dist/components/tooltip/Tooltip.mjs +23 -0
  364. package/dist/components/tooltip/Tooltip.mjs.map +1 -0
  365. package/dist/components/tooltip/index.d.cts +3 -0
  366. package/dist/components/tooltip/index.d.mts +3 -0
  367. package/dist/components/typography/Typography.cjs +69 -0
  368. package/dist/components/typography/Typography.cjs.map +1 -0
  369. package/dist/components/typography/Typography.d.cts +14 -0
  370. package/dist/components/typography/Typography.d.cts.map +1 -0
  371. package/dist/components/typography/Typography.d.mts +14 -0
  372. package/dist/components/typography/Typography.d.mts.map +1 -0
  373. package/dist/components/typography/Typography.mjs +67 -0
  374. package/dist/components/typography/Typography.mjs.map +1 -0
  375. package/dist/components/typography/index.d.cts +2 -0
  376. package/dist/components/typography/index.d.mts +2 -0
  377. package/dist/components/window-frame/WindowFrame.cjs +47 -0
  378. package/dist/components/window-frame/WindowFrame.cjs.map +1 -0
  379. package/dist/components/window-frame/WindowFrame.d.cts +19 -0
  380. package/dist/components/window-frame/WindowFrame.d.cts.map +1 -0
  381. package/dist/components/window-frame/WindowFrame.d.mts +19 -0
  382. package/dist/components/window-frame/WindowFrame.d.mts.map +1 -0
  383. package/dist/components/window-frame/WindowFrame.mjs +46 -0
  384. package/dist/components/window-frame/WindowFrame.mjs.map +1 -0
  385. package/dist/components/window-frame/index.d.cts +2 -0
  386. package/dist/components/window-frame/index.d.mts +2 -0
  387. package/dist/hooks/use-mobile.cjs +23 -0
  388. package/dist/hooks/use-mobile.cjs.map +1 -0
  389. package/dist/hooks/use-mobile.mjs +21 -0
  390. package/dist/hooks/use-mobile.mjs.map +1 -0
  391. package/dist/index.cjs +235 -5936
  392. package/dist/index.d.cts +90 -840
  393. package/dist/index.d.mts +90 -0
  394. package/dist/index.mjs +52 -0
  395. package/dist/lib/shiki-theme.cjs +10 -0
  396. package/dist/lib/shiki-theme.cjs.map +1 -0
  397. package/dist/lib/shiki-theme.d.cts +4 -0
  398. package/dist/lib/shiki-theme.d.cts.map +1 -0
  399. package/dist/lib/shiki-theme.d.mts +4 -0
  400. package/dist/lib/shiki-theme.d.mts.map +1 -0
  401. package/dist/lib/shiki-theme.mjs +11 -0
  402. package/dist/lib/shiki-theme.mjs.map +1 -0
  403. package/dist/lib/shiki.cjs +31 -0
  404. package/dist/lib/shiki.cjs.map +1 -0
  405. package/dist/lib/shiki.d.cts +6 -0
  406. package/dist/lib/shiki.d.cts.map +1 -0
  407. package/dist/lib/shiki.d.mts +6 -0
  408. package/dist/lib/shiki.d.mts.map +1 -0
  409. package/dist/lib/shiki.mjs +30 -0
  410. package/dist/lib/shiki.mjs.map +1 -0
  411. package/dist/lib/terminal.d.cts +12 -0
  412. package/dist/lib/terminal.d.cts.map +1 -0
  413. package/dist/lib/terminal.d.mts +12 -0
  414. package/dist/lib/terminal.d.mts.map +1 -0
  415. package/dist/lib/utils.cjs +43 -0
  416. package/dist/lib/utils.cjs.map +1 -0
  417. package/dist/lib/utils.mjs +41 -0
  418. package/dist/lib/utils.mjs.map +1 -0
  419. package/dist/neural-flow.cjs +3 -1015
  420. package/dist/neural-flow.d.cts +3 -47
  421. package/dist/neural-flow.d.mts +3 -0
  422. package/dist/neural-flow.mjs +1 -0
  423. package/dist/primitives/alert.cjs +43 -0
  424. package/dist/primitives/alert.cjs.map +1 -0
  425. package/dist/primitives/alert.d.cts +8 -0
  426. package/dist/primitives/alert.d.cts.map +1 -0
  427. package/dist/primitives/alert.d.mts +8 -0
  428. package/dist/primitives/alert.d.mts.map +1 -0
  429. package/dist/primitives/alert.mjs +39 -0
  430. package/dist/primitives/alert.mjs.map +1 -0
  431. package/dist/primitives/button.cjs +48 -0
  432. package/dist/primitives/button.cjs.map +1 -0
  433. package/dist/primitives/button.d.cts +11 -0
  434. package/dist/primitives/button.d.cts.map +1 -0
  435. package/dist/primitives/button.d.mts +11 -0
  436. package/dist/primitives/button.d.mts.map +1 -0
  437. package/dist/primitives/button.mjs +47 -0
  438. package/dist/primitives/button.mjs.map +1 -0
  439. package/dist/primitives/card.cjs +67 -0
  440. package/dist/primitives/card.cjs.map +1 -0
  441. package/dist/primitives/card.d.cts +11 -0
  442. package/dist/primitives/card.d.cts.map +1 -0
  443. package/dist/primitives/card.d.mts +11 -0
  444. package/dist/primitives/card.d.mts.map +1 -0
  445. package/dist/primitives/card.mjs +59 -0
  446. package/dist/primitives/card.mjs.map +1 -0
  447. package/dist/primitives/checkbox.cjs +22 -0
  448. package/dist/primitives/checkbox.cjs.map +1 -0
  449. package/dist/primitives/checkbox.mjs +22 -0
  450. package/dist/primitives/checkbox.mjs.map +1 -0
  451. package/dist/primitives/command.cjs +69 -0
  452. package/dist/primitives/command.cjs.map +1 -0
  453. package/dist/primitives/command.mjs +62 -0
  454. package/dist/primitives/command.mjs.map +1 -0
  455. package/dist/primitives/dropdown-menu.cjs +155 -0
  456. package/dist/primitives/dropdown-menu.cjs.map +1 -0
  457. package/dist/primitives/dropdown-menu.d.cts +30 -0
  458. package/dist/primitives/dropdown-menu.d.cts.map +1 -0
  459. package/dist/primitives/dropdown-menu.d.mts +30 -0
  460. package/dist/primitives/dropdown-menu.d.mts.map +1 -0
  461. package/dist/primitives/dropdown-menu.mjs +139 -0
  462. package/dist/primitives/dropdown-menu.mjs.map +1 -0
  463. package/dist/primitives/empty.cjs +67 -0
  464. package/dist/primitives/empty.cjs.map +1 -0
  465. package/dist/primitives/empty.d.cts +8 -0
  466. package/dist/primitives/empty.d.cts.map +1 -0
  467. package/dist/primitives/empty.d.mts +8 -0
  468. package/dist/primitives/empty.d.mts.map +1 -0
  469. package/dist/primitives/empty.mjs +62 -0
  470. package/dist/primitives/empty.mjs.map +1 -0
  471. package/dist/primitives/field.cjs +121 -0
  472. package/dist/primitives/field.cjs.map +1 -0
  473. package/dist/primitives/field.d.cts +27 -0
  474. package/dist/primitives/field.d.cts.map +1 -0
  475. package/dist/primitives/field.d.mts +27 -0
  476. package/dist/primitives/field.d.mts.map +1 -0
  477. package/dist/primitives/field.mjs +112 -0
  478. package/dist/primitives/field.mjs.map +1 -0
  479. package/dist/primitives/input-group.cjs +52 -0
  480. package/dist/primitives/input-group.cjs.map +1 -0
  481. package/dist/primitives/input-group.mjs +49 -0
  482. package/dist/primitives/input-group.mjs.map +1 -0
  483. package/dist/primitives/input.cjs +20 -0
  484. package/dist/primitives/input.cjs.map +1 -0
  485. package/dist/primitives/input.d.cts +6 -0
  486. package/dist/primitives/input.d.cts.map +1 -0
  487. package/dist/primitives/input.d.mts +6 -0
  488. package/dist/primitives/input.d.mts.map +1 -0
  489. package/dist/primitives/input.mjs +18 -0
  490. package/dist/primitives/input.mjs.map +1 -0
  491. package/dist/primitives/item.cjs +135 -0
  492. package/dist/primitives/item.cjs.map +1 -0
  493. package/dist/primitives/item.d.cts +18 -0
  494. package/dist/primitives/item.d.cts.map +1 -0
  495. package/dist/primitives/item.d.mts +18 -0
  496. package/dist/primitives/item.d.mts.map +1 -0
  497. package/dist/primitives/item.mjs +124 -0
  498. package/dist/primitives/item.mjs.map +1 -0
  499. package/dist/primitives/label.cjs +18 -0
  500. package/dist/primitives/label.cjs.map +1 -0
  501. package/dist/primitives/label.d.cts +6 -0
  502. package/dist/primitives/label.d.cts.map +1 -0
  503. package/dist/primitives/label.d.mts +6 -0
  504. package/dist/primitives/label.d.mts.map +1 -0
  505. package/dist/primitives/label.mjs +16 -0
  506. package/dist/primitives/label.mjs.map +1 -0
  507. package/dist/primitives/navigation-menu.cjs +44 -0
  508. package/dist/primitives/navigation-menu.cjs.map +1 -0
  509. package/dist/primitives/navigation-menu.d.cts +9 -0
  510. package/dist/primitives/navigation-menu.d.cts.map +1 -0
  511. package/dist/primitives/navigation-menu.d.mts +9 -0
  512. package/dist/primitives/navigation-menu.d.mts.map +1 -0
  513. package/dist/primitives/navigation-menu.mjs +41 -0
  514. package/dist/primitives/navigation-menu.mjs.map +1 -0
  515. package/dist/primitives/popover.cjs +40 -0
  516. package/dist/primitives/popover.cjs.map +1 -0
  517. package/dist/primitives/popover.mjs +36 -0
  518. package/dist/primitives/popover.mjs.map +1 -0
  519. package/dist/primitives/progress.cjs +50 -0
  520. package/dist/primitives/progress.cjs.map +1 -0
  521. package/dist/primitives/progress.d.cts +10 -0
  522. package/dist/primitives/progress.d.cts.map +1 -0
  523. package/dist/primitives/progress.d.mts +10 -0
  524. package/dist/primitives/progress.d.mts.map +1 -0
  525. package/dist/primitives/progress.mjs +46 -0
  526. package/dist/primitives/progress.mjs.map +1 -0
  527. package/dist/primitives/select.cjs +111 -0
  528. package/dist/primitives/select.cjs.map +1 -0
  529. package/dist/primitives/select.d.cts +18 -0
  530. package/dist/primitives/select.d.cts.map +1 -0
  531. package/dist/primitives/select.d.mts +18 -0
  532. package/dist/primitives/select.d.mts.map +1 -0
  533. package/dist/primitives/select.mjs +100 -0
  534. package/dist/primitives/select.mjs.map +1 -0
  535. package/dist/primitives/separator.cjs +17 -0
  536. package/dist/primitives/separator.cjs.map +1 -0
  537. package/dist/primitives/separator.d.cts +6 -0
  538. package/dist/primitives/separator.d.cts.map +1 -0
  539. package/dist/primitives/separator.d.mts +6 -0
  540. package/dist/primitives/separator.d.mts.map +1 -0
  541. package/dist/primitives/separator.mjs +17 -0
  542. package/dist/primitives/separator.mjs.map +1 -0
  543. package/dist/primitives/sheet.cjs +78 -0
  544. package/dist/primitives/sheet.cjs.map +1 -0
  545. package/dist/primitives/sheet.mjs +72 -0
  546. package/dist/primitives/sheet.mjs.map +1 -0
  547. package/dist/primitives/sidebar.cjs +413 -0
  548. package/dist/primitives/sidebar.cjs.map +1 -0
  549. package/dist/primitives/sidebar.d.cts +66 -0
  550. package/dist/primitives/sidebar.d.cts.map +1 -0
  551. package/dist/primitives/sidebar.d.mts +66 -0
  552. package/dist/primitives/sidebar.d.mts.map +1 -0
  553. package/dist/primitives/sidebar.mjs +388 -0
  554. package/dist/primitives/sidebar.mjs.map +1 -0
  555. package/dist/primitives/skeleton.cjs +15 -0
  556. package/dist/primitives/skeleton.cjs.map +1 -0
  557. package/dist/primitives/skeleton.mjs +15 -0
  558. package/dist/primitives/skeleton.mjs.map +1 -0
  559. package/dist/primitives/table.cjs +78 -0
  560. package/dist/primitives/table.cjs.map +1 -0
  561. package/dist/primitives/table.mjs +69 -0
  562. package/dist/primitives/table.mjs.map +1 -0
  563. package/dist/primitives/textarea.cjs +18 -0
  564. package/dist/primitives/textarea.cjs.map +1 -0
  565. package/dist/primitives/textarea.d.cts +6 -0
  566. package/dist/primitives/textarea.d.cts.map +1 -0
  567. package/dist/primitives/textarea.d.mts +6 -0
  568. package/dist/primitives/textarea.d.mts.map +1 -0
  569. package/dist/primitives/textarea.mjs +16 -0
  570. package/dist/primitives/textarea.mjs.map +1 -0
  571. package/dist/primitives/tooltip.cjs +46 -0
  572. package/dist/primitives/tooltip.cjs.map +1 -0
  573. package/dist/primitives/tooltip.d.cts +9 -0
  574. package/dist/primitives/tooltip.d.cts.map +1 -0
  575. package/dist/primitives/tooltip.d.mts +9 -0
  576. package/dist/primitives/tooltip.d.mts.map +1 -0
  577. package/dist/primitives/tooltip.mjs +43 -0
  578. package/dist/primitives/tooltip.mjs.map +1 -0
  579. package/dist/shiki.cjs +6 -80
  580. package/dist/shiki.d.cts +3 -10
  581. package/dist/shiki.d.mts +3 -0
  582. package/dist/shiki.mjs +3 -0
  583. package/dist/styles/index.css +11 -0
  584. package/package.json +19 -13
  585. package/dist/chunk-3LBFYXI6.js +0 -42
  586. package/dist/chunk-3LBFYXI6.js.map +0 -1
  587. package/dist/index.cjs.map +0 -1
  588. package/dist/index.d.ts +0 -840
  589. package/dist/index.js +0 -5681
  590. package/dist/index.js.map +0 -1
  591. package/dist/neural-flow.cjs.map +0 -1
  592. package/dist/neural-flow.d.ts +0 -47
  593. package/dist/neural-flow.js +0 -978
  594. package/dist/neural-flow.js.map +0 -1
  595. package/dist/shiki.cjs.map +0 -1
  596. package/dist/shiki.d.ts +0 -10
  597. package/dist/shiki.js +0 -11
  598. package/dist/shiki.js.map +0 -1
@@ -0,0 +1,1038 @@
1
+ "use client";
2
+ const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
3
+ const require_mnist_samples = require("./mnist-samples.cjs");
4
+ const require_sparse_weights = require("./sparse-weights.cjs");
5
+ let react = require("react");
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let _react_three_fiber = require("@react-three/fiber");
8
+ let three = require("three");
9
+ three = require_runtime.__toESM(three, 1);
10
+ //#region src/components/neural-flow/NeuralFlow.tsx
11
+ /**
12
+ * NeuralFlow — AI inference, rendered live.
13
+ *
14
+ * An MLP in the shape of a classic MNIST classifier (784-256-128-64-10)
15
+ * floats in the Berget green, layer plane after plane receding into the
16
+ * depth. Tokens — signal packets — travel edge to edge through the net;
17
+ * every hop a weight attenuates them (they fade) or amplifies them
18
+ * (they swell bright), until a sample rolls the whole way through and
19
+ * the predicted output node blooms white-green. A CPU sim drives the
20
+ * state (1.2k nodes, ~1.8k live tokens is trivial arithmetic per
21
+ * frame); three.js only paints points, lines and a fog plane — which
22
+ * keeps this Safari-safe with zero float-FBO involvement.
23
+ *
24
+ * Props: every visual knob is a plain number prop read each frame —
25
+ * exposure, focus/blurK depth-of-field, sim speed (a true timeline:
26
+ * 0 pauses pixel-for-pixel, 0.2 is dream's pace), token intensity and
27
+ * camera drift. Reduced motion paints one deterministic still.
28
+ */
29
+ const LAYER_SIZES = [
30
+ 784,
31
+ 256,
32
+ 128,
33
+ 64,
34
+ 10
35
+ ];
36
+ const LAYER_GRID = [
37
+ [28, 28],
38
+ [16, 16],
39
+ [16, 8],
40
+ [8, 8],
41
+ [10, 1]
42
+ ];
43
+ const LAYER_X = 1.35;
44
+ const CELL = .05;
45
+ const TOKEN_POOL = 1800;
46
+ const SAMPLE_INTERVAL = 6.5;
47
+ const SAMPLE_WINDOW = 2.6;
48
+ const SAMPLE_RATE = 420;
49
+ const TRICKLE_RATE = 40;
50
+ const CLASSES = 10;
51
+ /** Classic 5x7 numerals — the actual "images" the net sees per class. */
52
+ const DIGITS = [
53
+ [
54
+ ".###.",
55
+ "#...#",
56
+ "#..##",
57
+ "#.#.#",
58
+ "##..#",
59
+ "#...#",
60
+ ".###."
61
+ ],
62
+ [
63
+ "..#..",
64
+ ".##..",
65
+ "..#..",
66
+ "..#..",
67
+ "..#..",
68
+ "..#..",
69
+ "#####"
70
+ ],
71
+ [
72
+ ".###.",
73
+ "#...#",
74
+ "....#",
75
+ "...#.",
76
+ "..#..",
77
+ ".#...",
78
+ "#####"
79
+ ],
80
+ [
81
+ "#####",
82
+ "...#.",
83
+ "..#..",
84
+ "...#.",
85
+ "....#",
86
+ "#...#",
87
+ ".###."
88
+ ],
89
+ [
90
+ "...#.",
91
+ "..##.",
92
+ ".#.#.",
93
+ "#..#.",
94
+ "#####",
95
+ "...#.",
96
+ "...#."
97
+ ],
98
+ [
99
+ "#####",
100
+ "#....",
101
+ "####.",
102
+ "....#",
103
+ "....#",
104
+ "#...#",
105
+ ".###."
106
+ ],
107
+ [
108
+ "..##.",
109
+ ".#...",
110
+ "#....",
111
+ "####.",
112
+ "#...#",
113
+ "#...#",
114
+ ".###."
115
+ ],
116
+ [
117
+ "#####",
118
+ "....#",
119
+ "...#.",
120
+ "..#..",
121
+ ".#...",
122
+ ".#...",
123
+ ".#..."
124
+ ],
125
+ [
126
+ ".###.",
127
+ "#...#",
128
+ "#...#",
129
+ ".###.",
130
+ "#...#",
131
+ "#...#",
132
+ ".###."
133
+ ],
134
+ [
135
+ ".###.",
136
+ "#...#",
137
+ "#...#",
138
+ ".####",
139
+ "....#",
140
+ "...#.",
141
+ ".##.."
142
+ ]
143
+ ];
144
+ const PALETTE = {
145
+ deep: [
146
+ .027,
147
+ .235,
148
+ .2
149
+ ],
150
+ mid: [
151
+ .051,
152
+ .42,
153
+ .322
154
+ ],
155
+ crest: [
156
+ .137,
157
+ .627,
158
+ .36
159
+ ],
160
+ slate: [
161
+ .12,
162
+ .17,
163
+ .19
164
+ ],
165
+ white: [
166
+ .85,
167
+ 1,
168
+ .9
169
+ ]
170
+ };
171
+ /** The dark well behind the fog plane, in brand tokens — the gradient
172
+ the raw canvas painted under itself. Requires the package's
173
+ styles (dist/styles/index.css), like every themed component here. */
174
+ const BACKDROP = "radial-gradient(120% 95% at 28% 58%, var(--berget-brand-moss-900) 0%, var(--berget-brand-moss-950) 55%, var(--berget-brand-granite-950) 100%)";
175
+ function mulberry32(seed) {
176
+ let a = seed >>> 0;
177
+ return () => {
178
+ a |= 0;
179
+ a = a + 1831565813 | 0;
180
+ let t = Math.imul(a ^ a >>> 15, 1 | a);
181
+ t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t;
182
+ return ((t ^ t >>> 14) >>> 0) / 4294967296;
183
+ };
184
+ }
185
+ function buildNetwork(seed, orientation) {
186
+ const rng = mulberry32(seed);
187
+ const nodeCount = LAYER_SIZES.reduce((a, b) => a + b, 0);
188
+ const positions = new Float32Array(nodeCount * 3);
189
+ const layerStart = [];
190
+ let flat = 0;
191
+ LAYER_SIZES.forEach((size, li) => {
192
+ layerStart.push(flat);
193
+ const [rows, cols] = LAYER_GRID[li];
194
+ for (let i = 0; i < size; i++) {
195
+ const r = Math.floor(i / cols);
196
+ const c = i % cols;
197
+ const o = flat * 3;
198
+ if (orientation === "vertical") {
199
+ positions[o] = (c - (cols - 1) / 2) * CELL;
200
+ positions[o + 1] = li * LAYER_X;
201
+ positions[o + 2] = (r - (rows - 1) / 2) * CELL;
202
+ } else {
203
+ positions[o] = li * LAYER_X;
204
+ positions[o + 1] = (r - (rows - 1) / 2) * CELL;
205
+ positions[o + 2] = (c - (cols - 1) / 2) * CELL;
206
+ }
207
+ flat++;
208
+ }
209
+ });
210
+ const fanIn = [
211
+ 0,
212
+ 9,
213
+ 10,
214
+ 10,
215
+ 7
216
+ ];
217
+ const inEdges = [];
218
+ for (let i = 0; i < nodeCount; i++) inEdges.push([]);
219
+ for (let li = 1; li < LAYER_SIZES.length; li++) {
220
+ const srcBase = layerStart[li - 1];
221
+ const dstBase = layerStart[li];
222
+ for (let d = 0; d < LAYER_SIZES[li]; d++) {
223
+ const k = fanIn[li];
224
+ for (let e = 0; e < k; e++) {
225
+ const src = srcBase + Math.floor(rng() * LAYER_SIZES[li - 1]);
226
+ const w = rng() < .85 ? .75 + .9 * rng() : -(.35 + .35 * rng());
227
+ inEdges[dstBase + d].push({
228
+ src,
229
+ w
230
+ });
231
+ }
232
+ }
233
+ }
234
+ const out = [];
235
+ for (let i = 0; i < nodeCount; i++) out.push({
236
+ dst: [],
237
+ w: []
238
+ });
239
+ let edgeCount = 0;
240
+ for (let d = 0; d < nodeCount; d++) edgeCount += inEdges[d].length;
241
+ const edgePositions = new Float32Array(edgeCount * 2 * 3);
242
+ const edgeWeights = new Float32Array(edgeCount * 2);
243
+ let eo = 0;
244
+ for (let d = 0; d < nodeCount; d++) for (const e of inEdges[d]) {
245
+ out[e.src].dst.push(d);
246
+ out[e.src].w.push(e.w);
247
+ edgePositions[eo * 6] = positions[e.src * 3];
248
+ edgePositions[eo * 6 + 1] = positions[e.src * 3 + 1];
249
+ edgePositions[eo * 6 + 2] = positions[e.src * 3 + 2];
250
+ edgePositions[eo * 6 + 3] = positions[d * 3];
251
+ edgePositions[eo * 6 + 4] = positions[d * 3 + 1];
252
+ edgePositions[eo * 6 + 5] = positions[d * 3 + 2];
253
+ const a = Math.min(1, Math.abs(e.w) * 1.6);
254
+ edgeWeights[eo * 2] = a;
255
+ edgeWeights[eo * 2 + 1] = a;
256
+ eo++;
257
+ }
258
+ return {
259
+ positions,
260
+ nodeCount,
261
+ layerStart,
262
+ out,
263
+ inEdges,
264
+ edgePositions,
265
+ edgeWeights,
266
+ edgeCount
267
+ };
268
+ }
269
+ var FlowSim = class {
270
+ constructor(seed = 1337, orientation = "horizontal", blobs = glyphBlobs(), images = [], trained = decodeWeights()) {
271
+ this.predictedClass = 0;
272
+ this.rng = mulberry32(12648430);
273
+ this.tokens = [];
274
+ this.time = 0;
275
+ this.nextSample = .8;
276
+ this.sampleUntil = -10;
277
+ this.sampleClass = 0;
278
+ this.sampleVariant = 0;
279
+ this.emitAcc = 0;
280
+ this.net = buildNetwork(seed, orientation);
281
+ attachWeights(this.net, trained);
282
+ this.blobs = blobs;
283
+ this.images = images;
284
+ this.trained = trained;
285
+ this.energy = new Float32Array(this.net.nodeCount);
286
+ this.act = new Float32Array(this.net.nodeCount);
287
+ this.nodeAttr = new Float32Array(this.net.nodeCount);
288
+ this.tokenPos = new Float32Array(TOKEN_POOL * 3);
289
+ this.tokenGain = new Float32Array(TOKEN_POOL);
290
+ for (let i = 0; i < TOKEN_POOL; i++) this.tokens.push(null);
291
+ }
292
+ get network() {
293
+ return this.net;
294
+ }
295
+ /** Advance the whole inference world by dt seconds (clamped internally). */
296
+ step(dt, intensity) {
297
+ dt = Math.min(dt, .12);
298
+ this.time += dt;
299
+ const decay = Math.pow(.42, dt);
300
+ const inDecay = Math.pow(.6, dt);
301
+ const outDecay = Math.pow(.3, dt);
302
+ const inEnd = this.net.layerStart[1];
303
+ const outStart = this.net.layerStart[LAYER_SIZES.length - 1];
304
+ for (let i = 0; i < this.act.length; i++) this.act[i] = this.act[i] * (i >= outStart ? outDecay : i < inEnd ? inDecay : decay);
305
+ if (this.time >= this.nextSample) {
306
+ this.sampleClass = Math.floor(this.rng() * CLASSES);
307
+ const variants = this.blobs[this.sampleClass];
308
+ this.sampleVariant = Math.floor(this.rng() * variants.length);
309
+ this.sampleUntil = this.time + SAMPLE_WINDOW;
310
+ this.nextSample = this.time + SAMPLE_INTERVAL;
311
+ const { predicted, energy } = forwardPass(this.net, this.trained, this.imageOf(this.sampleClass, this.sampleVariant));
312
+ this.predictedClass = predicted;
313
+ this.energy = energy;
314
+ }
315
+ const fade = Math.pow(.55, dt);
316
+ if (this.time > this.sampleUntil) for (let i = 0; i < this.energy.length; i++) this.energy[i] = this.energy[i] * fade;
317
+ const inSample = this.time < this.sampleUntil;
318
+ const rate = (inSample ? SAMPLE_RATE : TRICKLE_RATE) * intensity;
319
+ this.emitAcc += rate * dt;
320
+ while (this.emitAcc >= 1) {
321
+ this.emitAcc -= 1;
322
+ this.inject(inSample);
323
+ }
324
+ for (let i = 0; i < TOKEN_POOL; i++) {
325
+ const tok = this.tokens[i];
326
+ if (!tok) continue;
327
+ tok.t += tok.rate * dt;
328
+ const p = this.net.positions;
329
+ const s3 = tok.src * 3;
330
+ const d3 = tok.dst * 3;
331
+ const t = Math.min(tok.t, 1);
332
+ tok.pos = [
333
+ p[s3] + (p[d3] - p[s3]) * t,
334
+ p[s3 + 1] + (p[d3 + 1] - p[s3 + 1]) * t,
335
+ p[s3 + 2] + (p[d3 + 2] - p[s3 + 2]) * t
336
+ ];
337
+ if (tok.t < 1) continue;
338
+ const isFinal = tok.layer === LAYER_SIZES.length - 2;
339
+ let pulse = tok.gain * .55;
340
+ if (isFinal) {
341
+ if (tok.dst - this.net.layerStart[LAYER_SIZES.length - 1] === this.predictedClass) pulse *= 3.8;
342
+ }
343
+ this.act[tok.dst] = Math.min(2, Math.max(-2, this.act[tok.dst] + pulse));
344
+ const energyHere = this.energy[tok.dst];
345
+ if (inSample && !isFinal && energyHere < .1 && this.rng() < .7) {
346
+ this.tokens[i] = null;
347
+ continue;
348
+ }
349
+ const gain = Math.min(.25 + 1.6 * energyHere, 2.4);
350
+ if (isFinal) {
351
+ this.tokens[i] = null;
352
+ continue;
353
+ }
354
+ const outs = this.net.out[tok.dst];
355
+ if (outs.dst.length === 0) {
356
+ this.tokens[i] = null;
357
+ continue;
358
+ }
359
+ const pick = Math.floor(this.rng() * outs.dst.length);
360
+ tok.src = tok.dst;
361
+ tok.dst = outs.dst[pick];
362
+ tok.w = outs.w[pick];
363
+ tok.layer += 1;
364
+ tok.t = 0;
365
+ const len = edgeLen(this.net.positions, tok.src, tok.dst);
366
+ tok.rate = 1.35 / Math.max(len, .05) * (.75 + this.rng() * .5);
367
+ tok.gain = gain;
368
+ }
369
+ for (let i = 0; i < this.act.length; i++) this.nodeAttr[i] = this.act[i];
370
+ }
371
+ /** The 784-vector for a class variant: real image if we have one,
372
+ otherwise intensities derived from the blob shape. */
373
+ imageOf(cls, variant) {
374
+ const list = this.images[cls];
375
+ if (list && list.length > 0) return list[Math.min(variant, list.length - 1)];
376
+ const img = /* @__PURE__ */ new Float32Array(784);
377
+ const blob = this.blobs[cls][Math.min(variant, this.blobs[cls].length - 1)];
378
+ for (const c of blob) img[c.i] = Math.min(1, c.w + .25);
379
+ return img;
380
+ }
381
+ inject(fromBlob) {
382
+ const slot = this.tokens.indexOf(null);
383
+ if (slot < 0) return;
384
+ const rng = this.rng;
385
+ let src;
386
+ if (fromBlob) {
387
+ const variants = this.blobs[this.sampleClass];
388
+ const blob = variants[Math.min(this.sampleVariant, variants.length - 1)];
389
+ src = pickWeightedBlob(blob, rng());
390
+ } else src = Math.floor(rng() * LAYER_SIZES[0]);
391
+ const outs = this.net.out[src];
392
+ if (outs.dst.length === 0) return;
393
+ const pick = Math.floor(rng() * outs.dst.length);
394
+ const len = edgeLen(this.net.positions, src, outs.dst[pick]);
395
+ this.tokens[slot] = {
396
+ src,
397
+ dst: outs.dst[pick],
398
+ w: outs.w[pick],
399
+ layer: 0,
400
+ t: 0,
401
+ rate: 1.35 / Math.max(len, .05) * (.75 + rng() * .5),
402
+ gain: fromBlob ? 1 : .6,
403
+ pos: [
404
+ 0,
405
+ 0,
406
+ 0
407
+ ]
408
+ };
409
+ this.act[src] = Math.min(2, this.act[src] + (fromBlob ? .9 : .12));
410
+ }
411
+ /** Write live token rows into the point buffers (dead rows stay 0). */
412
+ writeTokenBuffers() {
413
+ for (let i = 0; i < TOKEN_POOL; i++) {
414
+ const tok = this.tokens[i];
415
+ const o = i * 3;
416
+ if (!tok) {
417
+ this.tokenGain[i] = 0;
418
+ this.tokenPos[o] = 0;
419
+ this.tokenPos[o + 1] = 0;
420
+ this.tokenPos[o + 2] = 0;
421
+ continue;
422
+ }
423
+ this.tokenPos[o] = tok.pos[0];
424
+ this.tokenPos[o + 1] = tok.pos[1];
425
+ this.tokenPos[o + 2] = tok.pos[2];
426
+ this.tokenGain[i] = tok.gain;
427
+ }
428
+ }
429
+ };
430
+ /** Procedural 5x7-glyph digits — fallback when no samples are given. */
431
+ function glyphBlobs() {
432
+ const rng = mulberry32(857623);
433
+ const all = [];
434
+ for (let cls = 0; cls < CLASSES; cls++) {
435
+ const field = /* @__PURE__ */ new Float32Array(784);
436
+ const glyph = DIGITS[cls];
437
+ const dx = 4 + Math.floor(rng() * 3);
438
+ const dy = Math.floor(rng() * 3) - 1;
439
+ for (let gr = 0; gr < 7; gr++) {
440
+ const row = glyph[gr];
441
+ for (let gc = 0; gc < 5; gc++) {
442
+ if (row[gc] !== "#") continue;
443
+ for (let k = 0; k < 4; k++) for (let l = 0; l < 4; l++) {
444
+ const r = gr * 4 + l + dy;
445
+ const c = gc * 4 + k + dx;
446
+ if (r < 28 && c < 28) field[r * 28 + c] = 1;
447
+ }
448
+ }
449
+ }
450
+ const blob = [];
451
+ for (let i = 0; i < 784; i++) if (field[i] > 0) blob.push({
452
+ i,
453
+ w: 1
454
+ });
455
+ for (let k = 0; k < 8; k++) blob.push({
456
+ i: Math.floor(rng() * 784),
457
+ w: .15
458
+ });
459
+ all.push([blob]);
460
+ }
461
+ return all;
462
+ }
463
+ /** Decode base64url into raw bytes — shared by weights and samples. */
464
+ function decodeB64(b64) {
465
+ const bin = atob(b64.replace(/-/g, "+").replace(/_/g, "/"));
466
+ const buf = new Uint8Array(bin.length);
467
+ for (let i = 0; i < bin.length; i++) buf[i] = bin.charCodeAt(i);
468
+ return buf;
469
+ }
470
+ /** Decode packed FP32 little-endian base64url into a Float32Array. */
471
+ function decodeF32(b64) {
472
+ return new Float32Array(decodeB64(b64).buffer);
473
+ }
474
+ /** The trained sparse weight set (see train-sparse.py). */
475
+ function decodeWeights() {
476
+ return {
477
+ w: [
478
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.weights1),
479
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.weights2),
480
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.weights3),
481
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.weights4)
482
+ ],
483
+ b: [
484
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.biases1),
485
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.biases2),
486
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.biases3),
487
+ decodeF32(require_sparse_weights.SPARSE_WEIGHTS.biases4)
488
+ ]
489
+ };
490
+ }
491
+ /**
492
+ * Splice trained weights into the visible net: every rendered edge
493
+ * gets its trained value, the edge-alpha map follows |w|, and `out`
494
+ * is rebuilt with the trained magnitudes for the hop visuals.
495
+ */
496
+ function attachWeights(net, trained) {
497
+ const layerStart = net.layerStart;
498
+ for (let li = 1; li < 5; li++) {
499
+ const base = layerStart[li];
500
+ const w = trained.w[li - 1];
501
+ let eo = 0;
502
+ const nextBase = li < 4 ? layerStart[li + 1] : net.nodeCount;
503
+ for (let dlocal = 0; dlocal < nextBase - base; dlocal++) {
504
+ const dst = base + dlocal;
505
+ const list = net.inEdges[dst];
506
+ for (const e of list) {
507
+ e.w = w[eo];
508
+ eo++;
509
+ }
510
+ }
511
+ if (eo !== w.length) throw new Error(`layer ${li}: expected ${w.length} edges, got ${eo}`);
512
+ }
513
+ for (const o of net.out) {
514
+ o.dst.length = 0;
515
+ o.w.length = 0;
516
+ }
517
+ let eo = 0;
518
+ for (let d = 0; d < net.nodeCount; d++) for (const e of net.inEdges[d]) {
519
+ net.out[e.src].dst.push(d);
520
+ net.out[e.src].w.push(e.w);
521
+ net.edgeWeights[eo * 2] = Math.min(1, Math.abs(e.w) * 1.7);
522
+ net.edgeWeights[eo * 2 + 1] = Math.min(1, Math.abs(e.w) * 1.7);
523
+ eo++;
524
+ }
525
+ }
526
+ /** Real forward pass through the visible, trained edges. */
527
+ function forwardPass(net, trained, img) {
528
+ const act = new Float32Array(net.nodeCount);
529
+ act.set(img);
530
+ const layerStart = net.layerStart;
531
+ for (let li = 1; li < 5; li++) {
532
+ const base = layerStart[li];
533
+ const size = LAYER_SIZES[li];
534
+ const bias = trained.b[li - 1];
535
+ for (let dl = 0; dl < size; dl++) {
536
+ let z = bias[dl];
537
+ for (const e of net.inEdges[base + dl]) z += act[e.src] * e.w;
538
+ act[base + dl] = li < 4 ? Math.max(z, 0) : z;
539
+ }
540
+ }
541
+ const energy = new Float32Array(act.length);
542
+ for (let li = 0; li < 5; li++) {
543
+ const base = layerStart[li];
544
+ const size = LAYER_SIZES[li];
545
+ let max = 1e-4;
546
+ for (let i = base; i < base + size; i++) max = Math.max(max, act[i]);
547
+ for (let i = base; i < base + size; i++) energy[i] = Math.max(act[i], 0) / max;
548
+ }
549
+ const outBase = layerStart[4];
550
+ let predicted = 0;
551
+ let top = -1e9;
552
+ for (let c = 0; c < CLASSES; c++) if (act[outBase + c] > top) {
553
+ top = act[outBase + c];
554
+ predicted = c;
555
+ }
556
+ return {
557
+ predicted,
558
+ energy
559
+ };
560
+ }
561
+ function decodeAll(samples) {
562
+ const blobs = [];
563
+ const images = [];
564
+ for (let c = 0; c < CLASSES; c++) {
565
+ const cellList = [];
566
+ const imgList = [];
567
+ for (const b64 of samples[c] ?? []) {
568
+ const buf = decodeB64(b64);
569
+ const cells = [];
570
+ const img = /* @__PURE__ */ new Float32Array(784);
571
+ for (let n = 0; n < 784; n++) {
572
+ const byte = buf[n >> 1];
573
+ const v = n & 1 ? byte & 15 : byte >> 4;
574
+ if (v >= 5) cells.push({
575
+ i: n,
576
+ w: (v - 4) / 11
577
+ });
578
+ img[n] = v / 15;
579
+ }
580
+ cellList.push(cells);
581
+ imgList.push(img);
582
+ }
583
+ blobs.push(cellList);
584
+ images.push(imgList);
585
+ }
586
+ return {
587
+ blobs,
588
+ images
589
+ };
590
+ }
591
+ function pickWeightedBlob(blob, r) {
592
+ let total = 0;
593
+ for (const c of blob) total += c.w;
594
+ let acc = r * total;
595
+ for (const c of blob) {
596
+ acc -= c.w;
597
+ if (acc <= 0) return c.i;
598
+ }
599
+ return blob[blob.length - 1].i;
600
+ }
601
+ function edgeLen(p, a, b) {
602
+ const a3 = a * 3;
603
+ const b3 = b * 3;
604
+ const dx = p[b3] - p[a3];
605
+ const dy = p[b3 + 1] - p[a3 + 1];
606
+ const dz = p[b3 + 2] - p[a3 + 2];
607
+ return Math.sqrt(dx * dx + dy * dy + dz * dz);
608
+ }
609
+ const POINT_VERT = `
610
+ attribute float aAct; // node activation, or token gain for tokens
611
+ uniform float uHeightPx, uFovTan, uDpr, uFocusDist, uBlurK;
612
+ uniform float uBaseSize;
613
+ varying float vAct;
614
+ varying float vFade;
615
+ void main() {
616
+ vec4 mv = modelViewMatrix * vec4(position, 1.0);
617
+ float dist = max(-mv.z, 0.001);
618
+ vAct = aAct;
619
+ float a = max(aAct, 0.0);
620
+ float worldSize = uBaseSize * (1.0 + clamp(a, 0.0, 2.0) * 0.9);
621
+ // uHeightPx is the drawing-buffer height (already device px), so the
622
+ // world-size term needs no uDpr; the pixel-space defocus offset does.
623
+ float px = worldSize * (uHeightPx * 0.5) / (uFovTan * dist);
624
+ float dz = dist - uFocusDist;
625
+ px += (dz < 0.0 ? -dz * 0.55 : dz * 0.8) * uBlurK * uDpr;
626
+ gl_PointSize = min(px, 90.0 * uDpr);
627
+ vFade = clamp(1.0 - abs(dz) * 0.16, 0.25, 1.0);
628
+ gl_Position = projectionMatrix * mv;
629
+ }
630
+ `;
631
+ const NODE_FRAG = `
632
+ uniform float uExposure;
633
+ varying float vAct;
634
+ varying float vFade;
635
+ const vec3 DEEP = vec3(${PALETTE.deep.join(",")});
636
+ const vec3 MID = vec3(${PALETTE.mid.join(",")});
637
+ const vec3 CREST = vec3(${PALETTE.crest.join(",")});
638
+ const vec3 SLATE = vec3(${PALETTE.slate.join(",")});
639
+ const vec3 WHITE = vec3(${PALETTE.white.join(",")});
640
+ void main() {
641
+ float d = length(gl_PointCoord - 0.5) * 2.0;
642
+ float disc = smoothstep(1.0, 0.35, d);
643
+ if (disc < 0.01) discard;
644
+ float a = vAct;
645
+ vec3 col;
646
+ float glow;
647
+ if (a >= 0.0) {
648
+ col = mix(MID, CREST, clamp(a, 0.0, 1.0));
649
+ // Overdriven nodes bloom toward the brand's crystal white-green.
650
+ float bloom = smoothstep(1.05, 1.9, a);
651
+ col = mix(col, WHITE, bloom);
652
+ glow = 0.36 + 0.64 * clamp(a, 0.0, 1.0) + bloom * 0.9;
653
+ } else {
654
+ col = mix(DEEP, SLATE, clamp(-a, 0.0, 1.0));
655
+ glow = 0.16 + 0.25 * clamp(-a, 0.0, 1.0);
656
+ }
657
+ gl_FragColor = vec4(col * uExposure, disc * 0.62 * glow * vFade);
658
+ }
659
+ `;
660
+ const TOKEN_FRAG = `
661
+ uniform float uExposure;
662
+ varying float vAct;
663
+ varying float vFade;
664
+ const vec3 CREST = vec3(${PALETTE.crest.join(",")});
665
+ const vec3 WHITE = vec3(${PALETTE.white.join(",")});
666
+ void main() {
667
+ float g = vAct;
668
+ if (g < 0.004) discard;
669
+ float d = length(gl_PointCoord - 0.5) * 2.0;
670
+ float core = smoothstep(0.55, 0.05, d);
671
+ float halo = smoothstep(1.0, 0.3, d) * 0.45;
672
+ if (core + halo < 0.01) discard;
673
+ // Amplified tokens run hot toward white-green.
674
+ vec3 col = mix(CREST, WHITE, smoothstep(1.1, 2.1, g));
675
+ float b = (0.35 + 0.65 * clamp(g, 0.0, 1.6)) * (core + halo);
676
+ gl_FragColor = vec4(col * uExposure, b * 0.78 * vFade);
677
+ }
678
+ `;
679
+ const EDGE_VERT = `
680
+ attribute float aEdgeW;
681
+ varying float vW;
682
+ void main() {
683
+ vW = aEdgeW;
684
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
685
+ }
686
+ `;
687
+ const EDGE_FRAG = `
688
+ varying float vW;
689
+ const vec3 DEEP = vec3(${PALETTE.crest.join(",")});
690
+ void main() {
691
+ gl_FragColor = vec4(DEEP, 0.02 + 0.05 * vW);
692
+ }
693
+ `;
694
+ const FOG_VERT = `
695
+ varying vec2 vUv;
696
+ void main() {
697
+ vUv = uv;
698
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
699
+ }
700
+ `;
701
+ const FOG_FRAG = `
702
+ uniform float uTime;
703
+ varying vec2 vUv;
704
+
705
+ float hash(vec2 p) {
706
+ return fract(sin(dot(p, vec2(127.1, 311.7))) * 43758.5453123);
707
+ }
708
+ float noise(vec2 p) {
709
+ vec2 i = floor(p);
710
+ vec2 f = fract(p);
711
+ f = f * f * (3.0 - 2.0 * f);
712
+ return mix(
713
+ mix(hash(i), hash(i + vec2(1, 0)), f.x),
714
+ mix(hash(i + vec2(0, 1)), hash(i + vec2(1, 1)), f.x),
715
+ f.y
716
+ );
717
+ }
718
+
719
+ void main() {
720
+ vec2 c = vUv - 0.5;
721
+ float r = length(c) * 2.0;
722
+ // Soft brand-green well behind the stack, vignetted to darkness.
723
+ vec3 col = vec3(0.012, 0.05, 0.04) * max(1.0 - r, 0.0);
724
+ col += vec3(0.01, 0.06, 0.045) * max(1.5 - r * 1.25, 0.0);
725
+ // Slow drifting wisps crossing in front of the black.
726
+ float w = noise(vec2(vUv.x * 3.0 - uTime * 0.02, vUv.y * 6.0 + uTime * 0.013));
727
+ w = pow(w, 3.0) * 0.5;
728
+ col += vec3(0.05, 0.11, 0.09) * w * (1.0 - smoothstep(0.6, 1.2, r));
729
+ gl_FragColor = vec4(col, 1.0);
730
+ }
731
+ `;
732
+ const DEFAULT_KNOBS = {
733
+ zoom: 1,
734
+ exposure: 1.45,
735
+ focus: 8,
736
+ blurK: 4,
737
+ speed: 1,
738
+ intensity: 1,
739
+ drift: 1,
740
+ spin: .02
741
+ };
742
+ const BASE_FOV = 36;
743
+ function camFor(orientation) {
744
+ return orientation === "vertical" ? {
745
+ base: new three.Vector3(.7, 3.5, 9.6),
746
+ target: new three.Vector3(0, 2.45, 0),
747
+ center: new three.Vector3(0, 2.7, 0),
748
+ fogSize: [13, 15],
749
+ fogPos: new three.Vector3(1.5, 2.7, -6.5),
750
+ fogRot: 0
751
+ } : {
752
+ base: new three.Vector3(-.9, .88, 6.1),
753
+ target: new three.Vector3(2.35, -.08, -.2),
754
+ center: new three.Vector3(2.7, 0, 0),
755
+ fogSize: [14, 8],
756
+ fogPos: new three.Vector3(7.2, 0, 0),
757
+ fogRot: -Math.PI / 2
758
+ };
759
+ }
760
+ function SceneContent({ knobs: knobsRef, orientation, blobs, images }) {
761
+ const { invalidate } = (0, _react_three_fiber.useThree)();
762
+ const trained = (0, react.useMemo)(() => decodeWeights(), []);
763
+ const sim = (0, react.useMemo)(() => new FlowSim(1337, orientation, blobs, images, trained), [
764
+ orientation,
765
+ blobs,
766
+ images,
767
+ trained
768
+ ]);
769
+ const camCfg = (0, react.useMemo)(() => camFor(orientation), [orientation]);
770
+ const fogPlane = (0, react.useMemo)(() => new three.PlaneGeometry(camCfg.fogSize[0], camCfg.fogSize[1]), [camCfg]);
771
+ const geos = (0, react.useMemo)(() => {
772
+ const net = sim.network;
773
+ const nodes = new three.BufferGeometry();
774
+ nodes.setAttribute("position", new three.BufferAttribute(net.positions, 3));
775
+ const actAttr = new three.BufferAttribute(sim.nodeAttr, 1);
776
+ actAttr.setUsage(three.DynamicDrawUsage);
777
+ nodes.setAttribute("aAct", actAttr);
778
+ const tokens = new three.BufferGeometry();
779
+ const posAttr = new three.BufferAttribute(sim.tokenPos, 3);
780
+ posAttr.setUsage(three.DynamicDrawUsage);
781
+ tokens.setAttribute("position", posAttr);
782
+ const gainAttr = new three.BufferAttribute(sim.tokenGain, 1);
783
+ gainAttr.setUsage(three.DynamicDrawUsage);
784
+ tokens.setAttribute("aAct", gainAttr);
785
+ const b = 6;
786
+ nodes.boundingSphere = new three.Sphere(camCfg.center.clone(), b);
787
+ tokens.boundingSphere = new three.Sphere(camCfg.center.clone(), b);
788
+ const edges = new three.BufferGeometry();
789
+ edges.setAttribute("position", new three.BufferAttribute(net.edgePositions, 3));
790
+ edges.setAttribute("aEdgeW", new three.BufferAttribute(net.edgeWeights, 1));
791
+ edges.boundingSphere = new three.Sphere(camCfg.center.clone(), b);
792
+ return [
793
+ nodes,
794
+ tokens,
795
+ edges
796
+ ];
797
+ }, [sim, camCfg]);
798
+ const nodeMat = (0, react.useMemo)(() => makePointMaterial(), []);
799
+ const tokenMat = (0, react.useMemo)(() => makeTokenMaterial(), []);
800
+ const edgeMat = (0, react.useMemo)(() => new three.ShaderMaterial({
801
+ vertexShader: EDGE_VERT,
802
+ fragmentShader: EDGE_FRAG,
803
+ transparent: true,
804
+ depthWrite: false,
805
+ blending: three.AdditiveBlending,
806
+ uniforms: {}
807
+ }), []);
808
+ const fogMat = (0, react.useMemo)(() => new three.ShaderMaterial({
809
+ vertexShader: FOG_VERT,
810
+ fragmentShader: FOG_FRAG,
811
+ depthWrite: false,
812
+ blending: three.NoBlending,
813
+ uniforms: { uTime: { value: 0 } }
814
+ }), []);
815
+ (0, react.useEffect)(() => () => {
816
+ for (const g of geos) g.dispose();
817
+ fogPlane.dispose();
818
+ nodeMat.dispose();
819
+ tokenMat.dispose();
820
+ edgeMat.dispose();
821
+ fogMat.dispose();
822
+ }, [
823
+ geos,
824
+ fogPlane,
825
+ nodeMat,
826
+ tokenMat,
827
+ edgeMat,
828
+ fogMat
829
+ ]);
830
+ const worldTimeRef = (0, react.useRef)(0);
831
+ const lastElapsedRef = (0, react.useRef)(0);
832
+ const warmedSimRef = (0, react.useRef)(null);
833
+ const spinRef = (0, react.useRef)(null);
834
+ (0, _react_three_fiber.useFrame)((state) => {
835
+ const speed = reduced() ? 0 : knobsRef.current.speed;
836
+ const dt = Math.min(state.clock.elapsedTime - lastElapsedRef.current, .25);
837
+ lastElapsedRef.current = state.clock.elapsedTime;
838
+ worldTimeRef.current += dt * Math.max(speed, 0);
839
+ const t = reduced() ? 8 : worldTimeRef.current;
840
+ const justWarmed = warmedSimRef.current !== sim;
841
+ if (justWarmed) {
842
+ for (let i = 0; i < 120; i++) sim.step(1 / 30, 1);
843
+ warmedSimRef.current = sim;
844
+ } else if (!reduced()) sim.step(dt * Math.max(speed, 0), knobsRef.current.intensity);
845
+ sim.writeTokenBuffers();
846
+ for (const [geo, attr] of [
847
+ [geos[0], "aAct"],
848
+ [geos[1], "position"],
849
+ [geos[1], "aAct"]
850
+ ]) {
851
+ const a = geo.getAttribute(attr);
852
+ a.needsUpdate = true;
853
+ }
854
+ const cam = state.camera;
855
+ const fov = BASE_FOV / Math.max(knobsRef.current.zoom, .05);
856
+ if (Math.abs(cam.fov - fov) > .01) {
857
+ cam.fov = fov;
858
+ cam.updateProjectionMatrix();
859
+ }
860
+ const drift = knobsRef.current.drift;
861
+ cam.position.set(camCfg.base.x + Math.sin(t * .11) * .16 * drift, camCfg.base.y + Math.sin(t * .073 + 2) * .09 * drift, camCfg.base.z + Math.cos(t * .091) * .16 * drift);
862
+ cam.lookAt(camCfg.target);
863
+ const height = state.gl.domElement.height;
864
+ const fovTan = Math.tan(three.MathUtils.degToRad(cam.fov * .5));
865
+ for (const m of [nodeMat, tokenMat]) {
866
+ m.uniforms.uHeightPx.value = height;
867
+ m.uniforms.uFovTan.value = fovTan;
868
+ m.uniforms.uDpr.value = state.gl.getPixelRatio();
869
+ m.uniforms.uFocusDist.value = knobsRef.current.focus;
870
+ m.uniforms.uBlurK.value = knobsRef.current.blurK;
871
+ m.uniforms.uExposure.value = knobsRef.current.exposure;
872
+ }
873
+ if (spinRef.current) spinRef.current.rotation.y = t * knobsRef.current.spin;
874
+ fogMat.uniforms.uTime.value = t;
875
+ if (!reduced() || justWarmed) invalidate();
876
+ });
877
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("group", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("mesh", {
878
+ geometry: fogPlane,
879
+ material: fogMat,
880
+ position: camCfg.fogPos.toArray(),
881
+ rotation: [
882
+ 0,
883
+ camCfg.fogRot,
884
+ 0
885
+ ],
886
+ renderOrder: 0
887
+ }, orientation), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("group", {
888
+ ref: spinRef,
889
+ position: camCfg.center.toArray(),
890
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("group", {
891
+ position: camCfg.center.clone().negate().toArray(),
892
+ children: [
893
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("lineSegments", {
894
+ geometry: geos[2],
895
+ material: edgeMat,
896
+ renderOrder: 1
897
+ }),
898
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("points", {
899
+ geometry: geos[0],
900
+ material: nodeMat,
901
+ renderOrder: 2
902
+ }),
903
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("points", {
904
+ geometry: geos[1],
905
+ material: tokenMat,
906
+ renderOrder: 3
907
+ })
908
+ ]
909
+ })
910
+ })] });
911
+ }
912
+ function makePointMaterial() {
913
+ return new three.ShaderMaterial({
914
+ vertexShader: POINT_VERT,
915
+ fragmentShader: NODE_FRAG,
916
+ transparent: true,
917
+ depthWrite: false,
918
+ blending: three.AdditiveBlending,
919
+ uniforms: {
920
+ uHeightPx: { value: 600 },
921
+ uFovTan: { value: .3 },
922
+ uDpr: { value: 1 },
923
+ uFocusDist: { value: 8 },
924
+ uBlurK: { value: 4 },
925
+ uBaseSize: { value: .025 },
926
+ uExposure: { value: 1.45 }
927
+ }
928
+ });
929
+ }
930
+ function makeTokenMaterial() {
931
+ return new three.ShaderMaterial({
932
+ vertexShader: POINT_VERT,
933
+ fragmentShader: TOKEN_FRAG,
934
+ transparent: true,
935
+ depthWrite: false,
936
+ blending: three.AdditiveBlending,
937
+ uniforms: {
938
+ uHeightPx: { value: 600 },
939
+ uFovTan: { value: .3 },
940
+ uDpr: { value: 1 },
941
+ uFocusDist: { value: 8 },
942
+ uBlurK: { value: 4 },
943
+ uBaseSize: { value: .011 },
944
+ uExposure: { value: 1.35 }
945
+ }
946
+ });
947
+ }
948
+ function reduced() {
949
+ return typeof window !== "undefined" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
950
+ }
951
+ const NeuralFlow = ({ className, style, orientation = "horizontal", inputSamples, zoom, exposure, focus, blurK, speed, intensity, drift, spin }) => {
952
+ const noAtob = typeof atob === "undefined";
953
+ const { blobs, images } = (0, react.useMemo)(() => {
954
+ const src = inputSamples === void 0 ? require_mnist_samples.MNIST_SAMPLES : inputSamples;
955
+ if (noAtob || Object.keys(src).length === 0) return {
956
+ blobs: glyphBlobs(),
957
+ images: []
958
+ };
959
+ const decoded = decodeAll(src);
960
+ return decoded.blobs.every((v) => v.length > 0) ? decoded : {
961
+ blobs: glyphBlobs(),
962
+ images: []
963
+ };
964
+ }, [inputSamples, noAtob]);
965
+ const knobs = (0, react.useRef)({ ...DEFAULT_KNOBS });
966
+ (0, react.useEffect)(() => {
967
+ knobs.current = {
968
+ zoom: zoom ?? DEFAULT_KNOBS.zoom,
969
+ exposure: exposure ?? DEFAULT_KNOBS.exposure,
970
+ focus: focus ?? DEFAULT_KNOBS.focus,
971
+ blurK: blurK ?? DEFAULT_KNOBS.blurK,
972
+ speed: speed ?? DEFAULT_KNOBS.speed,
973
+ intensity: intensity ?? DEFAULT_KNOBS.intensity,
974
+ drift: drift ?? DEFAULT_KNOBS.drift,
975
+ spin: spin ?? DEFAULT_KNOBS.spin
976
+ };
977
+ }, [
978
+ zoom,
979
+ exposure,
980
+ focus,
981
+ blurK,
982
+ speed,
983
+ intensity,
984
+ drift,
985
+ spin
986
+ ]);
987
+ if (noAtob) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
988
+ "aria-hidden": "true",
989
+ className,
990
+ style: {
991
+ ...style,
992
+ position: "absolute",
993
+ inset: 0,
994
+ background: BACKDROP
995
+ }
996
+ });
997
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
998
+ className,
999
+ style: {
1000
+ ...style,
1001
+ position: "absolute",
1002
+ inset: 0,
1003
+ background: BACKDROP
1004
+ },
1005
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_react_three_fiber.Canvas, {
1006
+ "aria-hidden": "true",
1007
+ dpr: [1, 2],
1008
+ frameloop: reduced() ? "demand" : "always",
1009
+ camera: {
1010
+ position: camFor(orientation).base.toArray(),
1011
+ fov: BASE_FOV
1012
+ },
1013
+ gl: {
1014
+ alpha: false,
1015
+ antialias: true,
1016
+ powerPreference: "high-performance",
1017
+ preserveDrawingBuffer: true
1018
+ },
1019
+ onCreated: ({ gl }) => {
1020
+ gl.setClearColor(67590, 1);
1021
+ },
1022
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SceneContent, {
1023
+ knobs,
1024
+ orientation,
1025
+ blobs,
1026
+ images
1027
+ })
1028
+ })
1029
+ });
1030
+ };
1031
+ //#endregion
1032
+ exports.FlowSim = FlowSim;
1033
+ exports.NeuralFlow = NeuralFlow;
1034
+ exports.decodeAll = decodeAll;
1035
+ exports.decodeWeights = decodeWeights;
1036
+ exports.forwardPass = forwardPass;
1037
+
1038
+ //# sourceMappingURL=NeuralFlow.cjs.map