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
Binary file
@@ -0,0 +1,93 @@
1
+ compact technical brief of the overall approach (props vs config vs viewported configs), with structure, versatility, declarativity, and scope.
2
+
3
+ 1) Plain React props (current/“classic”)
4
+
5
+ Structure: <Footer title="…" links={[…]} socialLinks={[…]} />
6
+ Pros
7
+ • Familiar React ergonomics.
8
+ • Strong TypeScript IntelliSense on each prop.
9
+ • Easy to tree-shake and to reason about in component code.
10
+
11
+ Cons
12
+ • Gets verbose as components grow.
13
+ • Hard to switch “modes” (desktop/mobile/minimal/full) without duplicating prop sets.
14
+ • Not naturally serializable (harder to hydrate from pure JSON or an external CMS).
15
+
16
+ Use when
17
+ • App code writes JSX directly.
18
+ • Variations are small and local.
19
+
20
+ 2) Single config object
21
+
22
+ Structure: <Footer config={{ title:"…", links:[…], socialLinks:[…] }} />
23
+ Pros
24
+ • Declarative & serializable: perfect for JSON-driven UIs, CMS/Llama/Lego-style composition.
25
+ • One entrypoint for “shape evolution”: adding/removing options doesn’t churn the JSX signature.
26
+ • Easier to diff/patch at runtime (hot updates, remote editing, A/B tests).
27
+
28
+ Cons
29
+ • Slightly less IDE precision unless you type config well (e.g., FooterConfig).
30
+ • If you mix both props and config, you need clear precedence rules.
31
+
32
+ Use when
33
+ • You want to drive UI from data (JSON), live-edit, or swap configurations on the fly.
34
+ • You’re aiming at a “player” model later (render UIs from configs).
35
+
36
+ Recommended pattern
37
+ • Support both: keep top-level props for ergonomics, plus an optional config. Component merges: final = { ...defaults, ...config, ...propsOverrides }.
38
+
39
+ 3) Viewport-aware configs (declarative responsiveness)
40
+
41
+ Structure A (per-prop):
42
+ size="pill" or size={{ xs: "icons", md: "pill" }}
43
+
44
+ Structure B (whole-config overrides):
45
+
46
+ <StickyOptionsTop
47
+ config={{ items: desktopItems }}
48
+ viewport={{
49
+ xs: { config: { items: mobileItems } },
50
+ sm: { config: { items: mobileItems } }
51
+ }}
52
+ />
53
+
54
+ (Resolved by your viewport.ts: resolveViewportProp / resolveResponsiveConfig.)
55
+
56
+ Pros
57
+ • Responsiveness is data, not scattered useMediaQuery logic.
58
+ • Plays great with JSON: one base config + sparse overrides per breakpoint.
59
+ • Testable & SSR-friendly (you can inject a width override).
60
+
61
+ Cons
62
+ • Slightly more indirection; you need a tiny resolver layer (which you now have).
63
+ • Authors must learn the pattern (base + per-breakpoint overrides).
64
+
65
+ Use when
66
+ • The same component must present different variants by viewport.
67
+ • You want a single source of truth for mobile/desktop/XL differences.
68
+
69
+ Putting it together (recommended architecture)
70
+ • Component API supports both:
71
+ • Classic props (ergonomic for app devs).
72
+ • config (for JSON-driven/declarative scenarios).
73
+ • Optional viewport to override either specific props or the whole config per breakpoint.
74
+ • Resolver layer (inside each component):
75
+ 1. Gather defaults.
76
+ 2. Merge config.
77
+ 3. Apply classic prop overrides (if both exist, props win).
78
+ 4. Apply viewport overrides using your resolveViewportProp/resolveResponsiveConfig.
79
+ 5. Render.
80
+
81
+ This yields:
82
+ • Versatility: JSX convenience and data-driven control.
83
+ • Declarativity: All variants can be expressed as JSON and swapped live.
84
+ • Scope/Future-proofing: Same pattern works for a headless “GUI Player,” CMS, LLM emitters, or Web Components later (just feed the same config/viewport JSON).
85
+ • Low coupling: Components don’t import useMediaQuery everywhere; the viewport resolver centralizes responsive decisions.
86
+
87
+ Migration strategy (quick)
88
+ 1. Keep your existing props as-is.
89
+ 2. Add optional config and viewport to priority-merge.
90
+ 3. Start using viewport.ts in 1–2 components (e.g., StickyOptionsTop, Footer) to prove the flow.
91
+ 4. Document the precedence rule: defaults < config < props < viewport overrides.
92
+
93
+ This gives you the best of all worlds: ergonomic props for developers, clean JSON for declarative UIs, and a compact, testable way to express responsive variants without scattering logic.
@@ -0,0 +1,109 @@
1
+ Ocultar/mostrar barras, dar pantalla completa al lienzo, y encima montar un sistema de colocación (2D/3D) que se hidrate desde JSON.
2
+
3
+ Aquí te dejo un plan claro (sin código) para que lo aterricemos paso a paso:
4
+
5
+ 1) API del Shell (layout declarativo)
6
+
7
+ Define un spec de layout que controle visibilidad, posición y estilo de las barras (y que sea mutable en runtime):
8
+
9
+ {
10
+ "layout": {
11
+ "navbar": { "visible": true, "position": "fixed" },
12
+ "leftDrawer": { "visible": true, "width": 260 },
13
+ "rightDrawer": { "visible": false, "width": 280 },
14
+ "stickyOptions": { "visible": false },
15
+ "footer": { "visible": true },
16
+ "canvas": {
17
+ "mode": "2d", // "2d" | "3d"
18
+ "fullscreen": false, // si true, el shell oculta barras y expande el lienzo
19
+ "bg": "transparent"
20
+ }
21
+ }
22
+ }
23
+
24
+ • El shell aplica el spec y actualiza insets (como ya haces) cuando algo es permanente.
25
+ • Si canvas.fullscreen = true, el shell oculta NavBar/Drawers/Sticky/Footer y setea insets a 0 → el “campo” queda a pantalla completa.
26
+
27
+ 2) Motor de colocación (2D primero, 3D después)
28
+
29
+ Para el colocador 2D, usa una cuadrícula declarativa. Piensa en áreas CSS Grid con responsive:
30
+
31
+ {
32
+ "canvas2D": {
33
+ "grid": {
34
+ "template": {
35
+ "xs": { "cols": "1fr", "rows": "auto 1fr auto", "areas": ["header","content","hud"] },
36
+ "md": { "cols": "240px 1fr", "rows": "auto 1fr", "areas": ["sidebar header","sidebar content"] }
37
+ },
38
+ "gap": 8
39
+ },
40
+ "items": [
41
+ { "id": "header", "component": { "type": "Text", "props": { "variant": "h4", "children": "Scene" } } },
42
+ { "id": "sidebar", "component": { "type": "Panel", "props": { "title": "Layers" } } },
43
+ { "id": "content", "component": { "type": "Viewport2D", "props": { "controls": true } } },
44
+ { "id": "hud", "component": { "type": "StickyOptionsTop", "props": { "items": [/* … */] } } }
45
+ ]
46
+ }
47
+ }
48
+
49
+ • template define áreas por breakpoint (xs/md/etc.).
50
+ • items asigna qué se renderiza en cada área (resuelto por tu registry + resolvers).
51
+ • Esto te da un “layout engine” 2D declarativo, perfecto para AR-lite (HUDs, overlays).
52
+
53
+ Para 3D, la misma idea, pero con un Viewport3D (three.js/Babylon) como componente. El grid sigue sirviendo para HUDs y paneles laterales mientras el lienzo 3D ocupa el área content.
54
+
55
+ 3) Controles de visibilidad y modos (runtime)
56
+
57
+ Agrega un canal simple de acciones declarativas para mutar el spec:
58
+
59
+ {
60
+ "actions": [
61
+ { "id": "toggleFull", "type": "toggle", "path": "layout.canvas.fullscreen" },
62
+ { "id": "showRight", "type": "set", "path": "layout.rightDrawer.visible", "value": true }
63
+ ],
64
+ "bindings": [
65
+ { "event": "kbd:F", "action": "toggleFull" },
66
+ { "event": "ui:openContext", "action": "showRight" }
67
+ ]
68
+ }
69
+
70
+ • El shell expone un dispatcher que entiende toggle/set sobre rutas JSON (path).
71
+ • Permite atajos (teclado), botones de UI, o señales externas (servidor/IA).
72
+
73
+ 4) Resolver genérico + resolvers por componente
74
+ • Mantén los resolvers por componente (Button, Link, NavBar, Viewport2D/3D, etc.) para mapear JSON → props reales.
75
+ • El resolver genérico (inyector) toma el árbol JSON y delega por type al resolver adecuado (registrado en tu GuiRegistry).
76
+ • Así puedes hidratar todo el shell (barras + canvas + grid + items) desde un único spec.
77
+
78
+ 5) Slots y Portal (overlay HUD)
79
+ • Define “slots” especiales (ej. overlay, hud, notifications) que rendericen vía portal encima del canvas.
80
+ • Tus StickyOptionsTop u otras capas pueden vivir ahí sin afectar insets del shell.
81
+
82
+ 6) Persistencia + Replay
83
+ • Guarda el spec actual (y su historial) en localStorage o en backend para reproducir estados y compartir escenas/pantallas.
84
+ • Útil para AR colaborativo y “deep links” a UIs derivadas por IA.
85
+
86
+ 7) Rendimiento
87
+ • Evita re-render global del shell: cuando mutas visibilidad o áreas, memoriza subárboles.
88
+ • Para 3D, desacopla el ciclo de render del estado de React cuando sea necesario.
89
+
90
+ 8) Roadmap chiquito (prioridades)
91
+ 1. Spec de layout con visibilidad + fullscreen (ya puedes hacerlo con tu shell actual).
92
+ 2. Grid 2D declarativo con áreas responsive (pequeño motor CSS Grid).
93
+ 3. Slots/Portal para HUD/Overlay.
94
+ 4. Registry + resolvers para los componentes que entren al grid (ya lo estás haciendo).
95
+ 5. Acciones declarativas (toggle/set) + bindings básicos.
96
+ 6. Viewport3D como primitivo (después).
97
+
98
+
99
+
100
+ Con esto:
101
+ • Puedes ocultar/mostrar barras a voluntad o entrar en fullscreen.
102
+ • Tienes un lienzo central controlado por spec.
103
+ • Puedes colocar elementos 2D (y luego 3D) de forma declarativa y responsive.
104
+ • Todo eso conversando con tu registry y los resolvers que ya estás construyendo.
105
+
106
+ Cuando quieras, te redacto un spec mínimo de ejemplo (end-to-end) que tu shell pueda consumir hoy mismo para:
107
+ 1. navbar visible, leftDrawer visible, rightDrawer oculto;
108
+ 2. grid 2D con sidebar/header/content;
109
+ 3. botón que activa fullscreen.
package/package.json CHANGED
@@ -1,67 +1,85 @@
1
1
  {
2
2
  "name": "this.gui",
3
- "version": "1.0.17",
4
- "description": "This Graphic User Interface.",
3
+ "private": false,
4
+ "version": "1.1.0",
5
+ "type": "module",
5
6
  "main": "dist/this-gui.umd.js",
6
7
  "module": "dist/this-gui.es.js",
7
- "type": "module",
8
- "author": "suiGn",
9
- "license": "MIT",
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/neurons-me/GUI.git"
8
+ "types": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "import": "./dist/this-gui.es.js",
13
+ "require": "./dist/this-gui.umd.js"
14
+ }
13
15
  },
