47 lines
1.9 KiB
TypeScript
47 lines
1.9 KiB
TypeScript
import type { AppointmentPurpose } from '@/types/appointment';
|
|
|
|
export const APPOINTMENT_PURPOSE_LABEL: Record<AppointmentPurpose, string> = {
|
|
consultation: 'Consultation',
|
|
filling: 'Filling',
|
|
endo: 'Endo',
|
|
visit: 'Visit',
|
|
hygiene: 'Hygiene',
|
|
};
|
|
|
|
/** Background + border for blocks / legend (matches reference palette). */
|
|
export const APPOINTMENT_PURPOSE_STYLES: Record<AppointmentPurpose, string> = {
|
|
consultation:
|
|
'bg-purpose-consultation-bg border-purpose-consultation-border text-purpose-consultation-fg',
|
|
filling: 'bg-purpose-filling-bg border-purpose-filling-border text-purpose-filling-fg',
|
|
endo: 'bg-purpose-endo-bg border-purpose-endo-border text-purpose-endo-fg',
|
|
visit: 'bg-purpose-visit-bg border-purpose-visit-border text-purpose-visit-fg',
|
|
hygiene: 'bg-purpose-hygiene-bg border-purpose-hygiene-border text-purpose-hygiene-fg',
|
|
};
|
|
|
|
export function purposeStyle(purpose: string): string {
|
|
const p = purpose as AppointmentPurpose;
|
|
return APPOINTMENT_PURPOSE_STYLES[p] ?? 'bg-surface-elevated border-border text-text-secondary';
|
|
}
|
|
|
|
/** Trash icon — legend hues; `!` overrides global `.lucide { color: var(--color-icon) }`. */
|
|
export function purposeDeleteIconClass(purpose: string): string {
|
|
const p = purpose as AppointmentPurpose;
|
|
const map: Record<AppointmentPurpose, string> = {
|
|
consultation: '!text-purpose-consultation-fg',
|
|
filling: '!text-purpose-filling-fg',
|
|
endo: '!text-purpose-endo-fg',
|
|
visit: '!text-purpose-visit-fg',
|
|
hygiene: '!text-purpose-hygiene-fg',
|
|
};
|
|
return map[p] ?? '!text-text-muted';
|
|
}
|
|
|
|
/** Small swatch for legend (background + border only). */
|
|
export const APPOINTMENT_PURPOSE_LEGEND_SWATCH: Record<AppointmentPurpose, string> = {
|
|
consultation: 'bg-violet-500/85 border-violet-400/75',
|
|
filling: 'bg-orange-500/85 border-orange-400/75',
|
|
endo: 'bg-red-500/85 border-red-400/75',
|
|
visit: 'bg-sky-500/85 border-sky-400/75',
|
|
hygiene: 'bg-lime-500/80 border-lime-400/70',
|
|
};
|