Storybook 附加组件 Material-UI
提供帮助创建 Material-UI 组件 的开发环境。这是 React Storybook 的附加组件,它将您的组件包装在 MuiThemeProvider 中。这加速并简化了基于 Material-UI 的应用程序的 开发 流程。
您可以使用 项目的演示页面 来发现任何组件的 Material-UI 主题设置
并在线创建您自己的新主题
。但是要充分利用这个项目,请在您的工作环境中 本地运行 它。
特性
- 包装在主题提供者中。只需使用基本浅色主题开始开发。
- 注入 TapEvent 插件。在移动设备上测试。
- 切换主题。一键查看效果。
- 创建自定义主题。通过代码或在可视化编辑器中。
- 动态可视化主题编辑。探索所有可用的主题属性。
- Google 材质颜色 调色板 选择器
- 保存所做的更改并下载到 JSON 文件中
- 是 React Theming 的一部分。创建可主题化的 React 组件。
- 适用于 Storybook 3.0
快速入门
为了快速开始使用最新的 storybook-addon-material-ui
,您可以查看 create-material-ui-app
它包含了与以下内容一起工作的设置
- create-react-app
- Storybook
- Material-UI
- storybook-addon-material-ui
入门
首先,安装附加组件
npm i storybook-addon-material-ui --save-dev
Storybook 6.1
将 storybook-addon-material-ui
添加到 storybook 附加组件中
//.storybook/main.js
module.exports = {
stories: ['../stories/**/*.stories.(js|mdx)'],
addons: [
'storybook-addon-material-ui'
],
};
将装饰器添加到 storybook 预览中
//.storybook/preview.js
import { muiTheme } from 'storybook-addon-material-ui'
export const decorators = [
muiTheme()
];
注意:您可以在加载的主题之间切换。默认情况下,您有两个基本主题,但您可以像这样简单地添加自定义主题
//.storybook/preview.js
import { muiTheme } from 'storybook-addon-material-ui'
// Create your own theme like this.
// Note: you can specify theme name in `themeName` field. Otherwise it will be displayed by the number.
// you can specify only required fields overriding the `Light Base Theme`
const newTheme = {
themeName: 'Grey Theme',
palette: {
primary1Color: '#00bcd4',
alternateTextColor: '#4a4a4a',
canvasColor: '#616161',
textColor: '#bdbdbd',
secondaryTextColor: 'rgba(255, 255, 255, 0.54)',
disabledColor: '#757575',
accent1Color: '#607d8b',
},
};
export const decorators = [
muiTheme([newTheme])
];
甚至从其他地方导入
//.storybook/preview.js
import { muiTheme } from 'storybook-addon-material-ui'
import theme1 from './src/theme/theme1'
import theme2 from './src/theme/theme2'
export const decorators = [
muiTheme([theme1, theme2])
];
Storybook 5(以及旧版本)
现在,使用 Material-UI 附加组件编写您的故事。默认情况下,您的故事将使用 Light Base Theme
和 Dark Base Theme
import React from 'react';
import { storiesOf, addDecorator } from '@storybook/react';
import {muiTheme} from 'storybook-addon-material-ui';
// Import some examples from react-theming https://github.com/react-theming/react-theme-provider/blob/master/example/
import CardExampleControlled from '../CardExampleControlled.jsx';
import RaisedButtonExampleSimple from '../RaisedButtonExampleSimple.jsx';
import DatePickerExampleSimple from '../DatePickerExampleSimple.jsx';
storiesOf('Material-UI', module)
// Add the `muiTheme` decorator to provide material-ui support to your stories.
// If you do not specify any arguments it starts with two default themes
// You can also configure `muiTheme` as a global decorator.
.addDecorator(muiTheme())
.add('Card Example Controlled', () => (
<CardExampleControlled />
))
.add('Raised Button Example Simple', () => (
<RaisedButtonExampleSimple />
))
.add('Date Picker Example Simple', () => (
<DatePickerExampleSimple />
));
注意:您可以在加载的主题之间切换。默认情况下,您有两个基本主题,但您可以像这样简单地添加自定义主题
import React from 'react';
import { storiesOf, addDecorator } from '@storybook/react';
import {muiTheme} from 'storybook-addon-material-ui';
import CardExampleControlled from '../CardExampleControlled.jsx';
import RaisedButtonExampleSimple from '../RaisedButtonExampleSimple.jsx';
import DatePickerExampleSimple from '../DatePickerExampleSimple.jsx';
// Create your own theme like this.
// Note: you can specify theme name in `themeName` field. Otherwise it will be displayed by the number.
// you can specify only required fields overriding the `Light Base Theme`
const newTheme = {
themeName: 'Grey Theme',
palette: {
primary1Color: '#00bcd4',
alternateTextColor: '#4a4a4a',
canvasColor: '#616161',
textColor: '#bdbdbd',
secondaryTextColor: 'rgba(255, 255, 255, 0.54)',
disabledColor: '#757575',
accent1Color: '#607d8b',
},
};
storiesOf('Material-UI', module)
.addDecorator(muiTheme([newTheme]))
.add('Card Example Controlled', () => (
<CardExampleControlled />
))
.add('Raised Button Example Simple', () => (
<RaisedButtonExampleSimple />
))
.add('Date Picker Example Simple', () => (
<DatePickerExampleSimple />
));
反馈
您可以通过匿名的 调查 表达您对这个项目的意见。
查询字符串参数
当您选择主题和其他选项时,它们会存储在地址栏中。因此,当您刷新页面时,此状态将保留,并且您可以使用直接链接访问所需的状态。
https://127.0.0.1:9001/?theme-ind=0&theme-sidebar=true&theme-full=true
贡献
开发者
我们的团队欢迎所有贡献、测试和错误修复。如果您想帮助为项目做出贡献,请随时创建问题、PR 或与我联系。
设计师
我们非常欢迎设计师参与这个项目。我们非常想知道您对使用这个工具的意见,设计师和开发者协作的可能性,以及它的外观和功能。