Comp AI CRM 图标设计工程指南:让图标在界面中自然安放的细节法则
后端前端CRM人工智能AI Agent【免费下载链接】crmComp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM.项目地址https://gitcode.com/gh_mirrors/crm48/crm点击查看免费下载本文以仓库内.agents/skills/better-ui/icons.md设计工程规范为主体结合 Comp AI CRM开源 Agentic-first CRM前端实际使用的 Lucide 图标体系与 shadcn/ui 配置系统讲解图标描边权重、状态着色、轮廓/填充语义、渲染尺寸设计以及 RTL 翻转五大法则。读完你将掌握一套可直接落地的图标使用规范——从「单个图标好不好看」进阶到「整套图标在界面里是否自洽」并能用 CSS 与 Tailwind 代码在真实组件中复现。图标是界面中最容易被低估的细节单个图标看起来没问题放进界面却总让人觉得「哪里不对」。Comp AI CRM 的设计工程技能集.agents/skills/better-ui/把这类问题归结为一条主线——图标的光学重量、状态表达、尺寸适配与方向语义。本文围绕该技能集中的 icons.md 展开并用仓库前端代码apps/app 与 packages/ui中的真实用法作为佐证。一、仓库里的图标事实基础Lucide 与currentColor在进入规范之前先确认本仓库的图标体系。Comp AI CRM 的 shadcn/ui 配置在两个层级都声明了统一的图标库apps/app/components.jsoniconLibrary: lucidepackages/ui/components.jsoniconLibrary: lucide对应到代码层面packages/ui的组件统一从lucide-react导入图标例如 accordion.tsx 的ChevronDownIcon / ChevronUpIcon、checkbox.tsx 的CheckIcon / MinusIcon、combobox.tsx 的ChevronDownIcon。这意味着全仓库共用一套 Lucide 线框图标其默认stroke-width为1.524px 网格、统一使用currentColor着色——这正是下文所有规范能够成立的前提图标库本身支持描边变体因此「描边匹配文字字重」与「状态用 CSS 驱动」两条规则在本仓库完全适用。仓库配置了style: radix-nova、baseColor: neutral与 CSS 变量模式见 apps/app/components.json图标作为独立层不受这些配置影响但仍应遵守「一表面一套描边策略」的约束。二、让图标与文字「同重」描边宽度匹配文本字重图标与相邻文字并排时视觉上应该承载相同的光学重量否则二者看起来不匹配细线图标配粗体文字显得「断了」粗重图标配常规文字则显得「吵闹」。核心做法是让图标描边宽度跟随文字字重变化相邻文字图标描边宽度24px 网格Regular40014–16px1.5pxMedium/Semibold500–6002pxBold700或强调的独立展示2.5px好与坏的对照!-- 好描边与标签字重匹配 -- button classflex items-center gap-2 font-semibold PlusIcon stroke-width2 classsize-4 / New project /button !-- 坏默认 1.5px 描边对着粗体标签 -- button classflex items-center gap-2 font-bold PlusIcon stroke-width1.5 classsize-4 / New project /buttonLucide 的 React 组件接受strokeWidth属性因此在 Comp AI CRM 中可直接这样调整PlusIcon strokeWidth{2} classNamesize-4 /React 中驼峰写法。注意class需改为classNamestroke-width改为strokeWidth。两条相关的一致性规则每个表面只采用一种光学策略。不要在同一个工具栏里混用描边约定互不兼容的图标库。如果所选图标库原生支持描边变体Lucide 即是就按上表让它匹配相邻文字否则保持该图标集的固有描边用尺寸或颜色来强调而不是换一套图标。图标尺寸相对文字的 x-height 设定。与文字内联时图标尺寸通常取1em–1.25em让二者随字号一起缩放。在 Tailwind 中即size-416px对应 14px 文字、size-520px对应 16px 文字这类配对或直接使用w-[1.2em]跟随字体大小。仓库中的落地参照spinner.tsx 通过strokeWidth控制加载指示器线条粗细dashboard-chart.tsx 同样使用描边参数证明「用描边而非换图」是团队既有做法。三、一份 SVG多种状态currentColor与 CSS 状态着色永远不要为 default / hover / selected / disabled 各准备一份图标资产。正确做法是用一个以currentColor绘制的 SVG让 CSS 状态驱动颜色。!-- 好一份资产状态交给 CSS -- svg fillnone strokecurrentColor stroke-width2…/svg.icon-button { color: oklch(0.552 0.016 285.938); } .icon-button:hover { color: oklch(0.21 0.006 285.885); } .icon-button[aria-pressedtrue] { color: oklch(0.623 0.188 259.815); } .icon-button:disabled { opacity: 0.4; }Tailwind 版本Comp AI CRM 使用 Tailwind见 packages/ui/src/styles/globals.cssbutton classtext-zinc-500 hover:text-zinc-900 aria-pressed:text-blue-600 disabled:opacity-40 BookmarkIcon / /button关键禁忌SVG 内部写死的fill#666会破坏这一机制。导入图标时若发现硬编码填充必须剥离为currentColor。Lucide 图标本身就是strokecurrentColor因此导入后无需处理但若从其他来源复制 SVG如设计稿导出的单色图标务必检查并替换。从仓库角度看这一规则与 globals.css 中定义的 CSS 变量令牌体系一致——颜色状态由 token 与工具类驱动而非为状态复制图标文件。四、轮廓为默认填充为激活用变体表达状态当图标集同时提供 outline 与 fill 两种变体时应把它们当作状态对使用而不是随意混用变体用途Outline默认状态工具栏、列表行、与文字内联Fill选中/激活状态当前标签页、已收藏的书签、已点赞的心形// 好变体传达状态 TabIcon variant{isActive ? solid : outline} / // 坏到处都是填充图标激活标签页反而失去了状态信号 TabIcon variantsolid /如果同一图标集没有 fill 变体Lucide 部分图标需要fillcurrentColor显式开启填充则用颜色 描边双重信号表达激活激活项用text-primary加粗描边未激活项用次级色。变体切换时的动画轮廓/填充之间的切换属于上下文图标动画。原文规范明确指出应使用 animations.md 中规定的精确交叉淡化数值——scale从0.25到1、opacity从0到1、blur从4px到0px使用 Motion 时transition: { type: spring, duration: 0.3, bounce: 0 }bounce 必须为 0无动效库时用 CSS 交叉淡化cubic-bezier(0.2, 0, 0, 1)且两个图标同时留在 DOM 中、其中一个绝对定位。这里不展开动画细节完整参数见 animations.md 的「Contextual Icon Animations」一节。五、按渲染尺寸设计16px 下依然可辨认一个在 48px 下很漂亮的图标缩到 16px 可能糊成一团。大尺寸下能看清的细节细内线、紧密字怀、细腻纹理在小尺寸时会发生模糊或锯齿。四条硬性要求在每个图标将要渲染的最小尺寸下测试它通常为16px它必须在那里依然可辨认。小场景优先用简化字形而不是等比缩小精细图稿。在渲染尺寸上对齐像素网格16px 图标如果用 24px 网格做分数缩放会渲染发软。使用图标集的原生网格尺寸16、20、24不要随意缩放。永远用 SVG不用位图同一份资产才能在任意密度下保持清晰。在 Comp AI CRM 中size-416px、size-520px正好对应 Lucide 原生网格工具栏图标一律用size-4行内强调图标可用size-5。避免size-[17px]这类非网格尺寸。六、RTL 下的图标翻转只翻方向相关的在dirrtl环境下只翻转含义与阅读方向绑定的图标其余保持原样翻转不翻转后退/前进箭头、导航中的 chevronLogo 与品牌标识文本块字形对齐、列表、缩进对勾checkmark扬声器/音量波纹沿阅读方向发散物理物件时钟、杯子、铅笔「发送」类方向字形媒体播放播放/快退参照磁带方向惯例保持 LTRCSS 实现仅镜像方向依赖图标/* 好只镜像方向依赖的图标 */ [dirrtl] .icon-directional { scale: -1 1; }Tailwind 实现ChevronRightIcon classicon-directional rtl:-scale-x-100 /两个进阶要点复合图标要逐部分分析徽标badge或斜杠叠加层在基础字形翻转后可能仍需保持原位。仅图标按钮的无障碍名称由better-accessibility技能覆盖见 better-accessibility/SKILL.md。仓库当前components.json中rtl: false见 apps/app/components.json但设计工程规范仍要求代码具备 RTL 正确性以便未来启用国际化时见 i18n ADR不返工。七、把这些法则放进代码评审上述规范在 better-ui/SKILL.md 中被编码为可审查的原则其「常见错误」清单可以作为图标自查表错误修正细线图标配粗体文字让描边宽度匹配文字字重每种状态一份图标资产一份currentColorSVG状态交给 CSS到处用填充图标轮廓为默认填充只用于激活状态结合 better-ui 的评审方法慢放动画浏览器 Animations 面板 10% 速度逐状态走查 hover、focus、active、disabled图标是否「发虚」「过重」「方向错误」会非常明显。评审输出时用 Severity / Location / Before / After / Why 表格记录引用path/to/file:line例如packages/ui/src/components/accordion.tsx:5。小结图标设计的本质不是「选一个好看的图标」而是让图标体系在光学重量、状态语义、渲染清晰度与方向一致性上整体自洽。在 Comp AI CRM 中这套规范有明确的落地载体统一 Lucide 图标库packages/ui/components.json、currentColor CSS 变量状态着色globals.css、以及 16/20/24 原生网格尺寸。遵循本文五条法则再配合 animations.md 规定的图标切换动画图标就能真正「坐进」界面而不是贴上去。赞分享后端前端CRM人工智能AI Agent【免费下载链接】crmComp AI CRM is an open source, CRM designed for AI agents. Agentic-first CRM.项目地址https://gitcode.com/gh_mirrors/crm48/crm点击查看免费下载相关推荐ZyPlayer自定义光标界面个性化的细节设计ZyPlayer自定义光标界面个性化的细节设计 光标作为用户与界面交互的直接媒介其设计质量直接影响操作体验。ZyPlayer在界面设计中通过精心规划的光标样桌面应用音视频即时通讯Ant Design Breadcrumb 图标用法在面包屑中把图标放在文字前面Ant Design Breadcrumb 图标用法在面包屑中把图标放在文字前面 导读 本篇基于 ant design 仓库中 components/brea前端UI组件设计系统从0到1搭建开发环境Linux on LiteX-VexRiscv依赖安装与配置详解从0到1搭建开发环境Linux on LiteX VexRiscv依赖安装与配置详解 Linux on LiteX VexRiscv是一个基于VexRiscv上一篇跨平台资源下载神器15分钟掌握全平台内容保存技巧下一篇Mastra 模板工程指南templates/ 目录的规范约定与 Gateway-first 模板实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

