🐭

投稿したMDXをTailwindでスタイリングする。

2023/10/12に公開

『Next.jsのApp Routerで部品管理をして真ん中にMDXをはめる。』
の続きになります。前回は、部品化したヘッダとフッダとメインのMDX(Markdown)にわけて出力するところまで確認しました。
しかしMDX部分のスタイルシートがあたってなくてスタイリングは、mdx-components.tsxで
typescriptで直接記述する必要がありました。せっかくtailwindcssが入っているのでtailwindcssの標準のスタイルをあててtailwindcssで管理していきたいと思います。それでは、mdx-components.tsxでh1にスタイルをあてているのでコメントアウトします。

import type { MDXComponents } from 'mdx/types'

// This file allows you to provide custom React components
// to be used in MDX files. You can import and use any
// React component you want, including components from
// other libraries.

// This file is required to use MDX in `app` directory.
export function useMDXComponents(components: MDXComponents): MDXComponents {
  return {
    // Allows customizing built-in components, e.g. to add styling.
   -   h1: ({ children }) => <h1 style={{ fontSize: "100px" }}>{children}</h1>,
   + //h1: ({ children }) => <h1 style={{ fontSize: "100px" }}>{children}</h1>,
    ...components,
  }
}

次に<prose>タグを使用して標準的な HTML に賢明なタイポグラフィ スタイルを追加できるようにするtailswindcss謹製プラグイン @tailwindcss/typographyをインストールします。

npm install @tailwindcss/typography

次にtailwind.congfig.tsにプラグインの設定をします。

import type { Config } from 'tailwindcss'

const config: Config = {
  content: [
    './src/pages/**/*.{js,ts,jsx,tsx,mdx}',
    './src/components/**/*.{js,ts,jsx,tsx,mdx}',
    './src/app/**/*.{js,ts,jsx,tsx,mdx}',
  ],
  theme: {
    extend: {
      backgroundImage: {
        'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
        'gradient-conic':
          'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
      },
    },
  },
-  plugins: [],
+  plugins: [require("@tailwindcss/typography")],
}
export default config

それではMDXコンテンツ直下のフォルダ/blogのlayout.tsxに、proseタグを設定します。

src/app/blog/layout.tsx
export default function Layout({ children }: { children: React.ReactNode }) {
    return <article className="prose prose-xl">{children}</article>;
   }

それでは

npm run dev

にしてコンテンツのある

http://127.0.0.1:3000/blog/hello-world

をブラウザーをコピペして確認しましょう。

となり、markdown部分のmarkdownも無事、tailwindcssのデフォルトスタイルシートがあたるようになりました。
以上です。

Discussion