coiai Logo
coiai

JOY UI で全体のスタイルを変更する方法 TS 対応

Featured

この記事は?

Joy UI を使ってUIを構築する際、フォントやPrimary Color などの共通のスタイルを変更する方法についてです。
個別に変更するばは sx プロップスを使用すればいいのですが、全体の変更する場合は extendTheme を使います。
以下解説です。

よしなに。

環境

  • React TS
  • Joy UI v5.0.0-beta.49
  • 2025.01.20 時点

やり方

以下のように thmes ディレクトリなどを作成し、その下にtheme.ts ファイルを作成します。

中身は例えば以下のようにしてみましょう。
extendTheme を使うのがポイントです。

// src/themes/theme.ts
import { extendTheme } from '@mui/joy/styles';

const theme = extendTheme({
  colorSchemes: {
    light: {
      palette: {
        primary: {
          50: '#e3f2fd',
          100: '#bbdefb',
          200: '#90caf9',
          300: '#64b5f6',
          400: '#42a5f5',
          500: '#2196f3',
          600: '#1e88e5',
          700: '#1976d2',
          800: '#1565c0',
          900: '#0d47a1',
        },
      },
    },
  },
  fontFamily: {
    display: 'Roboto, sans-serif',
    body: 'Arial, sans-serif',
  },
});

export default theme;

続いてこの関数を App.tsx で読み込みます。

CssVarsProvider で全てを囲ってあげます。そして、themeに先ほど作成したtheme.tsを渡してあげればスタイルが下層の全てのコンポーネントに適応されます。

import React from 'react';
import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import './styles/App.css';
import { RecoilRoot } from 'recoil';

// theme
import { CssVarsProvider } from '@mui/joy';
import theme from './themes/theme';

// component
// 省略

function App() {
  return (
    <RecoilRoot>
      <CssVarsProvider theme={theme}>
      <Router>
        <Header />
        <Analytics />
        <Routes>
          <Route path="/" element={<Top />} />
        </Routes>
      </Router>
      </CssVarsProvider>
    </RecoilRoot>
  );
}

export default App;

たったこれだけで、プロジェクト全体に変更をかけられるようになりました!
お疲れ様です!!

参考

↓ 公式ドキュメント様

https://mui.com/joy-ui/customization/approaches

おまけ

mac, windows, 他OSでフォントを切り替えられるようにしてみました。

// 
//  このファイルは、JoyUI のテーマを定義するファイルです。
//  created date: 2025.01.20
//  created by: coiai
// 

import { extendTheme } from '@mui/joy/styles';

// OSごとのフォント設定
const getSerifFont = () => {
  const platform = navigator.platform.toLowerCase();

  if (platform.includes('win')) {
    return 'Yu Mincho, serif'; // Windows の場合は遊明朝
  } else if (platform.includes('mac')) {
    return 'Hiragino Mincho Pro, serif'; // Mac の場合はヒラギノ明朝
  } else {
    return 'serif'; // その他のOSはデフォルトのセリフ体
  }
};

const theme = extendTheme({
  colorSchemes: {
    light: {
      palette: {
        primary: {
          50: '#e3f2fd',
          100: '#bbdefb',
          200: '#90caf9',
          300: '#64b5f6',
          400: '#42a5f5',
          500: '#2196f3',
          600: '#1e88e5',
          700: '#1976d2',
          800: '#1565c0',
          900: '#0d47a1',
        },
      },
    },
  },
  fontFamily: {
    display: getSerifFont(), // 見出し用フォント
    body: getSerifFont(),    // 本文用フォント
  },
});

export default theme;
明朝体に変更した画面
投稿日: 2025年1月20日
カテゴリ: React
タグ: JoyUI, react
coiai

coiai

この記事もおすすめ

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStoreのコンテンツ型のアプリ内課金を実装する方法についてです。 コンテンツを追加する 右上のアドオンを作成ボタンを押す。 アドオンタイプ 一度購入したら、それ以降は購入しない設定は耐久型を選びます。アプリ内のコインや石など、消耗品は消耗品を選びます。 価格設定 価格設定タブに進むとコンテンツの価格を設定できます。有料のコンテンツをまだ登録したことない場合は支払い情報の設定が住んでいないはずなので、支払い情報の設定が先に必要になります。 DUC データユーズチェックアップ 左メニューの必要条件の中のデータ使用状況の確認を開きます。 例えばIAPでユーザー認識が必要な場合は User ID, ユーザー名が必要な場合は User Profile の追加ボタンを押します。 何に使うかの用途と説明が求められるのでそこに使用用途を記述してください。 ここまで出来たらリクエストを送信ボタンを押します。 このようにデータの取り扱いについて質問されるので答えてください。英語で書いてあるので、なんとなく何が書いてあるか順番にさらっと説明します。 データの使用状況の確認 左サイドバーから必要条件⇒データ使用状況の確認をクリックします。 これが設定されていないと以下の文言のポップアップが表示されます。 読んでくださった方へ 株式会社coiaiでは、Quest向け、PCVR、Vision OS向けの開発も得意としています。新規開発ももちろん、開発途中でメンバーが必要といった場合でも請け負えますので、ご相談ください!

Microsoft PowerToys 使わないのは損

Microsoft PowerToys 使わないのは損

