Footerブロック
Footerコンポーネントは、ReactとTypeScriptで構築された完全にカスタマイズ可能でアクセシブルなフッターセクションです。モダンなデザインパターン、ロゴ表示、コンテンツセクション、柔軟なカスタマイズオプションを備えた完全なWebサイトフッターインターフェースを提供します。
🚀 インストール
npm install @nodeblocks/frontend-footer-block
📖 使用法
import {Footer} from '@nodeblocks/frontend-footer-block';
- 基本的な使用法
- 高度な使用法
ライブエディター
function BasicFooter() { return ( <Footer logoSrc="/img/icon-small.png" content={ <div> <p>ビジネスソリューションの信頼できるパートナー。</p> <p>お問い合わせ: info@example.com | +1 (555) 123-4567</p> </div> } copyright="© 2024 あなたの会社名. All rights reserved."> <Footer.Logo /> <Footer.Content /> <Footer.Copyright /> </Footer> ); }
結果
Loading...
ライブエディター
function AdvancedFooter() { return ( <Footer logoSrc="/img/icon-small.png" content={ <div> <p>ビジネスソリューションの信頼できるパートナー。</p> <p>お問い合わせ: info@example.com | +1 (555) 123-4567</p> </div> } copyright="© 2024 あなたの会社名. All rights reserved."> {({ defaultBlocks, defaultBlockOrder }) => ({ blocks: { ...defaultBlocks, // 🏢 プロパティオーバーライド付きカスタムロゴ logo: { ...defaultBlocks.logo, props: { ...defaultBlocks.logo.props, className: "custom-footer-logo", }, }, // 📝 完全なコンポーネントオーバーライド付きリッチコンテンツ content: ( <div style={{ padding: '20px', backgroundColor: '#f8f9fa', borderRadius: '8px', border: '1px solid #e9ecef' }}> <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(250px, 1fr))'}}> <div> <h4 style={{ color: '#007bff', marginBottom: '10px' }}>🏢 会社</h4> <ul style={{ listStyle: 'none', padding: 0 }}> <li><a href="#about" style={{ color: '#6c757d', textDecoration: 'none' }}>私たちについて</a></li> <li><a href="#careers" style={{ color: '#6c757d', textDecoration: 'none' }}>採用情報</a></li> <li><a href="#press" style={{ color: '#6c757d', textDecoration: 'none' }}>プレス</a></li> </ul> </div> <div> <h4 style={{ color: '#28a745', marginBottom: '10px' }}>📞 連絡先</h4> <p style={{ color: '#6c757d', margin: '5px 0' }}>📧 info@example.com</p> <p style={{ color: '#6c757d', margin: '5px 0' }}>📱 +1 (555) 123-4567</p> <p style={{ color: '#6c757d', margin: '5px 0' }}>📍 123 Business St, City, State</p> </div> </div> </div> ), // ⚖️ プロパティオーバーライド付きカスタム著作権 copyright: { ...defaultBlocks.copyright, props: { ...defaultBlocks.copyright.props, style: { backgroundColor: '#343a40', color: '#ffffff', padding: '15px', borderRadius: '4px', textAlign: 'center', marginTop: '20px' }, children: ( <div> <p style={{ margin: '0 0 8px 0' }}>© 2024 カスタム会社. All rights reserved.</p> <div style={{ fontSize: '14px', opacity: 0.8 }}> <a href="#privacy" style={{ color: '#ffffff', marginRight: '15px' }}>プライバシーポリシー</a> <a href="#terms" style={{ color: '#ffffff', marginRight: '15px' }}>利用規約</a> <a href="#cookies" style={{ color: '#ffffff' }}>Cookieポリシー</a> </div> </div> ) }, }, }, blockOrder: defaultBlockOrder, })} </Footer> ); }
結果
Loading...
🔧 プロパティリファレンス
メインコンポーネントプロパティ
プロパティ | 型 | デフォルト | 説明 |
---|---|---|---|
logoSrc | string | 必須 | フッターに表示するロゴ画像のURLまたはパス |
content | ReactNode | 必須 | フッターのメインコンテンツセクション(テキスト、リンクなどを含む) |
copyright | ReactNode | 必須 | フッターの下部に表示する著作権テキストまたはコンポーネント |
className | string | undefined | フッターコンテナのスタイリング用の追加CSSクラス名 |
children | BlocksOverride | undefined | デフォルトレンダリングをオーバーライドするカスタムブロックコンポーネント |
注意: メインコンポーネントはすべてのHTML footer
要素プロパティを継承します。
サブコンポーネント
Footerコンポーネントは複数のサブコンポーネントを提供します。すべてのサブコンポーネントは、メインコンポーネントのコンテキストからデフォルト値を受け取り、プロパティを通じてこれらの値をオーバーライドできます。
Footer.Logo
プロパティ | 型 | デフォルト | 説明 |
---|---|---|---|
src | string | コンテキストのlogoSrc | ロゴ画像のURLまたはパス(コンテキストのlogoSrcをオーバーライド) |
注意: このコンポーネントはすべてのHTML img
要素プロパティを継承します。
Footer.Content
プロパティ | 型 | デフォルト | 説明 |
---|---|---|---|
children | ReactNode | コンテキストのcontent | フッターコンテンツセクションに表示するコンテンツ(コンテキストのcontentをオーバーライド) |
注意: このコンポーネントはすべてのHTML div
要素プロパティを継承します。
Footer.Copyright
プロパティ | 型 | デフォルト | 説明 |
---|---|---|---|
children | ReactNode | コンテキストのcopyright | 表示する著作権テキストまたはコンテンツ(コンテキストのcopyrightをオーバーライド) |
注意: このコンポーネントはすべてのHTML div
要素プロパティを継承します。
🔧 TypeScriptサポート
包括的な型定義による完全なTypeScriptサポート:
import {Footer} from '@nodeblocks/frontend-footer-block';
import {ComponentProps, ReactNode} from 'react';
// メインコンポーネントインターフェース
interface FooterProps extends Omit<ComponentProps<'footer'>, 'content'> {
logoSrc: string;
content: ReactNode;
copyright: ReactNode;
children?: BlocksOverride<DefaultBlocks, CustomBlocks>;
}
// コンテキストタイプ(すべてのサブコンポーネントに渡される値)
interface FooterContextValue {
logoSrc: string;
copyright: ReactNode;
content: ReactNode;
}
// 包括的なフッターコンテンツの例
function CustomFooter() {
return (
<Footer
logoSrc="/assets/company-logo.svg"
content={
<div>
<div>
<h4>連絡先情報</h4>
<p>メール: info@company.com</p>
<p>電話: +1 (555) 123-4567</p>
<p>住所: 123 Business St, City, State 12345</p>
</div>
<div>
<h4>クイックリンク</h4>
<ul>
<li>
<a href="#about">私たちについて</a>
</li>
<li>
<a href="#services">サービス</a>
</li>
<li>
<a href="#contact">お問い合わせ</a>
</li>
</ul>
</div>
</div>
}
copyright="© 2024 あなたの会社名. All rights reserved."
className="custom-footer">
<Footer.Logo className="company-logo" alt="会社ロゴ" />
<Footer.Content className="footer-main-content" />
<Footer.Copyright className="footer-copyright" style={{fontSize: '14px', color: '#666'}}>
© 2024 カスタム会社. All rights reserved. | プライバシーポリシー | 利用規約
</Footer.Copyright>
</Footer>
);
}
React、TypeScript、モダンWebスタンダードを使用して❤️で構築されました。