深入解析 Go 语言 YAML 处理库 gopkg.in/yaml.v3:在 wandb 中的实际应用与 API 全指南

深入解析 Go 语言 YAML 处理库 gopkg.in/yaml.v3:在 wandb 中的实际应用与 API 全指南

机器学习深度学习数据可视化可观测性 【免费下载链接】wandb The AI developer platform. Use Weights & Biases to train and fine-tune models, and manage models from experimentation to production. 项目地址: https://gitcode.com/gh_mirrors/wa/wandb 点…

2026/9/24 16:56:04 阅读更多 →
RookieAI_yolov8是什么:基于YOLOv8的FPS游戏AI自瞄工具完整入门指南

RookieAI_yolov8是什么:基于YOLOv8的FPS游戏AI自瞄工具完整入门指南

RookieAI_yolov8是什么:基于YOLOv8的FPS游戏AI自瞄工具完整入门指南 【免费下载链接】RookieAI_yolov8 基于yolov8实现的AI自瞄项目 AI self-aiming project based on yolov8 项目地址: https://gitcode.com/gh_mirrors/ro/RookieAI_yolov8 RookieAI_yolov8 …

2026/9/24 16:56:04 阅读更多 →
Hermes 语义分析:基于 hermes_estree 的 JavaScript 名称解析与作用域分析模块深度解析

