-
Notifications
You must be signed in to change notification settings - Fork 8
UI Design System
This page defines the Compose visual and layout baseline for Screen Remote. The project keeps Android interaction and window structures while adopting the density, grayscale, corners, and hierarchy of iOS-style utility interfaces. Tokens and shared components are authoritative; external prototypes are not copied pixel for pixel.
-
core/common/constants/CoreUiConstants.kt:IosDesignTokens,AppDimens, andAppTextSizes. -
core/designsystem/component/: shared dialog, section, selector, and dropdown primitives. -
feature/session/ui/component/SessionDialogRows.kt: session form rows. -
feature/session/ui/component/SessionDialogTextFields.kt: session input rows. -
feature/settings/ui/SettingsComponents.kt: settings sections and rows. -
core/designsystem/theme/Color.ktandcore/common/constants/AppColors.kt: light and dark semantic color levels. -
feature/session/ui/SessionManagementScaffold.kt: shared management card, control, top-bar, and drawer specifications. -
feature/session/ui/SessionManagementTerminalTheme.kt: the terminal's fixed dark palette.
Values in this page explain the current design; they do not replace code constants.
- Utility first: express hierarchy through spacing, grayscale, and dividers instead of strong shadows or decoration.
- Tokens first: pages must not create a second system of corners, colors, spacing, or type sizes.
- Shared shells first: windows use
DialogPage,DialogContainer, andDialogHeader; lists use the existing section/card/row structures. - Verify both themes: inspect every visual change in light and dark mode.
- Preserve Android semantics: iOS styling must not weaken back behavior, scrolling, keyboard avoidance, accessibility, or existing help affordances.
| Meaning | Current value |
|---|---|
| Form row | 40.dp |
| Dialog header | 50.dp |
| Dialog corner | 8.dp |
| Card corner | 12.dp |
| Management compact control height / corner |
38.dp / 18.dp
|
| Compact/standard horizontal padding |
10.dp / 16.dp
|
| Compact/standard spacing |
12.dp / 16.dp
|
| Divider alpha | 0.3f |
| Title/body/caption size |
17sp / 15sp / 13sp
|
Add a token only when it carries cross-page meaning. A parameter used by one component should remain near that component.
| Level | Light mode | Dark mode |
|---|---|---|
| Page and ordinary dialog background | #F5F5F5 |
#121212 |
| Cards and grouped boxes | #FFFFFF |
#1E1E1E |
| Dialog header | #FFFFFF |
#1E1E1E |
| Higher overlay / alert | #FFFFFF |
#2C2C2E |
| Highest container | #E9E9EE |
#3A3A3C |
| Primary text | #1C1C1E |
#F2F2F7 |
| Secondary text | #6E6E73 |
#AEAEB2 |
- On Settings, labels such as General and ADB Management sit on the page background; the rounded box below each label that contains multiple rows is the card level. Ordinary dialog headers and cards use the same surface color, while the outer window keeps the page background; keep the structural levels distinct when reviewing UI.
- Light cards remain pure white
#FFFFFF. Hierarchy comes from the#F5F5F5outer background, restrained shadow, and dividers rather than making cards gray-white. - Dark cards remain
#1E1E1E; ordinary page background is#121212, while alerts and high overlays use the brighter dark gray. -
surfaceVariantand translucent accents are for selection, status, inputs, or compact action controls, not ordinary card backgrounds.
- Center titles and keep stable widths for the two action slots.
- Content may scroll. Small screens adapt by shrinking width and scrolling, not by compressing core control heights.
- Cards use restrained backgrounds and light dividers; section titles only communicate grouping.
- Use the
DialogPagefamily for ordinary windows and the appropriate alert component for warnings. - Ordinary dialogs use an
8.dpouter corner. The alert's22.dp, pill999.dp, and small icon-tile corners are explicit semantic exceptions and do not redefine the card baseline. - Settings groups, sections inside Edit Session, ordinary management cards, and management top cards use
12.dp. - USB device windows use
DialogContainer,DialogHeader, shared content padding, and consistent refresh, loading, and empty-state structures instead of a private header implementation.
Different interaction types require different width models:
- Input row: the editor consumes remaining width and keeps end padding so a right-aligned cursor does not cover the final character.
- Switch row: reserve only fixed switch space on the right and let the left title use the remainder.
- Selection row: use a stable value area, group the value with its icon, and keep internal padding.
- A title and its help icon form one content group; the icon follows the text rather than the container edge.
These are the durable conclusions from the former Edit Session Dialog layout notes; the one-off fix narrative is no longer maintained separately.
Compact density is an explicit current choice: Settings items and Edit Session form rows remain 40.dp. Management search fields, command input, and compact action buttons use a 38.dp height and 18.dp corner. Do not expand them back to the 48.dp Material default automatically, and do not apply the management-control height to Settings form rows.
- Home session cards:
120.dphigh,12.dpcorner,2.dpshadow,16.dppage horizontal padding, and16.dpcard spacing. Colored cards express Home identity and do not replace theme semantic colors. - Settings and Edit Session: use
DialogPage,SectionCard, and shared rows. Settings cards and sections inside Edit Session both use12.dp; form rows remain40.dp. - Management: the shared page frame occupies
98%of the window width; its detail content occupies95%of the window and shares the top row inside that frame. The frame clips its bottom corners to12.dp. Ordinary and top cards useSessionManagementCardShape(12.dp). Search and action controls useSessionManagementControlHeight(38.dp) andSessionManagementControlShape(18.dp). Status badges and pills are exempt from this corner rule. - Shadows distinguish hierarchy rather than decorate: Settings cards normally use
0.5.dp, ordinary management cards are flat (0.dp) inside the shared frame, Home session cards use2.dp, and overlays such as the drawer may use more.
The management terminal uses the fixed dark background #18181A under both light and dark app themes so command output contrast and semantic highlighting remain stable. Error, warning, success, match, number, string, and path colors come from SessionManagementTerminalTheme.kt. The terminal's outer surface still follows the management-card 12.dp corner. This is an intentional theme exception and its colors must not be copied to other management pages.
- Page, dialog, header, card, and divider levels must be distinct but restrained.
- Use accent color only for clear actions or states, not large decorative areas.
- Prefer
MaterialThemeand project tokens; feature pages must not hard-code colors. - User-visible strings come from bilingual text objects; see Bilingual Text and Copy.
- Change a token or shared component before changing individual pages.
- Inspect affected session editing, settings, pairing, management, and selector screens.
- Verify light mode, dark mode, small screens, and the keyboard-visible state.
- Confirm there is no premature truncation, edge crowding, asymmetric action slot, or reduced touch target.
- Run compilation and relevant Compose/state tests for visual changes.
- Verify the actual level being changed: page, dialog, header, card, control, badge, and terminal must not be collapsed into one generic “box.”
- Copying a local set of
dp,sp, colors, and corners into a page. - Adding a page-specific wrapper that duplicates an existing component.
- Converting every dialog into a full-screen navigation page.
- Treating a fixed-pixel screenshot as the only acceptance criterion across devices.
Related: Session Parameter Selectors, Remote Interaction Performance and Floating Menu, and Engineering and Verification Rules.
- Overview / 总览
- Quick Start / 快速开始
- Connection & Pairing / 连接设备与配对
- Session Management / 会话管理
- Remote Control / 远程控制
- Settings / 设置
- Management Features / 管理功能
- FAQ / 常见问题
- Overview / 总览
- Technical Index / 技术文档索引
- Audit Checklist / 初始化与更新清单
- Conventions / 文档维护约定
- Architecture / 架构
- Module Map / 模块地图与边界
- Runtime Path / 运行时主链路
- Session State / 会话状态与事件
- Session Lifecycle / 会话配置与连接生命周期
- ADB, USB & Wireless / ADB、USB 与无线
- ADB Lifecycle / ADB 连接生命周期
- Pairing / 设备配对与无线调试
- Codecs / 编码与解码
- Remote Interaction / 远程交互性能与悬浮菜单
- Clipboard / 剪贴板同步
- Management / 管理功能
- Events & Shell / 事件、监控与 Shell
- Logging / 日志系统与维护
- Troubleshooting / 分层排障方法
- UI Design / UI 设计系统
- Bilingual Copy / 双语与文案
- Remote UI Analysis / 远程 UI 布局分析
- Engineering Rules / 工程与验证规则
- External Research / 外部研究与取舍
Technical topics appear here only after their page-level audit is complete. / 技术主题仅在完成逐页审核后加入侧边栏。