01 · The challenge
A table carries a task, not just data.
A securities tool brings accounts, markets, positions, values and actions into a dense working surface. Visually similar controls can have very different consequences, so component boundaries cannot be based on appearance alone.
The aim was to reduce repeated interface construction while preserving business meaning. I researched component-library methods and business-unit decomposition with colleagues, then developed the relevant structures into components and guidelines.
Which account?
Account and market context determine how the data should be understood.
What is happening?
Default, selected, hover and no-data states need distinct feedback.
What can I do?
Each action belongs to a task and must retain its business meaning.
02 · Decomposition
Use business meaning to decide what can be shared.
For account positions, the table, account context and controls can become reusable units while keeping their relationships explicit. A shared structure only works when its meaning and behaviour match.
My responsibility included the relevant component design, usage specifications and ongoing maintenance. Where tasks have different rules, preserving those differences matters more than forcing consistency.
A component boundary is also a product-design decision.
03 · States
Let state change without moving the reading structure.
The source “Table / Account Positions” component includes default, selected, hover and no-data variants. Feedback needs to explain what changed while keeping information position and reading order stable.
The specification therefore addresses both appearance and behaviour across situations. Consistent state definitions also give maintenance work a shared reference.
| 序号 | 证券代码 | 证券名称 | 持仓数量 | 可卖数量 | 成本价 | 最新价 | 市值 | 盈亏金额 | 盈亏比例(%) | 今日买入 | 今日卖出 | 市场 | 资金账户 | 姓名 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 000001 | 平安银行 | 2500 | 2500 | 59.060 | 40.110 | 623,311.23 | −1623.31 | −24.13 | 2000 | 2000 | 沪A | 200000026 | 李永 |
| 2 | 000811 | 冰轮环境 | 2500 | 2500 | 192.440 | 109.130 | 962,211.20 | −1,123.13 | −10.21 | 600 | 600 | 沪A | 200000026 | 李永 |
| 3 | 002030 | 天奇股份 | 1400 | 1400 | 2.440 | 2.860 | 2,222,211.20 | 141,123.13 | 10.21 | 600 | 600 | 沪A | 200000026 | 李永 |
| 4 | 002031 | 达安基因 | 1400 | 1400 | 2.440 | 2.860 | 2,222,211.20 | 141,123.13 | 10.21 | 600 | 600 | 沪A | 200000026 | 李永 |
| 5 | 600000 | 浦发银行 | 100000 | 100000 | 12.000 | 34.170 | 61,506,000.00 | 399,021,131.00 | 341.00 | 0 | 0 | 沪A | 200000026 | 李永 |
| 6 | 600036 | 招商银行 | 11800 | 11800 | 10.230 | 34.170 | 61,506,000.00 | 399,021,131.00 | 341.00 | 0 | 0 | 沪A | 200000026 | 李永 |
| 7 | 600070 | 浙江富润 | 1133100 | 1133100 | 10.230 | 5.530 | 506,000.00 | −511,233.00 | −80.00 | 0 | 0 | 沪A | 200000026 | 李永 |
Default row: white, 1px dividers. Column order is reading order — identify the security, compare position with current value, then read profit and loss.
A code replica of the “Table / Account Positions” component: columns, values, colours (gain red #DF3537, loss green #1D9920, selected #F1F4FF, hover #E5E6E9) and row height are taken from the source screenshots. Values are the source file’s sample data; nothing connects to an account or market feed. The search field’s behaviour is not defined in the component, so only its appearance is kept.
04 · Specifications & maintenance
Share the structure; preserve the meaning of the action.
Buy, sell, confirm, cancel and input controls have related structures, but are not the same action. I maintained components and specifications to give repeated modules a consistent foundation while preserving these distinctions.
The components supported cross-project reuse and day/night theme adaptation. These experiences demonstrate a qualitative maintenance benefit; historical time savings were not measured.
05 · Outcome & reflection
A reusable design foundation starts with clear boundaries.
The delivery was Figma components, usage guidelines and maintenance. I contributed to the shared method research and business decomposition; software implementation was outside my responsibility.
To evaluate this approach further, I would compare repeated-module assembly time, omitted states and the effort needed to carry a change across instances. These measures would show more concretely whether reuse helps the team.
Source: Figma project file ↗ · Access follows the source file’s sharing settings.
