'use client'; import { BackButton } from './back-button'; import { ClientsGrid, MastersGrid } from './contacts-grid'; import { DateTimeSelect } from './datetime-select'; import { NextButton } from './next-button'; import { ErrorPage, SuccessPage } from './result'; import { ServiceSelect } from './service-select'; import { SubmitButton } from './submit-button'; import { useGetUrlData } from '@/hooks/url'; import { OrderStoreProvider, useInitOrderStore, useOrderStore } from '@/stores/order'; import { withContext } from '@/utils/context'; import { type OrderFieldsFragment } from '@repo/graphql/types'; import { LoadingSpinner } from '@repo/ui/components/ui/spinner'; 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 () { const data = useGetUrlData(); useInitOrderStore(data); const step = useOrderStore((store) => store.step); if (step === 'loading') return ; return (
{getStepComponent(step)}
{getButtonComponent(step)}
); });