@storybook/addon-themes 0.0.0-pr-23609-sha-f47ef339
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +72 -0
- package/dist/chunk-5PKFUQBM.mjs +3 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +7 -0
- package/dist/manager.d.ts +2 -0
- package/dist/manager.js +1 -0
- package/dist/manager.mjs +7 -0
- package/dist/preview.d.ts +5 -0
- package/dist/preview.js +1 -0
- package/dist/preview.mjs +5 -0
- package/jest.config.js +7 -0
- package/manager.js +1 -0
- package/package.json +117 -0
- package/preview.js +1 -0
package/README.md
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# `@storybook/addon-themes
|
2
|
+
|
3
|
+
Storybook Addon Themes can be used which between multiple themes for components inside the preview in [Storybook](https://storybook.js.org).
|
4
|
+
|
5
|
+
![React Storybook Screenshot](https://user-images.githubusercontent.com/42671/98158421-dada2300-1ea8-11eb-8619-af1e7018e1ec.png)
|
6
|
+
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
Requires Storybook 7.0 or later. Themes is part of [essentials](https://storybook.js.org/docs/react/essentials/introduction) and so is installed in all new Storybooks by default. If you need to add it to your Storybook, you can run:
|
10
|
+
|
11
|
+
```sh
|
12
|
+
npm i -D @storybook/addon-themes
|
13
|
+
```
|
14
|
+
|
15
|
+
Then, add following content to [`.storybook/main.js`](https://storybook.js.org/docs/react/configure/overview#configure-your-storybook-project):
|
16
|
+
|
17
|
+
```js
|
18
|
+
export default {
|
19
|
+
addons: ['@storybook/addon-themes'],
|
20
|
+
};
|
21
|
+
```
|
22
|
+
|
23
|
+
### 👇 Tool specific configuration
|
24
|
+
|
25
|
+
For tool-specific setup, check out the recipes below
|
26
|
+
|
27
|
+
- [`@emotion/styled`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/emotion.md)
|
28
|
+
- [`@mui/material`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/material-ui.md)
|
29
|
+
- [`bootstrap`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/bootstrap.md)
|
30
|
+
- [`styled-components`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/styled-components.md)
|
31
|
+
- [`tailwind`](https://github.com/storybookjs/storybook/tree/next/code/addons/themes/docs/getting-started/tailwind.md)
|
32
|
+
- [`vuetify@3.x`](https://github.com/storybookjs/storybook/blob/next/code/addons/themes/docs/api.md#writing-a-custom-decorator)
|
33
|
+
|
34
|
+
Don't see your favorite tool listed? Don't worry! That doesn't mean this addon isn't for you. Check out the ["Writing a custom decorator"](https://github.com/storybookjs/storybook/blob/next/code/addons/themes/docs/api.md#writing-a-custom-decorator) section of the [api reference](https://github.com/storybookjs/storybook/blob/next/code/addons/themes/docs/api.md).
|
35
|
+
|
36
|
+
### ❗️ Overriding theme
|
37
|
+
|
38
|
+
If you want to override your theme for a particular component or story, you can use the `themes.themeOverride` parameter.
|
39
|
+
|
40
|
+
```js
|
41
|
+
import React from 'react';
|
42
|
+
import { Button } from './Button';
|
43
|
+
|
44
|
+
export default {
|
45
|
+
title: 'Example/Button',
|
46
|
+
component: Button,
|
47
|
+
parameters: {
|
48
|
+
themes: {
|
49
|
+
themeOverride: 'light', // component level override
|
50
|
+
},
|
51
|
+
},
|
52
|
+
};
|
53
|
+
|
54
|
+
export const Primary = {
|
55
|
+
args: {
|
56
|
+
primary: true,
|
57
|
+
label: 'Button',
|
58
|
+
},
|
59
|
+
};
|
60
|
+
|
61
|
+
export const PrimaryDark = {
|
62
|
+
args: {
|
63
|
+
primary: true,
|
64
|
+
label: 'Button',
|
65
|
+
},
|
66
|
+
parameters: {
|
67
|
+
themes: {
|
68
|
+
themeOverride: 'dark', // Story level override
|
69
|
+
},
|
70
|
+
},
|
71
|
+
};
|
72
|
+
```
|
@@ -0,0 +1,3 @@
|
|
1
|
+
var __defProp=Object.defineProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0});};var PARAM_KEY="themes",ADDON_ID=`storybook/${PARAM_KEY}}`,GLOBAL_KEY="theme",THEME_SWITCHER_ID=`${ADDON_ID}/theme-switcher`,DEFAULT_ADDON_STATE={themesList:[],themeDefault:void 0},DEFAULT_THEME_PARAMETERS={},THEMING_EVENTS={REGISTER_THEMES:`${ADDON_ID}/REGISTER_THEMES`};
|
2
|
+
|
3
|
+
export { ADDON_ID, DEFAULT_ADDON_STATE, DEFAULT_THEME_PARAMETERS, GLOBAL_KEY, PARAM_KEY, THEME_SWITCHER_ID, THEMING_EVENTS, __export };
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
import { Renderer, DecoratorFunction, StoryContext } from '@storybook/types';
|
2
|
+
|
3
|
+
interface ClassNameStrategyConfiguration {
|
4
|
+
themes: Record<string, string>;
|
5
|
+
defaultTheme: string;
|
6
|
+
parentSelector?: string;
|
7
|
+
}
|
8
|
+
declare const withThemeByClassName: <TRenderer extends Renderer = Renderer>({ themes, defaultTheme, parentSelector, }: ClassNameStrategyConfiguration) => DecoratorFunction<TRenderer>;
|
9
|
+
|
10
|
+
interface DataAttributeStrategyConfiguration {
|
11
|
+
themes: Record<string, string>;
|
12
|
+
defaultTheme: string;
|
13
|
+
parentSelector?: string;
|
14
|
+
attributeName?: string;
|
15
|
+
}
|
16
|
+
declare const withThemeByDataAttribute: <TRenderer extends Renderer = Renderer>({ themes, defaultTheme, parentSelector, attributeName, }: DataAttributeStrategyConfiguration) => DecoratorFunction<TRenderer>;
|
17
|
+
|
18
|
+
type Theme = Record<string, any>;
|
19
|
+
type ThemeMap = Record<string, Theme>;
|
20
|
+
interface ProviderStrategyConfiguration {
|
21
|
+
Provider?: any;
|
22
|
+
GlobalStyles?: any;
|
23
|
+
defaultTheme?: string;
|
24
|
+
themes?: ThemeMap;
|
25
|
+
}
|
26
|
+
declare const withThemeFromJSXProvider: <TRenderer extends Renderer = Renderer>({ Provider, GlobalStyles, defaultTheme, themes, }: ProviderStrategyConfiguration) => DecoratorFunction<TRenderer>;
|
27
|
+
|
28
|
+
interface ThemeParameters {
|
29
|
+
themeOverride?: string;
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
*
|
34
|
+
* @param StoryContext
|
35
|
+
* @returns The global theme name set for your stories
|
36
|
+
*/
|
37
|
+
declare function pluckThemeFromContext({ globals }: StoryContext): string;
|
38
|
+
declare function useThemeParameters(): ThemeParameters;
|
39
|
+
declare function initializeThemeState(themeNames: string[], defaultTheme: string): void;
|
40
|
+
|
41
|
+
declare const helpers_initializeThemeState: typeof initializeThemeState;
|
42
|
+
declare const helpers_pluckThemeFromContext: typeof pluckThemeFromContext;
|
43
|
+
declare const helpers_useThemeParameters: typeof useThemeParameters;
|
44
|
+
declare namespace helpers {
|
45
|
+
export {
|
46
|
+
helpers_initializeThemeState as initializeThemeState,
|
47
|
+
helpers_pluckThemeFromContext as pluckThemeFromContext,
|
48
|
+
helpers_useThemeParameters as useThemeParameters,
|
49
|
+
};
|
50
|
+
}
|
51
|
+
|
52
|
+
declare const _default: {};
|
53
|
+
|
54
|
+
export { ClassNameStrategyConfiguration, DataAttributeStrategyConfiguration, helpers as DecoratorHelpers, ProviderStrategyConfiguration, _default as default, withThemeByClassName, withThemeByDataAttribute, withThemeFromJSXProvider };
|
package/dist/index.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var src_exports={};__export(src_exports,{DecoratorHelpers:()=>helpers_exports,default:()=>src_default,withThemeByClassName:()=>withThemeByClassName,withThemeByDataAttribute:()=>withThemeByDataAttribute,withThemeFromJSXProvider:()=>withThemeFromJSXProvider});module.exports=__toCommonJS(src_exports);var import_preview_api2=require("@storybook/preview-api");var helpers_exports={};__export(helpers_exports,{initializeThemeState:()=>initializeThemeState,pluckThemeFromContext:()=>pluckThemeFromContext,useThemeParameters:()=>useThemeParameters});var import_preview_api=require("@storybook/preview-api");var PARAM_KEY="themes",ADDON_ID=`storybook/${PARAM_KEY}}`,GLOBAL_KEY="theme",THEME_SWITCHER_ID=`${ADDON_ID}/theme-switcher`;var DEFAULT_THEME_PARAMETERS={},THEMING_EVENTS={REGISTER_THEMES:`${ADDON_ID}/REGISTER_THEMES`};function pluckThemeFromContext({globals}){return globals[GLOBAL_KEY]||""}function useThemeParameters(){return(0,import_preview_api.useParameter)(PARAM_KEY,DEFAULT_THEME_PARAMETERS)}function initializeThemeState(themeNames,defaultTheme){import_preview_api.addons.getChannel().emit(THEMING_EVENTS.REGISTER_THEMES,{defaultTheme,themes:themeNames})}var DEFAULT_ELEMENT_SELECTOR="html",classStringToArray=classString=>classString.split(" ").filter(Boolean),withThemeByClassName=({themes,defaultTheme,parentSelector=DEFAULT_ELEMENT_SELECTOR})=>(initializeThemeState(Object.keys(themes),defaultTheme),(storyFn,context)=>{let{themeOverride}=useThemeParameters(),selected=pluckThemeFromContext(context);return(0,import_preview_api2.useEffect)(()=>{let selectedThemeName=themeOverride||selected||defaultTheme,parentElement=document.querySelector(parentSelector);if(!parentElement)return;Object.entries(themes).filter(([themeName])=>themeName!==selectedThemeName).forEach(([themeName,className])=>{let classes=classStringToArray(className);classes.length>0&&parentElement.classList.remove(...classes)});let newThemeClasses=classStringToArray(themes[selectedThemeName]);newThemeClasses.length>0&&parentElement.classList.add(...newThemeClasses)},[themeOverride,selected,parentSelector]),storyFn()});var import_preview_api3=require("@storybook/preview-api");var DEFAULT_ELEMENT_SELECTOR2="html",DEFAULT_DATA_ATTRIBUTE="data-theme",withThemeByDataAttribute=({themes,defaultTheme,parentSelector=DEFAULT_ELEMENT_SELECTOR2,attributeName=DEFAULT_DATA_ATTRIBUTE})=>(initializeThemeState(Object.keys(themes),defaultTheme),(storyFn,context)=>{let{themeOverride}=useThemeParameters(),selected=pluckThemeFromContext(context);return(0,import_preview_api3.useEffect)(()=>{let parentElement=document.querySelector(parentSelector),themeKey=themeOverride||selected||defaultTheme;parentElement&&parentElement.setAttribute(attributeName,themes[themeKey])},[themeOverride,selected,parentSelector,attributeName]),storyFn()});var import_react=__toESM(require("react")),import_preview_api4=require("@storybook/preview-api");var pluckThemeFromKeyPairTuple=([_,themeConfig])=>themeConfig,withThemeFromJSXProvider=({Provider,GlobalStyles,defaultTheme,themes={}})=>{let themeNames=Object.keys(themes),initialTheme=defaultTheme||themeNames[0];return initializeThemeState(themeNames,initialTheme),(storyFn,context)=>{let{themeOverride}=useThemeParameters(),selected=pluckThemeFromContext(context),theme=(0,import_preview_api4.useMemo)(()=>{let selectedThemeName=themeOverride||selected||initialTheme,pairs=Object.entries(themes);return pairs.length===1?pluckThemeFromKeyPairTuple(pairs[0]):themes[selectedThemeName]},[themes,selected,themeOverride]);return Provider?import_react.default.createElement(Provider,{theme},GlobalStyles&&import_react.default.createElement(GlobalStyles,null),storyFn()):import_react.default.createElement(import_react.default.Fragment,null,GlobalStyles&&import_react.default.createElement(GlobalStyles,null),storyFn())}};var src_default={};0&&(module.exports={DecoratorHelpers,withThemeByClassName,withThemeByDataAttribute,withThemeFromJSXProvider});
|
package/dist/index.mjs
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
import { __export, GLOBAL_KEY, PARAM_KEY, DEFAULT_THEME_PARAMETERS, THEMING_EVENTS } from './chunk-5PKFUQBM.mjs';
|
2
|
+
import { useParameter, addons, useEffect, useMemo } from '@storybook/preview-api';
|
3
|
+
import React from 'react';
|
4
|
+
|
5
|
+
var helpers_exports={};__export(helpers_exports,{initializeThemeState:()=>initializeThemeState,pluckThemeFromContext:()=>pluckThemeFromContext,useThemeParameters:()=>useThemeParameters});function pluckThemeFromContext({globals}){return globals[GLOBAL_KEY]||""}function useThemeParameters(){return useParameter(PARAM_KEY,DEFAULT_THEME_PARAMETERS)}function initializeThemeState(themeNames,defaultTheme){addons.getChannel().emit(THEMING_EVENTS.REGISTER_THEMES,{defaultTheme,themes:themeNames});}var DEFAULT_ELEMENT_SELECTOR="html",classStringToArray=classString=>classString.split(" ").filter(Boolean),withThemeByClassName=({themes,defaultTheme,parentSelector=DEFAULT_ELEMENT_SELECTOR})=>(initializeThemeState(Object.keys(themes),defaultTheme),(storyFn,context)=>{let{themeOverride}=useThemeParameters(),selected=pluckThemeFromContext(context);return useEffect(()=>{let selectedThemeName=themeOverride||selected||defaultTheme,parentElement=document.querySelector(parentSelector);if(!parentElement)return;Object.entries(themes).filter(([themeName])=>themeName!==selectedThemeName).forEach(([themeName,className])=>{let classes=classStringToArray(className);classes.length>0&&parentElement.classList.remove(...classes);});let newThemeClasses=classStringToArray(themes[selectedThemeName]);newThemeClasses.length>0&&parentElement.classList.add(...newThemeClasses);},[themeOverride,selected,parentSelector]),storyFn()});var DEFAULT_ELEMENT_SELECTOR2="html",DEFAULT_DATA_ATTRIBUTE="data-theme",withThemeByDataAttribute=({themes,defaultTheme,parentSelector=DEFAULT_ELEMENT_SELECTOR2,attributeName=DEFAULT_DATA_ATTRIBUTE})=>(initializeThemeState(Object.keys(themes),defaultTheme),(storyFn,context)=>{let{themeOverride}=useThemeParameters(),selected=pluckThemeFromContext(context);return useEffect(()=>{let parentElement=document.querySelector(parentSelector),themeKey=themeOverride||selected||defaultTheme;parentElement&&parentElement.setAttribute(attributeName,themes[themeKey]);},[themeOverride,selected,parentSelector,attributeName]),storyFn()});var pluckThemeFromKeyPairTuple=([_,themeConfig])=>themeConfig,withThemeFromJSXProvider=({Provider,GlobalStyles,defaultTheme,themes={}})=>{let themeNames=Object.keys(themes),initialTheme=defaultTheme||themeNames[0];return initializeThemeState(themeNames,initialTheme),(storyFn,context)=>{let{themeOverride}=useThemeParameters(),selected=pluckThemeFromContext(context),theme=useMemo(()=>{let selectedThemeName=themeOverride||selected||initialTheme,pairs=Object.entries(themes);return pairs.length===1?pluckThemeFromKeyPairTuple(pairs[0]):themes[selectedThemeName]},[themes,selected,themeOverride]);return Provider?React.createElement(Provider,{theme},GlobalStyles&&React.createElement(GlobalStyles,null),storyFn()):React.createElement(React.Fragment,null,GlobalStyles&&React.createElement(GlobalStyles,null),storyFn())}};var src_default={};
|
6
|
+
|
7
|
+
export { helpers_exports as DecoratorHelpers, src_default as default, withThemeByClassName, withThemeByDataAttribute, withThemeFromJSXProvider };
|
package/dist/manager.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var import_manager_api2=require("@storybook/manager-api");var PARAM_KEY="themes",ADDON_ID=`storybook/${PARAM_KEY}}`;var THEME_SWITCHER_ID=`${ADDON_ID}/theme-switcher`,DEFAULT_ADDON_STATE={themesList:[],themeDefault:void 0},DEFAULT_THEME_PARAMETERS={},THEMING_EVENTS={REGISTER_THEMES:`${ADDON_ID}/REGISTER_THEMES`};var import_react=__toESM(require("react")),import_manager_api=require("@storybook/manager-api"),import_theming=require("@storybook/theming"),import_components=require("@storybook/components");var IconButtonLabel=import_theming.styled.div(({theme})=>({fontSize:theme.typography.size.s2-1,marginLeft:10})),hasMultipleThemes=themesList=>themesList.length>1,ThemeSwitcher=()=>{let{themeOverride}=(0,import_manager_api.useParameter)(PARAM_KEY,DEFAULT_THEME_PARAMETERS),[{theme:selected},updateGlobals]=(0,import_manager_api.useGlobals)(),[{themesList,themeDefault},updateState]=(0,import_manager_api.useAddonState)(THEME_SWITCHER_ID,DEFAULT_ADDON_STATE);(0,import_manager_api.useChannel)({[THEMING_EVENTS.REGISTER_THEMES]:({themes,defaultTheme})=>{updateState(state=>({...state,themesList:themes,themeDefault:defaultTheme}))}});let label=(0,import_react.useMemo)(()=>{if(themeOverride)return import_react.default.createElement(import_react.default.Fragment,null,"Story override");let themeName=selected||themeDefault;return themeName&&import_react.default.createElement(import_react.default.Fragment,null,`${themeName} theme`)},[themeOverride,themeDefault,selected]);return hasMultipleThemes(themesList)?import_react.default.createElement(import_react.Fragment,null,import_react.default.createElement(import_components.WithTooltip,{placement:"top",trigger:"click",closeOnClick:!0,tooltip:({onHide})=>import_react.default.createElement(import_components.TooltipLinkList,{links:themesList.map(theme=>({id:theme,title:theme,active:selected===theme,onClick:()=>{updateGlobals({theme}),onHide()}}))})},import_react.default.createElement(import_components.IconButton,{key:THEME_SWITCHER_ID,active:!themeOverride,title:"Theme"},import_react.default.createElement(import_components.Icons,{icon:"paintbrush"}),label&&import_react.default.createElement(IconButtonLabel,null,label)))):null};import_manager_api2.addons.register(ADDON_ID,()=>{import_manager_api2.addons.add(THEME_SWITCHER_ID,{title:"Themes",type:import_manager_api2.types.TOOL,match:({viewMode})=>!!(viewMode&&viewMode.match(/^(story|docs)$/)),render:ThemeSwitcher,paramKey:PARAM_KEY})});
|
package/dist/manager.mjs
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
import { ADDON_ID, THEME_SWITCHER_ID, PARAM_KEY, DEFAULT_THEME_PARAMETERS, DEFAULT_ADDON_STATE, THEMING_EVENTS } from './chunk-5PKFUQBM.mjs';
|
2
|
+
import { addons, types, useParameter, useGlobals, useAddonState, useChannel } from '@storybook/manager-api';
|
3
|
+
import React, { useMemo, Fragment } from 'react';
|
4
|
+
import { styled } from '@storybook/theming';
|
5
|
+
import { WithTooltip, TooltipLinkList, IconButton, Icons } from '@storybook/components';
|
6
|
+
|
7
|
+
var IconButtonLabel=styled.div(({theme})=>({fontSize:theme.typography.size.s2-1,marginLeft:10})),hasMultipleThemes=themesList=>themesList.length>1,ThemeSwitcher=()=>{let{themeOverride}=useParameter(PARAM_KEY,DEFAULT_THEME_PARAMETERS),[{theme:selected},updateGlobals]=useGlobals(),[{themesList,themeDefault},updateState]=useAddonState(THEME_SWITCHER_ID,DEFAULT_ADDON_STATE);useChannel({[THEMING_EVENTS.REGISTER_THEMES]:({themes,defaultTheme})=>{updateState(state=>({...state,themesList:themes,themeDefault:defaultTheme}));}});let label=useMemo(()=>{if(themeOverride)return React.createElement(React.Fragment,null,"Story override");let themeName=selected||themeDefault;return themeName&&React.createElement(React.Fragment,null,`${themeName} theme`)},[themeOverride,themeDefault,selected]);return hasMultipleThemes(themesList)?React.createElement(Fragment,null,React.createElement(WithTooltip,{placement:"top",trigger:"click",closeOnClick:!0,tooltip:({onHide})=>React.createElement(TooltipLinkList,{links:themesList.map(theme=>({id:theme,title:theme,active:selected===theme,onClick:()=>{updateGlobals({theme}),onHide();}}))})},React.createElement(IconButton,{key:THEME_SWITCHER_ID,active:!themeOverride,title:"Theme"},React.createElement(Icons,{icon:"paintbrush"}),label&&React.createElement(IconButtonLabel,null,label)))):null};addons.register(ADDON_ID,()=>{addons.add(THEME_SWITCHER_ID,{title:"Themes",type:types.TOOL,match:({viewMode})=>!!(viewMode&&viewMode.match(/^(story|docs)$/)),render:ThemeSwitcher,paramKey:PARAM_KEY});});
|
package/dist/preview.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var preview_exports={};__export(preview_exports,{default:()=>preview_default});module.exports=__toCommonJS(preview_exports);var PARAM_KEY="themes",ADDON_ID=`storybook/${PARAM_KEY}}`,GLOBAL_KEY="theme",THEME_SWITCHER_ID=`${ADDON_ID}/theme-switcher`;var THEMING_EVENTS={REGISTER_THEMES:`${ADDON_ID}/REGISTER_THEMES`};var preview={globals:{[GLOBAL_KEY]:""}},preview_default=preview;
|
package/dist/preview.mjs
ADDED
package/jest.config.js
ADDED
package/manager.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
import './dist/manager';
|
package/package.json
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
{
|
2
|
+
"name": "@storybook/addon-themes",
|
3
|
+
"version": "0.0.0-pr-23609-sha-f47ef339",
|
4
|
+
"description": "Switch between multiple themes for you components in Storybook",
|
5
|
+
"keywords": [
|
6
|
+
"css",
|
7
|
+
"essentials",
|
8
|
+
"storybook-addon",
|
9
|
+
"storybook-addons",
|
10
|
+
"style",
|
11
|
+
"themes",
|
12
|
+
"toggle"
|
13
|
+
],
|
14
|
+
"homepage": "https://github.com/storybookjs/storybook/tree/next/code/addons/themes",
|
15
|
+
"bugs": {
|
16
|
+
"url": "https://github.com/storybookjs/storybook/issues"
|
17
|
+
},
|
18
|
+
"repository": {
|
19
|
+
"type": "git",
|
20
|
+
"url": "https://github.com/storybookjs/storybook.git",
|
21
|
+
"directory": "code/addons/themes"
|
22
|
+
},
|
23
|
+
"funding": {
|
24
|
+
"type": "opencollective",
|
25
|
+
"url": "https://opencollective.com/storybook"
|
26
|
+
},
|
27
|
+
"license": "MIT",
|
28
|
+
"author": "Shaun Evening",
|
29
|
+
"exports": {
|
30
|
+
".": {
|
31
|
+
"types": "./dist/index.d.ts",
|
32
|
+
"node": "./dist/index.js",
|
33
|
+
"require": "./dist/index.js",
|
34
|
+
"import": "./dist/index.mjs"
|
35
|
+
},
|
36
|
+
"./manager": {
|
37
|
+
"types": "./dist/manager.d.ts",
|
38
|
+
"require": "./dist/manager.js",
|
39
|
+
"import": "./dist/manager.mjs"
|
40
|
+
},
|
41
|
+
"./preview": {
|
42
|
+
"types": "./dist/preview.d.ts",
|
43
|
+
"require": "./dist/preview.js",
|
44
|
+
"import": "./dist/preview.mjs"
|
45
|
+
},
|
46
|
+
"./package.json": "./package.json"
|
47
|
+
},
|
48
|
+
"main": "dist/index.js",
|
49
|
+
"module": "dist/index.mjs",
|
50
|
+
"types": "dist/index.d.ts",
|
51
|
+
"typesVersions": {
|
52
|
+
"*": {
|
53
|
+
"*": [
|
54
|
+
"dist/index.d.ts"
|
55
|
+
],
|
56
|
+
"manager": [
|
57
|
+
"dist/manager.d.ts"
|
58
|
+
],
|
59
|
+
"preview": [
|
60
|
+
"dist/preview.d.ts"
|
61
|
+
]
|
62
|
+
}
|
63
|
+
},
|
64
|
+
"files": [
|
65
|
+
"dist/**/*",
|
66
|
+
"README.md",
|
67
|
+
"*.js",
|
68
|
+
"*.d.ts"
|
69
|
+
],
|
70
|
+
"scripts": {
|
71
|
+
"check": "../../../scripts/prepare/check.ts",
|
72
|
+
"prep": "../../../scripts/prepare/bundle.ts"
|
73
|
+
},
|
74
|
+
"dependencies": {
|
75
|
+
"@storybook/client-logger": "0.0.0-pr-23609-sha-f47ef339",
|
76
|
+
"@storybook/components": "0.0.0-pr-23609-sha-f47ef339",
|
77
|
+
"@storybook/core-events": "0.0.0-pr-23609-sha-f47ef339",
|
78
|
+
"@storybook/manager-api": "0.0.0-pr-23609-sha-f47ef339",
|
79
|
+
"@storybook/preview-api": "0.0.0-pr-23609-sha-f47ef339",
|
80
|
+
"@storybook/theming": "0.0.0-pr-23609-sha-f47ef339",
|
81
|
+
"@storybook/types": "0.0.0-pr-23609-sha-f47ef339",
|
82
|
+
"ts-dedent": "^2.0.0"
|
83
|
+
},
|
84
|
+
"devDependencies": {
|
85
|
+
"typescript": "~4.9.3"
|
86
|
+
},
|
87
|
+
"peerDependencies": {
|
88
|
+
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
89
|
+
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
90
|
+
},
|
91
|
+
"peerDependenciesMeta": {
|
92
|
+
"react": {
|
93
|
+
"optional": true
|
94
|
+
},
|
95
|
+
"react-dom": {
|
96
|
+
"optional": true
|
97
|
+
}
|
98
|
+
},
|
99
|
+
"publishConfig": {
|
100
|
+
"access": "public"
|
101
|
+
},
|
102
|
+
"bundler": {
|
103
|
+
"entries": [
|
104
|
+
"./src/index.ts",
|
105
|
+
"./src/manager.tsx",
|
106
|
+
"./src/preview.tsx"
|
107
|
+
]
|
108
|
+
},
|
109
|
+
"gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17",
|
110
|
+
"storybook": {
|
111
|
+
"displayName": "Themes",
|
112
|
+
"unsupportedFrameworks": [
|
113
|
+
"react-native"
|
114
|
+
],
|
115
|
+
"icon": ""
|
116
|
+
}
|
117
|
+
}
|
package/preview.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export * from './dist/preview';
|