'use client'; import { useCallback, useEffect, useState } from 'react'; import { useTranslations } from 'next-intl'; import { WorkingHoursEditor } from '@/components/staff/WorkingHoursEditor'; import { blocksFromEditorDays, editorDaysFromBlocks, emptyWorkingHoursEditorDays, validateEditorDays, type WorkingHoursEditorDay, } from '@/components/staff/workingHours'; interface StaffWorkingHoursStepProps { days: WorkingHoursEditorDay[]; autoRepeatWeekly: boolean; onDaysChange: (days: WorkingHoursEditorDay[]) => void; onAutoRepeatWeeklyChange: (value: boolean) => void; onValidationChange?: (error: string | null) => void; disabled?: boolean; } export function StaffWorkingHoursStep({ days, autoRepeatWeekly, onDaysChange, onAutoRepeatWeeklyChange, onValidationChange, disabled, }: StaffWorkingHoursStepProps) { const t = useTranslations('staff.workingHours'); useEffect(() => { onValidationChange?.(validateEditorDays(days, t)); }, [days, onValidationChange, t]); return (

{t('recommendedTitle')}

{t('recommendedBody')}

); } export function createDefaultWorkingHoursState() { return { days: emptyWorkingHoursEditorDays(), autoRepeatWeekly: true, }; } export function workingHoursPayloadFromState(state: { days: WorkingHoursEditorDay[]; autoRepeatWeekly: boolean; }) { return { autoRepeatWeekly: state.autoRepeatWeekly, blocks: blocksFromEditorDays(state.days), }; } export function workingHoursStateFromApi(data: { autoRepeatWeekly: boolean; blocks: { dayOfWeek: number; startMinute: number; endMinute: number; sortOrder?: number }[]; }) { const hasBlocks = data.blocks.length > 0; return { days: hasBlocks ? editorDaysFromBlocks(data.blocks) : emptyWorkingHoursEditorDays(), autoRepeatWeekly: data.autoRepeatWeekly, }; } export function useWorkingHoursForm(initial?: { days: WorkingHoursEditorDay[]; autoRepeatWeekly: boolean; }) { const [days, setDays] = useState(initial?.days ?? emptyWorkingHoursEditorDays()); const [autoRepeatWeekly, setAutoRepeatWeekly] = useState(initial?.autoRepeatWeekly ?? true); const [validationError, setValidationError] = useState(null); const reset = useCallback((next?: { days: WorkingHoursEditorDay[]; autoRepeatWeekly: boolean }) => { setDays(next?.days ?? emptyWorkingHoursEditorDays()); setAutoRepeatWeekly(next?.autoRepeatWeekly ?? true); setValidationError(null); }, []); return { days, setDays, autoRepeatWeekly, setAutoRepeatWeekly, validationError, setValidationError, reset, }; }