由于 UI 库的 Toast 组件使用 CSS Modules,类名被哈希化(如 toast_toast__Zvlxi),导致样式覆盖困难。因此,我们创建了一个完全自定义的 Toast 组件,不依赖 UI 库。
web/apps/lq_label/src/components/toast/toast.tsx - Toast 组件实现toast.module.scss - Toast 样式index.ts - 导出文件web/apps/lq_label/src/services/toast.tsweb/apps/lq_label/src/components/toast-container/toast-container.tsxexport enum ToastType {
success = 'success', // 成功提示 - 绿色
error = 'error', // 错误提示 - 红色
info = 'info', // 信息提示 - 黑色
warning = 'warning', // 警告提示 - 橙色
}
import { toast } from '../../services/toast';
// 成功提示
toast.success('操作成功!');
toast.success('保存成功', '成功', 3000);
// 错误提示
toast.error('操作失败!');
toast.error('保存失败,请重试', '错误', 5000);
// 信息提示
toast.info('这是一条信息');
toast.info('系统通知', '提示', 4000);
// 警告提示
toast.warning('请注意!');
toast.warning('数据可能不完整', '警告', 4000);
所有样式使用项目的设计令牌(Design Tokens):
--color-positive-* - 成功颜色--color-negative-* - 错误颜色--color-neutral-inverted-* - 信息颜色--color-warning-* - 警告颜色--spacing-* - 间距--corner-radius-* - 圆角--font-size-* - 字体大小以下文件已被删除或替换:
web/apps/lq_label/src/components/toast-container/toast-container.module.scss - 已删除(旧的样式覆盖文件)@humansignal/ui Toast 组件的依赖toast 服务重启前端服务器后,可以通过以下方式测试:
// 在任何组件中
import { toast } from '../../services/toast';
// 测试不同类型的 Toast
toast.success('这是成功提示');
toast.error('这是错误提示');
toast.info('这是信息提示');
toast.warning('这是警告提示');
web/apps/lq_label/src/components/toast/toast.tsxweb/apps/lq_label/src/components/toast/toast.module.scssweb/apps/lq_label/src/services/toast.tsweb/apps/lq_label/src/components/toast-container/toast-container.tsxweb/apps/lq_label/src/app/app.tsx (ToastContainer 已集成)2025-01-23