メインコンテンツまでスキップ

Meritsブロック

Merits は、MUI 上に構築されたマーケティング用メリットセクションで、中央揃えのヘッダー、メリットタイルの行、プライマリのコールトゥアクションリンクボタンを備えています。

インストール

npm install @nodeblocks/frontend-merits-block

必要なもの

項目用途
subtitle補助テキスト行
meritsTitleメイン見出し
itemsメリットタイルのコンテンツ
buttonTextCTA のラベル
buttonHrefデフォルト contained ボタンの href
コンテンツはアプリ側で管理する

ヘッダーのコピー、メリット項目、CTA テキストをページまたは CMS から渡してください。各項目には imageUrltextsubtext が必要です。画像は小画面・大画面とも固定アスペクト比フレーム内で object-fit: contain になります。

コード例

ライブエディター
function Example() {
  const items = [
    {
      imageUrl: '/img/undraw_docusaurus_mountain.svg',
      text: '迅速な配送',
      subtext: '注文を迅速かつ効率的にお届けします',
    },
    {
      imageUrl: '/img/undraw_docusaurus_react.svg',
      text: '品質保証',
      subtext: 'すべての製品で最高品質をお約束します',
    },
    {
      imageUrl: '/img/undraw_docusaurus_tree.svg',
      text: '24時間サポート',
      subtext: 'いつでもお客様をサポートします',
    },
  ];

  return (
    <Merits
      subtitle="選ばれる理由"
      meritsTitle="主なメリット"
      buttonText="詳しく見る"
      buttonHref="#about"
      items={items}
    />
  );
}
結果
Loading...

主要プロパティ

コアプロパティ

プロパティ必須デフォルト説明
subtitleReactNodeはい補助ヘッダー行(Merits.Header、プライマリカラー)
meritsTitleReactNodeはいMerits.Header のメイン見出し
items{ imageUrl: string; text: ReactNode; subtext: ReactNode }[]はいMerits.Content でマッピングされるメリットタイル
buttonTextstringはいMerits.ActionBar のデフォルト CTA ボタンのラベル
buttonHrefstringはいデフォルトの Merits.ActionBar.Button に渡される href

レイアウトと構成プロパティ

プロパティ必須デフォルト説明
childrenReactNode | functionいいえundefined複合サブコンポーネント(Merits.HeaderMerits.ContentMerits.ActionBar)、またはレイアウトブロックの注入・並べ替え用の関数 ({ defaultBlocks, defaultBlockOrder }) => ({ blocks, blockOrder })
classNamestringいいえundefinedルートスタックのクラス名(nbb-merits
sxSxPropsいいえundefinedルートスタック用の MUI システムスタイル
spacingStackProps['spacing']いいえ{ xs: 4, sm: 6 }ルートスタックの垂直方向の間隔

MeritsStackPropschildren を除く)を継承します。デフォルトの defaultBlockOrder: headercontentactionBar

サブコンポーネントのプロパティ

サブコンポーネントはコンテキストから読み取り、同じコンテンツキーをプロパティとして渡すとローカルで上書きできます。

サブコンポーネント主要プロパティ継承ベース
Merits.HeaderchildrenclassNamesxStackPropsStack + Typography
Merits.ContentitemschildrenclassNamesxStackPropsStack + Merits.Content.MeritImage + Merits.Content.MeritText
Merits.Content.MeritImagemeritSrcmeritAlt(デフォルト merit image)、classNamesxBoxPropsBoxcomponent="img"
Merits.Content.MeritTextchildrenclassNamesxTypographyPropsTypography
Merits.ActionBarbuttonTextbuttonHrefchildrenclassNamesxStackPropsStack + Merits.ActionBar.Button
Merits.ActionBar.ButtonchildrenhrefclassNamesxButtonPropsButtonvariant="contained"size="large"

デフォルト UI ブロック

ブロックベース備考
Merits(ルート)Stack縦レイアウト、レスポンシブな間隔(nbb-merits
headerMerits.HeaderStack + Typography中央揃えの subtitle(レスポンシブ h6/h4)とタイトル(レスポンシブで最大 45px
contentMerits.ContentStack + Dividersm+ では横並び。各項目: 画像フレーム、textMeritText)、subtextMeritSubtextbody1
actionBarMerits.ActionBarStack + ButtonbuttonHrefbuttonText 付き contained CTA。xs では全幅

デフォルトのルートレンダリング順序: headercontentactionBar

TypeScript

import * as React from 'react';
import { Merits } from '@nodeblocks/frontend-merits-block';
import type { ReactNode } from 'react';

type MeritItem = {
imageUrl: string;
text: ReactNode;
subtext: ReactNode;
};

type MeritsSectionProps = {
subtitle: ReactNode;
meritsTitle: ReactNode;
buttonText: string;
buttonHref: string;
items: MeritItem[];
};

export function MeritsSection({
subtitle,
meritsTitle,
buttonText,
buttonHref,
items,
}: MeritsSectionProps) {
return (
<Merits
subtitle={subtitle}
meritsTitle={meritsTitle}
buttonText={buttonText}
buttonHref={buttonHref}
items={items}
/>
);
}