this.gui 1.3.40 → 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 (319) hide show
  1. package/dist/init/index.html +27 -0
  2. package/dist/init/package-lock.json +5779 -0
  3. package/dist/init/package.json +24 -0
  4. package/dist/init/src/App.tsx +40 -0
  5. package/dist/init/src/index.css +16 -0
  6. package/dist/init/src/main.tsx +13 -0
  7. package/dist/init/src/router/DerivableRouter.tsx +36 -0
  8. package/dist/init/tsconfig.json +17 -0
  9. package/dist/init/vite.config.ts +11 -0
  10. package/package.json +5 -3
  11. package/src/GUI.tsx +46 -0
  12. package/src/QRouter/QRegistry.tsx +53 -0
  13. package/src/QRouter/QRouter.stories.tsx +31 -0
  14. package/src/QRouter/QRouter.tsx +57 -0
  15. package/src/gui/Theme/GuiProvider.tsx +111 -0
  16. package/src/gui/Theme/Icon/Icon.resolver.tsx +29 -0
  17. package/src/gui/Theme/Icon/Icon.tsx +43 -0
  18. package/src/gui/Theme/Layout/Content/Content.resolver.tsx +0 -0
  19. package/src/gui/Theme/Layout/Content/Content.stories.tsx +88 -0
  20. package/src/gui/Theme/Layout/Content/Content.tsx +53 -0
  21. package/src/gui/Theme/Layout/Content/Content.types.tsx +40 -0
  22. package/src/gui/Theme/Layout/Footer/Footer.resolver.tsx +45 -0
  23. package/src/gui/Theme/Layout/Footer/Footer.stories.tsx +205 -0
  24. package/src/gui/Theme/Layout/Footer/Footer.tsx +337 -0
  25. package/src/gui/Theme/Layout/Footer/Footer.types.ts +40 -0
  26. package/src/gui/Theme/Layout/Layout/Layout.resolver.tsx +37 -0
  27. package/src/gui/Theme/Layout/Layout/Layout.stories.tsx +289 -0
  28. package/src/gui/Theme/Layout/Layout/Layout.tsx +117 -0
  29. package/src/gui/Theme/Layout/Layout/Layout.types.ts +57 -0
  30. package/src/gui/Theme/Layout/Layout/useLayoutBreakpoints.ts +9 -0
  31. package/src/gui/Theme/Layout/Namespace/Namespace.stories.tsx +105 -0
  32. package/src/gui/Theme/Layout/Namespace/Namespace.tsx +26 -0
  33. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.resolver.tsx +87 -0
  34. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.stories.tsx +199 -0
  35. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.tsx +311 -0
  36. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/LeftSidebar.types.ts +41 -0
  37. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/SidebarToggleButton.tsx +53 -0
  38. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.resolver.tsx +19 -0
  39. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.tsx +107 -0
  40. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.resolver.tsx +0 -0
  41. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.tsx +134 -0
  42. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.types.ts +15 -0
  43. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarMenu/LeftSidebarMenu.tsx +142 -0
  44. package/src/gui/Theme/Layout/Sidebars/LeftSidebar/components/LeftSidebarToggleButton/LeftSidebarToggleButton.tsx +23 -0
  45. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.resolver.tsx +35 -0
  46. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.stories.tsx +239 -0
  47. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.tsx +319 -0
  48. package/src/gui/Theme/Layout/Sidebars/RightSidebar/RightSidebar.types.ts +17 -0
  49. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarAction/RightSidebarAction.tsx +102 -0
  50. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarLink/RightSidebarLink.tsx +132 -0
  51. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarMenu/RightSidebarMenu.tsx +140 -0
  52. package/src/gui/Theme/Layout/Sidebars/RightSidebar/components/RightSidebarToggleButton/RightSidebarToggleButton.tsx +22 -0
  53. package/src/gui/Theme/Layout/StickyOptions/StickyOptionsTop.stories.tsx +469 -0
  54. package/src/gui/Theme/Layout/StickyOptions/StickyOptionsTop.tsx +489 -0
  55. package/src/gui/Theme/Layout/TopBar/TopBar.resolver.tsx +86 -0
  56. package/src/gui/Theme/Layout/TopBar/TopBar.stories.tsx +350 -0
  57. package/src/gui/Theme/Layout/TopBar/TopBar.tsx +292 -0
  58. package/src/gui/Theme/Layout/TopBar/TopBar.types.ts +39 -0
  59. package/src/gui/Theme/Layout/TopBar/components/TopBarAction/TopBarAction.stories.tsx +83 -0
  60. package/src/gui/Theme/Layout/TopBar/components/TopBarAction/TopBarAction.tsx +18 -0
  61. package/src/gui/Theme/Layout/TopBar/components/TopBarAction/TopBarAction.types.ts +4 -0
  62. package/src/gui/Theme/Layout/TopBar/components/TopBarLink/TopBarLink.stories.tsx +189 -0
  63. package/src/gui/Theme/Layout/TopBar/components/TopBarLink/TopBarLink.tsx +30 -0
  64. package/src/gui/Theme/Layout/TopBar/components/TopBarLink/TopBarLink.types.ts +9 -0
  65. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.resolver.tsx +14 -0
  66. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.stories.tsx +56 -0
  67. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.tsx +123 -0
  68. package/src/gui/Theme/Layout/TopBar/components/TopBarMenu/TopBarMenu.types.ts +44 -0
  69. package/src/gui/Theme/catalog/CherryByte/CherryByte.png +0 -0
  70. package/src/gui/Theme/catalog/CherryByte/dark.tokens.ts +47 -0
  71. package/src/gui/Theme/catalog/CherryByte/light.tokens.ts +47 -0
  72. package/src/gui/Theme/catalog/CherryByte/manifest.ts +24 -0
  73. package/src/gui/Theme/catalog/GhostShell/dark.tokens.ts +43 -0
  74. package/src/gui/Theme/catalog/GhostShell/ghost.png +0 -0
  75. package/src/gui/Theme/catalog/GhostShell/light.tokens.ts +39 -0
  76. package/src/gui/Theme/catalog/GhostShell/manifest.ts +24 -0
  77. package/src/gui/Theme/catalog/LunaHex/LunaHex.png +0 -0
  78. package/src/gui/Theme/catalog/LunaHex/dark.tokens.ts +34 -0
  79. package/src/gui/Theme/catalog/LunaHex/light.tokens.ts +74 -0
  80. package/src/gui/Theme/catalog/LunaHex/manifest.ts +24 -0
  81. package/src/gui/Theme/catalog/MUI/MUI.png +0 -0
  82. package/src/gui/Theme/catalog/MUI/dark.tokens.ts +58 -0
  83. package/src/gui/Theme/catalog/MUI/light.tokens.ts +74 -0
  84. package/src/gui/Theme/catalog/MUI/manifest.ts +24 -0
  85. package/src/gui/Theme/catalog/PrinceOfDarkness/dark.tokens.ts +48 -0
  86. package/src/gui/Theme/catalog/PrinceOfDarkness/light.tokens.ts +47 -0
  87. package/src/gui/Theme/catalog/PrinceOfDarkness/manifest.ts +24 -0
  88. package/src/gui/Theme/catalog/PrinceOfDarkness/prince.png +0 -0
  89. package/src/gui/Theme/catalog/PrinceOfDarkness/princeOfDarkness.png +0 -0
  90. package/src/gui/Theme/catalog/Seafoam/dark.tokens.ts +49 -0
  91. package/src/gui/Theme/catalog/Seafoam/light.tokens.ts +47 -0
  92. package/src/gui/Theme/catalog/Seafoam/manifest.ts +24 -0
  93. package/src/gui/Theme/catalog/Seafoam/seaFoam.png +0 -0
  94. package/src/gui/Theme/catalog/neurons/dark.tokens.ts +58 -0
  95. package/src/gui/Theme/catalog/neurons/light.tokens.ts +74 -0
  96. package/src/gui/Theme/catalog/neurons/manifest.ts +24 -0
  97. package/src/gui/Theme/catalog/neurons/neurons.me.png +0 -0
  98. package/src/gui/Theme/fromTokens.ts +272 -0
  99. package/src/gui/Theme/gui.css +31 -0
  100. package/src/gui/Theme/index.ts +17 -0
  101. package/src/gui/Theme/styles/buildShadows.ts +83 -0
  102. package/src/gui/Theme/styles/theme.tokens.ts +108 -0
  103. package/src/gui/Theme/utils/catalog.ts +61 -0
  104. package/src/gui/Theme/utils/persistence.ts +66 -0
  105. package/src/gui/Theme/utils/themeUtils.ts +34 -0
  106. package/src/gui/components/atoms/AppBar/AppBar.resolver.tsx +46 -0
  107. package/src/gui/components/atoms/AppBar/AppBar.stories.tsx +251 -0
  108. package/src/gui/components/atoms/AppBar/AppBar.tsx +107 -0
  109. package/src/gui/components/atoms/AppBar/AppBar.types.ts +28 -0
  110. package/src/gui/components/atoms/Avatar/Avatar.resolver.tsx +61 -0
  111. package/src/gui/components/atoms/Avatar/Avatar.stories.tsx +36 -0
  112. package/src/gui/components/atoms/Avatar/Avatar.tsx +14 -0
  113. package/src/gui/components/atoms/Box/Box.resolver.tsx +171 -0
  114. package/src/gui/components/atoms/Box/Box.stories.tsx +263 -0
  115. package/src/gui/components/atoms/Box/Box.tsx +15 -0
  116. package/src/gui/components/atoms/Button/Button.resolver.tsx +103 -0
  117. package/src/gui/components/atoms/Button/Button.stories.tsx +219 -0
  118. package/src/gui/components/atoms/Button/Button.tsx +40 -0
  119. package/src/gui/components/atoms/Card/Card.resolver.tsx +63 -0
  120. package/src/gui/components/atoms/Card/Card.stories.tsx +54 -0
  121. package/src/gui/components/atoms/Card/Card.tsx +13 -0
  122. package/src/gui/components/atoms/CardActions/CardActions.resolver.tsx +59 -0
  123. package/src/gui/components/atoms/CardActions/CardActions.stories.tsx +32 -0
  124. package/src/gui/components/atoms/CardActions/CardActions.tsx +14 -0
  125. package/src/gui/components/atoms/CardContent/CardContent.resolver.tsx +60 -0
  126. package/src/gui/components/atoms/CardContent/CardContent.stories.tsx +34 -0
  127. package/src/gui/components/atoms/CardContent/CardContent.tsx +13 -0
  128. package/src/gui/components/atoms/CardHeader/CardHeader.resolver.tsx +68 -0
  129. package/src/gui/components/atoms/CardHeader/CardHeader.stories.tsx +40 -0
  130. package/src/gui/components/atoms/CardHeader/CardHeader.tsx +12 -0
  131. package/src/gui/components/atoms/Collapse/Collapse.resolver.tsx +85 -0
  132. package/src/gui/components/atoms/Collapse/Collapse.stories.tsx +130 -0
  133. package/src/gui/components/atoms/Collapse/Collapse.tsx +17 -0
  134. package/src/gui/components/atoms/Divider/Divider.resolver.tsx +95 -0
  135. package/src/gui/components/atoms/Divider/Divider.stories.tsx +108 -0
  136. package/src/gui/components/atoms/Divider/Divider.tsx +14 -0
  137. package/src/gui/components/atoms/Drawer/Drawer.resolver.tsx +116 -0
  138. package/src/gui/components/atoms/Drawer/Drawer.stories.tsx +223 -0
  139. package/src/gui/components/atoms/Drawer/Drawer.tsx +25 -0
  140. package/src/gui/components/atoms/Grid/Grid.resolver.tsx +33 -0
  141. package/src/gui/components/atoms/Grid/Grid.stories.tsx +136 -0
  142. package/src/gui/components/atoms/Grid/Grid.tsx +15 -0
  143. package/src/gui/components/atoms/Grid/Grid.types.ts +9 -0
  144. package/src/gui/components/atoms/IconButton/IconButton.resolver.tsx +137 -0
  145. package/src/gui/components/atoms/IconButton/IconButton.stories.tsx +134 -0
  146. package/src/gui/components/atoms/IconButton/IconButton.tsx +22 -0
  147. package/src/gui/components/atoms/Link/Link.resolver.tsx +74 -0
  148. package/src/gui/components/atoms/Link/Link.stories.tsx +157 -0
  149. package/src/gui/components/atoms/Link/Link.tsx +36 -0
  150. package/src/gui/components/atoms/List/List.resolver.tsx +94 -0
  151. package/src/gui/components/atoms/List/List.stories.tsx +137 -0
  152. package/src/gui/components/atoms/List/List.tsx +20 -0
  153. package/src/gui/components/atoms/ListItem/ListItem.resolver.tsx +88 -0
  154. package/src/gui/components/atoms/ListItem/ListItem.stories.tsx +151 -0
  155. package/src/gui/components/atoms/ListItem/ListItem.tsx +19 -0
  156. package/src/gui/components/atoms/ListItemButton/ListItemButton.resolver.tsx +214 -0
  157. package/src/gui/components/atoms/ListItemButton/ListItemButton.stories.tsx +155 -0
  158. package/src/gui/components/atoms/ListItemButton/ListItemButton.tsx +15 -0
  159. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
  160. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.stories.tsx +132 -0
  161. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
  162. package/src/gui/components/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
  163. package/src/gui/components/atoms/ListItemText/ListItemText.stories.tsx +156 -0
  164. package/src/gui/components/atoms/ListItemText/ListItemText.tsx +15 -0
  165. package/src/gui/components/atoms/Menu/Menu.resolver.tsx +112 -0
  166. package/src/gui/components/atoms/Menu/Menu.stories.tsx +162 -0
  167. package/src/gui/components/atoms/Menu/Menu.tsx +17 -0
  168. package/src/gui/components/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
  169. package/src/gui/components/atoms/MenuItem/MenuItem.stories.tsx +134 -0
  170. package/src/gui/components/atoms/MenuItem/MenuItem.tsx +14 -0
  171. package/src/gui/components/atoms/Paper/Paper.resolver.tsx +98 -0
  172. package/src/gui/components/atoms/Paper/Paper.stories.tsx +184 -0
  173. package/src/gui/components/atoms/Paper/Paper.tsx +15 -0
  174. package/src/gui/components/atoms/Section/Section.resolver.tsx +10 -0
  175. package/src/gui/components/atoms/Section/Section.stories.tsx +189 -0
  176. package/src/gui/components/atoms/Section/Section.tsx +76 -0
  177. package/src/gui/components/atoms/Section/Section.types.tsx +24 -0
  178. package/src/gui/components/atoms/Stack/Stack.resolver.tsx +94 -0
  179. package/src/gui/components/atoms/Stack/Stack.stories.tsx +160 -0
  180. package/src/gui/components/atoms/Stack/Stack.tsx +15 -0
  181. package/src/gui/components/atoms/Surface/Surface.resolver.tsx +37 -0
  182. package/src/gui/components/atoms/Surface/Surface.tsx +49 -0
  183. package/src/gui/components/atoms/Surface/Surface.types.ts +20 -0
  184. package/src/gui/components/atoms/Switch/Switch.resolver.tsx +53 -0
  185. package/src/gui/components/atoms/Switch/Switch.stories.tsx +236 -0
  186. package/src/gui/components/atoms/Switch/Switch.tsx +22 -0
  187. package/src/gui/components/atoms/Table/Body/TableBody.tsx +7 -0
  188. package/src/gui/components/atoms/Table/Cell/TableCell.tsx +18 -0
  189. package/src/gui/components/atoms/Table/Head/TableHead.tsx +9 -0
  190. package/src/gui/components/atoms/Table/Row/TableRow.tsx +20 -0
  191. package/src/gui/components/atoms/Table/Table.resolver.tsx +77 -0
  192. package/src/gui/components/atoms/Table/Table.stories.tsx +173 -0
  193. package/src/gui/components/atoms/Table/Table.tsx +20 -0
  194. package/src/gui/components/atoms/TextField/TextField.stories.tsx +25 -0
  195. package/src/gui/components/atoms/TextField/TextField.tsx +15 -0
  196. package/src/gui/components/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
  197. package/src/gui/components/atoms/Toolbar/Toolbar.stories.tsx +155 -0
  198. package/src/gui/components/atoms/Toolbar/Toolbar.tsx +16 -0
  199. package/src/gui/components/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
  200. package/src/gui/components/atoms/Tooltip/Tooltip.stories.tsx +117 -0
  201. package/src/gui/components/atoms/Tooltip/Tooltip.tsx +70 -0
  202. package/src/gui/components/atoms/Typography/Typography.resolver.tsx +158 -0
  203. package/src/gui/components/atoms/Typography/Typography.stories.tsx +222 -0
  204. package/src/gui/components/atoms/Typography/Typography.tsx +27 -0
  205. package/src/gui/components/atoms/Window/Nodes/node.ts +0 -0
  206. package/src/gui/components/atoms/Window/code/block/node.tsx +0 -0
  207. package/src/gui/components/atoms/Window/code/hugging.face.api.ts +11 -0
  208. package/src/gui/components/atoms/Window/connectors/index.ts +19 -0
  209. package/src/gui/components/atoms/Window/window.stories.tsx +20 -0
  210. package/src/gui/components/atoms/Window/window.tsx +636 -0
  211. package/src/gui/components/atoms/atoms.tsx +151 -0
  212. package/src/gui/components/atoms/index.ts +2 -0
  213. package/src/gui/components/generics/Cards/Gridme.jsx +52 -0
  214. package/src/gui/components/generics/Cards/LilBox.jsx +65 -0
  215. package/src/gui/components/generics/Cards/ModuleCard.jsx +106 -0
  216. package/src/gui/components/generics/Chats/FullChatBot.jsx +223 -0
  217. package/src/gui/components/generics/Code/CodeBlock.jsx +33 -0
  218. package/src/gui/components/generics/EmojiCursor/EmojiCursor.stories.tsx +153 -0
  219. package/src/gui/components/generics/EmojiCursor/EmojiCursor.tsx +23 -0
  220. package/src/gui/components/generics/Feedback/Callout.jsx +92 -0
  221. package/src/gui/components/generics/Layout/GridX.jsx +29 -0
  222. package/src/gui/components/generics/Layout/Hero2.jsx +132 -0
  223. package/src/gui/components/generics/Layout/PageContainer.jsx +29 -0
  224. package/src/gui/components/generics/Layout/PageDivider.jsx +20 -0
  225. package/src/gui/components/generics/Layout/Section.jsx +43 -0
  226. package/src/gui/components/generics/Layout/SectionHeader.jsx +21 -0
  227. package/src/gui/components/generics/Media/Img.jsx +58 -0
  228. package/src/gui/components/generics/Media/VideoEmbed.jsx +51 -0
  229. package/src/gui/components/generics/Organization/TableOfContents.jsx +51 -0
  230. package/src/gui/components/generics/Organization/Tabs.jsx +45 -0
  231. package/src/gui/components/generics/Text/TextList.jsx +41 -0
  232. package/src/gui/components/generics/Text/TextParagraph.jsx +28 -0
  233. package/src/gui/components/generics/Text/TextQuote.jsx +23 -0
  234. package/src/gui/components/generics/Text/TextTitle.jsx +44 -0
  235. package/src/gui/components/molecules/Dialog/Dialog.stories.tsx +18 -0
  236. package/src/gui/components/molecules/Dialog/Dialog.tsx +5 -0
  237. package/src/gui/components/molecules/Hero/Hero.stories.tsx +140 -0
  238. package/src/gui/components/molecules/Hero/Hero.tsx +152 -0
  239. package/src/gui/components/molecules/Hero/Hero.types.tsx +18 -0
  240. package/src/gui/components/molecules/Modal/Modal.resolver.tsx +38 -0
  241. package/src/gui/components/molecules/Modal/Modal.stories.tsx +82 -0
  242. package/src/gui/components/molecules/Modal/Modal.tsx +110 -0
  243. package/src/gui/components/molecules/Modal/Modal.types.ts +29 -0
  244. package/src/gui/components/molecules/Page/Page.stories.tsx +135 -0
  245. package/src/gui/components/molecules/Page/Page.tsx +94 -0
  246. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.resolver.tsx +58 -0
  247. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.stories.tsx +133 -0
  248. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.tsx +101 -0
  249. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.types.ts +29 -0
  250. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.resolver.tsx +15 -0
  251. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.stories.tsx +88 -0
  252. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.tsx +167 -0
  253. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.types.ts +34 -0
  254. package/src/gui/components/molecules/molecules.ts +49 -0
  255. package/src/gui/components/organisms/Blockchain/Blocks/BlocksTable.tsx +119 -0
  256. package/src/gui/components/organisms/Blockchain/Usernames/Identities.stories.tsx +20 -0
  257. package/src/gui/components/organisms/Blockchain/Usernames/QR.tsx +566 -0
  258. package/src/gui/components/organisms/Blockchain/Usernames/Usernames.tsx +448 -0
  259. package/src/gui/components/organisms/Blockchain/Usernames/identities.tsx +710 -0
  260. package/src/gui/components/organisms/Blockchain/blockchain.stories.tsx +17 -0
  261. package/src/gui/components/organisms/Blockchain/blockchain.tsx +368 -0
  262. package/src/gui/components/organisms/Blockchain/scripts/connection.ts +82 -0
  263. package/src/gui/components/organisms/Blockchain/scripts/match_face.ts +143 -0
  264. package/src/gui/components/organisms/HighLighter/HighLighter.stories.tsx +168 -0
  265. package/src/gui/components/organisms/HighLighter/HighLighter.tsx +420 -0
  266. package/src/gui/components/organisms/HighLighter/HighLightsDrawer.tsx +197 -0
  267. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/FaceRecognition.stories.tsx +312 -0
  268. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/FaceRecognition.tsx +765 -0
  269. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceCameraPermission.ts +70 -0
  270. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceLandmarker.ts +106 -0
  271. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceOverlay.ts +489 -0
  272. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceTemplate.ts +32 -0
  273. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/useFaceTemplateBurst.ts +178 -0
  274. package/src/gui/components/organisms/IdentityNoise/FaceRecognition/modules/verifyTemplate.ts +136 -0
  275. package/src/gui/components/organisms/IdentityNoise/IdentityNoise.tsx +403 -0
  276. package/src/gui/components/organisms/IdentityNoise/IndentityNoise.stories.tsx +15 -0
  277. package/src/gui/components/organisms/IdentityNoise/Noise/Noise.stories.tsx +206 -0
  278. package/src/gui/components/organisms/IdentityNoise/Noise/Noise.tsx +394 -0
  279. package/src/gui/components/organisms/IdentityNoise/Triad/QR.tsx +566 -0
  280. package/src/gui/components/organisms/IdentityNoise/Triad/Tiad.stories.tsx +6 -0
  281. package/src/gui/components/organisms/IdentityNoise/Triad/Triad.tsx +917 -0
  282. package/src/gui/components/organisms/IdentityNoise/Triad/handleCleak.ts +0 -0
  283. package/src/gui/components/organisms/IdentityNoise/Triad/identity.ts +31 -0
  284. package/src/gui/components/organisms/IdentityNoise/Triad/me/fundamentals/vectors/vectors.tsx +252 -0
  285. package/src/gui/components/organisms/IdentityNoise/Triad/me/me.stories.tsx +314 -0
  286. package/src/gui/components/organisms/IdentityNoise/Triad/me/me.tsx +0 -0
  287. package/src/gui/components/organisms/organisms.ts +15 -0
  288. package/src/gui/contexts/InsetsContext.tsx +40 -0
  289. package/src/gui/contexts/LeftSidebarContext.tsx +20 -0
  290. package/src/gui/contexts/RightSidebarContext.tsx +25 -0
  291. package/src/gui/contexts/ThemeContext.ts +34 -0
  292. package/src/gui/contexts/index.ts +4 -0
  293. package/src/gui/hooks/index.ts +11 -0
  294. package/src/gui/hooks/resolveColorToken.ts +39 -0
  295. package/src/gui/hooks/useCodeGen.ts +12 -0
  296. package/src/gui/hooks/useGuiMediaQuery.ts +18 -0
  297. package/src/gui/hooks/useGuiTheme.ts +18 -0
  298. package/src/gui/hooks/useInsets.ts +26 -0
  299. package/src/gui/hooks/useIsMobile.ts +13 -0
  300. package/src/gui/hooks/useIsTouchDevice.ts +25 -0
  301. package/src/gui/hooks/useLeftSidebar.ts +10 -0
  302. package/src/gui/hooks/useRightSidebar.ts +12 -0
  303. package/src/gui/hooks/useViewportKey.ts +19 -0
  304. package/src/gui/hooks/useViewportProp.ts +17 -0
  305. package/src/gui/registry/GuiRegistry.ts +19 -0
  306. package/src/gui/registry/factory.ts +12 -0
  307. package/src/gui/registry/index.ts +3 -0
  308. package/src/gui/registry/types.ts +6 -0
  309. package/src/gui/utils/nodeID.ts +11 -0
  310. package/src/registry/GuiRegistry.ts +19 -0
  311. package/src/stories/01.Home.mdx +22 -0
  312. package/src/stories/02.Understanding.This.GUI.mdx +149 -0
  313. package/src/stories/Theme/Palette.stories.tsx +86 -0
  314. package/src/stories/Theme/ThemeViewer.stories.tsx +91 -0
  315. package/src/stories/Theme/Typography.stories.jsx +211 -0
  316. package/src/stories/assets/this.GUI.png +0 -0
  317. package/src/types/gui.d.ts +67 -0
  318. package/src/types/theme.d.ts +191 -0
  319. package/src/types/viewport.ts +132 -0
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "thisgui-demo",
3
+ "private": true,
4
+ "version": "0.0.1",
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "dependencies": {
12
+ "react": "^19.1.1",
13
+ "react-dom": "^19.1.1",
14
+ "react-router-dom": "^6.30.1",
15
+ "this.gui": "^1.2.18"
16
+ },
17
+ "devDependencies": {
18
+ "@types/react": "^19.0.0",
19
+ "@types/react-dom": "^19.0.0",
20
+ "@vitejs/plugin-react": "^5.0.0",
21
+ "typescript": "^5.9.0",
22
+ "vite": "^6.0.0"
23
+ }
24
+ }
@@ -0,0 +1,40 @@
1
+ //Include this.GUI components as a showviewcase
2
+ import "./index.css";
3
+ import { useState } from "react";
4
+ export default function App() {
5
+ const defaultText = "Generation powered by AI.";
6
+ const [text, setText] = useState(defaultText);
7
+ const handleFocus = () => {
8
+ if (text === defaultText) setText("");
9
+ };
10
+ const handleBlur = () => {
11
+ if (text.trim() === "") setText(defaultText);
12
+ };
13
+
14
+ return (
15
+ <div style={{ textAlign: "center", padding: "2rem" }}>
16
+ <p style={{ textAlign: "center" }}>
17
+ <img src="https://res.cloudinary.com/dkwnxf6gm/image/upload/v1760629119/this.gui.neurons.me_mkapde.png" alt=".GUI logo" width="244" />
18
+ </p>
19
+ <h1>.GUI</h1>
20
+ <input
21
+ type="text"
22
+ value={text}
23
+ onChange={(e) => setText(e.target.value)}
24
+ onFocus={handleFocus}
25
+ onBlur={handleBlur}
26
+ style={{
27
+ textAlign: "center",
28
+ border: "none",
29
+ fontSize: "1.2rem",
30
+ background: "transparent",
31
+ outline: "none",
32
+ width: "80%",
33
+ opacity: text === defaultText ? 0.4 : 1,
34
+ transition: "opacity 0.3s ease"
35
+ }}
36
+ />
37
+ <hr style={{ margin: "2rem auto", width: "60%" }} />
38
+ </div>
39
+ );
40
+ }
@@ -0,0 +1,16 @@
1
+ :root {
2
+ font-family: 'Inter', system-ui, Avenir, Helvetica, Arial, sans-serif;
3
+ color: #1f2933;
4
+ background-color: #f5f7fb;
5
+ }
6
+
7
+ body {
8
+ margin: 0;
9
+ min-height: 100vh;
10
+ }
11
+
12
+ .app-container {
13
+ max-width: 960px;
14
+ margin: 96px auto;
15
+ padding: 0 24px;
16
+ }
@@ -0,0 +1,13 @@
1
+ // init/src/main.tsx
2
+ import React from "react";
3
+ import ReactDOM from "react-dom/client";
4
+ import App from "./App";
5
+ import "./index.css";
6
+ import { GuiProvider } from "this.gui";
7
+ ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
8
+ <React.StrictMode>
9
+ <GuiProvider>
10
+ <App />
11
+ </GuiProvider>
12
+ </React.StrictMode>
13
+ );
@@ -0,0 +1,36 @@
1
+ import React, { createContext, useContext, useState, useEffect } from 'react';
2
+ import { BrowserRouter, useLocation, useNavigate } from 'react-router-dom';
3
+ type DerivableRouterContextType = {
4
+ currentPath: string;
5
+ navigate: (path: string) => void;
6
+ };
7
+
8
+ const DerivableRouterContext = createContext<DerivableRouterContextType | undefined>(undefined);
9
+ export const DerivableRouterProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {
10
+ const location = useLocation();
11
+ const navigate = useNavigate();
12
+ const [currentPath, setCurrentPath] = useState<string>(location.pathname);
13
+ useEffect(() => {
14
+ setCurrentPath(location.pathname);
15
+ }, [location.pathname]);
16
+ return (
17
+ <DerivableRouterContext.Provider value={{ currentPath, navigate }}>
18
+ {children}
19
+ </DerivableRouterContext.Provider>
20
+ );
21
+ };
22
+
23
+ export const useDerivableRouter = (): DerivableRouterContextType => {
24
+ const ctx = useContext(DerivableRouterContext);
25
+ if (!ctx) {
26
+ throw new Error('useDerivableRouter must be used within a DerivableRouterProvider');
27
+ }
28
+ return ctx;
29
+ };
30
+
31
+ // Wrapper to ensure routing context
32
+ export const DerivableRouterRoot: React.FC<{ children?: React.ReactNode }> = ({ children }) => (
33
+ <BrowserRouter>
34
+ <DerivableRouterProvider>{children}</DerivableRouterProvider>
35
+ </BrowserRouter>
36
+ );
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "module": "ESNext",
6
+ "moduleResolution": "node",
7
+ "strict": true,
8
+ "jsx": "react-jsx",
9
+ "esModuleInterop": true,
10
+ "skipLibCheck": true,
11
+ "forceConsistentCasingInFileNames": true,
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "types": ["vite/client", "node"]
15
+ },
16
+ "include": ["src"]
17
+ }
@@ -0,0 +1,11 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ resolve: {
7
+ alias: {
8
+ '@': '/src'
9
+ }
10
+ }
11
+ });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "this.gui",
3
3
  "private": false,
