this.gui 1.3.41 → 1.3.42

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 (310) hide show
  1. package/package.json +3 -2
  2. package/src/GUI.tsx +46 -0
  3. package/src/QRouter/QRegistry.tsx +53 -0
  4. package/src/QRouter/QRouter.stories.tsx +31 -0
  5. package/src/QRouter/QRouter.tsx +57 -0
  6. package/src/gui/Theme/GuiProvider.tsx +111 -0
  7. package/src/gui/Theme/Icon/Icon.resolver.tsx +29 -0
  8. package/src/gui/Theme/Icon/Icon.tsx +43 -0
  9. package/src/gui/Theme/Layout/Content/Content.resolver.tsx +0 -0
  10. package/src/gui/Theme/Layout/Content/Content.stories.tsx +88 -0
  11. package/src/gui/Theme/Layout/Content/Content.tsx +53 -0
  12. package/src/gui/Theme/Layout/Content/Content.types.tsx +40 -0
  13. package/src/gui/Theme/Layout/Footer/Footer.resolver.tsx +45 -0
  14. package/src/gui/Theme/Layout/Footer/Footer.stories.tsx +205 -0
  15. package/src/gui/Theme/Layout/Footer/Footer.tsx +337 -0
  16. package/src/gui/Theme/Layout/Footer/Footer.types.ts +40 -0
  17. package/src/gui/Theme/Layout/Layout/Layout.resolver.tsx +37 -0
  18. package/src/gui/Theme/Layout/Layout/Layout.stories.tsx +289 -0
  19. package/src/gui/Theme/Layout/Layout/Layout.tsx +117 -0
  20. package/src/gui/Theme/Layout/Layout/Layout.types.ts +57 -0
  21. package/src/gui/Theme/Layout/Layout/useLayoutBreakpoints.ts +9 -0
  22. package/src/gui/Theme/Layout/Namespace/Namespace.stories.tsx +105 -0
  23. package/src/gui/Theme/Layout/Namespace/Namespace.tsx +26 -0
  24. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.resolver.tsx +87 -0
  25. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.stories.tsx +199 -0
  26. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.tsx +311 -0
  27. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.types.ts +41 -0
  28. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/SidebarToggleButton.tsx +53 -0
  29. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.resolver.tsx +19 -0
  30. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.tsx +107 -0
  31. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.resolver.tsx +0 -0
  32. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.tsx +134 -0
  33. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.types.ts +15 -0
  34. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarMenu/LeftSidebarMenu.tsx +142 -0
  35. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarToggleButton/LeftSidebarToggleButton.tsx +23 -0
  36. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.resolver.tsx +35 -0
  37. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.stories.tsx +239 -0
  38. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.tsx +319 -0
  39. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.types.ts +17 -0
  40. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarAction/RightSidebarAction.tsx +102 -0
  41. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarLink/RightSidebarLink.tsx +132 -0
  42. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarMenu/RightSidebarMenu.tsx +140 -0
  43. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarToggleButton/RightSidebarToggleButton.tsx +22 -0
  44. package/src/gui/Theme/Layout/StickyOptions/StickyOptionsTop.stories.tsx +469 -0
  45. package/src/gui/Theme/Layout/StickyOptions/StickyOptionsTop.tsx +489 -0
  46. package/src/gui/Theme/Layout/TopBar/TopBar.resolver.tsx +86 -0
  47. package/src/gui/Theme/Layout/TopBar/TopBar.stories.tsx +350 -0
  48. package/src/gui/Theme/Layout/TopBar/TopBar.tsx +292 -0
  49. package/src/gui/Theme/Layout/TopBar/TopBar.types.ts +39 -0
  50. package/src/gui/Theme/Layout/TopBar/components/TopBarAction/TopBarAction.stories.tsx +83 -0
  51. package/src/gui/Theme/Layout/TopBar/components/TopBarAction/TopBarAction.tsx +18 -0
  52. package/src/gui/Theme/Layout/TopBar/components/TopBarAction/TopBarAction.types.ts +4 -0
  53. package/src/gui/Theme/Layout/TopBar/components/TopBarLink/TopBarLink.stories.tsx +189 -0
  54. package/src/gui/Theme/Layout/TopBar/components/TopBarLink/TopBarLink.tsx +30 -0
  55. package/src/gui/Theme/Layout/TopBar/components/TopBarLink/TopBarLink.types.ts +9 -0
  56. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.resolver.tsx +14 -0
  57. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.stories.tsx +56 -0
  58. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.tsx +123 -0
  59. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.types.ts +44 -0
  60. package/src/gui/Theme/catalog/CherryByte/CherryByte.png +0 -0
  61. package/src/gui/Theme/catalog/CherryByte/dark.tokens.ts +47 -0
  62. package/src/gui/Theme/catalog/CherryByte/light.tokens.ts +47 -0
  63. package/src/gui/Theme/catalog/CherryByte/manifest.ts +24 -0
  64. package/src/gui/Theme/catalog/GhostShell/dark.tokens.ts +43 -0
  65. package/src/gui/Theme/catalog/GhostShell/ghost.png +0 -0
  66. package/src/gui/Theme/catalog/GhostShell/light.tokens.ts +39 -0
  67. package/src/gui/Theme/catalog/GhostShell/manifest.ts +24 -0
  68. package/src/gui/Theme/catalog/LunaHex/LunaHex.png +0 -0
  69. package/src/gui/Theme/catalog/LunaHex/dark.tokens.ts +34 -0
  70. package/src/gui/Theme/catalog/LunaHex/light.tokens.ts +74 -0
  71. package/src/gui/Theme/catalog/LunaHex/manifest.ts +24 -0
  72. package/src/gui/Theme/catalog/MUI/MUI.png +0 -0
  73. package/src/gui/Theme/catalog/MUI/dark.tokens.ts +58 -0
  74. package/src/gui/Theme/catalog/MUI/light.tokens.ts +74 -0
  75. package/src/gui/Theme/catalog/MUI/manifest.ts +24 -0
  76. package/src/gui/Theme/catalog/PrinceOfDarkness/dark.tokens.ts +48 -0
  77. package/src/gui/Theme/catalog/PrinceOfDarkness/light.tokens.ts +47 -0
  78. package/src/gui/Theme/catalog/PrinceOfDarkness/manifest.ts +24 -0
  79. package/src/gui/Theme/catalog/PrinceOfDarkness/prince.png +0 -0
  80. package/src/gui/Theme/catalog/PrinceOfDarkness/princeOfDarkness.png +0 -0
  81. package/src/gui/Theme/catalog/Seafoam/dark.tokens.ts +49 -0
  82. package/src/gui/Theme/catalog/Seafoam/light.tokens.ts +47 -0
  83. package/src/gui/Theme/catalog/Seafoam/manifest.ts +24 -0
  84. package/src/gui/Theme/catalog/Seafoam/seaFoam.png +0 -0
  85. package/src/gui/Theme/catalog/neurons/dark.tokens.ts +58 -0
  86. package/src/gui/Theme/catalog/neurons/light.tokens.ts +74 -0
  87. package/src/gui/Theme/catalog/neurons/manifest.ts +24 -0
  88. package/src/gui/Theme/catalog/neurons/neurons.me.png +0 -0
  89. package/src/gui/Theme/fromTokens.ts +272 -0
  90. package/src/gui/Theme/gui.css +31 -0
  91. package/src/gui/Theme/index.ts +17 -0
  92. package/src/gui/Theme/styles/buildShadows.ts +83 -0
  93. package/src/gui/Theme/styles/theme.tokens.ts +108 -0
  94. package/src/gui/Theme/utils/catalog.ts +61 -0
  95. package/src/gui/Theme/utils/persistence.ts +66 -0
  96. package/src/gui/Theme/utils/themeUtils.ts +34 -0
  97. package/src/gui/components/atoms/AppBar/AppBar.resolver.tsx +46 -0
  98. package/src/gui/components/atoms/AppBar/AppBar.stories.tsx +251 -0
  99. package/src/gui/components/atoms/AppBar/AppBar.tsx +107 -0
  100. package/src/gui/components/atoms/AppBar/AppBar.types.ts +28 -0
  101. package/src/gui/components/atoms/Avatar/Avatar.resolver.tsx +61 -0
  102. package/src/gui/components/atoms/Avatar/Avatar.stories.tsx +36 -0
  103. package/src/gui/components/atoms/Avatar/Avatar.tsx +14 -0
  104. package/src/gui/components/atoms/Box/Box.resolver.tsx +171 -0
  105. package/src/gui/components/atoms/Box/Box.stories.tsx +263 -0
  106. package/src/gui/components/atoms/Box/Box.tsx +15 -0
  107. package/src/gui/components/atoms/Button/Button.resolver.tsx +103 -0
  108. package/src/gui/components/atoms/Button/Button.stories.tsx +219 -0
  109. package/src/gui/components/atoms/Button/Button.tsx +40 -0
  110. package/src/gui/components/atoms/Card/Card.resolver.tsx +63 -0
  111. package/src/gui/components/atoms/Card/Card.stories.tsx +54 -0
  112. package/src/gui/components/atoms/Card/Card.tsx +13 -0
  113. package/src/gui/components/atoms/CardActions/CardActions.resolver.tsx +59 -0
  114. package/src/gui/components/atoms/CardActions/CardActions.stories.tsx +32 -0
  115. package/src/gui/components/atoms/CardActions/CardActions.tsx +14 -0
  116. package/src/gui/components/atoms/CardContent/CardContent.resolver.tsx +60 -0
  117. package/src/gui/components/atoms/CardContent/CardContent.stories.tsx +34 -0
  118. package/src/gui/components/atoms/CardContent/CardContent.tsx +13 -0
  119. package/src/gui/components/atoms/CardHeader/CardHeader.resolver.tsx +68 -0
  120. package/src/gui/components/atoms/CardHeader/CardHeader.stories.tsx +40 -0
  121. package/src/gui/components/atoms/CardHeader/CardHeader.tsx +12 -0
  122. package/src/gui/components/atoms/Collapse/Collapse.resolver.tsx +85 -0
  123. package/src/gui/components/atoms/Collapse/Collapse.stories.tsx +130 -0
  124. package/src/gui/components/atoms/Collapse/Collapse.tsx +17 -0
  125. package/src/gui/components/atoms/Divider/Divider.resolver.tsx +95 -0
  126. package/src/gui/components/atoms/Divider/Divider.stories.tsx +108 -0
  127. package/src/gui/components/atoms/Divider/Divider.tsx +14 -0
  128. package/src/gui/components/atoms/Drawer/Drawer.resolver.tsx +116 -0
  129. package/src/gui/components/atoms/Drawer/Drawer.stories.tsx +223 -0
  130. package/src/gui/components/atoms/Drawer/Drawer.tsx +25 -0
  131. package/src/gui/components/atoms/Grid/Grid.resolver.tsx +33 -0
  132. package/src/gui/components/atoms/Grid/Grid.stories.tsx +136 -0
  133. package/src/gui/components/atoms/Grid/Grid.tsx +15 -0
  134. package/src/gui/components/atoms/Grid/Grid.types.ts +9 -0
  135. package/src/gui/components/atoms/IconButton/IconButton.resolver.tsx +137 -0
  136. package/src/gui/components/atoms/IconButton/IconButton.stories.tsx +134 -0
  137. package/src/gui/components/atoms/IconButton/IconButton.tsx +22 -0
  138. package/src/gui/components/atoms/Link/Link.resolver.tsx +74 -0
  139. package/src/gui/components/atoms/Link/Link.stories.tsx +157 -0
  140. package/src/gui/components/atoms/Link/Link.tsx +36 -0
  141. package/src/gui/components/atoms/List/List.resolver.tsx +94 -0
  142. package/src/gui/components/atoms/List/List.stories.tsx +137 -0
  143. package/src/gui/components/atoms/List/List.tsx +20 -0
  144. package/src/gui/components/atoms/ListItem/ListItem.resolver.tsx +88 -0
  145. package/src/gui/components/atoms/ListItem/ListItem.stories.tsx +151 -0
  146. package/src/gui/components/atoms/ListItem/ListItem.tsx +19 -0
  147. package/src/gui/components/atoms/ListItemButton/ListItemButton.resolver.tsx +214 -0
  148. package/src/gui/components/atoms/ListItemButton/ListItemButton.stories.tsx +155 -0
  149. package/src/gui/components/atoms/ListItemButton/ListItemButton.tsx +15 -0
  150. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
  151. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.stories.tsx +132 -0
  152. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
  153. package/src/gui/components/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
  154. package/src/gui/components/atoms/ListItemText/ListItemText.stories.tsx +156 -0
  155. package/src/gui/components/atoms/ListItemText/ListItemText.tsx +15 -0
  156. package/src/gui/components/atoms/Menu/Menu.resolver.tsx +112 -0
  157. package/src/gui/components/atoms/Menu/Menu.stories.tsx +162 -0
  158. package/src/gui/components/atoms/Menu/Menu.tsx +17 -0
  159. package/src/gui/components/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
  160. package/src/gui/components/atoms/MenuItem/MenuItem.stories.tsx +134 -0
  161. package/src/gui/components/atoms/MenuItem/MenuItem.tsx +14 -0
  162. package/src/gui/components/atoms/Paper/Paper.resolver.tsx +98 -0
  163. package/src/gui/components/atoms/Paper/Paper.stories.tsx +184 -0
  164. package/src/gui/components/atoms/Paper/Paper.tsx +15 -0
  165. package/src/gui/components/atoms/Section/Section.resolver.tsx +10 -0
  166. package/src/gui/components/atoms/Section/Section.stories.tsx +189 -0
  167. package/src/gui/components/atoms/Section/Section.tsx +76 -0
  168. package/src/gui/components/atoms/Section/Section.types.tsx +24 -0
  169. package/src/gui/components/atoms/Stack/Stack.resolver.tsx +94 -0
  170. package/src/gui/components/atoms/Stack/Stack.stories.tsx +160 -0
  171. package/src/gui/components/atoms/Stack/Stack.tsx +15 -0
  172. package/src/gui/components/atoms/Surface/Surface.resolver.tsx +37 -0
  173. package/src/gui/components/atoms/Surface/Surface.tsx +49 -0
  174. package/src/gui/components/atoms/Surface/Surface.types.ts +20 -0
  175. package/src/gui/components/atoms/Switch/Switch.resolver.tsx +53 -0
  176. package/src/gui/components/atoms/Switch/Switch.stories.tsx +236 -0
  177. package/src/gui/components/atoms/Switch/Switch.tsx +22 -0
  178. package/src/gui/components/atoms/Table/Body/TableBody.tsx +7 -0
  179. package/src/gui/components/atoms/Table/Cell/TableCell.tsx +18 -0
  180. package/src/gui/components/atoms/Table/Head/TableHead.tsx +9 -0
  181. package/src/gui/components/atoms/Table/Row/TableRow.tsx +20 -0
  182. package/src/gui/components/atoms/Table/Table.resolver.tsx +77 -0
  183. package/src/gui/components/atoms/Table/Table.stories.tsx +173 -0
  184. package/src/gui/components/atoms/Table/Table.tsx +20 -0
  185. package/src/gui/components/atoms/TextField/TextField.stories.tsx +25 -0
  186. package/src/gui/components/atoms/TextField/TextField.tsx +15 -0
  187. package/src/gui/components/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
  188. package/src/gui/components/atoms/Toolbar/Toolbar.stories.tsx +155 -0
  189. package/src/gui/components/atoms/Toolbar/Toolbar.tsx +16 -0
  190. package/src/gui/components/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
  191. package/src/gui/components/atoms/Tooltip/Tooltip.stories.tsx +117 -0
  192. package/src/gui/components/atoms/Tooltip/Tooltip.tsx +70 -0
  193. package/src/gui/components/atoms/Typography/Typography.resolver.tsx +158 -0
  194. package/src/gui/components/atoms/Typography/Typography.stories.tsx +222 -0
  195. package/src/gui/components/atoms/Typography/Typography.tsx +27 -0
  196. package/src/gui/components/atoms/Window/Nodes/node.ts +0 -0
  197. package/src/gui/components/atoms/Window/code/block/node.tsx +0 -0
  198. package/src/gui/components/atoms/Window/code/hugging.face.api.ts +11 -0
  199. package/src/gui/components/atoms/Window/connectors/index.ts +19 -0
  200. package/src/gui/components/atoms/Window/window.stories.tsx +20 -0
  201. package/src/gui/components/atoms/Window/window.tsx +636 -0
  202. package/src/gui/components/atoms/atoms.tsx +151 -0
  203. package/src/gui/components/atoms/index.ts +2 -0
  204. package/src/gui/components/generics/Cards/Gridme.jsx +52 -0
  205. package/src/gui/components/generics/Cards/LilBox.jsx +65 -0
  206. package/src/gui/components/generics/Cards/ModuleCard.jsx +106 -0
  207. package/src/gui/components/generics/Chats/FullChatBot.jsx +223 -0
  208. package/src/gui/components/generics/Code/CodeBlock.jsx +33 -0
  209. package/src/gui/components/generics/EmojiCursor/EmojiCursor.stories.tsx +153 -0
  210. package/src/gui/components/generics/EmojiCursor/EmojiCursor.tsx +23 -0
  211. package/src/gui/components/generics/Feedback/Callout.jsx +92 -0
  212. package/src/gui/components/generics/Layout/GridX.jsx +29 -0
  213. package/src/gui/components/generics/Layout/Hero2.jsx +132 -0
  214. package/src/gui/components/generics/Layout/PageContainer.jsx +29 -0
  215. package/src/gui/components/generics/Layout/PageDivider.jsx +20 -0
  216. package/src/gui/components/generics/Layout/Section.jsx +43 -0
  217. package/src/gui/components/generics/Layout/SectionHeader.jsx +21 -0
  218. package/src/gui/components/generics/Media/Img.jsx +58 -0
  219. package/src/gui/components/generics/Media/VideoEmbed.jsx +51 -0
  220. package/src/gui/components/generics/Organization/TableOfContents.jsx +51 -0
  221. package/src/gui/components/generics/Organization/Tabs.jsx +45 -0
  222. package/src/gui/components/generics/Text/TextList.jsx +41 -0
  223. package/src/gui/components/generics/Text/TextParagraph.jsx +28 -0
  224. package/src/gui/components/generics/Text/TextQuote.jsx +23 -0
  225. package/src/gui/components/generics/Text/TextTitle.jsx +44 -0
  226. package/src/gui/components/molecules/Dialog/Dialog.stories.tsx +18 -0
  227. package/src/gui/components/molecules/Dialog/Dialog.tsx +5 -0
  228. package/src/gui/components/molecules/Hero/Hero.stories.tsx +140 -0
  229. package/src/gui/components/molecules/Hero/Hero.tsx +152 -0
  230. package/src/gui/components/molecules/Hero/Hero.types.tsx +18 -0
  231. package/src/gui/components/molecules/Modal/Modal.resolver.tsx +38 -0
  232. package/src/gui/components/molecules/Modal/Modal.stories.tsx +82 -0
  233. package/src/gui/components/molecules/Modal/Modal.tsx +110 -0
  234. package/src/gui/components/molecules/Modal/Modal.types.ts +29 -0
  235. package/src/gui/components/molecules/Page/Page.stories.tsx +135 -0
  236. package/src/gui/components/molecules/Page/Page.tsx +94 -0
  237. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.resolver.tsx +58 -0
  238. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.stories.tsx +133 -0
  239. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.tsx +101 -0
  240. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.types.ts +29 -0
  241. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.resolver.tsx +15 -0
  242. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.stories.tsx +88 -0
  243. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.tsx +167 -0
  244. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.types.ts +34 -0
  245. package/src/gui/components/molecules/molecules.ts +49 -0
  246. package/src/gui/components/organisms/Blockchain/Blocks/BlocksTable.tsx +119 -0
  247. package/src/gui/components/organisms/Blockchain/Usernames/Identities.stories.tsx +20 -0
  248. package/src/gui/components/organisms/Blockchain/Usernames/QR.tsx +566 -0
  249. package/src/gui/components/organisms/Blockchain/Usernames/Usernames.tsx +448 -0
  250. package/src/gui/components/organisms/Blockchain/Usernames/identities.tsx +710 -0
  251. package/src/gui/components/organisms/Blockchain/blockchain.stories.tsx +17 -0
  252. package/src/gui/components/organisms/Blockchain/blockchain.tsx +368 -0
  253. package/src/gui/components/organisms/Blockchain/scripts/connection.ts +82 -0
  254. package/src/gui/components/organisms/Blockchain/scripts/match_face.ts +143 -0
  255. package/src/gui/components/organisms/HighLighter/HighLighter.stories.tsx +168 -0
  256. package/src/gui/components/organisms/HighLighter/HighLighter.tsx +420 -0
  257. package/src/gui/components/organisms/HighLighter/HighLightsDrawer.tsx +197 -0
  258. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/FaceRecognition.stories.tsx +312 -0
  259. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/FaceRecognition.tsx +765 -0
  260. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceCameraPermission.ts +70 -0
  261. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceLandmarker.ts +106 -0
  262. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceOverlay.ts +489 -0
  263. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceTemplate.ts +32 -0
  264. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceTemplateBurst.ts +178 -0
  265. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/verifyTemplate.ts +136 -0
  266. package/src/gui/components/organisms/IdentityNoise/IdentityNoise.tsx +403 -0
  267. package/src/gui/components/organisms/IdentityNoise/IndentityNoise.stories.tsx +15 -0
  268. package/src/gui/components/organisms/IdentityNoise/Noise/Noise.stories.tsx +206 -0
  269. package/src/gui/components/organisms/IdentityNoise/Noise/Noise.tsx +394 -0
  270. package/src/gui/components/organisms/IdentityNoise/Triad/QR.tsx +566 -0
  271. package/src/gui/components/organisms/IdentityNoise/Triad/Tiad.stories.tsx +6 -0
  272. package/src/gui/components/organisms/IdentityNoise/Triad/Triad.tsx +917 -0
  273. package/src/gui/components/organisms/IdentityNoise/Triad/handleCleak.ts +0 -0
  274. package/src/gui/components/organisms/IdentityNoise/Triad/identity.ts +31 -0
  275. package/src/gui/components/organisms/IdentityNoise/Triad/me/fundamentals/vectors/vectors.tsx +252 -0
  276. package/src/gui/components/organisms/IdentityNoise/Triad/me/me.stories.tsx +314 -0
  277. package/src/gui/components/organisms/IdentityNoise/Triad/me/me.tsx +0 -0
  278. package/src/gui/components/organisms/organisms.ts +15 -0
  279. package/src/gui/contexts/InsetsContext.tsx +40 -0
  280. package/src/gui/contexts/LeftSidebarContext.tsx +20 -0
  281. package/src/gui/contexts/RightSidebarContext.tsx +25 -0
  282. package/src/gui/contexts/ThemeContext.ts +34 -0
  283. package/src/gui/contexts/index.ts +4 -0
  284. package/src/gui/hooks/index.ts +11 -0
  285. package/src/gui/hooks/resolveColorToken.ts +39 -0
  286. package/src/gui/hooks/useCodeGen.ts +12 -0
  287. package/src/gui/hooks/useGuiMediaQuery.ts +18 -0
  288. package/src/gui/hooks/useGuiTheme.ts +18 -0
  289. package/src/gui/hooks/useInsets.ts +26 -0
  290. package/src/gui/hooks/useIsMobile.ts +13 -0
  291. package/src/gui/hooks/useIsTouchDevice.ts +25 -0
  292. package/src/gui/hooks/useLeftSidebar.ts +10 -0
  293. package/src/gui/hooks/useRightSidebar.ts +12 -0
  294. package/src/gui/hooks/useViewportKey.ts +19 -0
  295. package/src/gui/hooks/useViewportProp.ts +17 -0
  296. package/src/gui/registry/GuiRegistry.ts +19 -0
  297. package/src/gui/registry/factory.ts +12 -0
  298. package/src/gui/registry/index.ts +3 -0
  299. package/src/gui/registry/types.ts +6 -0
  300. package/src/gui/utils/nodeID.ts +11 -0
  301. package/src/registry/GuiRegistry.ts +19 -0
  302. package/src/stories/01.Home.mdx +22 -0
  303. package/src/stories/02.Understanding.This.GUI.mdx +149 -0
  304. package/src/stories/Theme/Palette.stories.tsx +86 -0
  305. package/src/stories/Theme/ThemeViewer.stories.tsx +91 -0
  306. package/src/stories/Theme/Typography.stories.jsx +211 -0
  307. package/src/stories/assets/this.GUI.png +0 -0
  308. package/src/types/gui.d.ts +67 -0
  309. package/src/types/theme.d.ts +191 -0
  310. package/src/types/viewport.ts +132 -0