Hermes 语义分析:基于 hermes_estree 的 JavaScript 名称解析与作用域分析模块深度解析

语言运行时编译器移动开发 【免费下载链接】hermes A JavaScript engine optimized for running React Native. 项目地址: https://gitcode.com/gh_mirrors/hermes/hermes 点击查看 免费下载 导读 hermes_semantic_analysis 是 Hermes 项目中用 Rust 实现的 JavaS…

2026/9/24 16:55:04 阅读更多 →

最新新闻

JSP+MySQL个人日记本源码运行全攻略:从环境搭建到避坑指南

JSP+MySQL个人日记本源码运行全攻略:从环境搭建到避坑指南

简介:基于jspmysql的JSP个人日记本源码,是一份面向Java Web初学者与课程设计场景的完整Web应用项目。资源以JSP作为视图层、Servlet处理控制逻辑,结合MySQL存储用户、日记与分类数据,覆盖用户登录、会话保持、日记增删改查、分类管…

2026/9/24 18:29:14 阅读更多 →
2026年AirPods全系选购指南:从AirPods 4到Pro与Max,哪款最适合你

2026年AirPods全系选购指南:从AirPods 4到Pro与Max,哪款最适合你

AirPods这个品类,现在真的有点“乱花渐欲迷人眼”了。从最初只有一款标准版,到如今AirPods 4、AirPods Pro、AirPods Max三条线并行,Plus版一般、Lite版传闻满天飞,哪怕是数码圈老手,真要下手买前不花点时间做功课&…

