this.gui 1.0.18 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/.storybook/main.js +40 -0
  2. package/.storybook/manager-head.html +13 -0
  3. package/.storybook/manager.js +15 -0
  4. package/.storybook/preview.tsx +54 -0
  5. package/.storybook/vitest.setup.js +6 -0
  6. package/.storybook/withLayout.tsx +18 -0
  7. package/README.md +1 -220
  8. package/dist/GUI.png +0 -0
  9. package/dist/GUI2.png +0 -0
  10. package/dist/favicon.ico +0 -0
  11. package/dist/this-gui.es.js +108493 -5056
  12. package/dist/this-gui.umd.js +239 -44
  13. package/dist/this.GUI.png +0 -0
  14. package/nodes/overall approach.md +93 -0
  15. package/notes/Proyect.md +109 -0
  16. package/package.json +71 -54
  17. package/public/GUI.png +0 -0
  18. package/public/GUI2.png +0 -0
  19. package/public/favicon.ico +0 -0
  20. package/public/this.GUI.png +0 -0
  21. package/src/components/generics/Cards/Gridme.jsx +52 -0
  22. package/src/components/generics/Cards/LilBox.jsx +65 -0
  23. package/src/components/generics/Cards/ModuleCard.jsx +106 -0
  24. package/src/components/generics/Chats/FullChatBot.jsx +223 -0
  25. package/src/components/generics/Code/CodeBlock.jsx +33 -0
  26. package/src/components/generics/Feedback/Callout.jsx +92 -0
  27. package/src/components/generics/Layout/GridX.jsx +29 -0
  28. package/src/components/generics/Layout/Hero2.jsx +132 -0
  29. package/src/components/generics/Layout/PageContainer.jsx +29 -0
  30. package/src/components/generics/Layout/PageDivider.jsx +20 -0
  31. package/src/components/generics/Layout/Section.jsx +43 -0
  32. package/src/components/generics/Layout/SectionHeader.jsx +21 -0
  33. package/src/components/generics/Media/Img.jsx +58 -0
  34. package/src/components/generics/Media/VideoEmbed.jsx +51 -0
  35. package/src/components/generics/Organization/TableOfContents.jsx +51 -0
  36. package/src/components/generics/Organization/Tabs.jsx +45 -0
  37. package/src/components/generics/Text/TextList.jsx +41 -0
  38. package/src/components/generics/Text/TextParagraph.jsx +28 -0
  39. package/src/components/generics/Text/TextQuote.jsx +23 -0
  40. package/src/components/generics/Text/TextTitle.jsx +44 -0
  41. package/src/components/this.me/MeActive.jsx +24 -0
  42. package/src/components/this.me/MeFloating.jsx +183 -0
  43. package/src/components/this.me/MeInactive.jsx +21 -0
  44. package/src/components/this.me/MeListUs.jsx +40 -0
  45. package/src/components/this.me/MeState.jsx +25 -0
  46. package/src/components/this.me/hooks/useMe.js +43 -0
  47. package/src/context/GuiProvider.tsx +243 -0
  48. package/src/gui/atoms/AppBar/AppBar.resolver.tsx +77 -0
  49. package/src/gui/atoms/AppBar/AppBar.stories.tsx +232 -0
  50. package/src/gui/atoms/AppBar/AppBar.tsx +10 -0
  51. package/src/gui/atoms/Box/Box.resolver.tsx +171 -0
  52. package/src/gui/atoms/Box/Box.stories.tsx +271 -0
  53. package/src/gui/atoms/Box/Box.tsx +15 -0
  54. package/src/gui/atoms/Button/Button.resolver.tsx +98 -0
  55. package/src/gui/atoms/Button/Button.stories.tsx +225 -0
  56. package/src/gui/atoms/Button/Button.tsx +40 -0
  57. package/src/gui/atoms/Collapse/Collapse.resolver.tsx +85 -0
  58. package/src/gui/atoms/Collapse/Collapse.stories.tsx +136 -0
  59. package/src/gui/atoms/Collapse/Collapse.tsx +17 -0
  60. package/src/gui/atoms/Divider/Divider.resolver.tsx +95 -0
  61. package/src/gui/atoms/Divider/Divider.stories.tsx +109 -0
  62. package/src/gui/atoms/Divider/Divider.tsx +14 -0
  63. package/src/gui/atoms/Drawer/Drawer.resolver.tsx +116 -0
  64. package/src/gui/atoms/Drawer/Drawer.stories.tsx +229 -0
  65. package/src/gui/atoms/Drawer/Drawer.tsx +8 -0
  66. package/src/gui/atoms/IconButton/IconButton.resolver.tsx +135 -0
  67. package/src/gui/atoms/IconButton/IconButton.stories.tsx +141 -0
  68. package/src/gui/atoms/IconButton/IconButton.tsx +22 -0
  69. package/src/gui/atoms/Link/Link.resolver.tsx +75 -0
  70. package/src/gui/atoms/Link/Link.stories.tsx +164 -0
  71. package/src/gui/atoms/Link/Link.tsx +14 -0
  72. package/src/gui/atoms/List/List.resolver.tsx +95 -0
  73. package/src/gui/atoms/List/List.stories.tsx +143 -0
  74. package/src/gui/atoms/List/List.tsx +20 -0
  75. package/src/gui/atoms/ListItem/ListItem.resolver.tsx +88 -0
  76. package/src/gui/atoms/ListItem/ListItem.stories.tsx +157 -0
  77. package/src/gui/atoms/ListItem/ListItem.tsx +19 -0
  78. package/src/gui/atoms/ListItemButton/ListItemButton.resolver.tsx +208 -0
  79. package/src/gui/atoms/ListItemButton/ListItemButton.stories.tsx +161 -0
  80. package/src/gui/atoms/ListItemButton/ListItemButton.tsx +15 -0
  81. package/src/gui/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
  82. package/src/gui/atoms/ListItemIcon/ListItemIcon.stories.tsx +135 -0
  83. package/src/gui/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
  84. package/src/gui/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
  85. package/src/gui/atoms/ListItemText/ListItemText.stories.tsx +162 -0
  86. package/src/gui/atoms/ListItemText/ListItemText.tsx +15 -0
  87. package/src/gui/atoms/Menu/Menu.resolver.tsx +112 -0
  88. package/src/gui/atoms/Menu/Menu.stories.tsx +168 -0
  89. package/src/gui/atoms/Menu/Menu.tsx +17 -0
  90. package/src/gui/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
  91. package/src/gui/atoms/MenuItem/MenuItem.stories.tsx +138 -0
  92. package/src/gui/atoms/MenuItem/MenuItem.tsx +14 -0
  93. package/src/gui/atoms/Paper/Paper.resolver.tsx +98 -0
  94. package/src/gui/atoms/Paper/Paper.stories.tsx +191 -0
  95. package/src/gui/atoms/Paper/Paper.tsx +17 -0
  96. package/src/gui/atoms/Stack/Stack.resolver.tsx +94 -0
  97. package/src/gui/atoms/Stack/Stack.stories.tsx +166 -0
  98. package/src/gui/atoms/Stack/Stack.tsx +15 -0
  99. package/src/gui/atoms/Switch/Switch.resolver.tsx +53 -0
  100. package/src/gui/atoms/Switch/Switch.stories.tsx +242 -0
  101. package/src/gui/atoms/Switch/Switch.tsx +22 -0
  102. package/src/gui/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
  103. package/src/gui/atoms/Toolbar/Toolbar.stories.tsx +163 -0
  104. package/src/gui/atoms/Toolbar/Toolbar.tsx +16 -0
  105. package/src/gui/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
  106. package/src/gui/atoms/Tooltip/Tooltip.stories.tsx +118 -0
  107. package/src/gui/atoms/Tooltip/Tooltip.tsx +78 -0
  108. package/src/gui/atoms/Typography/Typography.resolver.tsx +158 -0
  109. package/src/gui/atoms/Typography/Typography.stories.tsx +228 -0
  110. package/src/gui/atoms/Typography/Typography.tsx +27 -0
  111. package/src/gui/atoms.tsx +129 -0
  112. package/src/gui/index.ts +69 -0
  113. package/src/gui/molecules/AppBars/Footer/Footer.resolver.tsx +104 -0
  114. package/src/gui/molecules/AppBars/Footer/Footer.stories.tsx +499 -0
  115. package/src/gui/molecules/AppBars/Footer/Footer.tsx +307 -0
  116. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.resolver.tsx +75 -0
  117. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.stories.tsx +61 -0
  118. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.tsx +511 -0
  119. package/src/gui/molecules/AppBars/LeftSidebar/SidebarToggleButton.tsx +51 -0
  120. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.resolver.tsx +97 -0
  121. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.stories.tsx +294 -0
  122. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.tsx +295 -0
  123. package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.stories.tsx +480 -0
  124. package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.tsx +484 -0
  125. package/src/gui/molecules/AppBars/TopBar/TopBar.resolver.tsx +84 -0
  126. package/src/gui/molecules/AppBars/TopBar/TopBar.stories.tsx +297 -0
  127. package/src/gui/molecules/AppBars/TopBar/TopBar.tsx +299 -0
  128. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.resolver.tsx +72 -0
  129. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.stories.tsx +154 -0
  130. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.tsx +100 -0
  131. package/src/gui/molecules/Utilities/ThemeSelector.jsx +281 -0
  132. package/src/gui/utils/nodeID.ts +8 -0
  133. package/src/index.js +111 -0
  134. package/src/registry/GuiRegistry.ts +19 -0
  135. package/src/registry/factory.ts +12 -0
  136. package/src/registry/index.ts +3 -0
  137. package/src/registry/types.ts +6 -0
  138. package/src/stories/01.Home.mdx +22 -0
  139. package/src/stories/02.Understanding.This.GUI.md +149 -0
  140. package/src/stories/03.Themes.mdx +235 -0
  141. package/src/stories/04.GuiProvider.md +126 -0
  142. package/src/stories/04.GuiProvider.mdx +129 -0
  143. package/src/stories/Theme/BreakPointsAndGrids.stories.jsx +185 -0
  144. package/src/stories/Theme/Colors.stories.jsx +245 -0
  145. package/src/stories/Theme/Icons.stories.jsx +313 -0
  146. package/src/stories/Theme/Motion.stories.jsx +206 -0
  147. package/src/stories/Theme/ShadowAndElevation.stories.jsx +95 -0
  148. package/src/stories/Theme/SpacingAndRadius.stories.jsx +129 -0
  149. package/src/stories/Theme/Typography.stories.jsx +211 -0
  150. package/src/stories/assets/this.GUI.png +0 -0
  151. package/src/templates/BrowserExtension.jsx +56 -0
  152. package/src/templates/Layout.tsx +36 -0
  153. package/src/templates/Minimal.jsx +123 -0
  154. package/src/templates/Shell/Shell.jsx +107 -0
  155. package/src/themes/fromTokens.ts +352 -0
  156. package/src/themes/icons/Icon.tsx +137 -0
  157. package/src/themes/icons/packs/Lucide.ts +72 -0
  158. package/src/themes/icons/packs/Material.ts +87 -0
  159. package/src/themes/icons/registry.tsx +178 -0
  160. package/src/themes/index.js +116 -0
  161. package/src/themes/theme.d.ts +116 -0
  162. package/src/themes/tokens/global.tokens.json +107 -0
  163. package/src/themes/tokens/neurons/dark.tokens.json +45 -0
  164. package/src/themes/tokens/neurons/light.tokens.json +51 -0
  165. package/src/themes/tokens/neurons/manifest.json +23 -0
  166. package/src/types/theme.d.ts +32 -0
  167. package/src/types/viewport.ts +132 -0
  168. package/tsconfig.json +24 -0
  169. package/vite.config.js +74 -0
  170. package/dist/style.css +0 -1
  171. package/src/App.jsx +0 -39
  172. package/src/CreatePage.jsx +0 -61
  173. package/src/MDXEditor.jsx +0 -51
  174. package/src/MdxProvider.jsx +0 -20
  175. package/src/Page.jsx +0 -28
  176. package/src/PageDashboard.jsx +0 -56
  177. package/src/SiteBuilder.jsx +0 -108
  178. package/src/example.json +0 -43
  179. package/src/index.mdx +0 -164
  180. package/src/main.jsx +0 -15
  181. package/src/scripts/ComponentRegistry.js +0 -70
  182. package/src/scripts/logASCIIArt.js +0 -12
  183. package/src/scripts/postinstall.js +0 -111
  184. package/src/scripts/renderComponents.js +0 -11
  185. package/src/stories/Atoms/Alert/Alert.css +0 -211
  186. package/src/stories/Atoms/Alert/Alert.jsx +0 -56
  187. package/src/stories/Atoms/Alert/Alert.stories.jsx +0 -167
  188. package/src/stories/Atoms/Audio/Audio.css +0 -259
  189. package/src/stories/Atoms/Audio/Audio.jsx +0 -216
  190. package/src/stories/Atoms/Audio/Audio.stories.jsx +0 -191
  191. package/src/stories/Atoms/Badge/Badge.css +0 -249
  192. package/src/stories/Atoms/Badge/Badge.jsx +0 -54
  193. package/src/stories/Atoms/Badge/Badge.stories.jsx +0 -121
  194. package/src/stories/Atoms/Button/Button.css +0 -332
  195. package/src/stories/Atoms/Button/Button.jsx +0 -44
  196. package/src/stories/Atoms/Button/Button.stories.jsx +0 -209
  197. package/src/stories/Atoms/Caption/Caption.css +0 -169
  198. package/src/stories/Atoms/Caption/Caption.jsx +0 -72
  199. package/src/stories/Atoms/Caption/Caption.stories.jsx +0 -207
  200. package/src/stories/Atoms/Checkbox/Checkbox.css +0 -182
  201. package/src/stories/Atoms/Checkbox/Checkbox.jsx +0 -83
  202. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +0 -112
  203. package/src/stories/Atoms/Container/Container.css +0 -470
  204. package/src/stories/Atoms/Container/Container.jsx +0 -116
  205. package/src/stories/Atoms/Container/Container.stories.jsx +0 -145
  206. package/src/stories/Atoms/Divider/Divider.css +0 -147
  207. package/src/stories/Atoms/Divider/Divider.jsx +0 -62
  208. package/src/stories/Atoms/Divider/Divider.stories.jsx +0 -105
  209. package/src/stories/Atoms/Grid/Grid.css +0 -160
  210. package/src/stories/Atoms/Grid/Grid.jsx +0 -43
  211. package/src/stories/Atoms/Grid/Grid.stories.jsx +0 -84
  212. package/src/stories/Atoms/Heading/Heading.css +0 -112
  213. package/src/stories/Atoms/Heading/Heading.jsx +0 -69
  214. package/src/stories/Atoms/Heading/Heading.stories.jsx +0 -130
  215. package/src/stories/Atoms/Icon/Icon.css +0 -240
  216. package/src/stories/Atoms/Icon/Icon.jsx +0 -80
  217. package/src/stories/Atoms/Icon/Icon.stories.jsx +0 -177
  218. package/src/stories/Atoms/Image/Image.css +0 -245
  219. package/src/stories/Atoms/Image/Image.jsx +0 -175
  220. package/src/stories/Atoms/Image/Image.stories.jsx +0 -332
  221. package/src/stories/Atoms/Label/Label.css +0 -171
  222. package/src/stories/Atoms/Label/Label.jsx +0 -71
  223. package/src/stories/Atoms/Label/Label.stories.jsx +0 -180
  224. package/src/stories/Atoms/Link/Link.css +0 -51
  225. package/src/stories/Atoms/Link/Link.jsx +0 -72
  226. package/src/stories/Atoms/Link/Link.stories.jsx +0 -153
  227. package/src/stories/Atoms/Loader/Loader.css +0 -106
  228. package/src/stories/Atoms/Loader/Loader.jsx +0 -58
  229. package/src/stories/Atoms/Loader/Loader.stories.jsx +0 -99
  230. package/src/stories/Atoms/Logo/Logo.css +0 -94
  231. package/src/stories/Atoms/Logo/Logo.jsx +0 -53
  232. package/src/stories/Atoms/Logo/Logo.stories.jsx +0 -120
  233. package/src/stories/Atoms/Paragraph/Paragraph.css +0 -180
  234. package/src/stories/Atoms/Paragraph/Paragraph.jsx +0 -77
  235. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +0 -143
  236. package/src/stories/Atoms/ProgressBar/ProgressBar.css +0 -127
  237. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +0 -40
  238. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +0 -86
  239. package/src/stories/Atoms/RadioButton/RadioButton.css +0 -130
  240. package/src/stories/Atoms/RadioButton/RadioButton.jsx +0 -87
  241. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +0 -113
  242. package/src/stories/Atoms/Range/Range.css +0 -169
  243. package/src/stories/Atoms/Range/Range.jsx +0 -87
  244. package/src/stories/Atoms/Range/Range.stories.jsx +0 -110
  245. package/src/stories/Atoms/Section/Section.css +0 -268
  246. package/src/stories/Atoms/Section/Section.jsx +0 -63
  247. package/src/stories/Atoms/Section/Section.stories.jsx +0 -46
  248. package/src/stories/Atoms/Select/Select.css +0 -87
  249. package/src/stories/Atoms/Select/Select.jsx +0 -73
  250. package/src/stories/Atoms/Select/Select.stories.jsx +0 -109
  251. package/src/stories/Atoms/Slider/Slider.css +0 -90
  252. package/src/stories/Atoms/Slider/Slider.jsx +0 -129
  253. package/src/stories/Atoms/Slider/Slider.stories.jsx +0 -90
  254. package/src/stories/Atoms/Snackbar/Snackbar.css +0 -313
  255. package/src/stories/Atoms/Snackbar/Snackbar.jsx +0 -72
  256. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +0 -78
  257. package/src/stories/Atoms/Spacer/Spacer.css +0 -114
  258. package/src/stories/Atoms/Spacer/Spacer.jsx +0 -35
  259. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +0 -61
  260. package/src/stories/Atoms/Spinner/Spinner.css +0 -110
  261. package/src/stories/Atoms/Spinner/Spinner.jsx +0 -65
  262. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +0 -58
  263. package/src/stories/Atoms/Tag/Tag.css +0 -112
  264. package/src/stories/Atoms/Tag/Tag.jsx +0 -75
  265. package/src/stories/Atoms/Tag/Tag.stories.jsx +0 -67
  266. package/src/stories/Atoms/TextArea/TextArea.css +0 -99
  267. package/src/stories/Atoms/TextArea/TextArea.jsx +0 -118
  268. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +0 -36
  269. package/src/stories/Atoms/TextInput/TextInput.css +0 -102
  270. package/src/stories/Atoms/TextInput/TextInput.jsx +0 -133
  271. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +0 -69
  272. package/src/stories/Atoms/Toggle/Toggle.css +0 -118
  273. package/src/stories/Atoms/Toggle/Toggle.jsx +0 -69
  274. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +0 -35
  275. package/src/stories/Atoms/Tooltip/Tooltip.css +0 -383
  276. package/src/stories/Atoms/Tooltip/Tooltip.jsx +0 -46
  277. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +0 -52
  278. package/src/stories/Atoms/Video/Video.css +0 -39
  279. package/src/stories/Atoms/Video/Video.jsx +0 -78
  280. package/src/stories/Atoms/Video/Video.stories.jsx +0 -41
  281. package/src/stories/Atoms/index.js +0 -72
  282. package/src/stories/Atoms/meta_Atoms.js +0 -51
  283. package/src/stories/Components.js +0 -198
  284. package/src/stories/Getting Started.mdx +0 -239
  285. package/src/stories/Layouts/Accordion/Accordion.css +0 -293
  286. package/src/stories/Layouts/Accordion/Accordion.jsx +0 -74
  287. package/src/stories/Layouts/Accordion/Accordion.stories.jsx +0 -39
  288. package/src/stories/Layouts/Flexbox/Flexbox.css +0 -16
  289. package/src/stories/Layouts/Flexbox/Flexbox.jsx +0 -11
  290. package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +0 -28
  291. package/src/stories/Layouts/Footer/Footer.css +0 -16
  292. package/src/stories/Layouts/Footer/Footer.jsx +0 -31
  293. package/src/stories/Layouts/Footer/Footer.stories.jsx +0 -28
  294. package/src/stories/Layouts/Header/Header.css +0 -16
  295. package/src/stories/Layouts/Header/Header.jsx +0 -31
  296. package/src/stories/Layouts/Header/Header.stories.jsx +0 -28
  297. package/src/stories/Layouts/HeroBanner/HeroBanner.css +0 -16
  298. package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +0 -31
  299. package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +0 -28
  300. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +0 -16
  301. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +0 -31
  302. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +0 -28
  303. package/src/stories/Layouts/Pagination/Pagination.css +0 -16
  304. package/src/stories/Layouts/Pagination/Pagination.jsx +0 -31
  305. package/src/stories/Layouts/Pagination/Pagination.stories.jsx +0 -28
  306. package/src/stories/Layouts/Sidebar/Sidebar.css +0 -16
  307. package/src/stories/Layouts/Sidebar/Sidebar.jsx +0 -71
  308. package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +0 -28
  309. package/src/stories/Layouts/Tabs/Tabs.css +0 -16
  310. package/src/stories/Layouts/Tabs/Tabs.jsx +0 -31
  311. package/src/stories/Layouts/Tabs/Tabs.stories.jsx +0 -28
  312. package/src/stories/Layouts/index.js +0 -25
  313. package/src/stories/Layouts/meta_Layouts.js +0 -28
  314. package/src/stories/MDX.mdx +0 -118
  315. package/src/stories/Miscellaneous/Miscellaneous.js +0 -24
  316. package/src/stories/Molecules/Accordion/Accordion.css +0 -4
  317. package/src/stories/Molecules/Accordion/Accordion.jsx +0 -25
  318. package/src/stories/Molecules/Accordion/Accordion.stories.jsx +0 -20
  319. package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +0 -97
  320. package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +0 -244
  321. package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +0 -55
  322. package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +0 -130
  323. package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +0 -80
  324. package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +0 -20
  325. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +0 -147
  326. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +0 -51
  327. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +0 -36
  328. package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +0 -465
  329. package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +0 -47
  330. package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +0 -44
  331. package/src/stories/Molecules/Card/Card.css +0 -41
  332. package/src/stories/Molecules/Card/Card.jsx +0 -92
  333. package/src/stories/Molecules/Card/Card.stories.jsx +0 -34
  334. package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +0 -35
  335. package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +0 -104
  336. package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +0 -81
  337. package/src/stories/Molecules/DataTable/DataTable.css +0 -4
  338. package/src/stories/Molecules/DataTable/DataTable.jsx +0 -25
  339. package/src/stories/Molecules/DataTable/DataTable.stories.jsx +0 -20
  340. package/src/stories/Molecules/Dropdown/Dropdown.css +0 -192
  341. package/src/stories/Molecules/Dropdown/Dropdown.jsx +0 -96
  342. package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +0 -45
  343. package/src/stories/Molecules/FileUpload/FileUpload.css +0 -4
  344. package/src/stories/Molecules/FileUpload/FileUpload.jsx +0 -25
  345. package/src/stories/Molecules/FileUpload/FileUpload.stories.jsx +0 -20
  346. package/src/stories/Molecules/FormField/FormField.css +0 -4
  347. package/src/stories/Molecules/FormField/FormField.jsx +0 -25
  348. package/src/stories/Molecules/FormField/FormField.stories.jsx +0 -20
  349. package/src/stories/Molecules/Header/Header.css +0 -35
  350. package/src/stories/Molecules/Header/Header.jsx +0 -76
  351. package/src/stories/Molecules/Header/Header.stories.jsx +0 -28
  352. package/src/stories/Molecules/IconButton/IconButton.css +0 -4
  353. package/src/stories/Molecules/IconButton/IconButton.jsx +0 -25
  354. package/src/stories/Molecules/IconButton/IconButton.stories.jsx +0 -20
  355. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.css +0 -4
  356. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.jsx +0 -25
  357. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.stories.jsx +0 -20
  358. package/src/stories/Molecules/InputGroup/InputGroup.css +0 -4
  359. package/src/stories/Molecules/InputGroup/InputGroup.jsx +0 -25
  360. package/src/stories/Molecules/InputGroup/InputGroup.stories.jsx +0 -20
  361. package/src/stories/Molecules/InputWithLabel/InputWithLabel.css +0 -4
  362. package/src/stories/Molecules/InputWithLabel/InputWithLabel.jsx +0 -25
  363. package/src/stories/Molecules/InputWithLabel/InputWithLabel.stories.jsx +0 -20
  364. package/src/stories/Molecules/List/List.css +0 -4
  365. package/src/stories/Molecules/List/List.jsx +0 -25
  366. package/src/stories/Molecules/List/List.stories.jsx +0 -20
  367. package/src/stories/Molecules/MediaCard/MediaCard.css +0 -4
  368. package/src/stories/Molecules/MediaCard/MediaCard.jsx +0 -25
  369. package/src/stories/Molecules/MediaCard/MediaCard.stories.jsx +0 -20
  370. package/src/stories/Molecules/Modal/Modal.css +0 -4
  371. package/src/stories/Molecules/Modal/Modal.jsx +0 -25
  372. package/src/stories/Molecules/Modal/Modal.stories.jsx +0 -20
  373. package/src/stories/Molecules/Navbar/Navbar.css +0 -91
  374. package/src/stories/Molecules/Navbar/Navbar.jsx +0 -82
  375. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +0 -70
  376. package/src/stories/Molecules/Notification/Notification.css +0 -4
  377. package/src/stories/Molecules/Notification/Notification.jsx +0 -25
  378. package/src/stories/Molecules/Notification/Notification.stories.jsx +0 -20
  379. package/src/stories/Molecules/PricingTable/PricingTable.css +0 -4
  380. package/src/stories/Molecules/PricingTable/PricingTable.jsx +0 -25
  381. package/src/stories/Molecules/PricingTable/PricingTable.stories.jsx +0 -20
  382. package/src/stories/Molecules/SearchBar/SearchBar.css +0 -69
  383. package/src/stories/Molecules/SearchBar/SearchBar.jsx +0 -73
  384. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +0 -29
  385. package/src/stories/Molecules/SelectTheme/SelectTheme.css +0 -25
  386. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +0 -22
  387. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +0 -24
  388. package/src/stories/Molecules/Sidebar/Sidebar.css +0 -67
  389. package/src/stories/Molecules/Sidebar/Sidebar.jsx +0 -80
  390. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +0 -35
  391. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.css +0 -4
  392. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.jsx +0 -25
  393. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.stories.jsx +0 -20
  394. package/src/stories/Molecules/index.js +0 -58
  395. package/src/stories/Molecules/meta_Molecules.js +0 -47
  396. package/src/stories/Organisms/Profile/UserFriends/UserFriends.context.jsx +0 -15
  397. package/src/stories/Organisms/Profile/UserFriends/UserFriends.css +0 -4
  398. package/src/stories/Organisms/Profile/UserFriends/UserFriends.jsx +0 -13
  399. package/src/stories/Organisms/Profile/UserFriends/UserFriends.stories.jsx +0 -26
  400. package/src/stories/Organisms/Profile/UserPosts/UserPosts.context.jsx +0 -15
  401. package/src/stories/Organisms/Profile/UserPosts/UserPosts.css +0 -4
  402. package/src/stories/Organisms/Profile/UserPosts/UserPosts.jsx +0 -13
  403. package/src/stories/Organisms/Profile/UserPosts/UserPosts.stories.jsx +0 -26
  404. package/src/stories/Organisms/Profile/UserProfile/UserProfile.context.jsx +0 -15
  405. package/src/stories/Organisms/Profile/UserProfile/UserProfile.css +0 -4
  406. package/src/stories/Organisms/Profile/UserProfile/UserProfile.jsx +0 -13
  407. package/src/stories/Organisms/Profile/UserProfile/UserProfile.stories.jsx +0 -26
  408. package/src/stories/Organisms/meta_Organisms.js +0 -39
  409. package/src/stories/Pages/Page/Page.css +0 -69
  410. package/src/stories/Pages/Page/Page.jsx +0 -69
  411. package/src/stories/Pages/Page/Page.stories.js +0 -26
  412. package/src/stories/Pages/Page/Pages.js +0 -31
  413. package/src/stories/Templates/AdminDashboard/AdminDashboard.css +0 -7
  414. package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +0 -24
  415. package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +0 -20
  416. package/src/stories/Templates/CallToAction/CallToAction.css +0 -7
  417. package/src/stories/Templates/CallToAction/CallToAction.jsx +0 -24
  418. package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +0 -20
  419. package/src/stories/Templates/FeaturesList/FeaturesList.css +0 -7
  420. package/src/stories/Templates/FeaturesList/FeaturesList.jsx +0 -24
  421. package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +0 -20
  422. package/src/stories/Templates/FormSection/FormSection.css +0 -7
  423. package/src/stories/Templates/FormSection/FormSection.jsx +0 -24
  424. package/src/stories/Templates/FormSection/FormSection.stories.jsx +0 -20
  425. package/src/stories/Templates/HeroSection/HeroSection.css +0 -7
  426. package/src/stories/Templates/HeroSection/HeroSection.jsx +0 -24
  427. package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +0 -20
  428. package/src/stories/Templates/LocationInfo/LocationInfo.css +0 -7
  429. package/src/stories/Templates/LocationInfo/LocationInfo.jsx +0 -24
  430. package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +0 -20
  431. package/src/stories/Templates/ProductPage/ProductPage.css +0 -7
  432. package/src/stories/Templates/ProductPage/ProductPage.jsx +0 -24
  433. package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +0 -20
  434. package/src/stories/Templates/RegistrationPage/RegistrationPage.css +0 -7
  435. package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +0 -24
  436. package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +0 -20
  437. package/src/stories/Templates/ShoppingCart/ShoppingCart.css +0 -7
  438. package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +0 -24
  439. package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +0 -20
  440. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +0 -7
  441. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +0 -24
  442. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +0 -20
  443. package/src/stories/Templates/SignInPage/SignInPage.css +0 -7
  444. package/src/stories/Templates/SignInPage/SignInPage.jsx +0 -24
  445. package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +0 -20
  446. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +0 -7
  447. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +0 -24
  448. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +0 -20
  449. package/src/stories/Templates/Testimonials/Testimonials.css +0 -7
  450. package/src/stories/Templates/Testimonials/Testimonials.jsx +0 -24
  451. package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +0 -20
  452. package/src/stories/Templates/index.js +0 -33
  453. package/src/stories/Templates/meta_Templates.js +0 -29
  454. package/src/stories/assets/accessibility.png +0 -0
  455. package/src/stories/assets/accessibility.svg +0 -1
  456. package/src/stories/assets/addon-library.png +0 -0
  457. package/src/stories/assets/assets.png +0 -0
  458. package/src/stories/assets/avif-test-image.avif +0 -0
  459. package/src/stories/assets/context.png +0 -0
  460. package/src/stories/assets/discord.svg +0 -1
  461. package/src/stories/assets/docs.png +0 -0
  462. package/src/stories/assets/figma-plugin.png +0 -0
  463. package/src/stories/assets/github.svg +0 -1
  464. package/src/stories/assets/logo.png +0 -0
  465. package/src/stories/assets/logo.svg +0 -106
  466. package/src/stories/assets/share.png +0 -0
  467. package/src/stories/assets/styling.png +0 -0
  468. package/src/stories/assets/test.svg +0 -3
  469. package/src/stories/assets/testing.png +0 -0
  470. package/src/stories/assets/theming.png +0 -0
  471. package/src/stories/assets/tutorials.svg +0 -1
  472. package/src/stories/assets/youtube.svg +0 -1
  473. package/src/themes/README_Styles.md +0 -301
  474. package/src/themes/ThemeProvider.jsx +0 -61
  475. package/src/themes/styles/github/dark.css +0 -0
  476. package/src/themes/styles/github/light.css +0 -0
  477. package/src/themes/styles/neurons/dark.css +0 -247
  478. package/src/themes/styles/neurons/light.css +0 -170
  479. /package/{src/themes/styles/dracula/dark.css → .storybook/preview-head.html} +0 -0
  480. /package/src/{themes/styles/dracula/light.css → components/this.me/MeCard.jsx} +0 -0
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,68 +1,85 @@
1
1
  {
2
2
  "name": "this.gui",
3
- "version": "1.0.18",
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
- "fs": "^0.0.1-security",
29
- "postcss": "^8.4.45",
30
- "react-icons": "^5.3.0",
31
- "react-router-dom": "^6.26.2"
32
- },
33
- "peerDependencies": {
34
- "react": "^18.0.0",
35
- "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"
36
45
  },
