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,160 @@
1
+ import * as React from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import Stack from './Stack';
4
+ import Paper from '@/gui/atoms/Paper/Paper';
5
+ import Link from '@/gui/atoms/Link/Link';
6
+
7
+ const meta: Meta<typeof Stack> = {
8
+ title: 'Atoms/Containers/Stack',
9
+ component: Stack,
10
+ tags: ['autodocs'],
11
+ decorators: [
12
+ (Story) => (
13
+ <div style={{ padding: 16, minHeight: 240 }}>
14
+ <Story />
15
+ </div>
16
+ ),
17
+ ],
18
+ parameters: {
19
+ docs: {
20
+ description: {
21
+ component: `
22
+ The **Stack** atom is a thin wrapper around MUI's \`MuiStack\` that preserves **polymorphism** and forwards all layout props.
23
+ It integrates with **This.GUI** theming and supports **declarative specs** through the Stack resolver.
24
+
25
+ ---
26
+ ## Features
27
+ - Direction: \`row\`, \`column\`, and reverse variants
28
+ - Spacing/gap via \`spacing\`
29
+ - Optional \`divider\`
30
+ - Alignment: \`alignItems\`, \`justifyContent\`, \`flexWrap\`
31
+ - **Polymorphic** via \`component\` (e.g. 'div', 'section', 'a')
32
+ - Full **system props** passthrough via \`sx\`
33
+
34
+ ---
35
+ ## Basic usage
36
+ ~~~jsx
37
+ <Stack direction="row" spacing={2}>
38
+ <Item />
39
+ <Item />
40
+ </Stack>
41
+ ~~~
42
+
43
+ ## Declarative JSON / Resolver
44
+ ~~~json
45
+ {
46
+ "type": "Stack",
47
+ "props": {
48
+ "direction": "row",
49
+ "spacing": 2,
50
+ "sx": { "alignItems": "center" },
51
+ "children": [
52
+ { "type": "Paper", "props": { "sx": { "p": 1 }, "children": "A" } },
53
+ { "type": "Paper", "props": { "sx": { "p": 1 }, "children": "B" } }
54
+ ]
55
+ }
56
+ }
57
+ ~~~
58
+
59
+ *Note:* We demonstrate polymorphism in dedicated stories rather than Controls to avoid type-narrowing issues with MUI's OverridableComponent.
60
+ `,
61
+ },
62
+ },
63
+ controls: {
64
+ exclude: ['component'],
65
+ },
66
+ },
67
+ argTypes: {
68
+ direction: {
69
+ control: { type: 'radio' },
70
+ options: ['row', 'row-reverse', 'column', 'column-reverse'],
71
+ },
72
+ spacing: {
73
+ control: { type: 'range', min: 0, max: 8, step: 0.5 },
74
+ },
75
+ useFlexGap: {
76
+ control: 'boolean',
77
+ },
78
+ sx: {
79
+ control: 'object',
80
+ },
81
+ },
82
+ args: {
83
+ direction: 'row',
84
+ spacing: 1.5,
85
+ useFlexGap: true,
86
+ sx: {},
87
+ children: undefined,
88
+ },
89
+ };
90
+
91
+ export default meta;
92
+ type Story = StoryObj<typeof Stack>;
93
+
94
+ const Item = ({ children }: { children: React.ReactNode }) => (
95
+ <Paper variant="outlined" sx={{ p: 1.5, borderRadius: 1 }}>
96
+ {children}
97
+ </Paper>
98
+ );
99
+
100
+ // ======================= Stories =======================
101
+ export const Playground: Story = {
102
+ render: (args) => (
103
+ <Stack {...args}>
104
+ <Item>A</Item>
105
+ <Item>B</Item>
106
+ <Item>C</Item>
107
+ </Stack>
108
+ ),
109
+ };
110
+
111
+ export const RowSpacing: Story = {
112
+ args: { direction: 'row', spacing: 2 },
113
+ render: (args) => (
114
+ <Stack {...args}>
115
+ <Item>A</Item>
116
+ <Item>B</Item>
117
+ <Item>C</Item>
118
+ </Stack>
119
+ ),
120
+ };
121
+
122
+ export const ColumnSpacing: Story = {
123
+ args: { direction: 'column', spacing: 1.5 },
124
+ render: (args) => (
125
+ <Stack {...args} sx={{ width: 240 }}>
126
+ <Item>A</Item>
127
+ <Item>B</Item>
128
+ <Item>C</Item>
129
+ </Stack>
130
+ ),
131
+ };
132
+
133
+ export const WithDivider: Story = {
134
+ render: (args) => (
135
+ <Stack {...args} direction="row" spacing={2} divider={<span style={{ opacity: 0.5 }}>|</span>}>
136
+ <Item>A</Item>
137
+ <Item>B</Item>
138
+ <Item>C</Item>
139
+ </Stack>
140
+ ),
141
+ };
142
+
143
+ export const PolymorphicSection: Story = {
144
+ render: (args) => (
145
+ <Stack {...args} component="section" spacing={1.5}>
146
+ <Item>Section A</Item>
147
+ <Item>Section B</Item>
148
+ </Stack>
149
+ ),
150
+ };
151
+
152
+ export const PolymorphicRouterLink: Story = {
153
+ render: (args) => (
154
+ <Link to="/docs" style={{ textDecoration: 'none' }}>
155
+ <Stack {...args} spacing={1.5}>
156
+ <Item>Go to Docs</Item>
157
+ </Stack>
158
+ </Link>
159
+ ),
160
+ };
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This.GUI — Stack (polymorphic)
3
+ * Thin wrapper that preserves MUI's own typing and `component` API.
4
+ * Examples:
5
+ * <Stack direction="row" spacing={2} />
6
+ * <Stack component="section" gap={1} />
7
+ * <Stack component="a" href="/docs" />
8
+ */
9
+ import MuiStack from '@mui/material/Stack';
10
+ import * as React from 'react';
11
+ // Re-export using MUI's own component type to keep polymorphism and full typing
12
+ const Stack = MuiStack;
13
+ export type StackProps = React.ComponentProps<typeof Stack>;
14
+ (Stack as any).displayName = 'Gui.Stack';
15
+ export default Stack;
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import type { SxProps, Theme } from '@mui/material/styles';
3
+ import Surface from './Surface';
4
+ import type { RegistryEntry } from '@/gui/registry/types';
5
+ import { ensureNodeId } from '@/gui/utils/nodeID';
6
+ import type { SurfaceResolverSpec as SurfaceSpec } from './Surface.types';
7
+
8
+ /**
9
+ * SurfaceResolver
10
+ * ---------------
11
+ * - Maps a JSON-friendly spec to <Surface /> props.
12
+ * - Preserves MUI styling (`sx`, `variant`, `elevation`).
13
+ * - Adds IDs and classNames for runtime targeting.
14
+ */
15
+ const SurfaceResolver: RegistryEntry = {
16
+ type: 'Surface',
17
+ resolve(spec: SurfaceSpec) {
18
+ const p = spec.props ?? {};
19
+ const rootProps: any = {
20
+ variant: p.variant ?? 'elevation',
21
+ elevation: p.elevation ?? 1,
22
+ square: p.square ?? false,
23
+ sx: p.sx,
24
+ id: ensureNodeId('surface', p.id),
25
+ className: p.className,
26
+ 'data-testid': p['data-testid'],
27
+ };
28
+
29
+ return (
30
+ <Surface {...rootProps}>
31
+ {p.children}
32
+ </Surface>
33
+ );
34
+ },
35
+ };
36
+
37
+ export default SurfaceResolver;
@@ -0,0 +1,49 @@
1
+ import React from 'react';
2
+ import MuiSurface from '@mui/material/Paper';
3
+ import type { SurfaceProps } from './Surface.types';
4
+
5
+ /**
6
+ * Surface
7
+ * -------
8
+ * A visual container primitive.
9
+ * Acts as a thin wrapper around MUI's Paper.
10
+ * Supports elevation, variant, square, and sx overrides.
11
+ */
12
+ const Surface = React.forwardRef<HTMLDivElement, SurfaceProps>((props, ref) => {
13
+ const {
14
+ variant = 'elevation',
15
+ elevation: elevationProp,
16
+ sx,
17
+ ...rest
18
+ } = props;
19
+
20
+ const isCard = variant === 'card';
21
+ const mappedVariant = (isCard ? 'outlined' : variant) as 'elevation' | 'outlined';
22
+ const elevation = isCard ? 0 : elevationProp;
23
+
24
+ const cardSx = isCard
25
+ ? [
26
+ (theme: any) => ({
27
+ borderRadius: theme.shape?.borderRadius ?? 8,
28
+ borderColor: 'divider',
29
+ backgroundColor: 'background.paper',
30
+ boxShadow: theme.customShadows?.card ?? theme.shadows?.[3] ?? 'none',
31
+ }),
32
+ ]
33
+ : [];
34
+ const sxArray = Array.isArray(sx) ? sx : sx ? [sx] : [];
35
+ const composedSx = isCard ? [...cardSx, ...sxArray] : sx;
36
+
37
+ return (
38
+ <MuiSurface
39
+ ref={ref}
40
+ variant={mappedVariant}
41
+ elevation={elevation}
42
+ sx={composedSx}
43
+ {...rest}
44
+ />
45
+ );
46
+ });
47
+
48
+ Surface.displayName = 'Surface';
49
+ export default Surface;
@@ -0,0 +1,20 @@
1
+ import type { PaperProps } from '@mui/material/Paper';
2
+ import type { ReactNode } from 'react';
3
+ export type SurfaceVariant = 'elevation' | 'outlined' | 'card';
4
+ export interface SurfaceProps extends Omit<PaperProps, 'variant'> {
5
+ /**
6
+ * Visual style for the surface.
7
+ * `card` maps to an outlined paper with subtle shadow + rounded corners.
8
+ */
9
+ variant?: SurfaceVariant;
10
+ }
11
+
12
+ export type SurfaceResolverSpec = {
13
+ type?: 'Surface';
14
+ props?: Partial<SurfaceProps> & {
15
+ children?: ReactNode;
16
+ id?: string;
17
+ className?: string;
18
+ 'data-testid'?: string;
19
+ };
20
+ };
@@ -0,0 +1,53 @@
1
+ import * as React from 'react';
2
+ import Switch from './Switch';
3
+ import { FormControlLabel } from '@mui/material';
4
+ import { SxProps, Theme } from '@mui/material/styles';
5
+ import { ensureNodeId } from '@/gui/utils/nodeID';
6
+
7
+ /**
8
+ * Switch.resolver
9
+ * ------------------------------------------------------------
10
+ * Allows declarative usage of the Switch atom. You can pass any
11
+ * MUI Switch prop through, plus optional `label` support. If
12
+ * `label` is provided, we wrap the control in `FormControlLabel`.
13
+ *
14
+ * Examples (JSON-ish):
15
+ * {
16
+ * type: 'Switch',
17
+ * props: { checked: true, color: 'primary', size: 'small' }
18
+ * }
19
+ *
20
+ * {
21
+ * type: 'Switch',
22
+ * props: { label: 'Enable feature', defaultChecked: true }
23
+ * }
24
+ */
25
+
26
+ export type SwitchResolverProps = React.ComponentProps<typeof Switch> & {
27
+ /** Optional text/element label to render alongside the switch */
28
+ label?: React.ReactNode;
29
+ /** Label position when `label` is provided */
30
+ labelPlacement?: 'end' | 'start' | 'top' | 'bottom';
31
+ sx?: SxProps<Theme>;
32
+ guiId?: string;
33
+ };
34
+
35
+ export default function resolveSwitch(props: SwitchResolverProps) {
36
+ const { label, labelPlacement = 'end', guiId, sx, ...rest } = props || ({} as SwitchResolverProps);
37
+
38
+ const nodeId = ensureNodeId('Switch', guiId);
39
+
40
+ const control = <Switch id={nodeId} sx={sx} {...rest} />;
41
+
42
+ if (label != null) {
43
+ return (
44
+ <FormControlLabel
45
+ control={control}
46
+ label={label}
47
+ labelPlacement={labelPlacement}
48
+ />
49
+ );
50
+ }
51
+
52
+ return control;
53
+ }
@@ -0,0 +1,236 @@
1
+ // src/gui/atoms/Switch/Switch.stories.tsx
2
+ import * as React from 'react';
3
+ import type { Meta, StoryObj } from '@storybook/react';
4
+ import { Box, Stack, Typography, Switch } from '@/gui/components/atoms';
5
+ import { FormControlLabel } from '@mui/material';
6
+
7
+ // ======================= Meta =======================
8
+ const meta: Meta<typeof Switch> = {
9
+ title: 'Atoms/Forms & Inputs/Switch',
10
+ component: Switch,
11
+ tags: ['autodocs'],
12
+ decorators: [
13
+ (Story) => (
14
+ <Box sx={{ p: 2 }}>
15
+ <Story />
16
+ </Box>
17
+ ),
18
+ ],
19
+ parameters: {
20
+ docs: {
21
+ description: {
22
+ component: `
23
+ **Switch (This.GUI atom)** is a thin wrapper around MUI's \`Switch\`.
24
+ It keeps MUI behavior, styling, and typing, but you import it from \`@/gui/atoms\` to keep your app decoupled from MUI.
25
+
26
+ ---
27
+
28
+ # Usage
29
+
30
+ ## React (imperative)
31
+ ~~~tsx
32
+ import { Switch } from '@/gui/atoms';
33
+
34
+ export function Example() {
35
+ const [enabled, setEnabled] = React.useState(false);
36
+ return (
37
+ <Switch
38
+ checked={enabled}
39
+ onChange={(_, v) => setEnabled(v)}
40
+ color="primary"
41
+ size="medium"
42
+ />
43
+ );
44
+ }
45
+ ~~~
46
+
47
+ With an accessible label (MUI way):
48
+ ~~~tsx
49
+ import { FormControlLabel } from '@mui/material';
50
+
51
+ <FormControlLabel control={<Switch defaultChecked />} label="Enable notifications" />
52
+ ~~~
53
+
54
+ ---
55
+
56
+ ## Declarative (resolver)
57
+ If you’re rendering via a JSON/registry resolver, you can pass the same props:
58
+
59
+ ~~~json
60
+ {
61
+ "type": "Switch",
62
+ "props": {
63
+ "label": "Enable feature",
64
+ "defaultChecked": true,
65
+ "color": "primary",
66
+ "size": "small",
67
+ "id": "feat-toggle",
68
+ "sx": { "ml": 1 }
69
+ }
70
+ }
71
+ ~~~
72
+
73
+ The resolver supports:
74
+ - All native MUI Switch props (\`checked\`, \`defaultChecked\`, \`onChange\`, \`color\`, \`size\`, \`disabled\`, \`edge\`, \`inputProps\`, \`sx\`, etc.).
75
+ - \`label?: ReactNode\` and \`labelPlacement?: 'start' | 'end' | 'top' | 'bottom'\` (wraps in \`FormControlLabel\` when present).
76
+ - \`id\`, \`className\`, \`data-testid\` passthrough for testing and DOM hooks.
77
+
78
+ ---
79
+ `,
80
+ },
81
+ },
82
+ },
83
+ argTypes: {
84
+ checked: {
85
+ control: 'boolean',
86
+ description: 'Controlled state. Use with onChange.',
87
+ table: { category: 'Behavior' },
88
+ },
89
+ defaultChecked: {
90
+ control: 'boolean',
91
+ description: 'Uncontrolled initial state.',
92
+ table: { category: 'Behavior' },
93
+ },
94
+ disabled: {
95
+ control: 'boolean',
96
+ table: { category: 'Behavior' },
97
+ },
98
+ color: {
99
+ control: 'select',
100
+ options: ['primary', 'secondary', 'default'],
101
+ table: { category: 'Appearance' },
102
+ },
103
+ size: {
104
+ control: 'radio',
105
+ options: ['small', 'medium'],
106
+ description: 'Same as MUI Switch (no large by default).',
107
+ table: { category: 'Appearance' },
108
+ },
109
+ edge: {
110
+ control: 'radio',
111
+ options: [false, 'start', 'end'],
112
+ table: { category: 'Appearance' },
113
+ },
114
+ sx: { table: { category: 'Style' } },
115
+ id: { table: { category: 'DOM' } },
116
+ className: { table: { category: 'DOM' } },
117
+ // Not useful to control live in SB
118
+ onChange: { table: { disable: true } },
119
+ inputProps: { table: { disable: true } },
120
+ },
121
+ args: {
122
+ defaultChecked: false,
123
+ color: 'primary',
124
+ size: 'medium',
125
+ edge: false,
126
+ },
127
+ };
128
+ export default meta;
129
+
130
+ type Story = StoryObj<typeof Switch>;
131
+
132
+ // ======================= Stories =======================
133
+
134
+ export const Playground: Story = {
135
+ render: (args) => <Switch {...args} />,
136
+ };
137
+
138
+ export const LabeledVariants: Story = {
139
+ name: 'With label & placement',
140
+ render: () => (
141
+ <Stack spacing={2}>
142
+ <FormControlLabel control={<Switch defaultChecked />} label="End (default)" />
143
+ <FormControlLabel control={<Switch defaultChecked />} label="Start" labelPlacement="start" />
144
+ <FormControlLabel control={<Switch />} label="Top" labelPlacement="top" />
145
+ <FormControlLabel control={<Switch />} label="Bottom" labelPlacement="bottom" />
146
+ </Stack>
147
+ ),
148
+ parameters: {
149
+ docs: {
150
+ description: {
151
+ story:
152
+ 'When `label` is present, the atom wraps the control with `FormControlLabel`. Use `labelPlacement` to position it.',
153
+ },
154
+ },
155
+ },
156
+ };
157
+
158
+ export const SizesAndColors: Story = {
159
+ name: 'Sizes & colors',
160
+ render: () => (
161
+ <Stack spacing={2}>
162
+ <Stack direction="row" spacing={2} alignItems="center">
163
+ <Typography variant="body2" sx={{ minWidth: 88 }}>small</Typography>
164
+ <Switch size="small" color="default" defaultChecked />
165
+ <Switch size="small" color="primary" defaultChecked />
166
+ <Switch size="small" color="secondary" defaultChecked />
167
+ </Stack>
168
+ <Stack direction="row" spacing={2} alignItems="center">
169
+ <Typography variant="body2" sx={{ minWidth: 88 }}>medium</Typography>
170
+ <Switch size="medium" color="default" defaultChecked />
171
+ <Switch size="medium" color="primary" defaultChecked />
172
+ <Switch size="medium" color="secondary" defaultChecked />
173
+ </Stack>
174
+ </Stack>
175
+ ),
176
+ };
177
+
178
+ export const ControlledExample: Story = {
179
+ name: 'Controlled (React state)',
180
+ render: () => {
181
+ const [on, setOn] = React.useState(false);
182
+ return (
183
+ <Stack spacing={1.5}>
184
+ <Typography variant="body2">Value: <b>{on ? 'true' : 'false'}</b></Typography>
185
+ <FormControlLabel
186
+ control={
187
+ <Switch
188
+ checked={on}
189
+ onChange={(_, v) => setOn(v)}
190
+ color={on ? 'primary' : 'secondary'}
191
+ />
192
+ }
193
+ label="Controlled switch"
194
+ />
195
+ </Stack>
196
+ );
197
+ },
198
+ parameters: {
199
+ docs: {
200
+ description: {
201
+ story:
202
+ 'Classic controlled pattern: bind `checked` and update via `onChange`. You can also change appearance based on state.',
203
+ },
204
+ },
205
+ },
206
+ };
207
+
208
+ export const EdgeAndSx: Story = {
209
+ name: 'Edge & custom sx',
210
+ render: () => (
211
+ <Stack spacing={2}>
212
+ <FormControlLabel control={<Switch edge="start" defaultChecked />} label="Edge start" />
213
+ <FormControlLabel
214
+ control={
215
+ <Switch
216
+ defaultChecked
217
+ sx={{
218
+ '& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track': {
219
+ opacity: 0.7,
220
+ },
221
+ }}
222
+ />
223
+ }
224
+ label="Custom sx"
225
+ />
226
+ </Stack>
227
+ ),
228
+ parameters: {
229
+ docs: {
230
+ description: {
231
+ story:
232
+ 'Pass any `sx` overrides exactly as you would with MUI. Useful for fine-grained tuning without creating a new variant.',
233
+ },
234
+ },
235
+ },
236
+ };
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import MuiSwitch from '@mui/material/Switch';
3
+ import type { SwitchProps as MuiSwitchProps } from '@mui/material/Switch';
4
+ /**
5
+ * Switch (This.GUI primitive)
6
+ * ----------------------------------------
7
+ * Thin wrapper over MUI's `Switch`.
8
+ * - Non‑polymorphic (same as MUI): forwards ref to the root element.
9
+ * - Preserves all MUI props (`checked`, `onChange`, `size`, `color`, etc.).
10
+ *
11
+ * Usage:
12
+ * import { Switch } from '@/gui/atoms';
13
+ * <Switch checked={on} onChange={(e) => setOn(e.target.checked)} size="small" />
14
+ */
15
+
16
+ // Re-export MUI's prop types so consumers can import from our surface.
17
+ export type SwitchProps = MuiSwitchProps;
18
+ const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(function Switch(props, ref) {
19
+ return <MuiSwitch ref={ref} {...props} />;
20
+ });
21
+ export default Switch;
22
+ export type { MuiSwitchProps };
@@ -0,0 +1,7 @@
1
+ import * as React from 'react';
2
+ import MuiTableBody from '@mui/material/TableBody';
3
+ // Re-export using MUI's own component type to keep full typing
4
+ const TableBody = MuiTableBody;
5
+ export type TableBodyProps = React.ComponentProps<typeof TableBody>;
6
+ (TableBody as any).displayName = 'Gui.TableBody';
7
+ export default TableBody;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * This.GUI — TableCell
3
+ * Thin wrapper that preserves MUI's own typing and API.
4
+ *
5
+ * Examples:
6
+ * <TableCell align="right">123</TableCell>
7
+ *
8
+ * Notes:
9
+ * - Preserves full MUI TableCell props and typing.
10
+ * - Integrates into This.GUI namespace and resolver pattern.
11
+ */
12
+ import * as React from 'react';
13
+ import MuiTableCell from '@mui/material/TableCell';
14
+ // Re-export using MUI's own component type to keep full typing
15
+ const TableCell = MuiTableCell;
16
+ export type TableCellProps = React.ComponentProps<typeof TableCell>;
17
+ (TableCell as any).displayName = 'Gui.TableCell';
18
+ export default TableCell;
@@ -0,0 +1,9 @@
1
+ import * as React from 'react';
2
+ import MuiTableHead from '@mui/material/TableHead';
3
+
4
+ // Re-export using MUI's own component type to keep full typing
5
+ const TableHead = MuiTableHead;
6
+ export type TableHeadProps = React.ComponentProps<typeof TableHead>;
7
+
8
+ (TableHead as any).displayName = 'Gui.TableHead';
9
+ export default TableHead;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * This.GUI — TableRow
3
+ * Thin wrapper that preserves MUI's own typing and API.
4
+ *
5
+ * Examples:
6
+ * <TableRow hover>
7
+ * <TableCell>...</TableCell>
8
+ * </TableRow>
9
+ *
10
+ * Notes:
11
+ * - Preserves full MUI TableRow props and typing.
12
+ * - Integrates into This.GUI namespace and resolver pattern.
13
+ */
14
+ import * as React from 'react';
15
+ import MuiTableRow from '@mui/material/TableRow';
16
+ // Re-export using MUI's own component type to keep full typing
17
+ const TableRow = MuiTableRow;
18
+ export type TableRowProps = React.ComponentProps<typeof TableRow>;
19
+ (TableRow as any).displayName = 'Gui.TableRow';
20
+ export default TableRow;