2026/9/24 18:29:14 阅读更多 →
结构可靠性分析:验算点法与直接抽样组合实战

结构可靠性分析:验算点法与直接抽样组合实战

简介:面向结构可靠性与安全度评估的实用算法压缩包,适合结构工程专业学生、科研人员及从事可靠性分析的工程师。资源聚焦验算点法和直接抽样法,同时涉及蒙特卡洛模拟思路,用于计算结构失效概率、评估极端荷载下的安全裕度&#xf…

2026/9/24 18:29:14 阅读更多 →
前后端分离部署实战:systemd托管Java进程+Nginx反向代理

前后端分离部署实战:systemd托管Java进程+Nginx反向代理

1. 部署方案设计与总体思路1.1 为什么是“systemd Nginx”这套组合前后端分离项目的部署,说简单也简单,说麻烦也麻烦。简单在于流程是固定的——后端打成 jar 包跑起来,前端构建出静态文件扔给 Web 服务器。麻烦在于每一个环节都有坑&#x…

2026/9/24 18:29:14 阅读更多 →
腾讯云EdgeOne免费CDN实战:接入配置与成本优化指南

腾讯云EdgeOne免费CDN实战:接入配置与成本优化指南

上个月帮一个朋友的博客站点排查访问慢的问题。他的服务器带宽只有5M,文章里全是高清截图和录屏素材,高峰期十几个人同时打开就卡得不行。我顺手看了眼他用的还是老式按量计费CDN,月底账单里光是流量费就占了一半。我说你这个站,流…

2026/9/24 18:29:14 阅读更多 →
Linux与Windows系统运维:参数查询与配置命令对照实战

Linux与Windows系统运维:参数查询与配置命令对照实战

很多时候,我们干的活儿并不是什么高深莫测的架构设计,反而是那些每天都在重复的“查一下参数、改一个配置”。尤其是当你的手头同时管着 Windows 服务器和 Linux 服务器时,这种“精神分裂”的感觉会特别明显:明明在 Windows 上用图…

2026/9/24 18:28:13 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →