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.
- package/.storybook/main.js +40 -0
- package/.storybook/manager-head.html +13 -0
- package/.storybook/manager.js +15 -0
- package/.storybook/preview.tsx +54 -0
- package/.storybook/vitest.setup.js +6 -0
- package/.storybook/withLayout.tsx +18 -0
- package/README.md +1 -220
- package/dist/GUI.png +0 -0
- package/dist/GUI2.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/this-gui.es.js +108493 -5056
- package/dist/this-gui.umd.js +239 -44
- package/dist/this.GUI.png +0 -0
- package/nodes/overall approach.md +93 -0
- package/notes/Proyect.md +109 -0
- package/package.json +71 -54
- package/public/GUI.png +0 -0
- package/public/GUI2.png +0 -0
- package/public/favicon.ico +0 -0
- package/public/this.GUI.png +0 -0
- package/src/components/generics/Cards/Gridme.jsx +52 -0
- package/src/components/generics/Cards/LilBox.jsx +65 -0
- package/src/components/generics/Cards/ModuleCard.jsx +106 -0
- package/src/components/generics/Chats/FullChatBot.jsx +223 -0
- package/src/components/generics/Code/CodeBlock.jsx +33 -0
- package/src/components/generics/Feedback/Callout.jsx +92 -0
- package/src/components/generics/Layout/GridX.jsx +29 -0
- package/src/components/generics/Layout/Hero2.jsx +132 -0
- package/src/components/generics/Layout/PageContainer.jsx +29 -0
- package/src/components/generics/Layout/PageDivider.jsx +20 -0
- package/src/components/generics/Layout/Section.jsx +43 -0
- package/src/components/generics/Layout/SectionHeader.jsx +21 -0
- package/src/components/generics/Media/Img.jsx +58 -0
- package/src/components/generics/Media/VideoEmbed.jsx +51 -0
- package/src/components/generics/Organization/TableOfContents.jsx +51 -0
- package/src/components/generics/Organization/Tabs.jsx +45 -0
- package/src/components/generics/Text/TextList.jsx +41 -0
- package/src/components/generics/Text/TextParagraph.jsx +28 -0
- package/src/components/generics/Text/TextQuote.jsx +23 -0
- package/src/components/generics/Text/TextTitle.jsx +44 -0
- package/src/components/this.me/MeActive.jsx +24 -0
- package/src/components/this.me/MeFloating.jsx +183 -0
- package/src/components/this.me/MeInactive.jsx +21 -0
- package/src/components/this.me/MeListUs.jsx +40 -0
- package/src/components/this.me/MeState.jsx +25 -0
- package/src/components/this.me/hooks/useMe.js +43 -0
- package/src/context/GuiProvider.tsx +243 -0
- package/src/gui/atoms/AppBar/AppBar.resolver.tsx +77 -0
- package/src/gui/atoms/AppBar/AppBar.stories.tsx +232 -0
- package/src/gui/atoms/AppBar/AppBar.tsx +10 -0
- package/src/gui/atoms/Box/Box.resolver.tsx +171 -0
- package/src/gui/atoms/Box/Box.stories.tsx +271 -0
- package/src/gui/atoms/Box/Box.tsx +15 -0
- package/src/gui/atoms/Button/Button.resolver.tsx +98 -0
- package/src/gui/atoms/Button/Button.stories.tsx +225 -0
- package/src/gui/atoms/Button/Button.tsx +40 -0
- package/src/gui/atoms/Collapse/Collapse.resolver.tsx +85 -0
- package/src/gui/atoms/Collapse/Collapse.stories.tsx +136 -0
- package/src/gui/atoms/Collapse/Collapse.tsx +17 -0
- package/src/gui/atoms/Divider/Divider.resolver.tsx +95 -0
- package/src/gui/atoms/Divider/Divider.stories.tsx +109 -0
- package/src/gui/atoms/Divider/Divider.tsx +14 -0
- package/src/gui/atoms/Drawer/Drawer.resolver.tsx +116 -0
- package/src/gui/atoms/Drawer/Drawer.stories.tsx +229 -0
- package/src/gui/atoms/Drawer/Drawer.tsx +8 -0
- package/src/gui/atoms/IconButton/IconButton.resolver.tsx +135 -0
- package/src/gui/atoms/IconButton/IconButton.stories.tsx +141 -0
- package/src/gui/atoms/IconButton/IconButton.tsx +22 -0
- package/src/gui/atoms/Link/Link.resolver.tsx +75 -0
- package/src/gui/atoms/Link/Link.stories.tsx +164 -0
- package/src/gui/atoms/Link/Link.tsx +14 -0
- package/src/gui/atoms/List/List.resolver.tsx +95 -0
- package/src/gui/atoms/List/List.stories.tsx +143 -0
- package/src/gui/atoms/List/List.tsx +20 -0
- package/src/gui/atoms/ListItem/ListItem.resolver.tsx +88 -0
- package/src/gui/atoms/ListItem/ListItem.stories.tsx +157 -0
- package/src/gui/atoms/ListItem/ListItem.tsx +19 -0
- package/src/gui/atoms/ListItemButton/ListItemButton.resolver.tsx +208 -0
- package/src/gui/atoms/ListItemButton/ListItemButton.stories.tsx +161 -0
- package/src/gui/atoms/ListItemButton/ListItemButton.tsx +15 -0
- package/src/gui/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
- package/src/gui/atoms/ListItemIcon/ListItemIcon.stories.tsx +135 -0
- package/src/gui/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
- package/src/gui/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
- package/src/gui/atoms/ListItemText/ListItemText.stories.tsx +162 -0
- package/src/gui/atoms/ListItemText/ListItemText.tsx +15 -0
- package/src/gui/atoms/Menu/Menu.resolver.tsx +112 -0
- package/src/gui/atoms/Menu/Menu.stories.tsx +168 -0
- package/src/gui/atoms/Menu/Menu.tsx +17 -0
- package/src/gui/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
- package/src/gui/atoms/MenuItem/MenuItem.stories.tsx +138 -0
- package/src/gui/atoms/MenuItem/MenuItem.tsx +14 -0
- package/src/gui/atoms/Paper/Paper.resolver.tsx +98 -0
- package/src/gui/atoms/Paper/Paper.stories.tsx +191 -0
- package/src/gui/atoms/Paper/Paper.tsx +17 -0
- package/src/gui/atoms/Stack/Stack.resolver.tsx +94 -0
- package/src/gui/atoms/Stack/Stack.stories.tsx +166 -0
- package/src/gui/atoms/Stack/Stack.tsx +15 -0
- package/src/gui/atoms/Switch/Switch.resolver.tsx +53 -0
- package/src/gui/atoms/Switch/Switch.stories.tsx +242 -0
- package/src/gui/atoms/Switch/Switch.tsx +22 -0
- package/src/gui/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
- package/src/gui/atoms/Toolbar/Toolbar.stories.tsx +163 -0
- package/src/gui/atoms/Toolbar/Toolbar.tsx +16 -0
- package/src/gui/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
- package/src/gui/atoms/Tooltip/Tooltip.stories.tsx +118 -0
- package/src/gui/atoms/Tooltip/Tooltip.tsx +78 -0
- package/src/gui/atoms/Typography/Typography.resolver.tsx +158 -0
- package/src/gui/atoms/Typography/Typography.stories.tsx +228 -0
- package/src/gui/atoms/Typography/Typography.tsx +27 -0
- package/src/gui/atoms.tsx +129 -0
- package/src/gui/index.ts +69 -0
- package/src/gui/molecules/AppBars/Footer/Footer.resolver.tsx +104 -0
- package/src/gui/molecules/AppBars/Footer/Footer.stories.tsx +499 -0
- package/src/gui/molecules/AppBars/Footer/Footer.tsx +307 -0
- package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.resolver.tsx +75 -0
- package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.stories.tsx +61 -0
- package/src/gui/molecules/AppBars/LeftSidebar/LeftSidebar.tsx +511 -0
- package/src/gui/molecules/AppBars/LeftSidebar/SidebarToggleButton.tsx +51 -0
- package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.resolver.tsx +97 -0
- package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.stories.tsx +294 -0
- package/src/gui/molecules/AppBars/RightSidebar/RightSidebar.tsx +295 -0
- package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.stories.tsx +480 -0
- package/src/gui/molecules/AppBars/StickyOptions/StickyOptionsTop.tsx +484 -0
- package/src/gui/molecules/AppBars/TopBar/TopBar.resolver.tsx +84 -0
- package/src/gui/molecules/AppBars/TopBar/TopBar.stories.tsx +297 -0
- package/src/gui/molecules/AppBars/TopBar/TopBar.tsx +299 -0
- package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.resolver.tsx +72 -0
- package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.stories.tsx +154 -0
- package/src/gui/molecules/Utilities/ThemeModeToggle/ThemeModeToggle.tsx +100 -0
- package/src/gui/molecules/Utilities/ThemeSelector.jsx +281 -0
- package/src/gui/utils/nodeID.ts +8 -0
- package/src/index.js +111 -0
- package/src/registry/GuiRegistry.ts +19 -0
- package/src/registry/factory.ts +12 -0
- package/src/registry/index.ts +3 -0
- package/src/registry/types.ts +6 -0
- package/src/stories/01.Home.mdx +22 -0
- package/src/stories/02.Understanding.This.GUI.md +149 -0
- package/src/stories/03.Themes.mdx +235 -0
- package/src/stories/04.GuiProvider.md +126 -0
- package/src/stories/04.GuiProvider.mdx +129 -0
- package/src/stories/Theme/BreakPointsAndGrids.stories.jsx +185 -0
- package/src/stories/Theme/Colors.stories.jsx +245 -0
- package/src/stories/Theme/Icons.stories.jsx +313 -0
- package/src/stories/Theme/Motion.stories.jsx +206 -0
- package/src/stories/Theme/ShadowAndElevation.stories.jsx +95 -0
- package/src/stories/Theme/SpacingAndRadius.stories.jsx +129 -0
- package/src/stories/Theme/Typography.stories.jsx +211 -0
- package/src/stories/assets/this.GUI.png +0 -0
- package/src/templates/BrowserExtension.jsx +56 -0
- package/src/templates/Layout.tsx +36 -0
- package/src/templates/Minimal.jsx +123 -0
- package/src/templates/Shell/Shell.jsx +107 -0
- package/src/themes/fromTokens.ts +352 -0
- package/src/themes/icons/Icon.tsx +137 -0
- package/src/themes/icons/packs/Lucide.ts +72 -0
- package/src/themes/icons/packs/Material.ts +87 -0
- package/src/themes/icons/registry.tsx +178 -0
- package/src/themes/index.js +116 -0
- package/src/themes/theme.d.ts +116 -0
- package/src/themes/tokens/global.tokens.json +107 -0
- package/src/themes/tokens/neurons/dark.tokens.json +45 -0
- package/src/themes/tokens/neurons/light.tokens.json +51 -0
- package/src/themes/tokens/neurons/manifest.json +23 -0
- package/src/types/theme.d.ts +32 -0
- package/src/types/viewport.ts +132 -0
- package/tsconfig.json +24 -0
- package/vite.config.js +74 -0
- package/dist/style.css +0 -1
- package/src/App.jsx +0 -39
- package/src/CreatePage.jsx +0 -61
- package/src/MDXEditor.jsx +0 -51
- package/src/MdxProvider.jsx +0 -20
- package/src/Page.jsx +0 -28
- package/src/PageDashboard.jsx +0 -56
- package/src/SiteBuilder.jsx +0 -108
- package/src/example.json +0 -43
- package/src/index.mdx +0 -164
- package/src/main.jsx +0 -15
- package/src/scripts/ComponentRegistry.js +0 -70
- package/src/scripts/logASCIIArt.js +0 -12
- package/src/scripts/postinstall.js +0 -111
- package/src/scripts/renderComponents.js +0 -11
- package/src/stories/Atoms/Alert/Alert.css +0 -211
- package/src/stories/Atoms/Alert/Alert.jsx +0 -56
- package/src/stories/Atoms/Alert/Alert.stories.jsx +0 -167
- package/src/stories/Atoms/Audio/Audio.css +0 -259
- package/src/stories/Atoms/Audio/Audio.jsx +0 -216
- package/src/stories/Atoms/Audio/Audio.stories.jsx +0 -191
- package/src/stories/Atoms/Badge/Badge.css +0 -249
- package/src/stories/Atoms/Badge/Badge.jsx +0 -54
- package/src/stories/Atoms/Badge/Badge.stories.jsx +0 -121
- package/src/stories/Atoms/Button/Button.css +0 -332
- package/src/stories/Atoms/Button/Button.jsx +0 -44
- package/src/stories/Atoms/Button/Button.stories.jsx +0 -209
- package/src/stories/Atoms/Caption/Caption.css +0 -169
- package/src/stories/Atoms/Caption/Caption.jsx +0 -72
- package/src/stories/Atoms/Caption/Caption.stories.jsx +0 -207
- package/src/stories/Atoms/Checkbox/Checkbox.css +0 -182
- package/src/stories/Atoms/Checkbox/Checkbox.jsx +0 -83
- package/src/stories/Atoms/Checkbox/Checkbox.stories.jsx +0 -112
- package/src/stories/Atoms/Container/Container.css +0 -470
- package/src/stories/Atoms/Container/Container.jsx +0 -116
- package/src/stories/Atoms/Container/Container.stories.jsx +0 -145
- package/src/stories/Atoms/Divider/Divider.css +0 -147
- package/src/stories/Atoms/Divider/Divider.jsx +0 -62
- package/src/stories/Atoms/Divider/Divider.stories.jsx +0 -105
- package/src/stories/Atoms/Grid/Grid.css +0 -160
- package/src/stories/Atoms/Grid/Grid.jsx +0 -43
- package/src/stories/Atoms/Grid/Grid.stories.jsx +0 -84
- package/src/stories/Atoms/Heading/Heading.css +0 -112
- package/src/stories/Atoms/Heading/Heading.jsx +0 -69
- package/src/stories/Atoms/Heading/Heading.stories.jsx +0 -130
- package/src/stories/Atoms/Icon/Icon.css +0 -240
- package/src/stories/Atoms/Icon/Icon.jsx +0 -80
- package/src/stories/Atoms/Icon/Icon.stories.jsx +0 -177
- package/src/stories/Atoms/Image/Image.css +0 -245
- package/src/stories/Atoms/Image/Image.jsx +0 -175
- package/src/stories/Atoms/Image/Image.stories.jsx +0 -332
- package/src/stories/Atoms/Label/Label.css +0 -171
- package/src/stories/Atoms/Label/Label.jsx +0 -71
- package/src/stories/Atoms/Label/Label.stories.jsx +0 -180
- package/src/stories/Atoms/Link/Link.css +0 -51
- package/src/stories/Atoms/Link/Link.jsx +0 -72
- package/src/stories/Atoms/Link/Link.stories.jsx +0 -153
- package/src/stories/Atoms/Loader/Loader.css +0 -106
- package/src/stories/Atoms/Loader/Loader.jsx +0 -58
- package/src/stories/Atoms/Loader/Loader.stories.jsx +0 -99
- package/src/stories/Atoms/Logo/Logo.css +0 -94
- package/src/stories/Atoms/Logo/Logo.jsx +0 -53
- package/src/stories/Atoms/Logo/Logo.stories.jsx +0 -120
- package/src/stories/Atoms/Paragraph/Paragraph.css +0 -180
- package/src/stories/Atoms/Paragraph/Paragraph.jsx +0 -77
- package/src/stories/Atoms/Paragraph/Paragraph.stories.jsx +0 -143
- package/src/stories/Atoms/ProgressBar/ProgressBar.css +0 -127
- package/src/stories/Atoms/ProgressBar/ProgressBar.jsx +0 -40
- package/src/stories/Atoms/ProgressBar/ProgressBar.stories.jsx +0 -86
- package/src/stories/Atoms/RadioButton/RadioButton.css +0 -130
- package/src/stories/Atoms/RadioButton/RadioButton.jsx +0 -87
- package/src/stories/Atoms/RadioButton/RadioButton.stories.jsx +0 -113
- package/src/stories/Atoms/Range/Range.css +0 -169
- package/src/stories/Atoms/Range/Range.jsx +0 -87
- package/src/stories/Atoms/Range/Range.stories.jsx +0 -110
- package/src/stories/Atoms/Section/Section.css +0 -268
- package/src/stories/Atoms/Section/Section.jsx +0 -63
- package/src/stories/Atoms/Section/Section.stories.jsx +0 -46
- package/src/stories/Atoms/Select/Select.css +0 -87
- package/src/stories/Atoms/Select/Select.jsx +0 -73
- package/src/stories/Atoms/Select/Select.stories.jsx +0 -109
- package/src/stories/Atoms/Slider/Slider.css +0 -90
- package/src/stories/Atoms/Slider/Slider.jsx +0 -129
- package/src/stories/Atoms/Slider/Slider.stories.jsx +0 -90
- package/src/stories/Atoms/Snackbar/Snackbar.css +0 -313
- package/src/stories/Atoms/Snackbar/Snackbar.jsx +0 -72
- package/src/stories/Atoms/Snackbar/Snackbar.stories.jsx +0 -78
- package/src/stories/Atoms/Spacer/Spacer.css +0 -114
- package/src/stories/Atoms/Spacer/Spacer.jsx +0 -35
- package/src/stories/Atoms/Spacer/Spacer.stories.jsx +0 -61
- package/src/stories/Atoms/Spinner/Spinner.css +0 -110
- package/src/stories/Atoms/Spinner/Spinner.jsx +0 -65
- package/src/stories/Atoms/Spinner/Spinner.stories.jsx +0 -58
- package/src/stories/Atoms/Tag/Tag.css +0 -112
- package/src/stories/Atoms/Tag/Tag.jsx +0 -75
- package/src/stories/Atoms/Tag/Tag.stories.jsx +0 -67
- package/src/stories/Atoms/TextArea/TextArea.css +0 -99
- package/src/stories/Atoms/TextArea/TextArea.jsx +0 -118
- package/src/stories/Atoms/TextArea/TextArea.stories.jsx +0 -36
- package/src/stories/Atoms/TextInput/TextInput.css +0 -102
- package/src/stories/Atoms/TextInput/TextInput.jsx +0 -133
- package/src/stories/Atoms/TextInput/TextInput.stories.jsx +0 -69
- package/src/stories/Atoms/Toggle/Toggle.css +0 -118
- package/src/stories/Atoms/Toggle/Toggle.jsx +0 -69
- package/src/stories/Atoms/Toggle/Toggle.stories.jsx +0 -35
- package/src/stories/Atoms/Tooltip/Tooltip.css +0 -383
- package/src/stories/Atoms/Tooltip/Tooltip.jsx +0 -46
- package/src/stories/Atoms/Tooltip/Tooltip.stories.jsx +0 -52
- package/src/stories/Atoms/Video/Video.css +0 -39
- package/src/stories/Atoms/Video/Video.jsx +0 -78
- package/src/stories/Atoms/Video/Video.stories.jsx +0 -41
- package/src/stories/Atoms/index.js +0 -72
- package/src/stories/Atoms/meta_Atoms.js +0 -51
- package/src/stories/Components.js +0 -198
- package/src/stories/Getting Started.mdx +0 -239
- package/src/stories/Layouts/Accordion/Accordion.css +0 -293
- package/src/stories/Layouts/Accordion/Accordion.jsx +0 -74
- package/src/stories/Layouts/Accordion/Accordion.stories.jsx +0 -39
- package/src/stories/Layouts/Flexbox/Flexbox.css +0 -16
- package/src/stories/Layouts/Flexbox/Flexbox.jsx +0 -11
- package/src/stories/Layouts/Flexbox/Flexbox.stories.jsx +0 -28
- package/src/stories/Layouts/Footer/Footer.css +0 -16
- package/src/stories/Layouts/Footer/Footer.jsx +0 -31
- package/src/stories/Layouts/Footer/Footer.stories.jsx +0 -28
- package/src/stories/Layouts/Header/Header.css +0 -16
- package/src/stories/Layouts/Header/Header.jsx +0 -31
- package/src/stories/Layouts/Header/Header.stories.jsx +0 -28
- package/src/stories/Layouts/HeroBanner/HeroBanner.css +0 -16
- package/src/stories/Layouts/HeroBanner/HeroBanner.jsx +0 -31
- package/src/stories/Layouts/HeroBanner/HeroBanner.stories.jsx +0 -28
- package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.css +0 -16
- package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.jsx +0 -31
- package/src/stories/Layouts/HeroImageVideo/HeroImageVideo.stories.jsx +0 -28
- package/src/stories/Layouts/Pagination/Pagination.css +0 -16
- package/src/stories/Layouts/Pagination/Pagination.jsx +0 -31
- package/src/stories/Layouts/Pagination/Pagination.stories.jsx +0 -28
- package/src/stories/Layouts/Sidebar/Sidebar.css +0 -16
- package/src/stories/Layouts/Sidebar/Sidebar.jsx +0 -71
- package/src/stories/Layouts/Sidebar/Sidebar.stories.jsx +0 -28
- package/src/stories/Layouts/Tabs/Tabs.css +0 -16
- package/src/stories/Layouts/Tabs/Tabs.jsx +0 -31
- package/src/stories/Layouts/Tabs/Tabs.stories.jsx +0 -28
- package/src/stories/Layouts/index.js +0 -25
- package/src/stories/Layouts/meta_Layouts.js +0 -28
- package/src/stories/MDX.mdx +0 -118
- package/src/stories/Miscellaneous/Miscellaneous.js +0 -24
- package/src/stories/Molecules/Accordion/Accordion.css +0 -4
- package/src/stories/Molecules/Accordion/Accordion.jsx +0 -25
- package/src/stories/Molecules/Accordion/Accordion.stories.jsx +0 -20
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.css +0 -97
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.jsx +0 -244
- package/src/stories/Molecules/AudioPlayer/AudioPlayer.stories.jsx +0 -55
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.css +0 -130
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.jsx +0 -80
- package/src/stories/Molecules/AvatarWithName/AvatarWithName.stories.jsx +0 -20
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.css +0 -147
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.jsx +0 -51
- package/src/stories/Molecules/Breadcrumbs/Breadcrumbs.stories.jsx +0 -36
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.css +0 -465
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.jsx +0 -47
- package/src/stories/Molecules/ButtonGroup/ButtonGroup.stories.jsx +0 -44
- package/src/stories/Molecules/Card/Card.css +0 -41
- package/src/stories/Molecules/Card/Card.jsx +0 -92
- package/src/stories/Molecules/Card/Card.stories.jsx +0 -34
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.css +0 -35
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.jsx +0 -104
- package/src/stories/Molecules/ComparisonTable/ComparisonTable.stories.jsx +0 -81
- package/src/stories/Molecules/DataTable/DataTable.css +0 -4
- package/src/stories/Molecules/DataTable/DataTable.jsx +0 -25
- package/src/stories/Molecules/DataTable/DataTable.stories.jsx +0 -20
- package/src/stories/Molecules/Dropdown/Dropdown.css +0 -192
- package/src/stories/Molecules/Dropdown/Dropdown.jsx +0 -96
- package/src/stories/Molecules/Dropdown/Dropdown.stories.jsx +0 -45
- package/src/stories/Molecules/FileUpload/FileUpload.css +0 -4
- package/src/stories/Molecules/FileUpload/FileUpload.jsx +0 -25
- package/src/stories/Molecules/FileUpload/FileUpload.stories.jsx +0 -20
- package/src/stories/Molecules/FormField/FormField.css +0 -4
- package/src/stories/Molecules/FormField/FormField.jsx +0 -25
- package/src/stories/Molecules/FormField/FormField.stories.jsx +0 -20
- package/src/stories/Molecules/Header/Header.css +0 -35
- package/src/stories/Molecules/Header/Header.jsx +0 -76
- package/src/stories/Molecules/Header/Header.stories.jsx +0 -28
- package/src/stories/Molecules/IconButton/IconButton.css +0 -4
- package/src/stories/Molecules/IconButton/IconButton.jsx +0 -25
- package/src/stories/Molecules/IconButton/IconButton.stories.jsx +0 -20
- package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.css +0 -4
- package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.jsx +0 -25
- package/src/stories/Molecules/ImageWithCaption/ImageWithCaption.stories.jsx +0 -20
- package/src/stories/Molecules/InputGroup/InputGroup.css +0 -4
- package/src/stories/Molecules/InputGroup/InputGroup.jsx +0 -25
- package/src/stories/Molecules/InputGroup/InputGroup.stories.jsx +0 -20
- package/src/stories/Molecules/InputWithLabel/InputWithLabel.css +0 -4
- package/src/stories/Molecules/InputWithLabel/InputWithLabel.jsx +0 -25
- package/src/stories/Molecules/InputWithLabel/InputWithLabel.stories.jsx +0 -20
- package/src/stories/Molecules/List/List.css +0 -4
- package/src/stories/Molecules/List/List.jsx +0 -25
- package/src/stories/Molecules/List/List.stories.jsx +0 -20
- package/src/stories/Molecules/MediaCard/MediaCard.css +0 -4
- package/src/stories/Molecules/MediaCard/MediaCard.jsx +0 -25
- package/src/stories/Molecules/MediaCard/MediaCard.stories.jsx +0 -20
- package/src/stories/Molecules/Modal/Modal.css +0 -4
- package/src/stories/Molecules/Modal/Modal.jsx +0 -25
- package/src/stories/Molecules/Modal/Modal.stories.jsx +0 -20
- package/src/stories/Molecules/Navbar/Navbar.css +0 -91
- package/src/stories/Molecules/Navbar/Navbar.jsx +0 -82
- package/src/stories/Molecules/Navbar/Navbar.stories.jsx +0 -70
- package/src/stories/Molecules/Notification/Notification.css +0 -4
- package/src/stories/Molecules/Notification/Notification.jsx +0 -25
- package/src/stories/Molecules/Notification/Notification.stories.jsx +0 -20
- package/src/stories/Molecules/PricingTable/PricingTable.css +0 -4
- package/src/stories/Molecules/PricingTable/PricingTable.jsx +0 -25
- package/src/stories/Molecules/PricingTable/PricingTable.stories.jsx +0 -20
- package/src/stories/Molecules/SearchBar/SearchBar.css +0 -69
- package/src/stories/Molecules/SearchBar/SearchBar.jsx +0 -73
- package/src/stories/Molecules/SearchBar/SearchBar.stories.jsx +0 -29
- package/src/stories/Molecules/SelectTheme/SelectTheme.css +0 -25
- package/src/stories/Molecules/SelectTheme/SelectTheme.jsx +0 -22
- package/src/stories/Molecules/SelectTheme/SelectTheme.stories.jsx +0 -24
- package/src/stories/Molecules/Sidebar/Sidebar.css +0 -67
- package/src/stories/Molecules/Sidebar/Sidebar.jsx +0 -80
- package/src/stories/Molecules/Sidebar/Sidebar.stories.jsx +0 -35
- package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.css +0 -4
- package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.jsx +0 -25
- package/src/stories/Molecules/VideoWithDescription/VideoWithDescription.stories.jsx +0 -20
- package/src/stories/Molecules/index.js +0 -58
- package/src/stories/Molecules/meta_Molecules.js +0 -47
- package/src/stories/Organisms/Profile/UserFriends/UserFriends.context.jsx +0 -15
- package/src/stories/Organisms/Profile/UserFriends/UserFriends.css +0 -4
- package/src/stories/Organisms/Profile/UserFriends/UserFriends.jsx +0 -13
- package/src/stories/Organisms/Profile/UserFriends/UserFriends.stories.jsx +0 -26
- package/src/stories/Organisms/Profile/UserPosts/UserPosts.context.jsx +0 -15
- package/src/stories/Organisms/Profile/UserPosts/UserPosts.css +0 -4
- package/src/stories/Organisms/Profile/UserPosts/UserPosts.jsx +0 -13
- package/src/stories/Organisms/Profile/UserPosts/UserPosts.stories.jsx +0 -26
- package/src/stories/Organisms/Profile/UserProfile/UserProfile.context.jsx +0 -15
- package/src/stories/Organisms/Profile/UserProfile/UserProfile.css +0 -4
- package/src/stories/Organisms/Profile/UserProfile/UserProfile.jsx +0 -13
- package/src/stories/Organisms/Profile/UserProfile/UserProfile.stories.jsx +0 -26
- package/src/stories/Organisms/meta_Organisms.js +0 -39
- package/src/stories/Pages/Page/Page.css +0 -69
- package/src/stories/Pages/Page/Page.jsx +0 -69
- package/src/stories/Pages/Page/Page.stories.js +0 -26
- package/src/stories/Pages/Page/Pages.js +0 -31
- package/src/stories/Templates/AdminDashboard/AdminDashboard.css +0 -7
- package/src/stories/Templates/AdminDashboard/AdminDashboard.jsx +0 -24
- package/src/stories/Templates/AdminDashboard/AdminDashboard.stories.jsx +0 -20
- package/src/stories/Templates/CallToAction/CallToAction.css +0 -7
- package/src/stories/Templates/CallToAction/CallToAction.jsx +0 -24
- package/src/stories/Templates/CallToAction/CallToAction.stories.jsx +0 -20
- package/src/stories/Templates/FeaturesList/FeaturesList.css +0 -7
- package/src/stories/Templates/FeaturesList/FeaturesList.jsx +0 -24
- package/src/stories/Templates/FeaturesList/FeaturesList.stories.jsx +0 -20
- package/src/stories/Templates/FormSection/FormSection.css +0 -7
- package/src/stories/Templates/FormSection/FormSection.jsx +0 -24
- package/src/stories/Templates/FormSection/FormSection.stories.jsx +0 -20
- package/src/stories/Templates/HeroSection/HeroSection.css +0 -7
- package/src/stories/Templates/HeroSection/HeroSection.jsx +0 -24
- package/src/stories/Templates/HeroSection/HeroSection.stories.jsx +0 -20
- package/src/stories/Templates/LocationInfo/LocationInfo.css +0 -7
- package/src/stories/Templates/LocationInfo/LocationInfo.jsx +0 -24
- package/src/stories/Templates/LocationInfo/LocationInfo.stories.jsx +0 -20
- package/src/stories/Templates/ProductPage/ProductPage.css +0 -7
- package/src/stories/Templates/ProductPage/ProductPage.jsx +0 -24
- package/src/stories/Templates/ProductPage/ProductPage.stories.jsx +0 -20
- package/src/stories/Templates/RegistrationPage/RegistrationPage.css +0 -7
- package/src/stories/Templates/RegistrationPage/RegistrationPage.jsx +0 -24
- package/src/stories/Templates/RegistrationPage/RegistrationPage.stories.jsx +0 -20
- package/src/stories/Templates/ShoppingCart/ShoppingCart.css +0 -7
- package/src/stories/Templates/ShoppingCart/ShoppingCart.jsx +0 -24
- package/src/stories/Templates/ShoppingCart/ShoppingCart.stories.jsx +0 -20
- package/src/stories/Templates/SidebarTopNav/SidebarTopNav.css +0 -7
- package/src/stories/Templates/SidebarTopNav/SidebarTopNav.jsx +0 -24
- package/src/stories/Templates/SidebarTopNav/SidebarTopNav.stories.jsx +0 -20
- package/src/stories/Templates/SignInPage/SignInPage.css +0 -7
- package/src/stories/Templates/SignInPage/SignInPage.jsx +0 -24
- package/src/stories/Templates/SignInPage/SignInPage.stories.jsx +0 -20
- package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.css +0 -7
- package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.jsx +0 -24
- package/src/stories/Templates/SocialMediaLinks/SocialMediaLinks.stories.jsx +0 -20
- package/src/stories/Templates/Testimonials/Testimonials.css +0 -7
- package/src/stories/Templates/Testimonials/Testimonials.jsx +0 -24
- package/src/stories/Templates/Testimonials/Testimonials.stories.jsx +0 -20
- package/src/stories/Templates/index.js +0 -33
- package/src/stories/Templates/meta_Templates.js +0 -29
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +0 -1
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +0 -1
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +0 -1
- package/src/stories/assets/logo.png +0 -0
- package/src/stories/assets/logo.svg +0 -106
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/test.svg +0 -3
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +0 -1
- package/src/stories/assets/youtube.svg +0 -1
- package/src/themes/README_Styles.md +0 -301
- package/src/themes/ThemeProvider.jsx +0 -61
- package/src/themes/styles/github/dark.css +0 -0
- package/src/themes/styles/github/light.css +0 -0
- package/src/themes/styles/neurons/dark.css +0 -247
- package/src/themes/styles/neurons/light.css +0 -170
- /package/{src/themes/styles/dracula/dark.css → .storybook/preview-head.html} +0 -0
- /package/src/{themes/styles/dracula/light.css → components/this.me/MeCard.jsx} +0 -0
|
Binary file
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
compact technical brief of the overall approach (props vs config vs viewported configs), with structure, versatility, declarativity, and scope.
|
|
2
|
+
|
|
3
|
+
1) Plain React props (current/“classic”)
|
|
4
|
+
|
|
5
|
+
Structure: <Footer title="…" links={[…]} socialLinks={[…]} />
|
|
6
|
+
Pros
|
|
7
|
+
• Familiar React ergonomics.
|
|
8
|
+
• Strong TypeScript IntelliSense on each prop.
|
|
9
|
+
• Easy to tree-shake and to reason about in component code.
|
|
10
|
+
|
|
11
|
+
Cons
|
|
12
|
+
• Gets verbose as components grow.
|
|
13
|
+
• Hard to switch “modes” (desktop/mobile/minimal/full) without duplicating prop sets.
|
|
14
|
+
• Not naturally serializable (harder to hydrate from pure JSON or an external CMS).
|
|
15
|
+
|
|
16
|
+
Use when
|
|
17
|
+
• App code writes JSX directly.
|
|
18
|
+
• Variations are small and local.
|
|
19
|
+
|
|
20
|
+
2) Single config object
|
|
21
|
+
|
|
22
|
+
Structure: <Footer config={{ title:"…", links:[…], socialLinks:[…] }} />
|
|
23
|
+
Pros
|
|
24
|
+
• Declarative & serializable: perfect for JSON-driven UIs, CMS/Llama/Lego-style composition.
|
|
25
|
+
• One entrypoint for “shape evolution”: adding/removing options doesn’t churn the JSX signature.
|
|
26
|
+
• Easier to diff/patch at runtime (hot updates, remote editing, A/B tests).
|
|
27
|
+
|
|
28
|
+
Cons
|
|
29
|
+
• Slightly less IDE precision unless you type config well (e.g., FooterConfig).
|
|
30
|
+
• If you mix both props and config, you need clear precedence rules.
|
|
31
|
+
|
|
32
|
+
Use when
|
|
33
|
+
• You want to drive UI from data (JSON), live-edit, or swap configurations on the fly.
|
|
34
|
+
• You’re aiming at a “player” model later (render UIs from configs).
|
|
35
|
+
|
|
36
|
+
Recommended pattern
|
|
37
|
+
• Support both: keep top-level props for ergonomics, plus an optional config. Component merges: final = { ...defaults, ...config, ...propsOverrides }.
|
|
38
|
+
|
|
39
|
+
3) Viewport-aware configs (declarative responsiveness)
|
|
40
|
+
|
|
41
|
+
Structure A (per-prop):
|
|
42
|
+
size="pill" or size={{ xs: "icons", md: "pill" }}
|
|
43
|
+
|
|
44
|
+
Structure B (whole-config overrides):
|
|
45
|
+
|
|
46
|
+
<StickyOptionsTop
|
|
47
|
+
config={{ items: desktopItems }}
|
|
48
|
+
viewport={{
|
|
49
|
+
xs: { config: { items: mobileItems } },
|
|
50
|
+
sm: { config: { items: mobileItems } }
|
|
51
|
+
}}
|
|
52
|
+
/>
|
|
53
|
+
|
|
54
|
+
(Resolved by your viewport.ts: resolveViewportProp / resolveResponsiveConfig.)
|
|
55
|
+
|
|
56
|
+
Pros
|
|
57
|
+
• Responsiveness is data, not scattered useMediaQuery logic.
|
|
58
|
+
• Plays great with JSON: one base config + sparse overrides per breakpoint.
|
|
59
|
+
• Testable & SSR-friendly (you can inject a width override).
|
|
60
|
+
|
|
61
|
+
Cons
|
|
62
|
+
• Slightly more indirection; you need a tiny resolver layer (which you now have).
|
|
63
|
+
• Authors must learn the pattern (base + per-breakpoint overrides).
|
|
64
|
+
|
|
65
|
+
Use when
|
|
66
|
+
• The same component must present different variants by viewport.
|
|
67
|
+
• You want a single source of truth for mobile/desktop/XL differences.
|
|
68
|
+
|
|
69
|
+
Putting it together (recommended architecture)
|
|
70
|
+
• Component API supports both:
|
|
71
|
+
• Classic props (ergonomic for app devs).
|
|
72
|
+
• config (for JSON-driven/declarative scenarios).
|
|
73
|
+
• Optional viewport to override either specific props or the whole config per breakpoint.
|
|
74
|
+
• Resolver layer (inside each component):
|
|
75
|
+
1. Gather defaults.
|
|
76
|
+
2. Merge config.
|
|
77
|
+
3. Apply classic prop overrides (if both exist, props win).
|
|
78
|
+
4. Apply viewport overrides using your resolveViewportProp/resolveResponsiveConfig.
|
|
79
|
+
5. Render.
|
|
80
|
+
|
|
81
|
+
This yields:
|
|
82
|
+
• Versatility: JSX convenience and data-driven control.
|
|
83
|
+
• Declarativity: All variants can be expressed as JSON and swapped live.
|
|
84
|
+
• Scope/Future-proofing: Same pattern works for a headless “GUI Player,” CMS, LLM emitters, or Web Components later (just feed the same config/viewport JSON).
|
|
85
|
+
• Low coupling: Components don’t import useMediaQuery everywhere; the viewport resolver centralizes responsive decisions.
|
|
86
|
+
|
|
87
|
+
Migration strategy (quick)
|
|
88
|
+
1. Keep your existing props as-is.
|
|
89
|
+
2. Add optional config and viewport to priority-merge.
|
|
90
|
+
3. Start using viewport.ts in 1–2 components (e.g., StickyOptionsTop, Footer) to prove the flow.
|
|
91
|
+
4. Document the precedence rule: defaults < config < props < viewport overrides.
|
|
92
|
+
|
|
93
|
+
This gives you the best of all worlds: ergonomic props for developers, clean JSON for declarative UIs, and a compact, testable way to express responsive variants without scattering logic.
|
package/notes/Proyect.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Ocultar/mostrar barras, dar pantalla completa al lienzo, y encima montar un sistema de colocación (2D/3D) que se hidrate desde JSON.
|
|
2
|
+
|
|
3
|
+
Aquí te dejo un plan claro (sin código) para que lo aterricemos paso a paso:
|
|
4
|
+
|
|
5
|
+
1) API del Shell (layout declarativo)
|
|
6
|
+
|
|
7
|
+
Define un spec de layout que controle visibilidad, posición y estilo de las barras (y que sea mutable en runtime):
|
|
8
|
+
|
|
9
|
+
{
|
|
10
|
+
"layout": {
|
|
11
|
+
"navbar": { "visible": true, "position": "fixed" },
|
|
12
|
+
"leftDrawer": { "visible": true, "width": 260 },
|
|
13
|
+
"rightDrawer": { "visible": false, "width": 280 },
|
|
14
|
+
"stickyOptions": { "visible": false },
|
|
15
|
+
"footer": { "visible": true },
|
|
16
|
+
"canvas": {
|
|
17
|
+
"mode": "2d", // "2d" | "3d"
|
|
18
|
+
"fullscreen": false, // si true, el shell oculta barras y expande el lienzo
|
|
19
|
+
"bg": "transparent"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
• El shell aplica el spec y actualiza insets (como ya haces) cuando algo es permanente.
|
|
25
|
+
• Si canvas.fullscreen = true, el shell oculta NavBar/Drawers/Sticky/Footer y setea insets a 0 → el “campo” queda a pantalla completa.
|
|
26
|
+
|
|
27
|
+
2) Motor de colocación (2D primero, 3D después)
|
|
28
|
+
|
|
29
|
+
Para el colocador 2D, usa una cuadrícula declarativa. Piensa en áreas CSS Grid con responsive:
|
|
30
|
+
|
|
31
|
+
{
|
|
32
|
+
"canvas2D": {
|
|
33
|
+
"grid": {
|
|
34
|
+
"template": {
|
|
35
|
+
"xs": { "cols": "1fr", "rows": "auto 1fr auto", "areas": ["header","content","hud"] },
|
|
36
|
+
"md": { "cols": "240px 1fr", "rows": "auto 1fr", "areas": ["sidebar header","sidebar content"] }
|
|
37
|
+
},
|
|
38
|
+
"gap": 8
|
|
39
|
+
},
|
|
40
|
+
"items": [
|
|
41
|
+
{ "id": "header", "component": { "type": "Text", "props": { "variant": "h4", "children": "Scene" } } },
|
|
42
|
+
{ "id": "sidebar", "component": { "type": "Panel", "props": { "title": "Layers" } } },
|
|
43
|
+
{ "id": "content", "component": { "type": "Viewport2D", "props": { "controls": true } } },
|
|
44
|
+
{ "id": "hud", "component": { "type": "StickyOptionsTop", "props": { "items": [/* … */] } } }
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
• template define áreas por breakpoint (xs/md/etc.).
|
|
50
|
+
• items asigna qué se renderiza en cada área (resuelto por tu registry + resolvers).
|
|
51
|
+
• Esto te da un “layout engine” 2D declarativo, perfecto para AR-lite (HUDs, overlays).
|
|
52
|
+
|
|
53
|
+
Para 3D, la misma idea, pero con un Viewport3D (three.js/Babylon) como componente. El grid sigue sirviendo para HUDs y paneles laterales mientras el lienzo 3D ocupa el área content.
|
|
54
|
+
|
|
55
|
+
3) Controles de visibilidad y modos (runtime)
|
|
56
|
+
|
|
57
|
+
Agrega un canal simple de acciones declarativas para mutar el spec:
|
|
58
|
+
|
|
59
|
+
{
|
|
60
|
+
"actions": [
|
|
61
|
+
{ "id": "toggleFull", "type": "toggle", "path": "layout.canvas.fullscreen" },
|
|
62
|
+
{ "id": "showRight", "type": "set", "path": "layout.rightDrawer.visible", "value": true }
|
|
63
|
+
],
|
|
64
|
+
"bindings": [
|
|
65
|
+
{ "event": "kbd:F", "action": "toggleFull" },
|
|
66
|
+
{ "event": "ui:openContext", "action": "showRight" }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
• El shell expone un dispatcher que entiende toggle/set sobre rutas JSON (path).
|
|
71
|
+
• Permite atajos (teclado), botones de UI, o señales externas (servidor/IA).
|
|
72
|
+
|
|
73
|
+
4) Resolver genérico + resolvers por componente
|
|
74
|
+
• Mantén los resolvers por componente (Button, Link, NavBar, Viewport2D/3D, etc.) para mapear JSON → props reales.
|
|
75
|
+
• El resolver genérico (inyector) toma el árbol JSON y delega por type al resolver adecuado (registrado en tu GuiRegistry).
|
|
76
|
+
• Así puedes hidratar todo el shell (barras + canvas + grid + items) desde un único spec.
|
|
77
|
+
|
|
78
|
+
5) Slots y Portal (overlay HUD)
|
|
79
|
+
• Define “slots” especiales (ej. overlay, hud, notifications) que rendericen vía portal encima del canvas.
|
|
80
|
+
• Tus StickyOptionsTop u otras capas pueden vivir ahí sin afectar insets del shell.
|
|
81
|
+
|
|
82
|
+
6) Persistencia + Replay
|
|
83
|
+
• Guarda el spec actual (y su historial) en localStorage o en backend para reproducir estados y compartir escenas/pantallas.
|
|
84
|
+
• Útil para AR colaborativo y “deep links” a UIs derivadas por IA.
|
|
85
|
+
|
|
86
|
+
7) Rendimiento
|
|
87
|
+
• Evita re-render global del shell: cuando mutas visibilidad o áreas, memoriza subárboles.
|
|
88
|
+
• Para 3D, desacopla el ciclo de render del estado de React cuando sea necesario.
|
|
89
|
+
|
|
90
|
+
8) Roadmap chiquito (prioridades)
|
|
91
|
+
1. Spec de layout con visibilidad + fullscreen (ya puedes hacerlo con tu shell actual).
|
|
92
|
+
2. Grid 2D declarativo con áreas responsive (pequeño motor CSS Grid).
|
|
93
|
+
3. Slots/Portal para HUD/Overlay.
|
|
94
|
+
4. Registry + resolvers para los componentes que entren al grid (ya lo estás haciendo).
|
|
95
|
+
5. Acciones declarativas (toggle/set) + bindings básicos.
|
|
96
|
+
6. Viewport3D como primitivo (después).
|
|
97
|
+
|
|
98
|
+
⸻
|
|
99
|
+
|
|
100
|
+
Con esto:
|
|
101
|
+
• Puedes ocultar/mostrar barras a voluntad o entrar en fullscreen.
|
|
102
|
+
• Tienes un lienzo central controlado por spec.
|
|
103
|
+
• Puedes colocar elementos 2D (y luego 3D) de forma declarativa y responsive.
|
|
104
|
+
• Todo eso conversando con tu registry y los resolvers que ya estás construyendo.
|
|
105
|
+
|
|
106
|
+
Cuando quieras, te redacto un spec mínimo de ejemplo (end-to-end) que tu shell pueda consumir hoy mismo para:
|
|
107
|
+
1. navbar visible, leftDrawer visible, rightDrawer oculto;
|
|
108
|
+
2. grid 2D con sidebar/header/content;
|
|
109
|
+
3. botón que activa fullscreen.
|
package/package.json
CHANGED
|
@@ -1,68 +1,85 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "this.gui",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "dist/this-gui.umd.js",
|
|
6
7
|
"module": "dist/this-gui.es.js",
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/this-gui.es.js",
|
|
13
|
+
"require": "./dist/this-gui.umd.js"
|
|
14
|
+
}
|
|
13
15
|
},
|
|
14
16
|
"scripts": {
|
|
15
|
-
"start": "node ./src/scripts/logASCIIArt.js && concurrently \"vite --open\" \"storybook dev -p 6006 --no-open\"",
|
|
16
|
-
"dev": "vite",
|
|
17
17
|
"build": "vite build",
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
18
|
+
"lint": "eslint .",
|
|
19
|
+
"dev": "vite",
|
|
20
|
+
"dev:lib": "vite build --watch",
|
|
21
|
+
"preview": "vite preview",
|
|
22
|
+
"storybook": "STORYBOOK=true storybook dev -p 6006",
|
|
23
|
+
"build-storybook": "STORYBOOK=true storybook build",
|
|
24
|
+
"chromatic": "STORYBOOK=true chromatic --project-token=$CHROMATIC_PROJECT_TOKEN"
|
|
22
25
|
},
|
|
23
26
|
"dependencies": {
|
|
24
|
-
"@
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"react
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
27
|
+
"@emotion/react": "^11.14.0",
|
|
28
|
+
"@emotion/styled": "^11.14.0",
|
|
29
|
+
"@lexical/link": "^0.33.1",
|
|
30
|
+
"@lexical/list": "^0.33.1",
|
|
31
|
+
"@lexical/react": "^0.33.1",
|
|
32
|
+
"@lexical/rich-text": "^0.33.1",
|
|
33
|
+
"@mdx-js/loader": "^3.1.0",
|
|
34
|
+
"@mdx-js/react": "^3.1.0",
|
|
35
|
+
"@mdx-js/rollup": "^3.1.0",
|
|
36
|
+
"@mui/material": "^6.4.6",
|
|
37
|
+
"@storybook/addon-docs": "^9.1.5",
|
|
38
|
+
"file-saver": "^2.0.5",
|
|
39
|
+
"js-cookie": "^3.0.5",
|
|
40
|
+
"lexical": "^0.33.1",
|
|
41
|
+
"lucide-react": "^0.542.0",
|
|
42
|
+
"react-draggable": "^4.4.6",
|
|
43
|
+
"react-feather": "^2.0.10",
|
|
44
|
+
"react-syntax-highlighter": "^15.6.6"
|
|
36
45
|
},
|
|
37
46
|
"devDependencies": {
|
|
38
|
-
"@chromatic-com/storybook": "^1.
|
|
39
|
-
"@
|
|
40
|
-
"@
|
|
41
|
-
"@
|
|
42
|
-
"@storybook/addon-
|
|
43
|
-
"@storybook/addon-
|
|
44
|
-
"@storybook/addon-
|
|
45
|
-
"@storybook/
|
|
46
|
-
"@
|
|
47
|
-
"@
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@
|
|
52
|
-
"@
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
47
|
+
"@chromatic-com/storybook": "^4.1.1",
|
|
48
|
+
"@eslint/js": "^9.21.0",
|
|
49
|
+
"@mui/icons-material": "^6.5.0",
|
|
50
|
+
"@storybook/addon-a11y": "^9.1.4",
|
|
51
|
+
"@storybook/addon-onboarding": "^9.1.4",
|
|
52
|
+
"@storybook/addon-themes": "^9.1.4",
|
|
53
|
+
"@storybook/addon-vitest": "^9.1.4",
|
|
54
|
+
"@storybook/react-vite": "^9.1.4",
|
|
55
|
+
"@types/node": "^24.3.2",
|
|
56
|
+
"@types/react": "^19.1.13",
|
|
57
|
+
"@types/react-dom": "^19.1.9",
|
|
58
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
59
|
+
"@vitejs/plugin-react-swc": "^3.8.0",
|
|
60
|
+
"@vitest/browser": "^3.2.4",
|
|
61
|
+
"@vitest/coverage-v8": "^3.2.4",
|
|
62
|
+
"chromatic": "^13.1.4",
|
|
63
|
+
"eslint": "^9.21.0",
|
|
64
|
+
"eslint-plugin-react-hooks": "^5.1.0",
|
|
65
|
+
"eslint-plugin-react-refresh": "^0.4.19",
|
|
66
|
+
"eslint-plugin-storybook": "^9.1.4",
|
|
67
|
+
"globals": "^15.15.0",
|
|
68
|
+
"playwright": "^1.55.0",
|
|
56
69
|
"prop-types": "^15.8.1",
|
|
57
|
-
"react": "^
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"vite": "^
|
|
70
|
+
"react-router-dom": "^6.30.1",
|
|
71
|
+
"storybook": "^9.1.4",
|
|
72
|
+
"typescript": "^5.9.2",
|
|
73
|
+
"vite": "^6.2.0",
|
|
74
|
+
"vitest": "^3.2.4"
|
|
75
|
+
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"react": "^19.0.0",
|
|
78
|
+
"react-dom": "^19.0.0"
|
|
61
79
|
},
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
]
|
|
80
|
+
"eslintConfig": {
|
|
81
|
+
"extends": [
|
|
82
|
+
"plugin:storybook/recommended"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
68
85
|
}
|
package/public/GUI.png
ADDED
|
Binary file
|
package/public/GUI2.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Box } from '@mui/material';
|
|
2
|
+
|
|
3
|
+
// Gridme is a generic grid layout component based on MUI's Box.
|
|
4
|
+
// It allows you to quickly define a grid layout with customizable number of columns and spacing.
|
|
5
|
+
// You can also control the maximum width of each grid item via the `itemMaxWidth` prop.
|
|
6
|
+
// This wrapper is part of this.GUI's declarative approach to layout construction.
|
|
7
|
+
const Gridme = ({
|
|
8
|
+
children,
|
|
9
|
+
columns = 3,
|
|
10
|
+
columnGap = '0.5rem',
|
|
11
|
+
rowGap = '1rem',
|
|
12
|
+
marginTop = '0px',
|
|
13
|
+
marginBottom = '0px',
|
|
14
|
+
sx = {},
|
|
15
|
+
}) => {
|
|
16
|
+
return (
|
|
17
|
+
<Box
|
|
18
|
+
sx={{
|
|
19
|
+
display: 'grid',
|
|
20
|
+
gridTemplateColumns: `repeat(${columns}, 1fr)`,
|
|
21
|
+
columnGap: columnGap,
|
|
22
|
+
rowGap: rowGap,
|
|
23
|
+
width: '100%',
|
|
24
|
+
alignItems: 'stretch',
|
|
25
|
+
justifyItems: 'stretch',
|
|
26
|
+
mt: marginTop,
|
|
27
|
+
mb: marginBottom,
|
|
28
|
+
'& > *': {
|
|
29
|
+
width: '100%',
|
|
30
|
+
height: '100%',
|
|
31
|
+
},
|
|
32
|
+
...sx,
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
{children}
|
|
36
|
+
</Box>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default Gridme;
|
|
41
|
+
|
|
42
|
+
// Example usage:
|
|
43
|
+
//
|
|
44
|
+
// import Gridme from './Gridme';
|
|
45
|
+
//
|
|
46
|
+
// const Example = () => (
|
|
47
|
+
// <Gridme columns={3} gap="1rem">
|
|
48
|
+
// <Box sx={{ backgroundColor: 'red', height: 100 }} />
|
|
49
|
+
// <Box sx={{ backgroundColor: 'blue', height: 100 }} />
|
|
50
|
+
// <Box sx={{ backgroundColor: 'green', height: 100 }} />
|
|
51
|
+
// </Gridme>
|
|
52
|
+
// );
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Box, Typography } from '@mui/material';
|
|
2
|
+
import * as Icons from 'react-feather';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { Link } from 'react-router-dom';
|
|
5
|
+
|
|
6
|
+
const LilBox = ({
|
|
7
|
+
icon,
|
|
8
|
+
featherIcon,
|
|
9
|
+
label,
|
|
10
|
+
href,
|
|
11
|
+
aspectRatio = '5 / 4',
|
|
12
|
+
}) => {
|
|
13
|
+
const FeatherIcon = featherIcon && Icons[featherIcon] ? Icons[featherIcon] : null;
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<Box
|
|
17
|
+
component={href ? Link : 'div'}
|
|
18
|
+
to={href}
|
|
19
|
+
sx={{
|
|
20
|
+
width: '100%',
|
|
21
|
+
aspectRatio,
|
|
22
|
+
backgroundColor: (theme) =>
|
|
23
|
+
theme.palette.mode === 'dark'
|
|
24
|
+
? 'rgba(255, 255, 255, 0.05)'
|
|
25
|
+
: 'rgba(0, 0, 0, 0.03)',
|
|
26
|
+
border: '1px solid',
|
|
27
|
+
borderColor: (theme) =>
|
|
28
|
+
theme.palette.mode === 'dark'
|
|
29
|
+
? 'rgba(255, 255, 255, 0.1)'
|
|
30
|
+
: 'rgba(0, 0, 0, 0.1)',
|
|
31
|
+
borderRadius: '8px',
|
|
32
|
+
display: 'flex',
|
|
33
|
+
flexDirection: 'column',
|
|
34
|
+
alignItems: 'center',
|
|
35
|
+
justifyContent: 'center',
|
|
36
|
+
color: (theme) => theme.palette.text.primary,
|
|
37
|
+
fontSize: '1rem',
|
|
38
|
+
fontWeight: 300,
|
|
39
|
+
transition: 'transform 0.2s ease',
|
|
40
|
+
textDecoration: 'none',
|
|
41
|
+
cursor: 'pointer',
|
|
42
|
+
'&:hover': {
|
|
43
|
+
transform: 'scale(1.05)',
|
|
44
|
+
},
|
|
45
|
+
}}
|
|
46
|
+
>
|
|
47
|
+
<Box sx={{ fontSize: '1.5rem', mb: 0.5 }}>
|
|
48
|
+
{icon ? icon : FeatherIcon ? <FeatherIcon size={24} /> : null}
|
|
49
|
+
</Box>
|
|
50
|
+
<Typography variant="body2" align="center">
|
|
51
|
+
{label}
|
|
52
|
+
</Typography>
|
|
53
|
+
</Box>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
LilBox.propTypes = {
|
|
58
|
+
icon: PropTypes.node,
|
|
59
|
+
featherIcon: PropTypes.string,
|
|
60
|
+
label: PropTypes.string.isRequired,
|
|
61
|
+
href: PropTypes.string,
|
|
62
|
+
aspectRatio: PropTypes.string,
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
export default LilBox;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Link as RouterLink } from "react-router-dom";
|
|
2
|
+
import { Box, Typography, Card, CardActionArea, CardContent } from "@mui/material";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ModuleCard
|
|
6
|
+
* Clickable card for modules/features.
|
|
7
|
+
*
|
|
8
|
+
* Props:
|
|
9
|
+
* - title: string (required)
|
|
10
|
+
* - description: string
|
|
11
|
+
* - image: string (url to image)
|
|
12
|
+
* - href?: string -> preferred navigation prop (internal route or external URL)
|
|
13
|
+
* - link?: string -> alias of href for backward compatibility
|
|
14
|
+
* - target?: string -> optional target for external links (e.g., "_blank")
|
|
15
|
+
*
|
|
16
|
+
* Behavior:
|
|
17
|
+
* - If `href` (or `link`) starts with http/https, renders an <a>.
|
|
18
|
+
* - Otherwise, renders a React Router <Link> for client-side routing.
|
|
19
|
+
* - Avoids nested anchors: do NOT wrap ModuleCard with another <Link>.
|
|
20
|
+
*/
|
|
21
|
+
const ModuleCard = ({ title, description, image, href, link, target }) => {
|
|
22
|
+
const to = href ?? link ?? null;
|
|
23
|
+
const isExternal = typeof to === "string" && /^https?:\/\//i.test(to);
|
|
24
|
+
|
|
25
|
+
// Decide which props to pass to CardActionArea to avoid <a> inside <a>.
|
|
26
|
+
const navProps = to
|
|
27
|
+
? isExternal
|
|
28
|
+
? { component: "a", href: to, target: target ?? "_self", rel: "noopener noreferrer" }
|
|
29
|
+
: { component: RouterLink, to }
|
|
30
|
+
: {}; // No navigation if no href/link provided
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<Card
|
|
34
|
+
sx={{
|
|
35
|
+
height: "100%",
|
|
36
|
+
backgroundColor: "background.paper",
|
|
37
|
+
boxShadow: 2,
|
|
38
|
+
borderRadius: 2,
|
|
39
|
+
"&:hover": {
|
|
40
|
+
boxShadow: 4,
|
|
41
|
+
transform: "translateY(-2px)",
|
|
42
|
+
transition: "0.3s ease-in-out",
|
|
43
|
+
},
|
|
44
|
+
}}
|
|
45
|
+
>
|
|
46
|
+
<CardActionArea
|
|
47
|
+
{...navProps}
|
|
48
|
+
sx={{ height: "100%", display: "flex", flexDirection: "column" }}
|
|
49
|
+
>
|
|
50
|
+
<CardContent
|
|
51
|
+
sx={{
|
|
52
|
+
display: "flex",
|
|
53
|
+
flexDirection: "column",
|
|
54
|
+
alignItems: "center",
|
|
55
|
+
justifyContent: "center",
|
|
56
|
+
textAlign: "center",
|
|
57
|
+
padding: 2,
|
|
58
|
+
height: "100%",
|
|
59
|
+
}}
|
|
60
|
+
>
|
|
61
|
+
{/* Image */}
|
|
62
|
+
{image && (
|
|
63
|
+
<Box
|
|
64
|
+
component="img"
|
|
65
|
+
src={image}
|
|
66
|
+
alt={title}
|
|
67
|
+
sx={{
|
|
68
|
+
width: "80px",
|
|
69
|
+
height: "80px",
|
|
70
|
+
marginBottom: 1,
|
|
71
|
+
objectFit: "contain",
|
|
72
|
+
}}
|
|
73
|
+
/>
|
|
74
|
+
)}
|
|
75
|
+
|
|
76
|
+
{/* Title */}
|
|
77
|
+
<Typography
|
|
78
|
+
variant="body1"
|
|
79
|
+
sx={{
|
|
80
|
+
fontWeight: 600,
|
|
81
|
+
color: "text.primary",
|
|
82
|
+
marginBottom: 1,
|
|
83
|
+
}}
|
|
84
|
+
>
|
|
85
|
+
{title}
|
|
86
|
+
</Typography>
|
|
87
|
+
|
|
88
|
+
{/* Description */}
|
|
89
|
+
{description && (
|
|
90
|
+
<Typography
|
|
91
|
+
variant="body2"
|
|
92
|
+
sx={{
|
|
93
|
+
fontSize: "0.85rem",
|
|
94
|
+
color: "text.secondary",
|
|
95
|
+
}}
|
|
96
|
+
>
|
|
97
|
+
{description}
|
|
98
|
+
</Typography>
|
|
99
|
+
)}
|
|
100
|
+
</CardContent>
|
|
101
|
+
</CardActionArea>
|
|
102
|
+
</Card>
|
|
103
|
+
);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export default ModuleCard;
|