refactor(frontend): deduplicate CSS keyframes, unify types, extract format utils, add UI states, trim mock data
- Remove duplicate @keyframes pulse-* from 3 component files (already in nexus-tokens.css) - Rename AgentDetail → AgentDetailData in dashboard types to avoid collision with types/agent.ts - Extract shared formatNumber/initials/formatTime to utils/format.ts - Simplify FlowBoard: use agentStore modal/selection getters instead of duplicating local state - Add error banner + empty state to IrisChat; add loading skeleton + error/empty states to TaskStrip - Remove 105-line unused mockAgents array from useFlowLayout - Reduce operations store fallbacks from hardcoded preview data to minimal safe defaults - Update operations store tests to match lean fallback structure - Net: -73 lines, cleaner imports, fewer magic strings
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
/**
|
||||
* Shared formatting utilities for Nexus Dashboard
|
||||
*/
|
||||
|
||||
/** Format a number with SI suffixes (k, M) */
|
||||
export function formatNumber(n: number): string {
|
||||
if (n >= 1_000_000) return (n / 1_000_000).toFixed(1) + 'M'
|
||||
if (n >= 1_000) return (n / 1_000).toFixed(1) + 'k'
|
||||
return String(n)
|
||||
}
|
||||
|
||||
/** Format currency with $ prefix */
|
||||
export function formatCurrency(n: number): string {
|
||||
return '$' + n.toFixed(2)
|
||||
}
|
||||
|
||||
/** Format a Date as German locale time HH:MM:SS */
|
||||
export function formatTime(d: Date): string {
|
||||
return d.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit', second: '2-digit' })
|
||||
}
|
||||
|
||||
/** Format a Date as German locale time HH:MM */
|
||||
export function formatTimeShort(d: Date): string {
|
||||
return d.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' })
|
||||
}
|
||||
|
||||
/** Extract initials (max 2 chars) from a display name */
|
||||
export function initials(name: string): string {
|
||||
return name.split(' ').map(p => p[0]).join('').slice(0, 2).toUpperCase()
|
||||
}
|
||||
Reference in New Issue
Block a user