mantine-dev について
mantine-dev は、Vite と TypeScript を使う開発者向けの Mantine による React UI 構築スキルです。コンポーネント、スタイル、フォーム、フック、テストの実践を、現行 API に沿って扱います。
主な機能
- 01React コンポーネントとフック
- 02Vite と TypeScript の設定
- 03テーマと CSS modules のガイド
- 04フォームとスケジュールのパターン
- 05Vitest のテストガイド
活用シーン
- 01Vite で Mantine アプリを開始
- 02画面に使うコンポーネントの選定
- 03テーマとダークモードの調整
- 04Mantine コンポーネントのテスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ itechmeat/ llm-code --skill mantine-devインストール後、Claude Code で/mantine-devを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/components.mdeslint.mdforms.mdgetting-started.mdhooks.mdschedule.mdstyling.mdtesting.md詳細
Mantine UI ライブラリ
Mantine は、TypeScript をサポートする、機能が充実した React コンポーネントライブラリです。ネイティブのダークモード、CSS Modules による CSS-in-JS、優れたアクセシビリティを備えた 100 種類以上のフックとコンポーネントを提供します。
v9.7 の主な変更点
- 新しいコンポーネント:
Tour(スポットライトオーバーレイを使用した、ガイドモードとビーコンモードを備えるステップ形式のオンボーディング)、Toolbar(トグルグループと区切り線を備えたロービング tabindex コンテナ)、Toggle(active/onActiveChangeの状態を持つボタン)、JsonViewer(@mantine/code-highlight:型インジケーターとコピーボタンを備えた、展開可能な JSON ツリー)。 @mantine/schedule:DayView/WeekViewにslotLabelIntervalを追加(1 時間に 1 回より頻繁に時刻ラベルを表示します。intervalMinutesの倍数である必要があります)。businessHoursはHH:mm形式の時刻を受け入れ、WeekViewでは曜日ごとのレコードも受け入れます。営業時間の色は--day-view-business-hours-bg/--week-view-business-hours-bgでカスタマイズできます。MobileMonthViewにwithWeekendDaysを追加しました。@mantine/schedule:DayView/WeekViewにeventOverlapMode('columns'または'cascade')と、ドロップ時の検証機能(preventEventOverlap、canDropEvent、canResizeEventTo、canDropExternalEvent、onEventPlacementRejected)を追加しました。@mantine/core:ScrollAreaに--scrollarea-offset-sizeCSS 変数を追加(scrollbarSizeとは独立してオフセットの間隔を設定できます)。TooltipにhideDetached、TreeSelectにrenderPill、NotificationsにwithAutoCloseProgressを追加しました。CheckboxとRadioにvariant="light"を追加しました。@mantine/coreの修正:Radio、Chip、SwitchのreadOnlyが値の変更を防ぐようになりました。SelectのonChangeのオプション引数を nullable として型付けしました。Cascaderが RTL でArrowLeft/ArrowRightを反転するようになりました。別のウィンドウまたは iframe 内にレンダリングされた場合も、検索可能な入力欄で文字を入力できるようになりました。@mantine/hooksの修正:use-scrollerは、コンテナの外で終了したドラッグ後のクリックを無視しなくなりました。use-event-listenerは、オプションオブジェクトがインラインで渡された場合もリスナーを保持します。use-throttled-callbackは再入呼び出しを処理します。use-focus-trapは macOS のフルキーボードアクセスがオフの場合もフォーカスをトラップします。@mantine/chartsで右 Y 軸の子要素のレンダリングを修正しました。@mantine/tiptapのRichTextEditorは、getUploadImageExtensionによる画像アップロードをサポートします。
v9.6 の主な変更点
- 新しい
@mantine/lightboxパッケージ:カルーセルナビゲーション、ズーム、サムネイル、動画、カスタムスライドを備えた全画面メディアライトボックスと、ストアベースの API を提供します(1 回マウントすれば、どこからでも開けます。Spotlight や Notifications と同じパターンです)。 - 新しい
ActionBarコンポーネント:選択した項目(たとえば、選択したテーブル行)の一括操作を表示する、フローティングの選択アクションバーです。 @mantine/chartsにGaugeChart、WaffleChart、MatrixChart、CandlestickChartを追加しました。エリア/棒/折れ線/複合/散布図にreferenceAreasとreferenceDotsを追加しました。AreaChartにtype="stream"、ScatterChartに右 Y 軸を追加しました。@mantine/tiptapのRichTextEditorに、テーブルコントロール、折りたたみ可能なDetailsコントロール、InvisibleCharacters書式マークコントロールを追加しました(対応する Tiptap 拡張機能を登録してください)。Typographyがdetails/summary要素をスタイル設定するようになりました。NotificationsにrenderNotificationを追加しました。これにより、入場/退場/ドラッグで閉じるアニメーションを維持したまま、デフォルトの通知を完全にカスタマイズしたコンテンツに置き換えられます。@mantine/schedule:ResourcesMonthViewがイベントのサイズ変更をサポートしました。時間グリッドビューでドラッグ/サイズ変更のスナップ間隔を設定できるようになりました。背景イベントを操作可能になりました。YearViewにrenderDayとwithWeekendDaysを追加しました。Dropzoneをreact-dropzone20 にアップグレードしました(maxFilesの部分受け入れ動作、FileWithPathの型チェック強化)。Node.js 22 以降が必須になりました(Node 20 は 2026 年 4 月にサポート終了しました)。
v9.5 の主な変更点
- 新しい
Cascaderコンポーネント:カスケードする列を順にたどりながら階層データから値を選択できます。changeOnSelect、ホバーによる展開、検索、モバイル向けのフラットリストレイアウトに対応しています。 @mantine/chartsにSunburstChart(階層データを同心円状に表示)とBulletChart(値を目標値および定性的な範囲と比較)が追加されました。面グラフ/棒グラフ/折れ線グラフ/複合グラフには、ドラッグ可能な範囲セレクターを表示するwithBrushが追加され、すべてのチャートコンポーネントでaccessibilityLayer(矢印キーによる操作、Enter キーでツールチップを表示)がデフォルトで有効になりました。- カレンダーベースの日付コンポーネントに
withNativeLevelSelectが追加されました。カレンダーヘッダーのレベルボタンをネイティブの<select>要素に置き換えます。yearsSelectRangeと組み合わせて使用します。 Timeline.Itemにopposite(線の反対側にコンテンツを表示し、中央揃えの両側レイアウトに切り替え)とalternate(アイテムごとに表示する側を切り替え)が追加されました。FloatingWindowには、dimensionsプロパティとキーボードによるサイズ変更に対応した複合コンポーネントResizeHandleが追加されました。Modal/DrawerにはkeepMountedMode('activity'または'display-none')が追加されました。Accordionには、常に1つのアイテムを開いた状態にするdisableCollapseが追加されました。@mantine/scheduleのResourcesDayView/ResourcesWeekViewでは、1時間を超える複数時間のスロット列に対応するintervalMinutesを指定できるようになりました。9.5.0では、通知コンテナのautoCloseタイマーのリークが修正されました。- 公式 Vite テンプレートでは、新しい
oxc-config-mantineパッケージを使用して ESLint/Prettier/eslint-config-mantineをoxlint/oxfmtに置き換えました(内部ツールの移行)。ESLint を使い続けるプロジェクト向けに、eslint-config-mantineも引き続き利用できます。
v9.4 の主な変更点
- 新しいコンポーネント:
ComboboxPopover(Combobox エンジンをベースに構築された低レベルのポップオーバー)、DataList(キーと値で構成される説明リスト)、EmptyState(空の状態/プレースホルダー画面)、Menubar(デスクトップスタイルのアプリケーションメニューバー)。 @mantine/scheduleに、リソースごとにグループ化されたスケジュールレイアウト向けのResourcesDayViewとResourcesWeekViewが追加されました。9.4.1のパッチでは、React コンパイラーとの@mantine/formの互換性、Heatmap の描画、および各種コンポーネントの問題が修正されました。
v9.3 の主な変更点
- 新しい
Splitterコンポーネント(use-splitterフック付き):水平/垂直方向、折りたたみ可能なペイン、キーボード操作に対応した、宣言的なサイズ変更可能の分割ペインレイアウトです。Splitter.PaneはSplitterの直接の子である必要があります。 - 新しいコンポーネントプロパティ:
Paginationにlayout="responsive"(CSS コンテナークエリー)、Text/BlockquoteにtextWrap、CodeHighlightにwithLineNumbers、OverflowListにcollapseFrom("start"/"end")、TextareaにbottomSection(文字数カウンター)が追加されました。また、Combobox ファミリー(Select、MultiSelect、Autocomplete、TagsInput)がfloatingHeight="viewport"に対応しました。 DateInputに値をすばやく選択するためのpresetsが追加されました。Menu.Subは、開閉状態を制御できるようになりました。9.3.1のパッチでは、閉じる際の通知 DOM のクリーンアップ、CollapseのkeepMounted、SegmentedControlのインジケーターの角丸、PinInputのプレースホルダーの中央揃え、Treeの矢印キー操作での非表示ノードのスキップ、非制御のuse-formでのMaskInput、およびActivityラッパー内でのuse-idの安定性に関する問題が修正されました。
v9.2.2 の主な変更点
- 選択コントロールとスライダー全体でアクセシビリティが改善されました。
Checkbox、Radio、Switchはエラー ID をaria-describedbyに設定するようになり、SliderとRangeSliderはaria-valuetextに対応しました。 - オーバーレイと入力の動作が改善され、サブメニューのセーフポリゴンへの対応、重複するモーダル ID の修正、PinInput のキーボード修正、ScrollArea/TreeSelect のインタラクション修正が行われました。
9.2.2のパッチ修正では、Pillのオーバーフロー、ローカルなdirの上書き時のInputセクション、偽値のプリミティブ値に対するSelectのクリアボタン、Modal/Drawer/Spotlight の属性型、Menu.Subのセーフエリアポリゴンオプションのより安全な転送に対応しました。@mantine/hooksのuse-maskは貼り付け・切り取り操作後も元に戻す操作とカーソル位置を維持するようになり、@mantine/tiptapのコントロールはエディターが破棄された後や初期化されていない場合にエラーを起こさなくなりました。- フォームとテーマの堅牢性が向上しました。
@mantine/formのハンドラーがより安定し、デフォルトのバリデーターが予期せず非同期の結果を強制しなくなり、mergeMantineThemeがDEFAULT_THEME.headingsを変更しなくなりました。 @mantine/scheduleは、複数日にまたがる重なりの表示改善とintervalMinutes={60}の配置修正により、引き続き成熟しています。
v9.0 の破壊的変更
- すべての
@mantine/*パッケージで React 19.2 以上が必要です @mantine/tiptapでは Tiptap 3 以上が必要です@mantine/chartsでは Recharts 3 以上が必要です(移行は不要です)- 詳細については、公式の8.x → 9.x 移行ガイドを参照してください
対象範囲
このスキルでは、次の内容を扱います。
- Vite + TypeScript のセットアップ(Next.js や CRA は対象外)
- PostCSS プリセットを使った CSS モジュール
- テスト用の Vitest
- 現在の公式 Vite テンプレートに合わせた、リンティングとフォーマット用の Oxlint/Oxfmt(
oxc-config-mantine)。ESLint(eslint-config-mantine)も引き続き代替手段としてサポートされています
インストール
Vite テンプレートのセットアップ、手動インストール、オプションパッケージについては、references/getting-started.md を参照してください。
PostCSS の設定
postcss.config.cjs を作成します。
module.exports = {
plugins: {
"postcss-preset-mantine": {},
"postcss-simple-vars": {
variables: {
"mantine-breakpoint-xs": "36em",
"mantine-breakpoint-sm": "48em",
"mantine-breakpoint-md": "62em",
"mantine-breakpoint-lg": "75em",
"mantine-breakpoint-xl": "88em",
},
},
},
};
アプリのセットアップ
// src/App.tsx
import "@mantine/core/styles.css";
// Other style imports as needed:
// import '@mantine/dates/styles.css';
// import '@mantine/notifications/styles.css';
import { MantineProvider, createTheme } from "@mantine/core";
const theme = createTheme({
// Theme customization here
});
function App() {
return <MantineProvider theme={theme}>{/* Your app */}</MantineProvider>;
}
重要な禁止事項
- MantineProvider のラッパーを省略しないでください。すべてのコンポーネントで必要です
@mantine/core/styles.cssのインポートを忘れないでください。インポートしないとコンポーネントにスタイルが適用されません- 同じプロジェクトで Mantine と他の UI ライブラリ(例:Chakra、MUI)を併用しないでください
- テーマの値にインラインスタイルを使わないでください。CSS 変数またはテーマオブジェクトを使用してください
- PostCSS のセットアップを省略しないでください。省略するとレスポンシブミックスインが動作しません
- 非制御フォームを使う場合は、
key={form.key('path')}を忘れないでください
コアコンセプト
1. MantineProvider
アプリをラップし、テーマのコンテキストとカラースキームの管理を提供します。
2. テーマオブジェクト
色、タイポグラフィ、スペーシング、コンポーネントのデフォルトプロパティをカスタマイズします。
3. スタイルプロパティ
すべてのコンポーネントで、mt、p、c、bg などのスタイルプロパティを使用できます。
4. CSS 変数
すべてのテーマ値は CSS 変数として公開されます(例:--mantine-color-blue-6)。
5. ポリモーフィックコンポーネント
多くのコンポーネントでは component プロパティを指定して、異なる要素としてレンダリングできます。
完了の定義
- MantineProvider でアプリをラップしている
- スタイルをインポートしている(
@mantine/core/styles.css) - mantine-preset を使って PostCSS を設定している
- createTheme でテーマをカスタマイズしている
- カラースキーム(ライト/ダーク)を処理している
- TypeScript の型が機能している
- Vitest + カスタムレンダーでテストが通る
リファレンス(詳細ガイド)
セットアップと設定
- getting-started.md — インストール、Vite のセットアップ、プロジェクト構成
- styling.md — MantineProvider、テーマ、CSS モジュール、スタイルプロパティ、ダークモード
コア機能
- components.md — コア UI コンポーネントのパターン
- hooks.md — @mantine/hooks のユーティリティフック
- forms.md — @mantine/form、useForm、バリデーション
- schedule.md — @mantine/schedule のカレンダースケジュール
開発
- testing.md — Vitest のセットアップ、カスタムレンダリング、モック
- eslint.md — Oxlint/Oxfmt(oxc-config-mantine)のセットアップと、従来の eslint-config-mantine オプション
リンク
コメント
Markdown 対応