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

パスワードリセットブロック

ResetPasswordコンポーネントは、ReactとTypeScriptで構築された完全にカスタマイズ可能でアクセシブルなパスワードリセットフォームです。モダンなデザインパターン、リクエストと確認フローの両方に対応したデュアルビューサポート、柔軟なカスタマイズオプションを備えた完全なパスワードリセットインターフェースを提供します。


🚀 インストール

npm install @nodeblocks/frontend-reset-password-block

📖 使用方法

import {ResetPassword} from '@nodeblocks/frontend-reset-password-block';
ライブエディター
function BasicResetPassword() {

  const [view, setView] = useState<'request' | 'confirm_password'>('request');

  return (
    <ResetPassword
      view={view}
      onSendRequest={formData => {
        console.log('リセットリクエストが送信されました:', formData);
        setView('confirm_password');
      }}
      onResetPassword={formData => {
        console.log('パスワードがリセットされました:', formData);
        setView('request');
      }}>
      <ResetPassword.Title>
        {view === 'request' ? 'パスワードをリセット' : 'パスワード確認'}
      </ResetPassword.Title>
      <ResetPassword.Description>
        {view === 'request' ? 'リセット手順を受け取るためにメールアドレスを入力してください' : '新しいパスワードを入力してください'}
      </ResetPassword.Description>
      <ResetPassword.Form>
        <ResetPassword.Form.EmailField label="メールアドレス" placeholder="メールアドレスを入力してください" />
        <ResetPassword.Form.PasswordField label="新しいパスワード" placeholder="新しいパスワードを入力してください" />
        <ResetPassword.Form.ConfirmPasswordField label="パスワード確認" placeholder="新しいパスワードを再入力してください" />
        <ResetPassword.Form.ResetPasswordButton>パスワードをリセット</ResetPassword.Form.ResetPasswordButton>
      </ResetPassword.Form>
      <ResetPassword.Goto>
        <a href="#signin">サインインに戻る</a>
      </ResetPassword.Goto>
    </ResetPassword>
  );
}
結果
Loading...

🔧 プロパティリファレンス

メインコンポーネントのプロパティ

メインのResetPasswordコンポーネントは、HTML div要素のすべてのプロパティを継承し(childrenonSubmitはオーバーライド)、以下を追加します:

プロパティデフォルト説明
view'request' | 'confirm_password'必須表示するビューを決定 - メールリクエストフォームまたはパスワード確認フォーム
onSendRequest(data: T) => void必須リセットリクエストが送信されたときにトリガーされるコールバック関数
onResetPassword(data: T) => void必須新しいパスワードが送信されたときにトリガーされるコールバック関数
resetPasswordTitleReactNode"Reset Password"パスワードリセットフォームのタイトルコンテンツ
descriptionReactNode"Please enter your email address you registered"タイトル下に表示される説明テキスト
gotoSigninMessageReactNodeデフォルトサインインリンクナビゲーションリンクセクションのコンテンツ
classNamestringundefinedフォームコンテナスタイリング用の追加CSSクラス名
directionenum"column"アクションボタンのフレックス方向
alignItemsenum"stretch"コンテナ内のアイテムの整列
gapSizeenum"S"コンテナ内のアイテム間のギャップ
childrenBlocksOverrideundefinedデフォルトレンダリングをオーバーライドするカスタムブロックコンポーネント

サブコンポーネント

ResetPasswordコンポーネントは複数のサブコンポーネントを提供します。すべてのサブコンポーネントは、メインコンポーネントのコンテキストからデフォルト値を受け取り、プロパティを通じてこれらの値をオーバーライドできます。

ResetPassword.Title

プロパティデフォルト説明
childrenReactNodeコンテキストからタイトルコンテンツ - コンテキストのerrorTitleをオーバーライド
sizeenum"2XL"タイトルのタイポグラフィサイズ
typeenum"heading"タイポグラフィタイプ
colorenum"low-emphasis"タイトルのカラーテーマ
weightenum"bold"タイトルの太さ
classNamestringundefinedスタイリング用の追加CSSクラス名

ResetPassword.Description

プロパティデフォルト説明
childrenReactNodeコンテキストからタイトルコンテンツ - コンテキストのerrorTitleをオーバーライド
sizeenum"M"タイトルのタイポグラフィサイズ
typeenum"paragraph"タイポグラフィタイプ
colorenum"low-emphasis"タイトルのカラーテーマ
weightenum"regular"タイトルの太さ
classNamestringundefinedスタイリング用の追加CSSクラス名

ResetPassword.Form

プロパティデフォルト説明
view'request' | 'confirm_password'親から継承表示するフィールドを決定
onSendRequest(data: T) => void親から継承メール送信のコールバック
onResetPassword(data: T) => void親から継承パスワード確認のコールバック
classNamestringundefinedスタイリング用の追加CSSクラス名
childrenReactNodeコンテキストからカスタムフォームコンテンツ

ResetPassword.Form.EmailField