14
16
  "scripts": {
15
- "start": "node ./src/scripts/logASCIIArt.js && concurrently \"vite --open\" \"storybook dev -p 6006 --no-open\"",
16
- "dev": "vite",
17
17
  "build": "vite build",
18
- "prepublishOnly": "npm run build",
19
- "storybook": "storybook dev -p ${STORYBOOK_PORT:-6006}",
20
- "build-storybook": "storybook build",
21
- "postinstall": "node src/scripts/postinstall.js"
18
+ "lint": "eslint .",
19
+ "dev": "vite",
20
+ "dev:lib": "vite build --watch",
21
+ "preview": "vite preview",
22
+ "storybook": "STORYBOOK=true storybook dev -p 6006",
23
+ "build-storybook": "STORYBOOK=true storybook build",
24
+ "chromatic": "STORYBOOK=true chromatic --project-token=$CHROMATIC_PROJECT_TOKEN"
22
25
  },
23
26
  "dependencies": {
24
- "@storybook/builder-vite": "^8.2.9",
25
- "classnames": "^2.5.1",
26
- "dotenv": "^16.4.5",
27
- "figlet": "^1.7.0",
28
- "postcss": "^8.4.45",
29
- "react-icons": "^5.3.0",
30
- "react-router-dom": "^6.26.2"
31
- },
32
- "peerDependencies": {
33
- "react": "^18.0.0",
34
- "react-dom": "^18.0.0"
27
+ "@emotion/react": "^11.14.0",
28
+ "@emotion/styled": "^11.14.0",
29
+ "@lexical/link": "^0.33.1",
30
+ "@lexical/list": "^0.33.1",
31
+ "@lexical/react": "^0.33.1",
32
+ "@lexical/rich-text": "^0.33.1",
33
+ "@mdx-js/loader": "^3.1.0",
34
+ "@mdx-js/react": "^3.1.0",
35
+ "@mdx-js/rollup": "^3.1.0",
36
+ "@mui/material": "^6.4.6",
37
+ "@storybook/addon-docs": "^9.1.5",
38
+ "file-saver": "^2.0.5",
39
+ "js-cookie": "^3.0.5",
40
+ "lexical": "^0.33.1",
41
+ "lucide-react": "^0.542.0",
42
+ "react-draggable": "^4.4.6",
43
+ "react-feather": "^2.0.10",
44
+ "react-syntax-highlighter": "^15.6.6"
35
45
  },
