'use client'; import { LoadingSpinner } from '../common/spinner'; import { BackButton, ClientsGrid, DateTimeSelect, ErrorPage, MastersGrid, NextButton, ServiceSelect, SuccessPage, } from './components'; import { SubmitButton } from './components/submit-button'; import { OrderStoreProvider, useOrderStore } from '@/stores/order'; import { useInitOrderStore } from '@/stores/order/hooks'; import { withContext } from '@/utils/context'; import { type JSX } from 'react'; const STEP_COMPONENTS: Record = { 'client-select': , 'datetime-select': , error: , 'master-select': , 'service-select': , success: , }; function getStepComponent(step: string) { return STEP_COMPONENTS[step] ?? null; } const BUTTON_COMPONENTS: Record = { '': , 'datetime-select': , }; function getButtonComponent(step: string) { return BUTTON_COMPONENTS[step] ?? ; } export const OrderForm = withContext(OrderStoreProvider)(function () { useInitOrderStore(); const step = useOrderStore((store) => store.step); if (step === 'loading') return ; return (
{getStepComponent(step)}
{getButtonComponent(step)}
); });