this.gui 1.0.17 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (477) hide show
  1. package/.storybook/main.js +40 -0
  2. package/.storybook/manager-head.html +13 -0
  3. package/.storybook/manager.js +15 -0
  4. package/.storybook/preview.tsx +54 -0
  5. package/.storybook/vitest.setup.js +6 -0
  6. package/.storybook/withLayout.tsx +18 -0
  7. package/README.md +1 -220
  8. package/dist/GUI.png +0 -0
  9. package/dist/GUI2.png +0 -0
  10. package/dist/favicon.ico +0 -0
  11. package/dist/this-gui.es.js +108493 -4976
  12. package/dist/this-gui.umd.js +239 -44
  13. package/dist/this.GUI.png +0 -0
  14. package/nodes/overall approach.md +93 -0
  15. package/notes/Proyect.md +109 -0
  16. package/package.json +71 -53
  17. package/public/GUI.png +0 -0
  18. package/public/GUI2.png +0 -0
  19. package/public/favicon.ico +0 -0
  20. package/public/this.GUI.png +0 -0
  21. package/src/components/generics/Cards/Gridme.jsx +52 -0
  22. package/src/components/generics/Cards/LilBox.jsx +65 -0
  23. package/src/components/generics/Cards/ModuleCard.jsx +106 -0
  24. package/src/components/generics/Chats/FullChatBot.jsx +223 -0
  25. package/src/components/generics/Code/CodeBlock.jsx +33 -0
  26. package/src/components/generics/Feedback/Callout.jsx +92 -0
  27. package/src/components/generics/Layout/GridX.jsx +29 -0
  28. package/src/components/generics/Layout/Hero2.jsx +132 -0
  29. package/src/components/generics/Layout/PageContainer.jsx +29 -0
  30. package/src/components/generics/Layout/PageDivider.jsx +20 -0
  31. package/src/components/generics/Layout/Section.jsx +43 -0
  32. package/src/components/generics/Layout/SectionHeader.jsx +21 -0
  33. package/src/components/generics/Media/Img.jsx +58 -0
  34. package/src/components/generics/Media/VideoEmbed.jsx +51 -0
  35. package/src/components/generics/Organization/TableOfContents.jsx +51 -0
  36. package/src/components/generics/Organization/Tabs.jsx +45 -0
  37. package/src/components/generics/Text/TextList.jsx +41 -0
  38. package/src/components/generics/Text/TextParagraph.jsx +28 -0
  39. package/src/components/generics/Text/TextQuote.jsx +23 -0
  40. package/src/components/generics/Text/TextTitle.jsx +44 -0
  41. package/src/components/this.me/MeActive.jsx +24 -0
  42. package/src/components/this.me/MeFloating.jsx +183 -0
  43. package/src/components/this.me/MeInactive.jsx +21 -0
  44. package/src/components/this.me/MeListUs.jsx +40 -0
  45. package/src/components/this.me/MeState.jsx +25 -0
  46. package/src/components/this.me/hooks/useMe.js +43 -0
  47. package/src/context/GuiProvider.tsx +243 -0
  48. package/src/gui/atoms/AppBar/AppBar.resolver.tsx +77 -0
  49. package/src/gui/atoms/AppBar/AppBar.stories.tsx +232 -0
  50. package/src/gui/atoms/AppBar/AppBar.tsx +10 -0
  51. package/src/gui/atoms/Box/Box.resolver.tsx +171 -0
  52. package/src/gui/atoms/Box/Box.stories.tsx +271 -0
  53. package/src/gui/atoms/Box/Box.tsx +15 -0
  54. package/src/gui/atoms/Button/Button.resolver.tsx +98 -0
  55. package/src/gui/atoms/Button/Button.stories.tsx +225 -0
  56. package/src/gui/atoms/Button/Button.tsx +40 -0
  57. package/src/gui/atoms/Collapse/Collapse.resolver.tsx +85 -0
  58. package/src/gui/atoms/Collapse/Collapse.stories.tsx +136 -0
  59. package/src/gui/atoms/Collapse/Collapse.tsx +17 -0
  60. package/src/gui/atoms/Divider/Divider.resolver.tsx +95 -0
  61. package/src/gui/atoms/Divider/Divider.stories.tsx +109 -0
  62. package/src/gui/atoms/Divider/Divider.tsx +14 -0
  63. package/src/gui/atoms/Drawer/Drawer.resolver.tsx +116 -0
  64. package/src/gui/atoms/Drawer/Drawer.stories.tsx +229 -0
  65. package/src/gui/atoms/Drawer/Drawer.tsx +8 -0
  66. package/src/gui/atoms/IconButton/IconButton.resolver.tsx +135 -0
  67. package/src/gui/atoms/IconButton/IconButton.stories.tsx +141 -0
  68. package/src/gui/atoms/IconButton/IconButton.tsx +22 -0
  69. package/src/gui/atoms/Link/Link.resolver.tsx +75 -0
  70. package/src/gui/atoms/Link/Link.stories.tsx +164 -0
  71. package/src/gui/atoms/Link/Link.tsx +14 -0
  72. package/src/gui/atoms/List/List.resolver.tsx +95 -0
  73. package/src/gui/atoms/List/List.stories.tsx +143 -0
  74. package/src/gui/atoms/List/List.tsx +20 -0
  75. package/src/gui/atoms/ListItem/ListItem.resolver.tsx +88 -0
  76. package/src/gui/atoms/ListItem/ListItem.stories.tsx +157 -0
  77. package/src/gui/atoms/ListItem/ListItem.tsx +19 -0
  78. package/src/gui/atoms/ListItemButton/ListItemButton.resolver.tsx +208 -0
  79. package/src/gui/atoms/ListItemButton/ListItemButton.stories.tsx +161 -0
  80. package/src/gui/atoms/ListItemButton/ListItemButton.tsx +15 -0
  81. package/src/gui/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
  82. package/src/gui/atoms/ListItemIcon/ListItemIcon.stories.tsx +135 -0
  83. package/src/gui/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
  84. package/src/gui/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
  85. package/src/gui/atoms/ListItemText/ListItemText.stories.tsx +162 -0
  86. package/src/gui/atoms/ListItemText/ListItemText.tsx +15 -0
  87. package/src/gui/atoms/Menu/Menu.resolver.tsx +112 -0
  88. package/src/gui/atoms/Menu/Menu.stories.tsx +168 -0
  89. package/src/gui/atoms/Menu/Menu.tsx +17 -0
  90. package/src/gui/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
  91. package/src/gui/atoms/MenuItem/MenuItem.stories.tsx +138 -0
  92. package/src/gui/atoms/MenuItem/MenuItem.tsx +14 -0
  93. package/src/gui/atoms/Paper/Paper.resolver.tsx +98 -0
  94. package/src/gui/atoms/Paper/Paper.stories.tsx +191 -0
  95. package/src/gui/atoms/Paper/Paper.tsx +17 -0
  96. package/src/gui/atoms/Stack/Stack.resolver.tsx +94 -0
  97. package/src/gui/atoms/Stack/Stack.stories.tsx +166 -0
  98. package/src/gui/atoms/Stack/Stack.tsx +15 -0
  99. package/src/gui/atoms/Switch/Switch.resolver.tsx +53 -0
  100. package/src/gui/atoms/Switch/Switch.stories.tsx +242 -0
  101. package/src/gui/atoms/Switch/Switch.tsx +22 -0
  102. package/src/gui/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
  103. package/src/gui/atoms/Toolbar/Toolbar.stories.tsx +163 -0
  104. package/src/gui/atoms/Toolbar/Toolbar.tsx +16 -0
  105. package/src/gui/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
  106. package/src/gui/atoms/Tooltip/Tooltip.stories.tsx +118 -0
  107. package/src/gui/atoms/Tooltip/Tooltip.tsx +78 -0
  108. package/src/gui/atoms/Typography/Typography.resolver.tsx +158 -0
  109. package/src/gui/atoms/Typography/Typography.stories.tsx +228 -0
  110. package/src/gui/atoms/Typography/Typography.tsx +27 -0
  111. package/src/gui/atoms.tsx +129 -0
  112. package/src/gui/index.ts +69 -0
  113. package/src/gui/molecules/AppBars/Footer/Footer.resolver.tsx +104 -0
  114. package/src/gui/molecules/AppBars/Footer/Footer.stories.tsx +499 -0
  115. package/src/gui/molecules/AppBars/Footer/Footer.tsx +307 -0
  116. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.resolver.tsx +75 -0
  117. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.stories.tsx +61 -0
  118. package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.tsx +511 -0
  119. package/src/gui/molecules/AppBars/LeftSidebar/SidebarToggleButton.tsx +51 -0
  120. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.resolver.tsx +97 -0
  121. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.stories.tsx +294 -0
  122. package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.tsx +295 -0
  123. package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.stories.tsx +480 -0
  124. package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.tsx +484 -0
  125. package/src/gui/molecules/AppBars/TopBar/TopBar.resolver.tsx +84 -0
  126. package/src/gui/molecules/AppBars/TopBar/TopBar.stories.tsx +297 -0
  127. package/src/gui/molecules/AppBars/TopBar/TopBar.tsx +299 -0
  128. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.resolver.tsx +72 -0
  129. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.stories.tsx +154 -0
  130. package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.tsx +100 -0
  131. package/src/gui/molecules/Utilities/ThemeSelector.jsx +281 -0
  132. package/src/gui/utils/nodeID.ts +8 -0
  133. package/src/index.js +111 -0
  134. package/src/registry/GuiRegistry.ts +19 -0
  135. package/src/registry/factory.ts +12 -0
  136. package/src/registry/index.ts +3 -0
  137. package/src/registry/types.ts +6 -0
  138. package/src/stories/01.Home.mdx +22 -0
  139. package/src/stories/02.Understanding.This.GUI.md +149 -0
  140. package/src/stories/03.Themes.mdx +235 -0
  141. package/src/stories/04.GuiProvider.md +126 -0
  142. package/src/stories/04.GuiProvider.mdx +129 -0
  143. package/src/stories/Theme/BreakPointsAndGrids.stories.jsx +185 -0
  144. package/src/stories/Theme/Colors.stories.jsx +245 -0
  145. package/src/stories/Theme/Icons.stories.jsx +313 -0
  146. package/src/stories/Theme/Motion.stories.jsx +206 -0
  147. package/src/stories/Theme/ShadowAndElevation.stories.jsx +95 -0
  148. package/src/stories/Theme/SpacingAndRadius.stories.jsx +129 -0
  149. package/src/stories/Theme/Typography.stories.jsx +211 -0
  150. package/src/stories/assets/this.GUI.png +0 -0
  151. package/src/templates/BrowserExtension.jsx +56 -0
  152. package/src/templates/Layout.tsx +36 -0
  153. package/src/templates/Minimal.jsx +123 -0
  154. package/src/templates/Shell/Shell.jsx +107 -0
  155. package/src/themes/fromTokens.ts +352 -0
  156. package/src/themes/icons/Icon.tsx +137 -0
  157. package/src/themes/icons/packs/Lucide.ts +72 -0
  158. package/src/themes/icons/packs/Material.ts +87 -0
  159. package/src/themes/icons/registry.tsx +178 -0
  160. package/src/themes/index.js +116 -0
  161. package/src/themes/theme.d.ts +116 -0
  162. package/src/themes/tokens/global.tokens.json +107 -0
  163. package/src/themes/tokens/neurons/dark.tokens.json +45 -0
  164. package/src/themes/tokens/neurons/light.tokens.json +51 -0
  165. package/src/themes/tokens/neurons/manifest.json +23 -0
  166. package/src/types/theme.d.ts +32 -0
  167. package/src/types/viewport.ts +132 -0
  168. package/tsconfig.json +24 -0
  169. package/vite.config.js +74 -0
  170. package/dist/style.css +0 -1
  171. package/src/App.jsx +0 -63
  172. package/src/MdxProvider.jsx +0 -20
  173. package/src/Page.jsx +0 -28
  174. package/src/SiteBuilder.jsx +0 -39
  175. package/src/example.json +0 -43
  176. package/src/index.mdx +0 -164
  177. package/src/main.jsx +0 -15
  178. package/src/scripts/ComponentRegistry.js +0 -70
  179. package/src/scripts/logASCIIArt.js +0 -12
  180. package/src/scripts/postinstall.js +0 -100
  181. package/src/scripts/renderComponents.js +0 -11
  182. package/src/stories/Atoms/Alert/Alert.css +0 -211
  183. package/src/stories/Atoms/Alert/Alert.jsx +0 -56
  184. package/src/stories/Atoms/Alert/Alert.stories.jsx +0 -167
  185. package/src/stories/Atoms/Audio/Audio.css +0 -259
  186. package/src/stories/Atoms/Audio/Audio.jsx +0 -216
  187. package/src/stories/Atoms/Audio/Audio.stories.jsx +0 -191
  188. package/src/stories/Atoms/Badge/Badge.css +0 -249
  189. package/src/stories/Atoms/Badge/Badge.jsx +0 -54
  190. package/src/stories/Atoms/Badge/Badge.stories.jsx +0 -121
  191. package/src/stories/Atoms/Button/Button.css +0 -131
  192. package/src/stories/Atoms/Button/Button.jsx +0 -47
  193. package/src/stories/Atoms/Button/Button.stories.jsx +0 -184
  194. package/src/stories/Atoms/Caption/Caption.css +0 -169
  195. package/src/stories/Atoms/Caption/Caption.jsx +0 -72
  196. package/src/stories/Atoms/Caption/Caption.stories.jsx +0 -207
  197. package/src/stories/Atoms/Checkbox/Checkbox.css +0 -182
  198. package/src/stories/Atoms/Checkbox/Checkbox.jsx +0 -83
  199. package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +0 -112
  200. package/src/stories/Atoms/Container/Container.css +0 -89
  201. package/src/stories/Atoms/Container/Container.jsx +0 -54
  202. package/src/stories/Atoms/Container/Container.stories.jsx +0 -104
  203. package/src/stories/Atoms/Divider/Divider.css +0 -147
  204. package/src/stories/Atoms/Divider/Divider.jsx +0 -62
  205. package/src/stories/Atoms/Divider/Divider.stories.jsx +0 -105
  206. package/src/stories/Atoms/Grid/Grid.css +0 -160
  207. package/src/stories/Atoms/Grid/Grid.jsx +0 -43
  208. package/src/stories/Atoms/Grid/Grid.stories.jsx +0 -84
  209. package/src/stories/Atoms/Heading/Heading.css +0 -112
  210. package/src/stories/Atoms/Heading/Heading.jsx +0 -69
  211. package/src/stories/Atoms/Heading/Heading.stories.jsx +0 -130
  212. package/src/stories/Atoms/Icon/Icon.css +0 -240
  213. package/src/stories/Atoms/Icon/Icon.jsx +0 -80
  214. package/src/stories/Atoms/Icon/Icon.stories.jsx +0 -177
  215. package/src/stories/Atoms/Image/Image.css +0 -245
  216. package/src/stories/Atoms/Image/Image.jsx +0 -175
  217. package/src/stories/Atoms/Image/Image.stories.jsx +0 -332
  218. package/src/stories/Atoms/Label/Label.css +0 -171
  219. package/src/stories/Atoms/Label/Label.jsx +0 -71
  220. package/src/stories/Atoms/Label/Label.stories.jsx +0 -180
  221. package/src/stories/Atoms/Link/Link.css +0 -71
  222. package/src/stories/Atoms/Link/Link.jsx +0 -82
  223. package/src/stories/Atoms/Link/Link.stories.jsx +0 -153
  224. package/src/stories/Atoms/Loader/Loader.css +0 -106
  225. package/src/stories/Atoms/Loader/Loader.jsx +0 -58
  226. package/src/stories/Atoms/Loader/Loader.stories.jsx +0 -99
  227. package/src/stories/Atoms/Logo/Logo.css +0 -94
  228. package/src/stories/Atoms/Logo/Logo.jsx +0 -53
  229. package/src/stories/Atoms/Logo/Logo.stories.jsx +0 -120
  230. package/src/stories/Atoms/Paragraph/Paragraph.css +0 -180
  231. package/src/stories/Atoms/Paragraph/Paragraph.jsx +0 -77
  232. package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +0 -143
  233. package/src/stories/Atoms/ProgressBar/ProgressBar.css +0 -127
  234. package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +0 -40
  235. package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +0 -86
  236. package/src/stories/Atoms/RadioButton/RadioButton.css +0 -130
  237. package/src/stories/Atoms/RadioButton/RadioButton.jsx +0 -87
  238. package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +0 -113
  239. package/src/stories/Atoms/Range/Range.css +0 -169
  240. package/src/stories/Atoms/Range/Range.jsx +0 -87
  241. package/src/stories/Atoms/Range/Range.stories.jsx +0 -110
  242. package/src/stories/Atoms/Section/Section.css +0 -268
  243. package/src/stories/Atoms/Section/Section.jsx +0 -63
  244. package/src/stories/Atoms/Section/Section.stories.jsx +0 -46
  245. package/src/stories/Atoms/Select/Select.css +0 -87
  246. package/src/stories/Atoms/Select/Select.jsx +0 -73
  247. package/src/stories/Atoms/Select/Select.stories.jsx +0 -109
  248. package/src/stories/Atoms/Slider/Slider.css +0 -90
  249. package/src/stories/Atoms/Slider/Slider.jsx +0 -129
  250. package/src/stories/Atoms/Slider/Slider.stories.jsx +0 -90
  251. package/src/stories/Atoms/Snackbar/Snackbar.css +0 -313
  252. package/src/stories/Atoms/Snackbar/Snackbar.jsx +0 -72
  253. package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +0 -78
  254. package/src/stories/Atoms/Spacer/Spacer.css +0 -114
  255. package/src/stories/Atoms/Spacer/Spacer.jsx +0 -35
  256. package/src/stories/Atoms/Spacer/Spacer.stories.jsx +0 -61
  257. package/src/stories/Atoms/Spinner/Spinner.css +0 -110
  258. package/src/stories/Atoms/Spinner/Spinner.jsx +0 -65
  259. package/src/stories/Atoms/Spinner/Spinner.stories.jsx +0 -58
  260. package/src/stories/Atoms/Tag/Tag.css +0 -112
  261. package/src/stories/Atoms/Tag/Tag.jsx +0 -75
  262. package/src/stories/Atoms/Tag/Tag.stories.jsx +0 -67
  263. package/src/stories/Atoms/TextArea/TextArea.css +0 -99
  264. package/src/stories/Atoms/TextArea/TextArea.jsx +0 -118
  265. package/src/stories/Atoms/TextArea/TextArea.stories.jsx +0 -36
  266. package/src/stories/Atoms/TextInput/TextInput.css +0 -102
  267. package/src/stories/Atoms/TextInput/TextInput.jsx +0 -133
  268. package/src/stories/Atoms/TextInput/TextInput.stories.jsx +0 -69
  269. package/src/stories/Atoms/Toggle/Toggle.css +0 -118
  270. package/src/stories/Atoms/Toggle/Toggle.jsx +0 -69
  271. package/src/stories/Atoms/Toggle/Toggle.stories.jsx +0 -35
  272. package/src/stories/Atoms/Tooltip/Tooltip.css +0 -383
  273. package/src/stories/Atoms/Tooltip/Tooltip.jsx +0 -46
  274. package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +0 -52
  275. package/src/stories/Atoms/Video/Video.css +0 -39
  276. package/src/stories/Atoms/Video/Video.jsx +0 -78
  277. package/src/stories/Atoms/Video/Video.stories.jsx +0 -41
  278. package/src/stories/Atoms/index.js +0 -72
  279. package/src/stories/Atoms/meta_Atoms.js +0 -51
  280. package/src/stories/Components.js +0 -198
  281. package/src/stories/Getting Started.mdx +0 -239
  282. package/src/stories/Layouts/Accordion/Accordion.css +0 -293
  283. package/src/stories/Layouts/Accordion/Accordion.jsx +0 -74
  284. package/src/stories/Layouts/Accordion/Accordion.stories.jsx +0 -39
  285. package/src/stories/Layouts/Flexbox/Flexbox.css +0 -16
  286. package/src/stories/Layouts/Flexbox/Flexbox.jsx +0 -11
  287. package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +0 -28
  288. package/src/stories/Layouts/Footer/Footer.css +0 -16
  289. package/src/stories/Layouts/Footer/Footer.jsx +0 -31
  290. package/src/stories/Layouts/Footer/Footer.stories.jsx +0 -28
  291. package/src/stories/Layouts/Header/Header.css +0 -16
  292. package/src/stories/Layouts/Header/Header.jsx +0 -31
  293. package/src/stories/Layouts/Header/Header.stories.jsx +0 -28
  294. package/src/stories/Layouts/HeroBanner/HeroBanner.css +0 -16
  295. package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +0 -31
  296. package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +0 -28
  297. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +0 -16
  298. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +0 -31
  299. package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +0 -28
  300. package/src/stories/Layouts/Pagination/Pagination.css +0 -16
  301. package/src/stories/Layouts/Pagination/Pagination.jsx +0 -31
  302. package/src/stories/Layouts/Pagination/Pagination.stories.jsx +0 -28
  303. package/src/stories/Layouts/Sidebar/Sidebar.css +0 -16
  304. package/src/stories/Layouts/Sidebar/Sidebar.jsx +0 -71
  305. package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +0 -28
  306. package/src/stories/Layouts/Tabs/Tabs.css +0 -16
  307. package/src/stories/Layouts/Tabs/Tabs.jsx +0 -31
  308. package/src/stories/Layouts/Tabs/Tabs.stories.jsx +0 -28
  309. package/src/stories/Layouts/index.js +0 -25
  310. package/src/stories/Layouts/meta_Layouts.js +0 -28
  311. package/src/stories/MDX.mdx +0 -118
  312. package/src/stories/Miscellaneous/Miscellaneous.js +0 -24
  313. package/src/stories/Molecules/Accordion/Accordion.css +0 -4
  314. package/src/stories/Molecules/Accordion/Accordion.jsx +0 -25
  315. package/src/stories/Molecules/Accordion/Accordion.stories.jsx +0 -20
  316. package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +0 -97
  317. package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +0 -244
  318. package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +0 -55
  319. package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +0 -130
  320. package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +0 -80
  321. package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +0 -20
  322. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +0 -147
  323. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +0 -51
  324. package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +0 -36
  325. package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +0 -465
  326. package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +0 -47
  327. package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +0 -44
  328. package/src/stories/Molecules/Card/Card.css +0 -41
  329. package/src/stories/Molecules/Card/Card.jsx +0 -92
  330. package/src/stories/Molecules/Card/Card.stories.jsx +0 -34
  331. package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +0 -35
  332. package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +0 -104
  333. package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +0 -81
  334. package/src/stories/Molecules/DataTable/DataTable.css +0 -4
  335. package/src/stories/Molecules/DataTable/DataTable.jsx +0 -25
  336. package/src/stories/Molecules/DataTable/DataTable.stories.jsx +0 -20
  337. package/src/stories/Molecules/Dropdown/Dropdown.css +0 -192
  338. package/src/stories/Molecules/Dropdown/Dropdown.jsx +0 -96
  339. package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +0 -45
  340. package/src/stories/Molecules/FileUpload/FileUpload.css +0 -4
  341. package/src/stories/Molecules/FileUpload/FileUpload.jsx +0 -25
  342. package/src/stories/Molecules/FileUpload/FileUpload.stories.jsx +0 -20
  343. package/src/stories/Molecules/FormField/FormField.css +0 -4
  344. package/src/stories/Molecules/FormField/FormField.jsx +0 -25
  345. package/src/stories/Molecules/FormField/FormField.stories.jsx +0 -20
  346. package/src/stories/Molecules/Header/Header.css +0 -35
  347. package/src/stories/Molecules/Header/Header.jsx +0 -76
  348. package/src/stories/Molecules/Header/Header.stories.jsx +0 -28
  349. package/src/stories/Molecules/IconButton/IconButton.css +0 -4
  350. package/src/stories/Molecules/IconButton/IconButton.jsx +0 -25
  351. package/src/stories/Molecules/IconButton/IconButton.stories.jsx +0 -20
  352. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.css +0 -4
  353. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.jsx +0 -25
  354. package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.stories.jsx +0 -20
  355. package/src/stories/Molecules/InputGroup/InputGroup.css +0 -4
  356. package/src/stories/Molecules/InputGroup/InputGroup.jsx +0 -25
  357. package/src/stories/Molecules/InputGroup/InputGroup.stories.jsx +0 -20
  358. package/src/stories/Molecules/InputWithLabel/InputWithLabel.css +0 -4
  359. package/src/stories/Molecules/InputWithLabel/InputWithLabel.jsx +0 -25
  360. package/src/stories/Molecules/InputWithLabel/InputWithLabel.stories.jsx +0 -20
  361. package/src/stories/Molecules/List/List.css +0 -4
  362. package/src/stories/Molecules/List/List.jsx +0 -25
  363. package/src/stories/Molecules/List/List.stories.jsx +0 -20
  364. package/src/stories/Molecules/MediaCard/MediaCard.css +0 -4
  365. package/src/stories/Molecules/MediaCard/MediaCard.jsx +0 -25
  366. package/src/stories/Molecules/MediaCard/MediaCard.stories.jsx +0 -20
  367. package/src/stories/Molecules/Modal/Modal.css +0 -4
  368. package/src/stories/Molecules/Modal/Modal.jsx +0 -25
  369. package/src/stories/Molecules/Modal/Modal.stories.jsx +0 -20
  370. package/src/stories/Molecules/Navbar/Navbar.css +0 -91
  371. package/src/stories/Molecules/Navbar/Navbar.jsx +0 -82
  372. package/src/stories/Molecules/Navbar/Navbar.stories.jsx +0 -70
  373. package/src/stories/Molecules/Notification/Notification.css +0 -4
  374. package/src/stories/Molecules/Notification/Notification.jsx +0 -25
  375. package/src/stories/Molecules/Notification/Notification.stories.jsx +0 -20
  376. package/src/stories/Molecules/PricingTable/PricingTable.css +0 -4
  377. package/src/stories/Molecules/PricingTable/PricingTable.jsx +0 -25
  378. package/src/stories/Molecules/PricingTable/PricingTable.stories.jsx +0 -20
  379. package/src/stories/Molecules/SearchBar/SearchBar.css +0 -69
  380. package/src/stories/Molecules/SearchBar/SearchBar.jsx +0 -73
  381. package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +0 -29
  382. package/src/stories/Molecules/SelectTheme/SelectTheme.css +0 -25
  383. package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +0 -22
  384. package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +0 -24
  385. package/src/stories/Molecules/Sidebar/Sidebar.css +0 -67
  386. package/src/stories/Molecules/Sidebar/Sidebar.jsx +0 -80
  387. package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +0 -35
  388. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.css +0 -4
  389. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.jsx +0 -25
  390. package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.stories.jsx +0 -20
  391. package/src/stories/Molecules/index.js +0 -58
  392. package/src/stories/Molecules/meta_Molecules.js +0 -47
  393. package/src/stories/Organisms/Profile/UserFriends/UserFriends.context.jsx +0 -15
  394. package/src/stories/Organisms/Profile/UserFriends/UserFriends.css +0 -4
  395. package/src/stories/Organisms/Profile/UserFriends/UserFriends.jsx +0 -13
  396. package/src/stories/Organisms/Profile/UserFriends/UserFriends.stories.jsx +0 -26
  397. package/src/stories/Organisms/Profile/UserPosts/UserPosts.context.jsx +0 -15
  398. package/src/stories/Organisms/Profile/UserPosts/UserPosts.css +0 -4
  399. package/src/stories/Organisms/Profile/UserPosts/UserPosts.jsx +0 -13
  400. package/src/stories/Organisms/Profile/UserPosts/UserPosts.stories.jsx +0 -26
  401. package/src/stories/Organisms/Profile/UserProfile/UserProfile.context.jsx +0 -15
  402. package/src/stories/Organisms/Profile/UserProfile/UserProfile.css +0 -4
  403. package/src/stories/Organisms/Profile/UserProfile/UserProfile.jsx +0 -13
  404. package/src/stories/Organisms/Profile/UserProfile/UserProfile.stories.jsx +0 -26
  405. package/src/stories/Organisms/meta_Organisms.js +0 -39
  406. package/src/stories/Pages/Page/Page.css +0 -69
  407. package/src/stories/Pages/Page/Page.jsx +0 -69
  408. package/src/stories/Pages/Page/Page.stories.js +0 -26
  409. package/src/stories/Pages/Page/Pages.js +0 -31
  410. package/src/stories/Templates/AdminDashboard/AdminDashboard.css +0 -7
  411. package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +0 -24
  412. package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +0 -20
  413. package/src/stories/Templates/CallToAction/CallToAction.css +0 -7
  414. package/src/stories/Templates/CallToAction/CallToAction.jsx +0 -24
  415. package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +0 -20
  416. package/src/stories/Templates/FeaturesList/FeaturesList.css +0 -7
  417. package/src/stories/Templates/FeaturesList/FeaturesList.jsx +0 -24
  418. package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +0 -20
  419. package/src/stories/Templates/FormSection/FormSection.css +0 -7
  420. package/src/stories/Templates/FormSection/FormSection.jsx +0 -24
  421. package/src/stories/Templates/FormSection/FormSection.stories.jsx +0 -20
  422. package/src/stories/Templates/HeroSection/HeroSection.css +0 -7
  423. package/src/stories/Templates/HeroSection/HeroSection.jsx +0 -24
  424. package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +0 -20
  425. package/src/stories/Templates/LocationInfo/LocationInfo.css +0 -7
  426. package/src/stories/Templates/LocationInfo/LocationInfo.jsx +0 -24
  427. package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +0 -20
  428. package/src/stories/Templates/ProductPage/ProductPage.css +0 -7
  429. package/src/stories/Templates/ProductPage/ProductPage.jsx +0 -24
  430. package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +0 -20
  431. package/src/stories/Templates/RegistrationPage/RegistrationPage.css +0 -7
  432. package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +0 -24
  433. package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +0 -20
  434. package/src/stories/Templates/ShoppingCart/ShoppingCart.css +0 -7
  435. package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +0 -24
  436. package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +0 -20
  437. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +0 -7
  438. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +0 -24
  439. package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +0 -20
  440. package/src/stories/Templates/SignInPage/SignInPage.css +0 -7
  441. package/src/stories/Templates/SignInPage/SignInPage.jsx +0 -24
  442. package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +0 -20
  443. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +0 -7
  444. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +0 -24
  445. package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +0 -20
  446. package/src/stories/Templates/Testimonials/Testimonials.css +0 -7
  447. package/src/stories/Templates/Testimonials/Testimonials.jsx +0 -24
  448. package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +0 -20
  449. package/src/stories/Templates/index.js +0 -33
  450. package/src/stories/Templates/meta_Templates.js +0 -29
  451. package/src/stories/assets/accessibility.png +0 -0
  452. package/src/stories/assets/accessibility.svg +0 -1
  453. package/src/stories/assets/addon-library.png +0 -0
  454. package/src/stories/assets/assets.png +0 -0
  455. package/src/stories/assets/avif-test-image.avif +0 -0
  456. package/src/stories/assets/context.png +0 -0
  457. package/src/stories/assets/discord.svg +0 -1
  458. package/src/stories/assets/docs.png +0 -0
  459. package/src/stories/assets/figma-plugin.png +0 -0
  460. package/src/stories/assets/github.svg +0 -1
  461. package/src/stories/assets/logo.png +0 -0
  462. package/src/stories/assets/logo.svg +0 -106
  463. package/src/stories/assets/share.png +0 -0
  464. package/src/stories/assets/styling.png +0 -0
  465. package/src/stories/assets/test.svg +0 -3
  466. package/src/stories/assets/testing.png +0 -0
  467. package/src/stories/assets/theming.png +0 -0
  468. package/src/stories/assets/tutorials.svg +0 -1
  469. package/src/stories/assets/youtube.svg +0 -1
  470. package/src/themes/README_Styles.md +0 -301
  471. package/src/themes/ThemeProvider.jsx +0 -61
  472. package/src/themes/styles/github/dark.css +0 -0
  473. package/src/themes/styles/github/light.css +0 -0
  474. package/src/themes/styles/neurons/dark.css +0 -247
  475. package/src/themes/styles/neurons/light.css +0 -280
  476. /package/{src/themes/styles/dracula/dark.css → .storybook/preview-head.html} +0 -0
  477. /package/src/{themes/styles/dracula/light.css → components/this.me/MeCard.jsx} +0 -0