36
46
  "devDependencies": {
37
- "@chromatic-com/storybook": "^1.8.0",
38
- "@mdx-js/loader": "^3.0.1",
39
- "@mdx-js/react": "^3.0.1",
40
- "@mdx-js/rollup": "^3.0.1",
41
- "@storybook/addon-docs": "^8.3.4",
42
- "@storybook/addon-essentials": "^8.3.0",
43
- "@storybook/addon-interactions": "^8.3.0",
44
- "@storybook/addon-links": "^8.3.0",
45
- "@storybook/addon-onboarding": "^8.2.9",
46
- "@storybook/blocks": "^8.2.9",
47
- "@storybook/manager-api": "^8.2.9",
48
- "@storybook/react": "^8.3.0",
49
- "@storybook/react-vite": "^8.3.4",
50
- "@storybook/test": "^8.2.9",
51
- "@storybook/theming": "^8.2.9",
52
- "@vitejs/plugin-react": "^4.3.2",
53
- "concurrently": "^9.0.1",
54
- "cross-env": "^7.0.3",
47
+ "@chromatic-com/storybook": "^4.1.1",
48
+ "@eslint/js": "^9.21.0",
49
+ "@mui/icons-material": "^6.5.0",
50
+ "@storybook/addon-a11y": "^9.1.4",
51
+ "@storybook/addon-onboarding": "^9.1.4",
52
+ "@storybook/addon-themes": "^9.1.4",
53
+ "@storybook/addon-vitest": "^9.1.4",
54
+ "@storybook/react-vite": "^9.1.4",
55
+ "@types/node": "^24.3.2",
56
+ "@types/react": "^19.1.13",
57
+ "@types/react-dom": "^19.1.9",
58
+ "@vitejs/plugin-react": "^4.3.4",
59
+ "@vitejs/plugin-react-swc": "^3.8.0",
60
+ "@vitest/browser": "^3.2.4",
61
+ "@vitest/coverage-v8": "^3.2.4",
62
+ "chromatic": "^13.1.4",
63
+ "eslint": "^9.21.0",
64
+ "eslint-plugin-react-hooks": "^5.1.0",
65
+ "eslint-plugin-react-refresh": "^0.4.19",
66
+ "eslint-plugin-storybook": "^9.1.4",
67
+ "globals": "^15.15.0",
68
+ "playwright": "^1.55.0",
55
69
  "prop-types": "^15.8.1",
56
- "react": "^18.0.0",
57
- "react-dom": "^18.0.0",
58
- "storybook": "^8.2.9",
59
- "vite": "^5.4.8"
70
+ "react-router-dom": "^6.30.1",
71
+ "storybook": "^9.1.4",
72
+ "typescript": "^5.9.2",
73
+ "vite": "^6.2.0",
74
+ "vitest": "^3.2.4"
75
+ },
76
+ "peerDependencies": {
77
+ "react": "^19.0.0",
78
+ "react-dom": "^19.0.0"
60
79
  },
