使い方ブロック
HowToUseコンポーネントは、ReactとTypeScriptで構築された完全にカスタマイズ可能でアクセシブルなステップバイステップガイドコンポーネントです。プロセスフロー、使用方法の説明、コールトゥアクションセクションを表示するための完全なインターフェースを、モダンなデザインパターンと柔軟なカスタマイズオプションとともに提供します。
🚀 インストール
npm install @nodeblocks/frontend-how-to-use-block@0.1.1
📖 使用法
import {HowToUse} from '@nodeblocks/frontend-how-to-use-block';
- 基本的な使用法
- 高度な使用法
function BasicHowToUse() {
return (
<HowToUse>
<HowToUse.Header subtitle="仕組み">
ステップ
</HowToUse.Header>
<HowToUse.CardList>
<HowToUse.Card
icon={<span>📝</span>}
headerContent="プロファイル作成">
サインアップして、スキルと経験を含むプロフェッショナルなプロファイルを作成します。
</HowToUse.Card>
<HowToUse.Card
icon={<span>🔍</span>}
headerContent="プロジェクト検索">
利用可能なプロジェクトを検索し、興味のあるものを見つけます。
</HowToUse.Card>
<HowToUse.Card
icon={<span>💬</span>}
headerContent="つながりを作る">
プロジェクトに応募し、潜在的な雇用主とつながります。
</HowToUse.Card>
</HowToUse.CardList>
<HowToUse.Footer
message="わずか1分で始められます!"
linkHref="#sign-up"
linkContent="無料サインアップ"
/>
</HowToUse>
);
}
function AdvancedHowToUse() {
return (
<HowToUse>
{({ defaultBlocks, defaultBlockOrder }) => ({
blocks: {
...defaultBlocks,
// 📋 プロパティオーバーライド付きカスタムヘッダー
header: {
...defaultBlocks.header,
props: {
...defaultBlocks.header.props,
subtitle: "🚀 成功への道のり",
className: "custom-header",
style: {
textAlign: 'center',
padding: '30px',
backgroundColor: '#f8f9fa',
borderRadius: '12px',
marginBottom: '40px'
},
children: "✨ 仕組み"
},
},
// 📚 完全なコンポーネントオーバーライド付きリッチカードリスト
cardList: (
<div style={{
display: 'grid',
gridTemplateColumns: 'repeat(auto-fit, minmax(300px, 1fr))',
gap: '30px',
padding: '20px 0'
}}>
<div style={{
backgroundColor: '#fff',
padding: '30px',
borderRadius: '16px',
boxShadow: '0 4px 20px rgba(0,0,0,0.1)',
textAlign: 'center',
border: '2px solid #e3f2fd',
transition: 'transform 0.3s ease'
}}>
<div style={{
fontSize: '3rem',
marginBottom: '20px',
background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',
WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}>
🎯
</div>
<h3 style={{
color: '#1976d2',
marginBottom: '15px',
fontSize: '1.5rem'
}}>
目標を設定
</h3>
<p style={{
color: '#666',
lineHeight: '1.6'
}}>
成功のためのパーソナライズされたロードマップを作成するために、キャリア目標を定義します。
</p>
</div>
<div style={{
backgroundColor: '#fff',
padding: '30px',
borderRadius: '16px',
boxShadow: '0 4px 20px rgba(0,0,0,0.1)',
textAlign: 'center',
border: '2px solid #e8f5e8',
transition: 'transform 0.3s ease'
}}>
<div style={{
fontSize: '3rem',
marginBottom: '20px',
background: 'linear-gradient(135deg, #4caf50 0%, #45a049 100%)',
WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}>
🌟
</div>
<h3 style={{
color: '#388e3c',
marginBottom: '15px',
fontSize: '1.5rem'
}}>
プロファイルを構築
</h3>
<p style={{
color: '#666',
lineHeight: '1.6'
}}>
スキル、経験、実績を紹介する魅力的なプロファイルを作成します
</p>
</div>
<div style={{
backgroundColor: '#fff',
padding: '30px',
borderRadius: '16px',
boxShadow: '0 4px 20px rgba(0,0,0,0.1)',
textAlign: 'center',
border: '2px solid #fff3e0',
transition: 'transform 0.3s ease'
}}>
<div style={{
fontSize: '3rem',
marginBottom: '20px',
background: 'linear-gradient(135deg, #ff9800 0%, #f57c00 100%)',
WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent'
}}>
🚀
</div>
<h3 style={{
color: '#f57c00',
marginBottom: '15px',
fontSize: '1.5rem'
}}>
旅を始める
</h3>
<p style={{
color: '#666',
lineHeight: '1.6'
}}>
機会に応募し、プロフェッショナルとつながり始めます
</p>
</div>
</div>
),
// 🎉 プロパティオーバーライド付きカスタムフッター
footer: {
...defaultBlocks.footer,
props: {
...defaultBlocks.footer.props,
message: "キャリアを変革する準備はできましたか? 🎯",
linkHref: "#get-started",
linkContent: "🚀 今すぐ旅を始める",
className: "custom-footer",
style: {
background: 'white',
color: 'white',
padding: '40px',
borderRadius: '16px',
textAlign: 'center',
marginTop: '40px'
}
},
},
},
blockOrder: defaultBlockOrder,
})}
</HowToUse>
);
}
🔧 プロパティリファレンス
メインコンポーネントプロパティ
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
className | string | undefined | コンテナのスタイリング用の追加CSSクラス名 |
children | BlocksOverride | undefined | 高度なカスタマイゼーション用のカスタムブロックオーバーライド |
注意: メインコンポーネントはすべてのHTML div要素プロパティを継承します。
サブコンポーネント
HowToUseコンポーネントは複数のサブコンポーネントを提供します。すべてのサブコンポーネントは、メインコンポーネントのコンテキストからデフォルト値を受け取り、プロパティを通じてこれらの値をオーバーライドできます。
HowToUse.Header
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
children | ReactNode | "STEP" | メインヘッダーテキストコンテンツ |
subtitle | ReactNode | "How it works" | メインヘッダーの下に表示されるサブタイトルテキスト |
注意: このコンポーネントはすべてのHTML div要素プロパティを継承します。
HowToUse.CardList
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
children | ReactNode | デフォルトカード配列 | 順番に表示するCardコンポーネントの配列 |
注意: このコンポーネントはすべてのHTML div要素プロパティを継承します。
HowToUse.Card
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
icon | ReactNode | 必須 | カードヘッダーに表示するアイコンまたは要素 |
headerContent | ReactNode | 必須 | カードのタイトルコンテンツ |
children | ReactNode | 必須 | カードの説明または本文コンテンツ |
注意: このコンポーネントはすべてのHTML div要素プロパティを継承します。
HowToUse.Footer
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
message | ReactNode | "Get started in just 1 minute!" | コールトゥアクションボタンの上に表示されるメッセージテキスト |
linkHref | string | "/sign-up" | コールトゥアクションボタンのURL |
linkContent | ReactNode | "Sign Up Free" | コールトゥアクションボタンのテキストコンテンツ |
children | ReactNode | undefined | フッターに表示する追加コンテンツ |
注意: このコンポーネントはすべてのHTML div要素プロパティを継承します。
🔧 TypeScriptサポート
包括的な型定義による完全なTypeScriptサポート:
import {HowToUse} from '@nodeblocks/frontend-how-to-use-block';
import {ComponentProps, ReactNode} from 'react';
// メインコンポーネントインターフェース
interface HowToUseProps extends Omit<ComponentProps<'div'>, 'children'> {
children?: BlocksOverride<DefaultBlocks, CustomBlocks>;
}
// サブコンポーネントインターフェース(すべてそれぞれのHTML要素から継承)
interface HeaderProps extends ComponentProps<'div'> {
subtitle: ReactNode;
}
interface CardProps extends ComponentProps<'div'> {
icon: ReactNode;
headerContent: ReactNode;
}
interface FooterProps extends ComponentProps<'div'> {
message: ReactNode;
linkHref: string;
linkContent: ReactNode;
}
// カスタムステップインターフェースの例
interface CustomStep {
icon: React.ReactNode;
title: string;
description: string;
}
const steps: CustomStep[] = [
{
icon: <span>📝</span>,
title: '登録',
description: 'アカウントとプロファイルを作成',
},
{
icon: <span>🔍</span>,
title: '検索',
description: 'スキルに合致するプロジェクトを見つける',
},
{
icon: <span>💼</span>,
title: '応募',
description: '興味深いプロジェクトに応募する',
},
];
// カスタムスタイリングとプロパティ付きの高度な例
function CustomHowToUse() {
return (
<HowToUse className="custom-how-to-use" id="getting-started-section" style={{padding: '2rem'}}>
<HowToUse.Header subtitle="はじめに" className="custom-header" style={{textAlign: 'center'}}>
仕組み
</HowToUse.Header>
<HowToUse.CardList className="custom-card-list" style={{maxWidth: '1200px', margin: '0 auto'}}>
{steps.map((step, index) => (
<HowToUse.Card
key={index}
icon={step.icon}
headerContent={step.title}
className="custom-step-card"
style={{backgroundColor: '#f8f9fa'}}
>
{step.description}
</HowToUse.Card>
))}
</HowToUse.CardList>
<HowToUse.Footer
message="今日から旅を始めましょう!"
linkHref="/get-started"
linkContent="今すぐ始める"
className="custom-footer"
style={{marginTop: '3rem'}}
/>
</HowToUse>
);
}
React、TypeScript、モダンWebスタンダードを使用して❤️で構築されました。