0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WireUI を導入すると JetStream のダークモードが無効になってしまう件の対処法

Posted at

大まかな流れから。

Laravel JetStream

php artisan jetstream:install livewire --dark

この --dark オプションをつけると、諸々がダークモードでインストールされます。
該当オプションは vendor/laravel/jetstream/src/Console/InstallCommand.php の中に書いてあるのでわかりやすいんですけど、

vendor/laravel/jetstream/src/Console/InstallCommand.php
    protected function removeDarkClasses(Finder $finder)
    {
        foreach ($finder as $file) {
            file_put_contents($file->getPathname(), preg_replace('/\sdark:[^\s"\']+/', '', $file->getContents()));
        }
    }

と書いてある通り、設定ファイルの dark: のところを消してます。
で、どのファイルを対象にしているかというと tailwind.config.js です。

tailwind.config.js
export default {
    dark: 'class',
};

消してるのはこの辺。

WireUI

しかし、Livewire用の拡張UIの WireUI をインストールすると、ダークモードが解除されてしまいます。

composer require wireui/wireui

これの原因は tailwind.config.js に追記する下記の設定のせいです。

tailwind.config.js
module.exports = {
    ...
    presets: [
        ...
        require("./vendor/wireui/wireui/tailwind.config.js")
    ],
    content: [
        ...
        "./vendor/wireui/wireui/src/*.php",
        "./vendor/wireui/wireui/ts/**/*.ts",
        "./vendor/wireui/wireui/src/WireUi/**/*.php",
        "./vendor/wireui/wireui/src/Components/**/*.php",
    ],
    ...
}

presets で vendor/wireui/wireui/tailwind.config.js を参照するようになってますね。
こいつの中をみると、

vendor/wireui/wireui/tailwind.config.js
const colors = require('tailwindcss/colors')

/** @type {import('tailwindcss').Config} */
module.exports = {
    ()

  darkMode: 'class',
  
    ()

とまあ、ばっちり darkMode のパラメーターが復活してます。
こいつがあるとデフォルトでダークモードが有効になりません。

なので一手間、body タグにでもクラスをつけてあげるようにしましょう。
私の場合は layout に埋めてます。

resources/views/layouts/app.blade.php
    <body class="font-sans antialiased dark">

dark の文字列を付けたり消したりすれば良いので、設定ファイルや env で制御したり、JavaScript でクラスを付けたり消したりすれば良いでしょう。

細かくは Tailwind のマニュアルを参考にどうぞ。
Tailwind DarkMode

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?