storybook [Bug]:在编写MDX时,主题字体代码未一致应用,

hgb9j2n6  于 3个月前  发布在  其他
关注(0)|答案(5)|浏览(41)

描述bug

在编写MDX时,主题fontCode在某些场景中没有应用,而是使用了浏览器用户代理的默认值(monospace)或storybook的默认值(ui-monospace, Menlo, Monaco, ...)。

{/* .storybook/preview.tsx */}

import type { Preview } from '@storybook/react';
import { create } from '@storybook/theming/create';

export const theme = create({
  base: 'light',
  fontCode: 'VT323', // <-- the property I'm referring to
  ...
});

const preview: Preview = {
  parameters: {
    docs: { theme },
    ...
  }
};

export default preview;
{/* src/stories/reproduction.mdx */}

import { Meta, Source } from '@storybook/blocks';

export function Code({ code = '' }) {
  return <code>{code}</code>;
}

<Meta title="Example/Reproduction" />

# Reproduction

`Inline code with backticks` ✅

<code>Inline code as code element</code> ❌

<Code code="Inline code as react component returning code element" /> ✅

'Plain markdown code block' ❌


```js
'Syntax highlighted markdown code block' ✅

  • 我认为*预期的行为是作为主题fontCode指定的font-family应该在上述所有场景中都应用,但是...也许有些场景是有原因的?

重现bug

https://stackblitz.com/edit/github-fj1jen?file=src/stories/reproduction.mdx

系统信息

Environment Info:
  System:
    OS: macOS 13.1
    CPU: (8) arm64 Apple M1 Pro
  Binaries:
    Node: 18.12.1 - ~/.nvm/versions/node/v18.12.1/bin/node
    Yarn: 1.22.19 - ~/.nvm/versions/node/v18.12.1/bin/yarn
    npm: 8.19.2 - ~/.nvm/versions/node/v18.12.1/bin/npm
  Browsers:
    Chrome: 111.0.5563.110
    Firefox: 111.0.1
    Safari: 16.2
  npmPackages:
    @storybook/addon-essentials: ^7.0.0-rc.8 => 7.0.0-rc.8 
    @storybook/addon-interactions: ^7.0.0-rc.8 => 7.0.0-rc.8 
    @storybook/addon-links: ^7.0.0-rc.8 => 7.0.0-rc.8 
    @storybook/blocks: ^7.0.0-rc.8 => 7.0.0-rc.8 
    @storybook/react: ^7.0.0-rc.8 => 7.0.0-rc.8 
    @storybook/react-vite: ^7.0.0-rc.8 => 7.0.0-rc.8 
    @storybook/testing-library: ^0.0.14-next.1 => 0.0.14-next.1

其他上下文

  • 无响应*
sqserrrh

sqserrrh1#

我相信正在发生的事情是:

  • MDX1 会用 Storybook 的 SyntaxHighlighter 组件替换所有 <code> 示例,这尊重了 SB 主题。
  • MDX2 只替换某些示例,这些示例是你上面示例中的带有 ✅ 的那些。在这里有文档记录。

你可以认为未被替换的示例仍然应该尊重 SB 主题,这是一个 bug。我不确定我们在这个问题上的观点是什么。@JReinhold,你能对此发表意见吗?
无论如何,目前的解决方法是使用能够正确工作的语法🙈

gk7wooem

gk7wooem2#

更新:这个已经记录在案了!

6qftjkof

6qftjkof3#

感谢伟大的复刻!

  1. <code>Inline code as code element</code> ❌
    这在MDX2中是预期的,@shilman指出。https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#explicit-code-elements-are-no-longer-syntax-highlighted
  2. '纯markdown代码块' ❌
    这应该可以工作,我认为这是一个bug。
  3. <Source code={ '语法高亮源代码块' ❌ } />
    这也应该可以工作,我认为这也是一个bug。
deikduxw

deikduxw4#

啊哈,我明白了。我搜索了一下但是没有找到那份文档。无论如何,感谢你们快速的响应和在storybook上所做的所有工作!

相关问题