this.gui 1.3.22 → 1.3.26
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/dist/this-gui.es.js +0 -1
- package/dist/this-gui.umd.js +65 -65
- package/index.ts +3 -2
- package/init/index.html +4 -5
- package/init/package-lock.json +2 -2
- package/init/package.json +1 -1
- package/init/src/App.tsx +24 -0
- package/init/src/index.css +16 -0
- package/init/src/main.tsx +14 -0
- package/init/src/router/DerivableRouter.tsx +36 -0
- package/package.json +1 -1
- package/src/GUI.tsx +15 -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/gui/Layouts/ResponsiveUI/Content/Content.resolver.tsx +0 -0
- package/src/gui/Layouts/ResponsiveUI/Content/Content.stories.tsx +88 -0
- package/src/gui/Layouts/ResponsiveUI/Content/Content.tsx +53 -0
- package/src/gui/Layouts/ResponsiveUI/Content/Content.types.tsx +40 -0
- package/src/gui/Layouts/ResponsiveUI/Footer/Footer.resolver.tsx +45 -0
- package/src/gui/Layouts/ResponsiveUI/Footer/Footer.stories.tsx +209 -0
- package/src/gui/Layouts/ResponsiveUI/Footer/Footer.tsx +337 -0
- package/src/gui/Layouts/ResponsiveUI/Footer/Footer.types.ts +40 -0
- package/src/gui/Layouts/ResponsiveUI/Layout/Layout.resolver.tsx +37 -0
- package/src/gui/Layouts/ResponsiveUI/Layout/Layout.stories.tsx +290 -0
- package/src/gui/Layouts/ResponsiveUI/Layout/Layout.tsx +112 -0
- package/src/gui/Layouts/ResponsiveUI/Layout/Layout.types.ts +56 -0
- package/src/gui/Layouts/ResponsiveUI/Layout/useLayoutBreakpoints.ts +9 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.resolver.tsx +87 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.stories.tsx +199 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.tsx +311 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/LeftSidebar.types.ts +41 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/SidebarToggleButton.tsx +53 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.resolver.tsx +19 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarAction/LeftSidebarAction.tsx +107 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.resolver.tsx +0 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.tsx +122 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarLink/LeftSidebarLink.types.ts +13 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarMenu/LeftSidebarMenu.tsx +142 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/LeftSidebar/components/LeftSidebarToggleButton/LeftSidebarToggleButton.tsx +23 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.resolver.tsx +35 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.stories.tsx +240 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.tsx +319 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/RightSidebar.types.ts +17 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarAction/RightSidebarAction.tsx +102 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarLink/RightSidebarLink.tsx +132 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarMenu/RightSidebarMenu.tsx +140 -0
- package/src/gui/Layouts/ResponsiveUI/Sidebars/RightSidebar/components/RightSidebarToggleButton/RightSidebarToggleButton.tsx +22 -0
- package/src/gui/Layouts/ResponsiveUI/StickyOptions/StickyOptionsTop.stories.tsx +469 -0
- package/src/gui/Layouts/ResponsiveUI/StickyOptions/StickyOptionsTop.tsx +489 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.resolver.tsx +86 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.stories.tsx +350 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.tsx +281 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/TopBar.types.ts +39 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarAction/TopBarAction.stories.tsx +83 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarAction/TopBarAction.tsx +18 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarAction/TopBarAction.types.ts +4 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarLink/TopBarLink.stories.tsx +189 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarLink/TopBarLink.tsx +30 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarLink/TopBarLink.types.ts +9 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.resolver.tsx +14 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.stories.tsx +56 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.tsx +123 -0
- package/src/gui/Layouts/ResponsiveUI/TopBar/components/TopBarMenu/TopBarMenu.types.ts +44 -0
- package/src/gui/Theme/GuiProvider.tsx +125 -0
- package/src/gui/Theme/Icon/Icon.resolver.tsx +29 -0
- package/src/gui/Theme/Icon/Icon.tsx +43 -0
- package/src/gui/Theme/catalog/CherryByte/CherryByte.png +0 -0
- package/src/gui/Theme/catalog/CherryByte/dark.tokens.ts +47 -0
- package/src/gui/Theme/catalog/CherryByte/light.tokens.ts +47 -0
- package/src/gui/Theme/catalog/CherryByte/manifest.ts +24 -0
- package/src/gui/Theme/catalog/GhostShell/dark.tokens.ts +43 -0
- package/src/gui/Theme/catalog/GhostShell/ghost.png +0 -0
- package/src/gui/Theme/catalog/GhostShell/light.tokens.ts +39 -0
- package/src/gui/Theme/catalog/GhostShell/manifest.ts +24 -0
- package/src/gui/Theme/catalog/LunaHex/LunaHex.png +0 -0
- package/src/gui/Theme/catalog/LunaHex/dark.tokens.ts +34 -0
- package/src/gui/Theme/catalog/LunaHex/light.tokens.ts +74 -0
- package/src/gui/Theme/catalog/LunaHex/manifest.ts +24 -0
- package/src/gui/Theme/catalog/MUI/MUI.png +0 -0
- package/src/gui/Theme/catalog/MUI/dark.tokens.ts +58 -0
- package/src/gui/Theme/catalog/MUI/light.tokens.ts +74 -0
- package/src/gui/Theme/catalog/MUI/manifest.ts +24 -0
- package/src/gui/Theme/catalog/PrinceOfDarkness/dark.tokens.ts +48 -0
- package/src/gui/Theme/catalog/PrinceOfDarkness/light.tokens.ts +47 -0
- package/src/gui/Theme/catalog/PrinceOfDarkness/manifest.ts +24 -0
- package/src/gui/Theme/catalog/PrinceOfDarkness/prince.png +0 -0
- package/src/gui/Theme/catalog/PrinceOfDarkness/princeOfDarkness.png +0 -0
- package/src/gui/Theme/catalog/Seafoam/dark.tokens.ts +49 -0
- package/src/gui/Theme/catalog/Seafoam/light.tokens.ts +47 -0
- package/src/gui/Theme/catalog/Seafoam/manifest.ts +24 -0
- package/src/gui/Theme/catalog/Seafoam/seaFoam.png +0 -0
- package/src/gui/Theme/catalog/neurons/dark.tokens.ts +58 -0
- package/src/gui/Theme/catalog/neurons/light.tokens.ts +74 -0
- package/src/gui/Theme/catalog/neurons/manifest.ts +24 -0
- package/src/gui/Theme/catalog/neurons/neurons.me.png +0 -0
- package/src/gui/Theme/fromTokens.ts +273 -0
- package/src/gui/Theme/gui.css +31 -0
- package/src/gui/Theme/index.ts +17 -0
- package/src/gui/Theme/styles/buildShadows.ts +83 -0
- package/src/gui/Theme/styles/theme.tokens.ts +108 -0
- package/src/gui/Theme/utils/catalog.ts +61 -0
- package/src/gui/Theme/utils/persistence.ts +66 -0
- package/src/gui/Theme/utils/themeUtils.ts +34 -0
- package/src/gui/apis/codegen.api.ts +38 -0
- package/src/gui/components/atoms/AppBar/AppBar.resolver.tsx +41 -0
- package/src/gui/components/atoms/AppBar/AppBar.stories.tsx +225 -0
- package/src/gui/components/atoms/AppBar/AppBar.tsx +8 -0
- package/src/gui/components/atoms/AppBar/AppBar.types.ts +28 -0
- package/src/gui/components/atoms/Avatar/Avatar.resolver.tsx +61 -0
- package/src/gui/components/atoms/Avatar/Avatar.stories.tsx +36 -0
- package/src/gui/components/atoms/Avatar/Avatar.tsx +14 -0
- package/src/gui/components/atoms/Box/Box.resolver.tsx +171 -0
- package/src/gui/components/atoms/Box/Box.stories.tsx +263 -0
- package/src/gui/components/atoms/Box/Box.tsx +15 -0
- package/src/gui/components/atoms/Button/Button.resolver.tsx +103 -0
- package/src/gui/components/atoms/Button/Button.stories.tsx +219 -0
- package/src/gui/components/atoms/Button/Button.tsx +40 -0
- package/src/gui/components/atoms/Card/Card.resolver.tsx +63 -0
- package/src/gui/components/atoms/Card/Card.stories.tsx +54 -0
- package/src/gui/components/atoms/Card/Card.tsx +13 -0
- package/src/gui/components/atoms/CardActions/CardActions.resolver.tsx +59 -0
- package/src/gui/components/atoms/CardActions/CardActions.stories.tsx +32 -0
- package/src/gui/components/atoms/CardActions/CardActions.tsx +14 -0
- package/src/gui/components/atoms/CardContent/CardContent.resolver.tsx +60 -0
- package/src/gui/components/atoms/CardContent/CardContent.stories.tsx +34 -0
- package/src/gui/components/atoms/CardContent/CardContent.tsx +13 -0
- package/src/gui/components/atoms/CardHeader/CardHeader.resolver.tsx +68 -0
- package/src/gui/components/atoms/CardHeader/CardHeader.stories.tsx +40 -0
- package/src/gui/components/atoms/CardHeader/CardHeader.tsx +12 -0
- package/src/gui/components/atoms/Collapse/Collapse.resolver.tsx +85 -0
- package/src/gui/components/atoms/Collapse/Collapse.stories.tsx +130 -0
- package/src/gui/components/atoms/Collapse/Collapse.tsx +17 -0
- package/src/gui/components/atoms/Divider/Divider.resolver.tsx +95 -0
- package/src/gui/components/atoms/Divider/Divider.stories.tsx +108 -0
- package/src/gui/components/atoms/Divider/Divider.tsx +14 -0
- package/src/gui/components/atoms/Drawer/Drawer.resolver.tsx +116 -0
- package/src/gui/components/atoms/Drawer/Drawer.stories.tsx +223 -0
- package/src/gui/components/atoms/Drawer/Drawer.tsx +25 -0
- package/src/gui/components/atoms/Grid/Grid.resolver.tsx +33 -0
- package/src/gui/components/atoms/Grid/Grid.stories.tsx +136 -0
- package/src/gui/components/atoms/Grid/Grid.tsx +15 -0
- package/src/gui/components/atoms/Grid/Grid.types.ts +9 -0
- package/src/gui/components/atoms/IconButton/IconButton.resolver.tsx +137 -0
- package/src/gui/components/atoms/IconButton/IconButton.stories.tsx +134 -0
- package/src/gui/components/atoms/IconButton/IconButton.tsx +22 -0
- package/src/gui/components/atoms/Link/Link.resolver.tsx +74 -0
- package/src/gui/components/atoms/Link/Link.stories.tsx +157 -0
- package/src/gui/components/atoms/Link/Link.tsx +36 -0
- package/src/gui/components/atoms/List/List.resolver.tsx +94 -0
- package/src/gui/components/atoms/List/List.stories.tsx +137 -0
- package/src/gui/components/atoms/List/List.tsx +20 -0
- package/src/gui/components/atoms/ListItem/ListItem.resolver.tsx +88 -0
- package/src/gui/components/atoms/ListItem/ListItem.stories.tsx +151 -0
- package/src/gui/components/atoms/ListItem/ListItem.tsx +19 -0
- package/src/gui/components/atoms/ListItemButton/ListItemButton.resolver.tsx +214 -0
- package/src/gui/components/atoms/ListItemButton/ListItemButton.stories.tsx +155 -0
- package/src/gui/components/atoms/ListItemButton/ListItemButton.tsx +15 -0
- package/src/gui/components/atoms/ListItemIcon/ListItemIcon.resolver.tsx +102 -0
- package/src/gui/components/atoms/ListItemIcon/ListItemIcon.stories.tsx +132 -0
- package/src/gui/components/atoms/ListItemIcon/ListItemIcon.tsx +11 -0
- package/src/gui/components/atoms/ListItemText/ListItemText.resolver.tsx +112 -0
- package/src/gui/components/atoms/ListItemText/ListItemText.stories.tsx +156 -0
- package/src/gui/components/atoms/ListItemText/ListItemText.tsx +15 -0
- package/src/gui/components/atoms/Menu/Menu.resolver.tsx +112 -0
- package/src/gui/components/atoms/Menu/Menu.stories.tsx +162 -0
- package/src/gui/components/atoms/Menu/Menu.tsx +17 -0
- package/src/gui/components/atoms/MenuItem/MenuItem.resolver.tsx +183 -0
- package/src/gui/components/atoms/MenuItem/MenuItem.stories.tsx +134 -0
- package/src/gui/components/atoms/MenuItem/MenuItem.tsx +14 -0
- package/src/gui/components/atoms/Paper/Paper.resolver.tsx +98 -0
- package/src/gui/components/atoms/Paper/Paper.stories.tsx +184 -0
- package/src/gui/components/atoms/Paper/Paper.tsx +15 -0
- package/src/gui/components/atoms/Section/Section.resolver.tsx +10 -0
- package/src/gui/components/atoms/Section/Section.stories.tsx +189 -0
- package/src/gui/components/atoms/Section/Section.tsx +76 -0
- package/src/gui/components/atoms/Section/Section.types.tsx +24 -0
- package/src/gui/components/atoms/Stack/Stack.resolver.tsx +94 -0
- package/src/gui/components/atoms/Stack/Stack.stories.tsx +160 -0
- package/src/gui/components/atoms/Stack/Stack.tsx +15 -0
- package/src/gui/components/atoms/Surface/Surface.resolver.tsx +37 -0
- package/src/gui/components/atoms/Surface/Surface.tsx +49 -0
- package/src/gui/components/atoms/Surface/Surface.types.ts +20 -0
- package/src/gui/components/atoms/Switch/Switch.resolver.tsx +53 -0
- package/src/gui/components/atoms/Switch/Switch.stories.tsx +236 -0
- package/src/gui/components/atoms/Switch/Switch.tsx +22 -0
- package/src/gui/components/atoms/TextField/TextField.stories.tsx +28 -0
- package/src/gui/components/atoms/TextField/TextField.tsx +15 -0
- package/src/gui/components/atoms/Toolbar/Toolbar.resolver.tsx +60 -0
- package/src/gui/components/atoms/Toolbar/Toolbar.stories.tsx +155 -0
- package/src/gui/components/atoms/Toolbar/Toolbar.tsx +16 -0
- package/src/gui/components/atoms/Tooltip/Tooltip.resolver.tsx +142 -0
- package/src/gui/components/atoms/Tooltip/Tooltip.stories.tsx +117 -0
- package/src/gui/components/atoms/Tooltip/Tooltip.tsx +70 -0
- package/src/gui/components/atoms/Typography/Typography.resolver.tsx +158 -0
- package/src/gui/components/atoms/Typography/Typography.stories.tsx +222 -0
- package/src/gui/components/atoms/Typography/Typography.tsx +27 -0
- package/src/gui/components/atoms.tsx +138 -0
- package/src/gui/components/molecules/Dialog/Dialog.stories.tsx +18 -0
- package/src/gui/components/molecules/Dialog/Dialog.tsx +5 -0
- package/src/gui/components/molecules/HeroSection/HeroSection.stories.tsx +141 -0
- package/src/gui/components/molecules/HeroSection/HeroSection.tsx +152 -0
- package/src/gui/components/molecules/HeroSection/HeroSection.types.tsx +18 -0
- package/src/gui/components/molecules/ModalBox/ModalBox.resolver.tsx +38 -0
- package/src/gui/components/molecules/ModalBox/ModalBox.stories.tsx +82 -0
- package/src/gui/components/molecules/ModalBox/ModalBox.tsx +106 -0
- package/src/gui/components/molecules/ModalBox/ModalBox.types.ts +29 -0
- package/src/gui/components/molecules/Page/Page.stories.tsx +135 -0
- package/src/gui/components/molecules/Page/Page.tsx +94 -0
- package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.resolver.tsx +58 -0
- package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.stories.tsx +133 -0
- package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.tsx +101 -0
- package/src/gui/components/molecules/Theme/ThemeModeToggle/ThemeModeToggle.types.ts +29 -0
- package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.resolver.tsx +15 -0
- package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.stories.tsx +88 -0
- package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.tsx +167 -0
- package/src/gui/components/molecules/Theme/ThemesCatalog/ThemesCatalog.types.ts +34 -0
- package/src/gui/components/organism/ChatGPTInterface/ChatGPTInterface.stories.tsx +17 -0
- package/src/gui/components/organism/ChatGPTInterface/ChatGPTInterface.tsx +71 -0
- package/src/gui/components/organism/RootDomain/RootDomain.stories.tsx +31 -0
- package/src/gui/components/organism/RootDomain/RootDomain.tsx +100 -0
- package/src/gui/components/organism/RootDomain/staticServices.ts +66 -0
- package/src/gui/components/window/Nodes/node.ts +0 -0
- package/src/gui/components/window/code/block/node.tsx +0 -0
- package/src/gui/components/window/code/hugging.face.api.ts +11 -0
- package/src/gui/components/window/connectors/index.ts +19 -0
- package/src/gui/components/window/window.stories.tsx +20 -0
- package/src/gui/components/window/window.tsx +633 -0
- package/src/gui/contexts/InsetsContext.tsx +38 -0
- package/src/gui/contexts/LeftSidebarContext.tsx +20 -0
- package/src/gui/contexts/RightSidebarContext.tsx +25 -0
- package/src/gui/contexts/ThemeContext.ts +34 -0
- package/src/gui/contexts/index.ts +4 -0
- package/src/gui/hooks/index.ts +11 -0
- package/src/gui/hooks/resolveColorToken.ts +39 -0
- package/src/gui/hooks/useCodeGen.ts +12 -0
- package/src/gui/hooks/useGuiMediaQuery.ts +18 -0
- package/src/gui/hooks/useGuiTheme.ts +18 -0
- package/src/gui/hooks/useInsets.ts +26 -0
- package/src/gui/hooks/useIsMobile.ts +13 -0
- package/src/gui/hooks/useIsTouchDevice.ts +25 -0
- package/src/gui/hooks/useLeftSidebar.ts +10 -0
- package/src/gui/hooks/useRightSidebar.ts +12 -0
- package/src/gui/hooks/useViewportKey.ts +19 -0
- package/src/gui/hooks/useViewportProp.ts +17 -0
- package/src/gui/me/Logic.tsx +31 -0
- package/src/gui/me/Me.stories.tsx +8 -0
- package/src/gui/me/Me.tsx +197 -0
- package/src/gui/me/fundamentals/verbs/verbs.tsx +94 -0
- package/src/gui/me/modificators/Adjectives.ts +0 -0
- package/src/gui/me/modificators/Adverbs.ts +0 -0
- package/src/gui/me/modificators/Complements.ts +27 -0
- package/src/gui/me/utils/Context.tsx +14 -0
- package/src/gui/me/utils/hooks/useMe.js +37 -0
- package/src/gui/utils/nodeID.ts +11 -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.mdx +149 -0
- package/src/stories/Theme/Palette.stories.tsx +86 -0
- package/src/stories/Theme/ThemeViewer.stories.tsx +91 -0
- package/src/stories/Theme/Typography.stories.jsx +211 -0
- package/src/types/gui.d.ts +67 -0
- package/src/types/theme.d.ts +191 -0
- package/src/types/viewport.ts +132 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// src/themes/GuiProvider.tsx
|
|
2
|
+
import React, { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { useInRouterContext, BrowserRouter } from 'react-router-dom';
|
|
4
|
+
import { generatePaletteCssVars } from './utils/themeUtils';
|
|
5
|
+
import { ThemeContext } from '@/gui/contexts/ThemeContext';
|
|
6
|
+
import { ThemeProvider, CssBaseline } from '@mui/material';
|
|
7
|
+
import type { Theme } from '@mui/material/styles';
|
|
8
|
+
import { themeTokens } from '@/gui/Theme/styles/theme.tokens';
|
|
9
|
+
import { usePersistentThemeId, usePersistentThemeMode } from './utils/persistence';
|
|
10
|
+
import { makeMuiTheme } from '@/gui/Theme/fromTokens';
|
|
11
|
+
import { GuiThemes, getGuiTheme } from './utils/catalog';
|
|
12
|
+
import { InsetsProvider, useInsetsContext } from '@/gui/contexts/InsetsContext';
|
|
13
|
+
// -------------------------------- Types --------------------------------
|
|
14
|
+
import type {
|
|
15
|
+
GuiContextValue,
|
|
16
|
+
} from '@/types/theme';
|
|
17
|
+
export type GuiProviderProps = {
|
|
18
|
+
initialThemeId?: string;
|
|
19
|
+
initialMode?: 'light' | 'dark'; // <-- añadido
|
|
20
|
+
children?: React.ReactNode;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export function GuiProvider({
|
|
24
|
+
initialThemeId = 'neurons.me',
|
|
25
|
+
initialMode = 'light', // default
|
|
26
|
+
children,
|
|
27
|
+
}: GuiProviderProps) {
|
|
28
|
+
// Persist last chosen `themeId`
|
|
29
|
+
const [themeId, setThemeId] = usePersistentThemeId(initialThemeId);
|
|
30
|
+
// Persist last chosen `mode`
|
|
31
|
+
const [mode, setModeState] = usePersistentThemeMode(initialMode);
|
|
32
|
+
// Resolve manifest for current themeId (the GuiTheme which contains both modes)
|
|
33
|
+
const manifest = useMemo(() => {
|
|
34
|
+
return getGuiTheme(themeId) ?? GuiThemes[0];
|
|
35
|
+
}, [themeId]);
|
|
36
|
+
// Expose an `active` object for convenience (manifest + current selected mode)
|
|
37
|
+
const active = useMemo(() => {
|
|
38
|
+
return {
|
|
39
|
+
...(manifest ?? {}),
|
|
40
|
+
mode,
|
|
41
|
+
} as (typeof manifest & { mode: 'light' | 'dark' });
|
|
42
|
+
}, [manifest, mode]);
|
|
43
|
+
// Build MUI themes for both dark and light using the manifest's mode tokens.
|
|
44
|
+
// IMPORTANT: makeMuiTheme signature assumed: makeMuiTheme(baseTokens, modeTokens, mode)
|
|
45
|
+
const { mode: manifestModes } = manifest || ({} as any);
|
|
46
|
+
const lightMuiTheme = useMemo<Theme>(() => {
|
|
47
|
+
const lightTokens = manifestModes?.light ?? {};
|
|
48
|
+
return makeMuiTheme(themeTokens, lightTokens, 'light');
|
|
49
|
+
}, [manifestModes]);
|
|
50
|
+
const darkMuiTheme = useMemo<Theme>(() => {
|
|
51
|
+
const darkTokens = manifestModes?.dark ?? {};
|
|
52
|
+
return makeMuiTheme(themeTokens, darkTokens, 'dark');
|
|
53
|
+
}, [manifestModes]);
|
|
54
|
+
const theme = mode === 'dark' ? darkMuiTheme : lightMuiTheme;
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
generatePaletteCssVars(theme);
|
|
57
|
+
}, [theme]);
|
|
58
|
+
// Ensure saved key is valid with the current catalog
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
if (GuiThemes.length === 0) return;
|
|
61
|
+
const ok = GuiThemes.some((e) => e.themeId === themeId);
|
|
62
|
+
if (!ok) setThemeId(GuiThemes[0].themeId ?? '');
|
|
63
|
+
}, [themeId, setThemeId]);
|
|
64
|
+
// API for changing mode without touching themeId
|
|
65
|
+
const setMode = (nextMode: 'light' | 'dark') => {
|
|
66
|
+
setModeState(nextMode);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const toggleMode = () => setModeState((m) => (m === 'dark' ? 'light' : 'dark'));
|
|
70
|
+
const ctxValue: GuiContextValue = useMemo(
|
|
71
|
+
() => ({
|
|
72
|
+
themeId: manifest?.themeId ?? '',
|
|
73
|
+
setThemeId,
|
|
74
|
+
themeName: manifest?.themeName ?? '',
|
|
75
|
+
mode,
|
|
76
|
+
setMode,
|
|
77
|
+
toggleMode,
|
|
78
|
+
}),
|
|
79
|
+
[manifest?.themeId, manifest?.themeName, mode, setThemeId]
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
return (
|
|
83
|
+
<InsetsProvider>
|
|
84
|
+
<GuiThemeBridge theme={theme} ctxValue={ctxValue}>
|
|
85
|
+
{children}
|
|
86
|
+
</GuiThemeBridge>
|
|
87
|
+
</InsetsProvider>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const GuiThemeBridge: React.FC<{ theme: Theme; ctxValue: GuiContextValue; children?: React.ReactNode }> = ({ theme, ctxValue, children }) => {
|
|
92
|
+
const { insets, updateInsets } = useInsetsContext();
|
|
93
|
+
const themeWithInsets = useMemo(() => {
|
|
94
|
+
return {
|
|
95
|
+
...theme,
|
|
96
|
+
layout: {
|
|
97
|
+
...(theme as any).layout,
|
|
98
|
+
insets,
|
|
99
|
+
},
|
|
100
|
+
updateInsets,
|
|
101
|
+
} as Theme & { layout: any; updateInsets: typeof updateInsets };
|
|
102
|
+
}, [insets, theme, updateInsets]);
|
|
103
|
+
|
|
104
|
+
return (
|
|
105
|
+
<ThemeProvider theme={themeWithInsets}>
|
|
106
|
+
<CssBaseline />
|
|
107
|
+
<ThemeContext.Provider value={ctxValue}>{children}</ThemeContext.Provider>
|
|
108
|
+
</ThemeProvider>
|
|
109
|
+
);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
export default GuiProvider;
|
|
113
|
+
|
|
114
|
+
// Wrapper that ensures GuiProvider is always inside a router
|
|
115
|
+
export function GuiProviderWrapper(props: GuiProviderProps) {
|
|
116
|
+
const inRouter = useInRouterContext();
|
|
117
|
+
if (inRouter) {
|
|
118
|
+
return <GuiProvider {...props} />;
|
|
119
|
+
}
|
|
120
|
+
return (
|
|
121
|
+
<BrowserRouter>
|
|
122
|
+
<GuiProvider {...props} />
|
|
123
|
+
</BrowserRouter>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { RegistryEntry, ResolveCtx } from '@/registry/types';
|
|
3
|
+
import Icon from '@/themes/Icon/Icon';
|
|
4
|
+
|
|
5
|
+
export type IconSpec = {
|
|
6
|
+
type: 'Icon';
|
|
7
|
+
props: {
|
|
8
|
+
name: string;
|
|
9
|
+
fill?: number;
|
|
10
|
+
weight?: number;
|
|
11
|
+
grade?: number;
|
|
12
|
+
opticalSize?: number;
|
|
13
|
+
fontSize?: number | string;
|
|
14
|
+
iconColor?: string;
|
|
15
|
+
className?: string;
|
|
16
|
+
style?: React.CSSProperties;
|
|
17
|
+
[key: string]: any; // permite pasar props adicionales
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const IconResolver: RegistryEntry = {
|
|
22
|
+
type: 'Icon',
|
|
23
|
+
resolve(spec: IconSpec, _ctx?: ResolveCtx) {
|
|
24
|
+
const p = spec.props ?? {};
|
|
25
|
+
return <Icon {...p} />;
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
export default IconResolver;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import clsx from 'clsx';
|
|
3
|
+
import 'material-symbols';
|
|
4
|
+
|
|
5
|
+
export type IconProps = {
|
|
6
|
+
name: string; // e.g., 'material:home'
|
|
7
|
+
iconColor?: string; // CSS color value
|
|
8
|
+
fontSize?: number | string; // optional font size
|
|
9
|
+
weight?: number; // font variation setting
|
|
10
|
+
fill?: number; // font variation setting (0 = outlined, 1 = filled)
|
|
11
|
+
grade?: number;
|
|
12
|
+
opticalSize?: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
style?: React.CSSProperties;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export default function Icon({
|
|
18
|
+
name,
|
|
19
|
+
iconColor,
|
|
20
|
+
fontSize,
|
|
21
|
+
weight = 400,
|
|
22
|
+
fill = 0,
|
|
23
|
+
grade = 0,
|
|
24
|
+
opticalSize = 24,
|
|
25
|
+
className,
|
|
26
|
+
style,
|
|
27
|
+
}: IconProps) {
|
|
28
|
+
const iconName = name;
|
|
29
|
+
const variationSettings = `"FILL" ${fill}, "wght" ${weight}, "GRAD" ${grade}, "opsz" ${opticalSize}`;
|
|
30
|
+
return (
|
|
31
|
+
<span
|
|
32
|
+
className={clsx('material-symbols-rounded', className)}
|
|
33
|
+
style={{
|
|
34
|
+
fontVariationSettings: variationSettings,
|
|
35
|
+
color: iconColor,
|
|
36
|
+
fontSize,
|
|
37
|
+
...style,
|
|
38
|
+
}}
|
|
39
|
+
>
|
|
40
|
+
{iconName}
|
|
41
|
+
</span>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// src/themes/catalog/CherryByte/dark.tokens.ts
|
|
2
|
+
// Cherry Byte Modern Dark — Deep Green & Blush Harmony
|
|
3
|
+
const darkTokens = {
|
|
4
|
+
"id": "cherrybyte-dark",
|
|
5
|
+
"$description": "Cherry Byte Dark — a youthful, elegant, and modern palette blending deep teal-green and soft blush tones for calm, sensual contrast.",
|
|
6
|
+
"color": {
|
|
7
|
+
"primary": { "$type": "color", "$value": "#e7a9a4" }, // blush pink
|
|
8
|
+
"secondary": { "$type": "color", "$value": "#2b3f3c" }, // deep forest green
|
|
9
|
+
"accent": { "$type": "color", "$value": "#d77c73" }, // coral accent
|
|
10
|
+
"icon": { "$type": "color", "$value": "#f5eaea" },
|
|
11
|
+
"background": {
|
|
12
|
+
"default": { "$type": "color", "$value": "#192524" }, // elegant deep teal
|
|
13
|
+
"paper": { "$type": "color", "$value": "#213230" }, // slightly lighter greenish tone
|
|
14
|
+
"nav": { "$type": "color", "$value": "#1a2928" } // subtle depth for navigation
|
|
15
|
+
},
|
|
16
|
+
"textPrimary": { "$type": "color", "$value": "#f9f4f3" },
|
|
17
|
+
"textSecondary": { "$type": "color", "$value": "rgba(255, 235, 230, 0.85)" },
|
|
18
|
+
"link": { "$type": "color", "$value": "#e7a9a4" },
|
|
19
|
+
"linkVisited": { "$type": "color", "$value": "#d5968f" },
|
|
20
|
+
"border": { "$type": "color", "$value": "rgba(255, 220, 210, 0.2)" },
|
|
21
|
+
"section": {
|
|
22
|
+
"default": { "$type": "color", "$value": "#202d2c" }, // soft green charcoal
|
|
23
|
+
"subtle": { "$type": "color", "$value": "#253837" }, // calm depth
|
|
24
|
+
"strong": { "$type": "color", "$value": "#324845" }, // bold modern layer
|
|
25
|
+
"accent": { "$type": "color", "$value": "#3d5450" }, // moody teal highlight
|
|
26
|
+
"highlight": { "$type": "color", "$value": "#d48d88" } // blush highlight
|
|
27
|
+
},
|
|
28
|
+
"blur": {
|
|
29
|
+
"light": { "$type": "color", "$value": "rgba(30, 25, 28, 0.34)" },
|
|
30
|
+
"medium": { "$type": "color", "$value": "rgba(34, 28, 30, 0.55)" },
|
|
31
|
+
"heavy": { "$type": "color", "$value": "rgba(38, 30, 32, 0.85)" },
|
|
32
|
+
"all": { "$type": "color", "$value": "rgba(42, 32, 34, 1)" }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"effects": {
|
|
36
|
+
"shadow": {
|
|
37
|
+
"$type": "shadow",
|
|
38
|
+
"$value": "0px 8px 24px rgba(25, 37, 36, 0.5)"
|
|
39
|
+
},
|
|
40
|
+
"glow": {
|
|
41
|
+
"$type": "shadow",
|
|
42
|
+
"$value": "0px 0px 28px rgba(231, 169, 164, 0.25)"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default darkTokens;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// src/themes/catalog/CherryByte/light.tokens.ts
|
|
2
|
+
const lightTokens = {
|
|
3
|
+
"$description": "Cherry Byte Light Theme — sensual, elegant, and emotionally evocative feminine palette inspired by rose light and electric bloom.",
|
|
4
|
+
"id": "cherryByte-light",
|
|
5
|
+
"extends": "global.tokens.json",
|
|
6
|
+
"color": {
|
|
7
|
+
"primary": { "$type": "color", "$value": "#d6336c" }, // Vibrant cherry pink
|
|
8
|
+
"secondary": { "$type": "color", "$value": "#a8457a" }, // Muted plum rose
|
|
9
|
+
"accent": { "$type": "color", "$value": "#ff80ab" }, // Luminous magenta accent
|
|
10
|
+
"icon": { "$type": "color", "$value": "#643b4c" },
|
|
11
|
+
"background": {
|
|
12
|
+
"default": { "$type": "color", "$value": "#f9f3f5" }, // Blush rose white
|
|
13
|
+
"paper": { "$type": "color", "$value": "#fffafb" }, // Ultra light rose
|
|
14
|
+
"nav": { "$type": "color", "$value": "#f2e3e8" } // Warm muted cherry
|
|
15
|
+
},
|
|
16
|
+
"textPrimary": { "$type": "color", "$value": "#381e29" },
|
|
17
|
+
"textSecondary": { "$type": "color", "$value": "#5c3a49" },
|
|
18
|
+
"link": { "$type": "color", "$value": "#c2185b" },
|
|
19
|
+
"linkVisited": { "$type": "color", "$value": "#9c1550" },
|
|
20
|
+
"border": { "$type": "color", "$value": "rgba(210, 120, 150, 0.25)" },
|
|
21
|
+
"section": {
|
|
22
|
+
"default": { "$type": "color", "$value": "#f8eef1" }, // Creamy cherry mist
|
|
23
|
+
"subtle": { "$type": "color", "$value": "#fff5f8" }, // Barely pink highlight
|
|
24
|
+
"strong": { "$type": "color", "$value": "#f0dde3" }, // Deeper rose canvas
|
|
25
|
+
"accent": { "$type": "color", "$value": "#ffd4e1" }, // Soft cherry accent glow
|
|
26
|
+
"highlight": { "$type": "color", "$value": "#ffe2ec" } // Radiant blush aura
|
|
27
|
+
},
|
|
28
|
+
"blur": {
|
|
29
|
+
"light": { "$type": "color", "$value": "rgba(255, 245, 248, 0.45)" },
|
|
30
|
+
"medium": { "$type": "color", "$value": "rgba(255, 240, 246, 0.65)" },
|
|
31
|
+
"heavy": { "$type": "color", "$value": "rgba(255, 230, 242, 0.85)" },
|
|
32
|
+
"all": { "$type": "color", "$value": "rgba(255, 225, 238, 1)" }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"effects": {
|
|
36
|
+
"shadow": {
|
|
37
|
+
"$type": "shadow",
|
|
38
|
+
"$value": "0px 6px 18px rgba(180, 70, 120, 0.15)"
|
|
39
|
+
},
|
|
40
|
+
"glow": {
|
|
41
|
+
"$type": "shadow",
|
|
42
|
+
"$value": "0px 0px 12px rgba(255, 128, 171, 0.25)"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export default lightTokens;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// src/themes/catalog/neurons/manifest.ts
|
|
2
|
+
import type { ThemeManifest } from '@/types/theme';
|
|
3
|
+
import badgeImage from './CherryByte.png';
|
|
4
|
+
import lightTokens from './light.tokens';
|
|
5
|
+
import darkTokens from './dark.tokens';
|
|
6
|
+
const cherryByteManifest: ThemeManifest = {
|
|
7
|
+
themeId: 'cherrybyte',
|
|
8
|
+
themeName: 'Cherry Byte',
|
|
9
|
+
description: 'Vibrant cherry red accents, designed to reduce eye strain.',
|
|
10
|
+
author: 'suiGn',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
license: 'MIT',
|
|
13
|
+
homepage: 'https://neurons.me/',
|
|
14
|
+
tags: ['official', 'default'],
|
|
15
|
+
createdAt: '2025-09-16T00:00:00.000Z',
|
|
16
|
+
updatedAt: '2025-09-16T00:00:00.000Z',
|
|
17
|
+
badgeUrl: badgeImage,
|
|
18
|
+
mode: {
|
|
19
|
+
light: lightTokens,
|
|
20
|
+
dark: darkTokens,
|
|
21
|
+
},
|
|
22
|
+
defaultMode: 'dark'
|
|
23
|
+
};
|
|
24
|
+
export default cherryByteManifest;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// src/themes/catalog/GhostShell/dark.tokens.ts
|
|
2
|
+
const darkTokens = {
|
|
3
|
+
"id": "LunaHex-dark",
|
|
4
|
+
"$description": "LunaHex Cyberpunk Dark — matrix-inspired neon aesthetic with ghostly green glows and deep cyber shadows.",
|
|
5
|
+
"color": {
|
|
6
|
+
"primary": { "$type": "color", "$value": "#00ff9f" },
|
|
7
|
+
"secondary": { "$type": "color", "$value": "#00e0ff" },
|
|
8
|
+
"icon": { "$type": "color", "$value": "#7fffd4" },
|
|
9
|
+
"background": {
|
|
10
|
+
"default": { "$type": "color", "$value": "#06080a" },
|
|
11
|
+
"paper": { "$type": "color", "$value": "#0b1014" },
|
|
12
|
+
"nav": { "$type": "color", "$value": "rgba(10,14,18,0.96)" }
|
|
13
|
+
},
|
|
14
|
+
"textPrimary": { "$type": "color", "$value": "#e0fff3" },
|
|
15
|
+
"textSecondary": { "$type": "color", "$value": "rgba(180,255,220,0.75)" },
|
|
16
|
+
"link": { "$type": "color", "$value": "#00ffc3" },
|
|
17
|
+
"linkVisited": { "$type": "color", "$value": "#00a8a8" },
|
|
18
|
+
"border": { "$type": "color", "$value": "rgba(0,255,160,0.25)" },
|
|
19
|
+
"section": {
|
|
20
|
+
"default": { "$type": "color", "$value": "#0a0f10" },
|
|
21
|
+
"subtle": { "$type": "color", "$value": "#0f1719" },
|
|
22
|
+
"strong": { "$type": "color", "$value": "#030506" }
|
|
23
|
+
},
|
|
24
|
+
"blur": {
|
|
25
|
+
"light": { "$type": "color", "$value": "rgba(2, 13, 7, 0.55)" },
|
|
26
|
+
"medium": { "$type": "color", "$value": "rgba(2, 13, 7, 0.69)" },
|
|
27
|
+
"heavy": { "$type": "color", "$value": "rgba(0, 9, 6, 0.89)" },
|
|
28
|
+
"all": { "$type": "color", "$value": "rgba(2, 25, 15, 1)" }
|
|
29
|
+
},
|
|
30
|
+
"accent": {
|
|
31
|
+
"glow": { "$type": "color", "$value": "#00ffcc" },
|
|
32
|
+
"pulse": { "$type": "color", "$value": "#00c3ff" }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"font": {
|
|
36
|
+
"family": {
|
|
37
|
+
"$type": "fontFamily",
|
|
38
|
+
"$value": "'Share Tech Mono', 'Poppins', monospace"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default darkTokens;
|
|
Binary file
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/themes/catalog/GhostShell/light.tokens.ts
|
|
2
|
+
const lightTokens = {
|
|
3
|
+
"id": "LunaHex-light",
|
|
4
|
+
"extends": "global.tokens.json",
|
|
5
|
+
"color": {
|
|
6
|
+
"primary": { "$type": "color", "$value": "#00c77f" },
|
|
7
|
+
"secondary": { "$type": "color", "$value": "#00b8ff" },
|
|
8
|
+
"icon": { "$type": "color", "$value": "#007f73" },
|
|
9
|
+
"default": { "$type": "color", "$value": "#f4f8f6" },
|
|
10
|
+
"paper": { "$type": "color", "$value": "#ffffff" },
|
|
11
|
+
"nav": { "$type": "color", "$value": "#f1fef9" },
|
|
12
|
+
"textPrimary": { "$type": "color", "$value": "#061a14" },
|
|
13
|
+
"textSecondary": { "$type": "color", "$value": "#34584f" },
|
|
14
|
+
"link": { "$type": "color", "$value": "#009f77" },
|
|
15
|
+
"linkVisited": { "$type": "color", "$value": "#007866" },
|
|
16
|
+
"border": { "$type": "color", "$value": "rgba(0,160,120,0.25)" },
|
|
17
|
+
"section": {
|
|
18
|
+
"default": { "$type": "color", "$value": "#e9fcf4" },
|
|
19
|
+
"subtle": { "$type": "color", "$value": "#f8fffb" },
|
|
20
|
+
"strong": { "$type": "color", "$value": "#d6f5ec" }
|
|
21
|
+
},
|
|
22
|
+
"blur": {
|
|
23
|
+
"light": { "$type": "color", "$value": "rgba(245, 255, 250, 0.7)" },
|
|
24
|
+
"medium": { "$type": "color", "$value": "rgba(240, 255, 250, 0.85)" },
|
|
25
|
+
"heavy": { "$type": "color", "$value": "rgba(235, 255, 250, 1)" },
|
|
26
|
+
"all": { "$type": "color", "$value": "rgba(230, 255, 245, 1)" }
|
|
27
|
+
},
|
|
28
|
+
"accent": {
|
|
29
|
+
"glow": { "$type": "color", "$value": "#00ffaa" },
|
|
30
|
+
"pulse": { "$type": "color", "$value": "#00d0ff" }
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"font": {
|
|
34
|
+
"body": { "$type": "font", "$value": "'Share Tech Mono', 'Nunito Sans', monospace" },
|
|
35
|
+
"heading": { "$type": "font", "$value": "'Poppins', sans-serif" }
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default lightTokens;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// src/themes/catalog/GhostShell/manifest.ts
|
|
2
|
+
import type { ThemeManifest } from '@/types/theme';
|
|
3
|
+
import badgeImage from './ghost.png';
|
|
4
|
+
import lightTokens from './light.tokens';
|
|
5
|
+
import darkTokens from './dark.tokens';
|
|
6
|
+
const ghostShellManifest: ThemeManifest = {
|
|
7
|
+
themeId: 'ghost.shell',
|
|
8
|
+
themeName: 'GhostShell',
|
|
9
|
+
description: 'A sleek, modern theme with a dark aesthetic, perfect for late-night sessions.',
|
|
10
|
+
author: 'suiGn',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
license: 'MIT',
|
|
13
|
+
homepage: 'https://neurons.me/',
|
|
14
|
+
tags: ['official', 'default'],
|
|
15
|
+
createdAt: '2025-09-16T00:00:00.000Z',
|
|
16
|
+
updatedAt: '2025-09-16T00:00:00.000Z',
|
|
17
|
+
badgeUrl: badgeImage,
|
|
18
|
+
mode: {
|
|
19
|
+
light: lightTokens,
|
|
20
|
+
dark: darkTokens,
|
|
21
|
+
},
|
|
22
|
+
defaultMode: 'dark'
|
|
23
|
+
};
|
|
24
|
+
export default ghostShellManifest;
|
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// src/themes/catalog/LunaHex/dark.tokens.ts
|
|
2
|
+
// Luna Hex Dark Theme Tokens — overrides applied on top of global.tokens.json
|
|
3
|
+
const darkTokens = {
|
|
4
|
+
"id": "LunaHex-dark",
|
|
5
|
+
"$description": "Luna Hex Dark Theme Tokens — mystical, elegant dark palette with lunar tones.",
|
|
6
|
+
"color": {
|
|
7
|
+
"primary": { "$type": "color", "$value": "#a692f4" }, // soft lavender glow
|
|
8
|
+
"secondary": { "$type": "color", "$value": "#f6a6de" }, // rose moonlight
|
|
9
|
+
"icon": { "$type": "color", "$value": "#cfc9ff" }, // silver-white icons
|
|
10
|
+
"background": {
|
|
11
|
+
"default": { "$type": "color", "$value": "#0f1016" }, // deep cosmic blue-black
|
|
12
|
+
"paper": { "$type": "color", "$value": "#171822" }, // subtle moon haze
|
|
13
|
+
"nav": { "$type": "color", "$value": "rgba(17,18,25,0.96)" } // translucent dark
|
|
14
|
+
},
|
|
15
|
+
"textPrimary": { "$type": "color", "$value": "#f2efff" },
|
|
16
|
+
"textSecondary": { "$type": "color", "$value": "rgba(230,228,255,0.7)" },
|
|
17
|
+
"link": { "$type": "color", "$value": "#b8a3ff" },
|
|
18
|
+
"linkVisited": { "$type": "color", "$value": "#9c87f2" },
|
|
19
|
+
"border": { "$type": "color", "$value": "rgba(160,160,200,0.25)" },
|
|
20
|
+
"section": {
|
|
21
|
+
"default": { "$type": "color", "$value": "#141421" },
|
|
22
|
+
"subtle": { "$type": "color", "$value": "#1a1a2a" },
|
|
23
|
+
"strong": { "$type": "color", "$value": "#0c0c15" }
|
|
24
|
+
},
|
|
25
|
+
"blur": {
|
|
26
|
+
"light": { "$type": "color", "$value": "rgba(18, 17, 28, 0.55)" },
|
|
27
|
+
"medium": { "$type": "color", "$value": "rgba(20, 19, 32, 0.69)" },
|
|
28
|
+
"heavy": { "$type": "color", "$value": "rgba(17, 16, 24, 0.89)" },
|
|
29
|
+
"all": { "$type": "color", "$value": "rgba(16, 15, 24, 1)" }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default darkTokens;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// src/themes/catalog/LunaHex/light.tokens.ts
|
|
2
|
+
const lightTokens = {
|
|
3
|
+
"$description": "Luna Hex Light Theme — part of This.GUI ecosystem",
|
|
4
|
+
"id": "LunaHex-light",
|
|
5
|
+
"extends": "global.tokens.json",
|
|
6
|
+
"color": {
|
|
7
|
+
"primary": {
|
|
8
|
+
"$type": "color",
|
|
9
|
+
"$value": "#6a4cc2"
|
|
10
|
+
},
|
|
11
|
+
"secondary": {
|
|
12
|
+
"$type": "color",
|
|
13
|
+
"$value": "#e08bcf"
|
|
14
|
+
},
|
|
15
|
+
"icon": {
|
|
16
|
+
"$type": "color",
|
|
17
|
+
"$value": "#9fa4b7"
|
|
18
|
+
},
|
|
19
|
+
"default": {
|
|
20
|
+
"$type": "color",
|
|
21
|
+
"$value": "#f4f5fa"
|
|
22
|
+
},
|
|
23
|
+
"paper": {
|
|
24
|
+
"$type": "color",
|
|
25
|
+
"$value": "#ffffff"
|
|
26
|
+
},
|
|
27
|
+
"nav": {
|
|
28
|
+
"$type": "color",
|
|
29
|
+
"$value": "#f9f9fb"
|
|
30
|
+
},
|
|
31
|
+
"textPrimary": {
|
|
32
|
+
"$type": "color",
|
|
33
|
+
"$value": "#2b244d"
|
|
34
|
+
},
|
|
35
|
+
"textSecondary": {
|
|
36
|
+
"$type": "color",
|
|
37
|
+
"$value": "#5c5470"
|
|
38
|
+
},
|
|
39
|
+
"link": {
|
|
40
|
+
"$type": "color",
|
|
41
|
+
"$value": "#a67be9"
|
|
42
|
+
},
|
|
43
|
+
"linkVisited": {
|
|
44
|
+
"$type": "color",
|
|
45
|
+
"$value": "#8b5be0"
|
|
46
|
+
},
|
|
47
|
+
"border": {
|
|
48
|
+
"$type": "color",
|
|
49
|
+
"$value": "rgba(160,160,190,0.2)"
|
|
50
|
+
},
|
|
51
|
+
"section": {
|
|
52
|
+
"default": {
|
|
53
|
+
"$type": "color",
|
|
54
|
+
"$value": "#f6f5ff"
|
|
55
|
+
},
|
|
56
|
+
"subtle": {
|
|
57
|
+
"$type": "color",
|
|
58
|
+
"$value": "#ffffff"
|
|
59
|
+
},
|
|
60
|
+
"strong": {
|
|
61
|
+
"$type": "color",
|
|
62
|
+
"$value": "#e9e6fa"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"blur": {
|
|
66
|
+
"light": { "$type": "color", "$value": "rgba(250, 245, 255, 0.34)" },
|
|
67
|
+
"medium": { "$type": "color", "$value": "rgba(245, 240, 255, 0.55)" },
|
|
68
|
+
"heavy": { "$type": "color", "$value": "rgba(240, 235, 255, 0.89)" },
|
|
69
|
+
"all": { "$type": "color", "$value": "rgba(235, 230, 255, 1)" }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export default lightTokens;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// src/themes/catalog/neurons/manifest.ts
|
|
2
|
+
import type { ThemeManifest } from '@/types/theme';
|
|
3
|
+
import badgeImage from './LunaHex.png';
|
|
4
|
+
import lightTokens from './light.tokens';
|
|
5
|
+
import darkTokens from './dark.tokens';
|
|
6
|
+
const lunaManifest: ThemeManifest = {
|
|
7
|
+
themeId: 'luna',
|
|
8
|
+
themeName: 'LunaHex',
|
|
9
|
+
description: 'Luna Hex theme with light and dark modes.',
|
|
10
|
+
author: 'suiGn',
|
|
11
|
+
version: '1.0.0',
|
|
12
|
+
license: 'MIT',
|
|
13
|
+
homepage: 'https://neurons.me/',
|
|
14
|
+
tags: ['official', 'default'],
|
|
15
|
+
createdAt: '2025-09-16T00:00:00.000Z',
|
|
16
|
+
updatedAt: '2025-09-16T00:00:00.000Z',
|
|
17
|
+
badgeUrl: badgeImage,
|
|
18
|
+
mode: {
|
|
19
|
+
light: lightTokens,
|
|
20
|
+
dark: darkTokens,
|
|
21
|
+
},
|
|
22
|
+
defaultMode: 'dark'
|
|
23
|
+
};
|
|
24
|
+
export default lunaManifest;
|
|
Binary file
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// src/themes/catalog/MUI/dark.tokens.ts
|
|
2
|
+
// MUI Dark Theme Tokens — overrides applied on top of global.tokens.json
|
|
3
|
+
const darkTokens = {
|
|
4
|
+
"id": "MUI-dark",
|
|
5
|
+
"$description": "MUI Dark Theme Tokens — overrides applied on top of global.tokens.json",
|
|
6
|
+
"color": {
|
|
7
|
+
"primary": {
|
|
8
|
+
"$type": "color",
|
|
9
|
+
"$value": "#90caf9"
|
|
10
|
+
},
|
|
11
|
+
"secondary": {
|
|
12
|
+
"$type": "color",
|
|
13
|
+
"$value": "#f48fb1"
|
|
14
|
+
},
|
|
15
|
+
"icon": {
|
|
16
|
+
"$type": "color",
|
|
17
|
+
"$value": "#a8a8a8"
|
|
18
|
+
},
|
|
19
|
+
"background": {
|
|
20
|
+
"default": { "$type": "color", "$value": "#121214" },
|
|
21
|
+
"paper": { "$type": "color", "$value": "#181a1c" },
|
|
22
|
+
"nav": { "$type": "color", "$value": "rgba(18,18,20,0.95)" }
|
|
23
|
+
},
|
|
24
|
+
"textPrimary": {
|
|
25
|
+
"$type": "color",
|
|
26
|
+
"$value": "#ffffff"
|
|
27
|
+
},
|
|
28
|
+
"textSecondary": {
|
|
29
|
+
"$type": "color",
|
|
30
|
+
"$value": "rgba(255,255,255,0.75)"
|
|
31
|
+
},
|
|
32
|
+
"link": {
|
|
33
|
+
"$type": "color",
|
|
34
|
+
"$value": "#00aa96"
|
|
35
|
+
},
|
|
36
|
+
"linkVisited": {
|
|
37
|
+
"$type": "color",
|
|
38
|
+
"$value": "#008278"
|
|
39
|
+
},
|
|
40
|
+
"border": {
|
|
41
|
+
"$type": "color",
|
|
42
|
+
"$value": "rgb(45,45,55)"
|
|
43
|
+
},
|
|
44
|
+
"section": {
|
|
45
|
+
"default": { "$type": "color", "$value": "#181818" },
|
|
46
|
+
"subtle": { "$type": "color", "$value": "#1c1c1c" },
|
|
47
|
+
"strong": { "$type": "color", "$value": "#222" }
|
|
48
|
+
},
|
|
49
|
+
"blur": {
|
|
50
|
+
"light": { "$type": "color", "$value": "rgba(18, 18, 20, 0.55)" },
|
|
51
|
+
"medium": { "$type": "color", "$value": "rgba(18, 18, 20, 0.69)" },
|
|
52
|
+
"heavy": { "$type": "color", "$value": "rgba(18, 18, 20, .89)" },
|
|
53
|
+
"all": { "$type": "color", "$value": "rgba(18, 18, 20, 1)" }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export default darkTokens;
|