feat: Add kiosk management, artist selection, and schedule management

- Add KiosksManagement component with full CRUD for kiosks
- Add ScheduleManagement for staff schedules with break reminders
- Update booking flow to allow artist selection by customers
- Add staff_services API for assigning services to artists
- Update staff management UI with service assignment dialog
- Add auto-break reminder when schedule >= 8 hours
- Update availability API to filter artists by service
- Add kiosk management to Aperture dashboard
- Clean up ralphy artifacts and logs
This commit is contained in:
Marco Gallegos
2026-01-21 13:02:06 -06:00
parent 24e5af3860
commit d27354fd5a
71 changed files with 3353 additions and 2701 deletions

View File

@@ -2,7 +2,13 @@ import { type ClassValue, clsx } from "clsx"
import { twMerge } from "tailwind-merge"
/**
* cn function that merges class names using clsx and tailwind-merge.
* @description Utility function that merges and deduplicates CSS class names using clsx and tailwind-merge
* @param {ClassValue[]} inputs - Array of class name values (strings, objects, arrays, or falsy values)
* @returns {string} - Merged CSS class string with Tailwind class conflicts resolved
* @example cn('px-4 py-2', { 'bg-blue-500': true }, ['text-white', 'font-bold'])
* @audit BUSINESS RULE: Resolves Tailwind CSS class conflicts by letting later classes override earlier ones
* @audit PERFORMANCE: Optimized for frequent use in component className props
* @audit Validate: Handles all clsx input types (strings, objects, arrays, nested objects)
*/
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs))