本文へ移動

UIのカスタマイズ

Reactコンポーネントとウォレットiframeの画面に、共通の色と形状プリセットを適用します。

UIのカスタマイズ ​

ウォレットの承認前に、アプリ独自の購入内容や取引内容を表示する場合は、独自の確認コンポーネントを参照してください。 useSeams().walletのトランザクションメソッドのreview.renderを通じて、Reactコンポーネントを渡します。

Seamsは、アプリ側のReactコンポーネントとウォレットiframeで共通のテーマ設定を使います。 まず、少数のテーマトークンを変更してください。 操作部品の形状や寸法を変える場合は、形状プリセットを追加してください。

共通のテーマを適用する ​

React側のコンポーネントにはThemeを使い、ウォレットiframeにはseams.config.setAppearanceを使います。 どちらにも、同じ色と完全な形状プリセットを渡します。

tsx
import type { SeamsWeb } from '@seams/wallet';
import {
  HostedSeamsAuthMenu,
  type HostedAuthMenuOutcome,
  SHAPE_PRESETS,
  Theme,
} from '@seams/wallet/react';

const colors = {
  colorBackground: '#ffffff',
  textPrimary: '#000000',
  buttonBackground: '#000000',
};

export function ThemedAuthMenu({
  onOutcome,
}: {
  onOutcome: (outcome: HostedAuthMenuOutcome) => void;
}) {
  return (
    <Theme
      theme="light"
      tokens={{
        light: {
          colors,
          shape: SHAPE_PRESETS.rounded,
        },
      }}
    >
      <HostedSeamsAuthMenu onOutcome={onOutcome} />
    </Theme>
  );
}

export function applyWalletTheme(seams: SeamsWeb): void {
  seams.config.setAppearance({
    theme: {
      id: 'brand',
      mode: 'light',
      colors,
      shape: { ...SHAPE_PRESETS.rounded },
    },
    palette: 'default',
  });
}

初期テーマは、プロバイダー設定のappearanceで指定します。 実行中にテーマを切り替える場合は、seams.config.setAppearanceを使います。

seams.config.setAppearanceにも、形状レコード全体を送ってください。 表示設定の更新はキーごとにマージします。 完全なプリセットを渡すと、丸い部品から四角い部品へ戻す際に、古い値が残るのを防げます。

期待する結果 ​

React側のアカウント・認証コンポーネントは、Themeのトークンを読み取ります。 認証メニュー、取引確認、エクスポートビューアーは、iframeの表示設定を読み取ります。 同じプリセットから両方を設定すると、テーマの切り替えが視覚的に統一されます。

対処可能な失敗 ​

  • 指定がないトークンにはSDKの既定値を使います。形状を変える際は、SHAPE_PRESETS.squareまたはSHAPE_PRESETS.roundedから始めてください。
  • トークンを受け取るすべてのReactコンポーネントより上に、Themeを配置してください。境界の外のコンポーネントは、独自のスタイルを保持します。

トークン名、CSS変数、実行中の切り替え、iframeの詳細は、テーマの設定を参照してください。