この記事は、Stripe Apps を25日間紹介し続ける Advent Calendar 2022 6日目の記事です。
Stripe AppsのUIフレームワーク(@stripe/ui-extension-sdk
)を利用することで、Stripe Dashboardに馴染みやすいUIを簡単に構築できます。
しかし画面要件によっては、CSSで見た目を調整したい場合も出てきます。
その場合、Stripe Appsでは、Box
とInline
の2要素と、css
プロパティを利用して調整を行います。
Box
とInline
の使い分け
Box
とInline
はそれぞれdiv
とspan
に相当する要素です。
const Example: FC = () => {
return (
<>
<Box>Hello World</Box>
<Inline>Hello World</Inline>
</>
)
}
このコンポーネントを表示すると、ブラウザ上では次のようになります。
<div>Hello World</div>
<span>Hello World</span>
span
のようなインライン系の要素ではInline
を、そうでない場合はBox
を利用してマークアップしましょう。
スタイルはCSS in JS形式で実装
Box
とInline
それぞれへのCSS設定は、css
プロパティで行います。
<Box
css={{
margin: 'small',
padding: 'xxlarge',
color: 'primary',
background: 'container',
}}
>Hello World</Box>
実行すると、次のような要素ができあがります。
プロパティはドキュメントまたはTypeScriptの型定義でチェック
スタイルを設定する場合の注意点としては、24px
や10vw
・#fefefe
のように個別に値を設定することができない点です。
基本的にほぼ全ての値が、Stripeとライブラリが提供するプロパティのみ許可しています。
そのため、色はprimary
, secondary
, success
などのToken形式で指定します。
フォントやmargin / paddingについても、heading
やsmall
などの形式で指定する必要があります。
「どのようなスタイルが設定できるか」を確認する方法
Stripeとライブラリによる制限が強い分、プロパティごとの見た目などについてはドキュメントで網羅されています。
Gridレイアウト系のサポート・サンプルが強力ですので、アプリを実装する際にはぜひご活用ください。
<Box
css={{
stack: 'x',
gap: 'medium',
alignX: 'start',
}}
>
Box
とInline
以外の要素でCSSを設定する
基本的に、Box
とInline
以外の要素では、CSSを設定できません。
そのため、Box
でラップしてレイアウトを調整するなどの対応が必要です。
<Box
css={{
stack: 'x',
gap: 'medium',
alignX: 'start',
}}
>
<Img
src="https://stripe.com/margin.svg"
width="484"
height="207"
alt="Gross margin"
/>
<Img
src="https://stripe.com/margin.svg"
width="484"
height="207"
alt="Gross margin"
/>
</Box>
Icon
のカラーなど、一部コンポーネントで特定のパラメータが利用できます。
<Icon
name="cancelCircle"
css={{fill: 'critical'}}
/>
Stripe Appsひとりアドベントカレンダー 2022
今年ベータリリースされたばかりのStripe Appsは、まだ日本語の情報が多くありません。
そこでQiita Advent Calendar 2022にて、毎日Stripe Appsについての情報を投稿します。
ノーコードで利用する方法や、開発するためのTipsなども紹介予定ですので、ぜひ購読をお願いします。