import 'package:flutter/material.dart'; import '../core/theme/context_tokens.dart'; import 'ds/status_icon_map.dart'; import 'kpi_card.dart'; enum OrderStatus { draft, pending, approved, rejected } extension OrderStatusLabel on OrderStatus { String get label { switch (this) { case OrderStatus.draft: return '草稿'; case OrderStatus.pending: return '待审核'; case OrderStatus.approved: return '已审核'; case OrderStatus.rejected: return '已拒绝'; } } } class StatusBadge extends StatelessWidget { final OrderStatus status; /// true → 图标徽章变体(icons.js BADGE_ICON 映射,移动端调用点显式启用); /// 默认 false 保持圆点(桌面存量 golden 零漂移)。 final bool withIcon; const StatusBadge(this.status, {super.key, this.withIcon = false}); @override Widget build(BuildContext context) { final t = context.tokens; // 还原原型 .badge.b-*:圆点 + 软底,色全走 token。 final (Color fg, Color bg) = switch (status) { OrderStatus.draft => (t.muted, t.infoSoft), OrderStatus.pending => (t.warn, t.warnBg), OrderStatus.approved => (t.success, t.successBg), OrderStatus.rejected => (t.danger, t.dangerBg), }; return StatusPill( label: status.label, color: fg, background: bg, icon: withIcon ? statusIcon(status.label) : null); } }