Drupal SCSS 主题

Storybook 插件,用于显示主题并使用生态系统进行全局主题值。

在 Github 上查看

Storybook 插件 Drupal SCSS 主题

Storybook 插件,用于显示主题并使用统一的生态系统进行全局主题值。插件将其他主题样式表放置在 story book 的头部,并在切换组件或更改主题时将其移除。

安装

从仓库根目录

yarn add -D @square360/drupal-scss-addon

入门

首先启用插件。将其添加到 .storybook/main.js 中的 addons 中。

// .storybook/main.js
module.exports = {
  // ...
  addons: [
    // ...
    '@square360/drupal-scss-addon',
  ],
  // ...
};

然后,在 .storybook/preview.js 中配置 supportedThemesselectedTheme 参数。

supportedThemes 是一个对象,其中键是下拉菜单的 ID,值是在 storybook 预览工具栏下拉菜单中显示的主题名称。

// .storybook/preview.js
export const parameters = {
  // ...
  selectedTheme: "primary",
  supportedThemes: {
    primary: "Primary",
    secondary: "Secondary"
  },
  // ...
};

启动 Storybook

yarn storybook

在故事中使用

当前选定的主题在全局范围内可用,您可以在 MyComponent.stories.js 中访问它。例如

const Template = (args, { globals: { selectedTheme } }) => {
  console.log("Template selectedTheme:", selectedTheme);

  return <Button {...args} selectedTheme={selectedTheme} />;
};

与 CSS 结合使用

还有另一种使用此插件的方法。您只需全局启用 .storybook/main.js 中的 ../dist/ staticDir。

module.exports = {
  stories: [
    '../src/**/*.stories.@(js|ts)',
  ],
  addons: [
    '@storybook/addon-a11y',
    '@storybook/addon-links',
    '@storybook/addon-essentials',
    '@square360/drupal-scss-addon',
  ],
  staticDirs: [
    '../dist/', // this one
    './fontawesome'
  ],
};

现在您的目录结构应该是这样的

/{component-name}
  {component-name}.stories.js
  {component-name}.js
  {component-name}.scss
  {component-name}.twig
  {component-name}.yml
  /{theme-name}
    {component-name}.{theme-name}.js
    {component-name}.{theme-name}.scss
    {component-name}.{theme-name}.yml (optional)
    {component-name}.{theme-name}.twig (optional)

以上操作应该在根目录下的 dist 文件夹中创建以下文件

{component-name}/{component-name}.css
{component-name}/{component-name}.js
{component-name}/{theme-name}/{component-name}.{theme-name}.css
{component-name}/{theme-name}/{component-name}.{theme-name}.js

按照上述说明,插件将根据加载的 story 组件和从下拉菜单中更改的主题调用 css 文件。

由以下人员制作
  • renafletcher0068
    renafletcher0068
使用技术
    React
标签