@@ -0,0 +1,448 @@
1
+ // UsersTable.tsx — Cleaker / Blockchain Viewer
2
+ import React, { useEffect, useState } from "react";
3
+ import { Box, Typography, Table, TableBody, TableCell, TableHead, TableRow, Tooltip, IconButton, Avatar } from "@/gui/components/atoms";
4
+ import Icon from "@/gui/Theme/Icon/Icon";
5
+ import QR from "./QR";
6
+
7
+ const ME_EMBED_BITMAP: string[] = [
8
+ "000000000000000000000000000111111000",
9
+ "000000000000000000000000000111111000",
10
+ "111000111111111110000000111111111111",
11
+ "111000111111111110000000111000000111",
12
+ "111000111111111110000000111000000111",
13
+ "000000111001111001110000111111111111",
14
+ "000000111001111001110000111111111111",
15
+ "000000111001111001110000111111111111",
16
+ "000000111001111001110000111000000000",
17
+ "000000111001111001110000111000000000",
18
+ "000000000000000000000000000000000000",
19
+ "000000111000000001110000111000000000",
20
+ "000000111000000001110000111000000000",
21
+ "000000111000000001110000111111111111",
22
+ "000000111000000001110000000111111111",
23
+ "000000111000000001110000000111111111",
24
+ ];
25
+
26
+ export interface UsersTableProps {
27
+ endpoint: string; // e.g. "http://localhost:8161"
28
+ }
29
+
30
+ interface UserEntry {
31
+ username: string;
32
+ identityHash: string;
33
+ publicKey: string;
34
+ createdAt: number;
35
+ updatedAt: number;
36
+ // Optional profile fields if the backend starts returning them later
37
+ profileImg?: string | null;
38
+ profile?: { img?: string | null } | null;
39
+ }
40
+
41
+
42
+ function lastN(s: string, n: number) {
43
+ const t = s.trim();
44
+ if (t.length <= n) return t;
45
+ return t.slice(-n);
46
+ }
47
+
48
+ function shortKeyLabel(pk: string) {
49
+ // show only last 6 chars to keep it human-checkable, never show full key by default
50
+ const tail = lastN(pk, 6);
51
+ return `…${tail}`;
52
+ }
53
+
54
+ async function copyToClipboard(text: string) {
55
+ try {
56
+ await navigator.clipboard.writeText(text);
57
+ return true;
58
+ } catch {
59
+ // fallback
60
+ try {
61
+ const ta = document.createElement('textarea');
62
+ ta.value = text;
63
+ ta.style.position = 'fixed';
64
+ ta.style.opacity = '0';
65
+ document.body.appendChild(ta);
66
+ ta.select();
67
+ document.execCommand('copy');
68
+ document.body.removeChild(ta);
69
+ return true;
70
+ } catch {
71
+ return false;
72
+ }
73
+ }
74
+ }
75
+
76
+ export default function UsersTable({ endpoint }: UsersTableProps) {
77
+ const [rows, setRows] = useState<UserEntry[]>([]);
78
+ const [loading, setLoading] = useState(false);
79
+ const [error, setError] = useState<string | null>(null);
80
+ const [showTech, setShowTech] = useState(false);
81
+ // QR modal state removed. Only 'copied' remains.
82
+ const [copied, setCopied] = useState(false);
83
+
84
+ async function load() {
85
+ setLoading(true);
86
+ setError(null);
87
+ try {
88
+ const res = await fetch(`${endpoint}/`);
89
+ if (!res.ok) throw new Error(`HTTP ${res.status}`);
90
+ const json = await res.json();
91
+ setRows(json.users ?? []);
92
+ } catch (err: any) {
93
+ setError(err.message || "Failed to load users");
94
+ }
95
+ setLoading(false);
96
+ }
97
+
98
+ useEffect(() => {
99
+ load();
100
+ }, [endpoint]);
101
+
102
+ const getUserHostUrl = (username: string) => {
103
+ const u = String(username || '').trim().toLowerCase();
104
+ if (!u) return '';
105
+
106
+ // Turn endpoint into a host (strip scheme + path) and then prefix with username.
107
+ // Example:
108
+ // endpoint: http://localhost:8161 -> host: localhost:8161 -> username host: jabellae.localhost:8161
109
+ // endpoint: https://cleaker.me -> host: cleaker.me -> username host: jabellae.cleaker.me
110
+ let host = String(endpoint || '').trim();
111
+ host = host.replace(/^https?:\/\//i, '').replace(/\/.*$/, '').replace(/\/+$/, '');
112
+ if (!host) return '';
113
+
114
+ // Preserve whether the caller is using https.
115
+ const scheme = /^https:\/\//i.test(String(endpoint || '')) ? 'https://' : 'http://';
116
+ return `${scheme}${u}.${host}`;
117
+ };
118
+
119
+ const getQrUrlForUser = (u: UserEntry) => {
120
+ const pk = String(u.publicKey || '').trim();
121
+ if (!pk) return '';
122
+ const base = String(endpoint || '').replace(/\/+$/, '');
123
+ return `${base}/?pk=${encodeURIComponent(pk)}`;
124
+ };
125
+
126
+ return (
127
+ <Box sx={{ p: 2 }}>
128
+ <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', mb: 2 }}>
129
+ <Typography variant="h6">
130
+
131
+ </Typography>
132
+ <Tooltip title={showTech ? 'Hide advanced columns' : 'Show advanced columns'}>
133
+ <IconButton
134
+ size="small"
135
+ onClick={() => setShowTech((v) => !v)}
136
+ aria-label={showTech ? 'Hide advanced columns' : 'Show advanced columns'}
137
+ sx={{
138
+ border: '1px solid',
139
+ borderColor: 'divider',
140
+ borderRadius: 2,
141
+ bgcolor: 'background.paper',
142
+ width: 32,
143
+ height: 32,
144
+ '& .material-symbols-rounded': { fontSize: 18 },
145
+ }}
146
+ >
147
+ <Icon name="settings" fontSize={18 as any} />
148
+ </IconButton>
149
+ </Tooltip>
150
+ </Box>
151
+
152
+ {loading && (
153
+ <Box sx={{ borderRadius: 2, p: 3, bgcolor: 'background.paper', border: '1px solid', borderColor: 'divider' }}>
154
+ <Typography variant="body2" sx={{ color: 'text.secondary', textAlign: 'center' }}>
155
+ Loading users…
156
+ </Typography>
157
+ </Box>
158
+ )}
159
+
160
+ {error && (
161
+ <Box sx={{ mb: 2, borderRadius: 2, p: 2, bgcolor: 'background.paper', border: '1px solid', borderColor: 'error.main' }}>
162
+ <Typography variant="body2" sx={{ color: 'error.main' }}>
163
+ {error}
164
+ </Typography>
165
+ </Box>
166
+ )}
167
+
168
+ {!loading && !error && rows.length === 0 && (
169
+ <Box sx={{ borderRadius: 2, p: 2, bgcolor: 'background.paper', border: '1px solid', borderColor: 'divider' }}>
170
+ <Typography variant="body2" sx={{ color: 'text.secondary' }}>
171
+ No users registered in this blockchain.
172
+ </Typography>
173
+ </Box>
174
+ )}
175
+
176
+ {rows.length > 0 && (
177
+ <Box
178
+ sx={{
179
+ borderRadius: 2,
180
+ border: '1px solid',
181
+ borderColor: 'divider',
182
+ background: 'background.nav',
183
+ overflow: 'hidden',
184
+ }}
185
+ >
186
+ <Table
187
+ size="small"
188
+ sx={{
189
+ '& th, & td': { borderColor: 'divider' },
190
+ '& tbody tr:hover': { bgcolor: 'action.hover' },
191
+ }}
192
+ >
193
+
194
+
195
+ <TableBody>
196
+ {rows.map((r) => (
197
+ <TableRow key={r.username} hover>
198
+ {/* Mini QR cell */}
199
+ {/* Scan / QR tooltip trigger (low-noise) */}
200
+ <TableCell sx={{ width: 34, px: 0.5 }}>
201
+ {(() => {
202
+ const pk = String(r.publicKey || '').trim();
203
+ const hasPk = pk.length > 0;
204
+
205
+ const trigger = (
206
+ <IconButton
207
+ size="small"
208
+ disabled={!hasPk}
209
+ aria-label={hasPk ? 'Show QR' : 'No public key'}
210
+ sx={{
211
+ width: 36,
212
+ height: 36,
213
+ borderRadius: 2,
214
+ bgcolor: 'transparent',
215
+ border: 'none',
216
+ color: 'primary.main',
217
+ opacity: hasPk ? 1 : 0.35,
218
+ '&:hover': { bgcolor: 'transparent' },
219
+ '& .material-symbols-rounded': { fontSize: 22 },
220
+ }}
221
+ >
222
+ <Icon name="fingerprint" fontSize={22 as any} />
223
+ </IconButton>
224
+ );
225
+
226
+ if (!hasPk) return trigger;
227
+
228
+ return (
229
+ <Tooltip
230
+ placement="right"
231
+ arrow
232
+ enterDelay={120}
233
+ leaveDelay={80}
234
+ slotProps={{
235
+ tooltip: {
236
+ sx: {
237
+ bgcolor: 'background.paper',
238
+ color: 'text.primary',
239
+ border: '1px solid',
240
+ borderColor: 'divider',
241
+ boxShadow: 6,
242
+ p: 1.25,
243
+ '& .MuiTooltip-arrow': {
244
+ color: 'background.paper',
245
+ },
246
+ },
247
+ },
248
+ }}
249
+ title={
250
+ <Box
251
+ sx={{
252
+ display: 'flex',
253
+ flexDirection: 'column',
254
+ gap: 1,
255
+ alignItems: 'center',
256
+ ['--qr-fg' as any]: 'currentColor',
257
+ }}
258
+ >
259
+ {(() => {
260
+ const url = getQrUrlForUser(r);
261
+ return (
262
+ <Box
263
+ sx={{
264
+ color: 'primary.main',
265
+ borderRadius: 2,
266
+ p: 0.75,
267
+ bgcolor: 'background.nav',
268
+ border: '1px solid',
269
+ borderColor: 'divider',
270
+ }}
271
+ >
272
+ <QR
273
+ value={url}
274
+ size={144}
275
+ bg="transparent"
276
+ fg="var(--qr-fg, currentColor)"
277
+ moduleRadius={0}
278
+ caption={undefined}
279
+ ecc="H"
280
+ embedMode="positive-overlay"
281
+ embedScale={0.36}
282
+ embedBitmap={ME_EMBED_BITMAP}
283
+ />
284
+ </Box>
285
+ );
286
+ })()}
287
+ </Box>
288
+ }
289
+ >
290
+ {trigger}
291
+ </Tooltip>
292
+ );
293
+ })()}
294
+ </TableCell>
295
+ <TableCell sx={{ fontSize: 12, color: 'text.primary', pl: 0.25 }}>
296
+ {(() => {
297
+ const img =
298
+ (r as any)?.profileImg ??
299
+ (r as any)?.profile?.img ??
300
+ (r as any)?.profile?.pic ??
301
+ (r as any)?.profilePic ??
302
+ null;
303
+
304
+ const fallback = String(r.username || '?').slice(0, 1).toUpperCase();
305
+ const href = getUserHostUrl(r.username);
306
+
307
+ return (
308
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.75 }}>
309
+ <Avatar
310
+ src={img ? String(img) : undefined}
311
+ alt={String(r.username || 'user')}
312
+ sx={{
313
+ width: 28,
314
+ height: 28,
315
+ fontSize: 12,
316
+ fontWeight: 700,
317
+ bgcolor: 'background.paper',
318
+ border: '1px solid',
319
+ borderColor: 'divider',
320
+ flexShrink: 0,
321
+ }}
322
+ >
323
+ {fallback}
324
+ </Avatar>
325
+
326
+ {href ? (
327
+ <Box
328
+ component="a"
329
+ href={href}
330
+ target="_blank"
331
+ rel="noreferrer"
332
+ sx={{
333
+ color: 'text.primary',
334
+ textDecoration: 'none',
335
+ '&:visited': { color: 'text.primary', textDecoration: 'none' },
336
+ '&:active': { color: 'text.primary', textDecoration: 'none' },
337
+ '&:focus': { outline: 'none', textDecoration: 'none' },
338
+ '&:focus-visible': {
339
+ outline: '2px solid',
340
+ outlineColor: 'divider',
341
+ outlineOffset: 2,
342
+ borderRadius: 6,
343
+ textDecoration: 'none',
344
+ },
345
+ fontWeight: 600,
346
+ cursor: 'pointer',
347
+ '&:hover': { textDecoration: 'none' },
348
+ }}
349
+ title={href}
350
+ >
351
+ {`@${r.username}`}
352
+ </Box>
353
+ ) : (
354
+ <Typography sx={{ fontWeight: 600 }}>{`@${r.username}`}</Typography>
355
+ )}
356
+ </Box>
357
+ );
358
+ })()}
359
+ </TableCell>
360
+ {showTech && (
361
+ <TableCell
362
+ sx={{
363
+ fontSize: 12,
364
+ color: 'text.secondary',
365
+ fontFamily: 'monospace',
366
+ maxWidth: 120,
367
+ overflow: 'hidden',
368
+ textOverflow: 'ellipsis',
369
+ whiteSpace: 'nowrap',
370
+ }}
371
+ title={r.identityHash}
372
+ >
373
+ {r.identityHash}
374
+ </TableCell>
375
+ )}
376
+ {showTech && (
377
+ <TableCell sx={{ fontSize: 12, color: 'text.secondary' }}>
378
+ {(() => {
379
+ const pk = String(r.publicKey || '').trim();
380
+ const hasPk = pk.length > 0;
381
+ const label = hasPk ? shortKeyLabel(pk) : '—';
382
+
383
+ return (
384
+ <Box sx={{ display: 'flex', alignItems: 'center', gap: 0.75 }}>
385
+ <Typography
386
+ variant="body2"
387
+ sx={{
388
+ fontSize: 12,
389
+ color: 'text.secondary',
390
+ fontFamily: 'monospace',
391
+ userSelect: 'none',
392
+ }}
393
+ title={hasPk ? 'Public key (hidden). Use copy/QR.' : 'No public key'}
394
+ >
395
+ {label}
396
+ </Typography>
397
+
398
+ {hasPk ? (
399
+ <Tooltip title={copied ? 'Copied!' : 'Copy full public key'}>
400
+ <IconButton
401
+ size="small"
402
+ onClick={async () => {
403
+ const ok = await copyToClipboard(pk);
404
+ if (ok) {
405
+ setCopied(true);
406
+ window.setTimeout(() => setCopied(false), 900);
407
+ }
408
+ }}
409
+ aria-label="Copy public key"
410
+ sx={{
411
+ border: '1px solid',
412
+ borderColor: 'divider',
413
+ borderRadius: 2,
414
+ bgcolor: 'background.paper',
415
+ width: 28,
416
+ height: 28,
417
+ '& .material-symbols-rounded': { fontSize: 18 },
418
+ }}
419
+ >
420
+ <Icon name="content_copy" fontSize={18 as any} />
421
+ </IconButton>
422
+ </Tooltip>
423
+ ) : null}
424
+ </Box>
425
+ );
426
+ })()}
427
+ </TableCell>
428
+ )}
429
+ {showTech && (
430
+ <TableCell sx={{ fontSize: 12, color: 'text.secondary' }}>
431
+ {new Date(r.createdAt).toLocaleString()}
432
+ </TableCell>
433
+ )}
434
+ {showTech && (
435
+ <TableCell sx={{ fontSize: 12, color: 'text.secondary' }}>
436
+ {new Date(r.updatedAt).toLocaleString()}
437
+ </TableCell>
438
+ )}
439
+ </TableRow>
440
+ ))}
441
+ </TableBody>
442
+ </Table>
443
+ </Box>
444
+ )}
445
+
446
+ </Box>
447
+ );
448
+ }