npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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、顶部面板操作菜单和它们的子菜单。未迁移的其他页面不代表已经符合该契约。