this.gui 1.3.22 → 1.3.26

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 (284) hide show
  1. package/dist/this-gui.es.js +0 -1
  2. package/dist/this-gui.umd.js +65 -65
  3. package/index.ts +3 -2
  4. package/init/index.html +4 -5
  5. package/init/package-lock.json +2 -2
  6. package/init/package.json +1 -1
  7. package/init/src/App.tsx +24 -0
  8. package/init/src/index.css +16 -0
  9. package/init/src/main.tsx +14 -0
  10. package/init/src/router/DerivableRouter.tsx +36 -0
  11. package/package.json +1 -1
  12. package/src/GUI.tsx +15 -0
  13. package/src/components/generics/Cards/Gridme.jsx +52 -0
  14. package/src/components/generics/Cards/LilBox.jsx +65 -0
  15. package/src/components/generics/Cards/ModuleCard.jsx +106 -0
  16. package/src/components/generics/Chats/FullChatBot.jsx +223 -0
  17. package/src/components/generics/Code/CodeBlock.jsx +33 -0
  18. package/src/components/generics/Feedback/Callout.jsx +92 -0
  19. package/src/components/generics/Layout/GridX.jsx +29 -0
  20. package/src/components/generics/Layout/Hero2.jsx +132 -0
  21. package/src/components/generics/Layout/PageContainer.jsx +29 -0
  22. package/src/components/generics/Layout/PageDivider.jsx +20 -0
  23. package/src/components/generics/Layout/Section.jsx +43 -0
  24. package/src/components/generics/Layout/SectionHeader.jsx +21 -0
  25. package/src/components/generics/Media/Img.jsx +58 -0
  26. package/src/components/generics/Media/VideoEmbed.jsx +51 -0
  27. package/src/components/generics/Organization/TableOfContents.jsx +51 -0
  28. package/src/components/generics/Organization/Tabs.jsx +45 -0
  29. package/src/components/generics/Text/TextList.jsx +41 -0
  30. package/src/components/generics/Text/TextParagraph.jsx +28 -0
  31. package/src/components/generics/Text/TextQuote.jsx +23 -0
  32. package/src/components/generics/Text/TextTitle.jsx +44 -0
  33. package/src/gui/Layouts/ResponsiveUI/Content/Content.resolver.tsx +0 -0
  34. package/src/gui/Layouts/ResponsiveUI/Content/Content.stories.tsx +88 -0
  35. package/src/gui/Layouts/ResponsiveUI/Content/Content.tsx +53 -0
  36. package/src/gui/Layouts/ResponsiveUI/Content/Content.types.tsx +40 -0
  37. package/src/gui/Layouts/ResponsiveUI/Footer/Footer.resolver.tsx +45 -0
  38. package/src/gui/Layouts/ResponsiveUI/Footer/Footer.stories.tsx +209 -0
  39. package/src/gui/Layouts/ResponsiveUI/Footer/Footer.tsx +337 -0
  40. package/src/gui/Layouts/ResponsiveUI/Footer/Footer.types.ts +40 -0
  41. package/src/gui/Layouts/ResponsiveUI/Layout/Layout.resolver.tsx +37 -0
  42. package/src/gui/Layouts/ResponsiveUI/Layout/Layout.stories.tsx +290 -0
  43. package/src/gui/Layouts/ResponsiveUI/Layout/Layout.tsx +112 -0
  44. package/src/gui/Layouts/ResponsiveUI/Layout/Layout.types.ts +56 -0
  45. package/src/gui/Layouts/ResponsiveUI/Layout/useLayoutBreakpoints.ts +9 -0
  46. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.resolver.tsx +87 -0
  47. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.stories.tsx +199 -0
  48. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.tsx +311 -0
  49. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.types.ts +41 -0
  50. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/SidebarToggleButton.tsx +53 -0
  51. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.resolver.tsx +19 -0
  52. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.tsx +107 -0
  53. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.resolver.tsx +0 -0
  54. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.tsx +122 -0
  55. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.types.ts +13 -0
  56. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarMenu/LeftSidebarMenu.tsx +142 -0
  57. package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarToggleButton/LeftSidebarToggleButton.tsx +23 -0
  58. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.resolver.tsx +35 -0
  59. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.stories.tsx +240 -0
  60. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.tsx +319 -0
  61. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.types.ts +17 -0
  62. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarAction/RightSidebarAction.tsx +102 -0
  63. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarLink/RightSidebarLink.tsx +132 -0
  64. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarMenu/RightSidebarMenu.tsx +140 -0
  65. package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarToggleButton/RightSidebarToggleButton.tsx +22 -0
  66. package/src/gui/Layouts/ResponsiveUI/StickyOptions/StickyOptionsTop.stories.tsx +469 -0
  67. package/src/gui/Layouts/ResponsiveUI/StickyOptions/StickyOptionsTop.tsx +489 -0
  68. package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.resolver.tsx +86 -0
  69. package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.stories.tsx +350 -0
  70. package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.tsx +281 -0
  71. package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.types.ts +39 -0
  72. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarAction/TopBarAction.stories.tsx +83 -0
  73. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarAction/TopBarAction.tsx +18 -0
  74. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarAction/TopBarAction.types.ts +4 -0
  75. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarLink/TopBarLink.stories.tsx +189 -0
  76. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarLink/TopBarLink.tsx +30 -0
  77. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarLink/TopBarLink.types.ts +9 -0
  78. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.resolver.tsx +14 -0
  79. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.stories.tsx +56 -0
  80. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.tsx +123 -0
  81. package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.types.ts +44 -0
  82. package/src/gui/Theme/GuiProvider.tsx +125 -0
  83. package/src/gui/Theme/Icon/Icon.resolver.tsx +29 -0
  84. package/src/gui/Theme/Icon/Icon.tsx +43 -0
  85. package/src/gui/Theme/catalog/CherryByte/CherryByte.png +0 -0
  86. package/src/gui/Theme/catalog/CherryByte/dark.tokens.ts +47 -0
  87. package/src/gui/Theme/catalog/CherryByte/light.tokens.ts +47 -0
  88. package/src/gui/Theme/catalog/CherryByte/manifest.ts +24 -0
  89. package/src/gui/Theme/catalog/GhostShell/dark.tokens.ts +43 -0
  90. package/src/gui/Theme/catalog/GhostShell/ghost.png +0 -0
  91. package/src/gui/Theme/catalog/GhostShell/light.tokens.ts +39 -0
  92. package/src/gui/Theme/catalog/GhostShell/manifest.ts +24 -0
  93. package/src/gui/Theme/catalog/LunaHex/LunaHex.png +0 -0
  94. package/src/gui/Theme/catalog/LunaHex/dark.tokens.ts +34 -0
  95. package/src/gui/Theme/catalog/LunaHex/light.tokens.ts +74 -0
  96. package/src/gui/Theme/catalog/LunaHex/manifest.ts +24 -0
  97. package/src/gui/Theme/catalog/MUI/MUI.png +0 -0
  98. package/src/gui/Theme/catalog/MUI/dark.tokens.ts +58 -0
  99. package/src/gui/Theme/catalog/MUI/light.tokens.ts +74 -0
  100. package/src/gui/Theme/catalog/MUI/manifest.ts +24 -0
  101. package/src/gui/Theme/catalog/PrinceOfDarkness/dark.tokens.ts +48 -0
  102. package/src/gui/Theme/catalog/PrinceOfDarkness/light.tokens.ts +47 -0
  103. package/src/gui/Theme/catalog/PrinceOfDarkness/manifest.ts +24 -0
  104. package/src/gui/Theme/catalog/PrinceOfDarkness/prince.png +0 -0
  105. package/src/gui/Theme/catalog/PrinceOfDarkness/princeOfDarkness.png +0 -0
  106. package/src/gui/Theme/catalog/Seafoam/dark.tokens.ts +49 -0
  107. package/src/gui/Theme/catalog/Seafoam/light.tokens.ts +47 -0
  108. package/src/gui/Theme/catalog/Seafoam/manifest.ts +24 -0
  109. package/src/gui/Theme/catalog/Seafoam/seaFoam.png +0 -0
  110. package/src/gui/Theme/catalog/neurons/dark.tokens.ts +58 -0
  111. package/src/gui/Theme/catalog/neurons/light.tokens.ts +74 -0
  112. package/src/gui/Theme/catalog/neurons/manifest.ts +24 -0
  113. package/src/gui/Theme/catalog/neurons/neurons.me.png +0 -0
  114. package/src/gui/Theme/fromTokens.ts +273 -0
  115. package/src/gui/Theme/gui.css +31 -0
  116. package/src/gui/Theme/index.ts +17 -0
  117. package/src/gui/Theme/styles/buildShadows.ts +83 -0
  118. package/src/gui/Theme/styles/theme.tokens.ts +108 -0
  119. package/src/gui/Theme/utils/catalog.ts +61 -0
  120. package/src/gui/Theme/utils/persistence.ts +66 -0
  121. package/src/gui/Theme/utils/themeUtils.ts +34 -0
  122. package/src/gui/apis/codegen.api.ts +38 -0
  123. package/src/gui/components/atoms/AppBar/AppBar.resolver.tsx +41 -0
  124. package/src/gui/components/atoms/AppBar/AppBar.stories.tsx +225 -0
  125. package/src/gui/components/atoms/AppBar/AppBar.tsx +8 -0
  126. package/src/gui/components/atoms/AppBar/AppBar.types.ts +28 -0
  127. package/src/gui/components/atoms/Avatar/Avatar.resolver.tsx +61 -0
  128. package/src/gui/components/atoms/Avatar/Avatar.stories.tsx +36 -0
  129. package/src/gui/components/atoms/Avatar/Avatar.tsx +14 -0
  130. package/src/gui/components/atoms/Box/Box.resolver.tsx +171 -0
  131. package/src/gui/components/atoms/Box/Box.stories.tsx +263 -0
  132. package/src/gui/components/atoms/Box/Box.tsx +15 -0
  133. package/src/gui/components/atoms/Button/Button.resolver.tsx +103 -0
  134. package/src/gui/components/atoms/Button/Button.stories.tsx +219 -0
  135. package/src/gui/components/atoms/Button/Button.tsx +40 -0
  136. package/src/gui/components/atoms/Card/Card.resolver.tsx +63 -0
  137. package/src/gui/components/atoms/Card/Card.stories.tsx +54 -0
  138. package/src/gui/components/atoms/Card/Card.tsx +13 -0
  139. package/src/gui/components/atoms/CardActions/CardActions.resolver.tsx +59 -0
  140. package/src/gui/components/atoms/CardActions/CardActions.stories.tsx +32 -0
  141. package/src/gui/components/atoms/CardActions/CardActions.tsx +14 -0
  142. package/src/gui/components/atoms/CardContent/CardContent.resolver.tsx +60 -0
  143. package/src/gui/components/atoms/CardContent/CardContent.stories.tsx +34 -0
  144. package/src/gui/components/atoms/CardContent/CardContent.tsx +13 -0
  145. package/src/gui/components/atoms/CardHeader/CardHeader.resolver.tsx +68 -0
  146. package/src/gui/components/atoms/CardHeader/CardHeader.stories.tsx +40 -0
  147. package/src/gui/components/atoms/CardHeader/CardHeader.tsx +12 -0
  148. package/src/gui/components/atoms/Collapse/Collapse.resolver.tsx +85 -0
  149. package/src/gui/components/atoms/Collapse/Collapse.stories.tsx +130 -0
  150. package/src/gui/components/atoms/Collapse/Collapse.tsx +17 -0
  151. package/src/gui/components/atoms/Divider/Divider.resolver.tsx +95 -0
  152. package/src/gui/components/atoms/Divider/Divider.stories.tsx +108 -0
  153. package/src/gui/components/atoms/Divider/Divider.tsx +14 -0
  154. package/src/gui/components/atoms/Drawer/Drawer.resolver.tsx +116 -0
  155. package/src/gui/components/atoms/Drawer/Drawer.stories.tsx +223 -0
  156. package/src/gui/components/atoms/Drawer/Drawer.tsx +25 -0
  157. package/src/gui/components/atoms/Grid/Grid.resolver.tsx +33 -0
  158. package/src/gui/components/atoms/Grid/Grid.stories.tsx +136 -0
  159. package/src/gui/components/atoms/Grid/Grid.tsx +15 -0
  160. package/src/gui/components/atoms/Grid/Grid.types.ts +9 -0
  161. package/src/gui/components/atoms/IconButton/IconButton.resolver.tsx +137 -0
  162. package/src/gui/components/atoms/IconButton/IconButton.stories.tsx +134 -0
  163. package/src/gui/components/atoms/IconButton/IconButton.tsx +22 -0
  164. package/src/gui/components/atoms/Link/Link.resolver.tsx +74 -0
  165. package/src/gui/components/atoms/Link/Link.stories.tsx +157 -0
  166. package/src/gui/components/atoms/Link/Link.tsx +36 -0
  167. package/src/gui/components/atoms/List/List.resolver.tsx +94 -0
  168. package/src/gui/components/atoms/List/List.stories.tsx +137 -0
  169. package/src/gui/components/atoms/List/List.tsx +20 -0
  170. package/src/gui/components/atoms/ListItem/ListItem.resolver.tsx +88 -0
  171. package/src/gui/components/atoms/ListItem/ListItem.stories.tsx +151 -0
  172. package/src/gui/components/atoms/ListItem/ListItem.tsx +19 -0
  173. package/src/gui/components/atoms/ListItemButton/ListItemButton.resolver.tsx +214 -0
  174. package/src/gui/components/atoms/ListItemButton/ListItemButton.stories.tsx +155 -0
  175. package/src/gui/components/atoms/ListItemButton/ListItemButton.tsx +15 -0
  176. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
  177. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.stories.tsx +132 -0
  178. package/src/gui/components/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
  179. package/src/gui/components/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
  180. package/src/gui/components/atoms/ListItemText/ListItemText.stories.tsx +156 -0
  181. package/src/gui/components/atoms/ListItemText/ListItemText.tsx +15 -0
  182. package/src/gui/components/atoms/Menu/Menu.resolver.tsx +112 -0
  183. package/src/gui/components/atoms/Menu/Menu.stories.tsx +162 -0
  184. package/src/gui/components/atoms/Menu/Menu.tsx +17 -0
  185. package/src/gui/components/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
  186. package/src/gui/components/atoms/MenuItem/MenuItem.stories.tsx +134 -0
  187. package/src/gui/components/atoms/MenuItem/MenuItem.tsx +14 -0
  188. package/src/gui/components/atoms/Paper/Paper.resolver.tsx +98 -0
  189. package/src/gui/components/atoms/Paper/Paper.stories.tsx +184 -0
  190. package/src/gui/components/atoms/Paper/Paper.tsx +15 -0
  191. package/src/gui/components/atoms/Section/Section.resolver.tsx +10 -0
  192. package/src/gui/components/atoms/Section/Section.stories.tsx +189 -0
  193. package/src/gui/components/atoms/Section/Section.tsx +76 -0
  194. package/src/gui/components/atoms/Section/Section.types.tsx +24 -0
  195. package/src/gui/components/atoms/Stack/Stack.resolver.tsx +94 -0
  196. package/src/gui/components/atoms/Stack/Stack.stories.tsx +160 -0
  197. package/src/gui/components/atoms/Stack/Stack.tsx +15 -0
  198. package/src/gui/components/atoms/Surface/Surface.resolver.tsx +37 -0
  199. package/src/gui/components/atoms/Surface/Surface.tsx +49 -0
  200. package/src/gui/components/atoms/Surface/Surface.types.ts +20 -0
  201. package/src/gui/components/atoms/Switch/Switch.resolver.tsx +53 -0
  202. package/src/gui/components/atoms/Switch/Switch.stories.tsx +236 -0
  203. package/src/gui/components/atoms/Switch/Switch.tsx +22 -0
  204. package/src/gui/components/atoms/TextField/TextField.stories.tsx +28 -0
  205. package/src/gui/components/atoms/TextField/TextField.tsx +15 -0
  206. package/src/gui/components/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
  207. package/src/gui/components/atoms/Toolbar/Toolbar.stories.tsx +155 -0
  208. package/src/gui/components/atoms/Toolbar/Toolbar.tsx +16 -0
  209. package/src/gui/components/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
  210. package/src/gui/components/atoms/Tooltip/Tooltip.stories.tsx +117 -0
  211. package/src/gui/components/atoms/Tooltip/Tooltip.tsx +70 -0
  212. package/src/gui/components/atoms/Typography/Typography.resolver.tsx +158 -0
  213. package/src/gui/components/atoms/Typography/Typography.stories.tsx +222 -0
  214. package/src/gui/components/atoms/Typography/Typography.tsx +27 -0
  215. package/src/gui/components/atoms.tsx +138 -0
  216. package/src/gui/components/molecules/Dialog/Dialog.stories.tsx +18 -0
  217. package/src/gui/components/molecules/Dialog/Dialog.tsx +5 -0
  218. package/src/gui/components/molecules/HeroSection/HeroSection.stories.tsx +141 -0
  219. package/src/gui/components/molecules/HeroSection/HeroSection.tsx +152 -0
  220. package/src/gui/components/molecules/HeroSection/HeroSection.types.tsx +18 -0
  221. package/src/gui/components/molecules/ModalBox/ModalBox.resolver.tsx +38 -0
  222. package/src/gui/components/molecules/ModalBox/ModalBox.stories.tsx +82 -0
  223. package/src/gui/components/molecules/ModalBox/ModalBox.tsx +106 -0
  224. package/src/gui/components/molecules/ModalBox/ModalBox.types.ts +29 -0
  225. package/src/gui/components/molecules/Page/Page.stories.tsx +135 -0
  226. package/src/gui/components/molecules/Page/Page.tsx +94 -0
  227. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.resolver.tsx +58 -0
  228. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.stories.tsx +133 -0
  229. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.tsx +101 -0
  230. package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.types.ts +29 -0
  231. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.resolver.tsx +15 -0
  232. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.stories.tsx +88 -0
  233. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.tsx +167 -0
  234. package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.types.ts +34 -0
  235. package/src/gui/components/organism/ChatGPTInterface/ChatGPTInterface.stories.tsx +17 -0
  236. package/src/gui/components/organism/ChatGPTInterface/ChatGPTInterface.tsx +71 -0
  237. package/src/gui/components/organism/RootDomain/RootDomain.stories.tsx +31 -0
  238. package/src/gui/components/organism/RootDomain/RootDomain.tsx +100 -0
  239. package/src/gui/components/organism/RootDomain/staticServices.ts +66 -0
  240. package/src/gui/components/window/Nodes/node.ts +0 -0
  241. package/src/gui/components/window/code/block/node.tsx +0 -0
  242. package/src/gui/components/window/code/hugging.face.api.ts +11 -0
  243. package/src/gui/components/window/connectors/index.ts +19 -0
  244. package/src/gui/components/window/window.stories.tsx +20 -0
  245. package/src/gui/components/window/window.tsx +633 -0
  246. package/src/gui/contexts/InsetsContext.tsx +38 -0
  247. package/src/gui/contexts/LeftSidebarContext.tsx +20 -0
  248. package/src/gui/contexts/RightSidebarContext.tsx +25 -0
  249. package/src/gui/contexts/ThemeContext.ts +34 -0
  250. package/src/gui/contexts/index.ts +4 -0
  251. package/src/gui/hooks/index.ts +11 -0
  252. package/src/gui/hooks/resolveColorToken.ts +39 -0
  253. package/src/gui/hooks/useCodeGen.ts +12 -0
  254. package/src/gui/hooks/useGuiMediaQuery.ts +18 -0
  255. package/src/gui/hooks/useGuiTheme.ts +18 -0
  256. package/src/gui/hooks/useInsets.ts +26 -0
  257. package/src/gui/hooks/useIsMobile.ts +13 -0
  258. package/src/gui/hooks/useIsTouchDevice.ts +25 -0
  259. package/src/gui/hooks/useLeftSidebar.ts +10 -0
  260. package/src/gui/hooks/useRightSidebar.ts +12 -0
  261. package/src/gui/hooks/useViewportKey.ts +19 -0
  262. package/src/gui/hooks/useViewportProp.ts +17 -0
  263. package/src/gui/me/Logic.tsx +31 -0
  264. package/src/gui/me/Me.stories.tsx +8 -0
  265. package/src/gui/me/Me.tsx +197 -0
  266. package/src/gui/me/fundamentals/verbs/verbs.tsx +94 -0
  267. package/src/gui/me/modificators/Adjectives.ts +0 -0
  268. package/src/gui/me/modificators/Adverbs.ts +0 -0
  269. package/src/gui/me/modificators/Complements.ts +27 -0
  270. package/src/gui/me/utils/Context.tsx +14 -0
  271. package/src/gui/me/utils/hooks/useMe.js +37 -0
  272. package/src/gui/utils/nodeID.ts +11 -0
  273. package/src/registry/GuiRegistry.ts +19 -0
  274. package/src/registry/factory.ts +12 -0
  275. package/src/registry/index.ts +3 -0
  276. package/src/registry/types.ts +6 -0
  277. package/src/stories/01.Home.mdx +22 -0
  278. package/src/stories/02.Understanding.This.GUI.mdx +149 -0
  279. package/src/stories/Theme/Palette.stories.tsx +86 -0
  280. package/src/stories/Theme/ThemeViewer.stories.tsx +91 -0
  281. package/src/stories/Theme/Typography.stories.jsx +211 -0
  282. package/src/types/gui.d.ts +67 -0
  283. package/src/types/theme.d.ts +191 -0
  284. package/src/types/viewport.ts +132 -0
