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,223 @@
1
+ import React, { useEffect, useRef, useState } from 'react';
2
+ import { Box, Typography, Paper, TextField, IconButton, Avatar, Divider } from '@mui/material';
3
+ import { useTheme, alpha } from '@mui/material/styles';
4
+ import SendIcon from '@mui/icons-material/Send';
5
+ import SmartToyIcon from '@mui/icons-material/SmartToy';
6
+ import PersonIcon from '@mui/icons-material/Person';
7
+
8
+ /**
9
+ * FullChatBot (this.GUI)
10
+ * A full-page, theme-aware chat surface.
11
+ *
12
+ * Props (all optional):
13
+ * - title: string (header title)
14
+ * - initialMessages: Array<{ id?: string, role: 'user'|'bot', text: string }>
15
+ * - onSend: async (text, history) => Promise<string | { text: string } | Array<{ text: string }>> (required to produce replies).
16
+ * - onError: function (error) => void
17
+ * - placeholder: string
18
+ * - headerIcon: ReactNode (defaults to SmartToy)
19
+ * - heightOffset: number|string // extra space to subtract besides navbar height
20
+ * - maxWidth: number|string // container max width
21
+ * - bleedTop: number|string // optionally pull the chat upward (compensate parent padding)
22
+ */
23
+ export default function FullChatBot({
24
+ title = 'SupportBot Example',
25
+ initialMessages = [ { id: 'b1', role: 'bot', text: "Hi! I'm your Support Bot. How can I help today?" } ],
26
+ onSend,
27
+ onError,
28
+ placeholder = 'Type your message…',
29
+ headerIcon,
30
+ heightOffset = 0,
31
+ maxWidth = 1400,
32
+ bleedTop = 0,
33
+ }) {
34
+ const theme = useTheme();
35
+
36
+ // Colors and surfaces from theme
37
+ const mode = theme?.palette?.mode || 'dark';
38
+ const linkMain = theme?.palette?.link?.main || 'rgb(0,170,150)';
39
+ const borderColor = theme?.custom?.border || (mode === 'dark' ? 'rgba(255,255,255,0.14)' : 'rgba(0,0,0,0.12)');
40
+ const surface = theme?.palette?.background?.paper || (mode === 'dark' ? 'rgb(24,26,28)' : '#ffffff');
41
+ const textPrimary = theme?.palette?.text?.primary || (mode === 'dark' ? '#fff' : '#111');
42
+ const bubbleUserBg = alpha(linkMain, 0.14);
43
+ const bubbleUserBorder = alpha(linkMain, 0.35);
44
+ const bubbleBotBg = mode === 'dark' ? alpha('#ffffff', 0.06) : alpha('#000000', 0.04);
45
+ const bubbleBotBorder = mode === 'dark' ? alpha('#ffffff', 0.12) : alpha('#000000', 0.08);
46
+
47
+ const [messages, setMessages] = useState(() => initialMessages);
48
+ const [input, setInput] = useState('');
49
+ const [isTyping, setIsTyping] = useState(false);
50
+ const listRef = useRef(null);
51
+
52
+ // Auto-scroll to bottom when messages update
53
+ useEffect(() => {
54
+ const el = listRef.current;
55
+ if (el) el.scrollTop = el.scrollHeight;
56
+ }, [messages, isTyping]);
57
+
58
+ const handleSend = async () => {
59
+ const trimmed = input.trim();
60
+ if (!trimmed) return;
61
+ const userMsg = { id: `u-${Date.now()}`, role: 'user', text: trimmed };
62
+ setMessages((m) => [...m, userMsg]);
63
+ setInput('');
64
+
65
+ setIsTyping(true);
66
+ try {
67
+ if (typeof onSend !== 'function') {
68
+ console.warn('[FullChatBot] onSend prop is required to generate replies.');
69
+ setIsTyping(false);
70
+ return;
71
+ }
72
+ let next = await onSend(trimmed, [...messages, userMsg]);
73
+ const toArray = Array.isArray(next) ? next : [next];
74
+ const prepared = toArray
75
+ .filter(Boolean)
76
+ .map((n, idx) => ({ id: `b-${Date.now()}-${idx}`, role: 'bot', text: typeof n === 'string' ? n : (n?.text || '') }));
77
+ // small UX delay
78
+ setTimeout(() => {
79
+ setMessages((m) => [...m, ...prepared]);
80
+ setIsTyping(false);
81
+ }, 200);
82
+ } catch (e) {
83
+ if (typeof onError === 'function') try { onError(e); } catch (_) {}
84
+ setMessages((m) => [...m, { id: `b-${Date.now()}`, role: 'bot', text: 'Sorry, something went wrong. Please try again.' }]);
85
+ setIsTyping(false);
86
+ }
87
+ };
88
+
89
+ const onKeyDown = (e) => {
90
+ if (e.key === 'Enter' && !e.shiftKey) {
91
+ e.preventDefault();
92
+ handleSend();
93
+ }
94
+ };
95
+
96
+ const bubbleStyles = (role) => {
97
+ const isUser = role === 'user';
98
+ return {
99
+ alignSelf: isUser ? 'flex-end' : 'flex-start',
100
+ maxWidth: '78%',
101
+ padding: '10px 12px',
102
+ borderRadius: 12,
103
+ background: isUser ? bubbleUserBg : bubbleBotBg,
104
+ border: `1px solid ${isUser ? bubbleUserBorder : bubbleBotBorder}`,
105
+ color: 'inherit',
106
+ wordBreak: 'break-word'
107
+ };
108
+ };
109
+
110
+ const HeaderIcon = headerIcon || <SmartToyIcon sx={{ color: linkMain }} />;
111
+
112
+ // Full height relative to viewport minus navbar and optional offset
113
+ const topCalc = `calc(97vh - var(--nav-height, 56px) - ${typeof heightOffset === 'number' ? `${heightOffset}px` : String(heightOffset)})`;
114
+ const mtBleed = bleedTop ? (typeof bleedTop === 'number' ? `${-bleedTop}px` : `calc(0px - ${String(bleedTop)})`) : 0;
115
+
116
+ return (
117
+ <Box sx={{ width: '100%', maxWidth, mx: 'auto', height: topCalc, mt: mtBleed, display: 'flex', flexDirection: 'column', color: textPrimary, colorScheme: mode }}>
118
+ {/* Header */}
119
+ <Box
120
+ sx={{
121
+ display: 'flex',
122
+ alignItems: 'center',
123
+ gap: 1,
124
+ px: 2,
125
+ py: 1,
126
+ border: '1px solid',
127
+ borderColor: borderColor,
128
+ borderBottom: 'none',
129
+ borderTopLeftRadius: 8,
130
+ borderTopRightRadius: 8,
131
+ background: surface,
132
+ }}
133
+ >
134
+ {HeaderIcon}
135
+ <Typography variant="h6" sx={{ fontWeight: 700 }}>{title}</Typography>
136
+ </Box>
137
+
138
+ {/* Chat container fills remaining space */}
139
+ <Paper elevation={0} sx={{
140
+ flex: 1,
141
+ display: 'flex',
142
+ flexDirection: 'column',
143
+ border: '1px solid',
144
+ borderColor: borderColor,
145
+ borderRadius: 2,
146
+ background: surface,
147
+ minHeight: 360
148
+ }}>
149
+ {/* Conversation */}
150
+ <Box ref={listRef} sx={{
151
+ flex: 1,
152
+ overflowY: 'auto',
153
+ p: 2,
154
+ display: 'flex',
155
+ flexDirection: 'column',
156
+ gap: 1.2
157
+ }}>
158
+ {messages.map((m) => (
159
+ <Box key={m.id} sx={{ display: 'flex', gap: 1, alignItems: 'flex-start', flexDirection: m.role === 'user' ? 'row-reverse' : 'row' }}>
160
+ <Avatar sx={{ width: 28, height: 28, bgcolor: m.role === 'user' ? 'rgba(0,170,150,0.18)' : 'rgba(255,255,255,0.08)', border: '1px solid', borderColor: m.role === 'user' ? 'rgba(0,170,150,0.4)' : 'rgba(255,255,255,0.18)' }}>
161
+ {m.role === 'user' ? <PersonIcon fontSize="small" /> : <SmartToyIcon fontSize="small" />}
162
+ </Avatar>
163
+ <Box sx={bubbleStyles(m.role)}>
164
+ <Typography variant="body2">{m.text}</Typography>
165
+ </Box>
166
+ </Box>
167
+ ))}
168
+ {isTyping && (
169
+ <Box sx={{ display: 'flex', gap: 1, alignItems: 'center' }}>
170
+ <Avatar sx={{ width: 28, height: 28, bgcolor: 'rgba(255,255,255,0.08)', border: '1px solid rgba(255,255,255,0.18)' }}>
171
+ <SmartToyIcon fontSize="small" />
172
+ </Avatar>
173
+ <Box sx={{ ...bubbleStyles('bot'), display: 'inline-flex', gap: 1 }}>
174
+ <Dot /> <Dot delay={120} /> <Dot delay={240} />
175
+ </Box>
176
+ </Box>
177
+ )}
178
+ </Box>
179
+ <Divider />
180
+ {/* Composer */}
181
+ <Box sx={{ display: 'flex', alignItems: 'center', p: 1 }}>
182
+ <TextField
183
+ value={input}
184
+ onChange={(e) => setInput(e.target.value)}
185
+ onKeyDown={onKeyDown}
186
+ placeholder={placeholder}
187
+ variant="standard"
188
+ fullWidth
189
+ InputProps={{ disableUnderline: true }}
190
+ sx={{
191
+ mx: 1,
192
+ px: 1.5,
193
+ py: 1,
194
+ borderRadius: 1,
195
+ border: '1px solid',
196
+ borderColor: borderColor,
197
+ background: mode === 'dark' ? alpha('#ffffff', 0.04) : alpha('#000000', 0.03)
198
+ }}
199
+ />
200
+ <IconButton color="primary" onClick={handleSend} aria-label="send">
201
+ <SendIcon />
202
+ </IconButton>
203
+ </Box>
204
+ </Paper>
205
+ </Box>
206
+ );
207
+ }
208
+
209
+ function Dot({ delay = 0 }) {
210
+ const [on, setOn] = useState(false);
211
+ useEffect(() => {
212
+ const id = setInterval(() => setOn((v) => !v), 350);
213
+ return () => clearInterval(id);
214
+ }, []);
215
+ return (
216
+ <Box component="span" sx={{
217
+ width: 6, height: 6, borderRadius: 1,
218
+ display: 'inline-block',
219
+ background: on ? 'rgba(255,255,255,0.8)' : 'rgba(255,255,255,0.35)',
220
+ transition: 'opacity 200ms ease',
221
+ }} />
222
+ );
223
+ }
@@ -0,0 +1,33 @@
1
+ // src/components/Pages/CodeBlock.jsx
2
+ import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';
3
+ import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism';
4
+ import { oneLight } from 'react-syntax-highlighter/dist/esm/styles/prism';
5
+ import { useTheme } from '@mui/material/styles';
6
+
7
+ export default function CodeBlock({ children, language = "javascript" }) {
8
+ const theme = useTheme();
9
+ const isDark = theme.palette.mode === "dark";
10
+
11
+ return (
12
+ <SyntaxHighlighter
13
+ language={language}
14
+ style={isDark ? oneDark : oneLight}
15
+ customStyle={{
16
+ borderRadius: "6px",
17
+ fontSize: "0.85rem",
18
+ padding: "1rem",
19
+ backgroundColor: isDark ? "#1e1e1e" : "#f5f5f5",
20
+ border: isDark ? "1px solid rgba(255,255,255,0.1)" : "1px solid #ddd",
21
+ color: isDark ? "#f8f8f2" : "#2d2d2d",
22
+ textShadow: "none",
23
+ }}
24
+ codeTagProps={{
25
+ style: {
26
+ textShadow: "none", // Fuerza remover cualquier sombra
27
+ }
28
+ }}
29
+ >
30
+ {children.trim()}
31
+ </SyntaxHighlighter>
32
+ );
33
+ }
@@ -0,0 +1,92 @@
1
+ import { useTheme } from '@mui/material/styles';
2
+ import { Box } from '@mui/material';
3
+
4
+ const variantStyles = {
5
+ warning: {
6
+ light: {
7
+ background: '#fff8e1',
8
+ border: '#f4b400',
9
+ color: '#f4b400',
10
+ },
11
+ dark: {
12
+ background: '#2c1a00',
13
+ border: '#f4b400',
14
+ color: '#f4b400',
15
+ },
16
+ },
17
+ info: {
18
+ light: {
19
+ background: '#e3f2fd',
20
+ border: '#2196f3',
21
+ color: '#0d47a1',
22
+ },
23
+ dark: {
24
+ background: '#0d2b45',
25
+ border: '#64b5f6',
26
+ color: '#90caf9',
27
+ },
28
+ },
29
+ success: {
30
+ light: {
31
+ background: '#e8f5e9',
32
+ border: '#4caf50',
33
+ color: '#2e7d32',
34
+ },
35
+ dark: {
36
+ background: '#1b3c28',
37
+ border: '#66bb6a',
38
+ color: '#a5d6a7',
39
+ },
40
+ },
41
+ alert: {
42
+ light: {
43
+ background: '#ffebee',
44
+ border: '#f44336',
45
+ color: '#b71c1c',
46
+ },
47
+ dark: {
48
+ background: '#3d0000',
49
+ border: '#ef5350',
50
+ color: '#ef9a9a',
51
+ },
52
+ },
53
+ neutral: {
54
+ light: {
55
+ background: '#f5f5f5',
56
+ border: '#9e9e9e',
57
+ color: '#424242',
58
+ },
59
+ dark: {
60
+ background: '#2c2c2c',
61
+ border: '#bdbdbd',
62
+ color: '#e0e0e0',
63
+ },
64
+ },
65
+ };
66
+
67
+ export default function Callout({
68
+ children = "This repository is in continuous development and may be unstable.",
69
+ variant = "warning", // default variant
70
+ }) {
71
+ const theme = useTheme();
72
+ const mode = theme.palette.mode;
73
+ const styles = variantStyles[variant]?.[mode] || variantStyles.warning.light;
74
+
75
+ return (
76
+ <Box
77
+ sx={{
78
+ backgroundColor: styles.background,
79
+ border: `1px solid ${styles.border}`,
80
+ color: styles.color,
81
+ padding: '10px 16px',
82
+ borderRadius: '4px',
83
+ fontWeight: 'bold',
84
+ marginBottom: '1.5rem',
85
+ textAlign: 'center',
86
+ fontSize: '0.9rem',
87
+ }}
88
+ >
89
+ {children}
90
+ </Box>
91
+ );
92
+ }
@@ -0,0 +1,29 @@
1
+ import { Grid, Box, Typography } from '@mui/material';
2
+
3
+ /**
4
+ * PageGrid
5
+ * Standardized grid container for organizing content in pages.
6
+ *
7
+ * Props:
8
+ * - items: Array of { title, content, xs, md }
9
+ * - spacing: Grid spacing (default 3)
10
+ * - sx: Additional styling for the Box wrapper
11
+ */
12
+ export default function GridX({ items = [], spacing = 3, sx = {} }) {
13
+ return (
14
+ <Box sx={{ width: '100%', mt: 2, ...sx }}>
15
+ <Grid container spacing={spacing}>
16
+ {items.map((item, index) => (
17
+ <Grid item xs={item.xs || 12} md={item.md || 6} key={index}>
18
+ {item.title && (
19
+ <Typography variant="h6" sx={{ fontWeight: 500, mb: 1 }}>
20
+ {item.title}
21
+ </Typography>
22
+ )}
23
+ {item.content}
24
+ </Grid>
25
+ ))}
26
+ </Grid>
27
+ </Box>
28
+ );
29
+ }
@@ -0,0 +1,132 @@
1
+ // neurons.me — this.GUI
2
+ // Generic Hero2 component with video background, overlay and titles
3
+ import React from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { Box, Typography } from '@mui/material';
6
+
7
+ /**
8
+ * Hero2
9
+ * A compact hero/cover with background video or image, an opacity layer, and title/subtitle.
10
+ *
11
+ * Props:
12
+ * - videoSrc: string URL for the background video.
13
+ * - poster: string URL for the poster/fallback image.
14
+ * - height: CSS size for hero height (e.g., '220px', '30vh'). Default: '220px'.
15
+ * - title: string | ReactNode, main title text.
16
+ * - subTitle: string | ReactNode, secondary text.
17
+ * - overlayOpacity: number [0..1], darkness of overlay. Default: 0.5.
18
+ * - overlayColor: CSS color of overlay. Default: '#000'.
19
+ * - overlayBlur: CSS blur amount for overlay backdrop. Default: '8px'.
20
+ * - overlayGradient: CSS gradient string for overlay background.
21
+ * - borderRadius: number | string for rounding container. Default: 12.
22
+ * - textColor: CSS color for text. Default: '#fff'.
23
+ * - align: 'center' | 'left' | 'right'. Default: 'center'.
24
+ * - autoPlay, loop, muted, playsInline: booleans for <video>. Defaults true/true/true/true.
25
+ * - objectFit: how the media covers the box. Default: 'cover'.
26
+ * - TitleComponent: optional component to render the title (defaults to GUI.TextTitle or 'h1').
27
+ * - children: extra nodes rendered under the subtitle (e.g., buttons).
28
+ */
29
+ export default function Hero2({
30
+ videoSrc = '/apps/neurons1.mp4',
31
+ poster,
32
+ height = '220px',
33
+ title = 'Apps',
34
+ subTitle,
35
+ overlayOpacity = 0.5,
36
+ overlayColor = '#000',
37
+ overlayBlur = '8px',
38
+ overlayGradient,
39
+ borderRadius = 8,
40
+ textColor = '#fff',
41
+ align = 'center',
42
+ autoPlay = true,
43
+ loop = true,
44
+ muted = true,
45
+ playsInline = true,
46
+ objectFit = 'cover',
47
+ TitleComponent,
48
+ children,
49
+ }) {
50
+ const Title = TitleComponent || 'h1';
51
+ const alignMap = {
52
+ center: { justifyContent: 'center', alignItems: 'center', textAlign: 'center' },
53
+ left: { justifyContent: 'center', alignItems: 'flex-start', textAlign: 'left', paddingLeft: '1rem' },
54
+ right: { justifyContent: 'center', alignItems: 'flex-end', textAlign: 'right', paddingRight: '1rem' },
55
+ };
56
+
57
+ return (
58
+ <Box sx={{ position: 'relative', width: '100%', height, overflow: 'hidden', borderRadius, mb: '2rem' }}>
59
+ {/* Background Video */}
60
+ {videoSrc ? (
61
+ <Box component="video"
62
+ autoPlay={autoPlay}
63
+ loop={loop}
64
+ muted={muted}
65
+ playsInline={playsInline}
66
+ poster={poster}
67
+ sx={{ width: '100%', height: '100%', objectFit }}>
68
+ <source src={videoSrc} type="video/mp4" />
69
+ {/* Fallback text */}
70
+ Tu navegador no soporta video.
71
+ </Box>
72
+ ) : (
73
+ // If no videoSrc, show poster as background
74
+ <Box sx={{ width: '100%', height: '100%', backgroundImage: poster ? `url(${poster})` : 'none', backgroundSize: 'cover', backgroundPosition: 'center' }} />
75
+ )}
76
+
77
+ {/* Opacity Layer */}
78
+ <Box
79
+ sx={{
80
+ position: 'absolute', inset: 0, pointerEvents: 'none',
81
+ background: overlayGradient || overlayColor,
82
+ opacity: overlayOpacity,
83
+ backdropFilter: `blur(${overlayBlur})`,
84
+ WebkitBackdropFilter: `blur(${overlayBlur})`,
85
+ }}
86
+ />
87
+
88
+ {/* Foreground Content */}
89
+ <Box sx={{ position: 'absolute', inset: 0, display: 'flex', ...alignMap[align] }}>
90
+ <Box sx={{ color: textColor, textShadow: '0 2px 10px rgba(0,0,0,.6)' }}>
91
+ {title && (
92
+ <Title style={{ margin: 0, fontWeight: 800, fontSize: '2rem' }}>
93
+ {title}
94
+ </Title>
95
+ )}
96
+ {subTitle && (
97
+ <Typography variant="subtitle1" sx={{ mt: 0.5, opacity: 0.9 }}>
98
+ {subTitle}
99
+ </Typography>
100
+ )}
101
+ {children && (
102
+ <Box sx={{ mt: 1.25 }}>
103
+ {children}
104
+ </Box>
105
+ )}
106
+ </Box>
107
+ </Box>
108
+ </Box>
109
+ );
110
+ }
111
+
112
+ Hero2.propTypes = {
113
+ videoSrc: PropTypes.string,
114
+ poster: PropTypes.string,
115
+ height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
116
+ title: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
117
+ subTitle: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
118
+ overlayOpacity: PropTypes.number,
119
+ overlayColor: PropTypes.string,
120
+ overlayBlur: PropTypes.string,
121
+ overlayGradient: PropTypes.string,
122
+ borderRadius: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
123
+ textColor: PropTypes.string,
124
+ align: PropTypes.oneOf(['center', 'left', 'right']),
125
+ autoPlay: PropTypes.bool,
126
+ loop: PropTypes.bool,
127
+ muted: PropTypes.bool,
128
+ playsInline: PropTypes.bool,
129
+ objectFit: PropTypes.string,
130
+ TitleComponent: PropTypes.elementType,
131
+ children: PropTypes.node,
132
+ };
@@ -0,0 +1,29 @@
1
+ //components/Pages/PageContainer.jsx
2
+ import { Box, useTheme, useMediaQuery } from "@mui/material";
3
+ /**
4
+ * PageContainer
5
+ * Generic content wrapper for page layouts.
6
+ * Provides consistent padding and background only.
7
+ */
8
+ export default function PageContainer({ children }) {
9
+ const theme = useTheme();
10
+ const isMobile = useMediaQuery(theme.breakpoints.down("md"));
11
+ return (
12
+ <Box
13
+ sx={{
14
+ px: isMobile ? 2 : 3,
15
+ pt: 3,
16
+ maxWidth: "987px",
17
+ minHeight: "100vh",
18
+ display: "flex",
19
+ flexDirection: "column",
20
+ alignItems: "center",
21
+ position: "relative",
22
+ backgroundColor: theme.palette.background.default,
23
+ margin: "0 auto"
24
+ }}
25
+ >
26
+ {children}
27
+ </Box>
28
+ );
29
+ }
@@ -0,0 +1,20 @@
1
+ import { Divider } from "@mui/material";
2
+
3
+ /**
4
+ * PageDivider Component
5
+ * A standardized divider to visually separate sections or content blocks.
6
+ *
7
+ * Props:
8
+ * - spacing: Adds vertical spacing above and below the divider (default: 2).
9
+ * - variant: MUI Divider variant, e.g., "fullWidth", "middle" (default: "fullWidth").
10
+ */
11
+ export default function PageDivider({ spacing = 2, variant = "fullWidth" }) {
12
+ return (
13
+ <Divider
14
+ variant={variant}
15
+ sx={{
16
+ my: spacing,
17
+ }}
18
+ />
19
+ );
20
+ }
@@ -0,0 +1,43 @@
1
+ import { Box } from "@mui/material";
2
+
3
+ /**
4
+ * Section
5
+ * Minimal container that respects parent width.
6
+ * Controls: width, padding, margins, background color.
7
+ */
8
+ export default function Section({
9
+ children,
10
+ width = "100%", // toma el ancho del padre por defecto
11
+ padding = 1.6, // padding base (MUI spacing units)
12
+ paddingX, // opcional: override horizontal
13
+ paddingY, // opcional: override vertical
14
+ marginY = 3, // separación vertical por defecto
15
+ marginTop, // override superior
16
+ marginBottom, // override inferior
17
+ bgcolor = "background.paper",
18
+ sx = {},
19
+ ...props
20
+ }) {
21
+ const px = paddingX ?? padding;
22
+ const py = paddingY ?? padding;
23
+ const mt = marginTop ?? marginY;
24
+ const mb = marginBottom ?? marginY;
25
+
26
+ return (
27
+ <Box
28
+ component="section"
29
+ sx={{
30
+ width,
31
+ px,
32
+ py,
33
+ mt,
34
+ mb,
35
+ bgcolor,
36
+ ...sx,
37
+ }}
38
+ {...props}
39
+ >
40
+ {children}
41
+ </Box>
42
+ );
43
+ }
@@ -0,0 +1,21 @@
1
+ import { Typography } from "@mui/material";
2
+ /**
3
+ * SectionHeader
4
+ * Heading block to use inside Section (optional).
5
+ */
6
+ export default function SectionHeader({ title, subtitle, sx = {} }) {
7
+ return (
8
+ <>
9
+ {title && (
10
+ <Typography variant="h4" sx={{ fontWeight: 600, mb: subtitle ? 0.5 : 1, ...sx }}>
11
+ {title}
12
+ </Typography>
13
+ )}
14
+ {subtitle && (
15
+ <Typography variant="body2" sx={{ color: "text.secondary", mb: 1 }}>
16
+ {subtitle}
17
+ </Typography>
18
+ )}
19
+ </>
20
+ );
21
+ }
@@ -0,0 +1,58 @@
1
+ import { Box, Typography } from "@mui/material";
2
+ /**
3
+ * PageImage Component
4
+ * Displays an image with optional alignment and caption.
5
+ *
6
+ * Props:
7
+ * - src: URL of the image (required).
8
+ * - alt: Alternative text for accessibility (default: "").
9
+ * - align: "left" | "center" | "right" (default: "center").
10
+ * - caption: Optional text displayed below the image.
11
+ * - maxWidth: Maximum width of the image (default: "100%").
12
+ */
13
+ export default function Img({
14
+ src,
15
+ alt = "",
16
+ align = "center",
17
+ caption,
18
+ maxWidth = "100%",
19
+ }) {
20
+ const justifyContent =
21
+ align === "left"
22
+ ? "flex-start"
23
+ : align === "right"
24
+ ? "flex-end"
25
+ : "center";
26
+
27
+ return (
28
+ <Box sx={{ display: "flex", flexDirection: "column", alignItems: align }}>
29
+ <Box
30
+ sx={{
31
+ display: "flex",
32
+ justifyContent,
33
+ width: "100%",
34
+ mb: caption ? 1 : 0,
35
+ }}
36
+ >
37
+ <img
38
+ src={src}
39
+ alt={alt}
40
+ style={{
41
+ maxWidth,
42
+ height: "auto",
43
+ borderRadius: "4px",
44
+ }}
45
+ />
46
+ </Box>
47
+ {caption && (
48
+ <Typography
49
+ variant="caption"
50
+ color="text.secondary"
51
+ sx={{ textAlign: align }}
52
+ >
53
+ {caption}
54
+ </Typography>
55
+ )}
56
+ </Box>
57
+ );
58
+ }