// ============================================================
// 注册表单 — 字段配置（纯数据，驱动 UI 渲染）
// 修改校验规则或字段属性只需改此文件，无需动 UI 代码
// ============================================================

import type { FieldConfig } from '../model/types';

export const registerFields: FieldConfig[] = [
   {
      name: 'username',
      label: '用户名',
      placeholder: '3~64位，字母/数字/-/_/.',
      inputType: 'text',
      rules: [
         { required: true, message: '请输入用户名' },
         { minLen: 3, message: '用户名至少 3 位' },
         { maxLen: 64, message: '用户名最多 64 位' },
         { pattern: /^[a-zA-Z0-9\-_.]+$/, message: '仅允许字母、数字、-、_、.' },
      ],
   },
   {
      name: 'password',
      label: '密码',
      placeholder: '6~128位',
      inputType: 'password',
      rules: [
         { required: true, message: '请输入密码' },
         { minLen: 6, message: '密码至少 6 位' },
         { maxLen: 128, message: '密码最多 128 位' },
      ],
   },
   {
      name: 'confirmPassword',
      label: '确认密码',
      placeholder: '请再次输入密码',
      inputType: 'password',
      rules: [{ required: true, message: '请再次输入密码' }],
   },
   {
      name: 'phone',
      label: '手机号',
      placeholder: '请输入手机号',
      inputType: 'tel',
      rules: [
         { required: true, message: '请输入手机号' },
         { minLen: 5, message: '手机号至少 5 位' },
         { maxLen: 32, message: '手机号最多 32 位' },
         { pattern: /^\+?[0-9]+$/, message: '手机号格式不正确' },
      ],
   },
   {
      name: 'sms_code',
      label: '短信验证码',
      placeholder: '请输入验证码',
      inputType: 'text',
      rules: [
         { required: true, message: '请输入验证码' },
         { minLen: 4, message: '验证码至少 4 位' },
         { maxLen: 8, message: '验证码最多 8 位' },
         { pattern: /^[0-9]+$/, message: '验证码仅允许数字' },
      ],
      extraAction: 'send-sms',
      cooldown: 60,
   },
   {
      name: 'device_id',
      label: '设备标识',
      placeholder: '网卡MAC地址',
      inputType: 'text',
      rules: [
         { required: true, message: '请输入设备标识' },
         { minLen: 8, message: '设备标识至少 8 位' },
         { maxLen: 128, message: '设备标识最多 128 位' },
      ],
   },
   {
      name: 'device_label',
      label: '设备标签',
      placeholder: '如"办公电脑"（可选）',
      inputType: 'text',
      optional: true,
      rules: [{ maxLen: 64, message: '设备标签最多 64 位' }],
   },
   {
      name: 'display_name',
      label: '个人昵称',
      placeholder: '如何称呼您（可选）',
      inputType: 'text',
      optional: true,
      rules: [{ maxLen: 32, message: '昵称最多 32 位' }],
   },
   {
      name: 'referral_code',
      label: '邀请码',
      placeholder: '如有邀请码请填写（可选）',
      inputType: 'text',
      optional: true,
      rules: [
         { maxLen: 32, message: '邀请码最多 32 位' },
         { pattern: /^[a-zA-Z0-9]*$/, message: '仅允许字母和数字' },
      ],
   },
];

/** 注册表单初始值 */
export const registerInitialValues = {
   username: '',
   password: '',
   confirmPassword: '',
   phone: '',
   sms_code: '',
   device_id: '',
   device_label: '',
   display_name: '',
   referral_code: '',
};