@@ -0,0 +1,51 @@
1
+ import { Box } from "@mui/material";
2
+
3
+ /**
4
+ * PageEmbed Component
5
+ * Embeds external content such as videos, maps, or other iframes with a responsive aspect ratio.
6
+ *
7
+ * Props:
8
+ * - src: The URL of the content to embed (required).
9
+ * - title: Accessible title for the iframe (required for accessibility).
10
+ * - ratio: Aspect ratio of the embed. Accepts "16:9", "4:3", or custom (default: "16:9").
11
+ * - allowFullScreen: Allows fullscreen mode (default: true).
12
+ */
13
+ export default function VideoEmbed({
14
+ src,
15
+ title,
16
+ ratio = "16:9",
17
+ allowFullScreen = true,
18
+ }) {
19
+ if (!src) return null;
20
+
21
+ const [w, h] = ratio.split(":").map(Number);
22
+ const paddingTop = (h / w) * 100;
23
+
24
+ return (
25
+ <Box
26
+ sx={{
27
+ position: "relative",
28
+ width: "100%",
29
+ paddingTop: `${paddingTop}%`,
30
+ borderRadius: "6px",
31
+ overflow: "hidden",
32
+ boxShadow: 1,
33
+ my: 2,
34
+ }}
35
+ >
36
+ <iframe
37
+ src={src}
38
+ title={title}
39
+ allowFullScreen={allowFullScreen}
40
+ style={{
41
+ position: "absolute",
42
+ top: 0,
43
+ left: 0,
44
+ width: "100%",
45
+ height: "100%",
46
+ border: 0,
47
+ }}
48
+ />
49
+ </Box>
50
+ );
51
+ }
@@ -0,0 +1,51 @@
1
+ import { List, ListItemButton, ListItemText, Typography } from "@mui/material";
2
+
3
+ /**
4
+ * PageTableOfContents Component
5
+ * Generates a table of contents (TOC) from an array of headings.
6
+ *
7
+ * Props:
8
+ * - headings: Array of objects with { id, text, level }:
9
+ * - id: The anchor or unique identifier (used for scrolling).
10
+ * - text: The heading text to display.
11
+ * - level: Heading level (1, 2, or 3). Used to indent items.
12
+ * - onNavigate: Optional callback when a TOC item is clicked (receives id).
13
+ */
14
+ export default function TableOfContents({ headings = [], onNavigate }) {
15
+ if (!headings || headings.length === 0) return null;
16
+
17
+ const handleClick = (id) => {
18
+ if (onNavigate) {
19
+ onNavigate(id);
20
+ } else {
21
+ const el = document.getElementById(id);
22
+ if (el) el.scrollIntoView({ behavior: "smooth", block: "start" });
23
+ }
24
+ };
25
+
26
+ return (
27
+ <div style={{ padding: "1rem" }}>
28
+ <Typography variant="h6" sx={{ mb: 1 }}>
29
+ Table of Contents
30
+ </Typography>
31
+ <List dense>
32
+ {headings.map((heading, index) => (
33
+ <ListItemButton
34
+ key={index}
35
+ sx={{
36
+ pl: heading.level === 1 ? 1 : heading.level === 2 ? 3 : 5,
37
+ }}
38
+ onClick={() => handleClick(heading.id)}
39
+ >
40
+ <ListItemText
41
+ primaryTypographyProps={{
42
+ variant: heading.level === 1 ? "body1" : "body2",
43
+ }}
44
+ primary={heading.text}
45
+ />
46
+ </ListItemButton>
47
+ ))}
48
+ </List>
49
+ </div>
50
+ );
51
+ }
@@ -0,0 +1,45 @@
1
+ import { useState } from "react";
2
+ import { Tabs as MuiTabs, Tab, Box, Typography } from "@mui/material";
3
+
4
+ /**
5
+ * Tabs Component
6
+ * A simple tab system to switch between different content sections.
7
+ *
8
+ * Props:
9
+ * - tabs: Array of objects { label, content } (required).
10
+ * - initialIndex: Index of the tab to show first (default: 0).
11
+ * - variant: Tabs variant ("standard" | "scrollable" | "fullWidth"). Default: "standard".
12
+ */
13
+ export default function Tabs({ tabs = [], initialIndex = 0, variant = "standard" }) {
14
+ const [value, setValue] = useState(initialIndex);
15
+
16
+ const handleChange = (event, newValue) => {
17
+ setValue(newValue);
18
+ };
19
+
20
+ if (!tabs || tabs.length === 0) {
21
+ return <Typography variant="body2">No tabs available.</Typography>;
22
+ }
23
+
24
+ return (
25
+ <Box sx={{ width: "100%" }}>
26
+ <MuiTabs
27
+ value={value}
28
+ onChange={handleChange}
29
+ variant={variant}
30
+ sx={{ mb: 2 }}
31
+ >
32
+ {tabs.map((tab, index) => (
33
+ <Tab key={index} label={tab.label} />
34
+ ))}
35
+ </MuiTabs>
36
+ <Box sx={{ p: 2 }}>
37
+ {tabs[value]?.content || (
38
+ <Typography variant="body2" color="text.secondary">
39
+ No content for this tab.
40
+ </Typography>
41
+ )}
42
+ </Box>
43
+ </Box>
44
+ );
45
+ }
@@ -0,0 +1,41 @@
1
+ import { List, ListItem, ListItemText } from "@mui/material";
2
+
3
+ /**
4
+ * TextList Component
5
+ * Standardized list component for ordered or unordered lists.
6
+ *
7
+ * Props:
8
+ * - items: Array of strings or objects with { primary, secondary } (required).
9
+ * - type: "unordered" | "ordered" (default: "unordered").
10
+ * - dense: Reduces vertical spacing (default: false).
11
+ */
12
+ export default function PageList({ items = [], type = "unordered", dense = false }) {
13
+ const isOrdered = type === "ordered";
14
+
15
+ if (!items || items.length === 0) return null;
16
+
17
+ return (
18
+ <List
19
+ dense={dense}
20
+ sx={{
21
+ listStyleType: isOrdered ? "decimal" : "disc",
22
+ pl: 3,
23
+ "& .MuiListItem-root": {
24
+ display: "list-item",
25
+ py: dense ? 0.25 : 0.5,
26
+ },
27
+ }}
28
+ >
29
+ {items.map((item, index) => {
30
+ const primary = typeof item === "string" ? item : item.primary;
31
+ const secondary = typeof item === "string" ? null : item.secondary;
32
+
33
+ return (
34
+ <ListItem key={index}>
35
+ <ListItemText primary={primary} secondary={secondary} />
36
+ </ListItem>
37
+ );
38
+ })}
39
+ </List>
40
+ );
41
+ }
@@ -0,0 +1,28 @@
1
+ import { Typography } from "@mui/material";
2
+
3
+ /**
4
+ * TextParagraph Component
5
+ * Standardized paragraph text for pages with consistent spacing and alignment.
6
+ *
7
+ * Props:
8
+ * - children: Text or elements to display as paragraph content.
9
+ * - align: "left" | "center" | "right" | "justify" (default: "left").
10
+ * - variant: MUI Typography variant, e.g., "body1" | "body2" | "caption" (default: "body1").
11
+ * - gutterBottom: Adds bottom spacing (default: true).
12
+ */
13
+ export default function PageParagraph({
14
+ children,
15
+ align = "left",
16
+ variant = "body1",
17
+ gutterBottom = true,
18
+ }) {
19
+ return (
20
+ <Typography
21
+ variant={variant}
22
+ align={align}
23
+ sx={{ mb: gutterBottom ? 2 : 0 }}
24
+ >
25
+ {children}
26
+ </Typography>
27
+ );
28
+ }
@@ -0,0 +1,23 @@
1
+ import { Box, Typography } from "@mui/material";
2
+ import { useTheme } from "@mui/material/styles";
3
+
4
+ export default function TextQuote({ children }) {
5
+ const theme = useTheme();
6
+ const isDark = theme.palette.mode === "dark";
7
+
8
+ return (
9
+ <Box
10
+ component="blockquote"
11
+ sx={{
12
+ borderLeft: `4px solid ${theme.palette.primary.main}`,
13
+ padding: "1rem 1.5rem",
14
+ margin: "1.5rem 0",
15
+ fontStyle: "italic",
16
+ color: theme.palette.text.secondary,
17
+ "& p": { margin: 0 },
18
+ }}
19
+ >
20
+ <Typography variant="body1">{children}</Typography>
21
+ </Box>
22
+ );
23
+ }
@@ -0,0 +1,44 @@
1
+ import { Box, Typography, Divider } from "@mui/material";
2
+
3
+ /**
4
+ * TextTitle Component
5
+ * Displays a title (h1-h3) and an optional subtitle/description at the top of the page.
6
+ * Meant to be used inside PageContainer for consistency across layouts.
7
+ */
8
+ export default function TextTitle({ title, subtitle, h = 1, variant, showDivider = true }) {
9
+ const variants = {
10
+ 1: "h1",
11
+ 2: "h2",
12
+ 3: "h3",
13
+ 4: "h4",
14
+ 5: "h5",
15
+ 6: "h6",
16
+ };
17
+
18
+ const level = Math.min(Math.max(h, 1), 6);
19
+ const typographyVariant = variant || variants[level];
20
+ return (
21
+ <Box sx={{ width: "100%", mb: 3 }}>
22
+ <Typography
23
+ variant={typographyVariant}
24
+ component={`h${level}`}
25
+ sx={{
26
+ fontWeight: 600,
27
+ mb: subtitle ? 0.5 : 2,
28
+ }}
29
+ >
30
+ {title}
31
+ </Typography>
32
+ {subtitle && (
33
+ <Typography
34
+ variant="subtitle1"
35
+ color="text.secondary"
36
+ sx={{ mb: 1.5 }}
37
+ >
38
+ {subtitle}
39
+ </Typography>
40
+ )}
41
+ {showDivider && <Divider />}
42
+ </Box>
43
+ );
44
+ }
@@ -0,0 +1,24 @@
1
+ import { Typography, Link } from "@mui/material";
2
+
3
+ export function MeActive({ status, endpoint }) {
4
+ return (
5
+ <>
6
+ <Typography variant="subtitle1">
7
+ <strong>Identidades Disponibles:</strong>
8
+ </Typography>
9
+ {status.data.listUs && status.data.listUs.length > 0 ? (
10
+ status.data.listUs.map((u) => <Typography key={u.alias}>⊙ {u.alias}</Typography>)
11
+ ) : (
12
+ <Typography>No hay identidades registradas.</Typography>
13
+ )}
14
+ <Link href={`${endpoint}/graphql`} target="_blank" sx={{ mr: 1 }}>
15
+ GraphQL
16
+ </Link>
17
+ <Link href={`${endpoint}/playground`} target="_blank">
18
+ Playground
19
+ </Link>
20
+ </>
21
+ );
22
+ }
23
+
24
+ export default MeActive;
@@ -0,0 +1,183 @@
1
+ import { useState, useEffect, useRef } from "react";
2
+ import { Box } from "@mui/material";
3
+ import { GlobalStyles } from "@mui/system";
4
+ import maybeDefaultMe from "this.me";
5
+ const me = maybeDefaultMe.default || maybeDefaultMe;
6
+ export default function MeFloating() {
7
+ const [open, setOpen] = useState(false);
8
+ const [status, setStatus] = useState(me.state.status);
9
+
10
+ useEffect(() => {
11
+ const updateStatus = (s) => setStatus({ ...s });
12
+ me.on("status", updateStatus);
13
+ return () => me.off("status", updateStatus);
14
+ }, []);
15
+
16
+ // Drag state
17
+ const dockPos = useRef({ x: window.innerWidth - 80, y: window.innerHeight - 80 });
18
+ const [pos, setPos] = useState(dockPos.current);
19
+ const [offset, setOffset] = useState({ x: 0, y: 0 });
20
+ const [dragging, setDragging] = useState(false);
21
+ const clickTimeout = useRef(null);
22
+ const dragMoved = useRef(false);
23
+ /** ✅ Drag */
24
+ const handleMouseDown = (e) => {
25
+ setDragging(true);
26
+ setOffset({ x: e.clientX - pos.x, y: e.clientY - pos.y });
27
+ dragMoved.current = false;
28
+ clickTimeout.current = Date.now();
29
+ };
30
+
31
+ const handleMouseMove = (e) => {
32
+ if (!dragging) return;
33
+ if (Math.abs(e.clientX - pos.x) > 3 || Math.abs(e.clientY - pos.y) > 3) {
34
+ dragMoved.current = true;
35
+ }
36
+ setPos({ x: e.clientX - offset.x, y: e.clientY - offset.y });
37
+ };
38
+
39
+ const handleMouseUp = () => {
40
+ setDragging(false);
41
+ dragMoved.current = false;
42
+ };
43
+
44
+ useEffect(() => {
45
+ document.addEventListener("mousemove", handleMouseMove);
46
+ document.addEventListener("mouseup", handleMouseUp);
47
+ return () => {
48
+ document.removeEventListener("mousemove", handleMouseMove);
49
+ document.removeEventListener("mouseup", handleMouseUp);
50
+ };
51
+ });
52
+
53
+ useEffect(() => {
54
+ const handleResize = () => {
55
+ if (!dragging) {
56
+ dockPos.current = { x: window.innerWidth - 80, y: window.innerHeight - 80 };
57
+ setPos(dockPos.current);
58
+ }
59
+ };
60
+ window.addEventListener("resize", handleResize);
61
+ return () => window.removeEventListener("resize", handleResize);
62
+ }, [dragging]);
63
+
64
+ return (
65
+ <>
66
+ <GlobalStyles
67
+ styles={{
68
+ "@keyframes float": {
69
+ "0%,100%": { transform: "translateY(0) scale(1)", borderRadius: "50%" },
70
+ "25%": {
71
+ transform: "translateY(-6px) scale(1.05)",
72
+ borderRadius: "55% 45% 60% 40% / 60% 55% 45% 40%",
73
+ },
74
+ "50%": {
75
+ transform: "translateY(-8px) scale(1.1)",
76
+ borderRadius: "50% 60% 40% 55% / 55% 40% 60% 45%",
77
+ },
78
+ "75%": {
79
+ transform: "translateY(-6px) scale(1.05)",
80
+ borderRadius: "45% 55% 40% 60% / 40% 60% 55% 50%",
81
+ },
82
+ },
83
+ "@keyframes glow": {
84
+ "0%,100%": {
85
+ opacity: 0.3,
86
+ boxShadow: "0 0 4px rgba(255,255,255,0.2), 0 0 8px rgba(173,216,230,0.1)",
87
+ },
88
+ "50%": {
89
+ opacity: 0.5,
90
+ boxShadow: "0 0 6px rgba(255,255,255,0.3), 0 0 10px rgba(173,216,230,0.15)",
91
+ },
92
+ },
93
+ "@keyframes blobMove": {
94
+ "0%,100%": {
95
+ top: "15%",
96
+ left: "20%",
97
+ width: "65%",
98
+ height: "65%",
99
+ borderRadius: "60% 40% 55% 45% / 50% 60% 40% 50%",
100
+ filter: "blur(14px)",
101
+ },
102
+ "33%": {
103
+ top: "10%",
104
+ left: "25%",
105
+ width: "70%",
106
+ height: "70%",
107
+ borderRadius: "55% 60% 40% 45% / 45% 50% 60% 55%",
108
+ filter: "blur(18px)",
109
+ },
110
+ "66%": {
111
+ top: "18%",
112
+ left: "15%",
113
+ width: "60%",
114
+ height: "60%",
115
+ borderRadius: "50% 55% 45% 60% / 60% 50% 55% 40%",
116
+ filter: "blur(12px)",
117
+ },
118
+ },
119
+ }}
120
+ />
121
+
122
+ <Box
123
+ onClick={() => {
124
+ const elapsed = Date.now() - clickTimeout.current;
125
+ if (!dragging && !dragMoved.current && elapsed < 300) {
126
+ setOpen(true);
127
+ }
128
+ }}
129
+ onMouseDown={handleMouseDown}
130
+ sx={(theme) => ({
131
+ position: "fixed",
132
+ left: pos.x,
133
+ top: pos.y,
134
+ width: 60,
135
+ height: 60,
136
+ borderRadius: "50%",
137
+ background:
138
+ theme.palette.mode === "light"
139
+ ? "rgba(255,255,255,0.35)"
140
+ : "rgba(255,255,255,0.1)",
141
+ boxShadow:
142
+ !status.active || status.error
143
+ ? "0 0 0 3px #ff4d4d, 0 0 20px 6px rgba(255,0,0,0.6)"
144
+ : "0 0 0 3px #29bfff, 0 0 22px 6px rgba(0,200,255,0.6)",
145
+ border: !status.active || status.error ? "2.5px solid #ff1a1a" : "2.5px solid #9ff6ff",
146
+ display: "flex",
147
+ alignItems: "center",
148
+ justifyContent: "center",
149
+ fontSize: 26,
150
+ color: theme.palette.mode === "light" ? "#006699" : "#baf3ff",
151
+ cursor: "pointer",
152
+ userSelect: "none",
153
+ animation: "float 6s ease-in-out infinite, glow 4.5s ease-in-out infinite",
154
+ backdropFilter: "blur(10px) saturate(160%)",
155
+ "&::before": {
156
+ content: '""',
157
+ position: "absolute",
158
+ top: "15%",
159
+ left: "20%",
160
+ width: "65%",
161
+ height: "65%",
162
+ background:
163
+ theme.palette.mode === "light"
164
+ ? "radial-gradient(circle at 50% 50%, rgba(0,102,153,0.4) 0%, rgba(0,68,102,0) 70%)"
165
+ : "radial-gradient(circle at 50% 50%, rgba(120,240,255,0.3) 0%, rgba(173,216,230,0) 70%)",
166
+ filter: "blur(7px)",
167
+ borderRadius: "60% 40% 55% 45% / 50% 60% 40% 50%",
168
+ animation: "blobMove 8s ease-in-out infinite",
169
+ pointerEvents: "none",
170
+ mixBlendMode: "screen",
171
+ },
172
+ "&:hover": {
173
+ transform: "scale(1.08)",
174
+ },
175
+ })}
176
+ >
177
+
178
+ </Box>
179
+
180
+ {/* Removed MeState modal for now */}
181
+ </>
182
+ );
183
+ }
@@ -0,0 +1,21 @@
1
+ import { Typography, Button } from "@mui/material";
2
+
3
+ export default function MeInactive({ onRetry }) {
4
+ return (
5
+ <>
6
+ <Typography color="error" sx={{ mb: 1 }}>
7
+ ❌ No se detectó .me activo. Por favor verifica la conexión o instala .me.
8
+ </Typography>
9
+ <Button
10
+ variant="outlined"
11
+ sx={{ mt: 1 }}
12
+ onClick={() => window.open("https://neurons.me/install-me", "_blank", "noopener,noreferrer")}
13
+ >
14
+ 🔽 Instalar .me
15
+ </Button>
16
+ <Button variant="contained" sx={{ mt: 1 }} onClick={onRetry}>
17
+ 🔁 Reintentar conexión
18
+ </Button>
19
+ </>
20
+ );
21
+ }
@@ -0,0 +1,40 @@
1
+ import { Typography, Button, Paper } from "@mui/material";
2
+
3
+ export default function MeListUs({ list = [], onBack }) {
4
+ return (
5
+ <Paper
6
+ elevation={3}
7
+ sx={{
8
+ position: "fixed",
9
+ bottom: 90,
10
+ right: 20,
11
+ width: 320,
12
+ maxWidth: "90vw",
13
+ background: "#222",
14
+ color: "#eee",
15
+ borderRadius: 2,
16
+ boxShadow: 4,
17
+ p: 2,
18
+ zIndex: 2147483646,
19
+ }}
20
+ >
21
+ <Typography variant="h6">⊙ Mis identidades</Typography>
22
+
23
+ {list.length > 0 ? (
24
+ list.map((item) => (
25
+ <Typography key={item.alias}>⊙ {item.alias}</Typography>
26
+ ))
27
+ ) : (
28
+ <Typography>No hay identidades registradas.</Typography>
29
+ )}
30
+
31
+ <Button
32
+ variant="text"
33
+ sx={{ mt: 2, color: "#aaa" }}
34
+ onClick={onBack}
35
+ >
36
+ ← Volver
37
+ </Button>
38
+ </Paper>
39
+ );
40
+ }
@@ -0,0 +1,25 @@
1
+ import MeActive from "./MeActive";
2
+ import MeInactive from "./MeInactive";
3
+ import MeListUs from "./MeListUs";
4
+ import useMe from "./hooks/useMe";
5
+
6
+ export default function MeState() {
7
+ const { status, view, changeView, checkStatus } = useMe();
8
+
9
+ return (
10
+ <>
11
+ {view === "inactive" && <MeInactive onRetry={checkStatus} />}
12
+
13
+ {view === "status" && (
14
+ <MeActive status={status} onGoListUs={() => changeView("list-us")} />
15
+ )}
16
+
17
+ {view === "list-us" && (
18
+ <MeListUs
19
+ list={Array.isArray(status.data?.listUs) ? status.data.listUs : []}
20
+ onBack={() => changeView("status")}
21
+ />
22
+ )}
23
+ </>
24
+ );
25
+ }
@@ -0,0 +1,43 @@
1
+ import { useState, useEffect } from "react";
2
+ import { me } from "this.me";
3
+
4
+ /**
5
+ * ✅ useMe - React bridge for `this.me`
6
+ * Keeps React in sync with the live `me` instance.
7
+ */
8
+ export default function useMe() {
9
+ const [status, setStatus] = useState(me.state.status);
10
+ const [listUs, setListUs] = useState(me.state.listUs || []);
11
+ const [loading, setLoading] = useState(true);
12
+
13
+ useEffect(() => {
14
+ // ✅ Sync React state with me instance
15
+ const handleStatusChange = () => setStatus({ ...me.state.status });
16
+ const handleListUsChange = () => setListUs([...me.state.listUs]);
17
+
18
+ me.on("statusChange", handleStatusChange);
19
+ me.on("listUsChange", handleListUsChange);
20
+
21
+ // Initial load
22
+ (async () => {
23
+ setLoading(true);
24
+ await me.status(); // triggers internal update
25
+ await me.listUs(); // updates list
26
+ setLoading(false);
27
+ })();
28
+
29
+ return () => {
30
+ me.off("statusChange", handleStatusChange);
31
+ me.off("listUsChange", handleListUsChange);
32
+ };
33
+ }, []);
34
+
35
+ return {
36
+ status,
37
+ listUs,
38
+ loading,
39
+ checkStatus: () => me.status(),
40
+ fetchListUs: () => me.listUs(),
41
+ loadMe: (alias, hash) => me.loadMe(alias, hash),
42
+ };
43
+ }