this.gui 1.0.18 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/.storybook/main.js +40 -0
  2. package/.storybook/manager-head.html +13 -0
  3. package/.storybook/manager.js +15 -0
  4. package/.storybook/preview.tsx +54 -0
  5. package/.storybook/vitest.setup.js +6 -0
  6. package/.storybook/withLayout.tsx +18 -0
  7. package/README.md +1 -220
  8. package/dist/GUI.png +0 -0
  9. package/dist/GUI2.png +0 -0
  10. package/dist/favicon.ico +0 -0
  11. package/dist/this-gui.es.js +108493 -5056
  12. package/dist/this-gui.umd.js +239 -44
  13. package/dist/this.GUI.png +0 -0
  14. package/nodes/overall approach.md +93 -0
  15. package/notes/Proyect.md +109 -0
  16. package/package.json +71 -54
  17. package/public/GUI.png +0 -0
  18. package/public/GUI2.png +0 -0
  19. package/public/favicon.ico +0 -0
  20. package/public/this.GUI.png +0 -0
  21. package/src/components/generics/Cards/Gridme.jsx +52 -0
  22. package/src/components/generics/Cards/LilBox.jsx +65 -0
  23. package/src/components/generics/Cards/ModuleCard.jsx +106 -0
  24. package/src/components/generics/Chats/FullChatBot.jsx +223 -0
  25. package/src/components/generics/Code/CodeBlock.jsx +33 -0
  26. package/src/components/generics/Feedback/Callout.jsx +92 -0
  27. package/src/components/generics/Layout/GridX.jsx +29 -0
  28. package/src/components/generics/Layout/Hero2.jsx +132 -0
  29. package/src/components/generics/Layout/PageContainer.jsx +29 -0
  30. package/src/components/generics/Layout/PageDivider.jsx +20 -0
  31. package/src/components/generics/Layout/Section.jsx +43 -0
  32. package/src/components/generics/Layout/SectionHeader.jsx +21 -0
  33. package/src/components/generics/Media/Img.jsx +58 -0
  34. package/src/components/generics/Media/VideoEmbed.jsx +51 -0
  35. package/src/components/generics/Organization/TableOfContents.jsx +51 -0
  36. package/src/components/generics/Organization/Tabs.jsx +45 -0
  37. package/src/components/generics/Text/TextList.jsx +41 -0
  38. package/src/components/generics/Text/TextParagraph.jsx +28 -0
  39. package/src/components/generics/Text/TextQuote.jsx +23 -0
  40. package/src/components/generics/Text/TextTitle.jsx +44 -0
  41. package/src/components/this.me/MeActive.jsx +24 -0
  42. package/src/components/this.me/MeFloating.jsx +183 -0
  43. package/src/components/this.me/MeInactive.jsx +21 -0
  44. package/src/components/this.me/MeListUs.jsx +40 -0
  45. package/src/components/this.me/MeState.jsx +25 -0
  46. package/src/components/this.me/hooks/useMe.js +43 -0
  47. package/src/context/GuiProvider.tsx +243 -0
  48. package/src/gui/atoms/AppBar/AppBar.resolver.tsx +77 -0
  49. package/src/gui/atoms/AppBar/AppBar.stories.tsx +232 -0
  50. package/src/gui/atoms/AppBar/AppBar.tsx +10 -0
  51. package/src/gui/atoms/Box/Box.resolver.tsx +171 -0
  52. package/src/gui/atoms/Box/Box.stories.tsx +271 -0
  53. package/src/gui/atoms/Box/Box.tsx +15 -0
  54. package/src/gui/atoms/Button/Button.resolver.tsx +98 -0
  55. package/src/gui/atoms/Button/Button.stories.tsx +225 -0
  56. package/src/gui/atoms/Button/Button.tsx +40 -0
  57. package/src/gui/atoms/Collapse/Collapse.resolver.tsx +85 -0
  58. package/src/gui/atoms/Collapse/Collapse.stories.tsx +136 -0
  59. package/src/gui/atoms/Collapse/Collapse.tsx +17 -0
  60. package/src/gui/atoms/Divider/Divider.resolver.tsx +95 -0
  61. package/src/gui/atoms/Divider/Divider.stories.tsx +109 -0
  62. package/src/gui/atoms/Divider/Divider.tsx +14 -0
  63. package/src/gui/atoms/Drawer/Drawer.resolver.tsx +116 -0
  64. package/src/gui/atoms/Drawer/Drawer.stories.tsx +229 -0
  65. package/src/gui/atoms/Drawer/Drawer.tsx +8 -0
  66. package/src/gui/atoms/IconButton/IconButton.resolver.tsx +135 -0
  67. package/src/gui/atoms/IconButton/IconButton.stories.tsx +141 -0
  68. package/src/gui/atoms/IconButton/IconButton.tsx +22 -0
  69. package/src/gui/atoms/Link/Link.resolver.tsx +75 -0
  70. package/src/gui/atoms/Link/Link.stories.tsx +164 -0
  71. package/src/gui/atoms/Link/Link.tsx +14 -0
  72. package/src/gui/atoms/List/List.resolver.tsx +95 -0
  73. package/src/gui/atoms/List/List.stories.tsx +143 -0
  74. package/src/gui/atoms/List/List.tsx +20 -0
  75. package/src/gui/atoms/ListItem/ListItem.resolver.tsx +88 -0
  76. package/src/gui/atoms/ListItem/ListItem.stories.tsx +157 -0
  77. package/src/gui/atoms/ListItem/ListItem.tsx +19 -0
  78. package/src/gui/atoms/ListItemButton/ListItemButton.resolver.tsx +208 -0
  79. package/src/gui/atoms/ListItemButton/ListItemButton.stories.tsx +161 -0
  80. package/src/gui/atoms/ListItemButton/ListItemButton.tsx +15 -0
  81. package/src/gui/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
  82. package/src/gui/atoms/ListItemIcon/ListItemIcon.stories.tsx +135 -0
  83. package/src/gui/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
  84. package/src/gui/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
  85. package/src/gui/atoms/ListItemText/ListItemText.stories.tsx +162 -0
  86. package/src/gui/atoms/ListItemText/ListItemText.tsx +15 -0
  87. package/src/gui/atoms/Menu/Menu.resolver.tsx +112 -0
  88. package/src/gui/atoms/Menu/Menu.stories.tsx +168 -0
  89. package/src/gui/atoms/Menu/Menu.tsx +17 -0
  90. package/src/gui/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
  91. package/src/gui/atoms/MenuItem/MenuItem.stories.tsx +138 -0
  92. package/src/gui/atoms/MenuItem/MenuItem.tsx +14 -0
  93. package/src/gui/atoms/Paper/Paper.resolver.tsx +98 -0
  94. package/src/gui/atoms/Paper/Paper.stories.tsx +191 -0
  95. package/src/gui/atoms/Paper/Paper.tsx +17 -0
  96. package/src/gui/atoms/Stack/Stack.resolver.tsx +94 -0
  97. package/src/gui/atoms/Stack/Stack.stories.tsx +166 -0
  98. package/src/gui/atoms/Stack/Stack.tsx +15 -0
  99. package/src/gui/atoms/Switch/Switch.resolver.tsx +53 -0
  100. package/src/gui/atoms/Switch/Switch.stories.tsx +242 -0
  101. package/src/gui/atoms/Switch/Switch.tsx +22 -0
  102. package/src/gui/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
  103. package/src/gui/atoms/Toolbar/Toolbar.stories.tsx +163 -0
  104. package/src/gui/atoms/Toolbar/Toolbar.tsx +16 -0
  105. package/src/gui/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
  106. package/src/gui/atoms/Tooltip/Tooltip.stories.tsx +118 -0
  107. package/src/gui/atoms/Tooltip/Tooltip.tsx +78 -0
  108. package/src/gui/atoms/Typography/Typography.resolver.tsx +158 -0
  109. package/src/gui/atoms/Typography/Typography.stories.tsx +228 -0
  110. package/src/gui/atoms/Typography/Typography.tsx +27 -0
  111. package/src/gui/atoms.tsx +129 -0
  112. package/src/gui/index.ts +69 -0
  113. package/src/gui/molecules/AppBars/Footer/Footer.resolver.tsx +104 -0
  114. package/src/gui/molecules/AppBars/Footer/Footer.stories.tsx +499 -0
  115. package/src/gui/molecules/AppBars/Footer/Footer.tsx +307 -0
  116. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.resolver.tsx +75 -0
  117. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.stories.tsx +61 -0
  118. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.tsx +511 -0
  119. package/src/gui/molecules/AppBars/LeftSidebar/SidebarToggleButton.tsx +51 -0
  120. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.resolver.tsx +97 -0
  121. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.stories.tsx +294 -0
  122. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.tsx +295 -0
  123. package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.stories.tsx +480 -0
  124. package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.tsx +484 -0
  125. package/src/gui/molecules/AppBars/TopBar/TopBar.resolver.tsx +84 -0
  126. package/src/gui/molecules/AppBars/TopBar/TopBar.stories.tsx +297 -0
  127. package/src/gui/molecules/AppBars/TopBar/TopBar.tsx +299 -0
  128. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.resolver.tsx +72 -0
  129. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.stories.tsx +154 -0
  130. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.tsx +100 -0
  131. package/src/gui/molecules/Utilities/ThemeSelector.jsx +281 -0
  132. package/src/gui/utils/nodeID.ts +8 -0
  133. package/src/index.js +111 -0
  134. package/src/registry/GuiRegistry.ts +19 -0
  135. package/src/registry/factory.ts +12 -0
  136. package/src/registry/index.ts +3 -0
  137. package/src/registry/types.ts +6 -0
  138. package/src/stories/01.Home.mdx +22 -0
  139. package/src/stories/02.Understanding.This.GUI.md +149 -0
  140. package/src/stories/03.Themes.mdx +235 -0
  141. package/src/stories/04.GuiProvider.md +126 -0
  142. package/src/stories/04.GuiProvider.mdx +129 -0
  143. package/src/stories/Theme/BreakPointsAndGrids.stories.jsx +185 -0
  144. package/src/stories/Theme/Colors.stories.jsx +245 -0
  145. package/src/stories/Theme/Icons.stories.jsx +313 -0
  146. package/src/stories/Theme/Motion.stories.jsx +206 -0
  147. package/src/stories/Theme/ShadowAndElevation.stories.jsx +95 -0
  148. package/src/stories/Theme/SpacingAndRadius.stories.jsx +129 -0
  149. package/src/stories/Theme/Typography.stories.jsx +211 -0
  150. package/src/stories/assets/this.GUI.png +0 -0
  151. package/src/templates/BrowserExtension.jsx +56 -0
  152. package/src/templates/Layout.tsx +36 -0
  153. package/src/templates/Minimal.jsx +123 -0
  154. package/src/templates/Shell/Shell.jsx +107 -0
  155. package/src/themes/fromTokens.ts +352 -0
  156. package/src/themes/icons/Icon.tsx +137 -0
  157. package/src/themes/icons/packs/Lucide.ts +72 -0
  158. package/src/themes/icons/packs/Material.ts +87 -0
  159. package/src/themes/icons/registry.tsx +178 -0
  160. package/src/themes/index.js +116 -0
  161. package/src/themes/theme.d.ts +116 -0
  162. package/src/themes/tokens/global.tokens.json +107 -0
  163. package/src/themes/tokens/neurons/dark.tokens.json +45 -0
  164. package/src/themes/tokens/neurons/light.tokens.json +51 -0
  165. package/src/themes/tokens/neurons/manifest.json +23 -0
  166. package/src/types/theme.d.ts +32 -0
  167. package/src/types/viewport.ts +132 -0
  168. package/tsconfig.json +24 -0
  169. package/vite.config.js +74 -0
  170. package/dist/style.css +0 -1
  171. package/src/App.jsx +0 -39
  172. package/src/CreatePage.jsx +0 -61
  173. package/src/MDXEditor.jsx +0 -51
  174. package/src/MdxProvider.jsx +0 -20
  175. package/src/Page.jsx +0 -28
  176. package/src/PageDashboard.jsx +0 -56
  177. package/src/SiteBuilder.jsx +0 -108
  178. package/src/example.json +0 -43
  179. package/src/index.mdx +0 -164
  180. package/src/main.jsx +0 -15
  181. package/src/scripts/ComponentRegistry.js +0 -70
  182. package/src/scripts/logASCIIArt.js +0 -12
  183. package/src/scripts/postinstall.js +0 -111
  184. package/src/scripts/renderComponents.js +0 -11
  185. package/src/stories/Atoms/Alert/Alert.css +0 -211
  186. package/src/stories/Atoms/Alert/Alert.jsx +0 -56
  187. package/src/stories/Atoms/Alert/Alert.stories.jsx +0 -167
  188. package/src/stories/Atoms/Audio/Audio.css +0 -259
  189. package/src/stories/Atoms/Audio/Audio.jsx +0 -216
  190. package/src/stories/Atoms/Audio/Audio.stories.jsx +0 -191
  191. package/src/stories/Atoms/Badge/Badge.css +0 -249
  192. package/src/stories/Atoms/Badge/Badge.jsx +0 -54
  193. package/src/stories/Atoms/Badge/Badge.stories.jsx +0 -121
  194. package/src/stories/Atoms/Button/Button.css +0 -332
  195. package/src/stories/Atoms/Button/Button.jsx +0 -44
  196. package/src/stories/Atoms/Button/Button.stories.jsx +0 -209
  197. package/src/stories/Atoms/Caption/Caption.css +0 -169
  198. package/src/stories/Atoms/Caption/Caption.jsx +0 -72
  199. package/src/stories/Atoms/Caption/Caption.stories.jsx +0 -207
  200. package/src/stories/Atoms/Checkbox/Checkbox.css +0 -182
  201. package/src/stories/Atoms/Checkbox/Checkbox.jsx +0 -83
  202. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +0 -112
  203. package/src/stories/Atoms/Container/Container.css +0 -470
  204. package/src/stories/Atoms/Container/Container.jsx +0 -116
  205. package/src/stories/Atoms/Container/Container.stories.jsx +0 -145
  206. package/src/stories/Atoms/Divider/Divider.css +0 -147
  207. package/src/stories/Atoms/Divider/Divider.jsx +0 -62
  208. package/src/stories/Atoms/Divider/Divider.stories.jsx +0 -105
  209. package/src/stories/Atoms/Grid/Grid.css +0 -160
  210. package/src/stories/Atoms/Grid/Grid.jsx +0 -43
  211. package/src/stories/Atoms/Grid/Grid.stories.jsx +0 -84
  212. package/src/stories/Atoms/Heading/Heading.css +0 -112
  213. package/src/stories/Atoms/Heading/Heading.jsx +0 -69
  214. package/src/stories/Atoms/Heading/Heading.stories.jsx +0 -130
  215. package/src/stories/Atoms/Icon/Icon.css +0 -240
  216. package/src/stories/Atoms/Icon/Icon.jsx +0 -80
  217. package/src/stories/Atoms/Icon/Icon.stories.jsx +0 -177
  218. package/src/stories/Atoms/Image/Image.css +0 -245
  219. package/src/stories/Atoms/Image/Image.jsx +0 -175
  220. package/src/stories/Atoms/Image/Image.stories.jsx +0 -332
  221. package/src/stories/Atoms/Label/Label.css +0 -171
  222. package/src/stories/Atoms/Label/Label.jsx +0 -71
  223. package/src/stories/Atoms/Label/Label.stories.jsx +0 -180
  224. package/src/stories/Atoms/Link/Link.css +0 -51
  225. package/src/stories/Atoms/Link/Link.jsx +0 -72
  226. package/src/stories/Atoms/Link/Link.stories.jsx +0 -153
  227. package/src/stories/Atoms/Loader/Loader.css +0 -106
  228. package/src/stories/Atoms/Loader/Loader.jsx +0 -58
  229. package/src/stories/Atoms/Loader/Loader.stories.jsx +0 -99
  230. package/src/stories/Atoms/Logo/Logo.css +0 -94
  231. package/src/stories/Atoms/Logo/Logo.jsx +0 -53
  232. package/src/stories/Atoms/Logo/Logo.stories.jsx +0 -120
  233. package/src/stories/Atoms/Paragraph/Paragraph.css +0 -180
  234. package/src/stories/Atoms/Paragraph/Paragraph.jsx +0 -77
  235. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +0 -143
  236. package/src/stories/Atoms/ProgressBar/ProgressBar.css +0 -127
  237. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +0 -40
  238. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +0 -86
  239. package/src/stories/Atoms/RadioButton/RadioButton.css +0 -130
  240. package/src/stories/Atoms/RadioButton/RadioButton.jsx +0 -87
  241. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +0 -113
  242. package/src/stories/Atoms/Range/Range.css +0 -169
  243. package/src/stories/Atoms/Range/Range.jsx +0 -87
  244. package/src/stories/Atoms/Range/Range.stories.jsx +0 -110
  245. package/src/stories/Atoms/Section/Section.css +0 -268
  246. package/src/stories/Atoms/Section/Section.jsx +0 -63
  247. package/src/stories/Atoms/Section/Section.stories.jsx +0 -46
  248. package/src/stories/Atoms/Select/Select.css +0 -87
  249. package/src/stories/Atoms/Select/Select.jsx +0 -73
  250. package/src/stories/Atoms/Select/Select.stories.jsx +0 -109
  251. package/src/stories/Atoms/Slider/Slider.css +0 -90
  252. package/src/stories/Atoms/Slider/Slider.jsx +0 -129
  253. package/src/stories/Atoms/Slider/Slider.stories.jsx +0 -90
  254. package/src/stories/Atoms/Snackbar/Snackbar.css +0 -313
  255. package/src/stories/Atoms/Snackbar/Snackbar.jsx +0 -72
  256. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +0 -78
  257. package/src/stories/Atoms/Spacer/Spacer.css +0 -114
  258. package/src/stories/Atoms/Spacer/Spacer.jsx +0 -35
  259. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +0 -61
  260. package/src/stories/Atoms/Spinner/Spinner.css +0 -110
  261. package/src/stories/Atoms/Spinner/Spinner.jsx +0 -65
  262. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +0 -58
  263. package/src/stories/Atoms/Tag/Tag.css +0 -112
  264. package/src/stories/Atoms/Tag/Tag.jsx +0 -75
  265. package/src/stories/Atoms/Tag/Tag.stories.jsx +0 -67
  266. package/src/stories/Atoms/TextArea/TextArea.css +0 -99
  267. package/src/stories/Atoms/TextArea/TextArea.jsx +0 -118
  268. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +0 -36
  269. package/src/stories/Atoms/TextInput/TextInput.css +0 -102
  270. package/src/stories/Atoms/TextInput/TextInput.jsx +0 -133
  271. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +0 -69
  272. package/src/stories/Atoms/Toggle/Toggle.css +0 -118
  273. package/src/stories/Atoms/Toggle/Toggle.jsx +0 -69
  274. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +0 -35
  275. package/src/stories/Atoms/Tooltip/Tooltip.css +0 -383
  276. package/src/stories/Atoms/Tooltip/Tooltip.jsx +0 -46
  277. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +0 -52
  278. package/src/stories/Atoms/Video/Video.css +0 -39
  279. package/src/stories/Atoms/Video/Video.jsx +0 -78
  280. package/src/stories/Atoms/Video/Video.stories.jsx +0 -41
  281. package/src/stories/Atoms/index.js +0 -72
  282. package/src/stories/Atoms/meta_Atoms.js +0 -51
  283. package/src/stories/Components.js +0 -198
  284. package/src/stories/Getting Started.mdx +0 -239
  285. package/src/stories/Layouts/Accordion/Accordion.css +0 -293
  286. package/src/stories/Layouts/Accordion/Accordion.jsx +0 -74
  287. package/src/stories/Layouts/Accordion/Accordion.stories.jsx +0 -39
  288. package/src/stories/Layouts/Flexbox/Flexbox.css +0 -16
  289. package/src/stories/Layouts/Flexbox/Flexbox.jsx +0 -11
  290. package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +0 -28
  291. package/src/stories/Layouts/Footer/Footer.css +0 -16
  292. package/src/stories/Layouts/Footer/Footer.jsx +0 -31
  293. package/src/stories/Layouts/Footer/Footer.stories.jsx +0 -28
  294. package/src/stories/Layouts/Header/Header.css +0 -16
  295. package/src/stories/Layouts/Header/Header.jsx +0 -31
  296. package/src/stories/Layouts/Header/Header.stories.jsx +0 -28
  297. package/src/stories/Layouts/HeroBanner/HeroBanner.css +0 -16
  298. package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +0 -31
  299. package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +0 -28
  300. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +0 -16
  301. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +0 -31
  302. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +0 -28
  303. package/src/stories/Layouts/Pagination/Pagination.css +0 -16
  304. package/src/stories/Layouts/Pagination/Pagination.jsx +0 -31
  305. package/src/stories/Layouts/Pagination/Pagination.stories.jsx +0 -28
  306. package/src/stories/Layouts/Sidebar/Sidebar.css +0 -16
  307. package/src/stories/Layouts/Sidebar/Sidebar.jsx +0 -71
  308. package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +0 -28
  309. package/src/stories/Layouts/Tabs/Tabs.css +0 -16
  310. package/src/stories/Layouts/Tabs/Tabs.jsx +0 -31
  311. package/src/stories/Layouts/Tabs/Tabs.stories.jsx +0 -28
  312. package/src/stories/Layouts/index.js +0 -25
  313. package/src/stories/Layouts/meta_Layouts.js +0 -28
  314. package/src/stories/MDX.mdx +0 -118
  315. package/src/stories/Miscellaneous/Miscellaneous.js +0 -24
  316. package/src/stories/Molecules/Accordion/Accordion.css +0 -4
  317. package/src/stories/Molecules/Accordion/Accordion.jsx +0 -25
  318. package/src/stories/Molecules/Accordion/Accordion.stories.jsx +0 -20
  319. package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +0 -97
  320. package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +0 -244
  321. package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +0 -55
  322. package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +0 -130
  323. package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +0 -80
  324. package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +0 -20
  325. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +0 -147
  326. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +0 -51
  327. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +0 -36
  328. package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +0 -465
  329. package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +0 -47
  330. package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +0 -44
  331. package/src/stories/Molecules/Card/Card.css +0 -41
  332. package/src/stories/Molecules/Card/Card.jsx +0 -92
  333. package/src/stories/Molecules/Card/Card.stories.jsx +0 -34
  334. package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +0 -35
  335. package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +0 -104
  336. package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +0 -81
  337. package/src/stories/Molecules/DataTable/DataTable.css +0 -4
  338. package/src/stories/Molecules/DataTable/DataTable.jsx +0 -25
  339. package/src/stories/Molecules/DataTable/DataTable.stories.jsx +0 -20
  340. package/src/stories/Molecules/Dropdown/Dropdown.css +0 -192
  341. package/src/stories/Molecules/Dropdown/Dropdown.jsx +0 -96
  342. package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +0 -45
  343. package/src/stories/Molecules/FileUpload/FileUpload.css +0 -4
  344. package/src/stories/Molecules/FileUpload/FileUpload.jsx +0 -25
  345. package/src/stories/Molecules/FileUpload/FileUpload.stories.jsx +0 -20
  346. package/src/stories/Molecules/FormField/FormField.css +0 -4
  347. package/src/stories/Molecules/FormField/FormField.jsx +0 -25
  348. package/src/stories/Molecules/FormField/FormField.stories.jsx +0 -20
  349. package/src/stories/Molecules/Header/Header.css +0 -35
  350. package/src/stories/Molecules/Header/Header.jsx +0 -76
  351. package/src/stories/Molecules/Header/Header.stories.jsx +0 -28
  352. package/src/stories/Molecules/IconButton/IconButton.css +0 -4
  353. package/src/stories/Molecules/IconButton/IconButton.jsx +0 -25
  354. package/src/stories/Molecules/IconButton/IconButton.stories.jsx +0 -20
  355. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.css +0 -4
  356. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.jsx +0 -25
  357. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.stories.jsx +0 -20
  358. package/src/stories/Molecules/InputGroup/InputGroup.css +0 -4
  359. package/src/stories/Molecules/InputGroup/InputGroup.jsx +0 -25
  360. package/src/stories/Molecules/InputGroup/InputGroup.stories.jsx +0 -20
  361. package/src/stories/Molecules/InputWithLabel/InputWithLabel.css +0 -4
  362. package/src/stories/Molecules/InputWithLabel/InputWithLabel.jsx +0 -25
  363. package/src/stories/Molecules/InputWithLabel/InputWithLabel.stories.jsx +0 -20
  364. package/src/stories/Molecules/List/List.css +0 -4
  365. package/src/stories/Molecules/List/List.jsx +0 -25
  366. package/src/stories/Molecules/List/List.stories.jsx +0 -20
  367. package/src/stories/Molecules/MediaCard/MediaCard.css +0 -4
  368. package/src/stories/Molecules/MediaCard/MediaCard.jsx +0 -25
  369. package/src/stories/Molecules/MediaCard/MediaCard.stories.jsx +0 -20
  370. package/src/stories/Molecules/Modal/Modal.css +0 -4
  371. package/src/stories/Molecules/Modal/Modal.jsx +0 -25
  372. package/src/stories/Molecules/Modal/Modal.stories.jsx +0 -20
  373. package/src/stories/Molecules/Navbar/Navbar.css +0 -91
  374. package/src/stories/Molecules/Navbar/Navbar.jsx +0 -82
  375. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +0 -70
  376. package/src/stories/Molecules/Notification/Notification.css +0 -4
  377. package/src/stories/Molecules/Notification/Notification.jsx +0 -25
  378. package/src/stories/Molecules/Notification/Notification.stories.jsx +0 -20
  379. package/src/stories/Molecules/PricingTable/PricingTable.css +0 -4
  380. package/src/stories/Molecules/PricingTable/PricingTable.jsx +0 -25
  381. package/src/stories/Molecules/PricingTable/PricingTable.stories.jsx +0 -20
  382. package/src/stories/Molecules/SearchBar/SearchBar.css +0 -69
  383. package/src/stories/Molecules/SearchBar/SearchBar.jsx +0 -73
  384. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +0 -29
  385. package/src/stories/Molecules/SelectTheme/SelectTheme.css +0 -25
  386. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +0 -22
  387. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +0 -24
  388. package/src/stories/Molecules/Sidebar/Sidebar.css +0 -67
  389. package/src/stories/Molecules/Sidebar/Sidebar.jsx +0 -80
  390. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +0 -35
  391. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.css +0 -4
  392. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.jsx +0 -25
  393. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.stories.jsx +0 -20
  394. package/src/stories/Molecules/index.js +0 -58
  395. package/src/stories/Molecules/meta_Molecules.js +0 -47
  396. package/src/stories/Organisms/Profile/UserFriends/UserFriends.context.jsx +0 -15
  397. package/src/stories/Organisms/Profile/UserFriends/UserFriends.css +0 -4
  398. package/src/stories/Organisms/Profile/UserFriends/UserFriends.jsx +0 -13
  399. package/src/stories/Organisms/Profile/UserFriends/UserFriends.stories.jsx +0 -26
  400. package/src/stories/Organisms/Profile/UserPosts/UserPosts.context.jsx +0 -15
  401. package/src/stories/Organisms/Profile/UserPosts/UserPosts.css +0 -4
  402. package/src/stories/Organisms/Profile/UserPosts/UserPosts.jsx +0 -13
  403. package/src/stories/Organisms/Profile/UserPosts/UserPosts.stories.jsx +0 -26
  404. package/src/stories/Organisms/Profile/UserProfile/UserProfile.context.jsx +0 -15
  405. package/src/stories/Organisms/Profile/UserProfile/UserProfile.css +0 -4
  406. package/src/stories/Organisms/Profile/UserProfile/UserProfile.jsx +0 -13
  407. package/src/stories/Organisms/Profile/UserProfile/UserProfile.stories.jsx +0 -26
  408. package/src/stories/Organisms/meta_Organisms.js +0 -39
  409. package/src/stories/Pages/Page/Page.css +0 -69
  410. package/src/stories/Pages/Page/Page.jsx +0 -69
  411. package/src/stories/Pages/Page/Page.stories.js +0 -26
  412. package/src/stories/Pages/Page/Pages.js +0 -31
  413. package/src/stories/Templates/AdminDashboard/AdminDashboard.css +0 -7
  414. package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +0 -24
  415. package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +0 -20
  416. package/src/stories/Templates/CallToAction/CallToAction.css +0 -7
  417. package/src/stories/Templates/CallToAction/CallToAction.jsx +0 -24
  418. package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +0 -20
  419. package/src/stories/Templates/FeaturesList/FeaturesList.css +0 -7
  420. package/src/stories/Templates/FeaturesList/FeaturesList.jsx +0 -24
  421. package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +0 -20
  422. package/src/stories/Templates/FormSection/FormSection.css +0 -7
  423. package/src/stories/Templates/FormSection/FormSection.jsx +0 -24
  424. package/src/stories/Templates/FormSection/FormSection.stories.jsx +0 -20
  425. package/src/stories/Templates/HeroSection/HeroSection.css +0 -7
  426. package/src/stories/Templates/HeroSection/HeroSection.jsx +0 -24
  427. package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +0 -20
  428. package/src/stories/Templates/LocationInfo/LocationInfo.css +0 -7
  429. package/src/stories/Templates/LocationInfo/LocationInfo.jsx +0 -24
  430. package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +0 -20
  431. package/src/stories/Templates/ProductPage/ProductPage.css +0 -7
  432. package/src/stories/Templates/ProductPage/ProductPage.jsx +0 -24
  433. package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +0 -20
  434. package/src/stories/Templates/RegistrationPage/RegistrationPage.css +0 -7
  435. package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +0 -24
  436. package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +0 -20
  437. package/src/stories/Templates/ShoppingCart/ShoppingCart.css +0 -7
  438. package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +0 -24
  439. package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +0 -20
  440. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +0 -7
  441. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +0 -24
  442. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +0 -20
  443. package/src/stories/Templates/SignInPage/SignInPage.css +0 -7
  444. package/src/stories/Templates/SignInPage/SignInPage.jsx +0 -24
  445. package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +0 -20
  446. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +0 -7
  447. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +0 -24
  448. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +0 -20
  449. package/src/stories/Templates/Testimonials/Testimonials.css +0 -7
  450. package/src/stories/Templates/Testimonials/Testimonials.jsx +0 -24
  451. package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +0 -20
  452. package/src/stories/Templates/index.js +0 -33
  453. package/src/stories/Templates/meta_Templates.js +0 -29
  454. package/src/stories/assets/accessibility.png +0 -0
  455. package/src/stories/assets/accessibility.svg +0 -1
  456. package/src/stories/assets/addon-library.png +0 -0
  457. package/src/stories/assets/assets.png +0 -0
  458. package/src/stories/assets/avif-test-image.avif +0 -0
  459. package/src/stories/assets/context.png +0 -0
  460. package/src/stories/assets/discord.svg +0 -1
  461. package/src/stories/assets/docs.png +0 -0
  462. package/src/stories/assets/figma-plugin.png +0 -0
  463. package/src/stories/assets/github.svg +0 -1
  464. package/src/stories/assets/logo.png +0 -0
  465. package/src/stories/assets/logo.svg +0 -106
  466. package/src/stories/assets/share.png +0 -0
  467. package/src/stories/assets/styling.png +0 -0
  468. package/src/stories/assets/test.svg +0 -3
  469. package/src/stories/assets/testing.png +0 -0
  470. package/src/stories/assets/theming.png +0 -0
  471. package/src/stories/assets/tutorials.svg +0 -1
  472. package/src/stories/assets/youtube.svg +0 -1
  473. package/src/themes/README_Styles.md +0 -301
  474. package/src/themes/ThemeProvider.jsx +0 -61
  475. package/src/themes/styles/github/dark.css +0 -0
  476. package/src/themes/styles/github/light.css +0 -0
  477. package/src/themes/styles/neurons/dark.css +0 -247
  478. package/src/themes/styles/neurons/light.css +0 -170
  479. /package/{src/themes/styles/dracula/dark.css → .storybook/preview-head.html} +0 -0
  480. /package/src/{themes/styles/dracula/light.css → components/this.me/MeCard.jsx} +0 -0