61
- "files": [
62
- "dist",
63
- "src",
64
- "README.md",
65
- "package.json"
66
- ]
80
+ "eslintConfig": {
81
+ "extends": [
82
+ "plugin:storybook/recommended"
83
+ ]
84
+ }
67
85
  }
package/public/GUI.png ADDED
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,52 @@
1
+ import { Box } from '@mui/material';
2
+
3
+ // Gridme is a generic grid layout component based on MUI's Box.
4
+ // It allows you to quickly define a grid layout with customizable number of columns and spacing.
5
+ // You can also control the maximum width of each grid item via the `itemMaxWidth` prop.
6
+ // This wrapper is part of this.GUI's declarative approach to layout construction.
7
+ const Gridme = ({
8
+ children,
9
+ columns = 3,
10
+ columnGap = '0.5rem',
11
+ rowGap = '1rem',
12
+ marginTop = '0px',
13
+ marginBottom = '0px',
14
+ sx = {},
15
+ }) => {
16
+ return (
17
+ <Box
18
+ sx={{
19
+ display: 'grid',
20
+ gridTemplateColumns: `repeat(${columns}, 1fr)`,
21
+ columnGap: columnGap,
22
+ rowGap: rowGap,
23
+ width: '100%',
24
+ alignItems: 'stretch',
25
+ justifyItems: 'stretch',
26
+ mt: marginTop,
27
+ mb: marginBottom,
28
+ '& > *': {
29
+ width: '100%',
30
+ height: '100%',
31
+ },
32
+ ...sx,
33
+ }}
34
+ >
35
+ {children}
36
+ </Box>
37
+ );
38
+ };
39
+
40
+ export default Gridme;
41
+
42
+ // Example usage:
43
+ //
44
+ // import Gridme from './Gridme';
45
+ //
46
+ // const Example = () => (
47
+ // <Gridme columns={3} gap="1rem">
48
+ // <Box sx={{ backgroundColor: 'red', height: 100 }} />
49
+ // <Box sx={{ backgroundColor: 'blue', height: 100 }} />
50
+ // <Box sx={{ backgroundColor: 'green', height: 100 }} />
51
+ // </Gridme>
52
+ // );
@@ -0,0 +1,65 @@
1
+ import { Box, Typography } from '@mui/material';
2
+ import * as Icons from 'react-feather';
3
+ import PropTypes from 'prop-types';
4
+ import { Link } from 'react-router-dom';
5
+
6
+ const LilBox = ({
7
+ icon,
8
+ featherIcon,
9
+ label,
10
+ href,
11
+ aspectRatio = '5 / 4',
12
+ }) => {
13
+ const FeatherIcon = featherIcon && Icons[featherIcon] ? Icons[featherIcon] : null;
14
+
15
+ return (
16
+ <Box
17
+ component={href ? Link : 'div'}
18
+ to={href}
19
+ sx={{
20
+ width: '100%',
21
+ aspectRatio,
22
+ backgroundColor: (theme) =>
23
+ theme.palette.mode === 'dark'
24
+ ? 'rgba(255, 255, 255, 0.05)'
25
+ : 'rgba(0, 0, 0, 0.03)',
26
+ border: '1px solid',
27
+ borderColor: (theme) =>
28
+ theme.palette.mode === 'dark'
29
+ ? 'rgba(255, 255, 255, 0.1)'
30
+ : 'rgba(0, 0, 0, 0.1)',
31
+ borderRadius: '8px',
32
+ display: 'flex',
33
+ flexDirection: 'column',
34
+ alignItems: 'center',
35
+ justifyContent: 'center',
36
+ color: (theme) => theme.palette.text.primary,
37
+ fontSize: '1rem',
38
+ fontWeight: 300,
39
+ transition: 'transform 0.2s ease',
40
+ textDecoration: 'none',
41
+ cursor: 'pointer',
42
+ '&:hover': {
43
+ transform: 'scale(1.05)',
44
+ },
45
+ }}
46
+ >
47
+ <Box sx={{ fontSize: '1.5rem', mb: 0.5 }}>
48
+ {icon ? icon : FeatherIcon ? <FeatherIcon size={24} /> : null}
49
+ </Box>
50
+ <Typography variant="body2" align="center">
51
+ {label}
52
+ </Typography>
53
+ </Box>
54
+ );
55
+ };
56
+
57
+ LilBox.propTypes = {
58
+ icon: PropTypes.node,
59
+ featherIcon: PropTypes.string,
60
+ label: PropTypes.string.isRequired,
61
+ href: PropTypes.string,
62
+ aspectRatio: PropTypes.string,
63
+ };
64
+
65
+ export default LilBox;
@@ -0,0 +1,106 @@
1
+ import { Link as RouterLink } from "react-router-dom";
2
+ import { Box, Typography, Card, CardActionArea, CardContent } from "@mui/material";
3
+
4
+ /**
5
+ * ModuleCard
6
+ * Clickable card for modules/features.
7
+ *
8
+ * Props:
9
+ * - title: string (required)
10
+ * - description: string
11
+ * - image: string (url to image)
12
+ * - href?: string -> preferred navigation prop (internal route or external URL)
13
+ * - link?: string -> alias of href for backward compatibility
14
+ * - target?: string -> optional target for external links (e.g., "_blank")
15
+ *
16
+ * Behavior:
17
+ * - If `href` (or `link`) starts with http/https, renders an <a>.
18
+ * - Otherwise, renders a React Router <Link> for client-side routing.
19
+ * - Avoids nested anchors: do NOT wrap ModuleCard with another <Link>.
20
+ */
21
+ const ModuleCard = ({ title, description, image, href, link, target }) => {
22
+ const to = href ?? link ?? null;
23
+ const isExternal = typeof to === "string" && /^https?:\/\//i.test(to);
24
+
25
+ // Decide which props to pass to CardActionArea to avoid <a> inside <a>.
26
+ const navProps = to
27
+ ? isExternal
28
+ ? { component: "a", href: to, target: target ?? "_self", rel: "noopener noreferrer" }
29
+ : { component: RouterLink, to }
30
+ : {}; // No navigation if no href/link provided
31
+
32
+ return (
33
+ <Card
34
+ sx={{
35
+ height: "100%",
36
+ backgroundColor: "background.paper",
37
+ boxShadow: 2,
38
+ borderRadius: 2,
39
+ "&:hover": {
40
+ boxShadow: 4,
41
+ transform: "translateY(-2px)",
42
+ transition: "0.3s ease-in-out",
43
+ },
44
+ }}
45
+ >
46
+ <CardActionArea
47
+ {...navProps}
48
+ sx={{ height: "100%", display: "flex", flexDirection: "column" }}
49
+ >
50
+ <CardContent
51
+ sx={{
52
+ display: "flex",
53
+ flexDirection: "column",
54
+ alignItems: "center",
55
+ justifyContent: "center",
56
+ textAlign: "center",
57
+ padding: 2,
58
+ height: "100%",
59
+ }}
60
+ >
61
+ {/* Image */}
62
+ {image && (
63
+ <Box
64
+ component="img"
65
+ src={image}
66
+ alt={title}
67
+ sx={{
68
+ width: "80px",
69
+ height: "80px",
70
+ marginBottom: 1,
71
+ objectFit: "contain",
72
+ }}
73
+ />
74
+ )}
75
+
76
+ {/* Title */}
77
+ <Typography
78
+ variant="body1"
79
+ sx={{
80
+ fontWeight: 600,
81
+ color: "text.primary",
82
+ marginBottom: 1,
83
+ }}
84
+ >
85
+ {title}
86
+ </Typography>
87
+
88
+ {/* Description */}
89
+ {description && (
90
+ <Typography
91
+ variant="body2"
92
+ sx={{
93
+ fontSize: "0.85rem",
94
+ color: "text.secondary",
95
+ }}
96
+ >
97
+ {description}
98
+ </Typography>
99
+ )}
100
+ </CardContent>
101
+ </CardActionArea>
102
+ </Card>
103
+ );
104
+ };
105
+
106
+ export default ModuleCard;