プロパティデフォルト説明
namestring"email"フォームデータに使用されるフィールド名
errorTextstringundefined入力のエラーテキスト
isDisabledbooleanundefined入力が無効かどうか
isRequiredbooleanundefined入力が必須かどうか
labelstring"Email"入力フィールドのラベル
labelWeightenum"bold"ラベルの太さ
classNamestringundefinedスタイリング用の追加CSSクラス名

注意: このコンポーネントは追加で一般的なHTML input要素プロパティを継承します。

ResetPassword.Form.PasswordField

プロパティデフォルト説明
namestring"password"フォームデータに使用されるフィールド名
errorTextstringundefined入力のエラーテキスト
isDisabledbooleanundefined入力が無効かどうか
isRequiredbooleanundefined入力が必須かどうか
labelstring"Password"入力フィールドのラベル
labelWeightenum"bold"ラベルの太さ
classNamestringundefinedスタイリング用の追加CSSクラス名
showPasswordbooleanundefinedパスワードを表示するかどうか
onShowPasswordClickfunctionundefinedパスワード表示の切り替えを処理する関数

注意: このコンポーネントは追加で一般的なHTML input要素プロパティを継承します。

ResetPassword.Form.ConfirmPasswordField

プロパティデフォルト説明
namestring"confirmPassword"フォームデータに使用されるフィールド名
errorTextstringundefined入力のエラーテキスト
isDisabledbooleanundefined入力が無効かどうか
isRequiredbooleanundefined入力が必須かどうか
labelstring"Confirm Password"入力フィールドのラベル
labelWeightenum"bold"ラベルの太さ
classNamestringundefinedスタイリング用の追加CSSクラス名
showPasswordbooleanundefinedパスワードを表示するかどうか
onShowPasswordClickfunctionundefinedパスワード表示の切り替えを処理する関数

注意: このコンポーネントは追加で一般的なHTML input要素プロパティを継承します。

ResetPassword.Form.ResetPasswordButton

プロパティデフォルト説明
childrenReactNodeコンテキストからボタン内に配置するテキスト
classNamestringundefinedスタイリング用の追加CSSクラス名
fillenum"fill"ボタンフィルスタイル
iconenumundefinedボタン左側のオプションアイコン
iconColorenumundefined左側アイコンの色。提供されない場合、フィルタイプのデフォルト色が使用されます
isDisabledbooleanfalseボタンが無効で使用できないかどうか
onClickfunctionundefinedボタンクリックを処理する関数
sizeenum"M"ボタンの縦サイズ
textAlignenum"center"ボタン内でのアイコンとテキストの位置
textColorenum"default"ボタンテキストの色
textEmphasisbooleanfalseボタンテキストの太さ
textSizeenum"M"ボタンテキストのサイズ
typeenum"submit"ボタンの目的(htmlタイプに影響)

注意: このコンポーネントは追加で一般的なHTML button要素プロパティを継承します。

ResetPassword.Goto

プロパティデフォルト説明
childrenReactNodeデフォルトサインインリンクナビゲーションリンクセクションのコンテンツ - 通常アンカータグを含む
classNamestringundefinedスタイリング用の追加CSSクラス名

🔧 TypeScript サポート

包括的な型定義による完全なTypeScriptサポート:

import {ResetPassword} from '@nodeblocks/frontend-reset-password-block';

// メールリクエスト用のデフォルトフォームデータ構造
interface ResetPasswordEmailData {
email?: string;
}

// パスワード確認用のデフォルトフォームデータ構造
interface ResetPasswordConfirmData {
password?: string;
confirmPassword?: string;
}

// 結合されたフォームデータタイプ
type ResetPasswordFormData = ResetPasswordEmailData | ResetPasswordConfirmData;

// カスタムフィールドで拡張
interface CustomResetPasswordFormData extends ResetPasswordFormData {
customField?: string;
}

const MyResetPasswordForm = () => {
const handleSendRequest = (formData: ResetPasswordFormData) => {
console.log('リセットリクエストが送信されました:', formData);
// メール送信を処理
};

const handleResetPassword = (formData: ResetPasswordFormData) => {
console.log('パスワードがリセットされました:', formData);
// パスワードリセットを処理
};

return (
<ResetPassword<CustomResetPasswordFormData>
view="request"
onSendRequest={handleSendRequest}
onResetPassword={handleResetPassword}
resetPasswordTitle="パスワードをお忘れですか?"
description="メールアドレスを入力していただければ、リセット手順をお送りします">
<ResetPassword.Title>パスワードをリセット</ResetPassword.Title>
<ResetPassword.Description>
ご心配ありません。よくあることです。下記にメールアドレスを入力してください。
</ResetPassword.Description>
<ResetPassword.Form>
<ResetPassword.Form.EmailField />
<ResetPassword.Form.PasswordField />
<ResetPassword.Form.ConfirmPasswordField />
<ResetPassword.Form.ResetPasswordButton>リセットリンクを送信</ResetPassword.Form.ResetPasswordButton>
</ResetPassword.Form>
<ResetPassword.Goto>
<span>
パスワードを思い出しましたか? <a href="/signin">サインイン</a>
</span>
</ResetPassword.Goto>
</ResetPassword>
);
};

React、TypeScript、モダンなウェブ標準を使用して❤️で構築されました。