0.3から1.0への移行
0.3から1.0へのAPI、トークン、スタイルシートの変更点を説明します。
このガイドでは公開パッケージの契約を対応づけます。アプリケーション固有のimport、ルート、データモデル、依存関係のリビジョン、ギャップ分析、移行状況は含みません。
変更点
1.0.0は追加リリースではなく、全面的な置き換えです。0.3の実装、Tailwindプリセット、スタイルシート、およびすべてのサブパスエクスポートはパッケージから削除されました。1.0.0内に互換性のための経路はありません。アプリケーションは意図的にアップグレードするか、引き続き公開・インストール可能な0.3.xを使います。
| 0.3の契約 | 1.0の契約 |
|---|---|
@language-lit/material3-expressive(0.3 API) | @language-lit/material3-expressive(新API) |
@language-lit/material3-expressive/styles | @language-lit/material3-expressive/styles.css |
コンポーネントグループのサブパス(/components/*) | パッケージルートから名前付きエクスポート |
tailwind-presetとパッケージのcontent glob | 削除。代替はなく、追加も不要 |
| リンク/画像アダプター用プロバイダー | テーマをスコープするMaterial3Provider |
| hooksとutilitiesのサブパス | 削除。公開されたtheme/token/component APIを使用 |
| — | @language-lit/material3-expressive/theme(Reactを含まない) |
| — | @language-lit/material3-expressive/tokens(Reactを含まない) |
両リリースが同じimportパスを使うため、1つのインストール済みバージョンから0.3と1.0を同時にレンダリングすることはできません。本番コードを段階的に変更するのではなく、ブランチを作ってアップグレードしてください。
セットアップの変更
- 独立した移行ブランチに
1.0.0をインストールします。 - Tailwindプリセットのimport、パッケージのcontent glob、
./stylesのimportを削除します。 - アプリケーションレベルのエントリで
@language-lit/material3-expressive/styles.cssを一度だけ読み込みます。 Material3Providerをレンダリングし、light、dark、systemからモードを選びます。- カスタムデザイン値をCSSやTailwind設定ではなく、
createTheme/extendThemeのデータに移します。 - コンポーネントをセマンティックな領域ごとに置き換え、フォーム、キーボード操作、フォーカス、RTL、強制カラー、モーションの軽減、SSR、本番CSSを確認します。
よくある公開概念の対応
| 0.3の概念 | 1.0での方針 |
|---|---|
Button、IconButton | 同じ名前付き概念を使い、ネイティブのボタン/フォームセマンティクスと新しいバリアント/サイズの契約に従います。 |
FAB | FloatingActionButtonを使います。一時的な操作、拡張、トグルの各モードには明示的なprops形式があります。 |
名前で参照するIconレジストリ | Material SymbolsのリガチャまたはSVGソースをIconに渡します。フォント配信は利用側で管理します。 |
Input | TextFieldを使い、公開バリアントでfilled/outlinedのスタイルを選びます。 |
TextArea | TextAreaを使います。TextFieldと外観を共有し、ネイティブの縦方向のサイズ変更を維持します。 |
SegmentedButtons | 単一または複数選択モードのデータ駆動型SegmentedButtonGroupを使います。 |
Modal | Dialogを使い、modal/non-modalの動作を選んで、制御式のopenライフサイクルに従います。 |
| Menu/selectコンポーネント | APGのmenuセマンティクスにはMenuを、combobox/listboxセマンティクスにはSelectを使います。 |
Tabs、TabItem、TabsContainer | リンクとして使える項目と任意のパネルを備えた、データ駆動型のTabsコンポーネントを1つ使います。 |
| Navigation bar/rail/drawer | 共通のNavigationItem形式か、アダプティブな切り替え用のNavigationSuiteを使います。 |
| Linear/circular progress | LinearProgress/CircularProgressを使います。不確定モードではvalueを省略します。WavyProgressはExpressiveな表現です。 |
| Theme/font loaderフック | /themeでシリアライズ可能なテーマデータを作成します。フォントの読み込みは引き続きアプリケーション側で管理します。 |
正確なpropsについてはサポート対象コンポーネントの一覧と各リンク先をご覧ください。名前が似ていても、propsレベルの互換性は保証されません。
1.0に対応するプリミティブがない0.3 API
0.3パッケージには、1.0の一覧にあるMaterialプリミティブではないユーティリティや、アプリケーションレベルの表示パターンが含まれていました。データ表示レシピ、フレームワークアダプターのコンテキスト、アプリケーションのフォントやテーマを読み込むフックなどです。これらはアプリケーション側の組み立てで置き換えるか、公開タスクの手順に従って将来の汎用コンポーネントを提案してください。以前存在したことを理由に、提供範囲が広がることはありません。
破壊的変更
/theme、/tokens、/styles.css以外のすべてのサブパスが削除されました。- Tailwindプリセット、パッケージのcontent glob、
./stylesエントリはなくなりました。 - CSSは
m3e名前空間を使い、Tailwindトークンを消費しません。0.3の--md-*カスタムプロパティは削除されました。 Material3Providerは実際のdivでテーマをスコープ化します。フレームワークのリンク/画像アダプターは管理しません。- コンポーネントでは、移植したアプリケーションやComposeのロールより、ネイティブ要素とAPGのセマンティクスを優先します。
- 状態を持つ複合コンポーネントでは、子要素やルーターに結びつけず、明示的な制御/非制御の値コールバックとデータ配列を使います。
- アイコン用のレジストリやフォントローダーは同梱されません。
- パッケージにランタイム依存関係はありません。peer依存関係はReactとReact DOMのみです。
- サポートの保証対象は生成された準拠コンポーネント一覧のみです。
検証とロールバック
移行した領域ごとに、アプリケーションの型チェック、テスト、アクセシビリティチェック、SSRビルド、本番バンドルを実行します。公開パッケージの検証には、このリポジトリのnpm run verifyを使います。
ロールバックでは、利用側の変更で0.3.x依存関係、import、スタイルを復元します。利用側固有の展開/ロールバック手順は、この公開リポジトリの対象外です。