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

サインインブロック

SignIn は MUI 上に構築された制御されたサインインフォームブロックです。

インストール

npm install @nodeblocks/frontend-signin-block

必要なもの

項目重要な理由
dataフォーム state の単一の信頼できる情報源
onDataChange検証や分析のために更新済み state とメタデータを受け取ります
errors (optional)フィールド単位のエラーフィードバックを表示します
signupUrl (optional)サインアップリンクの遷移先 URL(デフォルトは /auth/signup
resetPasswordUrl (optional)パスワードを忘れた場合のリンクの遷移先 URL(デフォルトは /auth/resetpassword
制御されたコンポーネント

SignIn はフォーム state を所有しません。state はアプリ側で保持し、data を通じて渡してください。

コード例

ライブエディター
function Example() {
  const defaultData = {
    email: '',
    password: '',
  };

  const [data, setData] = React.useState(defaultData);

  return (
    <SignIn
      data={data}
      onDataChange={(nextData) => {
        setData(nextData);
      }}
    />
  );
}
結果
Loading...

重要な props

コア props

プロパティ必須デフォルト説明
dataSignInFormData ({ email, password } or extended Record<string, unknown>)Yes-現在のフォーム data オブジェクト
onDataChange(data, meta) => voidYes-更新時に呼び出されます。meta には name, value, cause (input, change, blur, clear, reset, programmatic), optional event が含まれます
errors{ [fieldName: string]: string | string[] }Noundefineddata のフィールドパスに紐づくフィールドエラー(例: email, password、または data を拡張した場合のネストされたパス)

コンテンツ props

プロパティ必須デフォルト説明
labels{ signInTitle?, emailField?, passwordField?, signInButton?, gotoSignUp?, resetPassword? }NosignInTitle: 'Sign In', emailField: 'Email', passwordField: 'Password', signInButton: 'Sign In', gotoSignUp: 'Create an account', resetPassword: 'Forgot your password?'デフォルトのテキストラベルを上書きします
placeholders{ emailField?, passwordField? }NoemailField: 'Please enter your email', passwordField: 'Please enter your password'メール / パスワードのプレースホルダーを上書きします
signupUrlstringNo/auth/signupサインアップリンクの遷移先 URL
resetPasswordUrlstringNo/auth/resetpasswordパスワードリセットリンクの遷移先 URL

レイアウトと構成 props

プロパティ必須デフォルト説明
childrenBlocksOverride | ReactNodeNoundefinedデフォルトのブロックを上書きするか、カスタムの JSX children を提供します
blockSpacingBeforePartial<Record<string, number | Partial<Record<'xs' | 'sm' | 'md' | 'lg' | 'xl', number>>>>No{ passwordField: { xs: 3, sm: 4 } }列挙されたブロックの前に置くテーマ間隔。デフォルトブロックまたはブロック上書きパターンにのみ適用されます
componentReact.ElementTypeNo'form'ルート要素の型
classNamestringNoundefinedルートコンテナのクラス名
sxSxPropsNoundefinedルートコンテナ向けの MUI システムスタイル

SignInStackProps<'form'>children を除く)も継承するため、onSubmitidnoValidate などの標準的な form / stack props がサポートされます。上書きなしのデフォルトのブロック順は signInTitle, emailField, passwordField, signInButton, resetPassword, gotoSignUp (defaultBlockOrder) です。

デフォルト UI ブロック

ブロック基盤補足
SignIn (root)Stack (component="form")制御されたフォームコンテナ。最大幅 496px、中央寄せのカードレイアウト
SignIn.SignInTitleTypographyタイトルテキストブロック(variant="h4")。labels.signInTitle または children で上書き可能
SignIn.EmailFieldTextFieldメール入力(name="email", autoComplete="username"
SignIn.PasswordFieldTextField + IconButton表示切り替え付きのパスワード入力。autoComplete="current-password"
SignIn.SignInButtonButton送信ボタン(variant="contained", size="large", type="submit", fullWidth
SignIn.ResetPasswordBox + Linkパスワードを忘れた場合のリンク。resetPasswordUrl またはカスタム children を使用
SignIn.GotoSignUpBox + Linkサインアップへのナビゲーションリンク。signupUrl またはカスタム children を使用

追加のフィールドプリミティブ

プリミティブ基盤補足
SignIn.TextFieldTextField汎用テキスト入力
SignIn.TimeFieldTextField時刻入力(type="time"
SignIn.CheckboxFieldCheckbox + FormControlヘルパーテキスト / エラーテキスト付きのチェックボックス
SignIn.SelectFieldSelect + TextFieldMUI TextField 経由で表示されるセレクト入力

TypeScript

import {SignIn, SignInFormData} from '@nodeblocks/frontend-signin-block';

type MySignInData = SignInFormData & {
rememberMe?: boolean;
};