@@ -0,0 +1,125 @@
1
+ // src/themes/GuiProvider.tsx
2
+ import React, { useEffect, useMemo, useState } from 'react';
3
+ import { useInRouterContext, BrowserRouter } from 'react-router-dom';
4
+ import { generatePaletteCssVars } from './utils/themeUtils';
5
+ import { ThemeContext } from '@/gui/contexts/ThemeContext';
6
+ import { ThemeProvider, CssBaseline } from '@mui/material';
7
+ import type { Theme } from '@mui/material/styles';
8
+ import { themeTokens } from '@/gui/Theme/styles/theme.tokens';
9
+ import { usePersistentThemeId, usePersistentThemeMode } from './utils/persistence';
10
+ import { makeMuiTheme } from '@/gui/Theme/fromTokens';
11
+ import { GuiThemes, getGuiTheme } from './utils/catalog';
12
+ import { InsetsProvider, useInsetsContext } from '@/gui/contexts/InsetsContext';
13
+ // -------------------------------- Types --------------------------------
14
+ import type {
15
+ GuiContextValue,
16
+ } from '@/types/theme';
17
+ export type GuiProviderProps = {
18
+ initialThemeId?: string;
19
+ initialMode?: 'light' | 'dark'; // <-- añadido
20
+ children?: React.ReactNode;
21
+ };
22
+
23
+ export function GuiProvider({
24
+ initialThemeId = 'neurons.me',
25
+ initialMode = 'light', // default
26
+ children,
27
+ }: GuiProviderProps) {
28
+ // Persist last chosen `themeId`
29
+ const [themeId, setThemeId] = usePersistentThemeId(initialThemeId);
30
+ // Persist last chosen `mode`
31
+ const [mode, setModeState] = usePersistentThemeMode(initialMode);
32
+ // Resolve manifest for current themeId (the GuiTheme which contains both modes)
33
+ const manifest = useMemo(() => {
34
+ return getGuiTheme(themeId) ?? GuiThemes[0];
35
+ }, [themeId]);
36
+ // Expose an `active` object for convenience (manifest + current selected mode)
37
+ const active = useMemo(() => {
38
+ return {
39
+ ...(manifest ?? {}),
40
+ mode,
41
+ } as (typeof manifest & { mode: 'light' | 'dark' });
42
+ }, [manifest, mode]);
43
+ // Build MUI themes for both dark and light using the manifest's mode tokens.
44
+ // IMPORTANT: makeMuiTheme signature assumed: makeMuiTheme(baseTokens, modeTokens, mode)
45
+ const { mode: manifestModes } = manifest || ({} as any);
46
+ const lightMuiTheme = useMemo<Theme>(() => {
47
+ const lightTokens = manifestModes?.light ?? {};
48
+ return makeMuiTheme(themeTokens, lightTokens, 'light');
49
+ }, [manifestModes]);
50
+ const darkMuiTheme = useMemo<Theme>(() => {
51
+ const darkTokens = manifestModes?.dark ?? {};
52
+ return makeMuiTheme(themeTokens, darkTokens, 'dark');
53
+ }, [manifestModes]);
54
+ const theme = mode === 'dark' ? darkMuiTheme : lightMuiTheme;
55
+ useEffect(() => {
56
+ generatePaletteCssVars(theme);
57
+ }, [theme]);
58
+ // Ensure saved key is valid with the current catalog
59
+ useEffect(() => {
60
+ if (GuiThemes.length === 0) return;
61
+ const ok = GuiThemes.some((e) => e.themeId === themeId);
62
+ if (!ok) setThemeId(GuiThemes[0].themeId ?? '');
63
+ }, [themeId, setThemeId]);
64
+ // API for changing mode without touching themeId
65
+ const setMode = (nextMode: 'light' | 'dark') => {
66
+ setModeState(nextMode);
67
+ };
68
+
69
+ const toggleMode = () => setModeState((m) => (m === 'dark' ? 'light' : 'dark'));
70
+ const ctxValue: GuiContextValue = useMemo(
71
+ () => ({
72
+ themeId: manifest?.themeId ?? '',
73
+ setThemeId,
74
+ themeName: manifest?.themeName ?? '',
75
+ mode,
76
+ setMode,
77
+ toggleMode,
78
+ }),
79
+ [manifest?.themeId, manifest?.themeName, mode, setThemeId]
80
+ );
81
+
82
+ return (
83
+ <InsetsProvider>
84
+ <GuiThemeBridge theme={theme} ctxValue={ctxValue}>
85
+ {children}
86
+ </GuiThemeBridge>
87
+ </InsetsProvider>
88
+ );
89
+ }
90
+
91
+ const GuiThemeBridge: React.FC<{ theme: Theme; ctxValue: GuiContextValue; children?: React.ReactNode }> = ({ theme, ctxValue, children }) => {
92
+ const { insets, updateInsets } = useInsetsContext();
93
+ const themeWithInsets = useMemo(() => {
94
+ return {
95
+ ...theme,
96
+ layout: {
97
+ ...(theme as any).layout,
98
+ insets,
99
+ },
100
+ updateInsets,
101
+ } as Theme & { layout: any; updateInsets: typeof updateInsets };
102
+ }, [insets, theme, updateInsets]);
103
+
104
+ return (
105
+ <ThemeProvider theme={themeWithInsets}>
106
+ <CssBaseline />
107
+ <ThemeContext.Provider value={ctxValue}>{children}</ThemeContext.Provider>
108
+ </ThemeProvider>
109
+ );
110
+ };
111
+
112
+ export default GuiProvider;
113
+
114
+ // Wrapper that ensures GuiProvider is always inside a router
115
+ export function GuiProviderWrapper(props: GuiProviderProps) {
116
+ const inRouter = useInRouterContext();
117
+ if (inRouter) {
118
+ return <GuiProvider {...props} />;
119
+ }
120
+ return (
121
+ <BrowserRouter>
122
+ <GuiProvider {...props} />
123
+ </BrowserRouter>
124
+ );
125
+ }
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import type { RegistryEntry, ResolveCtx } from '@/registry/types';
3
+ import Icon from '@/themes/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,47 @@
1
+ // src/themes/catalog/CherryByte/dark.tokens.ts
2
+ // Cherry Byte Modern Dark — Deep Green & Blush Harmony
3
+ const darkTokens = {
4
+ "id": "cherrybyte-dark",
5
+ "$description": "Cherry Byte Dark — a youthful, elegant, and modern palette blending deep teal-green and soft blush tones for calm, sensual contrast.",
6
+ "color": {
7
+ "primary": { "$type": "color", "$value": "#e7a9a4" }, // blush pink
8
+ "secondary": { "$type": "color", "$value": "#2b3f3c" }, // deep forest green
9
+ "accent": { "$type": "color", "$value": "#d77c73" }, // coral accent
10
+ "icon": { "$type": "color", "$value": "#f5eaea" },
11
+ "background": {
12
+ "default": { "$type": "color", "$value": "#192524" }, // elegant deep teal
13
+ "paper": { "$type": "color", "$value": "#213230" }, // slightly lighter greenish tone
14
+ "nav": { "$type": "color", "$value": "#1a2928" } // subtle depth for navigation
15
+ },
16
+ "textPrimary": { "$type": "color", "$value": "#f9f4f3" },
17
+ "textSecondary": { "$type": "color", "$value": "rgba(255, 235, 230, 0.85)" },
18
+ "link": { "$type": "color", "$value": "#e7a9a4" },
19
+ "linkVisited": { "$type": "color", "$value": "#d5968f" },
20
+ "border": { "$type": "color", "$value": "rgba(255, 220, 210, 0.2)" },
21
+ "section": {
22
+ "default": { "$type": "color", "$value": "#202d2c" }, // soft green charcoal
23
+ "subtle": { "$type": "color", "$value": "#253837" }, // calm depth
24
+ "strong": { "$type": "color", "$value": "#324845" }, // bold modern layer
25
+ "accent": { "$type": "color", "$value": "#3d5450" }, // moody teal highlight
26
+ "highlight": { "$type": "color", "$value": "#d48d88" } // blush highlight
27
+ },
28
+ "blur": {
29
+ "light": { "$type": "color", "$value": "rgba(30, 25, 28, 0.34)" },
30
+ "medium": { "$type": "color", "$value": "rgba(34, 28, 30, 0.55)" },
31
+ "heavy": { "$type": "color", "$value": "rgba(38, 30, 32, 0.85)" },
32
+ "all": { "$type": "color", "$value": "rgba(42, 32, 34, 1)" }
33
+ }
34
+ },
35
+ "effects": {
36
+ "shadow": {
37
+ "$type": "shadow",
38
+ "$value": "0px 8px 24px rgba(25, 37, 36, 0.5)"
39
+ },
40
+ "glow": {
41
+ "$type": "shadow",
42
+ "$value": "0px 0px 28px rgba(231, 169, 164, 0.25)"
43
+ }
44
+ }
45
+ };
46
+
47
+ export default darkTokens;
@@ -0,0 +1,47 @@
1
+ // src/themes/catalog/CherryByte/light.tokens.ts
2
+ const lightTokens = {
3
+ "$description": "Cherry Byte Light Theme — sensual, elegant, and emotionally evocative feminine palette inspired by rose light and electric bloom.",
4
+ "id": "cherryByte-light",
5
+ "extends": "global.tokens.json",
6
+ "color": {
7
+ "primary": { "$type": "color", "$value": "#d6336c" }, // Vibrant cherry pink
8
+ "secondary": { "$type": "color", "$value": "#a8457a" }, // Muted plum rose
9
+ "accent": { "$type": "color", "$value": "#ff80ab" }, // Luminous magenta accent
10
+ "icon": { "$type": "color", "$value": "#643b4c" },
11
+ "background": {
12
+ "default": { "$type": "color", "$value": "#f9f3f5" }, // Blush rose white
13
+ "paper": { "$type": "color", "$value": "#fffafb" }, // Ultra light rose
14
+ "nav": { "$type": "color", "$value": "#f2e3e8" } // Warm muted cherry
15
+ },
16
+ "textPrimary": { "$type": "color", "$value": "#381e29" },
17
+ "textSecondary": { "$type": "color", "$value": "#5c3a49" },
18
+ "link": { "$type": "color", "$value": "#c2185b" },
19
+ "linkVisited": { "$type": "color", "$value": "#9c1550" },
20
+ "border": { "$type": "color", "$value": "rgba(210, 120, 150, 0.25)" },
21
+ "section": {
22
+ "default": { "$type": "color", "$value": "#f8eef1" }, // Creamy cherry mist
23
+ "subtle": { "$type": "color", "$value": "#fff5f8" }, // Barely pink highlight
24
+ "strong": { "$type": "color", "$value": "#f0dde3" }, // Deeper rose canvas
25
+ "accent": { "$type": "color", "$value": "#ffd4e1" }, // Soft cherry accent glow
26
+ "highlight": { "$type": "color", "$value": "#ffe2ec" } // Radiant blush aura
27
+ },
28
+ "blur": {
29
+ "light": { "$type": "color", "$value": "rgba(255, 245, 248, 0.45)" },
30
+ "medium": { "$type": "color", "$value": "rgba(255, 240, 246, 0.65)" },
31
+ "heavy": { "$type": "color", "$value": "rgba(255, 230, 242, 0.85)" },
32
+ "all": { "$type": "color", "$value": "rgba(255, 225, 238, 1)" }
33
+ }
34
+ },
35
+ "effects": {
36
+ "shadow": {
37
+ "$type": "shadow",
38
+ "$value": "0px 6px 18px rgba(180, 70, 120, 0.15)"
39
+ },
40
+ "glow": {
41
+ "$type": "shadow",
42
+ "$value": "0px 0px 12px rgba(255, 128, 171, 0.25)"
43
+ }
44
+ }
45
+ };
46
+
47
+ export default lightTokens;
@@ -0,0 +1,24 @@
1
+ // src/themes/catalog/neurons/manifest.ts
2
+ import type { ThemeManifest } from '@/types/theme';
3
+ import badgeImage from './CherryByte.png';
4
+ import lightTokens from './light.tokens';
5
+ import darkTokens from './dark.tokens';
6
+ const cherryByteManifest: ThemeManifest = {
7
+ themeId: 'cherrybyte',
8
+ themeName: 'Cherry Byte',
9
+ description: 'Vibrant cherry red accents, designed to reduce eye strain.',
10
+ author: 'suiGn',
11
+ version: '1.0.0',
12
+ license: 'MIT',
13
+ homepage: 'https://neurons.me/',
14
+ tags: ['official', 'default'],
15
+ createdAt: '2025-09-16T00:00:00.000Z',
16
+ updatedAt: '2025-09-16T00:00:00.000Z',
17
+ badgeUrl: badgeImage,
18
+ mode: {
19
+ light: lightTokens,
20
+ dark: darkTokens,
21
+ },
22
+ defaultMode: 'dark'
23
+ };
24
+ export default cherryByteManifest;
@@ -0,0 +1,43 @@
1
+ // src/themes/catalog/GhostShell/dark.tokens.ts
2
+ const darkTokens = {
3
+ "id": "LunaHex-dark",
4
+ "$description": "LunaHex Cyberpunk Dark — matrix-inspired neon aesthetic with ghostly green glows and deep cyber shadows.",
5
+ "color": {
6
+ "primary": { "$type": "color", "$value": "#00ff9f" },
7
+ "secondary": { "$type": "color", "$value": "#00e0ff" },
8
+ "icon": { "$type": "color", "$value": "#7fffd4" },
9
+ "background": {
10
+ "default": { "$type": "color", "$value": "#06080a" },
11
+ "paper": { "$type": "color", "$value": "#0b1014" },
12
+ "nav": { "$type": "color", "$value": "rgba(10,14,18,0.96)" }
13
+ },
14
+ "textPrimary": { "$type": "color", "$value": "#e0fff3" },
15
+ "textSecondary": { "$type": "color", "$value": "rgba(180,255,220,0.75)" },
16
+ "link": { "$type": "color", "$value": "#00ffc3" },
17
+ "linkVisited": { "$type": "color", "$value": "#00a8a8" },
18
+ "border": { "$type": "color", "$value": "rgba(0,255,160,0.25)" },
19
+ "section": {
20
+ "default": { "$type": "color", "$value": "#0a0f10" },
21
+ "subtle": { "$type": "color", "$value": "#0f1719" },
22
+ "strong": { "$type": "color", "$value": "#030506" }
23
+ },
24
+ "blur": {
25
+ "light": { "$type": "color", "$value": "rgba(2, 13, 7, 0.55)" },
26
+ "medium": { "$type": "color", "$value": "rgba(2, 13, 7, 0.69)" },
27
+ "heavy": { "$type": "color", "$value": "rgba(0, 9, 6, 0.89)" },
28
+ "all": { "$type": "color", "$value": "rgba(2, 25, 15, 1)" }
29
+ },
30
+ "accent": {
31
+ "glow": { "$type": "color", "$value": "#00ffcc" },
32
+ "pulse": { "$type": "color", "$value": "#00c3ff" }
33
+ }
34
+ },
35
+ "font": {
36
+ "family": {
37
+ "$type": "fontFamily",
38
+ "$value": "'Share Tech Mono', 'Poppins', monospace"
39
+ }
40
+ }
41
+ };
42
+
43
+ export default darkTokens;
@@ -0,0 +1,39 @@
1
+ // src/themes/catalog/GhostShell/light.tokens.ts
2
+ const lightTokens = {
3
+ "id": "LunaHex-light",
4
+ "extends": "global.tokens.json",
5
+ "color": {
6
+ "primary": { "$type": "color", "$value": "#00c77f" },
7
+ "secondary": { "$type": "color", "$value": "#00b8ff" },
8
+ "icon": { "$type": "color", "$value": "#007f73" },
9
+ "default": { "$type": "color", "$value": "#f4f8f6" },
10
+ "paper": { "$type": "color", "$value": "#ffffff" },
11
+ "nav": { "$type": "color", "$value": "#f1fef9" },
12
+ "textPrimary": { "$type": "color", "$value": "#061a14" },
13
+ "textSecondary": { "$type": "color", "$value": "#34584f" },
14
+ "link": { "$type": "color", "$value": "#009f77" },
15
+ "linkVisited": { "$type": "color", "$value": "#007866" },
16
+ "border": { "$type": "color", "$value": "rgba(0,160,120,0.25)" },
17
+ "section": {
18
+ "default": { "$type": "color", "$value": "#e9fcf4" },
19
+ "subtle": { "$type": "color", "$value": "#f8fffb" },
20
+ "strong": { "$type": "color", "$value": "#d6f5ec" }
21
+ },
22
+ "blur": {
23
+ "light": { "$type": "color", "$value": "rgba(245, 255, 250, 0.7)" },
24
+ "medium": { "$type": "color", "$value": "rgba(240, 255, 250, 0.85)" },
25
+ "heavy": { "$type": "color", "$value": "rgba(235, 255, 250, 1)" },
26
+ "all": { "$type": "color", "$value": "rgba(230, 255, 245, 1)" }
27
+ },
28
+ "accent": {
29
+ "glow": { "$type": "color", "$value": "#00ffaa" },
30
+ "pulse": { "$type": "color", "$value": "#00d0ff" }
31
+ }
32
+ },
33
+ "font": {
34
+ "body": { "$type": "font", "$value": "'Share Tech Mono', 'Nunito Sans', monospace" },
35
+ "heading": { "$type": "font", "$value": "'Poppins', sans-serif" }
36
+ }
37
+ };
38
+
39
+ export default lightTokens;
@@ -0,0 +1,24 @@
1
+ // src/themes/catalog/GhostShell/manifest.ts
2
+ import type { ThemeManifest } from '@/types/theme';
3
+ import badgeImage from './ghost.png';
4
+ import lightTokens from './light.tokens';
5
+ import darkTokens from './dark.tokens';
6
+ const ghostShellManifest: ThemeManifest = {
7
+ themeId: 'ghost.shell',
8
+ themeName: 'GhostShell',
9
+ description: 'A sleek, modern theme with a dark aesthetic, perfect for late-night sessions.',
10
+ author: 'suiGn',
11
+ version: '1.0.0',
12
+ license: 'MIT',
13
+ homepage: 'https://neurons.me/',
14
+ tags: ['official', 'default'],
15
+ createdAt: '2025-09-16T00:00:00.000Z',
16
+ updatedAt: '2025-09-16T00:00:00.000Z',
17
+ badgeUrl: badgeImage,
18
+ mode: {
19
+ light: lightTokens,
20
+ dark: darkTokens,
21
+ },
22
+ defaultMode: 'dark'
23
+ };
24
+ export default ghostShellManifest;
@@ -0,0 +1,34 @@
1
+ // src/themes/catalog/LunaHex/dark.tokens.ts
2
+ // Luna Hex Dark Theme Tokens — overrides applied on top of global.tokens.json
3
+ const darkTokens = {
4
+ "id": "LunaHex-dark",
5
+ "$description": "Luna Hex Dark Theme Tokens — mystical, elegant dark palette with lunar tones.",
6
+ "color": {
7
+ "primary": { "$type": "color", "$value": "#a692f4" }, // soft lavender glow
8
+ "secondary": { "$type": "color", "$value": "#f6a6de" }, // rose moonlight
9
+ "icon": { "$type": "color", "$value": "#cfc9ff" }, // silver-white icons
10
+ "background": {
11
+ "default": { "$type": "color", "$value": "#0f1016" }, // deep cosmic blue-black
12
+ "paper": { "$type": "color", "$value": "#171822" }, // subtle moon haze
13
+ "nav": { "$type": "color", "$value": "rgba(17,18,25,0.96)" } // translucent dark
14
+ },
15
+ "textPrimary": { "$type": "color", "$value": "#f2efff" },
16
+ "textSecondary": { "$type": "color", "$value": "rgba(230,228,255,0.7)" },
17
+ "link": { "$type": "color", "$value": "#b8a3ff" },
18
+ "linkVisited": { "$type": "color", "$value": "#9c87f2" },
19
+ "border": { "$type": "color", "$value": "rgba(160,160,200,0.25)" },
20
+ "section": {
21
+ "default": { "$type": "color", "$value": "#141421" },
22
+ "subtle": { "$type": "color", "$value": "#1a1a2a" },
23
+ "strong": { "$type": "color", "$value": "#0c0c15" }
24
+ },
25
+ "blur": {
26
+ "light": { "$type": "color", "$value": "rgba(18, 17, 28, 0.55)" },
27
+ "medium": { "$type": "color", "$value": "rgba(20, 19, 32, 0.69)" },
28
+ "heavy": { "$type": "color", "$value": "rgba(17, 16, 24, 0.89)" },
29
+ "all": { "$type": "color", "$value": "rgba(16, 15, 24, 1)" }
30
+ }
31
+ }
32
+ };
33
+
34
+ export default darkTokens;
@@ -0,0 +1,74 @@
1
+ // src/themes/catalog/LunaHex/light.tokens.ts
2
+ const lightTokens = {
3
+ "$description": "Luna Hex Light Theme — part of This.GUI ecosystem",
4
+ "id": "LunaHex-light",
5
+ "extends": "global.tokens.json",
6
+ "color": {
7
+ "primary": {
8
+ "$type": "color",
9
+ "$value": "#6a4cc2"
10
+ },
11
+ "secondary": {
12
+ "$type": "color",
13
+ "$value": "#e08bcf"
14
+ },
15
+ "icon": {
16
+ "$type": "color",
17
+ "$value": "#9fa4b7"
18
+ },
19
+ "default": {
20
+ "$type": "color",
21
+ "$value": "#f4f5fa"
22
+ },
23
+ "paper": {
24
+ "$type": "color",
25
+ "$value": "#ffffff"
26
+ },
27
+ "nav": {
28
+ "$type": "color",
29
+ "$value": "#f9f9fb"
30
+ },
31
+ "textPrimary": {
32
+ "$type": "color",
33
+ "$value": "#2b244d"
34
+ },
35
+ "textSecondary": {
36
+ "$type": "color",
37
+ "$value": "#5c5470"
38
+ },
39
+ "link": {
40
+ "$type": "color",
41
+ "$value": "#a67be9"
42
+ },
43
+ "linkVisited": {
44
+ "$type": "color",
45
+ "$value": "#8b5be0"
46
+ },
47
+ "border": {
48
+ "$type": "color",
49
+ "$value": "rgba(160,160,190,0.2)"
50
+ },
51
+ "section": {
52
+ "default": {
53
+ "$type": "color",
54
+ "$value": "#f6f5ff"
55
+ },
56
+ "subtle": {
57
+ "$type": "color",
58
+ "$value": "#ffffff"
59
+ },
60
+ "strong": {
61
+ "$type": "color",
62
+ "$value": "#e9e6fa"
63
+ }
64
+ },
65
+ "blur": {
66
+ "light": { "$type": "color", "$value": "rgba(250, 245, 255, 0.34)" },
67
+ "medium": { "$type": "color", "$value": "rgba(245, 240, 255, 0.55)" },
68
+ "heavy": { "$type": "color", "$value": "rgba(240, 235, 255, 0.89)" },
69
+ "all": { "$type": "color", "$value": "rgba(235, 230, 255, 1)" }
70
+ }
71
+ }
72
+ };
73
+
74
+ export default lightTokens;
@@ -0,0 +1,24 @@
1
+ // src/themes/catalog/neurons/manifest.ts
2
+ import type { ThemeManifest } from '@/types/theme';
3
+ import badgeImage from './LunaHex.png';
4
+ import lightTokens from './light.tokens';
5
+ import darkTokens from './dark.tokens';
6
+ const lunaManifest: ThemeManifest = {
7
+ themeId: 'luna',
8
+ themeName: 'LunaHex',
9
+ description: 'Luna Hex theme with light and dark modes.',
10
+ author: 'suiGn',
11
+ version: '1.0.0',
12
+ license: 'MIT',
13
+ homepage: 'https://neurons.me/',
14
+ tags: ['official', 'default'],
15
+ createdAt: '2025-09-16T00:00:00.000Z',
16
+ updatedAt: '2025-09-16T00:00:00.000Z',
17
+ badgeUrl: badgeImage,
18
+ mode: {
19
+ light: lightTokens,
20
+ dark: darkTokens,
21
+ },
22
+ defaultMode: 'dark'
23
+ };
24
+ export default lunaManifest;
@@ -0,0 +1,58 @@
1
+ // src/themes/catalog/MUI/dark.tokens.ts
2
+ // MUI Dark Theme Tokens — overrides applied on top of global.tokens.json
3
+ const darkTokens = {
4
+ "id": "MUI-dark",
5
+ "$description": "MUI Dark Theme Tokens — overrides applied on top of global.tokens.json",
6
+ "color": {
7
+ "primary": {
8
+ "$type": "color",
9
+ "$value": "#90caf9"
10
+ },
11
+ "secondary": {
12
+ "$type": "color",
13
+ "$value": "#f48fb1"
14
+ },
15
+ "icon": {
16
+ "$type": "color",
17
+ "$value": "#a8a8a8"
18
+ },
19
+ "background": {
20
+ "default": { "$type": "color", "$value": "#121214" },
21
+ "paper": { "$type": "color", "$value": "#181a1c" },
22
+ "nav": { "$type": "color", "$value": "rgba(18,18,20,0.95)" }
23
+ },
24
+ "textPrimary": {
25
+ "$type": "color",
26
+ "$value": "#ffffff"
27
+ },
28
+ "textSecondary": {
29
+ "$type": "color",
30
+ "$value": "rgba(255,255,255,0.75)"
31
+ },
32
+ "link": {
33
+ "$type": "color",
34
+ "$value": "#00aa96"
35
+ },
36
+ "linkVisited": {
37
+ "$type": "color",
38
+ "$value": "#008278"
39
+ },
40
+ "border": {
41
+ "$type": "color",
42
+ "$value": "rgb(45,45,55)"
43
+ },
44
+ "section": {
45
+ "default": { "$type": "color", "$value": "#181818" },
46
+ "subtle": { "$type": "color", "$value": "#1c1c1c" },
47
+ "strong": { "$type": "color", "$value": "#222" }
48
+ },
49
+ "blur": {
50
+ "light": { "$type": "color", "$value": "rgba(18, 18, 20, 0.55)" },
51
+ "medium": { "$type": "color", "$value": "rgba(18, 18, 20, 0.69)" },
52
+ "heavy": { "$type": "color", "$value": "rgba(18, 18, 20, .89)" },
53
+ "all": { "$type": "color", "$value": "rgba(18, 18, 20, 1)" }
54
+ }
55
+ }
56
+ };
57
+
58
+ export default darkTokens;