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,499 @@
1
+ import React from 'react';
2
+ import { MemoryRouter } from 'react-router-dom';
3
+ import GuiProvider from '@/context/GuiProvider';
4
+ import Footer from './Footer';
5
+ import GitHubIcon from '@mui/icons-material/GitHub';
6
+ import TwitterIcon from '@mui/icons-material/Twitter';
7
+ import { Mail, Instagram } from 'lucide-react';
8
+ import type { Meta, StoryObj } from '@storybook/react';
9
+ import { useTheme } from '@mui/material/styles';
10
+ import LeftDrawer, { type RouteItem } from '../LeftSidebar/LeftSidebar';
11
+ import { Box, Drawer } from '@mui/material';
12
+ import NavBar from '../TopBar/TopBar';
13
+
14
+ const demoLinks: RouteItem[] = [
15
+ { label: 'Home', href: '/' },
16
+ { label: 'Docs', href: '/docs' },
17
+ { label: 'GitHub', href: 'https://github.com/neurons-me', external: true },
18
+ ];
19
+
20
+ const WithInsetsProvider: React.FC<{ left?: number; right?: number; children?: React.ReactNode }> = ({ left, right, children }) => {
21
+ const theme = useTheme() as any;
22
+ React.useEffect(() => {
23
+ if (typeof (theme as any)?.updateInsets === 'function') {
24
+ (theme as any).updateInsets({ left: left ?? 0, right: right ?? 0 });
25
+ }
26
+ // Cleanup only on unmount — do NOT depend on `theme` to avoid re-running
27
+ return () => {
28
+ if (typeof (theme as any)?.updateInsets === 'function') {
29
+ (theme as any).updateInsets({ left: 0, right: 0 });
30
+ }
31
+ };
32
+ // Only re-run when the numeric insets change
33
+ }, [left, right]);
34
+ return <>{children}</>;
35
+ };
36
+
37
+ const meta = {
38
+ title: 'Molecules/AppBars/Footer',
39
+ component: Footer,
40
+ tags: ['autodocs'],
41
+ decorators: [
42
+ (Story) => (
43
+ <MemoryRouter>
44
+ <GuiProvider>
45
+ <div style={{ minHeight: 240 }}>
46
+ <Story />
47
+ </div>
48
+ </GuiProvider>
49
+ </MemoryRouter>
50
+ ),
51
+ ],
52
+ parameters: {
53
+ docs: {
54
+ description: {
55
+ component: `
56
+ The <code>Footer</code>
57
+ component provides a standardized footer layout for your application, ensuring consistent styling and functionality across different pages. It supports branding, navigation links, social media icons, and responsive design.
58
+ ---
59
+
60
+ ## Features
61
+ - Standardizes footer layout and styling across the app.
62
+ - Supports optional branding with logo and title.
63
+ - Renders navigation links and social icons.
64
+ - Responsive design that adapts to screen size.
65
+ - Easy to use with declarative props or custom React nodes.
66
+ - Aligns with permanent left/right drawers automatically by reading global insets from the theme.
67
+ - Supports both **declarative** icon strings (via the registry) and **direct React** icon nodes.
68
+ - Stays compact on mobile, with links stacking vertically.
69
+
70
+ ---
71
+
72
+ ### Props
73
+ - **Branding**
74
+ - <code>title?: string</code>
75
+ - <code>logoSrc?: string</code> (fallbacks to <strong>https://www.neurons.me/media/neurons-grey.png</strong> when omitted)
76
+ - <code>homeHref?: string</code> and/or <code>onBrandClick?: () =&gt; void</code>
77
+ - <code>brandComponent?: ElementType</code> and <code>brandTo?: string</code> for SPA routing (e.g. This.GUI Link)
78
+ - **Social links**
79
+ - <code>Array&lt;{ icon: string | ReactNode; href: string; iconColor?: string }&gt;</code>
80
+ Declarative example: <code>{ icon: 'mui:GitHub', href: '…', iconColor: 'primary' }</code>
81
+ React example: <code>{ icon: &lt;GitHubIcon htmlColor="#fff" /&gt;, href: '…' }</code>
82
+ Color mapping: Lucide → <code>color</code>, MUI → <code>htmlColor</code> (handled by the registry)
83
+ - **Footer links**
84
+ - <code>links: Array&lt;{ label: string; href: string; external?: boolean }&gt;</code>
85
+ - **Layout / Insets**
86
+ - Uses global <code>theme.insets.left</code> / <code>theme.insets.right</code> by default
87
+ You can override with <code>leftInset</code> / <code>rightInset</code> props if needed
88
+ - **Extensibility**
89
+ - <code>startSlot?: ReactNode</code>, <code>endSlot?: ReactNode</code>
90
+ - <code>linkProps?: object</code>, <code>iconProps?: object</code>
91
+ - <code>sx</code> for MUI styling overrides
92
+
93
+ ---
94
+ ### Examples
95
+ **Declarative (recommended for JSON-driven UIs)**
96
+
97
+ ~~~jsx
98
+ <Footer
99
+ title="neurons.me"
100
+ logoSrc="https://neurons.me/neurons.me.png"
101
+ homeHref="/"
102
+ socialLinks={[
103
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
104
+ { icon: 'lucide:instagram', href: 'https://instagram.com/neurons', iconColor: '#E1306C' },
105
+ ]}
106
+ links={[
107
+ { label: 'Docs', href: '/docs' },
108
+ { label: 'Contact', href: '/contact' },
109
+ ]}
110
+ />
111
+ ~~~
112
+
113
+ **React (advanced)**
114
+ ~~~jsx
115
+ import GitHubIcon from '@mui/icons-material/GitHub';
116
+ import { Mail } from 'lucide-react';
117
+
118
+ <Footer
119
+ socialLinks={[
120
+ { icon: <GitHubIcon htmlColor="#fff" />, href: 'https://github.com/neurons-me' },
121
+ { icon: <Mail color="#00aa96" />, href: 'mailto:hi@neurons.me' },
122
+ ]}
123
+ />
124
+ ~~~
125
+
126
+ **Granular styling (fine control)**
127
+ Use the provided props to tweak visuals without forking the component:
128
+
129
+ - \`linkProps\` — forwarded to each footer \`<Link>\`. Ideal for typography, spacing and states via \`sx\`.
130
+ - \`iconProps\` — forwarded to our Icon **only when** you pass string tokens in \`socialLinks[].icon\` (e.g. \`"lucide:twitter"\`). Great for \`size\`, \`strokeWidth\`, inline \`style\`, etc.
131
+ - \`startSlot\` / \`endSlot\` — inject any React node (badges, build info, counters) and style it freely.
132
+
133
+ Example:
134
+
135
+ ~~~jsx
136
+ <Footer
137
+ links={[
138
+ { label: 'Docs', href: '/docs' },
139
+ { label: 'Changelog', href: '/changelog' },
140
+ ]}
141
+ socialLinks={[
142
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
143
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
144
+ ]}
145
+ linkProps={{
146
+ sx: {
147
+ fontSize: 13,
148
+ letterSpacing: 0.2,
149
+ color: 'text.secondary',
150
+ '&:hover': { color: 'text.primary', textDecoration: 'underline' },
151
+ },
152
+ }}
153
+ iconProps={{ size: 18, style: { opacity: 0.9 } }}
154
+ startSlot={<span style={{ opacity: 0.8, fontSize: 12 }}>© 2025 Neuroverse</span>}
155
+ endSlot={<span style={{ opacity: 0.8, fontSize: 12 }}>v1.2.3</span>}
156
+ />
157
+ ~~~
158
+
159
+ ---
160
+
161
+ **JSON / Resolver overview**
162
+ When using the registry-driven renderer, a Footer spec like this:
163
+
164
+ ~~~json
165
+ {
166
+ "type": "Footer",
167
+ "props": {
168
+ "title": "neurons.me",
169
+ "links": [
170
+ { "label": "Docs", "href": "/docs" },
171
+ { "label": "Contact", "href": "/contact" }
172
+ ],
173
+ "socialLinks": [
174
+ { "icon": "lucide:twitter", "href": "https://twitter.com/neurons_me", "iconColor": "#1DA1F2" },
175
+ { "icon": "mui:GitHub", "href": "https://github.com/neurons-me", "iconColor": "primary" }
176
+ ],
177
+ "leftInset": 240,
178
+ "rightInset": 280,
179
+ "iconProps": { "size": 18 },
180
+ "linkProps": { "sx": { "fontSize": 13 } }
181
+ }
182
+ }
183
+ ~~~
184
+
185
+ **SPA routing (declarative)**
186
+
187
+ ~~~json
188
+ {
189
+ "type": "Footer",
190
+ "props": {
191
+ "title": "neurons.me",
192
+ "brandTo": "/",
193
+ "brandComponent": "Link"
194
+ }
195
+ }
196
+ ~~~
197
+
198
+ …is mapped by the Footer resolver to \`<Footer />\` props. The resolver:
199
+ - Passes \`links\` straight to the component; if a link has \`external: true\`, it adds \`target="_blank"\` and safe \`rel\`.
200
+ - For each \`socialLinks[]\`, if \`icon\` is a **string token**, it renders through the icon registry (\`<Icon name=... />\`) and merges \`iconProps\`. If \`icon\` is a **React node**, it renders as-is and ignores \`iconProps\` for that item.
201
+ - Applies \`leftInset\` / \`rightInset\` (otherwise they come from the theme’s permanent drawers).
202
+ - Forwards \`linkProps\` to every rendered footer \`<Link>\`.
203
+
204
+ ---
205
+
206
+ **Automatic insets**
207
+ By default, the footer reads <code>theme.insets.left</code> and <code>theme.insets.right</code> set by permanent drawers like <code>LeftDrawer</code> and <code>RightDrawer</code>.<br/>
208
+ To override manually, pass <code>leftInset</code> and/or <code>rightInset</code>.
209
+
210
+ You can simulate permanent drawers in Storybook using \`theme.updateInsets({ left, right })\` as shown in the stories below.
211
+
212
+ There's also a story that mounts a real LeftDrawer next to the Footer to verify layout push end-to-end.
213
+ `,
214
+ },
215
+ },
216
+ },
217
+ } satisfies Meta<typeof Footer>;
218
+
219
+ export default meta;
220
+
221
+ type Story = StoryObj<typeof Footer>;
222
+
223
+ export const Default: Story = {
224
+ args: {
225
+ title: 'neurons.me',
226
+ logoSrc: 'https://neurons.me/neurons.me.png',
227
+ homeHref: '/',
228
+ links: [
229
+ { label: 'Docs', href: '/docs' },
230
+ { label: 'Contact', href: '/contact' },
231
+ ],
232
+ socialLinks: [
233
+ { icon: 'lucide:facebook', href: 'https://github.com/neurons-me', iconColor: 'primary' },
234
+ { icon: 'lucide:instagram', href: 'https://instagram.com/neurons', iconColor: '#E1306C' },
235
+ ],
236
+ },
237
+ };
238
+
239
+ export const DeclarativeSocial: Story = {
240
+ name: 'Social (Declarative)',
241
+ args: {
242
+ title: 'neurons.me',
243
+ links: [
244
+ { label: 'Privacy', href: '/privacy' },
245
+ { label: 'Terms', href: '/terms' },
246
+ ],
247
+ socialLinks: [
248
+ { icon: 'lucide:Twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
249
+ { icon: 'lucide:mail', href: 'mailto:hi@neurons.me', iconColor: '#00aa96' },
250
+ ],
251
+ },
252
+ };
253
+
254
+ export const ReactSocial: Story = {
255
+ name: 'Social (React components)',
256
+ args: {
257
+ title: 'neurons.me',
258
+ links: [
259
+ { label: 'Docs', href: '/docs' },
260
+ { label: 'Blog', href: '/blog' },
261
+ ],
262
+ socialLinks: [
263
+ { icon: <GitHubIcon htmlColor="#fff" />, href: 'https://github.com/neurons-me' },
264
+ { icon: <TwitterIcon htmlColor="#1DA1F2" />, href: 'https://twitter.com/neurons_me' },
265
+ { icon: <Mail color="#00aa96" />, href: 'mailto:hi@neurons.me' },
266
+ { icon: <Instagram color="#E1306C" />, href: 'https://instagram.com/neurons' },
267
+ ],
268
+ },
269
+ };
270
+
271
+ export const WithSlots: Story = {
272
+ args: {
273
+ title: 'neurons.me',
274
+ links: [
275
+ { label: 'Docs', href: '/docs' },
276
+ { label: 'Support', href: '/support' },
277
+ ],
278
+ startSlot: <span style={{ opacity: 0.8, fontSize: 12 }}>© {new Date().getFullYear()} Neuroverse</span>,
279
+ endSlot: <span style={{ opacity: 0.8, fontSize: 12 }}>v1.0.0</span>,
280
+ },
281
+ };
282
+
283
+ export const WithInsets: Story = {
284
+ name: 'With manual insets override',
285
+ args: {
286
+ title: 'neurons.me',
287
+ links: [
288
+ { label: 'Docs', href: '/docs' },
289
+ { label: 'Status', href: '/status' },
290
+ ],
291
+ leftInset: 240,
292
+ rightInset: 280,
293
+ socialLinks: [
294
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
295
+ ],
296
+ },
297
+ };
298
+
299
+ export const MinimalBranding: Story = {
300
+ name: 'Branding fallback (no logoSrc)',
301
+ args: {
302
+ title: 'neurons.me',
303
+ homeHref: '/',
304
+ // omit logoSrc -> uses neurons grey fallback
305
+ links: [
306
+ { label: 'Docs', href: '/docs' },
307
+ { label: 'Contact', href: '/contact' },
308
+ ],
309
+ },
310
+ };
311
+
312
+ export const LinksOnly: Story = {
313
+ args: {
314
+ links: [
315
+ { label: 'Docs', href: '/docs' },
316
+ { label: 'Pricing', href: '/pricing' },
317
+ { label: 'Changelog', href: '/changelog' },
318
+ ],
319
+ },
320
+ };
321
+
322
+ export const AutoInsets: Story = {
323
+ name: 'Automatic insets from theme',
324
+ parameters: {
325
+ docs: {
326
+ description: {
327
+ story: `
328
+ This story demonstrates the <code>Footer</code> automatically using <code>theme.insets.left</code> and <code>theme.insets.right</code> values set by permanent drawers such as <code>LeftDrawer</code> and <code>RightDrawer</code>. No manual insets need to be provided.
329
+ `,
330
+ },
331
+ },
332
+ },
333
+ args: {
334
+ title: 'neurons.me',
335
+ links: [
336
+ { label: 'Docs', href: '/docs' },
337
+ { label: 'About', href: '/about' },
338
+ ],
339
+ socialLinks: [
340
+ { icon: 'lucide:Twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
341
+ ],
342
+ },
343
+ };
344
+
345
+ export const WithLeftDrawer: Story = {
346
+ name: 'With Left Drawer (insets via theme.updateInsets)',
347
+ render: (args) => (
348
+ <WithInsetsProvider left={240}>
349
+ <Footer {...args} />
350
+ </WithInsetsProvider>
351
+ ),
352
+ args: {
353
+ title: 'neurons.me',
354
+ links: [
355
+ { label: 'Docs', href: '/docs' },
356
+ { label: 'About', href: '/about' },
357
+ ],
358
+ socialLinks: [
359
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
360
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
361
+ ],
362
+ },
363
+ };
364
+
365
+ export const WithRightDrawer: Story = {
366
+ name: 'With Right Drawer (insets via theme.updateInsets)',
367
+ render: (args) => (
368
+ <WithInsetsProvider right={280}>
369
+ <Footer {...args} />
370
+ </WithInsetsProvider>
371
+ ),
372
+ args: {
373
+ title: 'neurons.me',
374
+ links: [
375
+ { label: 'Status', href: '/status' },
376
+ { label: 'Changelog', href: '/changelog' },
377
+ ],
378
+ socialLinks: [
379
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
380
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
381
+ ],
382
+ },
383
+ };
384
+
385
+ export const WithBothDrawers: Story = {
386
+ name: 'With Left & Right Drawers (combined insets)',
387
+ render: (args) => (
388
+ <WithInsetsProvider left={240} right={280}>
389
+ <Footer {...args} />
390
+ </WithInsetsProvider>
391
+ ),
392
+ args: {
393
+ title: 'neurons.me',
394
+ links: [
395
+ { label: 'Docs', href: '/docs' },
396
+ { label: 'Contact', href: '/contact' },
397
+ ],
398
+ socialLinks: [
399
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
400
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
401
+ ],
402
+ },
403
+ };
404
+
405
+ export const WithLeftDrawerLayout: Story = {
406
+ name: 'Layout with LeftDrawer (real component)',
407
+ parameters: { layout: 'fullscreen' },
408
+ render: () => (
409
+ <>
410
+ <NavBar title="Demo" />
411
+ <Box sx={{ display: 'flex', height: '100vh', flexDirection: 'column', bgcolor: 'background.default' }}>
412
+ <Box sx={{ display: 'flex', flex: 1, width: '100%' }}>
413
+ {/* Permanent left drawer updates theme.insets.left automatically */}
414
+ <LeftDrawer drawerWidth={240} drawerLinks={demoLinks} open />
415
+ {/* Main content area that would scroll */}
416
+ <Box sx={{ flex: 1, p: 3, overflow: 'auto' }}>
417
+ <Box sx={{ height: 600, border: '1px dashed', borderColor: 'divider', borderRadius: 1, bgcolor: 'background.paper' }} />
418
+ </Box>
419
+ </Box>
420
+ <Footer
421
+ title="neurons.me"
422
+ links={[{ label: 'Docs', href: '/docs' }, { label: 'Contact', href: '/contact' }]}
423
+ socialLinks={[
424
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
425
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
426
+ ]}
427
+ />
428
+ </Box>
429
+ </>
430
+ ),
431
+ };
432
+
433
+ const RightDrawerPermanent: React.FC<{ width?: number; children?: React.ReactNode }> = ({ width = 280, children }) => {
434
+ const theme = useTheme() as any;
435
+ React.useEffect(() => {
436
+ if (typeof theme?.updateInsets === 'function') theme.updateInsets({ right: width });
437
+ return () => { if (typeof theme?.updateInsets === 'function') theme.updateInsets({ right: 0 }); };
438
+ }, [width]);
439
+ return (
440
+ <Drawer variant="permanent" anchor="right" open PaperProps={{ sx: { width, boxSizing: 'border-box' } }}>
441
+ {children}
442
+ </Drawer>
443
+ );
444
+ };
445
+
446
+ export const WithRightDrawerLayout: Story = {
447
+ name: 'Layout with Right Drawer (real component)',
448
+ parameters: { layout: 'fullscreen' },
449
+ render: () => (
450
+ <>
451
+ <NavBar title="Demo" />
452
+ <Box sx={{ display: 'flex', height: '100vh', flexDirection: 'column', bgcolor: 'background.default' }}>
453
+ <Box sx={{ display: 'flex', flex: 1, width: '100%' }}>
454
+ {/* Main content area */}
455
+ <Box sx={{ flex: 1, p: 3, overflow: 'auto' }}>
456
+ <Box sx={{ height: 600, border: '1px dashed', borderColor: 'divider', borderRadius: 1, bgcolor: 'background.paper' }} />
457
+ </Box>
458
+ {/* Permanent right drawer updates theme.insets.right via effect */}
459
+ <RightDrawerPermanent width={280} />
460
+ </Box>
461
+ <Footer
462
+ title="neurons.me"
463
+ links={[{ label: 'Docs', href: '/docs' }, { label: 'Contact', href: '/contact' }]}
464
+ socialLinks={[
465
+ { icon: 'mui:GitHub', href: 'https://github.com/neurons-me', iconColor: 'primary' },
466
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
467
+ ]}
468
+ />
469
+ </Box>
470
+ </>
471
+ ),
472
+ };
473
+
474
+ export const WithBothDrawersLayout: Story = {
475
+ name: 'Layout with Left & Right Drawers (real components)',
476
+ parameters: { layout: 'fullscreen' },
477
+ render: () => (
478
+ <>
479
+ <NavBar title="Demo" />
480
+ <Box sx={{ display: 'flex', height: '100vh', flexDirection: 'column', bgcolor: 'background.default' }}>
481
+ <Box sx={{ display: 'flex', flex: 1, width: '100%' }}>
482
+ <LeftDrawer drawerWidth={240} drawerLinks={demoLinks} open />
483
+ <Box sx={{ flex: 1, p: 3, overflow: 'auto' }}>
484
+ <Box sx={{ flex:1, p:3, overflow:'auto', bgcolor: 'background.default' }} />
485
+ </Box>
486
+ <RightDrawerPermanent width={280} />
487
+ </Box>
488
+ <Footer
489
+ title="neurons.me"
490
+ links={[{ label: 'Docs', href: '/docs' }, { label: 'Contact', href: '/contact' }]}
491
+ socialLinks={[
492
+ { icon: 'lucide:facebook', href: 'https://github.com/neurons-me', iconColor: 'primary' },
493
+ { icon: 'lucide:twitter', href: 'https://twitter.com/neurons_me', iconColor: '#1DA1F2' },
494
+ ]}
495
+ />
496
+ </Box>
497
+ </>
498
+ ),
499
+ };