@@ -0,0 +1,178 @@
1
+ //src/themes/icons/registry.tsx
2
+ import * as React from 'react';
3
+ import lucidePack, { LUCIDE_PREFIX, getLucideIcon, normalizeLucideName } from './packs/Lucide';
4
+ import muiPack, { MUI_PREFIX } from './packs/Material';
5
+
6
+ export type LazyIconComp = React.LazyExoticComponent<React.ComponentType<any>>;
7
+
8
+ export interface IconProvider {
9
+ key: string;
10
+ resolve: (name: string) => LazyIconComp;
11
+ exists?: (name: string) => boolean;
12
+ }
13
+
14
+ /**
15
+ * Icon registry (pluggable)
16
+ * -------------------------
17
+ * Providers supported out of the box:
18
+ * - lucide:* → lucide-react (tree-shakable, lightweight)
19
+ * - mui:* → @mui/icons-material (richer set; heavier)
20
+ *
21
+ * You can register more providers from your app:
22
+ * import { registerIconProvider } from '@this-gui/icons/registry';
23
+ * registerIconProvider('custom', {
24
+ * resolve: (name) => React.lazy(() => import('./MyIcon').then(m => ({ default: m.MyIcon }))),
25
+ * // optional: exists(name): boolean
26
+ * });
27
+ *
28
+ * All resolvers return a React element type (via React.lazy) so consumers can
29
+ * render them in a Suspense boundary uniformly.
30
+ */
31
+
32
+ // ---------- fallback / placeholder ----------
33
+ function emptyIconFactory(name: string = 'unknown'): LazyIconComp {
34
+ type PlaceholderProps = {
35
+ size?: number;
36
+ color?: string;
37
+ style?: React.CSSProperties;
38
+ title?: string;
39
+ [key: string]: any;
40
+ };
41
+ const Placeholder: React.FC<PlaceholderProps> = ({ size = 20, color = 'currentColor', style, title, ...rest }) => (
42
+ <svg
43
+ width={size}
44
+ height={size}
45
+ viewBox="0 0 24 24"
46
+ fill="none"
47
+ stroke={color}
48
+ strokeWidth="1.5"
49
+ strokeLinecap="round"
50
+ strokeLinejoin="round"
51
+ role={title ? 'img' : 'presentation'}
52
+ aria-hidden={title ? undefined : true}
53
+ aria-label={title || undefined}
54
+ style={{ display: 'inline-block', verticalAlign: 'middle', ...style }}
55
+ {...rest}
56
+ >
57
+ {title ? <title>{title}</title> : null}
58
+ <circle cx="12" cy="12" r="9" opacity="0.25" />
59
+ <path d="M9.5 9a3 3 0 0 1 5 2c0 2-3 2-3 4" />
60
+ <circle cx="12" cy="17" r="0.75" />
61
+ </svg>
62
+ );
63
+ Placeholder.displayName = `IconPlaceholder(${String(name)})`;
64
+ const Lazy = React.lazy(() => Promise.resolve({ default: Placeholder }));
65
+ return Lazy as LazyIconComp;
66
+ }
67
+
68
+ // ---------- helpers ----------
69
+ const hasPrefix = (raw: string, prefix: string): boolean =>
70
+ raw.toLowerCase().startsWith(prefix.toLowerCase() + ':') ||
71
+ raw.toLowerCase().startsWith(prefix.toLowerCase() + '/');
72
+
73
+ const stripPrefix = (raw: string, prefix: string): string =>
74
+ raw.replace(new RegExp(`^${prefix}[:/.-]\\s*`, 'i'), '');
75
+
76
+ // ---------- built-in providers ----------
77
+ /**
78
+ * Lucide provider adapter
79
+ * - Dynamically import lucide-react and resolve the named export at runtime.
80
+ */
81
+ const lucideLazyCache = new Map<string, LazyIconComp>();
82
+
83
+ const lucideProvider: IconProvider = {
84
+ key: LUCIDE_PREFIX,
85
+ resolve: (rawName: string) => {
86
+ const key = stripPrefix(rawName, LUCIDE_PREFIX);
87
+ const pascal = normalizeLucideName(key);
88
+
89
+ if (lucideLazyCache.has(pascal)) {
90
+ return lucideLazyCache.get(pascal)!;
91
+ }
92
+
93
+ const Lazy = React.lazy(async () => {
94
+ const mod: any = await import('lucide-react');
95
+ const lib: Record<string, any> = (typeof mod.default === 'object' && mod.default) ? mod.default : mod;
96
+ const Comp = lib[pascal] ?? lib.HelpCircle;
97
+ return { default: Comp };
98
+ });
99
+
100
+ lucideLazyCache.set(pascal, Lazy);
101
+ return Lazy as LazyIconComp;
102
+ },
103
+ exists: (name: string) => {
104
+ // Best-effort check using the already-imported pack (fast path)
105
+ try {
106
+ const Comp = getLucideIcon(stripPrefix(name, LUCIDE_PREFIX));
107
+ return Boolean(Comp);
108
+ } catch {
109
+ return false;
110
+ }
111
+ },
112
+ };
113
+
114
+ /**
115
+ * MUI provider adapter
116
+ * - Material pack already returns React.lazy components via get(name)
117
+ */
118
+ const muiProvider: IconProvider = {
119
+ key: MUI_PREFIX,
120
+ resolve: (rawName: string) => {
121
+ const Comp = muiPack.get(rawName) as LazyIconComp | undefined;
122
+ return Comp ?? emptyIconFactory(rawName);
123
+ },
124
+ exists: (name: string) => Boolean(muiPack.has?.(name)),
125
+ };
126
+
127
+ // ---------- pluggable registry ----------
128
+ const _providers: Map<string, IconProvider> = new Map([
129
+ [lucideProvider.key, lucideProvider],
130
+ [muiProvider.key, muiProvider],
131
+ ]);
132
+
133
+ export function registerIconProvider(key: string, provider: IconProvider): void {
134
+ if (!key || !provider || typeof provider.resolve !== 'function') {
135
+ throw new Error('[icons/registry] registerIconProvider(key, { resolve }) requires a valid resolver');
136
+ }
137
+ _providers.set(String(key).toLowerCase(), { ...provider, key });
138
+ }
139
+
140
+ export function getRegisteredProviders(): string[] {
141
+ return Array.from(_providers.keys());
142
+ }
143
+
144
+ // ---------- main resolver ----------
145
+ export function lazyIcon(name: string): LazyIconComp {
146
+ const raw = String(name || '');
147
+ if (!raw) return emptyIconFactory('empty');
148
+
149
+ // Try prefixed first (e.g., mui:CameraAlt, lucide:home)
150
+ for (const [key, provider] of _providers) {
151
+ if (hasPrefix(raw, key)) {
152
+ try {
153
+ return provider.resolve(raw);
154
+ } catch {
155
+ return emptyIconFactory(raw);
156
+ }
157
+ }
158
+ }
159
+
160
+ // No prefix → choose a default order: prefer MUI (richer set), then Lucide
161
+ try {
162
+ return muiProvider.resolve(raw);
163
+ } catch {
164
+ try {
165
+ return lucideProvider.resolve(raw);
166
+ } catch {
167
+ return emptyIconFactory(raw);
168
+ }
169
+ }
170
+ }
171
+
172
+ export const PROVIDERS: { lucide: string; mui: string } = {
173
+ lucide: lucideProvider.key,
174
+ mui: muiProvider.key,
175
+ };
176
+
177
+ export { lucidePack, muiPack };
178
+ export default { lazyIcon, registerIconProvider, getRegisteredProviders, PROVIDERS };
@@ -0,0 +1,116 @@
1
+ // src/themes/index.js
2
+ // Global tokens shared by all themes (radius, spacing, zIndex, etc.)
3
+ import globalTokens from './tokens/global.tokens.json';
4
+ import { makeMuiTheme } from './fromTokens';
5
+ // --- Built-in theme: neurons (manifest-driven) -------------------------------
6
+ import neuronsManifest from './tokens/neurons/manifest.json';
7
+ import neuronsLight from './tokens/neurons/light.tokens.json';
8
+ import neuronsDark from './tokens/neurons/dark.tokens.json';
9
+ /**
10
+ * Registry of built-in themes shipped with the library.
11
+ * Each entry couples a human-readable manifest (metadata) with the concrete
12
+ * token payloads for its available modes.
13
+ *
14
+ * NOTE: We import token JSONs statically so bundlers (Vite) can include them.
15
+ * The manifest gives us metadata (name, description, author, preview) and
16
+ * declares the available modes. If you add another built-in theme, mirror this
17
+ * structure.
18
+ */
19
+ const BUILT_IN = {
20
+ neurons: {
21
+ manifest: neuronsManifest,
22
+ tokensByMode: {
23
+ light: neuronsLight,
24
+ dark: neuronsDark,
25
+ },
26
+ },
27
+ };
28
+ // -----------------------------------------------------------------------------
29
+ // Factories
30
+ // -----------------------------------------------------------------------------
31
+ /** Create a MUI theme straight from token JSON + a mode. */
32
+ export const createThemeFromTokens = (tokens, mode = 'light') => {
33
+ return makeMuiTheme(globalTokens, tokens, mode);
34
+ };
35
+ /**
36
+ * Create a MUI theme from a manifest entry and an optional preloaded map
37
+ * { light, dark, ... } of token JSON objects. For built-ins we pass them
38
+ * statically; for custom themes you can resolve them however you prefer.
39
+ */
40
+ export const createThemeFromManifest = (manifest, mode = 'light', tokensByMode) => {
41
+ const m = manifest || {};
42
+ const chosenMode = mode || m.defaultMode || 'light';
43
+ // Prefer explicitly provided tokensByMode (preloaded).
44
+ const tokens =
45
+ tokensByMode?.[chosenMode] ??
46
+ // Optional: if your manifest inlines tokens under modes[mode].inlineTokens
47
+ m?.modes?.[chosenMode]?.inlineTokens ??
48
+ null;
49
+
50
+ if (!tokens) {
51
+ // Fallback to light/dark if available; last resort throw a helpful error.
52
+ const fallback =
53
+ tokensByMode?.light ??
54
+ tokensByMode?.dark ??
55
+ null;
56
+ if (!fallback) {
57
+ throw new Error(
58
+ `[themes] No tokens found for mode "${chosenMode}". ` +
59
+ `Provide a tokensByMode map or inline tokens in the manifest.`
60
+ );
61
+ }
62
+ return createThemeFromTokens(fallback, chosenMode);
63
+ }
64
+ return createThemeFromTokens(tokens, chosenMode);
65
+ };
66
+ // -----------------------------------------------------------------------------
67
+ // Public API
68
+ // -----------------------------------------------------------------------------
69
+ /**
70
+ * getTheme
71
+ * - Prefer passing a manifest and (optionally) a tokensByMode map for custom themes.
72
+ * - For built-ins, use key: 'neurons' with a mode, or legacy keys 'neurons-light'/'neurons-dark'.
73
+ *
74
+ * Examples:
75
+ * getTheme({ key: 'neurons', mode: 'dark' })
76
+ * getTheme({ manifest, mode: 'light', tokensByMode: { light, dark } })
77
+ * getTheme({ tokens, mode: 'light' }) // direct tokens
78
+ */
79
+ export const getTheme = ({ key, mode, manifest, tokens, tokensByMode } = {}) => {
80
+ // 1) Direct tokens take precedence
81
+ if (tokens) return createThemeFromTokens(tokens, mode || 'light');
82
+ // 2) Manifest-driven (custom or built-in)
83
+ if (manifest) return createThemeFromManifest(manifest, mode || 'light', tokensByMode);
84
+ // 3) Built-ins by key (preferred: 'neurons' + mode)
85
+ if (key && BUILT_IN[key]) {
86
+ const entry = BUILT_IN[key];
87
+ return createThemeFromManifest(entry.manifest, mode || 'light', entry.tokensByMode);
88
+ }
89
+ // 4) Legacy keys support ('neurons-light' | 'neurons-dark')
90
+ if (key === 'neurons-light') {
91
+ return createThemeFromManifest(BUILT_IN.neurons.manifest, 'light', BUILT_IN.neurons.tokensByMode);
92
+ }
93
+ if (key === 'neurons-dark') {
94
+ return createThemeFromManifest(BUILT_IN.neurons.manifest, 'dark', BUILT_IN.neurons.tokensByMode);
95
+ }
96
+ // 5) Default fallback → neurons dark
97
+ return createThemeFromManifest(BUILT_IN.neurons.manifest, 'dark', BUILT_IN.neurons.tokensByMode);
98
+ };
99
+
100
+ /**
101
+ * AVAILABLE_THEMES
102
+ * - Minimal info for theme pickers / galleries. Pulled from each manifest.
103
+ */
104
+ export const AVAILABLE_THEMES = Object.entries(BUILT_IN).flatMap(([familyId, entry]) => {
105
+ const m = entry.manifest || {};
106
+ const modes = Object.keys(m.modes || { light: {}, dark: {} });
107
+ return modes.map((mode) => ({
108
+ key: familyId, // ← Add this line
109
+ id: `${familyId}-${mode}`,
110
+ family: familyId,
111
+ name: `${m.name || familyId} ${mode === 'light' ? 'Light' : 'Dark'}`,
112
+ mode,
113
+ // opcional: pasa el manifest completo si tu selector lo usa
114
+ manifest: m,
115
+ }));
116
+ });
@@ -0,0 +1,116 @@
1
+ // src/themes/theme.d.ts
2
+ // src/themes/theme.d.ts
3
+ // ---------- This.GUI Theme Manifest types (library-level, not part of MUI) ----------
4
+ export type ThemeIcon =
5
+ | { type: 'mui' | 'lucide'; value: string } // icon token from a known set
6
+ | { type: 'url'; value: string } // URL to an image (svg/png)
7
+ | { type: 'svg'; value: string } // inline SVG markup
8
+ | { type: 'data'; value: string }; // data URI
9
+
10
+ /**
11
+ * ThemeManifest
12
+ * Describes a theme package and the paths to its light/dark token files.
13
+ * This is metadata for discovery/marketplace; it is intentionally separate
14
+ * from the runtime MUI Theme type augmentation below.
15
+ */
16
+ export type ThemeManifest = {
17
+ id: string;
18
+ name: string;
19
+ description?: string;
20
+ author?: string;
21
+ version?: string;
22
+ license?: string;
23
+ homepage?: string;
24
+ repository?: { type: string; url: string };
25
+ tags?: string[];
26
+ createdAt?: string;
27
+ updatedAt?: string;
28
+ icon?: ThemeIcon; // Optional theme icon for listings
29
+ modes: {
30
+ light: { path: string };
31
+ dark: { path: string };
32
+ };
33
+ };
34
+ import '@mui/material/styles';
35
+ declare module '@mui/material/styles' {
36
+ // -----------------------------
37
+ // Palette extensions
38
+ // -----------------------------
39
+ interface TypeBackground {
40
+ /** Custom background color for navigation surfaces (e.g., AppBar). */
41
+ nav?: string;
42
+ }
43
+
44
+ interface Palette {
45
+ /** Default/iconic color separate from text/action semantics. */
46
+ icon: Palette['primary'];
47
+ /** Link colors (normal + optional visited). */
48
+ link: { main: string; visited?: string };
49
+ }
50
+ interface PaletteOptions {
51
+ icon?: PaletteOptions['primary'];
52
+ link?: { main: string; visited?: string };
53
+ }
54
+
55
+ // -----------------------------
56
+ // Typography extensions
57
+ // -----------------------------
58
+ interface TypographyVariants {
59
+ /** Optional helper scale for line-heights used by generators/utilities. */
60
+ lineHeights?: {
61
+ tight?: number;
62
+ normal?: number;
63
+ relaxed?: number;
64
+ [key: string]: number | undefined;
65
+ };
66
+ }
67
+ interface TypographyVariantsOptions {
68
+ lineHeights?: {
69
+ tight?: number;
70
+ normal?: number;
71
+ relaxed?: number;
72
+ [key: string]: number | undefined;
73
+ };
74
+ }
75
+
76
+ // -----------------------------
77
+ // Theme extensions
78
+ // -----------------------------
79
+ interface Theme {
80
+ /** Runtime layout insets coordinated by NavBar/Drawers (pixels). */
81
+ layout: {
82
+ insets: { left: number; right: number; nav: number };
83
+ };
84
+ /** Callback exposed by GuiProvider to update insets at runtime. */
85
+ updateInsets?: (v: Partial<{ left: number; right: number; nav: number }>) => void;
86
+ /** Bag for tokens that don't map 1:1 to MUI. */
87
+ custom?: {
88
+ border?: string;
89
+ gradients?: unknown;
90
+ overlays?: unknown;
91
+ iconSizes?: Record<string, unknown>;
92
+ lineHeights?: Record<string, unknown>;
93
+ [key: string]: unknown;
94
+ };
95
+ /** (Optional) legacy insets for backwards compatibility. */
96
+ insets?: { left?: number; right?: number; nav?: number };
97
+ }
98
+
99
+ interface ThemeOptions {
100
+ layout?: {
101
+ insets?: Partial<{ left: number; right: number; nav: number }>;
102
+ };
103
+ updateInsets?: (v: Partial<{ left: number; right: number; nav: number }>) => void;
104
+ custom?: {
105
+ border?: string;
106
+ gradients?: unknown;
107
+ overlays?: unknown;
108
+ iconSizes?: Record<string, unknown>;
109
+ lineHeights?: Record<string, unknown>;
110
+ [key: string]: unknown;
111
+ };
112
+ insets?: Partial<{ left: number; right: number; nav: number }>;
113
+ }
114
+ }
115
+
116
+ export {};
@@ -0,0 +1,107 @@
1
+ {
2
+ "$description": "Global design tokens for This.GUI — base values shared across all themes.",
3
+ "radius": {
4
+ "md": {
5
+ "$type": "radius",
6
+ "$value": "10px"
7
+ }
8
+ },
9
+ "spacing": {
10
+ "base": {
11
+ "$type": "spacing",
12
+ "$value": "8"
13
+ }
14
+ },
15
+ "border": {
16
+ "default": {
17
+ "$type": "color",
18
+ "$value": "rgba(0, 0, 0, 0.08)"
19
+ }
20
+ },
21
+ "font": {
22
+ "family": {
23
+ "$type": "fontFamily",
24
+ "$value": "Roboto, sans-serif"
25
+ },
26
+ "weightBold": {
27
+ "$type": "fontWeight",
28
+ "$value": "700"
29
+ },
30
+ "weightSemibold": {
31
+ "$type": "fontWeight",
32
+ "$value": "600"
33
+ },
34
+ "sizeBase": {
35
+ "$type": "fontSize",
36
+ "$value": "16"
37
+ },
38
+ "letterTight": {
39
+ "$type": "letterSpacing",
40
+ "$value": "-0.01em"
41
+ }
42
+ },
43
+ "color": {
44
+ "$description": "Extended semantic colors, gradients, overlays",
45
+ "success": { "$type": "color", "$value": "#4caf50" },
46
+ "warning": { "$type": "color", "$value": "#ff9800" },
47
+ "error": { "$type": "color", "$value": "#f44336" },
48
+ "info": { "$type": "color", "$value": "#2196f3" },
49
+ "gradientPrimary": { "$type": "gradient", "$value": "linear-gradient(135deg, #00aa96 0%, #008c7d 100%)" }
50
+ },
51
+ "insets": {
52
+ "$description": "Offsets reserved for permanent drawers",
53
+ "$type": "object",
54
+ "left": {
55
+ "$type": "size",
56
+ "$value": "0px"
57
+ },
58
+ "right": {
59
+ "$type": "size",
60
+ "$value": "0px"
61
+ }
62
+ },
63
+ "shadows": {
64
+ "$description": "Consistent elevation levels, AR/3D ready",
65
+ "sm": { "$type": "shadow", "$value": "0px 1px 2px rgba(0, 0, 0, 0.05)" },
66
+ "md": { "$type": "shadow", "$value": "0px 3px 6px rgba(0, 0, 0, 0.1)" },
67
+ "lg": { "$type": "shadow", "$value": "0px 8px 16px rgba(0, 0, 0, 0.15)" }
68
+ },
69
+ "zIndex": {
70
+ "$description": "Advanced layering control",
71
+ "nav": { "$type": "number", "$value": 1100 },
72
+ "modal": { "$type": "number", "$value": 1300 },
73
+ "tooltip": { "$type": "number", "$value": 1500 }
74
+ },
75
+ "breakpoints": {
76
+ "$description": "Declarative responsive interfaces",
77
+ "xs": { "$type": "breakpoint", "$value": "0px" },
78
+ "sm": { "$type": "breakpoint", "$value": "600px" },
79
+ "md": { "$type": "breakpoint", "$value": "900px" },
80
+ "lg": { "$type": "breakpoint", "$value": "1200px" },
81
+ "xl": { "$type": "breakpoint", "$value": "1536px" }
82
+ },
83
+ "motion": {
84
+ "$description": "Animation and transition tokens",
85
+ "durationFast": { "$type": "duration", "$value": "150ms" },
86
+ "durationBase": { "$type": "duration", "$value": "300ms" },
87
+ "easingStandard": { "$type": "easing", "$value": "cubic-bezier(0.4, 0, 0.2, 1)" }
88
+ },
89
+ "opacity": {
90
+ "$description": "Universal interaction effects",
91
+ "disabled": { "$type": "opacity", "$value": "0.38" },
92
+ "hover": { "$type": "opacity", "$value": "0.08" },
93
+ "focus": { "$type": "opacity", "$value": "0.12" }
94
+ },
95
+ "icon": {
96
+ "$description": "Scalable icon sizes for generated GUIs",
97
+ "sm": { "$type": "size", "$value": "16px" },
98
+ "md": { "$type": "size", "$value": "24px" },
99
+ "lg": { "$type": "size", "$value": "32px" }
100
+ },
101
+ "lineHeight": {
102
+ "$description": "Better typographic control",
103
+ "tight": { "$type": "lineHeight", "$value": "1.1" },
104
+ "base": { "$type": "lineHeight", "$value": "1.5" },
105
+ "relaxed": { "$type": "lineHeight", "$value": "1.75" }
106
+ }
107
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "$description": "Neurons Dark Theme Tokens — overrides applied on top of global.tokens.json",
3
+ "id": "neurons-dark",
4
+ "color": {
5
+ "primary": {
6
+ "$type": "color",
7
+ "$value": "#90caf9"
8
+ },
9
+ "secondary": {
10
+ "$type": "color",
11
+ "$value": "#f48fb1"
12
+ },
13
+ "icon": {
14
+ "$type": "color",
15
+ "$value": "#a8a8a8"
16
+ },
17
+
18
+ "background": {
19
+ "default": { "$type": "color", "$value": "#121214" },
20
+ "paper": { "$type": "color", "$value": "#181a1c" },
21
+ "nav": { "$type": "color", "$value": "rgba(18,18,20,0.95)" }
22
+ },
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
+ }
45
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$description": "Design tokens for neurons.light theme — part of This.GUI ecosystem",
3
+ "id": "neurons-light",
4
+ "extends": "global.tokens.json",
5
+ "color": {
6
+ "primary": {
7
+ "$type": "color",
8
+ "$value": "#0a3a42"
9
+ },
10
+ "secondary": {
11
+ "$type": "color",
12
+ "$value": "#e5396f"
13
+ },
14
+ "icon": {
15
+ "$type": "color",
16
+ "$value": "#5e5e5e"
17
+ },
18
+ "default": {
19
+ "$type": "color",
20
+ "$value": "#f8f9fa"
21
+ },
22
+ "paper": {
23
+ "$type": "color",
24
+ "$value": "#ffffff"
25
+ },
26
+ "nav": {
27
+ "$type": "color",
28
+ "$value": "#fdfdfd"
29
+ },
30
+ "textPrimary": {
31
+ "$type": "color",
32
+ "$value": "#111111"
33
+ },
34
+ "textSecondary": {
35
+ "$type": "color",
36
+ "$value": "#444444"
37
+ },
38
+ "link": {
39
+ "$type": "color",
40
+ "$value": "#008c7d"
41
+ },
42
+ "linkVisited": {
43
+ "$type": "color",
44
+ "$value": "#006e64"
45
+ },
46
+ "border": {
47
+ "$type": "color",
48
+ "$value": "rgba(0,0,0,0.08)"
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "neurons.me",
3
+ "name": "neurons.me",
4
+ "description": "A modern, flexible theme for Neuroverse.",
5
+ "author": "suiGn",
6
+ "version": "1.0.0",
7
+ "license": "MIT",
8
+ "homepage": "https://neurons.me/themes/neurons",
9
+ "repository": { "type": "git", "url": "https://github.com/neurons/me-themes.git" },
10
+ "tags": ["official", "default"],
11
+ "createdAt": "2025-09-16T00:00:00.000Z",
12
+ "updatedAt": "2025-09-16T00:00:00.000Z",
13
+
14
+ "icon": {
15
+ "type": "mui",
16
+ "value": "Palette"
17
+ },
18
+
19
+ "modes": {
20
+ "light": { "path": "./light.tokens.json" },
21
+ "dark": { "path": "./dark.tokens.json" }
22
+ }
23
+ }
@@ -0,0 +1,32 @@
1
+ // src/types/theme.d.ts
2
+ import '@mui/material/styles';
3
+ // Module augmentation so TS knows about our theme extensions injected by GuiProvider
4
+ declare module '@mui/material/styles' {
5
+ /** Insets reported at runtime by NavBar/Drawers and read by layout components */
6
+ interface Insets {
7
+ left: number;
8
+ right: number;
9
+ nav: number;
10
+ }
11
+
12
+ /** Runtime theme (what useTheme() returns) */
13
+ interface Theme {
14
+ layout: { insets: Insets };
15
+ /** Callback to update insets; injected by GuiProvider */
16
+ updateInsets?: (next: Partial<Insets>) => void;
17
+ /** Optional legacy field for back-compat (some code reads theme.insets) */
18
+ insets?: Partial<Insets>;
19
+ /** Parking spot for all design tokens not mapped natively to MUI */
20
+ custom: Record<string, any>;
21
+ }
22
+
23
+ /** Accepted options when creating the theme */
24
+ interface ThemeOptions {
25
+ layout?: { insets?: Partial<Insets> };
26
+ updateInsets?: (next: Partial<Insets>) => void;
27
+ /** Optional legacy field for back-compat */
28
+ insets?: Partial<Insets>;
29
+ /** Parking spot for all design tokens not mapped natively to MUI */
30
+ custom?: Record<string, any>;
31
+ }
32
+ }