UI Design System
build dev

Login

登录整页:品牌区 + 认证表单 + 辅助入口。中文惯用名:登录页(5 种布局形态)。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.login
名称Login
二级分类业务组件(business)
用途登录整页:品牌区 + 认证表单 + 辅助入口
描述中文惯用名:登录页(5 种布局形态)。

预览

静态结构:布局五态——split 分栏(品牌面板 + 认证列,brandSide 控制方向、brandRatio 经 --login-grid 变量控制占比、窄屏品牌面板隐藏并改顶部品牌行)、centered 居中(整页渐变背景 + 居中身份 + 认证区 + 页脚)、brand-card(品牌区独立 Card + 右侧裸表单)、overlap(品牌卡与登录卡局部叠加)、backdrop(渐变品牌背景 + 悬浮认证卡);authVariant 三态(split/centered 生效)——plain 裸表单 / card 常规卡片 / float 大尺寸悬浮卡。认证区为 Form name="login" 内嵌 username / password 两个必填 Input(rules 必填校验 + i18n 文案)与全宽 submit Button,校验通过后 onSubmit 上抛 { username, password };registerLink / forgotLink 有 href 渲染 Link、无 href 渲染 button 并触发对应 onXxxClick;品牌 identity 仅配置 logo 或 name 时渲染,插画未传展示内置默认插画、传空串隐藏。

DSL 结构

DslNode
{
  "type": "Login",
  "props": {
    "layout": "split",
    "brand": {
      "name": "Pactor",
      "title": "资产化开发平台",
      "description": "组件 / 模板 / 规范一站式管理"
    },
    "title": "欢迎回来",
    "subtitle": "使用企业账号登录",
    "registerLink": {
      "text": "立即注册"
    },
    "forgotLink": {
      "text": "忘记密码"
    },
    "footer": "© 2026 Pactor"
  },
  "events": {
    "onSubmit": {
      "action": "setState",
      "params": {
        "loggingIn": true
      }
    },
    "onRegisterClick": {
      "action": "navigate",
      "params": {
        "to": "/register"
      }
    }
  }
}

何时用

何时使用

  • 登录整页:品牌展示区(logo / 名称 / 标语 / 插画)与认证表单(用户名 + 密码)组合。
  • 需要多种登录布局形态(分栏 / 居中 / 品牌卡 / 叠加 / 背景)按品牌调性切换。
  • 登录请求与后续跳转由页面编排(DSL events),组件只负责结构、校验与值上抛。

何时不用

  • 嵌入卡片 / 弹窗内的小型登录表单(非整页):使用 Form 自行组合。
  • 扫码登录等非常规认证形态(不在本组件范围,见设计文档 10 号变体说明)。

变体

变体视觉形态适用场景
split 分栏品牌面板 + 认证列网格分栏(brandSide / brandRatio 可调)常规企业登录页(默认)
centered 居中整页渐变背景 + 居中认证区轻品牌页、移动端优先
brand-card 品牌卡品牌区独立 Card + 裸表单品牌信息强的场景
overlap 叠加品牌卡与登录卡局部叠加视觉层次突出的营销型登录页
backdrop 背景渐变品牌背景 + 悬浮认证卡氛围型登录页
authVariant 认证区容器plain 裸表单 / card 卡片 / float 悬浮大卡在 split / centered 内微调认证区形态

API 属性

属性类型默认值说明
layout`'split''centered''brand-card'
brandSide`'left''right'`'left'
brandRationumber0.5品牌区分栏占比 0–1(实际钳制 0.2–0.8,仅 split)
authVariant`'plain''card''float'`
brandPanelBackgroundbooleantruesplit 品牌面板是否带渐变背景
decorbooleantrue是否渲染默认背景装饰(圆斑 / 圆环 / 点阵 / 流线)
brandLoginBrandInfo—品牌区配置:{ logo?, name?, title?, description?, illustration? };居中布局仅展示 logo + name
title / subtitlestringi18n pactor.login.title认证区标题 / 说明
usernameLabel / usernamePlaceholderstringi18n pactor.login.*用户名标签 / 占位
passwordLabel / passwordPlaceholderstringi18n pactor.login.*密码标签 / 占位
submitTextstringi18n pactor.login.submit提交按钮文案
registerLink / forgotLinkLoginLink—注册 / 找回密码入口:{ text, href? };有 href 渲染 Link,否则 button + 事件
footerstring—页脚文案(版权 / 协议行)
className / stylestring / CSSProperties—根节点样式
onSubmit(values: Record<string, unknown>) => void—校验通过后触发,参数 { username, password };登录请求与跳转由 DSL 编排
onRegisterClick / onForgotClick() => void—注册 / 找回密码按钮点击(仅对应 link 无 href 时)

使用规范

  • 登录请求与跳转一律放 DSL events(onSubmit 之后),组件不内置接口调用。
  • 文案优先用 props,缺省走 i18n(pactor.login.*);品牌信息用 brand 对象整组配置。
  • 布局形态(layout)与修饰配置(brandSide / authVariant / decor)正交组合,同一品牌换形态只改一个 prop。
  • 注册 / 找回密码入口未配置不渲染辅助行,避免空行占位。

正例

  • ✓ 企业门户:layout=split + brand(logo / name / title)+ registerLink 配置 href 跳注册页。
  • ✓ 营销活动页:layout=overlap + float 认证卡 + brand.description 强化品牌文案。

反例

  • ✕ 在 onSubmit 内直接发登录请求(应上抛值,由页面 / DSL 编排)。
  • ✕ 用 Login 承载注册、找回密码等非登录流程整页(应使用 Form 组合对应页面)。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。