如何在Storybook中为Material UI设置主题

阿西夫·卡巴尼(Asif Kabani)

当前,这是我正在做的,ThemeProvider在我的组件文件上方传递

import React from 'react';
import { ThemeProvider, createMuiTheme } from '@material-ui/core/styles';
import MUIButton from '@material-ui/core/Button';

const theme = createMuiTheme({
  palette: {
    primary: {
      main: "#ff0000"
    }
  },
  typography: {
    fontFamily: 'Nunito Sans, sans-serif',
    button: {
      textTransform: 'none'
    }
  },
  shape: {
    borderRadius: 3
  }
})


export default ({ variant, children }) => {
  return (
    <ThemeProvider theme={theme}>
      <MUIButton
        color="primary"
        variant={variant}
      >
        {children}
      </MUIButton>
    </ThemeProvider>
  )
}

我正在尝试找出如何在Storybook的全球范围内做到这一点。这是我建立的第一个组件Button因此,我希望能够将主题保存在外部文件中,并ThemeProvider在更高级别进行导入,因此我不必包装每个组件。希望有道理,如果有人有任何想法。

雨果

首先,建议您将主题移到单独的文件中(例如,src/stylesheet以便可以从其他文件(全局App组件和故事书预览文件)访问主题。

// src/stylesheet.ts

import { createMuiTheme } from '@material-ui/core/styles';

export const muiTheme = createMuiTheme({
  palette: {
    primary: {
      main: "#ff0000"
    }
  },
  typography: {
    fontFamily: 'Nunito Sans, sans-serif',
    button: {
      textTransform: 'none'
    }
  },
  shape: {
    borderRadius: 3
  }
})

然后,您需要以设置React应用程序的相同方式来设置故事书。为此,请尝试创建一个名为:的文件.storybook/preview.js,并将其放入其中:

// .storybook/preview.js

import React from 'react';

import { addDecorator } from '@storybook/react';
import { ThemeProvider } from '@material-ui/core/styles';

import { muiTheme } from '../src/stylesheet';

addDecorator((story) => (
    <ThemeProvider theme={muiTheme}>{story()}</ThemeProvider>
));

它将把您所有的故事都包裹在ThemeProvider

在您的应用中,您还可以拥有一个全局App组件,该组件会将整个应用封装在ThemeProvider

更多帮助:https : //storybook.js.org/docs/basics/writing-stories/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为Material-UI主题设置新颜色

在 Material-UI 中合并主题配置设置

如何使用样式化组件和Material-UI为组件设置主题?

在 makeStyles 主题 material-ui 上设置和高度

与 Material UI 主题反应 - 设置全局颜色变量

使用react native ui小猫为React Native设置主题

在material-ui中,如何为不同的断点设置不同的主题样式?

如何在React Material UI中实现全局主题?

如何在 Storybook Story 中将焦点设置为输入

如何在Material-UI中为Content-Security-Policy设置随机数?

如何在Material-UI中为ToolTip标题设置换行符

如何在Material-UI中为TextAreaAutoSize组件设置宽度?

如何在material-ui中为对话框设置高度?

如何获得版式主题默认设置,以将其应用于Material-UI的常规标签?

如何在Windows中为小部件设置主题?

如何在Kafka中为压缩主题设置无限保留?

如何在终端中将主题设置为默认主题

通过主题“覆盖”配置覆盖Material-UI样式,设置NotchedOutline的样式

如何在UIActivityViewController中设置邮件主题?

如何在YouTrack中设置深色主题

如何在phpMyAdmin中设置默认主题?

如何在本地存储中设置主题?

如何在 Material UI 中设置材质卡的最小高度?

如何在 React Material UI 字段中设置值

如何在 material-ui 中设置 ToggleButon 的样式

如何在 React Material UI 的 AppBar 组件中设置容器?

如何在Material-UI中设置按钮样式

将Angular Material 2主题设置为黑暗主题

如何结合主题“ Windows”,“ Aero Lite”和“彩色标题栏”的UI设置?