Files
note2any/docs/UI_REFACTORING_SUMMARY.md
2025-10-21 21:47:02 +08:00

5.9 KiB
Raw Blame History

Note2Any UI 重构完成总结

概述

基于 Figma 设计,完成了 Note2Any 插件的微信公众号(wechat)和小红书(xhs)预览界面的统一重构。

重构目标

  1. 使用 Figma 设计:完全按照 Figma 设计规范重构 UI
  2. 统一布局wechat 和 xhs 使用共享的组件样式
  3. 清晰结构:代码易读、易维护、优雅
  4. 移除冗余:去除"代码高亮"选项,简化界面

完成的工作

1. 创建统一的 CSS 组件样式

文件src/shared-platform.css 和嵌入到 styles.css

包含的组件

  • .note2any-platform-container - 主容器
  • .note2any-platform-header - 顶部平台选择器栏(粉蓝渐变背景)
  • .note2any-platform-selector - 平台选择器区域
  • .note2any-button-group - 按钮组(刷新、发布、访问)
  • .note2any-button - 统一按钮样式(#4a68a7 蓝色)
  • .note2any-controls-row - 控制栏(账号、主题、宽度)
  • .note2any-field - 表单字段组件
  • .note2any-content-area - 内容预览区域(圆角、滚动)
  • .note2any-bottom-toolbar - 底部工具栏xhs 专用)
  • .note2any-fontsize-control - 字体大小控制
  • .note2any-stepper - 步进器(± 按钮)
  • .note2any-pagination - 分页控制
  • .note2any-slice-button - 切图按钮

2. 重构 wechat 预览界面

文件src/wechat/wechat-preview.ts

改动

  • 使用新的 note2any-platform-container 布局
  • 顶部统一的平台选择器栏(📱 公众号 + 刷新/发布/访问按钮)
  • "账号"选择器(原"公众号"
  • "主题"选择器(原"样式"
  • 移除了"代码高亮"选择器
  • 预览内容渲染到 note2any-content-area
  • 内容水平自适应宽度、居中,垂直弹性,带滚动条
  • 移除了旧的 Grid 单元格布局代码

3. 重构 xhs 预览界面

文件src/xiaohongshu/xhs-preview.ts

改动

  • 使用新的 note2any-platform-container 布局
  • 顶部统一的平台选择器栏(📔 小红书 + 刷新/发布/访问按钮)
  • "账号"选择器xhs 访问账号)
  • "主题"选择器
  • "宽度"输入框450px 格式)
  • 移除了"代码高亮"选择器
  • 预览内容渲染到 note2any-content-area
  • 底部工具栏包含:
    • 当前图按钮(原"当前页切图"
    • 字体大小控制(显示值 + ± 步进器)
    • 分页控制(上一页/当前页/总页数/下一页)
    • 全部图按钮(原"全部页切图"
  • 移除了旧的 Grid 卡片布局代码

4. 样式统一和优化

改动

  • 所有组件使用统一的颜色方案
  • 按钮使用 #4a68a7 蓝色hover 时变深
  • 顶部栏使用 Figma 设计的粉蓝渐变(#fbc2eb → #a6c1ee
  • 内容区域使用浅粉色背景(#f9f1f1
  • 容器背景使用浅蓝紫色(#c8caee
  • 统一的圆角、间距、字体
  • 响应式设计支持移动端

Figma 设计对照

Wechat 设计 (node-id: 35-17)

  • 顶部渐变栏
  • 平台选择器 "📱 公众号"
  • 三个操作按钮
  • 账号和主题选择器
  • 大的内容区域

Xhs 设计 (node-id: 36-171)

  • 顶部渐变栏
  • 平台选择器 "📔 小红书"
  • 三个操作按钮
  • 账号、主题和宽度输入
  • 大的内容区域
  • 底部工具栏(当前图、字体、分页、全部图)

技术要点

布局结构

.note2any-platform-container
├── .note2any-platform-header
│   ├── .note2any-platform-selector (平台选择 + emoji)
│   └── .note2any-button-group (刷新/发布/访问)
├── .note2any-controls-row
│   ├── .note2any-field-account (账号)
│   ├── .note2any-field-theme (主题)
│   └── .note2any-field-width (宽度 - xhs only)
├── .note2any-content-area
│   └── .note2any-content-wrapper
│       └── .note2any-content-inner (文章内容)
└── .note2any-bottom-toolbar (xhs only)
    ├── .note2any-slice-button (当前图)
    ├── .note2any-fontsize-control
    ├── .note2any-pagination
    └── .note2any-slice-button (全部图)

CSS Flexbox 布局

  • 主容器使用 flex-direction: column 垂直排列
  • 内容区域使用 flex: 1 自动填充剩余空间
  • 控制栏使用 flex-wrap: wrap 支持响应式换行

兼容性保留

  • 保留了隐藏的输入框以兼容现有逻辑
  • 保留了 updateStyleAndHighlight 方法签名
  • 分页和字体控制保留原有的数据结构

文件变更清单

新增文件

  • src/shared-platform.css - 共享平台样式(已嵌入到 styles.css

修改文件

  • src/wechat/wechat-preview.ts - 完全重构 build() 方法
  • src/xiaohongshu/xhs-preview.ts - 完全重构 build() 方法
  • styles.css - 添加共享平台样式到开头

删除的代码

  • wechat-preview.ts:

    • buildAccountRow()
    • buildStyleRow()
    • buildCoverRow()
    • createCell()
    • board 属性
    • highlightSelect 属性
  • xhs-preview.ts:

    • createGridCard()
    • highlightSelect 属性
    • 旧的 Grid 卡片布局代码

构建和部署

npm run build      # 编译 TypeScript
./build.sh        # 构建并部署到 Obsidian

构建成功,无编译错误

测试建议

  1. 打开 Obsidian 并重新加载插件
  2. 测试微信公众号预览:
    • 检查顶部栏、按钮和选择器显示
    • 测试刷新、发布、访问按钮
    • 检查预览内容滚动
  3. 测试小红书预览:
    • 检查顶部栏、按钮和选择器显示
    • 测试字体大小调整
    • 测试分页功能
    • 测试当前图和全部图切图
  4. 测试响应式布局(调整窗口大小)

下一步

  • 实现小红书"访问"按钮功能
  • 实现平台选择器的实际切换逻辑
  • 优化移动端响应式布局
  • 添加加载状态和错误提示

重构完成时间2025-01-21
重构者GitHub Copilot
状态 完成并部署