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,313 @@
1
+ import React from 'react';
2
+ import Icon from '../../themes/icons/Icon';
3
+
4
+ // Expanded icon registry demonstration with both Lucide and Material (MUI) icons
5
+ const ICONS = [
6
+ // Lucide icons
7
+ { name: 'lucide:home', label: 'lucide:home' },
8
+ { name: 'lucide:camera', label: 'lucide:camera' },
9
+ { name: 'lucide:user', label: 'lucide:user' },
10
+ { name: 'lucide:settings', label: 'lucide:settings' },
11
+ // Material UI icons (MUI_ICONS map)
12
+ { name: 'mui:BarChart', label: 'mui:BarChart' },
13
+ { name: 'mui:Memory', label: 'mui:Memory' },
14
+ { name: 'mui:Email', label: 'mui:Email' },
15
+ { name: 'mui:Bolt', label: 'mui:Bolt' },
16
+ { name: 'mui:Insights', label: 'mui:Insights' },
17
+ { name: 'mui:AttachMoney', label: 'mui:AttachMoney' },
18
+ { name: 'mui:Settings', label: 'mui:Settings' },
19
+ { name: 'mui:CameraAlt', label: 'mui:CameraAlt' },
20
+ { name: 'mui:Power', label: 'mui:Power' },
21
+ { name: 'mui:Help', label: 'mui:Help' },
22
+ { name: 'mui:SmartToy', label: 'mui:SmartToy' },
23
+ { name: 'mui:Chat', label: 'mui:Chat' },
24
+ { name: 'mui:ChatBubbleOutline', label: 'mui:ChatBubbleOutline' },
25
+ { name: 'mui:Psychology', label: 'mui:Psychology' },
26
+ { name: 'mui:SupportAgent', label: 'mui:SupportAgent' },
27
+ { name: 'mui:AutoAwesome', label: 'mui:AutoAwesome' },
28
+ { name: 'mui:Sync', label: 'mui:Sync' },
29
+ { name: 'mui:Loop', label: 'mui:Loop' },
30
+ { name: 'mui:Cached', label: 'mui:Cached' },
31
+ { name: 'mui:Build', label: 'mui:Build' },
32
+ { name: 'mui:Schedule', label: 'mui:Schedule' },
33
+ { name: 'mui:CalendarMonth', label: 'mui:CalendarMonth' },
34
+ { name: 'mui:Message', label: 'mui:Message' },
35
+ { name: 'mui:Forum', label: 'mui:Forum' },
36
+ { name: 'mui:Telegram', label: 'mui:Telegram' },
37
+ { name: 'mui:BusinessCenter', label: 'mui:BusinessCenter' },
38
+ { name: 'mui:TrendingUp', label: 'mui:TrendingUp' },
39
+ { name: 'mui:ShoppingCart', label: 'mui:ShoppingCart' },
40
+ { name: 'mui:Cloud', label: 'mui:Cloud' },
41
+ { name: 'mui:Code', label: 'mui:Code' },
42
+ { name: 'mui:Storage', label: 'mui:Storage' },
43
+ { name: 'mui:Dns', label: 'mui:Dns' },
44
+ { name: 'mui:Layers', label: 'mui:Layers' },
45
+ { name: 'mui:Security', label: 'mui:Security' },
46
+ { name: 'mui:Policy', label: 'mui:Policy' },
47
+ { name: 'mui:CalendarToday', label: 'mui:CalendarToday' },
48
+ { name: 'mui:VideoLibrary', label: 'mui:VideoLibrary' },
49
+ { name: 'mui:DeveloperMode', label: 'mui:DeveloperMode' },
50
+ { name: 'mui:CurrencyBitcoin', label: 'mui:CurrencyBitcoin' },
51
+ { name: 'mui:Brush', label: 'mui:Brush' },
52
+ ];
53
+
54
+ export default {
55
+ title: 'Theme/Icons',
56
+ component: Icon,
57
+ parameters: { layout: 'centered' },
58
+ tags: ['autodocs'],
59
+ };
60
+
61
+ export const Gallery = () => (
62
+ <div
63
+ style={{
64
+ display: 'grid',
65
+ gridTemplateColumns: 'repeat(4, 120px)',
66
+ gap: 24,
67
+ alignItems: 'center',
68
+ justifyItems: 'center',
69
+ margin: 16,
70
+ }}
71
+ >
72
+ {ICONS.map((i) => (
73
+ <div
74
+ key={i.label}
75
+ style={{
76
+ display: 'flex',
77
+ flexDirection: 'column',
78
+ alignItems: 'center',
79
+ gap: 8,
80
+ }}
81
+ >
82
+ <Icon name={i.name} size={32} />
83
+ <code style={{ fontSize: 12, textAlign: 'center', wordBreak: 'break-all' }}>{i.label}</code>
84
+ </div>
85
+ ))}
86
+ </div>
87
+ );
88
+
89
+ export const ColoredGallery = () => (
90
+ <div
91
+ style={{
92
+ display: 'grid',
93
+ gridTemplateColumns: 'repeat(4, 120px)',
94
+ gap: 24,
95
+ alignItems: 'center',
96
+ justifyItems: 'center',
97
+ margin: 16,
98
+ }}
99
+ >
100
+ {ICONS.map((i) => (
101
+ <div
102
+ key={i.label}
103
+ style={{
104
+ display: 'flex',
105
+ flexDirection: 'column',
106
+ alignItems: 'center',
107
+ gap: 8,
108
+ }}
109
+ >
110
+ {/* Lucide usa color directamente; MUI requiere htmlColor */}
111
+ <Icon
112
+ name={i.name}
113
+ size={32}
114
+ {...(i.name.startsWith('lucide:')
115
+ ? { color: '#4caf50' } // verde
116
+ : { htmlColor: '#ff9800' } // naranja
117
+ )}
118
+ />
119
+ <code style={{ fontSize: 12, textAlign: 'center', wordBreak: 'break-all' }}>{i.label}</code>
120
+ </div>
121
+ ))}
122
+ </div>
123
+ );
124
+
125
+ export const UsageModesDocs = () => (
126
+ <div style={{ maxWidth: 920, padding: 24, lineHeight: 1.55 }}>
127
+ <h2 style={{ marginTop: 0 }}>Two Usage Modes for Icons in This.GUI</h2>
128
+
129
+ <h3>1. <strong>Declarative Mode</strong> (via JSON)</h3>
130
+ <p>
131
+ In declarative mode, icons are specified as <code>strings</code> with prefixes like <code>lucide:</code> or <code>mui:</code> in JSON props.
132
+ This mode is ideal for declarative UI configurations such as NavBars, SideBars, or any dynamic content where icons are defined in JSON or similar data structures.
133
+ The <code>&lt;Icon&gt;</code> component automatically resolves these string names to the correct icon component.
134
+ </p>
135
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
136
+ <code>{`// Example JSON config:
137
+ {
138
+ "menuItems": [
139
+ { "label": "Home", "icon": "lucide:home" },
140
+ { "label": "Dashboard", "icon": "mui:BarChart" }
141
+ ]
142
+ }
143
+
144
+ // Usage in React:
145
+ menuItems.map(item => (
146
+ <div key={item.label}>
147
+ <Icon name={item.icon} size={24} />
148
+ <span>{item.label}</span>
149
+ </div>
150
+ ))
151
+ `}</code>
152
+ </pre>
153
+
154
+ <h3>2. <strong>Direct React Mode</strong> (manual imports)</h3>
155
+ <p>
156
+ Developers can also import Material UI or Lucide icons directly as React components and use them manually.
157
+ This mode offers full control over props, styling, and behavior, making it suitable when you need fine-grained customization.
158
+ </p>
159
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
160
+ <code>{`// Import icons directly
161
+ import { Camera as LucideCamera } from 'lucide-react';
162
+ import CameraAltIcon from '@mui/icons-material/CameraAlt';
163
+
164
+ // Use in JSX
165
+ <LucideCamera size={24} color="#4caf50" />
166
+ <CameraAltIcon fontSize="medium" htmlColor="#ff9800" />
167
+ `}</code>
168
+ </pre>
169
+
170
+ <h3>Dynamic Theming Support</h3>
171
+ <p>
172
+ If you pass a static <code>color</code> or <code>htmlColor</code> prop to <code>&lt;Icon&gt;</code>, the icon color will not update when the theme changes.
173
+ To make icons react to theme changes, omit the <code>color</code> or <code>htmlColor</code> props and rely on the default behavior, which uses <code>theme.palette.text.primary</code> or <code>theme.palette.text.secondary</code>.
174
+ </p>
175
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
176
+ <code>{`// Theme-aware icon (auto-updates with dark/light theme)
177
+ <Icon name="mui:Settings" size={24} />
178
+
179
+ // Fixed-color icon (doesn't change with theme)
180
+ <Icon name="mui:Settings" size={24} htmlColor="#ff9800" />
181
+ `}</code>
182
+ </pre>
183
+ </div>
184
+ );
185
+
186
+ export const LucideDocs = () => (
187
+ <div style={{ maxWidth: 920, padding: 24, lineHeight: 1.55 }}>
188
+ <h2 style={{ marginTop: 0 }}>Lucide — Usage & Catalog</h2>
189
+ <p>
190
+ <strong>All Lucide icons</strong> are available by using the <code>lucide:</code> prefix with the
191
+ icon name. Names are flexible: you can use kebab-case, snake_case, spaces or PascalCase — the
192
+ registry normalizes them for you.
193
+ </p>
194
+
195
+ <p>
196
+ Full catalog: <a href="https://lucide.dev/icons" target="_blank" rel="noreferrer">https://lucide.dev/icons</a>
197
+ </p>
198
+
199
+ <h3>Basic usage</h3>
200
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
201
+ <code>{`// Import once
202
+ import Icon from '../../icons/Icon';
203
+
204
+ // Use in your components
205
+ <Icon name="lucide:camera" size={24} />
206
+ <Icon name="lucide:arrow-left" size={20} color="#4caf50" />
207
+ `}</code>
208
+ </pre>
209
+
210
+ <h3>Name mapping examples</h3>
211
+ <p>
212
+ These all resolve to the same icon (<code>video-off</code>):
213
+ </p>
214
+ <table style={{ borderCollapse: 'collapse', width: '100%', marginBottom: 16 }}>
215
+ <thead>
216
+ <tr>
217
+ <th style={{ textAlign: 'left', borderBottom: '1px solid #ddd', padding: '6px 8px' }}>Input</th>
218
+ <th style={{ textAlign: 'left', borderBottom: '1px solid #ddd', padding: '6px 8px' }}>Resolved slug</th>
219
+ </tr>
220
+ </thead>
221
+ <tbody>
222
+ <tr>
223
+ <td style={{ padding: '6px 8px' }}><code>lucide:video-off</code></td>
224
+ <td style={{ padding: '6px 8px' }}><code>video-off</code></td>
225
+ </tr>
226
+ <tr>
227
+ <td style={{ padding: '6px 8px' }}><code>lucide/video_off</code></td>
228
+ <td style={{ padding: '6px 8px' }}><code>video-off</code></td>
229
+ </tr>
230
+ <tr>
231
+ <td style={{ padding: '6px 8px' }}><code>Lucide:VideoOff</code></td>
232
+ <td style={{ padding: '6px 8px' }}><code>video-off</code></td>
233
+ </tr>
234
+ <tr>
235
+ <td style={{ padding: '6px 8px' }}><code>video off</code></td>
236
+ <td style={{ padding: '6px 8px' }}><code>video-off</code></td>
237
+ </tr>
238
+ </tbody>
239
+ </table>
240
+
241
+ <h3>Color & size</h3>
242
+ <p>
243
+ Lucide components accept standard SVG props. Use <code>size</code> (number) and <code>color</code> (CSS color):
244
+ </p>
245
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
246
+ <code>{`<Icon name="lucide:heart" size={28} color="#e91e63" />
247
+ <Icon name="lucide:star" size={20} color="gold" />
248
+ `}</code>
249
+ </pre>
250
+ <p>
251
+ Tip: Material UI icons use <code>htmlColor</code> instead of <code>color</code>. Example:
252
+ </p>
253
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
254
+ <code>{`<Icon name="mui:CameraAlt" htmlColor="#ff9800" />
255
+ `}</code>
256
+ </pre>
257
+
258
+ <h3>Lazy loading & tree-shaking</h3>
259
+ <p>
260
+ Each Lucide icon is loaded on demand from <code>lucide-react/icons/&lt;slug&gt;</code> via <code>React.lazy</code>. This
261
+ keeps bundles small: only the icons you actually render are fetched.
262
+ </p>
263
+
264
+ <h3>Fallback behavior</h3>
265
+ <p>
266
+ If an icon name is wrong or unavailable, the registry renders a neutral placeholder instead of
267
+ crashing. Check the console for the attempted slug.
268
+ </p>
269
+ </div>
270
+ );
271
+
272
+ export const MaterialDocs = () => (
273
+ <div style={{ maxWidth: 920, padding: 24, lineHeight: 1.55 }}>
274
+ <h2 style={{ marginTop: 0 }}>Material UI Icons (MUI) — Usage & Catalog</h2>
275
+ <p>
276
+ <strong>All Material UI icons</strong> are available by using the <code>mui:</code> prefix with the icon name.
277
+ The icon names correspond to the official Material UI icon component names.
278
+ </p>
279
+
280
+ <p>
281
+ Full catalog: <a href="https://mui.com/material-ui/material-icons/" target="_blank" rel="noreferrer">https://mui.com/material-ui/material-icons/</a>
282
+ </p>
283
+
284
+ <h3>Basic usage</h3>
285
+ <pre style={{ background: '#0f111a', color: '#e6e6e6', padding: 16, borderRadius: 8, overflow: 'auto' }}>
286
+ <code>{`// Import once
287
+ import Icon from '../../icons/Icon';
288
+
289
+ // Use in your components
290
+ <Icon name="mui:CameraAlt" fontSize="medium" htmlColor="#ff9800" />
291
+ <Icon name="mui:BarChart" fontSize="small" />
292
+ `}</code>
293
+ </pre>
294
+
295
+ <h3>Important props</h3>
296
+ <ul>
297
+ <li><code>htmlColor</code>: sets the icon color (preferred over <code>color</code> for Material UI icons)</li>
298
+ <li><code>fontSize</code>: controls size with values like <code>small</code>, <code>medium</code>, <code>large</code>, etc.</li>
299
+ </ul>
300
+
301
+ <h3>Lazy loading & tree-shaking</h3>
302
+ <p>
303
+ Each Material UI icon is loaded on demand from <code>@mui/icons-material/&lt;IconName&gt;</code> via <code>React.lazy</code>,
304
+ ensuring your bundles include only the icons you use.
305
+ </p>
306
+
307
+ <h3>Fallback behavior</h3>
308
+ <p>
309
+ If an icon name is wrong or unavailable, the registry renders a neutral placeholder instead of crashing.
310
+ Check the console for the attempted slug.
311
+ </p>
312
+ </div>
313
+ );
@@ -0,0 +1,206 @@
1
+ // src/stories/Theme/Motion.stories.jsx
2
+ // CSF stories (no MDX, no @storybook/blocks). Visualizes easing curves and durations
3
+ // using values coming from the compiled theme (theme.transitions & theme.custom).
4
+ import { Box, Typography, Stack, Paper, Divider } from '@mui/material';
5
+ import { useTheme } from '@mui/material/styles';
6
+
7
+ export default {
8
+ title: 'Theme/Motion',
9
+ parameters: {
10
+ controls: { hideNoControlsWarning: true },
11
+ docs: { autodocs: false },
12
+ },
13
+ };
14
+
15
+ const Row = ({ label, value, children }) => (
16
+ <Stack direction="row" alignItems="center" spacing={2} sx={{ py: 1 }}>
17
+ <Box sx={{ width: 220 }}>
18
+ <Typography variant="body2" sx={{ fontWeight: 600 }}>{label}</Typography>
19
+ {value && (
20
+ <Typography variant="caption" color="text.secondary" sx={{ wordBreak: 'break-all' }}>
21
+ {String(value)}
22
+ </Typography>
23
+ )}
24
+ </Box>
25
+ <Box sx={{ flex: 1 }}>{children}</Box>
26
+ </Stack>
27
+ );
28
+
29
+ function EasingDemo({ name, func }) {
30
+ // Animated dot that moves left→right using the provided timing function
31
+ return (
32
+ <Box sx={{ position: 'relative', height: 28 }}>
33
+ <Box sx={{ position: 'absolute', top: 13, left: 0, right: 0, height: 2, bgcolor: 'divider' }} />
34
+ <Box
35
+ sx={{
36
+ position: 'absolute',
37
+ top: 4,
38
+ left: 0,
39
+ width: 20,
40
+ height: 20,
41
+ borderRadius: '50%',
42
+ bgcolor: 'primary.main',
43
+ animationName: 'motion-move',
44
+ animationDuration: '1600ms',
45
+ animationIterationCount: 'infinite',
46
+ animationTimingFunction: func,
47
+ '@keyframes motion-move': {
48
+ '0%': { transform: 'translateX(0px)' },
49
+ '50%': { transform: 'translateX(220px)' },
50
+ '100%': { transform: 'translateX(0px)' },
51
+ },
52
+ }}
53
+ title={`${name}: ${func}`}
54
+ />
55
+ </Box>
56
+ );
57
+ }
58
+
59
+ function DurationDemo({ label, ms, easing }) {
60
+ // Bar that fills to 100% with a given duration
61
+ const timing = easing || 'ease';
62
+ return (
63
+ <Box sx={{ position: 'relative', height: 16, bgcolor: 'action.hover', borderRadius: 1, overflow: 'hidden' }}>
64
+ <Box
65
+ sx={{
66
+ position: 'absolute',
67
+ top: 0,
68
+ left: 0,
69
+ bottom: 0,
70
+ width: '0%',
71
+ bgcolor: 'secondary.main',
72
+ animationName: 'motion-fill',
73
+ animationDuration: `${ms}ms`,
74
+ animationTimingFunction: timing,
75
+ animationIterationCount: 'infinite',
76
+ '@keyframes motion-fill': {
77
+ '0%': { width: '0%' },
78
+ '50%': { width: '100%' },
79
+ '100%': { width: '0%' },
80
+ },
81
+ }}
82
+ title={`${label}: ${ms}ms`}
83
+ />
84
+ </Box>
85
+ );
86
+ }
87
+
88
+ const Section = ({ title, subtitle, children }) => (
89
+ <Paper variant="outlined" sx={{ p: 2, mb: 3 }}>
90
+ <Typography variant="h5" sx={{ mb: 0.5 }}>{title}</Typography>
91
+ {subtitle && (
92
+ <Typography variant="body2" color="text.secondary" sx={{ mb: 2 }}>{subtitle}</Typography>
93
+ )}
94
+ {children}
95
+ </Paper>
96
+ );
97
+
98
+ export const Overview = () => {
99
+ const theme = useTheme();
100
+
101
+ const easings = [
102
+ { key: 'easeInOut', label: 'easing.easeInOut', value: theme.transitions.easing?.easeInOut },
103
+ { key: 'easeOut', label: 'easing.easeOut', value: theme.transitions.easing?.easeOut },
104
+ { key: 'easeIn', label: 'easing.easeIn', value: theme.transitions.easing?.easeIn },
105
+ { key: 'sharp', label: 'easing.sharp', value: theme.transitions.easing?.sharp },
106
+ ].filter(e => !!e.value);
107
+
108
+ const durations = [
109
+ { key: 'shortest', label: 'duration.shortest', value: theme.transitions.duration?.shortest },
110
+ { key: 'shorter', label: 'duration.shorter', value: theme.transitions.duration?.shorter },
111
+ { key: 'short', label: 'duration.short', value: theme.transitions.duration?.short },
112
+ { key: 'standard', label: 'duration.standard', value: theme.transitions.duration?.standard },
113
+ { key: 'complex', label: 'duration.complex', value: theme.transitions.duration?.complex },
114
+ { key: 'enteringScreen', label: 'duration.enteringScreen', value: theme.transitions.duration?.enteringScreen },
115
+ { key: 'leavingScreen', label: 'duration.leavingScreen', value: theme.transitions.duration?.leavingScreen },
116
+ ].filter(d => Number.isFinite(d.value));
117
+
118
+ return (
119
+ <Box sx={{ p: 2 }}>
120
+ <Section
121
+ title="Easing"
122
+ subtitle="Values come from tokens → theme.transitions.easing.*. The dot uses that timing function to travel across the rail."
123
+ >
124
+ <Stack spacing={1.5}>
125
+ {easings.map(({ key, label, value }) => (
126
+ <Row key={key} label={label} value={value}>
127
+ <EasingDemo name={label} func={value} />
128
+ </Row>
129
+ ))}
130
+ </Stack>
131
+ </Section>
132
+
133
+ <Section
134
+ title="Duration"
135
+ subtitle="Values come from tokens → theme.transitions.duration.*. The bar fills/empties using that duration."
136
+ >
137
+ <Stack spacing={1.5}>
138
+ {durations.map(({ key, label, value }) => (
139
+ <Row key={key} label={label} value={`${value}ms`}>
140
+ <DurationDemo label={label} ms={value} easing={theme.transitions.easing?.easeInOut} />
141
+ </Row>
142
+ ))}
143
+ </Stack>
144
+ </Section>
145
+
146
+ <Paper variant="outlined" sx={{ p: 2 }}>
147
+ <Typography variant="subtitle1" sx={{ fontWeight: 600, mb: 0.5 }}>Notes</Typography>
148
+ <Typography variant="body2" color="text.secondary">
149
+ • All values are compiled from your token files (global + theme overrides).<br/>
150
+ • If a token is missing, sensible fallbacks are used. You can still access raw values under <code>theme.custom</code> if you expose them there.
151
+ </Typography>
152
+ </Paper>
153
+ </Box>
154
+ );
155
+ };
156
+
157
+ export const EasingsOnly = () => {
158
+ const theme = useTheme();
159
+ const easings = [
160
+ { key: 'easeInOut', label: 'easing.easeInOut', value: theme.transitions.easing?.easeInOut },
161
+ { key: 'easeOut', label: 'easing.easeOut', value: theme.transitions.easing?.easeOut },
162
+ { key: 'easeIn', label: 'easing.easeIn', value: theme.transitions.easing?.easeIn },
163
+ { key: 'sharp', label: 'easing.sharp', value: theme.transitions.easing?.sharp },
164
+ ].filter(e => !!e.value);
165
+
166
+ return (
167
+ <Box sx={{ p: 2 }}>
168
+ <Section title="Easing">
169
+ <Stack spacing={1.5}>
170
+ {easings.map(({ key, label, value }) => (
171
+ <Row key={key} label={label} value={value}>
172
+ <EasingDemo name={label} func={value} />
173
+ </Row>
174
+ ))}
175
+ </Stack>
176
+ </Section>
177
+ </Box>
178
+ );
179
+ };
180
+
181
+ export const DurationsOnly = () => {
182
+ const theme = useTheme();
183
+ const durations = [
184
+ { key: 'shortest', label: 'duration.shortest', value: theme.transitions.duration?.shortest },
185
+ { key: 'shorter', label: 'duration.shorter', value: theme.transitions.duration?.shorter },
186
+ { key: 'short', label: 'duration.short', value: theme.transitions.duration?.short },
187
+ { key: 'standard', label: 'duration.standard', value: theme.transitions.duration?.standard },
188
+ { key: 'complex', label: 'duration.complex', value: theme.transitions.duration?.complex },
189
+ { key: 'enteringScreen', label: 'duration.enteringScreen', value: theme.transitions.duration?.enteringScreen },
190
+ { key: 'leavingScreen', label: 'duration.leavingScreen', value: theme.transitions.duration?.leavingScreen },
191
+ ].filter(d => Number.isFinite(d.value));
192
+
193
+ return (
194
+ <Box sx={{ p: 2 }}>
195
+ <Section title="Duration">
196
+ <Stack spacing={1.5}>
197
+ {durations.map(({ key, label, value }) => (
198
+ <Row key={key} label={label} value={`${value}ms`}>
199
+ <DurationDemo label={label} ms={value} easing={theme.transitions.easing?.easeInOut} />
200
+ </Row>
201
+ ))}
202
+ </Stack>
203
+ </Section>
204
+ </Box>
205
+ );
206
+ };
@@ -0,0 +1,95 @@
1
+ // src/stories/Theme/ShadowAndElevation.stories.jsx
2
+ import { Box, Paper, Typography, Grid, Stack, Divider } from '@mui/material';
3
+ import { useTheme } from '@mui/material/styles';
4
+
5
+ export default {
6
+ title: 'Theme/Shadows & Elevation',
7
+ parameters: {
8
+ docs: { autodocs: false },
9
+ layout: 'fullscreen',
10
+ },
11
+ };
12
+
13
+ function ShadowCard({ level }) {
14
+ const theme = useTheme();
15
+ const cssValue = theme.shadows?.[level] ?? 'none';
16
+ return (
17
+ <Paper
18
+ elevation={level}
19
+ sx={{ p: 2, height: 120, display: 'flex', flexDirection: 'column', justifyContent: 'space-between' }}
20
+ >
21
+ <Typography variant="subtitle2">elevation: {level}</Typography>
22
+ <Typography variant="caption" sx={{ color: 'text.secondary' }}>
23
+ {cssValue}
24
+ </Typography>
25
+ </Paper>
26
+ );
27
+ }
28
+
29
+ function SectionTitle({ children }) {
30
+ return (
31
+ <Typography variant="h5" sx={{ mb: 1.5 }}>
32
+ {children}
33
+ </Typography>
34
+ );
35
+ }
36
+
37
+ const COMMON_STEPS = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24];
38
+
39
+ export const Catalogue = () => {
40
+ const theme = useTheme();
41
+ const total = Array.isArray(theme.shadows) ? theme.shadows.length : 0;
42
+
43
+ return (
44
+ <Box sx={{ p: { xs: 2, md: 4 }, bgcolor: 'background.default', color: 'text.primary', minHeight: '100vh' }}>
45
+ {/* Header */}
46
+ <Typography variant="h3" sx={{ mb: 0.5 }}>Shadows & Elevation</Typography>
47
+ <Typography variant="body2" sx={{ color: 'text.secondary', mb: 3 }}>
48
+ This catalogue renders Paper components using <code>elevation</code> levels backed by <code>theme.shadows</code>.
49
+ Your theme currently provides <strong>{total}</strong> shadow levels.
50
+ </Typography>
51
+
52
+ {/* Common levels */}
53
+ <SectionTitle>Common levels</SectionTitle>
54
+ <Typography variant="body2" sx={{ color: 'text.secondary', mb: 2 }}>
55
+ A quick glance of the most used elevation steps.
56
+ </Typography>
57
+ <Grid container spacing={2} sx={{ mb: 4 }}>
58
+ {COMMON_STEPS.map((lvl) => (
59
+ <Grid key={`common-${lvl}`} item xs={12} sm={6} md={4} lg={3}>
60
+ <ShadowCard level={lvl} />
61
+ </Grid>
62
+ ))}
63
+ </Grid>
64
+
65
+ <Divider sx={{ my: 3 }} />
66
+
67
+ {/* Full scale */}
68
+ <SectionTitle>Full scale</SectionTitle>
69
+ <Typography variant="body2" sx={{ color: 'text.secondary', mb: 2 }}>
70
+ Every available index in <code>theme.shadows</code> (0..{Math.max(total - 1, 0)}).
71
+ </Typography>
72
+
73
+ <Grid container spacing={2}>
74
+ {Array.from({ length: total || 25 }, (_, i) => i).map((lvl) => (
75
+ <Grid key={`all-${lvl}`} item xs={12} sm={6} md={4} lg={3}>
76
+ <ShadowCard level={lvl} />
77
+ </Grid>
78
+ ))}
79
+ </Grid>
80
+
81
+ {/* Notes */}
82
+ <Stack sx={{ mt: 4, color: 'text.secondary' }} spacing={1}>
83
+ <Typography variant="subtitle2">Notes</Typography>
84
+ <Typography variant="caption">
85
+ • The CSS shown inside each card is the raw value from <code>theme.shadows[level]</code>.
86
+ </Typography>
87
+ <Typography variant="caption">
88
+ • You can customize the entire scale via tokens (global <code>shadows</code>) or per-theme overrides.
89
+ </Typography>
90
+ </Stack>
91
+ </Box>
92
+ );
93
+ };
94
+
95
+ Catalogue.storyName = 'Catalogue';