feat(ui): 文件二级页面间距规整(8px 网格)+ 浮窗默认尺寸改手机竖屏比例
- 文件页 chrome 行统一:路径行与树搜索行同为 41px 高(路径输入框改 border-box 28px 总高)、gap 统一 6px、内边距统一 6px 8px - 树体侧距 6→8px 对齐 chrome 行;markdown 预览 10/14→12/16(与错误 文案块一致);CodeMirror scroller 新增同款 12/16 内边距(预览/编辑 切换文字位置不跳);截断横幅 12→8px - 浮窗默认尺寸 480×360 → 390×780(1:2 手机竖屏比例),创建时先按 视口减 24px 钳制再居中,矮视口得到更矮的窗而非溢出 - 测试/文档同步:state/free-window 预期重算(含 clampMove 回推的 y=24 语义)、e2e 断言宽度上界、AGENTS §7.5 与设计文档
This commit is contained in:
+16
-7
@@ -120,9 +120,12 @@ export const BOTTOM_DEFAULT = 220
|
||||
* header plus some content), the ceiling is the viewport. */
|
||||
export const FLOAT_MIN_W = 320
|
||||
export const FLOAT_MIN_H = 200
|
||||
/** Geometry a fresh free window starts with (clamped to the viewport). */
|
||||
export const FLOAT_DEFAULT_W = 480
|
||||
export const FLOAT_DEFAULT_H = 360
|
||||
/** Geometry a fresh free window starts with: a phone-like portrait ratio
|
||||
* (390×780 ≈ 1:2). The creation path additionally caps the size to the
|
||||
* viewport (minus a 24px margin), so a short viewport gets a shorter —
|
||||
* not overflowing — window instead of an exact ratio. */
|
||||
export const FLOAT_DEFAULT_W = 390
|
||||
export const FLOAT_DEFAULT_H = 780
|
||||
|
||||
let nextIdCounter = 0
|
||||
/** Unique pane/tab id within one state instance. */
|
||||
@@ -777,11 +780,17 @@ export function floatTab(state: SidebarState, tabId: string, x: number, y: numbe
|
||||
if (leaf.tabs.length === 0) emptied = true
|
||||
})
|
||||
if (emptied) node = removeLeafAt(node, source.id)
|
||||
// Phone-ratio default, capped to the viewport before centering so the
|
||||
// clamped position never leaves the window's bottom past the fold.
|
||||
const vw = viewportW()
|
||||
const vh = viewportH()
|
||||
const width = Math.min(FLOAT_DEFAULT_W, Math.max(FLOAT_MIN_W, vw - 24))
|
||||
const height = Math.min(FLOAT_DEFAULT_H, Math.max(FLOAT_MIN_H, vh - 24))
|
||||
const window = clampFloatGeometry(
|
||||
x - FLOAT_DEFAULT_W / 2,
|
||||
y - FLOAT_DEFAULT_H / 2,
|
||||
FLOAT_DEFAULT_W,
|
||||
FLOAT_DEFAULT_H,
|
||||
x - width / 2,
|
||||
y - height / 2,
|
||||
width,
|
||||
height,
|
||||
)
|
||||
const next: SidebarState = {
|
||||
...state,
|
||||
|
||||
Reference in New Issue
Block a user