@memohai/icon
v0.22.0
Published
本文定义图标层的目标契约。品牌图标通过 `@memohai/icon` 导出;界面图标通过 `@memohai/icon/ui` 导出,手写源码在 `src/ui/`,不受品牌生成器重写。Upload、Connector、Cloud、Computer 和 Settings 已接入该入口;其余界面图标按需迁移。
Downloads
355
Readme
Memoh 图标层标准
本文定义图标层的目标契约。品牌图标通过 @memohai/icon 导出;界面图标通过 @memohai/icon/ui 导出,手写源码在 src/ui/,不受品牌生成器重写。Upload、Connector、Cloud、Computer 和 Settings 已接入该入口;其余界面图标按需迁移。
职责与依赖
| 层 | 负责 | 不负责 | | --- | --- | --- | | 图标层 | SVG 图形、默认朝向、光学中心、视觉重量、来源与许可 | 菜单行高、图标槽、文字间距、业务行为 | | UI 组件层 | 图标槽的尺寸与居中、尺寸档位、状态颜色、交互动画 | 根据图标名称调整大小、旋转或偏移 | | 业务层 | 选择语义图标、提供动作名称和状态 | 修正 SVG 几何或复制图标实现 |
@memohai/icon 不依赖 @felinic/ui 或应用代码。Memoh 应用使用图标层;独立 UI 库通过图标 slot 接收业务图标,不为 Memoh 专用图标引入宿主依赖。UI 自身的通用指示图标可由其基础依赖提供,但不另行定义同一个 Memoh 语义图标。
命名与组织
- 界面图标按稳定语义命名,例如
ConnectorIcon、UploadIcon、CloudIcon,不使用Menu、Sidebar等调用位置前缀。 - 品牌图标保留现有导出与品牌识别特征,不强行转成单色线框。
- 界面图标与品牌 SVG 在包内分区维护;可以复用 Lucide,无须重新绘制每个图标。
- 每个语义图标只有一份定义。旧名称在迁移期仅转导出同一实现,不能复制图形或保留独立校准。
- 品牌生成器只重写
src/index.ts;界面图标使用独立的src/ui/index.ts与./ui子路径导出,生成品牌图标不得覆盖这个入口。
图形与光学校准
- 界面图标采用统一的
0 0 24 24坐标系;线框默认采用共享工厂的 1.75 单位笔画、圆端点和圆连接,颜色继承currentColor。 - 外部 SVG 按该坐标系适配,保留来源、版本或源文件位置和许可证。品牌图标可保留原始 viewBox 与颜色。
- 外层尺寸由控件统一决定。视觉上偏小、偏心或朝向不合适时,在图标定义内部调整路径或 SVG 分组变换,不能把某个调用点的 16 改成 17 来补偿。
- 不按几何包围盒机械拉满:圆形、斜线、云形的视觉面积不同,以同一尺寸下的视觉重量和光学中心验收。
- 同一图标默认朝向在不同控件里一致。表示展开、排序或加载的状态运动由交互组件负责;它不是静态光学校准。
- 不暴露
offsetX、offsetY、opticalScale等调用层补偿参数。需要校准时修改唯一图标定义,并说明原因。
使用契约
- 图标输出真实 SVG,支持属性透传;图标定义不依赖 Tailwind 的旋转类才能呈现正确形状。
- 图标外框尺寸沿用 UI 现有 12 / 14 / 16 档位,由组件尺寸 token 控制。新增档位属于组件尺寸体系,不属于单个图标特例。
- 带文字的装饰图标对辅助技术隐藏;仅有图标的按钮由按钮提供动作名称。独立表达信息的图标必须有可访问名称。
- 业务页面不新增针对单个图标的旋转、平移、缩放或笔画覆盖。尚未纳入图标层的现有 Lucide 使用可暂时保留;需要定制时先纳入图标层。
验收与迁移
新增或调整图标时,在同一对照页展示默认、12 / 14 / 16 尺寸、深浅主题以及菜单、按钮、侧栏的真实组合。检查光学中心、视觉重量、裁切、文字对齐和缩放后笔画;不能只用编译成功证明视觉一致。
已迁移 Upload、Connector、Cloud、Computer、Settings 的相关调用并移除未发布的 menu-icons 过渡入口;后续图标沿用包内定义和稳定导出。保持现有品牌图标导出兼容,不进行无关的全站替换。重复渲染含 SVG ID 的图标不得产生 ID 冲突。
完成条件是图标只有一处定义、调用处无几何补偿、生成命令不破坏导出,以及对照页的实际视觉检查。当前文档建立标准,并不代表迁移、视觉验收或自动规则检查已经完成。
控件组合与校准范围
- 同一工具栏中的同级操作沿用同一 Button variant / tone 的颜色与状态。图标继承按钮的
currentColor,调用层不在图标或按钮上覆盖颜色、透明度、笔画来调整视觉重量。辅助说明和禁用状态仍由对应组件管理。 - 工具栏次要操作使用
Button variant="ghost" tone="muted":默认继承 muted-foreground,hover、键盘聚焦或菜单展开时恢复 foreground;菜单条目保留菜单组件的颜色。tone 只适用于 ghost,不改变主按钮或危险操作。 - Add 与 Computer 均使用共享默认笔画。几何校准保留在各自定义中;校准时同时比较同组图标,不以单个截图决定是否新增例外。
- 菜单操作的颜色、占位由共享菜单组件管理;组件库自有的方向提示由组件库管理,不依赖 Memoh 图标包。相同数值不意味着两种职责需要共享宿主依赖。
- 当前组合覆盖输入框 Add / Computer、顶部面板操作菜单和它们的子菜单。未迁移的其他页面不代表已经符合该契约。