普段MacユーザーでWindowsの歯がゆさを我慢している方は絶対に入れたほうがいい公式のアプリを紹介します。生産性のバク上がり間違いなし?です。 インストール パッケージマネージャから入れるも良し。WindowsStoreから入れるも良し。 https://learn.microsoft.com/ja-jp/windows/powertoys/install?tabs=store%2Cextract-094 特におすすめの機能 FancyZones(ウィンドウマネージャー) Windowsのスナップ機能の超強化版。自分で好きなウィンドウレイアウトを作成して、ドラッグするだけでウィンドウがピッタリ配置される。マルチモニター環境では特に神。 欲を言うなら固定したアプリを保存する機能がほしかった&#8230;&#8230;!!これに関してはほかのツールを試すしかなさそう。 PowerToys Run(クイックランチャー) Alt + Space でどこからでも起動。アプリ検索、ファイル検索、計算、Web検索、シェルコマンド実行など、プラグインで拡張可能。macOSのSpotlightやAlfredに相当する機能がWindowsで使える。 私は普段Mac使いなので、この機能がMicrosoftの純正として使えるのはかなりアツイ。 コマンドパレット win alt Space で起動。PowerToys Run との使い分けがじゃっかんめんどくさくて一緒になってたらよかったなと思う。 頻繁に使うコマンド・アプリ・ツールに1つのインターフェイスから素早くアクセスできる。カスタマイズ性が高い。 Keyboard Manager(キーリマッパー) キーの再マップやカスタムショートカットの作成ができる。CapsLockをCtrlに変えたり、独自のショートカットを定義したり。レジストリを触らなくていいのが楽。 Text Extractor(OCR) Win + Shift + T で画面上のどこからでもテキストをOCRで読み取ってコピーできる。スクリーンショットから文字を抜き出したいときに最高。日本語も対応。 これ普通に神機能過ぎてやばい。布教したい。 Advanced Paste(高度な貼り付け) クリップボードの内容を好きな形式に変換して貼り付け。プレーンテキスト化、JSON整形、Markdown変換など。AI機能もオプション で使える。 Light Switch ライトモードとダークモードが時間によって切り替わるようになる。 なぜ標準でつけない!? 日常で地味に助かる機能 ユーティリティ 概要 Always On Top Win + Ctrl + T でウィンドウを最前面に固定 [&hellip;]

デフォルトサムネイル

Obsidian 情報整理のディレクトリ構成をどうすべきか

はじめに この記事はObsidian等、ディレクトリの構成を決められるメモアプリで、どのように情報を保存していくかについてのメモです。 ノート遍歴 私はあまりこだわりがなく情報をまばらに散らかしていました。 Google Keep, Evernote, Notion, iOS 純正のメモ, 紙のメモ帳 様々なアプリを試してきましたが、最近では主戦力のメモをアナログな紙とMacのメモ帳という貧弱な装備に戻ってし待っていました。 しかし結局デバイスや場所を跨ぐとなると、統一されたフォーマットでデータを保管したいと思いたち、せっかくなのできちんと整理しようとなったわけです。 情報整理フレームワーク 5選 有名なフレームワークを調べてまとめてみました。 PARA Methodby Tiago Forte https://paramethod.com 情報を「行動との距離」で4つに分類するフレームワーク。最もシンプルで始めやすそうな印象があります。 向いている人:GTD的にタスクを進めたい人、仕事とプライベートを横断して管理したい人 Zettelkastenツェッテルカステン ↓この記事めっちゃ良いのでこんなブログ読むよりこれ読んでください。 https://zettelkasten.de/introduction ドイツの社会学者ニクラス・ルーマンが実践した手法。フォルダ分類に頼らず、ノート同士をリンクで繋いでいくことで知識のネットワークを構築します。Obsidianのグラフビューとの相性は抜群です。 ノートは1つにつき1アイデア(Atomic Note)を原則とし、[[リンク]]でノート同士を結びます。フォルダは最小限に留めるのがポイントです。 向いている人:研究者、ライター、知識を長期的に蓄積・発展させたい人 Johnny Decimal https://johnnydecimal.com 引用:「10 以下」というコンセプトが Johnny.Decimal の中心にあります。 10単位のカテゴリ番号で情報を厳密に管理するシステム。「あのファイルどこだっけ?」がなくなります。 向いている人:整理整頓が好き、大量のノートを厳密に分類したい人 ACCESSby Nick Milo(Linking Your Thinking) バランス型MOC活用 PARAとZettelkastenの良いとこ取りをしたフレームワーク。MOC(Map of Content)という索引ノートを中心に、フォルダとリンクの両方を活用します。 向いている人:フォルダもリンクもバランスよく使いたい人 PARA × Zettelkasten ハイブリッド 実用的おすすめ PARAのフォルダ構造で大枠を整理しつつ、Zettelkastenのリンク思想で知識を繋ぐ。迷ったらこれがおすすめです。 [&hellip;]

この記事を書いた会社

株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。

商号株式会社 coiai創業2022年1月設立2025年1月23日資本金1,500,000円(設立時点)本社所在地東京都練馬区関町北 3-6-9代表者代表取締役 竹村 啓佑 / 代表取締役 服部 陽良

主なご相談内容

会社概要・役員紹介を見る

詳しい会社情報は会社概要ページでご覧いただけます。

資料請求・無料相談

導入要件のヒアリングからPoC、本番運用まで伴走します。まずはお気軽にご相談ください。

お問い合わせの前に 個人情報保護方針 をご確認ください。