37
46
  "devDependencies": {
38
- "@chromatic-com/storybook": "^1.8.0",
39
- "@mdx-js/loader": "^3.0.1",
40
- "@mdx-js/react": "^3.0.1",
41
- "@mdx-js/rollup": "^3.0.1",
42
- "@storybook/addon-docs": "^8.3.4",
43
- "@storybook/addon-essentials": "^8.3.0",
44
- "@storybook/addon-interactions": "^8.3.0",
45
- "@storybook/addon-links": "^8.3.0",
46
- "@storybook/addon-onboarding": "^8.2.9",
47
- "@storybook/blocks": "^8.2.9",
48
- "@storybook/manager-api": "^8.2.9",
49
- "@storybook/react": "^8.3.0",
50
- "@storybook/react-vite": "^8.3.4",
51
- "@storybook/test": "^8.2.9",
52
- "@storybook/theming": "^8.2.9",
53
- "@vitejs/plugin-react": "^4.3.2",
54
- "concurrently": "^9.0.1",
55
- "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",
56
69
  "prop-types": "^15.8.1",
57
- "react": "^18.0.0",
58
- "react-dom": "^18.0.0",
59
- "storybook": "^8.2.9",
60
- "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"
61
79
  },
62
- "files": [
63
- "dist",
64
- "src",
65
- "README.md",
66
- "package.json"
67
- ]
80
+ "eslintConfig": {
81
+ "extends": [
82
+ "plugin:storybook/recommended"
83
+ ]
84
+ }
68
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;