01 Backbase 设计系统 界面预览 更改收款账户和金额,进行验证、审核并重置。不会发生资金转移。
独立的响应式 HTML 实现,采用已发布的默认按钮颜色;表单和布局由应用定制。并非 Backbase Angular 运行时。·
实现参考 Backbase 最新公开文档。Web 代码使用 @backbase/ui-ang;原生端的值已明确区分,不得将其视为 Angular CSS 变量。自定义客户主题可以替换默认值。
名称 / 规则 值 / 配置 用途 Selectorbutton[bbButton]采用 Backbase 样式的原生按钮语义。 buttonSizesm | md; default md选择文档中说明的尺寸。 colorprimary | secondary | tertiary | link-text | success | danger | neutral | dark视觉和语义变体。 typebutton by default在表单中明确设置提交按钮类型。 blockfalse设为 true 时,宽度将填满父容器。 circlefalse仅适用于没有文本的图标。
名称 / 规则 值 / 配置 用途 titlestring主标题 h2。 secondaryTitlestring上下文说明行。 reverseTitleOrdertrue控制标题顺序。 showCloseButtontrue对于固定显示的页面标题,请设为 false。 closeButtonAriaLabelstring为关闭操作命名。 closeEventEmitter<void>关联到实际的退出处理程序。 mode-header-utility-areaProjected content将上下文操作放在标题区域。
名称 / 规则 值 / 配置 用途 primary / default background#295eff 文档所述的默认调色板,并非适用于所有客户的品牌色。 primary / hovered background#2049c6 悬停状态。 primary / pressed background#152f80 按下状态。 primary / foreground#ffffff 主按钮上的文本。 secondary / default backgroundtransparent品牌边框和前景色。 secondary / pressed background#dee2ff 低调的界面表面。 danger / default background#bf2310 表示破坏性操作,而非审核操作。 disabled / background#ccd5df 与禁用行为配合使用。
名称 / 规则 值 / 配置 用途 theme.radius.button.default99UIKit 令牌表中的胶囊形状。 theme.height.button.sm32原生小尺寸高度。 theme.height.button.md44原生中尺寸高度。 theme.padding-x.button.sm16原生水平内边距。 theme.padding-x.button.md24原生水平内边距。 theme.border-width.button.default1原生边框宽度。 Button typefacepreferredFont(.body, .semibold)使用原生字体系统。
名称 / 规则 值 / 配置 用途 Theme sourceVisualizer export将 web/default 复制到项目样式中。 Font family sourcestyles/default/variables/_font-family.scss确保 @font-face 字体系列名称一致。 Root sizing16px optimal; supported up to 32px以 rem 为单位的主题尺寸。 Logo variantslight/dark × small/big为每种必需的资源分别提供文件;不要拉伸同一个徽标来代替。
03 Backbase 设计系统 完整指南 实用指南,介绍如何为真实界面选择、应用和评审此系统。
DESIGN-backbase.md 完整指导、实现起点和源代码链接。
下载指南 Backbase 设计系统 具有客户品牌特色的银行系统 为完整流程设置主题,而不是只为单个按钮设置主题 Backbase Visualizer 提供一组受支持的品牌基础元素,并可导出适用于 Web、iOS 和 Android 的主题。客户可以更改标题和正文的字体系列,并将品牌样式应用到组件和流程样式中。
此示例展示的是内部账户间转账审核。账户标识和金额均为虚构。视觉结构有意区分可编辑的草稿字段与最终的本地审核状态,而不会让人误以为点击后资金已转移。
阅读配套规范
Backbase 设计系统 客户主题必须在各个平台上正确应用 Visualizer 导出的内容不只有品牌色值 Visualizer 会分别生成 Web、iOS 和 Android 输出。对于 Web,导出的默认目录包含 Sass 设计令牌,logos 目录则包含品牌资源。应通过项目样式表应用 Web 输出,而不是将原生 JSON 尺寸复制到 Angular 覆盖样式中。
Web 主题说明要求提供浅色和深色徽标,并且每种颜色均需有小号和大号版本。字体文件需单独提供,其 @font-face 字体系列名称必须与导出的 font-family 配置一致。这样,银行流程中的标题、控件和品牌样式就能统一遵循同一客户主题。
审核示例有意止于由应用管理的草稿状态:更改收款账户或金额会清除之前的结果。此行为与主题导出无关,也不代表已执行付款或采用了特定银行的验证规则。
阅读配套规范
Backbase 设计系统 遵循导出的语义主题 将各平台的值保留在各自的上下文中 参考表包含默认按钮颜色和单独的 UIKit 尺寸分组。原生主题值 theme.height.button.md 并非可以粘贴到 Angular 应用中的 CSS 变量。Web 实现应使用导出的样式或已安装的 SCSS。
预览采用文档中说明的默认主蓝色和次级色调。整体面板内边距、摘要插图和响应式双栏布局均为应用层面的选择,与官方令牌明确区分。
阅读配套规范
Backbase 设计系统 加载所选品牌字体 仅有字体系列名称并不包含字体资源 Web 主题指南要求单独提供字体文件。@font-face 中的字体系列必须与导出的 $font-family 配置一致。文档中的示例字体并非 Backbase 要求全局使用的字体。
主题使用 rem 单位,并将 16 px 记为最佳根字号,同时支持最大 32 px。请在放大文字后测试完整的审阅流程。我们的独立浏览器实现使用系统字体,不会假设用户可用客户字体。
阅读配套规范
Backbase 设计系统 组合模式标题栏和按钮栏 将实际操作投影到情境化标题栏中 ModeHeaderModule 提供情境化标题,可选副标题和关闭控件。示例将 showCloseButton 设为 false,因为该示例没有可供关闭的外部路由。重置按钮使用 mode-header-utility-area 投影插槽。
ButtonModule 通过 bbButton 增强原生按钮。将 color 设为文档中说明的角色,并使用 buttonSize sm 或 md。圆形按钮仅适用于纯图标控件,不适合带文字的审阅操作。
单个本地审阅操作使用 primary。 可撤销的重置操作使用 secondary。 账户名称和金额应放在定义列表中,而不是装饰性按钮标签中。 阅读配套规范
Backbase 设计系统 在窄屏上也清晰易读的摘要 保持阅读顺序 原始插图展示了由方向路径连接的两个账户界面表面,体现转账关系,而不会变成第二个操作。在小屏幕上会省略装饰性的账户示意图,但所有账户文字仍清晰可见。
在 DOM 顺序中,编辑器位于审阅结果之前。原生标签、字段错误和状态区域仍可供键盘及屏幕阅读器用户使用。理解金额或收款方无需依赖仅在悬停时显示的详情。
阅读配套规范
Backbase 设计系统 连接已获授权的 Angular 环境 同时安装样式和模块 官方 Web 安装指南要求具有代码仓库访问权限,并单独导入全局 Backbase SCSS。只导入 ButtonModule 并不能提供完整的视觉环境。配置好所需软件包和样式后,可将独立示例挂载到现有 Angular 应用中。
使用已获授权的 repo.backbase.com 账户,以及所选版本要求的 Angular/Node 组合。 安装 @backbase/ui-ang,并将其全局 SCSS 添加到 angular.json 中已配置的样式表。 在使用该组件的组件中导入 ButtonModule 和 ModeHeaderModule,然后挂载完整示例并验证其重置/审阅流程。 阅读配套规范
Backbase 设计系统组件示例 完整的独立交互示例 将完整文档保存为 index.html 并在浏览器中打开。独立的响应式 HTML 实现采用已发布的默认按钮颜色;表单和布局为应用层面的设计。并非 Backbase Angular 运行时。
html 复制代码
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Transfer review</title><style>*{box-sizing:border-box}body{margin:0;color:#172b4d;background:#f3f5fa;font:16px/1.5 system-ui}header{background:white;border-bottom:1px solid #dce2ee;padding:24px 5%;display:flex;justify-content:space-between;gap:20px;align-items:center}h1{font-size:28px;margin:0}small{color:#566781}button{border:0;border-radius:99px;background:#295eff;color:white;min-height:44px;padding:10px 24px;font:600 15px system-ui;cursor:pointer}button:hover{background:#2049c6}button:active{background:#152f80}.secondary{background:white;border:1px solid #295eff;color:#295eff}.secondary:hover{background:#dee2ff}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #152f80;outline-offset:3px}main{display:grid;grid-template-columns:1.15fr 1fr;gap:40px;padding:36px 5%}.panel{background:white;border:1px solid #dce2ee;border-radius:16px;padding:28px}h2{font-size:20px;margin:0 0 20px}label{display:block;font-weight:600;font-size:14px;margin:20px 0 8px}input,select{width:100%;min-height:48px;border:1px solid #8090aa;border-radius:8px;padding:10px 12px;color:inherit;font:16px system-ui;background:white}p{font-size:14px;color:#566781}.from{padding:16px;background:#f3f5fa;border-radius:8px;font-size:14px}.from strong{display:block;font-size:17px}.review{width:100%;margin-top:18px}#error{color:#bf2310;margin:8px 0;min-height:21px}#result{padding:18px;border-left:4px solid #295eff;background:#edf2ff;margin-top:22px}#result:empty{display:none}svg{width:100%;max-height:200px}aside{padding:20px 10px}aside h2{font-size:24px;margin-top:24px}footer{padding:0 5% 22px;font-size:11px;color:#566781}@media(max-width:650px){header{align-items:flex-start;padding:20px;flex-wrap:wrap}h1{font-size:25px}main{grid-template-columns:1fr;padding:20px;gap:0}.panel{padding:20px}aside{padding:24px 0}svg{display:none}}</style><header><div><small>Accounts / Internal transfer</small><h1>Review your transfer</h1></div><button class="secondary" id="reset">Reset draft</button></header><main><section class="panel"><h2>Transfer details</h2><div class="from">From<strong>Everyday account · 2048</strong>Fictional account</div><form novalidate><label for="destination">To account</label><select id="destination"><option>Travel savings · 9012</option><option>Emergency savings · 3046</option></select><label for="amount">Amount in USD</label><input id="amount" value="120.00" inputmode="decimal" aria-describedby="error" autocomplete="off"><div id="error" role="alert"></div><button class="review" type="submit">Review details</button></form><div id="result" role="status"></div></section><aside><svg viewBox="0 0 360 190" aria-hidden="true"><rect x="10" y="15" width="205" height="120" rx="16" fill="#295eff"/><path d="M35 48H80M35 72H145" stroke="white" stroke-width="8" opacity=".7"/><rect x="143" y="76" width="205" height="110" rx="16" fill="#dee2ff" stroke="#295eff"/><path d="M168 106H213M168 130H278" stroke="#295eff" stroke-width="8"/><circle cx="254" cy="40" r="24" fill="white" stroke="#295eff"/><path d="M244 40H264M256 32L264 40L256 48" fill="none" stroke="#295eff" stroke-width="3"/></svg><h2>A clear check before<br>the next step.</h2><p>Review the destination and amount together. Editing either detail clears the previous review.</p><p><strong>Local demonstration.</strong> No account connection, balance check or payment submission takes place.</p></aside></main><footer>Independent Backbase interpretation · default button palette · system font fallback</footer><script>const form=document.querySelector('form'),amount=document.querySelector('#amount'),destination=document.querySelector('#destination'),error=document.querySelector('#error'),result=document.querySelector('#result');function clear(){result.textContent='';error.textContent='';amount.removeAttribute('aria-invalid')}form.oninput=clear;form.onchange=clear;form.onsubmit=e=>{e.preventDefault();clear();const s=amount.value.trim();if(!/^\d+(\.\d{1,2})?$/.test(s)||Number(s)<=0||!Number.isFinite(Number(s))){error.textContent='Enter a positive amount with up to two decimal places.';amount.setAttribute('aria-invalid','true');amount.focus();return}result.textContent='Reviewed locally: '+new Intl.NumberFormat('en-US',{style:'currency',currency:'USD'}).format(Number(s))+' to '+destination.value+'. No transfer submitted.'};document.querySelector('#reset').onclick=()=>{form.reset();clear()};</script></html>
代码参考
金额和收款方均为虚构信息。此 HTML 表单不连接银行;Angular ModeHeader 和 bbButton 示例需要获授权的 Backbase 软件包访问权限。 模式标题栏与本地审阅操作 一个独立的 Angular 组件,使用两个真实的 Backbase 模块、投影式重置操作和明确的本地状态。
TypeScript 复制代码
// transfer-review.component.ts — in an authorized Backbase Angular application
import { Component } from '@angular/core';
import { ButtonModule } from '@backbase/ui-ang/button';
import { ModeHeaderModule } from '@backbase/ui-ang/mode-header';
@Component({
selector: 'app-transfer-review',
standalone: true,
imports: [ButtonModule, ModeHeaderModule],
template: `
<bb-mode-header-ui title="Review transfer" secondaryTitle="Local demonstration"
[showCloseButton]="false">
<button bbButton color="secondary" mode-header-utility-area
(click)="reviewed = false">Reset review</button>
</bb-mode-header-ui>
<dl><dt>From</dt><dd>Everyday account · 2048</dd>
<dt>To</dt><dd>Travel savings · 9012</dd>
<dt>Amount</dt><dd>USD 120.00</dd></dl>
<p>No money is moved by this example.</p>
<div class="bb-button-bar">
<button bbButton class="bb-button-bar__button" [disabled]="reviewed"
(click)="reviewed = true">Mark as reviewed</button>
</div>
<p role="status">{{ reviewed ? 'Reviewed locally. No transfer submitted.' : 'Check the account details.' }}</p>
`
})
export class TransferReviewComponent { reviewed = false; }
代码参考
需要已安装的 Backbase 软件包和全局 SCSS,仅有公共 npm 访问权限并不足够。 button[bbButton] 提供该指令。ModeHeaderModule 提供 bb-mode-header-ui。 审阅标记不会触发付款操作。在真实转账流程中,提交必须作为单独且经确认的应用操作执行。 实现起点 请使用许可项目要求的版本兼容配置。确保 angular.json 包含全局样式表。对于较旧的 Angular 17 / ui-ang 11 配置,文档注明存在 esbuild 限制;ui-ang 12+ 支持 esbuild。本指南不提供软件包仓库凭据。
bash / scss 复制示例
# First obtain authorized npm access to repo.backbase.com.
# The linked installation guide specifies Node 20.11.1 and Angular 18+.
npm install --save @backbase/ui-ang
// At the top of the Angular application global styles.scss:
@import "@backbase/ui-ang/scss/main"; 适用于你项目的提示词 Agent 提示词 复制提示词
使用真实的 ButtonModule 和 ModeHeaderModule 导入项创建 Backbase Angular 转账确认界面。加载已获授权的软件包样式和客户主题。将平台专用令牌分开管理。验证应用数据,在用户编辑时清除过期的审阅结果,并且绝不要将本地示例说成已提交的付款。 访问 Backbase 软件包需要已获授权的代码仓库账户。浏览器预览是独立的 HTML 实现,并非 Backbase Angular。其蓝色配色遵循已发布的默认按钮颜色;面板间距和插图属于应用层面的设计。下方原生尺寸均已标明所属平台。