this.gui 1.0.18 → 1.1.0

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