A theme wrapper that provides VSCode CSS variables for browser environments (Storybook, demos, etc.).
When building VSCode extensions, components use CSS variables like --vscode-button-background that are provided by VSCode itself. This package simulates that environment for browser-based demos and development.
- Multiple VSCode theme presets (Dark+, Light+, Monokai, GitHub Dark, Solarized Dark)
- Theme switcher with dropdown selector
- Many VSCode CSS variables
- Lightweight with zero dependencies (except React peer deps)
- Saves the selected theme to localStorage, so it persists across page reloads
import { VSCodeThemeWrapper } from 'baukasten-ui-web-wrapper';
function App() {
return (
<VSCodeThemeWrapper>
{/* Your components that use VSCode CSS variables */}
<YourComponent />
</VSCodeThemeWrapper>
);
}// .storybook/preview.tsx
import { VSCodeThemeWrapper } from 'baukasten-ui-web-wrapper';
export const decorators = [
(Story) => (
<VSCodeThemeWrapper>
<Story />
</VSCodeThemeWrapper>
),
];defaultThemeId?: string- Initial theme ID (default: 'dark-plus')showThemeSelector?: boolean- Show/hide theme dropdown (default: true)
dark-plus- Dark+ (default dark)light-plus- Light+ (default light)monokai- Monokaigithub-dark- GitHub Darksolarized-dark- Solarized Dark
Each theme is defined in its own file in src/themes/ for easy maintenance and extension.
See the individual theme files in src/themes/ for the complete list of available variables.
To add a new theme:
- Create a new file in
src/themes/(e.g.,my-theme.ts) - Define your theme using the
VSCodeThemeinterface:
import { VSCodeTheme } from './types';
export const myTheme: VSCodeTheme = {
name: 'My Theme',
id: 'my-theme',
variables: {
'--vscode-editor-background': '#...',
'--vscode-editor-foreground': '#...',
// ... add all required variables
},
};- Export it in
src/themes/index.ts:
export { myTheme } from './my-theme';- Add it to the themes array:
export const themes: VSCodeTheme[] = [
darkPlus,
lightPlus,
myTheme, // Add your theme here
// ...
];MIT