tailwind-规范.mdc 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. ---
  2. description: LabelStudio 客户端应用的 Tailwind CSS 和 UI 组件最佳实践
  3. globs: **/*.css,tailwind.config.ts,tailwind.config.js,**/*.scss,**/*.tsx,**/*.jsx
  4. ---
  5. # Tailwind CSS 最佳实践
  6. ## 组件样式
  7. - 使用工具类而非自定义 CSS
  8. - 需要时使用 @apply 将相关工具类分组
  9. - 仅在必要时使用自定义组件样式作为 SCSS 模块,以提高组件的可读性和可维护性
  10. - 使用适当的响应式设计工具类
  11. - 使用适当的状态变体
  12. - 保持组件样式一致
  13. ## 令牌(Tokens)
  14. - 所有来自 Figma 的令牌都是程序化生成的,定义在 `web/libs/ui/src/tokens/tokens.scss` 文件中
  15. - 可以通过使用 `Figma Variable Exporter` 插件从 Figma 导出,替换 `web/design-tokens.json` 的内容,然后使用 `cd web/ && yarn design-tokens` 命令重新生成令牌
  16. - 重新生成令牌时,确保运行项目根目录的 `make fmt-all` 命令,以确保所有文件都经过检查和格式化
  17. - 不要使用未通过 Figma Variable Exporter 插件定义并在 `web/libs/ui/src/tokens/tokens.scss` 文件中建立的令牌
  18. - 不要使用任何默认的 tailwind css 类,只使用通过 `web/libs/ui/src/tokens/tokens.js` 文件定义的类
  19. ## 布局
  20. - 使用语义化间距工具类,例如 `p-tight` 而非 `p-200` 或 `--spacing-tight` 而非 `--spacing-200`
  21. - 有效使用 Flexbox 和 Grid 工具类
  22. - 需要时使用容器查询
  23. - 实现适当的响应式断点
  24. - 使用适当的 padding 和 margin 工具类
  25. - 实现适当的对齐工具类
  26. ## 排版
  27. - 使用语义化排版工具类,例如 `text-body-medium` 而非 `text-16` 或 `--font-size-body-medium` 而非 `--font-size-16`
  28. - 使用适当的字体大小工具类
  29. - 实现适当的行高
  30. - 使用适当的字重工具类
  31. - 正确配置自定义字体
  32. - 使用适当的文本对齐
  33. - 实现适当的文本装饰
  34. ## 颜色
  35. - 仅使用语义化颜色命名,确保深色模式兼容性,例如 `bg-primary-background` 而非 `bg-grape-000` 或 `--color-primary-background` 而非 `--color-grape-000`
  36. - 实现适当的颜色对比度
  37. - 有效使用不透明度工具类
  38. - 正确配置自定义颜色
  39. - 使用适当的渐变工具类
  40. - 实现适当的悬停状态
  41. ## 组件
  42. - 从 `web/libs/ui/src/shad` 使用可用的 shadcn/ui 组件
  43. - 仅使用从 `web/libs/ui` 重新导出的 shadcn/ui 组件,而非 `web/libs/ui/src/shad` 中定义的原始组件
  44. - 在其他 libs 和 apps 中导入这些组件时应使用 `@humansignal/ui`
  45. - 正确组合组件
  46. - 保持组件变体一致
  47. - 实现适当的动画
  48. - 使用适当的过渡工具类
  49. - 牢记无障碍性
  50. - UI 组件应在 `web/libs/ui` 中定义和导出,并遵循代码组织的最佳实践
  51. ## 响应式设计
  52. - 使用移动优先方法
  53. - 实现适当的断点
  54. - 有效使用容器查询
  55. - 正确处理不同屏幕尺寸
  56. - 实现适当的响应式排版
  57. - 使用适当的响应式间距
  58. ## 性能
  59. - 使用适当的清除配置
  60. - 最小化自定义 CSS
  61. - 使用适当的缓存策略
  62. - 实现适当的代码分割
  63. - 为生产环境优化
  64. - 监控打包大小
  65. ## 最佳实践
  66. - 遵循命名约定
  67. - 保持样式有序
  68. - 使用适当的文档
  69. - 实现适当的测试
  70. - 遵循无障碍性指南
  71. - 使用适当的版本控制