e7b74f13bd
- Extract shared render helpers (vacation blocks, range overlay, overbooking blink) into renderHelpers.tsx - Centralize status badge styles and vacation color maps into status-styles.ts - Extract dragMath.ts utility from useTimelineDrag for reuse - Split useInvalidatePlanningViews into useInvalidateTimeline (4 queries) + useInvalidatePlanningViews (8 queries) - Adopt findUniqueOrThrow() and Prisma select constants across API routers - Add shared fmtEur() helper for API-side money formatting - Wrap TimelineResourcePanel and TimelineProjectPanel with React.memo - Fix pre-existing TS2589 deep type errors in TeamCalendar and VacationModal - 38 files changed, reducing ~400 lines of duplicated code Co-Authored-By: claude-flow <ruv@ruv.net>
79 lines
2.8 KiB
TypeScript
79 lines
2.8 KiB
TypeScript
/**
|
|
* Consolidated badge / pill style maps for status and type columns.
|
|
* Single source of truth — imported by every table that renders status badges.
|
|
*/
|
|
|
|
export const ALLOCATION_STATUS_BADGE: Record<string, string> = {
|
|
ACTIVE: "bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400",
|
|
PROPOSED: "bg-yellow-100 text-yellow-700 dark:bg-yellow-900/30 dark:text-yellow-400",
|
|
CONFIRMED: "bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400",
|
|
COMPLETED: "bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400",
|
|
CANCELLED: "bg-red-100 text-red-600 dark:bg-red-900/30 dark:text-red-400",
|
|
};
|
|
|
|
export const VACATION_STATUS_BADGE: Record<string, string> = {
|
|
PENDING: "bg-amber-100 text-amber-700 dark:bg-yellow-900/30 dark:text-yellow-400",
|
|
APPROVED: "bg-emerald-100 text-emerald-700 dark:bg-green-900/30 dark:text-green-400",
|
|
REJECTED: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400",
|
|
CANCELLED: "bg-gray-100 text-gray-500 dark:bg-gray-700 dark:text-gray-400",
|
|
};
|
|
|
|
export const VACATION_TYPE_LABELS: Record<string, string> = {
|
|
ANNUAL: "Annual Leave",
|
|
SICK: "Sick Leave",
|
|
PUBLIC_HOLIDAY: "Public Holiday",
|
|
OTHER: "Other",
|
|
};
|
|
|
|
export const VACATION_TYPE_BADGE: Record<string, string> = {
|
|
ANNUAL: "bg-brand-100 text-brand-700 dark:bg-brand-900/30 dark:text-brand-400",
|
|
SICK: "bg-red-100 text-red-700 dark:bg-red-900/30 dark:text-red-400",
|
|
PUBLIC_HOLIDAY: "bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400",
|
|
OTHER: "bg-purple-100 text-purple-700 dark:bg-purple-900/30 dark:text-purple-400",
|
|
};
|
|
|
|
export const PROJECT_STATUS_BADGE: Record<string, string> = {
|
|
DRAFT: "bg-gray-100 text-gray-700",
|
|
ACTIVE: "bg-green-100 text-green-700",
|
|
ON_HOLD: "bg-yellow-100 text-yellow-700",
|
|
COMPLETED: "bg-blue-100 text-blue-700",
|
|
CANCELLED: "bg-red-100 text-red-700",
|
|
};
|
|
|
|
export const ORDER_TYPE_BADGE: Record<string, string> = {
|
|
BD: "bg-purple-100 text-purple-700",
|
|
CHARGEABLE: "bg-green-100 text-green-700",
|
|
INTERNAL: "bg-blue-100 text-blue-700",
|
|
OVERHEAD: "bg-gray-100 text-gray-700",
|
|
};
|
|
|
|
/** Vacation overlay colors for timeline bars */
|
|
export const VACATION_TIMELINE_COLORS: Record<string, string> = {
|
|
ANNUAL: "bg-orange-400/40",
|
|
SICK: "bg-red-500/40",
|
|
PUBLIC_HOLIDAY: "bg-violet-400/40",
|
|
OTHER: "bg-amber-400/40",
|
|
};
|
|
|
|
export const VACATION_TIMELINE_BORDER: Record<string, string> = {
|
|
ANNUAL: "border-orange-500",
|
|
SICK: "border-red-600",
|
|
PUBLIC_HOLIDAY: "border-violet-500",
|
|
OTHER: "border-amber-500",
|
|
};
|
|
|
|
export const VACATION_TYPE_LABELS_SHORT: Record<string, string> = {
|
|
ANNUAL: "Annual",
|
|
SICK: "Sick",
|
|
PUBLIC_HOLIDAY: "Holiday",
|
|
OTHER: "Other",
|
|
};
|
|
|
|
/** Vacation calendar dot/bar colors */
|
|
export const VACATION_CALENDAR_COLORS: Record<string, string> = {
|
|
ANNUAL: "bg-brand-500",
|
|
SICK: "bg-red-400",
|
|
PUBLIC_HOLIDAY: "bg-emerald-500",
|
|
OTHER: "bg-purple-400",
|
|
};
|