4
- "version": "1.3.40",
4
+ "version": "1.3.42",
5
5
  "type": "module",
6
6
  "main": "./dist/this.gui.cjs",
7
7
  "module": "./dist/this.gui.es.js",
@@ -22,14 +22,16 @@
22
22
  }
23
23
  },
24
24
  "files": [
25
- "dist"
25
+ "dist",
26
+ "src"
26
27
  ],
27
28
  "bin": {
28
29
  "gui": "./dist/bin/cli.js"
29
30
  },
30
31
  "scripts": {
31
- "build": "vite build && npm run build:cli",
32
+ "build": "vite build && npm run build:cli && npm run build:copy-init",
32
33
  "build:cli": "tsc --project tsconfig.cli.json",
34
+ "build:copy-init": "node -e \"const fs=require('fs-extra'); if(!fs.existsSync('init')){throw new Error('init directory missing at project root');} fs.removeSync('dist/init'); fs.copySync('init','dist/init');\"",
33
35
  "pack:local": "npm run build && npm pack",
34
36
  "prepublishOnly": "npm run build",
35
37
  "dev": "vite",
package/src/GUI.tsx ADDED
@@ -0,0 +1,46 @@
1
+ // src/GUI.tsx
2
+ import React from 'react';
3
+ import ReactDOM from 'react-dom/client';
4
+ import { GuiProvider } from '../index';
5
+ import { QRouter } from '@/QRouter/QRouter';
6
+
7
+ export const GUI = ({ title = 'this.GUI', children }: { title?: string; children?: React.ReactNode }) => {
8
+ return (
9
+ <GuiProvider>
10
+ <QRouter>
11
+ <main style={{ padding: '2rem' }}>
12
+ <h1>{title}</h1>
13
+ {children ?? <p>Ready to render declarative GUI components.</p>}
14
+ </main>
15
+ </QRouter>
16
+ </GuiProvider>
17
+ );
18
+ };
19
+
20
+ // ✅ Register as a Web Component for HTML usage
21
+ if (typeof window !== 'undefined' && !customElements.get('gui-app')) {
22
+ customElements.define(
23
+ 'gui-app',
24
+ class extends HTMLElement {
25
+ connectedCallback() {
26
+ const mount = document.createElement('div');
27
+ this.appendChild(mount);
28
+ ReactDOM.createRoot(mount).render(<GUI />);
29
+ console.log('[GUI] <gui-app> mounted');
30
+ }
31
+ }
32
+ );
33
+ }
34
+
35
+ // ✅ Auto-bootstrap if loaded directly (e.g., via <script src="this.gui.umd.js">)
36
+ if (typeof window !== 'undefined') {
37
+ window.addEventListener('DOMContentLoaded', () => {
38
+ const rootTag = document.querySelector('gui-app');
39
+ if (rootTag) return; // already handled by custom element
40
+ const auto = document.getElementById('root');
41
+ if (auto) {
42
+ ReactDOM.createRoot(auto).render(<GUI />);
43
+ console.log('[GUI] Auto-booted inside #root');
44
+ }
45
+ });
46
+ }
@@ -0,0 +1,53 @@
1
+ import React, { createContext, useContext, useState, ReactNode } from "react";
2
+ export type QuantumNode = {
3
+ path: string;
4
+ derivedAt: number;
5
+ active?: boolean;
6
+ };
7
+
8
+ type QuantumRegistryContextType = {
9
+ nodes: QuantumNode[];
10
+ registerNode: (path: string) => void;
11
+ unregisterNode: (path: string) => void;
12
+ setActiveNode: (path: string) => void;
13
+ };
14
+
15
+ const QuantumRegistryContext = createContext<QuantumRegistryContextType | undefined>(undefined);
16
+ export const QRegistryProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
17
+ const [nodes, setNodes] = useState<QuantumNode[]>([]);
18
+ const registerNode = (path: string) => {
19
+ setNodes((prev) => {
20
+ if (prev.find((n) => n.path === path)) return prev;
21
+ return [...prev, { path, derivedAt: Date.now(), active: false }];
22
+ });
23
+ };
24
+
25
+ const unregisterNode = (path: string) => {
26
+ setNodes((prev) => prev.filter((n) => n.path !== path));
27
+ };
28
+
29
+ const setActiveNode = (path: string) => {
30
+ setNodes((prev) =>
31
+ prev.map((n) => ({
32
+ ...n,
33
+ active: n.path === path,
34
+ }))
35
+ );
36
+ };
37
+
38
+ return (
39
+ <QuantumRegistryContext.Provider value={{ nodes, registerNode, unregisterNode, setActiveNode }}>
40
+ {children}
41
+ </QuantumRegistryContext.Provider>
42
+ );
43
+ };
44
+
45
+ export const useQuantumRegistry = () => {
46
+ const context = useContext(QuantumRegistryContext);
47
+ if (!context) {
48
+ throw new Error("useQuantumRegistry must be used within a QRegistryProvider");
49
+ }
50
+ return context;
51
+ };
52
+
53
+ export default QRegistryProvider;
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import type { Meta, StoryObj } from "@storybook/react";
3
+ import { QRouter } from "./QRouter";
4
+ import { Link, Routes, Route } from "react-router-dom";
5
+
6
+ const meta: Meta<typeof QRouter> = {
7
+ title: "Routing/QRouter",
8
+ component: QRouter,
9
+ };
10
+
11
+ export default meta;
12
+ type Story = StoryObj<typeof QRouter>;
13
+
14
+ export const Default: Story = {
15
+ render: () => (
16
+ <QRouter>
17
+ <div style={{ padding: "2rem" }}>
18
+ <h2>🌀 QRouter Demo</h2>
19
+ <p>This story demonstrates dynamic quantum routing.</p>
20
+ <p>
21
+ Try navigating to <Link to="/hello">/hello</Link> or{" "}
22
+ <Link to="/world">/world</Link>.
23
+ </p>
24
+ <Routes>
25
+ <Route path="/hello" element={<div>Hello Quantum 🌐</div>} />
26
+ <Route path="/world" element={<div>World Quantum ⚛️</div>} />
27
+ </Routes>
28
+ </div>
29
+ </QRouter>
30
+ ),
31
+ };
@@ -0,0 +1,57 @@
1
+ import React, { createContext, useContext, useMemo, useState, ReactNode } from "react";
2
+ import { BrowserRouter, useInRouterContext } from "react-router-dom";
3
+ type QuantumNode = { id: string; path: string; element: ReactNode; derived?: boolean };
4
+ type LinkObject = { href: string; rel?: string; label?: string };
5
+ type QRouterContextValue = {
6
+ nodes: QuantumNode[];
7
+ addNode: (node: QuantumNode) => void;
8
+ deriveRoute: (path: string) => void;
9
+ registerLinks: (links: LinkObject[]) => void;
10
+ };
11
+ const QRouterContext = createContext<QRouterContextValue | null>(null);
12
+ export const useQRouter = () => {
13
+ const ctx = useContext(QRouterContext);
14
+ if (!ctx) throw new Error("useQRouter must be used within QRouter");
15
+ return ctx;
16
+ };
17
+
18
+ export const QRouter: React.FC<{ children?: ReactNode }> = ({ children }) => {
19
+ const [nodes, setNodes] = useState<QuantumNode[]>(() => [
20
+ { id: "__default_root__", path: "/", element: <div style={{ padding: 16 }}>🏠 Home</div> },
21
+ ]);
22
+ const [links, setLinks] = useState<LinkObject[]>([]);
23
+ const inRouter = useInRouterContext(); // detecta si ya existe un router activo
24
+
25
+ const addNode = (node: QuantumNode) =>
26
+ setNodes((prev) => {
27
+ const idx = prev.findIndex((n) => n.path === node.path);
28
+ if (idx === -1) return [...prev, node];
29
+ const next = prev.slice();
30
+ // Override by path (the app should be able to replace the default root route)
31
+ next[idx] = { ...prev[idx], ...node };
32
+ return next;
33
+ });
34
+
35
+ const deriveRoute = (path: string) => {
36
+ if (path === "/") return; // never overwrite root
37
+ const id = path.replace(/\//g, "_") || "root";
38
+ addNode({ id, path, element: <div style={{ padding: 16 }}>✨ Quantum derived: {path}</div>, derived: true });
39
+ };
40
+
41
+ const registerLinks = (newLinks: LinkObject[]) => {
42
+ setLinks((prev) => {
43
+ const existing = new Set(prev.map((l) => l.href));
44
+ const filtered = newLinks.filter((l) => !existing.has(l.href));
45
+ return [...prev, ...filtered];
46
+ });
47
+ };
48
+
49
+ const value = useMemo(() => ({ nodes, addNode, deriveRoute, registerLinks }), [nodes]);
50
+
51
+ const Inner = <QRouterContext.Provider value={value}>{children}</QRouterContext.Provider>;
52
+
53
+ // 🧩 Si ya hay router, úsalo. Si no, crea uno.
54
+ return inRouter ? Inner : <BrowserRouter>{Inner}</BrowserRouter>;
55
+ };
56
+
57
+ export default QRouter;
@@ -0,0 +1,111 @@
1
+ // src/themes/GuiProvider.tsx
2
+ import React, { useEffect, useMemo, useState } from 'react';
3
+ import { generatePaletteCssVars } from './utils/themeUtils';
4
+ import { ThemeContext } from '@/gui/contexts/ThemeContext';
5
+ import { ThemeProvider, CssBaseline } from '@mui/material';
6
+ import type { Theme } from '@mui/material/styles';
7
+ import { themeTokens } from '@/gui/Theme/styles/theme.tokens';
8
+ import { usePersistentThemeId, usePersistentThemeMode } from './utils/persistence';
9
+ import { makeMuiTheme } from '@/gui/Theme/fromTokens';
10
+ import { GuiThemes, getGuiTheme } from './utils/catalog';
11
+ import { InsetsProvider, useInsetsContext } from '@/gui/contexts/InsetsContext';
12
+ // -------------------------------- Types --------------------------------
13
+ import type {
14
+ GuiContextValue,
15
+ } from '@/types/theme';
16
+ export type GuiProviderProps = {
17
+ initialThemeId?: string;
18
+ initialMode?: 'light' | 'dark'; // <-- añadido
19
+ children?: React.ReactNode;
20
+ };
21
+
22
+ export function GuiProvider({
23
+ initialThemeId = 'neurons.me',
24
+ initialMode = 'light', // default
25
+ children,
26
+ }: GuiProviderProps) {
27
+ // Persist last chosen `themeId`
28
+ const [themeId, setThemeId] = usePersistentThemeId(initialThemeId);
29
+ // Persist last chosen `mode`
30
+ const [mode, setModeState] = usePersistentThemeMode(initialMode);
31
+ // Resolve manifest for current themeId (the GuiTheme which contains both modes)
32
+ const manifest = useMemo(() => {
33
+ return getGuiTheme(themeId) ?? GuiThemes[0];
34
+ }, [themeId]);
35
+ // Expose an `active` object for convenience (manifest + current selected mode)
36
+ const active = useMemo(() => {
37
+ return {
38
+ ...(manifest ?? {}),
39
+ mode,
40
+ } as (typeof manifest & { mode: 'light' | 'dark' });
41
+ }, [manifest, mode]);
42
+ // Build MUI themes for both dark and light using the manifest's mode tokens.
43
+ // IMPORTANT: makeMuiTheme signature assumed: makeMuiTheme(baseTokens, modeTokens, mode)
44
+ const { mode: manifestModes } = manifest || ({} as any);
45
+ const lightMuiTheme = useMemo<Theme>(() => {
46
+ const lightTokens = manifestModes?.light ?? {};
47
+ return makeMuiTheme(themeTokens, lightTokens, 'light');
48
+ }, [manifestModes]);
49
+ const darkMuiTheme = useMemo<Theme>(() => {
50
+ const darkTokens = manifestModes?.dark ?? {};
51
+ return makeMuiTheme(themeTokens, darkTokens, 'dark');
52
+ }, [manifestModes]);
53
+ const theme = mode === 'dark' ? darkMuiTheme : lightMuiTheme;
54
+ useEffect(() => {
55
+ generatePaletteCssVars(theme);
56
+ }, [theme]);
57
+ // Ensure saved key is valid with the current catalog
58
+ useEffect(() => {
59
+ if (GuiThemes.length === 0) return;
60
+ const ok = GuiThemes.some((e) => e.themeId === themeId);
61
+ if (!ok) setThemeId(GuiThemes[0].themeId ?? '');
62
+ }, [themeId, setThemeId]);
63
+ // API for changing mode without touching themeId
64
+ const setMode = (nextMode: 'light' | 'dark') => {
65
+ setModeState(nextMode);
66
+ };
67
+
68
+ const toggleMode = () => setModeState((m) => (m === 'dark' ? 'light' : 'dark'));
69
+ const ctxValue: GuiContextValue = useMemo(
70
+ () => ({
71
+ themeId: manifest?.themeId ?? '',
72
+ setThemeId,
73
+ themeName: manifest?.themeName ?? '',
74
+ mode,
75
+ setMode,
76
+ toggleMode,
77
+ }),
78
+ [manifest?.themeId, manifest?.themeName, mode, setThemeId]
79
+ );
80
+
81
+ return (
82
+ <InsetsProvider>
83
+ <GuiThemeBridge theme={theme} ctxValue={ctxValue}>
84
+ {children}
85
+ </GuiThemeBridge>
86
+ </InsetsProvider>
87
+ );
88
+ }
89
+
90
+ const GuiThemeBridge: React.FC<{ theme: Theme; ctxValue: GuiContextValue; children?: React.ReactNode }> = ({ theme, ctxValue, children }) => {
91
+ const { insets, updateInsets } = useInsetsContext();
92
+ const themeWithInsets = useMemo(() => {
93
+ return {
94
+ ...theme,
95
+ layout: {
96
+ ...(theme as any).layout,
97
+ insets,
98
+ },
99
+ updateInsets,
100
+ } as Theme & { layout: any; updateInsets: typeof updateInsets };
101
+ }, [insets, theme, updateInsets]);
102
+
103
+ return (
104
+ <ThemeProvider theme={themeWithInsets}>
105
+ <CssBaseline />
106
+ <ThemeContext.Provider value={ctxValue}>{children}</ThemeContext.Provider>
107
+ </ThemeProvider>
108
+ );
109
+ };
110
+
111
+ export default GuiProvider;
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import type { RegistryEntry, ResolveCtx } from '@/gui/registry/types';
3
+ import Icon from '@/gui/Theme/Icon/Icon';
4
+
5
+ export type IconSpec = {
6
+ type: 'Icon';
7
+ props: {
8
+ name: string;
9
+ fill?: number;
10
+ weight?: number;
11
+ grade?: number;
12
+ opticalSize?: number;
13
+ fontSize?: number | string;
14
+ iconColor?: string;
15
+ className?: string;
16
+ style?: React.CSSProperties;
17
+ [key: string]: any; // permite pasar props adicionales
18
+ };
19
+ };
20
+
21
+ const IconResolver: RegistryEntry = {
22
+ type: 'Icon',
23
+ resolve(spec: IconSpec, _ctx?: ResolveCtx) {
24
+ const p = spec.props ?? {};
25
+ return <Icon {...p} />;
26
+ },
27
+ };
28
+
29
+ export default IconResolver;
@@ -0,0 +1,43 @@
1
+ import * as React from 'react';
2
+ import clsx from 'clsx';
3
+ import 'material-symbols';
4
+
5
+ export type IconProps = {
6
+ name: string; // e.g., 'material:home'
7
+ iconColor?: string; // CSS color value
8
+ fontSize?: number | string; // optional font size
9
+ weight?: number; // font variation setting
10
+ fill?: number; // font variation setting (0 = outlined, 1 = filled)
11
+ grade?: number;
12
+ opticalSize?: number;
13
+ className?: string;
14
+ style?: React.CSSProperties;
15
+ };
16
+
17
+ export default function Icon({
18
+ name,
19
+ iconColor,
20
+ fontSize,
21
+ weight = 400,
22
+ fill = 0,
23
+ grade = 0,
24
+ opticalSize = 24,
25
+ className,
26
+ style,
27
+ }: IconProps) {
28
+ const iconName = name;
29
+ const variationSettings = `"FILL" ${fill}, "wght" ${weight}, "GRAD" ${grade}, "opsz" ${opticalSize}`;
30
+ return (
31
+ <span
32
+ className={clsx('material-symbols-rounded', className)}
33
+ style={{
34
+ fontVariationSettings: variationSettings,
35
+ color: iconColor,
36
+ fontSize,
37
+ ...style,
38
+ }}
39
+ >
40
+ {iconName}
41
+ </span>
42
+ );
43
+ }
@@ -0,0 +1,88 @@
1
+ import React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import Layout from '@/gui/Theme/Layout/Layout/Layout';
4
+ import Box from '@/gui/atoms/Box/Box';
5
+ import Typography from '@/gui/atoms/Typography/Typography';
6
+
7
+ const meta: Meta<typeof Layout> = {
8
+ title: 'Layout/Content/Content',
9
+ component: Layout,
10
+ parameters: { layout: 'fullscreen' },
11
+ };
12
+ export default meta;
13
+
14
+ interface DemoContentProps {
15
+ text: string;
16
+ }
17
+
18
+ const DemoContent: React.FC<DemoContentProps> = ({ text }) => (
19
+ <Box
20
+ sx={{
21
+ minHeight: '100vh',
22
+ display: 'flex',
23
+ alignItems: 'center',
24
+ justifyContent: 'center',
25
+ bgcolor: 'background.default',
26
+ color: 'text.primary',
27
+ }}
28
+ >
29
+ <Typography variant="h4">{text}</Typography>
30
+ </Box>
31
+ );
32
+
33
+ const Template = (args: React.ComponentProps<typeof Layout>): React.JSX.Element => (
34
+ <Layout {...args}>
35
+ <DemoContent text="This is the Content area" />
36
+ </Layout>
37
+ );
38
+
39
+ type Story = StoryObj<typeof Layout>;
40
+
41
+ export const OnlyContent: Story = {
42
+ render: Template,
43
+ args: {
44
+ topBarConfig: false,
45
+ leftSidebarConfig: false,
46
+ rightSidebarConfig: false,
47
+ footerConfig: false,
48
+ },
49
+ };
50
+
51
+ export const WithTopBar: Story = {
52
+ render: Template,
53
+ args: {
54
+ topBarConfig: { title: 'Top Bar Example' },
55
+ },
56
+ };
57
+
58
+ export const WithSidebars: Story = {
59
+ render: Template,
60
+ args: {
61
+ leftSidebarConfig: { initialView: 'expanded' },
62
+ rightSidebarConfig: { initialView: 'expanded' },
63
+ },
64
+ };
65
+
66
+ export const WithTopBarAndSidebars: Story = {
67
+ render: Template,
68
+ args: {
69
+ topBarConfig: { title: 'Top Bar Example' },
70
+ leftSidebarConfig: { initialView: 'rail' },
71
+ rightSidebarConfig: { initialView: 'expanded' },
72
+ },
73
+ };
74
+
75
+ export const FullLayout: Story = {
76
+ render: Template,
77
+ args: {
78
+ topBarConfig: { title: 'Full Layout' },
79
+ leftSidebarConfig: { initialView: 'rail' },
80
+ rightSidebarConfig: { initialView: 'rail' },
81
+ footerConfig: {
82
+ brandLabel: 'neurons.me',
83
+ position: 'static',
84
+ leftElements: [{ type: 'link', props: { label: 'Docs', href: '/docs' } }],
85
+ rightElements: [{ type: 'link', props: { label: 'GitHub', href: 'https://github.com/neurons-me' } }],
86
+ },
87
+ },
88
+ };