Ionic ReactでKonsta UI Reactコンポーネントを使用する方法を見てみましょう。
まず、Ionic Reactプロジェクトを作成します。
Ionic CLIでIonic Reactプロジェクトを生成した場合、実際にはCreate React Appプロジェクトが作成されます。
そのため、Tailwind CSSをインストールするには、公式のTailwind CSS with Create React Appガイドに従うことができます。
Tailwind CSSを含めるには、次の内容でsrc/App.css
ファイルを作成します。
@tailwind base;
@tailwind components;
@tailwind utilities;
これで、Konsta UIをインストールできます。
npm i konsta
また、tailwind.config.js
ファイルで、Konsta UIの設定で設定を拡張する必要があります。
const konstaConfig = require('konsta/config');
module.exports = konstaConfig({
content: ['./src/**/*.{js,jsx,ts,tsx}'],
});
グローバルパラメータ(theme
など)を設定できるように、KonstaProviderを設定する必要があります。
src/App.tsx
で、メインのIonicのIonApp
コンポーネントをKonstaProvider
でラップする必要があります。
import React from 'react';
import { KonstaProvider } from 'konsta/react';
import { IonApp /* ... */ } from '@ionic/react';
const App: React.FC = () => (
// Wrap IonApp with KonstaProvider with theme="parent"
<KonstaProvider theme="parent">
<IonApp>
<IonReactRouter>
<IonRouterOutlet>
<Route exact path="/home">
<Home />
</Route>
<Route exact path="/">
<Redirect to="/home" />
</Route>
</IonRouterOutlet>
</IonReactRouter>
</IonApp>
</KonstaProvider>
);
Ionicのルーターを正しく動作させるには、Ionicのルーター関連コンポーネント:IonApp
、IonReactRouter
、IonPage
、IonHeader
、IonFooter
、IonToolbar
を使用する必要があります。
残りのコンポーネント(Konsta UIの代替がある場合)は、Konsta UI(konsta/react
)から取得できます。
すべてが設定されたので、IonicページコンポーネントでKonsta UI Reactコンポーネントを使用できます。
たとえば、src/pages/Home.tsx
を開き、次のように変更します。
import {
IonContent,
IonHeader,
IonFooter,
IonPage,
IonTitle,
IonToolbar,
} from '@ionic/react';
import { Block, Button, List, ListItem, BlockTitle, Link } from 'konsta/react';
const Home: React.FC = () => {
return (
// Use IonPage, IonHeader, IonFooter & IonToolbar from Ionic
<IonPage>
<IonHeader>
<IonToolbar>
<IonTitle>My App</IonTitle>
</IonToolbar>
</IonHeader>
<IonFooter>
<IonToolbar>
<Link slot="start" toolbar>
Link 1
</Link>
<Link slot="end" toolbar>
Link 2
</Link>
</IonToolbar>
</IonFooter>
<IonContent fullscreen>
<IonHeader collapse="condense">
<IonToolbar>
<IonTitle size="large">My App</IonTitle>
</IonToolbar>
</IonHeader>
{/* In page content we can use Konsta UI components */}
<Block strong>
<p>
Here is your Ionic & Konsta UI app. Let's see what we have here.
</p>
</Block>
<BlockTitle>Navigation</BlockTitle>
<List>
<ListItem href="/about/" title="About" />
<ListItem href="/form/" title="Form" />
</List>
<Block strong className="flex space-x-4">
<Button>Button 1</Button>
<Button>Button 2</Button>
</Block>
</IonContent>
</IonPage>
);
};
export default Home;
結果として、次のページが表示されます。
IonicとKonsta UIは、メインテーマカラーに異なるソースを使用します。 IonicのテーマカラーはCSSカスタムプロパティで設定されますが、Konsta UIのテーマはtailwind.config.js
で設定する必要があります。
色 | Ionic CSS変数 | Konsta UI プロパティ |
---|---|---|
プライマリ | --ion-color-primary | プライマリ |
プライマリ ダーク | --ion-color-primary-shade | primary-dark |
プライマリ ライト | --ion-color-primary-tint | primary-light |
テーマカラーが #ff6b22
だとすると、以下を設定する必要があります。
App.css
(Ionicテーマカラーを設定するため)
:root {
--ion-color-primary: #ff6b22;
--ion-color-primary-rgb: 255, 107, 34;
--ion-color-primary-shade: #f85200;
--ion-color-primary-tint: #ff864b;
}
そして、tailwind.config.js
(Konsta UIテーマカラーを設定するため)
const konstaConfig = require('konsta/config');
module.exports = konstaConfig({
content: ['./src/**/*.{js,jsx,ts,tsx}'],
// extend primary color
theme: {
extend: {
colors: {
primary: {
light: '#ff864b',
DEFAULT: '#ff6b22',
dark: '#f85200',
},
},
},
},
});