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
@@ -1,177 +0,0 @@
1
- // src/stories/Atoms/Icon/Icon.stories.jsx
2
- import React from 'react';
3
- import { Icon } from './Icon';
4
- import { FaBeer, FaCoffee, FaApple, FaAndroid, FaReact, FaCheck, FaTimes, FaInfoCircle, FaExclamationTriangle, FaQuestionCircle } from 'react-icons/fa';
5
- import './Icon.css';
6
-
7
- export default {
8
- title: 'Atoms/Media/Icon',
9
- component: Icon,
10
- argTypes: {
11
- icon: {
12
- control: 'object',
13
- description: 'Icon component from react-icons or similar library.',
14
- },
15
- background: {
16
- control: 'boolean',
17
- description: 'Whether to display a background behind the icon.',
18
- },
19
- color: {
20
- control: {
21
- type: 'select',
22
- options: [
23
- 'info',
24
- 'warning',
25
- 'alert',
26
- 'success',
27
- 'neutral',
28
- 'dark',
29
- 'classy-color-1',
30
- 'classy-color-2',
31
- 'classy-color-3',
32
- 'classy-color-4',
33
- 'classy-color-5',
34
- 'small-switch-color-1',
35
- 'small-switch-color-2',
36
- 'natural-color-1',
37
- 'natural-color-2',
38
- 'natural-color-3',
39
- 'grey-friend-1',
40
- 'grey-friend-2',
41
- 'shade-1',
42
- 'shade-2',
43
- 'shade-3',
44
- 'shade-4',
45
- ],
46
- },
47
- description: 'Color of the icon or background.',
48
- },
49
- shape: {
50
- control: {
51
- type: 'select',
52
- options: ['rounded', 'square'],
53
- },
54
- description: 'Shape of the icon background.',
55
- },
56
- size: {
57
- control: {
58
- type: 'select',
59
- options: ['small', 'normal', 'big'],
60
- },
61
- description: 'Size of the icon.',
62
- },
63
- align: {
64
- control: {
65
- type: 'select',
66
- options: ['left', 'center', 'right'],
67
- },
68
- description: 'Alignment of the icon within its container.',
69
- },
70
- className: {
71
- control: 'text',
72
- description: 'Additional CSS classes.',
73
- },
74
- style: {
75
- control: 'object',
76
- description: 'Inline styles.',
77
- },
78
- },
79
- };
80
-
81
- const icons = {
82
- FaBeer: FaBeer,
83
- FaCoffee: FaCoffee,
84
- FaApple: FaApple,
85
- FaAndroid: FaAndroid,
86
- FaReact: FaReact,
87
- FaCheck: FaCheck,
88
- FaTimes: FaTimes,
89
- FaInfoCircle: FaInfoCircle,
90
- FaExclamationTriangle: FaExclamationTriangle,
91
- FaQuestionCircle: FaQuestionCircle,
92
- };
93
-
94
- /**
95
- * All Icons Collection
96
- */
97
- export const AllIcons = () => (
98
- <div className="icon-collection">
99
- {Object.entries(icons).map(([name, IconComponent]) => (
100
- <div key={name} className="icon-item">
101
- <Icon
102
- icon={IconComponent}
103
- background={false}
104
- color="neutral"
105
- shape="square"
106
- size="normal"
107
- />
108
- <p>{name}</p>
109
- </div>
110
- ))}
111
- </div>
112
- );
113
-
114
- /**
115
- * Icon with Background
116
- */
117
- export const IconWithBackground = () => (
118
- <Icon
119
- icon={FaBeer}
120
- background
121
- color="success"
122
- shape="rounded"
123
- size="big"
124
- align="center"
125
- />
126
- );
127
-
128
- /**
129
- * Icon without Background
130
- */
131
- export const IconWithoutBackground = () => (
132
- <Icon
133
- icon={FaCoffee}
134
- background={false}
135
- color="warning"
136
- size="normal"
137
- align="left"
138
- />
139
- );
140
-
141
- /**
142
- * Rounded Icon with Different Colors
143
- */
144
- export const RoundedIcons = () => (
145
- <div className="icon-story">
146
- <Icon icon={FaApple} background color="info" shape="rounded" size="small" />
147
- <Icon icon={FaAndroid} background color="alert" shape="rounded" size="normal" />
148
- <Icon icon={FaReact} background color="shade-3" shape="rounded" size="big" />
149
- </div>
150
- );
151
-
152
- /**
153
- * Square Icon with Different Colors
154
- */
155
- export const SquareIcons = () => (
156
- <div className="icon-story">
157
- <Icon icon={FaBeer} background color="neutral" shape="square" size="small" />
158
- <Icon icon={FaCoffee} background color="dark" shape="square" size="normal" />
159
- <Icon icon={FaApple} background color="classy-color-2" shape="square" size="big" />
160
- </div>
161
- );
162
-
163
- /**
164
- * Interactive Icon
165
- */
166
- const Template = (args) => <Icon {...args} />;
167
-
168
- export const InteractiveIcon = Template.bind({});
169
- InteractiveIcon.args = {
170
- icon: FaReact,
171
- background: false,
172
- color: 'info',
173
- shape: 'rounded',
174
- size: 'normal',
175
- align: 'center',
176
- };
177
- InteractiveIcon.storyName = 'Interactive Icon';
@@ -1,245 +0,0 @@
1
- /* src/stories/Atoms/Image/Image.css */
2
-
3
- .image-figure {
4
- position: relative;
5
- display: inline-block;
6
- margin: 0;
7
- }
8
-
9
- .image__placeholder {
10
- width: 100%;
11
- height: 100%;
12
- background-color: var(--neutral-color);
13
- display: flex;
14
- align-items: center;
15
- justify-content: center;
16
- color: var(--background-color);
17
- position: absolute;
18
- top: 0;
19
- left: 0;
20
- }
21
-
22
- .image {
23
- display: block;
24
- width: 100%;
25
- height: auto;
26
- object-fit: cover;
27
- cursor: pointer;
28
- transition: transform var(--transition-speed) ease, box-shadow var(--transition-speed) ease, opacity var(--transition-speed) ease;
29
- opacity: 0;
30
- }
31
-
32
- .image--loaded {
33
- opacity: 1;
34
- }
35
-
36
- .image--error {
37
- opacity: 1;
38
- }
39
-
40
- .image--thumbnail {
41
- max-width: 100%;
42
- height: auto;
43
- }
44
-
45
- .image--avatar {
46
- border-radius: 50%;
47
- object-fit: cover;
48
- max-width: 100%;
49
- height: auto;
50
- }
51
-
52
- .image--expanded {
53
- cursor: default;
54
- }
55
-
56
- .image--flat {
57
- cursor: default;
58
- max-width: none;
59
- }
60
-
61
- .image--16by9 {
62
- aspect-ratio: 16 / 9;
63
- }
64
-
65
- .image--4by3 {
66
- aspect-ratio: 4 / 3;
67
- }
68
-
69
- .image--1by1 {
70
- aspect-ratio: 1 / 1;
71
- }
72
-
73
- .image--crop-center {
74
- object-position: center;
75
- }
76
-
77
- .image--crop-top {
78
- object-position: top;
79
- }
80
-
81
- .image--crop-left {
82
- object-position: left;
83
- }
84
-
85
- .image--size-xs {
86
- width: 30px;
87
- height: 30px;
88
- }
89
-
90
- .image--size-sm {
91
- width: 50px;
92
- height: 50px;
93
- }
94
-
95
- .image--size-md {
96
- width: 100px;
97
- height: 100px;
98
- }
99
-
100
- .image--size-lg {
101
- width: 150px;
102
- height: 150px;
103
- }
104
-
105
- .image--size-xl {
106
- width: 200px;
107
- height: 200px;
108
- }
109
-
110
- .image:hover {
111
- transform: scale(1.05);
112
- box-shadow: var(--box-shadow);
113
- }
114
-
115
- .image__caption {
116
- text-align: center;
117
- margin-top: var(--spacing-sm);
118
- font-size: var(--font-size-small);
119
- color: var(--muted-text-color);
120
- }
121
-
122
- /* Overlay Styles */
123
- .image__overlay {
124
- position: absolute;
125
- top: 0;
126
- left: 0;
127
- width: 100%;
128
- height: 100%;
129
- background-color: rgba(0, 0, 0, 0.5);
130
- opacity: 0;
131
- transition: opacity var(--transition-speed) ease;
132
- display: flex;
133
- align-items: center;
134
- justify-content: center;
135
- }
136
-
137
- .image-figure:hover .image__overlay {
138
- opacity: 1;
139
- }
140
-
141
- .image__overlay-caption {
142
- color: #fff;
143
- font-size: var(--font-size-base);
144
- text-align: center;
145
- }
146
-
147
- .image__overlay-icons {
148
- display: flex;
149
- gap: 10px;
150
- }
151
-
152
- .image__overlay-icons--center {
153
- justify-content: center;
154
- }
155
-
156
- .image__overlay-icons--top-right {
157
- position: absolute;
158
- top: var(--spacing-sm);
159
- right: var(--spacing-sm);
160
- }
161
-
162
- .image__overlay-icon {
163
- color: #fff;
164
- font-size: 1.5em;
165
- cursor: pointer;
166
- }
167
-
168
- /* Modal Styles */
169
- .image__modal {
170
- position: fixed;
171
- top: 0;
172
- left: 0;
173
- width: 100%;
174
- height: 100%;
175
- background-color: rgba(0, 0, 0, 0.8);
176
- display: flex;
177
- align-items: center;
178
- justify-content: center;
179
- z-index: var(--z-index-modal);
180
- }
181
-
182
- .image__modal-content {
183
- position: relative;
184
- width: 90%;
185
- max-width: 700px;
186
- height: 90%;
187
- max-height: 500px;
188
- background-color: #fff;
189
- border-radius: var(--border-radius);
190
- box-shadow: var(--box-shadow);
191
- overflow: hidden;
192
- }
193
-
194
- .image__modal-img {
195
- width: 100%;
196
- height: auto;
197
- border-radius: var(--border-radius);
198
- }
199
-
200
- .image__modal-caption {
201
- margin-top: var(--spacing-sm);
202
- text-align: center;
203
- color: var(--text-color);
204
- font-size: var(--font-size-small);
205
- }
206
-
207
- .image__modal-close {
208
- position: absolute;
209
- top: var(--spacing-xs);
210
- right: var(--spacing-xs);
211
- background: none;
212
- border: none;
213
- color: var(--dark-color);
214
- font-size: 2rem;
215
- cursor: pointer;
216
- }
217
-
218
- /* Responsive Styles */
219
- @media (max-width: 768px) {
220
- .image--avatar {
221
- width: 80px;
222
- height: 80px;
223
- }
224
-
225
- .image__modal-content {
226
- width: 95%;
227
- height: 80%;
228
- max-width: 90%;
229
- max-height: 400px;
230
- }
231
-
232
- .image__overlay-caption {
233
- font-size: var(--font-size-small);
234
- }
235
-
236
- .image__overlay-icon {
237
- font-size: 1.2em;
238
- }
239
- }
240
-
241
- /* Flat Image Styles */
242
- .image--flat:hover {
243
- transform: none;
244
- box-shadow: none;
245
- }
@@ -1,175 +0,0 @@
1
- // src/stories/Atoms/Image/Image.jsx
2
- import React, { useState } from 'react';
3
- import PropTypes from 'prop-types';
4
- import classNames from 'classnames';
5
- import './Image.css';
6
-
7
- export const Image = ({
8
- src,
9
- alt,
10
- width,
11
- height,
12
- loading = 'lazy',
13
- title,
14
- caption,
15
- variant = 'thumbnail', // 'thumbnail', 'avatar', 'expanded', 'flat'
16
- aspectRatio,
17
- crop = 'center', // 'center', 'top', 'left'
18
- fallbackSrc = '/fallback.jpg',
19
- srcSet,
20
- sizes,
21
- lazyLoad = true,
22
- onClickExpand,
23
- hoverIcons = [],
24
- hoverCaption,
25
- hoverIconPosition = 'center', // 'center', 'top-right'
26
- size = 'md', // 'xs', 'sm', 'md', 'lg', 'xl'
27
- className = '',
28
- style = {},
29
- ...props
30
- }) => {
31
- const [isLoaded, setIsLoaded] = useState(false);
32
- const [isError, setIsError] = useState(false);
33
- const [isExpanded, setIsExpanded] = useState(false);
34
-
35
- const handleImageLoad = () => {
36
- setIsLoaded(true);
37
- };
38
-
39
- const handleImageError = () => {
40
- setIsError(true);
41
- };
42
-
43
- const handleExpand = () => {
44
- if (variant !== 'expanded' && variant !== 'flat') {
45
- setIsExpanded(true);
46
- }
47
- if (onClickExpand) {
48
- onClickExpand();
49
- }
50
- };
51
-
52
- const handleCloseExpand = () => {
53
- setIsExpanded(false);
54
- };
55
-
56
- const imageClasses = classNames('image', className, {
57
- [`image--${variant}`]: variant,
58
- [`image--${aspectRatio}`]: aspectRatio,
59
- [`image--${crop}`]: crop,
60
- [`image--size-${size}`]: size,
61
- 'image--loaded': isLoaded,
62
- 'image--error': isError,
63
- });
64
-
65
- const showOverlay = variant !== 'flat' && (hoverIcons.length > 0 || hoverCaption);
66
-
67
- return (
68
- <>
69
- <figure className="image-figure" style={style} {...props}>
70
- {!isLoaded && !isError && <div className="image__placeholder">Loading...</div>}
71
- <img
72
- src={isError ? fallbackSrc : src}
73
- alt={alt}
74
- width={width}
75
- height={height}
76
- loading={lazyLoad ? loading : 'eager'}
77
- title={title}
78
- className={imageClasses}
79
- srcSet={srcSet}
80
- sizes={sizes}
81
- onLoad={handleImageLoad}
82
- onError={handleImageError}
83
- onClick={variant !== 'flat' ? handleExpand : undefined}
84
- role={variant === 'expanded' ? 'img' : 'button'}
85
- tabIndex={variant !== 'flat' ? '0' : undefined}
86
- onKeyPress={(e) => {
87
- if ((e.key === 'Enter' || e.key === ' ') && variant !== 'flat') {
88
- handleExpand();
89
- }
90
- }}
91
- />
92
- {caption && <figcaption className="image__caption">{caption}</figcaption>}
93
-
94
- {showOverlay && (
95
- <div className="image__overlay">
96
- {hoverCaption && (
97
- <div className="image__overlay-caption">
98
- {hoverCaption}
99
- </div>
100
- )}
101
- {hoverIcons.length > 0 && (
102
- <div
103
- className={classNames('image__overlay-icons', {
104
- 'image__overlay-icons--center': hoverIconPosition === 'center',
105
- 'image__overlay-icons--top-right': hoverIconPosition === 'top-right',
106
- })}
107
- >
108
- {hoverIcons.map((IconComponent, index) => (
109
- <IconComponent key={index} className="image__overlay-icon" />
110
- ))}
111
- </div>
112
- )}
113
- </div>
114
- )}
115
- </figure>
116
-
117
- {isExpanded && (
118
- <div className="image__modal" onClick={handleCloseExpand} role="dialog" aria-modal="true">
119
- <div className="image__modal-content" onClick={(e) => e.stopPropagation()}>
120
- <button className="image__modal-close" onClick={handleCloseExpand} aria-label="Close">
121
- &times;
122
- </button>
123
- <img src={src} alt={alt} className="image__modal-img" />
124
- {caption && <div className="image__modal-caption">{caption}</div>}
125
- </div>
126
- </div>
127
- )}
128
- </>
129
- );
130
- };
131
-
132
- Image.propTypes = {
133
- /** Source URL of the image */
134
- src: PropTypes.string.isRequired,
135
- /** Alternative text for the image */
136
- alt: PropTypes.string.isRequired,
137
- /** Width of the image */
138
- width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
139
- /** Height of the image */
140
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
141
- /** Loading behavior */
142
- loading: PropTypes.oneOf(['lazy', 'eager']),
143
- /** Tooltip text */
144
- title: PropTypes.string,
145
- /** Caption for the image */
146
- caption: PropTypes.string,
147
- /** Variant of the image */
148
- variant: PropTypes.oneOf(['thumbnail', 'avatar', 'expanded', 'flat']),
149
- /** Aspect ratio of the image */
150
- aspectRatio: PropTypes.oneOf(['16by9', '4by3', '1by1']),
151
- /** Crop position */
152
- crop: PropTypes.oneOf(['center', 'top', 'left']),
153
- /** Fallback image source */
154
- fallbackSrc: PropTypes.string,
155
- /** srcSet for responsive images */
156
- srcSet: PropTypes.string,
157
- /** sizes attribute for responsive images */
158
- sizes: PropTypes.string,
159
- /** Enable lazy loading */
160
- lazyLoad: PropTypes.bool,
161
- /** Function to handle expand action */
162
- onClickExpand: PropTypes.func,
163
- /** Icons to display on hover */
164
- hoverIcons: PropTypes.arrayOf(PropTypes.elementType),
165
- /** Caption to display on hover */
166
- hoverCaption: PropTypes.string,
167
- /** Position of hover icons */
168
- hoverIconPosition: PropTypes.oneOf(['center', 'top-right']),
169
- /** Size of the image */
170
- size: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
171
- /** Additional CSS classes */
172
- className: PropTypes.string,
173
- /** Inline styles */
174
- style: PropTypes.object,
175
- };