feat: polish invoice editor and viewer UI with custom NumberInput

component

- Create custom NumberInput component with increment/decrement buttons
- Add 0.25 step increments for hours and rates in invoice forms
- Implement emerald-themed styling with hover states and accessibility
- Add keyboard navigation (arrow keys) and proper ARIA support
- Condense invoice editor tax/totals section into efficient grid layout
- Update client dropdown to single-line format (name + email)
- Add fixed footer with floating action bar pattern matching business
  forms
- Redesign invoice viewer with better space utilization and visual
  hierarchy
- Maintain professional appearance and consistent design system
- Fix Next.js 15 params Promise handling across all invoice pages
- Resolve TypeScript compilation errors and type-only imports
This commit is contained in:
2025-07-15 00:29:02 -04:00
parent 89de059501
commit f331136090
79 changed files with 9944 additions and 4223 deletions

View File

@@ -52,6 +52,26 @@ export default {
DEFAULT: "hsl(var(--card))",
foreground: "hsl(var(--card-foreground))",
},
brand: {
primary: "hsl(var(--brand-primary))",
"primary-hover": "hsl(var(--brand-primary-hover))",
secondary: "hsl(var(--brand-secondary))",
"secondary-hover": "hsl(var(--brand-secondary-hover))",
},
status: {
success: "hsl(var(--status-success))",
"success-foreground": "hsl(var(--status-success-foreground))",
"success-muted": "hsl(var(--status-success-muted))",
warning: "hsl(var(--status-warning))",
"warning-foreground": "hsl(var(--status-warning-foreground))",
"warning-muted": "hsl(var(--status-warning-muted))",
error: "hsl(var(--status-error))",
"error-foreground": "hsl(var(--status-error-foreground))",
"error-muted": "hsl(var(--status-error-muted))",
info: "hsl(var(--status-info))",
"info-foreground": "hsl(var(--status-info-foreground))",
"info-muted": "hsl(var(--status-info-muted))",
},
},
borderRadius: {
lg: "var(--radius)",