this.gui 1.0.17 → 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 (477) 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 -4976
  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 -53
  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 -63
  172. package/src/MdxProvider.jsx +0 -20
  173. package/src/Page.jsx +0 -28
  174. package/src/SiteBuilder.jsx +0 -39
  175. package/src/example.json +0 -43
  176. package/src/index.mdx +0 -164
  177. package/src/main.jsx +0 -15
  178. package/src/scripts/ComponentRegistry.js +0 -70
  179. package/src/scripts/logASCIIArt.js +0 -12
  180. package/src/scripts/postinstall.js +0 -100
  181. package/src/scripts/renderComponents.js +0 -11
  182. package/src/stories/Atoms/Alert/Alert.css +0 -211
  183. package/src/stories/Atoms/Alert/Alert.jsx +0 -56
  184. package/src/stories/Atoms/Alert/Alert.stories.jsx +0 -167
  185. package/src/stories/Atoms/Audio/Audio.css +0 -259
  186. package/src/stories/Atoms/Audio/Audio.jsx +0 -216
  187. package/src/stories/Atoms/Audio/Audio.stories.jsx +0 -191
  188. package/src/stories/Atoms/Badge/Badge.css +0 -249
  189. package/src/stories/Atoms/Badge/Badge.jsx +0 -54
  190. package/src/stories/Atoms/Badge/Badge.stories.jsx +0 -121
  191. package/src/stories/Atoms/Button/Button.css +0 -131
  192. package/src/stories/Atoms/Button/Button.jsx +0 -47
  193. package/src/stories/Atoms/Button/Button.stories.jsx +0 -184
  194. package/src/stories/Atoms/Caption/Caption.css +0 -169
  195. package/src/stories/Atoms/Caption/Caption.jsx +0 -72
  196. package/src/stories/Atoms/Caption/Caption.stories.jsx +0 -207
  197. package/src/stories/Atoms/Checkbox/Checkbox.css +0 -182
  198. package/src/stories/Atoms/Checkbox/Checkbox.jsx +0 -83
  199. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +0 -112
  200. package/src/stories/Atoms/Container/Container.css +0 -89
  201. package/src/stories/Atoms/Container/Container.jsx +0 -54
  202. package/src/stories/Atoms/Container/Container.stories.jsx +0 -104
  203. package/src/stories/Atoms/Divider/Divider.css +0 -147
  204. package/src/stories/Atoms/Divider/Divider.jsx +0 -62
  205. package/src/stories/Atoms/Divider/Divider.stories.jsx +0 -105
  206. package/src/stories/Atoms/Grid/Grid.css +0 -160
  207. package/src/stories/Atoms/Grid/Grid.jsx +0 -43
  208. package/src/stories/Atoms/Grid/Grid.stories.jsx +0 -84
  209. package/src/stories/Atoms/Heading/Heading.css +0 -112
  210. package/src/stories/Atoms/Heading/Heading.jsx +0 -69
  211. package/src/stories/Atoms/Heading/Heading.stories.jsx +0 -130
  212. package/src/stories/Atoms/Icon/Icon.css +0 -240
  213. package/src/stories/Atoms/Icon/Icon.jsx +0 -80
  214. package/src/stories/Atoms/Icon/Icon.stories.jsx +0 -177
  215. package/src/stories/Atoms/Image/Image.css +0 -245
  216. package/src/stories/Atoms/Image/Image.jsx +0 -175
  217. package/src/stories/Atoms/Image/Image.stories.jsx +0 -332
  218. package/src/stories/Atoms/Label/Label.css +0 -171
  219. package/src/stories/Atoms/Label/Label.jsx +0 -71
  220. package/src/stories/Atoms/Label/Label.stories.jsx +0 -180
  221. package/src/stories/Atoms/Link/Link.css +0 -71
  222. package/src/stories/Atoms/Link/Link.jsx +0 -82
  223. package/src/stories/Atoms/Link/Link.stories.jsx +0 -153
  224. package/src/stories/Atoms/Loader/Loader.css +0 -106
  225. package/src/stories/Atoms/Loader/Loader.jsx +0 -58
  226. package/src/stories/Atoms/Loader/Loader.stories.jsx +0 -99
  227. package/src/stories/Atoms/Logo/Logo.css +0 -94
  228. package/src/stories/Atoms/Logo/Logo.jsx +0 -53
  229. package/src/stories/Atoms/Logo/Logo.stories.jsx +0 -120
  230. package/src/stories/Atoms/Paragraph/Paragraph.css +0 -180
  231. package/src/stories/Atoms/Paragraph/Paragraph.jsx +0 -77
  232. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +0 -143
  233. package/src/stories/Atoms/ProgressBar/ProgressBar.css +0 -127
  234. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +0 -40
  235. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +0 -86
  236. package/src/stories/Atoms/RadioButton/RadioButton.css +0 -130
  237. package/src/stories/Atoms/RadioButton/RadioButton.jsx +0 -87
  238. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +0 -113
  239. package/src/stories/Atoms/Range/Range.css +0 -169
  240. package/src/stories/Atoms/Range/Range.jsx +0 -87
  241. package/src/stories/Atoms/Range/Range.stories.jsx +0 -110
  242. package/src/stories/Atoms/Section/Section.css +0 -268
  243. package/src/stories/Atoms/Section/Section.jsx +0 -63
  244. package/src/stories/Atoms/Section/Section.stories.jsx +0 -46
  245. package/src/stories/Atoms/Select/Select.css +0 -87
  246. package/src/stories/Atoms/Select/Select.jsx +0 -73
  247. package/src/stories/Atoms/Select/Select.stories.jsx +0 -109
  248. package/src/stories/Atoms/Slider/Slider.css +0 -90
  249. package/src/stories/Atoms/Slider/Slider.jsx +0 -129
  250. package/src/stories/Atoms/Slider/Slider.stories.jsx +0 -90
  251. package/src/stories/Atoms/Snackbar/Snackbar.css +0 -313
  252. package/src/stories/Atoms/Snackbar/Snackbar.jsx +0 -72
  253. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +0 -78
  254. package/src/stories/Atoms/Spacer/Spacer.css +0 -114
  255. package/src/stories/Atoms/Spacer/Spacer.jsx +0 -35
  256. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +0 -61
  257. package/src/stories/Atoms/Spinner/Spinner.css +0 -110
  258. package/src/stories/Atoms/Spinner/Spinner.jsx +0 -65
  259. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +0 -58
  260. package/src/stories/Atoms/Tag/Tag.css +0 -112
  261. package/src/stories/Atoms/Tag/Tag.jsx +0 -75
  262. package/src/stories/Atoms/Tag/Tag.stories.jsx +0 -67
  263. package/src/stories/Atoms/TextArea/TextArea.css +0 -99
  264. package/src/stories/Atoms/TextArea/TextArea.jsx +0 -118
  265. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +0 -36
  266. package/src/stories/Atoms/TextInput/TextInput.css +0 -102
  267. package/src/stories/Atoms/TextInput/TextInput.jsx +0 -133
  268. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +0 -69
  269. package/src/stories/Atoms/Toggle/Toggle.css +0 -118
  270. package/src/stories/Atoms/Toggle/Toggle.jsx +0 -69
  271. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +0 -35
  272. package/src/stories/Atoms/Tooltip/Tooltip.css +0 -383
  273. package/src/stories/Atoms/Tooltip/Tooltip.jsx +0 -46
  274. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +0 -52
  275. package/src/stories/Atoms/Video/Video.css +0 -39
  276. package/src/stories/Atoms/Video/Video.jsx +0 -78
  277. package/src/stories/Atoms/Video/Video.stories.jsx +0 -41
  278. package/src/stories/Atoms/index.js +0 -72
  279. package/src/stories/Atoms/meta_Atoms.js +0 -51
  280. package/src/stories/Components.js +0 -198
  281. package/src/stories/Getting Started.mdx +0 -239
  282. package/src/stories/Layouts/Accordion/Accordion.css +0 -293
  283. package/src/stories/Layouts/Accordion/Accordion.jsx +0 -74
  284. package/src/stories/Layouts/Accordion/Accordion.stories.jsx +0 -39
  285. package/src/stories/Layouts/Flexbox/Flexbox.css +0 -16
  286. package/src/stories/Layouts/Flexbox/Flexbox.jsx +0 -11
  287. package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +0 -28
  288. package/src/stories/Layouts/Footer/Footer.css +0 -16
  289. package/src/stories/Layouts/Footer/Footer.jsx +0 -31
  290. package/src/stories/Layouts/Footer/Footer.stories.jsx +0 -28
  291. package/src/stories/Layouts/Header/Header.css +0 -16
  292. package/src/stories/Layouts/Header/Header.jsx +0 -31
  293. package/src/stories/Layouts/Header/Header.stories.jsx +0 -28
  294. package/src/stories/Layouts/HeroBanner/HeroBanner.css +0 -16
  295. package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +0 -31
  296. package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +0 -28
  297. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +0 -16
  298. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +0 -31
  299. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +0 -28
  300. package/src/stories/Layouts/Pagination/Pagination.css +0 -16
  301. package/src/stories/Layouts/Pagination/Pagination.jsx +0 -31
  302. package/src/stories/Layouts/Pagination/Pagination.stories.jsx +0 -28
  303. package/src/stories/Layouts/Sidebar/Sidebar.css +0 -16
  304. package/src/stories/Layouts/Sidebar/Sidebar.jsx +0 -71
  305. package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +0 -28
  306. package/src/stories/Layouts/Tabs/Tabs.css +0 -16
  307. package/src/stories/Layouts/Tabs/Tabs.jsx +0 -31
  308. package/src/stories/Layouts/Tabs/Tabs.stories.jsx +0 -28
  309. package/src/stories/Layouts/index.js +0 -25
  310. package/src/stories/Layouts/meta_Layouts.js +0 -28
  311. package/src/stories/MDX.mdx +0 -118
  312. package/src/stories/Miscellaneous/Miscellaneous.js +0 -24
  313. package/src/stories/Molecules/Accordion/Accordion.css +0 -4
  314. package/src/stories/Molecules/Accordion/Accordion.jsx +0 -25
  315. package/src/stories/Molecules/Accordion/Accordion.stories.jsx +0 -20
  316. package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +0 -97
  317. package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +0 -244
  318. package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +0 -55
  319. package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +0 -130
  320. package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +0 -80
  321. package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +0 -20
  322. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +0 -147
  323. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +0 -51
  324. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +0 -36
  325. package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +0 -465
  326. package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +0 -47
  327. package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +0 -44
  328. package/src/stories/Molecules/Card/Card.css +0 -41
  329. package/src/stories/Molecules/Card/Card.jsx +0 -92
  330. package/src/stories/Molecules/Card/Card.stories.jsx +0 -34
  331. package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +0 -35
  332. package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +0 -104
  333. package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +0 -81
  334. package/src/stories/Molecules/DataTable/DataTable.css +0 -4
  335. package/src/stories/Molecules/DataTable/DataTable.jsx +0 -25
  336. package/src/stories/Molecules/DataTable/DataTable.stories.jsx +0 -20
  337. package/src/stories/Molecules/Dropdown/Dropdown.css +0 -192
  338. package/src/stories/Molecules/Dropdown/Dropdown.jsx +0 -96
  339. package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +0 -45
  340. package/src/stories/Molecules/FileUpload/FileUpload.css +0 -4
  341. package/src/stories/Molecules/FileUpload/FileUpload.jsx +0 -25
  342. package/src/stories/Molecules/FileUpload/FileUpload.stories.jsx +0 -20
  343. package/src/stories/Molecules/FormField/FormField.css +0 -4
  344. package/src/stories/Molecules/FormField/FormField.jsx +0 -25
  345. package/src/stories/Molecules/FormField/FormField.stories.jsx +0 -20
  346. package/src/stories/Molecules/Header/Header.css +0 -35
  347. package/src/stories/Molecules/Header/Header.jsx +0 -76
  348. package/src/stories/Molecules/Header/Header.stories.jsx +0 -28
  349. package/src/stories/Molecules/IconButton/IconButton.css +0 -4
  350. package/src/stories/Molecules/IconButton/IconButton.jsx +0 -25
  351. package/src/stories/Molecules/IconButton/IconButton.stories.jsx +0 -20
  352. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.css +0 -4
  353. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.jsx +0 -25
  354. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.stories.jsx +0 -20
  355. package/src/stories/Molecules/InputGroup/InputGroup.css +0 -4
  356. package/src/stories/Molecules/InputGroup/InputGroup.jsx +0 -25
  357. package/src/stories/Molecules/InputGroup/InputGroup.stories.jsx +0 -20
  358. package/src/stories/Molecules/InputWithLabel/InputWithLabel.css +0 -4
  359. package/src/stories/Molecules/InputWithLabel/InputWithLabel.jsx +0 -25
  360. package/src/stories/Molecules/InputWithLabel/InputWithLabel.stories.jsx +0 -20
  361. package/src/stories/Molecules/List/List.css +0 -4
  362. package/src/stories/Molecules/List/List.jsx +0 -25
  363. package/src/stories/Molecules/List/List.stories.jsx +0 -20
  364. package/src/stories/Molecules/MediaCard/MediaCard.css +0 -4
  365. package/src/stories/Molecules/MediaCard/MediaCard.jsx +0 -25
  366. package/src/stories/Molecules/MediaCard/MediaCard.stories.jsx +0 -20
  367. package/src/stories/Molecules/Modal/Modal.css +0 -4
  368. package/src/stories/Molecules/Modal/Modal.jsx +0 -25
  369. package/src/stories/Molecules/Modal/Modal.stories.jsx +0 -20
  370. package/src/stories/Molecules/Navbar/Navbar.css +0 -91
  371. package/src/stories/Molecules/Navbar/Navbar.jsx +0 -82
  372. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +0 -70
  373. package/src/stories/Molecules/Notification/Notification.css +0 -4
  374. package/src/stories/Molecules/Notification/Notification.jsx +0 -25
  375. package/src/stories/Molecules/Notification/Notification.stories.jsx +0 -20
  376. package/src/stories/Molecules/PricingTable/PricingTable.css +0 -4
  377. package/src/stories/Molecules/PricingTable/PricingTable.jsx +0 -25
  378. package/src/stories/Molecules/PricingTable/PricingTable.stories.jsx +0 -20
  379. package/src/stories/Molecules/SearchBar/SearchBar.css +0 -69
  380. package/src/stories/Molecules/SearchBar/SearchBar.jsx +0 -73
  381. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +0 -29
  382. package/src/stories/Molecules/SelectTheme/SelectTheme.css +0 -25
  383. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +0 -22
  384. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +0 -24
  385. package/src/stories/Molecules/Sidebar/Sidebar.css +0 -67
  386. package/src/stories/Molecules/Sidebar/Sidebar.jsx +0 -80
  387. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +0 -35
  388. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.css +0 -4
  389. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.jsx +0 -25
  390. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.stories.jsx +0 -20
  391. package/src/stories/Molecules/index.js +0 -58
  392. package/src/stories/Molecules/meta_Molecules.js +0 -47
  393. package/src/stories/Organisms/Profile/UserFriends/UserFriends.context.jsx +0 -15
  394. package/src/stories/Organisms/Profile/UserFriends/UserFriends.css +0 -4
  395. package/src/stories/Organisms/Profile/UserFriends/UserFriends.jsx +0 -13
  396. package/src/stories/Organisms/Profile/UserFriends/UserFriends.stories.jsx +0 -26
  397. package/src/stories/Organisms/Profile/UserPosts/UserPosts.context.jsx +0 -15
  398. package/src/stories/Organisms/Profile/UserPosts/UserPosts.css +0 -4
  399. package/src/stories/Organisms/Profile/UserPosts/UserPosts.jsx +0 -13
  400. package/src/stories/Organisms/Profile/UserPosts/UserPosts.stories.jsx +0 -26
  401. package/src/stories/Organisms/Profile/UserProfile/UserProfile.context.jsx +0 -15
  402. package/src/stories/Organisms/Profile/UserProfile/UserProfile.css +0 -4
  403. package/src/stories/Organisms/Profile/UserProfile/UserProfile.jsx +0 -13
  404. package/src/stories/Organisms/Profile/UserProfile/UserProfile.stories.jsx +0 -26
  405. package/src/stories/Organisms/meta_Organisms.js +0 -39
  406. package/src/stories/Pages/Page/Page.css +0 -69
  407. package/src/stories/Pages/Page/Page.jsx +0 -69
  408. package/src/stories/Pages/Page/Page.stories.js +0 -26
  409. package/src/stories/Pages/Page/Pages.js +0 -31
  410. package/src/stories/Templates/AdminDashboard/AdminDashboard.css +0 -7
  411. package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +0 -24
  412. package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +0 -20
  413. package/src/stories/Templates/CallToAction/CallToAction.css +0 -7
  414. package/src/stories/Templates/CallToAction/CallToAction.jsx +0 -24
  415. package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +0 -20
  416. package/src/stories/Templates/FeaturesList/FeaturesList.css +0 -7
  417. package/src/stories/Templates/FeaturesList/FeaturesList.jsx +0 -24
  418. package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +0 -20
  419. package/src/stories/Templates/FormSection/FormSection.css +0 -7
  420. package/src/stories/Templates/FormSection/FormSection.jsx +0 -24
  421. package/src/stories/Templates/FormSection/FormSection.stories.jsx +0 -20
  422. package/src/stories/Templates/HeroSection/HeroSection.css +0 -7
  423. package/src/stories/Templates/HeroSection/HeroSection.jsx +0 -24
  424. package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +0 -20
  425. package/src/stories/Templates/LocationInfo/LocationInfo.css +0 -7
  426. package/src/stories/Templates/LocationInfo/LocationInfo.jsx +0 -24
  427. package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +0 -20
  428. package/src/stories/Templates/ProductPage/ProductPage.css +0 -7
  429. package/src/stories/Templates/ProductPage/ProductPage.jsx +0 -24
  430. package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +0 -20
  431. package/src/stories/Templates/RegistrationPage/RegistrationPage.css +0 -7
  432. package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +0 -24
  433. package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +0 -20
  434. package/src/stories/Templates/ShoppingCart/ShoppingCart.css +0 -7
  435. package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +0 -24
  436. package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +0 -20
  437. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +0 -7
  438. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +0 -24
  439. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +0 -20
  440. package/src/stories/Templates/SignInPage/SignInPage.css +0 -7
  441. package/src/stories/Templates/SignInPage/SignInPage.jsx +0 -24
  442. package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +0 -20
  443. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +0 -7
  444. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +0 -24
  445. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +0 -20
  446. package/src/stories/Templates/Testimonials/Testimonials.css +0 -7
  447. package/src/stories/Templates/Testimonials/Testimonials.jsx +0 -24
  448. package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +0 -20
  449. package/src/stories/Templates/index.js +0 -33
  450. package/src/stories/Templates/meta_Templates.js +0 -29
  451. package/src/stories/assets/accessibility.png +0 -0
  452. package/src/stories/assets/accessibility.svg +0 -1
  453. package/src/stories/assets/addon-library.png +0 -0
  454. package/src/stories/assets/assets.png +0 -0
  455. package/src/stories/assets/avif-test-image.avif +0 -0
  456. package/src/stories/assets/context.png +0 -0
  457. package/src/stories/assets/discord.svg +0 -1
  458. package/src/stories/assets/docs.png +0 -0
  459. package/src/stories/assets/figma-plugin.png +0 -0
  460. package/src/stories/assets/github.svg +0 -1
  461. package/src/stories/assets/logo.png +0 -0
  462. package/src/stories/assets/logo.svg +0 -106
  463. package/src/stories/assets/share.png +0 -0
  464. package/src/stories/assets/styling.png +0 -0
  465. package/src/stories/assets/test.svg +0 -3
  466. package/src/stories/assets/testing.png +0 -0
  467. package/src/stories/assets/theming.png +0 -0
  468. package/src/stories/assets/tutorials.svg +0 -1
  469. package/src/stories/assets/youtube.svg +0 -1
  470. package/src/themes/README_Styles.md +0 -301
  471. package/src/themes/ThemeProvider.jsx +0 -61
  472. package/src/themes/styles/github/dark.css +0 -0
  473. package/src/themes/styles/github/light.css +0 -0
  474. package/src/themes/styles/neurons/dark.css +0 -247
  475. package/src/themes/styles/neurons/light.css +0 -280
  476. /package/{src/themes/styles/dracula/dark.css → .storybook/preview-head.html} +0 -0
  477. /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
+ };